hm пре 2 месеци
родитељ
комит
7f3faadb0f

+ 1 - 1
.env.development

@@ -12,6 +12,6 @@ VUE_CLI_BABEL_TRANSPILE_MODULES = true
 
 # VUE_APP_BASE_API  = 'http://10.1.161.127:8080'
 # VUE_APP_BASE_API  = 'http://10.1.161.183:6661'
-VUE_APP_BASE_API  = 'http://192.168.136.14:6661'
+VUE_APP_BASE_API  = 'http://192.168.136.201:6661'
 
 # VUE_APP_BASE_API  = 'http://10.1.162.158:6661'

+ 2 - 2
src/api/unified-access/access-feedback.js

@@ -1,10 +1,10 @@
 import request from '@/utils/request'
 // 获取接入反馈列表
-export function getTabAccessFeedbackList (query) {
+export function getTabAccessFeedbackList (params) {
   return request({
     url: '/web/tab-access-feedback/getTabAccessFeedbackList',
     method: 'get',
-    params: query
+    params: params
   })
 }
 

+ 487 - 129
src/views/unified-access/access-feedback/dialog/ApiPage.vue

@@ -3,11 +3,11 @@
     <el-col :span="6" style="border-right: 1px solid #000; padding-right: 20px">
       <!-- 顶部工具栏 -->
       <el-form :model="headerFormData" label-width="auto">
-        <el-form-item label="数据源名称">
-          <el-input v-model="headerFormData.datasetName" placeholder="请输入"></el-input>
-        </el-form-item>
         <el-form-item label="接口服务名称">
-          <el-input v-model="headerFormData.dataType" placeholder="请输入"></el-input>
+          <el-input v-model="headerFormData.apiName" placeholder="请输入"></el-input>
+        </el-form-item>
+        <el-form-item label="接口提供方URL地址">
+          <el-input v-model="headerFormData.offerUrl" placeholder="请输入"></el-input>
         </el-form-item>
         <el-form-item>
           <el-button type="primary" @click="onSearch">查询</el-button>
@@ -16,49 +16,74 @@
       </el-form>
       <!-- 左侧表格 -->
 
-      <el-table :data="leftTableData" border max-height="500" style="width: 100%; margin-right: 10px">
+      <el-table
+        :data="currentLeftTableData"
+        border
+        max-height="500"
+        style="width: 100%; margin-right: 10px"
+      >
         <el-table-column label="序号" type="index" width="50"></el-table-column>
-        <el-table-column prop="name" label="接口服务名称"></el-table-column>
-        <el-table-column prop="name" label="接口提供方URL地址"></el-table-column>
+        <el-table-column prop="apiName" label="接口服务名称"></el-table-column>
+        <el-table-column prop="offerUrl" label="接口提供方URL地址"></el-table-column>
         <el-table-column label="操作" width="120">
           <template slot-scope="scope">
             <el-button type="text" @click="onEyeClick(scope.row)" icon="el-icon-view"></el-button>
-            <el-button type="text" @click="onEyeClick(scope.row)" icon="el-icon-delete"></el-button>
+            <el-button type="text" @click="onDeleteClick(scope.row)" icon="el-icon-delete"></el-button>
           </template>
         </el-table-column>
       </el-table>
       <!-- 分页 -->
       <div class="pagination-container">
-        <el-pagination background layout="prev, pager, next" :current-page="pagination.currentPage"
-          :page-size="pagination.pageSize" :total="pagination.total" @current-change="onPageChange"></el-pagination>
+        <el-pagination
+          background
+          layout="prev, pager, next"
+          :current-page="pagination.currentPage"
+          :page-size="pagination.pageSize"
+          :total="pagination.total"
+          @current-change="onPageChange"
+        ></el-pagination>
       </div>
     </el-col>
     <el-col :span="18" style="padding-left: 20px">
       <div>六统一接入方式为API,必填此表</div>
       <!-- 右侧表格 -->
-      <div style="
+      <div
+        style="
           width: 100%;
           display: flex;
           justify-content: end;
           align-items: center;
-        ">
-
-        <el-button type="primary">新增</el-button>
+        "
+      >
+        <el-button type="primary" @click="addClick">新增</el-button>
         <el-button type="primary">上传</el-button>
         <el-button type="primary">模版下载</el-button>
       </div>
-      <el-table ref="rightTable" :data="rightTableData" border style="width: 100%" :expand-row-keys="expandedRows"
-        @expand-change="onExpandChange" :show-header="false" max-height="800">
+      <el-table
+        ref="rightTable"
+        :data="rightTableData"
+        border
+        style="width: 100%"
+        :expand-row-keys="expandedRows"
+        row-key="id"
+        @expand-change="onExpandChange"
+        :show-header="false"
+        max-height="800"
+        @selection-change="handleSelectionChange"
+      >
         <!-- 序号列 -->
         <el-table-column label="序号" type="index" width="50"></el-table-column>
 
         <!-- 普通列 -->
-        <el-table-column prop="name" label="表中文名">
+        <el-table-column prop="name" label="接口服务名称">
           <template slot-scope="scope">
             <div style="display: flex; align-items: center">
               <div>接口服务名称</div>
-              <el-input style="width: 260px; margin-left: 20px" v-model="scope.row.input"
-                placeholder="请输入内容"></el-input>
+              <el-input
+                style="width: 260px; margin-left: 20px"
+                v-model="scope.row.apiName"
+                placeholder="请输入内容"
+              ></el-input>
             </div>
           </template>
         </el-table-column>
@@ -66,8 +91,11 @@
           <template slot-scope="scope">
             <div style="display: flex; align-items: center">
               <span>表英文名</span>
-              <el-input style="width: 260px; margin-left: 20px" v-model="scope.row.input"
-                placeholder="请输入内容"></el-input>
+              <el-input
+                style="width: 260px; margin-left: 20px"
+                v-model="scope.row.apiEnglishName"
+                placeholder="请输入内容"
+              ></el-input>
             </div>
           </template>
         </el-table-column>
@@ -75,8 +103,11 @@
           <template slot-scope="scope">
             <div style="display: flex; align-items: center">
               <span>接口描述</span>
-              <el-input style="width: 260px; margin-left: 20px" v-model="scope.row.urlDetail"
-                placeholder="请输入内容"></el-input>
+              <el-input
+                style="width: 260px; margin-left: 20px"
+                v-model="scope.row.apiDetail"
+                placeholder="请输入内容"
+              ></el-input>
             </div>
           </template>
         </el-table-column>
@@ -85,288 +116,413 @@
         <el-table-column type="expand">
           <template slot-scope="props">
             <div class="expanded-content">
-              <el-form :model="apiFormData" label-width="auto" inline class="form-detail-inline"
-                :label-position="right">
+              <el-form
+                :model="apiFormData"
+                label-width="auto"
+                inline
+                class="form-detail-inline"
+                :label-position="right"
+              >
                 <el-form-item label="应用场景">
-                  <el-input v-model="apiFormData.scenario" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.scenario" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="接口提供方">
-                  <el-input v-model="apiFormData.dataType" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.offer" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="接口提供方URL地址">
-                  <el-input v-model="apiFormData.dataType" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.offerUrl" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="支持格式">
-                  <el-input v-model="apiFormData.datasetName" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.format" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="接口调用方">
-                  <el-input v-model="apiFormData.dataType" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.access" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="接口接口调用方URL地址">
-                  <el-input v-model="apiFormData.dataType" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.accessUrl" placeholder="请输入"></el-input>
                 </el-form-item>
-
                 <el-form-item label="请求方式">
-                  <el-input v-model="apiFormData.datasetName" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.requestMethod" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="六统一接口地址URL">
-                  <el-input v-model="apiFormData.dataType" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.sixUrl" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="调用方向">
-                  <el-input v-model="apiFormData.dataType" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.direction" placeholder="请输入"></el-input>
                 </el-form-item>
-
                 <el-form-item label="调试频率">
-                  <el-input v-model="apiFormData.datasetName" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.applyCount" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="每频率内的条数">
-                  <el-input v-model="apiFormData.dataType" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.countNum" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="调用间隔说明">
-                  <el-input v-model="apiFormData.dataType" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.countDetail" placeholder="请输入"></el-input>
                 </el-form-item>
-
                 <el-form-item label="联调的数据量">
-                  <el-input v-model="apiFormData.datasetName" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.num" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="联调实施步骤">
-                  <el-input v-model="apiFormData.dataType" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.steps" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="网络策略确认">
-                  <el-input v-model="apiFormData.dataType" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.internet" placeholder="请输入"></el-input>
                 </el-form-item>
               </el-form>
               <div class="title">接口定义</div>
               <div class="table_title">Header请求参数</div>
-              <el-table ref="rightTable" :data="rightTableData" border style="width: 100%">
+              <el-table
+                ref="rightTable"
+                :data="props.row.tabEtlHeaderSuns"
+                border
+                style="width: 100%"
+              >
                 <!-- 序号列 -->
                 <el-table-column label="序号" type="index" width="50"></el-table-column>
 
                 <!-- 普通列 -->
                 <el-table-column prop="name" label="中文名称">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.name" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="英文名称">
+                <el-table-column prop="englishName" label="英文名称">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.englishName" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="数据类型">
+                <el-table-column prop="dataType" label="数据类型">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.dataType" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="是否必填">
+                <el-table-column prop="isRequired" label="是否必填">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-select v-model="scope.row.isRequired" placeholder="请选择">
+                      <el-option
+                        v-for="item in whetherOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      ></el-option>
+                    </el-select>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="描述">
+                <el-table-column prop="ps" label="描述">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.ps" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="示例说明">
+                <el-table-column prop="example" label="示例说明">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.example" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
 
                 <el-table-column fixed="right" label="操作" width="100">
-                  <template :slot-scope="{ row }">
-                    <el-button type="text" size="small">删除</el-button>
+                  <template :slot-scope="{ row, $index }">
+                    <el-button
+                      type="text"
+                      size="small"
+                      @click="deleteHeaderRow(props.row, $index)"
+                    >删除</el-button>
                   </template>
                 </el-table-column>
               </el-table>
+              <el-button
+                type="primary"
+                plain
+                class="mt-4"
+                style="width: 100%"
+                icon="el-icon-plus"
+                @click="addHeaderRow(props.row)"
+              ></el-button>
               <div class="table_title">Body请求参数说明</div>
-              <el-table ref="rightTable" :data="rightTableData" border style="width: 100%">
+              <el-table
+                ref="rightTable"
+                :data="props.row.tabEtlBodySuns"
+                border
+                style="width: 100%"
+              >
                 <!-- 序号列 -->
                 <el-table-column label="序号" type="index" width="50"></el-table-column>
 
                 <!-- 普通列 -->
                 <el-table-column prop="name" label="中文名称">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.name" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="英文名称">
+                <el-table-column prop="englishName" label="英文名称">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.englishName" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="数据类型">
+                <el-table-column prop="dataType" label="数据类型">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.dataType" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="是否必填">
+                <el-table-column prop="isRequired" label="是否必填">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-select v-model="scope.row.isRequired" placeholder="请选择">
+                      <el-option
+                        v-for="item in whetherOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      ></el-option>
+                    </el-select>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="描述">
+                <el-table-column prop="ps" label="描述">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.ps" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="示例说明">
+                <el-table-column prop="example" label="示例说明">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.example" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
 
                 <el-table-column fixed="right" label="操作" width="100">
-                  <template :slot-scope="{ row }">
-                    <el-button type="text" size="small">删除</el-button>
+                  <template :slot-scope="{ row, $index }">
+                    <el-button type="text" size="small" @click="deleteBodyRow(props.row, $index)">删除</el-button>
                   </template>
                 </el-table-column>
               </el-table>
+              <el-button
+                type="primary"
+                plain
+                class="mt-4"
+                style="width: 100%"
+                icon="el-icon-plus"
+                @click="addBodyRow(props.row)"
+              ></el-button>
 
               <div class="table_title">Query请求参数说明</div>
-              <el-table ref="rightTable" :data="rightTableData" border style="width: 100%">
+              <el-table
+                ref="rightTable"
+                :data="props.row.tabEtlQuerySuns"
+                border
+                style="width: 100%"
+              >
                 <!-- 序号列 -->
                 <el-table-column label="序号" type="index" width="50"></el-table-column>
 
                 <!-- 普通列 -->
                 <el-table-column prop="name" label="中文名称">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.name" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="英文名称">
+                <el-table-column prop="englishName" label="英文名称">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.englishName" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="数据类型">
+                <el-table-column prop="dataType" label="数据类型">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.dataType" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="是否必填">
+                <el-table-column prop="isRequired" label="是否必填">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-select v-model="scope.row.isRequired" placeholder="请选择">
+                      <el-option
+                        v-for="item in whetherOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      ></el-option>
+                    </el-select>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="描述">
+                <el-table-column prop="ps" label="描述">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.ps" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="示例说明">
+                <el-table-column prop="example" label="示例说明">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.example" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-
                 <el-table-column fixed="right" label="操作" width="100">
-                  <template :slot-scope="{ row }">
-                    <el-button type="text" size="small">删除</el-button>
+                  <template :slot-scope="{ row, $index }">
+                    <el-button
+                      type="text"
+                      size="small"
+                      @click="deleteQueryRow(props.row, $index)"
+                    >删除</el-button>
                   </template>
                 </el-table-column>
               </el-table>
+              <el-button
+                type="primary"
+                plain
+                class="mt-4"
+                style="width: 100%"
+                icon="el-icon-plus"
+                @click="addQueryRow(props.row)"
+              ></el-button>
 
               <div class="table_title">返回参数说明</div>
-              <el-table ref="rightTable" :data="rightTableData" border style="width: 100%">
+              <el-table
+                ref="rightTable"
+                :data="props.row.tabEtlResponseSuns"
+                border
+                style="width: 100%"
+              >
                 <!-- 序号列 -->
                 <el-table-column label="序号" type="index" width="50"></el-table-column>
 
                 <!-- 普通列 -->
                 <el-table-column prop="name" label="中文名称">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.name" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="英文名称">
+                <el-table-column prop="englishName" label="英文名称">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.englishName" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="数据类型">
+                <el-table-column prop="dataType" label="数据类型">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.dataType" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="是否必填">
+                <el-table-column prop="isRequired" label="是否必填">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-select v-model="scope.row.isRequired" placeholder="请选择">
+                      <el-option
+                        v-for="item in whetherOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      ></el-option>
+                    </el-select>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="描述">
+                <el-table-column prop="ps" label="描述">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.ps" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="示例说明">
+                <el-table-column prop="example" label="示例说明">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.example" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-
                 <el-table-column fixed="right" label="操作" width="100">
-                  <template :slot-scope="{ row }">
-                    <el-button type="text" size="small">删除</el-button>
+                  <template :slot-scope="{ row, $index }">
+                    <el-button
+                      type="text"
+                      size="small"
+                      @click="deleteResponseRow(props.row, $index)"
+                    >删除</el-button>
                   </template>
                 </el-table-column>
               </el-table>
+              <el-button
+                type="primary"
+                plain
+                class="mt-4"
+                style="width: 100%"
+                icon="el-icon-plus"
+                @click="addResponseRow(props.row)"
+              ></el-button>
 
               <div class="table_title">data子项说明</div>
-              <el-table ref="rightTable" :data="rightTableData" border style="width: 100%">
+              <el-table
+                ref="rightTable"
+                :data="props.row.tabEtlDataSuns"
+                border
+                style="width: 100%"
+              >
                 <!-- 序号列 -->
                 <el-table-column label="序号" type="index" width="50"></el-table-column>
 
                 <!-- 普通列 -->
                 <el-table-column prop="name" label="中文名称">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.name" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="英文名称">
+                <el-table-column prop="englishName" label="英文名称">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.englishName" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="数据类型">
+                <el-table-column prop="dataType" label="数据类型">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.dataType" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="是否必填">
+                <el-table-column prop="isRequired" label="是否必填">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-select v-model="scope.row.isRequired" placeholder="请选择">
+                      <el-option
+                        v-for="item in whetherOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      ></el-option>
+                    </el-select>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="描述">
+                <el-table-column prop="ps" label="描述">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.ps" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-                <el-table-column prop="alias" label="示例说明">
+                <el-table-column prop="example" label="示例说明">
                   <template slot-scope="scope">
-                    <el-input v-model="scope.rowinput" placeholder="请输入内容"></el-input>
+                    <el-input v-model="scope.row.example" placeholder="请输入内容"></el-input>
                   </template>
                 </el-table-column>
-
                 <el-table-column fixed="right" label="操作" width="100">
-                  <template :slot-scope="{ row }">
-                    <el-button type="text" size="small">删除</el-button>
+                  <template :slot-scope="{ row, $index }">
+                    <el-button type="text" size="small" @click="deleteDataRow(props.row, $index)">删除</el-button>
                   </template>
                 </el-table-column>
               </el-table>
-
-              <el-form :model="apiFormData" label-width="auto" inline class="textarea-form" :label-position="right">
+              <el-button
+                type="primary"
+                plain
+                class="mt-4"
+                style="width: 100%"
+                icon="el-icon-plus"
+                @click="addDataRow(props.row)"
+              ></el-button>
+              <el-form
+                :model="apiFormData"
+                label-width="auto"
+                inline
+                class="textarea-form"
+                :label-position="right"
+              >
                 <el-row>
                   <el-col :span="12">
                     <el-form-item label="请求示例">
-                      <el-input v-model="apiFormData.datasetName" placeholder="请输入" type="textarea"
-                        :rows="4"></el-input>
+                      <el-input
+                        v-model="props.row.requestExample"
+                        placeholder="请输入"
+                        type="textarea"
+                        :rows="4"
+                      ></el-input>
                     </el-form-item>
                   </el-col>
                   <el-col :span="12">
                     <el-form-item label="返回示例">
-                      <el-input v-model="apiFormData.dataType" placeholder="请输入" type="textarea" :rows="4"></el-input>
+                      <el-input
+                        v-model="props.row.responseExample"
+                        placeholder="请输入"
+                        type="textarea"
+                        :rows="4"
+                      ></el-input>
                     </el-form-item>
                   </el-col>
                 </el-row>
@@ -383,43 +539,245 @@ import MyForm from "@/components/MyForm";
 export default {
   name: "",
   components: {
-    MyForm,
+    MyForm
   },
   data() {
     return {
       pagination: {
         currentPage: 1,
         pageSize: 10,
-        total: 161,
+        total: 161
       },
-      leftTableData: [{}],
-      rightTableData: [{}],
+      // 表格选中的数据
+      selectedRows: [],
+      leftTableData: [],
+      rightTableData: [],
       headerFormData: {},
       apiFormData: {},
       expandedRows: [],
+      whetherOptions: [
+        { label: "是", value: 1 },
+        { label: "不是", value: 0 }
+      ]
     };
   },
-  methods: {},
+  computed: {
+    // 计算当前页要显示的数据
+    currentLeftTableData() {
+      const start =
+        (this.pagination.currentPage - 1) * this.pagination.pageSize;
+      const end = start + this.pagination.pageSize;
+      return this.leftTableData.slice(start, end);
+    }
+  },
+  methods: {
+    onEyeClick(row) {
+      // // 检查右侧表格是否已存在相同项
+      // const existing = this.rightTableData.find(item => item.tableName === row.tableName && item.tableEnglishName === row.tableEnglishName);
+      // 获取右侧表格对应的数据并展开
+      if (!this.expandedRows.includes()) {
+        // this.expandedRows.push(row.tableName); // 将左侧表格对应的行名称加入展开行
+        this.expandedRows = [row.id]; // 将左侧表格对应的行名称加入展开行
+      }
+    },
+    // 删除行
+    onDeleteClick(row) {
+      const index = this.leftTableData.findIndex(item => item.id === row.id);
+      if (index > -1) {
+        this.leftTableData.splice(index, 1);
+      }
+      // 同步删除右侧表格的对应项
+      this.onDeleteRightClick(row);
+    },
+    // 在右侧表格删除时,删除对应的数据
+    onDeleteRightClick(row) {
+      const index = this.rightTableData.findIndex(item => item.id === row.id);
+      if (index > -1) {
+        this.rightTableData.splice(index, 1);
+      }
+    },
+
+    onPageChange(page) {
+      this.pagination.currentPage = page;
+    },
+    onExpandChange() {},
+    onSearch() {},
+    onReset() {
+      this.headerFormData={}
+    },
+    addClick() {
+      const newItem = {
+        id: Date.now(), // 使用当前时间戳作为唯一 ID
+        apiName: "",
+        apiEnglishName: "",
+        apiDetail: "",
+        scenario: "",
+        offer: "",
+        offerUrl: "",
+        format: "",
+        access: "",
+        accessUrl: "",
+        requestMethod: "",
+        sixUrl: "",
+        direction: "",
+        applyCount: "",
+        countNum: "",
+        countDetail: "",
+        num: "",
+        steps: "",
+        internet: "",
+        tabEtlHeaderSuns: [],
+        tabEtlBodySuns: [],
+        tabEtlDataSuns: [],
+        tabEtlQuerySuns: [],
+        tabEtlResponseSuns: []
+      };
+      this.rightTableData.push({ ...newItem });
+      this.leftTableData = this.rightTableData;
+      this.pagination.total = this.leftTableData.length;
+    },
+    // 处理选择框勾选变化
+    handleSelectionChange(val) {
+      this.selectedRows = val; // 将勾选的行保存到 selectedRows 中
+    },
+    // 删除选中的行
+    deleteSelected() {
+      if (this.selectedRows.length === 0) {
+        this.$message.warning("请先选择要删除的项");
+        return;
+      }
+
+      this.$confirm("确定删除选中的数据吗?", "警告", {
+        type: "warning"
+      })
+        .then(() => {
+          // 获取选中项的 id
+          const selectedIds = this.selectedRows.map(row => row.id);
+
+          // 删除右侧表格中选中的行
+          this.rightTableData = this.rightTableData.filter(
+            row => !selectedIds.includes(row.id)
+          );
+
+          // 删除左侧表格中对应的行
+          this.leftTableData = this.leftTableData.filter(
+            row => !selectedIds.includes(row.id)
+          );
+
+          // 清空选中行
+          this.selectedRows = [];
+
+          this.$message.success("删除成功");
+        })
+        .catch(() => {});
+    },
+
+    // Header
+    addHeaderRow(row) {
+      // 新增一项
+      const newItem = {
+        id: Date.now(), // 使用时间戳作为唯一 ID
+        name: "",
+        englishName: "",
+        dataType: "",
+        isRequired: "",
+        ps: "",
+        example: ""
+      };
+      row.tabEtlHeaderSuns.push(newItem);
+    },
+    deleteHeaderRow(row, index) {
+      row.tabEtlHeaderSuns.splice(index, 1);
+    },
+
+    //  Body
+    addBodyRow(row) {
+      const newItem = {
+        id: Date.now(), // 使用时间戳作为唯一 ID
+        name: "",
+        englishName: "",
+        dataType: "",
+        isRequired: "",
+        ps: "",
+        example: ""
+      };
+      row.tabEtlBodySuns.push(newItem);
+    },
+    deleteBodyRow(row, index) {
+      row.tabEtlBodySuns.splice(index, 1);
+    },
+
+    //  Query
+    addQueryRow(row) {
+      const newItem = {
+        id: Date.now(), // 使用时间戳作为唯一 ID
+        name: "",
+        englishName: "",
+        dataType: "",
+        isRequired: "",
+        ps: "",
+        example: ""
+      };
+      row.tabEtlQuerySuns.push(newItem);
+    },
+    deleteQueryRow(row, index) {
+      row.tabEtlQuerySuns.splice(index, 1);
+    },
+    // Response
+    addResponseRow(row) {
+      const newItem = {
+        id: Date.now(), // 使用时间戳作为唯一 ID
+        name: "",
+        englishName: "",
+        dataType: "",
+        isRequired: "",
+        ps: "",
+        example: ""
+      };
+      row.tabEtlResponseSuns.push(newItem);
+    },
+    deleteResponseRow(row, index) {
+      row.tabEtlResponseSuns.splice(index, 1);
+    },
+    // Data
+    addDataRow(row) {
+      const newItem = {
+        id: Date.now(), // 使用时间戳作为唯一 ID
+        name: "",
+        englishName: "",
+        dataType: "",
+        isRequired: "",
+        ps: "",
+        example: ""
+      };
+      row.tabEtlDataSuns.push(newItem);
+    },
+    deleteDataRow(row, index) {
+      row.tabEtlDataSuns.splice(index, 1);
+    }
+  },
   created() {},
-  mounted() {},
+  mounted() {}
 };
 </script>
 <style lang="scss" scoped>
-.expanded-content{
+.expanded-content {
   padding: 20px;
   box-sizing: border-box;
 }
+
 .title {
   width: 100%;
   text-align: left;
 }
+
 .table_title {
   width: 100%;
   text-align: left;
   margin: 10px 0;
 }
 
-.textarea-form{
+.textarea-form {
   margin-top: 20px;
 }
 </style>

+ 3 - 1
src/views/unified-access/access-feedback/dialog/ETLPage.vue

@@ -217,7 +217,9 @@ export default {
  
     onExpandChange () { },
     onSearch () { },
-    onReset () { },
+    onReset () {
+      this.headerFormData={}
+     },
     onEyeClick (row) {
       // // 检查右侧表格是否已存在相同项
       // const existing = this.rightTableData.find(item => item.tableName === row.tableName && item.tableEnglishName === row.tableEnglishName);

+ 141 - 42
src/views/unified-access/access-feedback/dialog/FeedbackDialog.vue

@@ -325,8 +325,8 @@
       </el-tab-pane>
       <el-tab-pane label="04/4 附件" :name="4">
         <el-form :model="searchFormData" ref="searchForm" label-width="auto" label-position="left" class="header-form">
-          <el-form-item label="附件名称" prop="name">
-            <el-input v-model="searchFormData.name" placeholder="请输入附件名称"></el-input>
+          <el-form-item label="附件名称" prop="fileName">
+            <el-input v-model="searchFormData.fileName" placeholder="请输入附件名称"></el-input>
           </el-form-item>
           <div class="btn-box">
             <el-button type="primary" size="mini" @click="handleSubmit">查询</el-button>
@@ -336,14 +336,33 @@
         <div style="width: 100%; text-align: end">
           <el-button size="mini" @click="handleUpload" type="primary">上传</el-button>
         </div>
-        <MyTable :tableData="fileTableData" :formData="fileFormData" :minWidth="400">
+        <MyTable :tableData="fileTableData" :formData="fileFormData" :minWidth="80">
           <!-- 自定义操作按钮,传递 row 和 index -->
-          <template #operation="{ row, index }">
-            <el-button size="mini" @click="handleDownload(row, index)" type="primary">下载</el-button>
+          <template #operation="{ row }">
+            <el-button size="mini" @click="handleDownloadFile(row)" type="primary">下载</el-button>
 
-            <el-button size="mini" @click="handleSecondStepDelete(index, row)" type="primary">删除</el-button>
+            <el-button size="mini" @click="handleDeleteFile(row)" type="primary">删除</el-button>
           </template>
         </MyTable>
+        <div class="pagination-container">
+        <el-pagination
+          background
+          layout="prev, pager, next"
+          :current-page="fileUploadPagination.currentPage"
+          :page-size="fileUploadPagination.pageSize"
+          :total="fileUploadPagination.total"
+          @current-change="onPageChange"
+        ></el-pagination>
+      </div>
+           <!-- 上传 -->
+      <div v-if="fileUploadShowDialog">
+      <FileUploadDialog
+        v-model="fileUploadShowDialog"
+        :uploadUrl="uploadUrl"
+        @confirm="FileUploadConfirm"
+        :accessOnlyId="accessOnlyId"
+      ></FileUploadDialog>
+    </div>
       </el-tab-pane>
     </el-tabs>
 
@@ -355,38 +374,23 @@
       <el-button type="primary" @click="handleConfirm">暂 存</el-button>
       <el-button type="primary" @click="handleConfirm" v-if="activeName === 4">确 定</el-button>
     </div>
+
+    
+   
   </el-dialog>
 
-  <!-- 数据基本表弹窗 -->
-  <!-- <el-dialog
-      :visible.sync="visible"
-      title="数据基本表"
-      width="50%"
-      @close="handleClose"
-    >
-       <el-form :label-position="'top'" :model="formData" label-width="auto" style="width: 100%"
-          class="form-detail-inline" inline>
-          <el-form-item label="序号/标识符" prop="code">
-            <el-input v-model="formData.code" placeholder="请输入序号/标识符" />
-          </el-form-item>
-          <el-form-item label="交换需求联系人" prop="persion">
-            <el-input v-model="formData.persion" placeholder="请输入交换需求联系人">
-            </el-input>
-          </el-form-item>
-          <el-form-item label="联系方式" prop="contact">
-            <el-input v-model="formData.contact" placeholder="请输入联系方式">
-            </el-input>
-          </el-form-item>
-        </el-form>
 
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="handleCancel">取 消</el-button>
-        <el-button type="primary" @click="handleConfirm">确 定</el-button>
-      </div>
-    </el-dialog> -->
 </template>
 
 <script>
+import {
+  getTabFileInfoList,
+  updateTabFileInfoById,
+  uploadTabFileInfoById,
+  downloadTabFileInfoById,
+  delTabFileInfoById,
+  previewFileTabFileInfoById,
+} from "@/api/unified-access/access-standard";
 import {
   // 第一步
   addFirstStepTabAccessReady,
@@ -407,6 +411,7 @@ import ETLPage from "./ETLPage.vue";
 import ApiPage from "./ApiPage.vue";
 import KafkaPage from "./KafkaPage.vue";
 import SFTPPage from "./SFTPPage.vue";
+import FileUploadDialog from "./FileUploadDialog.vue";
 export default {
   name: "StandardDialog",
   components: {
@@ -417,6 +422,7 @@ export default {
     ApiPage,
     KafkaPage,
     SFTPPage,
+    FileUploadDialog
   },
   props: {
     value: {
@@ -435,6 +441,13 @@ export default {
   dicts: ["access_method"],
   data () {
     return {
+      fileUploadPagination:{
+        currentPage: 1,
+        pageSize: 10,
+        total: 0,
+      },
+      uploadUrl: process.env.VUE_APP_BASE_API + "/web/tab-file-info/upload",
+      fileUploadShowDialog: false, // 上传弹窗
       accessOnlyId: "",
       accessPortOptions: [],
       accessIpOptions: [],
@@ -458,10 +471,10 @@ export default {
       pagination: {
         currentPage: 1,
         pageSize: 10,
-        total: 161,
+        total: 0,
       },
-      leftTableData: [{}],
-      rightTableData: [{}],
+      leftTableData: [],
+      rightTableData: [],
       headerFormData: {},
       activeName: 1,
       visible: this.value,
@@ -473,7 +486,7 @@ export default {
       fileFormData: [
         {
           label: "附件名称",
-          fieldName: "name",
+          fieldName: "fileName",
           type: "input",
           showInTable: true,
           value: "",
@@ -481,7 +494,7 @@ export default {
         },
         {
           label: "上传人",
-          fieldName: "age",
+          fieldName: "createBy",
           type: "input",
           showInTable: true,
           value: "",
@@ -489,7 +502,7 @@ export default {
         },
         {
           label: "上传时间",
-          fieldName: "address",
+          fieldName: "createTime",
           type: "input",
           showInTable: true,
           value: "",
@@ -527,6 +540,72 @@ export default {
     this.getList();
   },
   methods: {
+    // 第四步
+    onPageChange(page) {
+      this.fileUploadPagination.currentPage = page;
+      this.getfileUploadList()
+    },
+    handleSubmit(){},
+    handleReset(){
+      this.searchFormData={}
+    },
+    handleUpload(){
+      this.fileUploadShowDialog = true
+    },
+    FileUploadConfirm() {
+      this.fileUploadShowDialog = false
+      this.getfileUploadList()
+    },
+    getfileUploadList(){
+      getTabFileInfoList({
+        pageNum: this.fileUploadPagination.currentPage,
+        pageSize: this.fileUploadPagination.pageSize,
+        systemType:'接入反馈表',
+        outsideId:this.accessOnlyId
+      }).then((res) => {
+        if (+res.code === 200) {
+          this.fileTableData = res.rows;
+          this.fileUploadPagination.total = +res.total;
+        }
+      });
+    },
+    handleDownloadFile(row){
+      const filePath = row.filePath;
+      // 获取文件扩展名
+      const ext = filePath.split(".").pop().toLowerCase();
+      this.download(
+        `/web/tab-file-info/download/${row.fileId}`,
+        {},
+        `接入反馈表附件_${new Date().getTime()}.${ext}`
+      );
+    },
+    handleDeleteFile(row){
+      this.$confirm("此操作将永久删除该文件, 是否继续?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        center: true,
+        type: "warning",
+      })
+        .then(() => {
+          delTabFileInfoById(row.fileId).then((res) => {
+            if (+res.code === 200) {
+              this.$message({
+                message: res.msg,
+                type: "success",
+              });
+              this.getfileUploadList();
+            } else {
+              this.$message.error(res.msg);
+            }
+          });
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "已取消删除",
+          });
+        });
+    },
     // 第二步
     handleSecondStepDelete (index, row) {
       // this.secondStep
@@ -728,15 +807,35 @@ export default {
             this.$refs.tableRef.rightTableData.forEach(item => {
               item.accessFeedbackId = this.accessOnlyId
             })
-            pForm.etl = this.$refs.etlRef.rightTableData
+            pForm.kb = this.$refs.tableRef.rightTableData
 
-          } else if (+this.firstStep.dataOfferType === 4) {
+          } else if(+this.firstStep.dataOfferType === 2){
+              // api
+              this.$refs.apiRef.rightTableData.forEach(item => {
+              item.accessFeedbackId = this.accessOnlyId
+            })
+            pForm.kafka = this.$refs.apiRef.rightTableData
+          }else if(+this.firstStep.dataOfferType === 3){
+              // kafka
+              this.$refs.kafkaRef.rightTableData.forEach(item => {
+              item.accessFeedbackId = this.accessOnlyId
+            })
+            pForm.kafka = this.$refs.kafkaRef.rightTableData
+          }else if (+this.firstStep.dataOfferType === 4) {
             // ETL
             this.$refs.etlRef.rightTableData.forEach(item => {
               item.accessFeedbackId = this.accessOnlyId
             })
             pForm.etl = this.$refs.etlRef.rightTableData
 
+          }
+          else if (+this.firstStep.dataOfferType === 5) {
+            // sftp
+            this.$refs.sftpRef.rightTableData.forEach(item => {
+              item.accessFeedbackId = this.accessOnlyId
+            })
+            pForm.etl = this.$refs.sftpRef.rightTableData
+
           }
           addThirdStepTabAccessReady(pForm).then((res) => {
             if (+res.code === 200) {
@@ -784,8 +883,8 @@ export default {
 
     // 确定按钮处理方法
     handleConfirm () {
-      this.$refs.myFormComponent.validateForm();
-
+      // this.$refs.myFormComponent.validateForm();
+      this.beforeClose()
       this.visible = false;
       this.$emit("confirm"); // 可以在父组件监听 'confirm' 事件
     },

+ 89 - 69
src/views/unified-access/access-feedback/dialog/FileUploadDialog.vue

@@ -4,38 +4,35 @@
     title="文件上传"
     width="50%"
     @close="handleClose"
+    :append-to-body="true"
+    custom-class="inner-dialog"
   >
-    <el-dialog
-      :visible.sync="visible"
-      title="文件上传"
-      width="50%"
-      @close="handleClose"
+    <!-- 文件上传组件 -->
+    <el-upload
+      class="upload-container"
+      ref="upload"
+      :action="url"
+      :headers="headers"
+      :data="uploadData"
+      :before-upload="beforeUpload"
+      :on-success="handleSuccess"
+      :on-error="handleError"
+      :auto-upload="false"
+      :limit="1"
+      :file-list="fileList"
+      :drag="true"
+      :show-file-list="true"
+      @upload-success="handleFileUploadSuccess" 
+      @upload-error="handleFileUploadError"
     >
-      <el-upload
-        class="upload-container"
-        ref="upload"
-        :action="uploadUrl"
-        :headers="headers"
-        :before-upload="beforeUpload"
-        :on-success="handleSuccess"
-        :on-error="handleError"
-        :auto-upload="false"
-        :file-list="fileList"
-        :drag="true"
-        :show-file-list="true"
-      >
-        <i class="el-icon-upload"></i>
-        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-        <div class="el-upload__tip" slot="tip">
-          <!-- 只能上传Excel文件(.xls, .xlsx),且不超过2MB -->
-        </div>
-      </el-upload>
-
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="handleCancel">取 消</el-button>
-        <el-button type="primary" @click="handleConfirm">确 定</el-button>
+      <i class="el-icon-upload"></i>
+      <div class="el-upload__text">
+        将文件拖到此处,或
+        <em>点击上传</em>
       </div>
-    </el-dialog>
+      <div class="el-upload__tip" slot="tip">只能上传Excel文件(.xls, .xlsx),且不超过2MB</div>
+    </el-upload>
+
     <div slot="footer" class="dialog-footer">
       <el-button @click="handleCancel">取 消</el-button>
       <el-button type="primary" @click="handleConfirm">确 定</el-button>
@@ -44,33 +41,37 @@
 </template>
 
 <script>
+import { getToken } from "@/utils/auth";
 export default {
   name: "FileUploadDialog",
   props: {
     // 控制弹窗的显示和隐藏
     value: {
       type: Boolean,
-      default: false,
+      default: false
     },
     // 上传接口
     uploadUrl: {
       type: String,
-      required: true,
+      required: true
     },
     // 父组件传递的文件列表(如果需要)
     fileList: {
       type: Array,
-      default: () => [],
+      default: () => []
     },
     // 父组件传递的回调方法,用来处理文件上传成功后的逻辑
     onSuccess: {
       type: Function,
-      default: () => {},
+      default: () => {}
     },
     onError: {
       type: Function,
-      default: () => {},
+      default: () => {}
     },
+    accessOnlyId:{
+
+    }
   },
   watch: {
     value(newVal) {
@@ -79,66 +80,79 @@ export default {
     visible(newVal) {
       this.$emit("input", newVal);
     },
-
     uploadUrl: {
       handler(newVal) {
         this.url = newVal;
       },
       deep: true, // 深入监听
-      immediate: true,
+      immediate: true
     },
+    accessOnlyId: {
+      handler(newVal) {
+        this.onlyId = newVal;
+        this.uploadData.outsideId = newVal;
+        console.log( this.uploadData.accessOnlyId,' this.uploadData.accessOnlyId');
+        
+      },
+      deep: true, // 深入监听
+      immediate: true
+    }
   },
   data() {
     return {
-      loading: false, // 提交按钮的加载状态
-      visible: this.value,
-      file: null,
-      url: "",
+      onlyId:'',
       headers: {
         Authorization: "Bearer " + getToken(),
+        // 'Content-Type': "multipart/form-data"
+      },
+      uploadData: {
+        systemType: "接入反馈表", // 附加参数
+        outsideId:'',
       },
+      loading: false, // 提交按钮的加载状态
+      visible: this.value,
+      file: null,
+      url: ""
     };
   },
+  mounted () {
+    this.fileList=[]
+  },
   methods: {
     // 上传前处理
     beforeUpload(file) {
       console.log("上传前处理");
 
       console.log(file, "file");
-      this.file = file;
-      // 可以在这里做一些文件格式、大小的校验
-      const isPdf = file.type !== "json";
-      if (!isPdf) {
-        this.$message.error("不能能上传json文件");
-      }
-      return isPdf; // 如果返回 false,文件将不会被上传
-    },
-    handleFileUploadProgress() {
-      this.upload.isUploading = true;
+      // // 可以在这里做一些文件格式、大小的校验
+      // const isPdf = file.type === "application/pdf";
+      // if (!isPdf) {
+      //   this.$message.error("只能上传PDF文件");
+      // }
+      // return isPdf; // 如果返回 false,文件将不会被上传
     },
     // 上传成功处理
-    handleSuccess(response, file, fileList) {
+    handleSuccess(res, file, fileList) {
       console.log("上传成功处理");
       console.log(file, "file");
-      this.file = file;
-      // this.upload.isUploading = false;
-      // this.form.filePath = response.url;
-      this.$modal.msgSuccess(response.msg);
-    },
-    beforeAvatarUpload(file) {
-      console.log(file, "file==beforeAvatarUpload");
-      this.file = file;
+      // this.file = file;
+      // 判断上传结果的状态码
+      if (res.code === 200) {
+        // 上传成功,调用父组件传递的 onSuccess 方法
+        this.onSuccess(res, file, fileList);
+        this.$modal.msgSuccess("上传成功!");
+      } else {
+        // 上传失败,提示错误
+        this.$modal.msgError(res.msg || "上传失败,请重试");
+      }
     },
     // 上传失败处理
     handleError(error, file, fileList) {
-      console.log("上传失败处理");
-      // 调用父组件传递的 onError 方法
-      this.onError(error, file, fileList);
+      this.$modal.msgError(error || "上传文件失败,请重试");
     },
     // 提交上传
     submitUpload() {
       this.loading = true;
-      // uploadTabFileInfoById({ ...this.file }).then((res) => {});
       this.$refs.upload.submit(); // 提交上传
     },
     // 关闭弹窗时清空文件列表
@@ -151,15 +165,18 @@ export default {
     // 取消按钮处理方法
     handleCancel() {
       this.visible = false;
-      this.$emit("cancel"); // 可以在父组件监听 'cancel' 事件
+      this.$emit("confirm"); // 可以在父组件监听 'cancel' 事件
     },
 
     // 确定按钮处理方法
-    handleConfirm() {
-      this.visible = false;
-      this.$emit("confirm", this.file); // 可以在父组件监听 'confirm' 事件
-    },
-  },
+    handleConfirm(response) {
+      console.log(response, "response");
+
+      this.$refs.upload.submit();
+      // this.$modal.msgSuccess(response.msg);
+      this.handleCancel();
+    }
+  }
 };
 </script>
 
@@ -170,4 +187,7 @@ export default {
   text-align: center;
   margin-top: 10px;
 }
+.inner-dialog {
+  z-index: 2002 !important; /* 设置一个比外层更高的值 */
+}
 </style>

+ 226 - 93
src/views/unified-access/access-feedback/dialog/KafkaPage.vue

@@ -3,15 +3,13 @@
     <el-col :span="6" style="border-right: 1px solid #000; padding-right: 20px">
       <!-- 顶部工具栏 -->
       <el-form :model="headerFormData" label-width="auto">
-        <el-form-item label="数据源名称">
+        <el-form-item label="KAFKA服务名称">
           <el-input v-model="headerFormData.datasetName" placeholder="请输入"></el-input>
         </el-form-item>
         <el-form-item label="TOPIC名称">
           <el-input v-model="headerFormData.dataType" placeholder="请输入"></el-input>
         </el-form-item>
-        <el-form-item label="数据名称">
-          <el-input v-model="headerFormData.dataType" placeholder="请输入"></el-input>
-        </el-form-item>
+
         <el-form-item>
           <el-button type="primary" @click="onSearch">查询</el-button>
           <el-button type="default" @click="onReset">重置</el-button>
@@ -19,9 +17,14 @@
       </el-form>
       <!-- 左侧表格 -->
 
-      <el-table :data="leftTableData" border max-height="500" style="width: 100%; margin-right: 10px">
+      <el-table
+        :data="currentLeftTableData"
+        border
+        max-height="500"
+        style="width: 100%; margin-right: 10px"
+      >
         <el-table-column label="序号" type="index" width="50"></el-table-column>
-        <el-table-column prop="kafkaName" label="KAFKA数据名称"></el-table-column>
+        <el-table-column prop="kafkaName" label="KAFKA服务名称"></el-table-column>
         <el-table-column prop="sixTopicName" label="TOPIC名称"></el-table-column>
         <el-table-column label="操作" width="120">
           <template slot-scope="scope">
@@ -32,26 +35,44 @@
       </el-table>
       <!-- 分页 -->
       <div class="pagination-container">
-        <el-pagination background layout="prev, pager, next" :current-page="pagination.currentPage"
-          :page-size="pagination.pageSize" :total="pagination.total" @current-change="onPageChange"></el-pagination>
+        <el-pagination
+          background
+          layout="prev, pager, next"
+          :current-page="pagination.currentPage"
+          :page-size="pagination.pageSize"
+          :total="pagination.total"
+          @current-change="onPageChange"
+        ></el-pagination>
       </div>
     </el-col>
+
     <el-col :span="18" style="padding-left: 20px">
       <!-- 右侧表格 -->
       <div>六统一接入方式为KAFKA,必填此表</div>
-      <div style="
+      <div
+        style="
           width: 100%;
           display: flex;
           justify-content: end;
           align-items: center;
-        ">
+        "
+      >
         <el-button type="primary" @click="addClick">新增</el-button>
         <el-button type="primary">上传</el-button>
         <el-button type="primary">模版下载</el-button>
       </div>
-      <el-table ref="rightTable" :data="rightTableData" border style="width: 100%" :expand-row-keys="expandedRows"
-        row-key="id" @expand-change="onExpandChange" :show-header="false" max-height="800"
-        @selection-change="handleSelectionChange">
+      <el-table
+        ref="rightTable"
+        :data="rightTableData"
+        border
+        style="width: 100%"
+        :expand-row-keys="expandedRows"
+        row-key="id"
+        @expand-change="onExpandChange"
+        :show-header="false"
+        max-height="800"
+        @selection-change="handleSelectionChange"
+      >
         <!-- 序号列 -->
         <el-table-column label="序号" type="index" width="50"></el-table-column>
 
@@ -60,19 +81,27 @@
           <template slot-scope="scope">
             <div style="display: flex; align-items: center">
               <div>KAFKA服务名称</div>
-              <el-input style="width: 260px; margin-left: 20px" v-model="scope.row.kafkaName"
-                placeholder="请输入内容"></el-input>
+              <el-input
+                style="width: 260px; margin-left: 20px"
+                v-model="scope.row.kafkaName"
+                placeholder="请输入内容"
+              ></el-input>
             </div>
           </template>
         </el-table-column>
 
-
         <!-- 展开行 -->
         <el-table-column type="expand">
           <template slot-scope="props">
             <div class="expanded-content">
-              <el-form :model="apiFormData" label-width="auto" inline class="form-detail-inline"
-                :label-position="right">
+              <!-- 展开行表单 -->
+              <el-form
+                :model="apiFormData"
+                label-width="auto"
+                inline
+                class="form-detail-inline"
+                :label-position="right"
+              >
                 <el-form-item label="应用场景" prop="scenario">
                   <el-input v-model="props.row.scenario" placeholder="请输入"></el-input>
                 </el-form-item>
@@ -99,7 +128,6 @@
                   <el-input v-model="props.row.acks" placeholder="请输入"></el-input>
                 </el-form-item>
 
-
                 <el-form-item label="调试频率">
                   <el-input v-model="props.row.applyCount" placeholder="请输入"></el-input>
                 </el-form-item>
@@ -113,7 +141,6 @@
                   <el-input v-model="props.row.num" placeholder="请输入"></el-input>
                 </el-form-item>
 
-
                 <el-form-item label="联调实施步骤">
                   <el-input v-model="props.row.steps" placeholder="请输入"></el-input>
                 </el-form-item>
@@ -121,7 +148,7 @@
                   <el-input v-model="props.row.internet" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="消费者组">
-                  <el-input v-model="props.row.group" placeholder="请输入"></el-input>
+                  <el-input v-model="props.row.consumerGroup" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="六统一KAFKA授权码">
                   <el-input v-model="props.row.kafkaCode" placeholder="请输入"></el-input>
@@ -132,7 +159,12 @@
               </el-form>
               <div class="title">参数定义</div>
               <div class="table_title">key 参数说明</div>
-              <el-table ref="rightTable" :data="props.row.tabKafkaKeySuns" border style="width: 100%">
+              <el-table
+                ref="rightTable"
+                :data="props.row.tabKafkaKeySuns"
+                border
+                style="width: 100%"
+              >
                 <!-- 序号列 -->
                 <el-table-column label="序号" type="index" width="50"></el-table-column>
 
@@ -155,9 +187,12 @@
                 <el-table-column prop="isRequired" label="是否必填">
                   <template slot-scope="scope">
                     <el-select v-model="scope.row.isRequired" placeholder="请选择">
-                      <el-option v-for="item in whetherOptions" :key="item.value" :label="item.label"
-                        :value="item.value">
-                      </el-option>
+                      <el-option
+                        v-for="item in whetherOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      ></el-option>
                     </el-select>
                   </template>
                 </el-table-column>
@@ -173,16 +208,27 @@
                 </el-table-column>
 
                 <el-table-column fixed="right" label="操作" width="100">
-                  <template :slot-scope="{ row }">
-                    <el-button type="text" size="small">删除</el-button>
+                  <template :slot-scope="{ row, $index }">
+                    <el-button type="text" size="small" @click="deleteKeyRow(props.row, $index)">删除</el-button>
                   </template>
                 </el-table-column>
               </el-table>
-              <el-button type="primary" plain class="mt-4" style="width: 100%" icon="el-icon-plus"
-                @click="addKeyTableRow(props.row)"></el-button>
+              <el-button
+                type="primary"
+                plain
+                class="mt-4"
+                style="width: 100%"
+                icon="el-icon-plus"
+                @click="addKeyTableRow(props.row)"
+              ></el-button>
 
               <div class="table_title">value 参数说明</div>
-              <el-table ref="rightTable" :data="props.row.tabKafkaValueSuns" border style="width: 100%">
+              <el-table
+                ref="rightTable"
+                :data="props.row.tabKafkaValueSuns"
+                border
+                style="width: 100%"
+              >
                 <!-- 序号列 -->
                 <el-table-column label="序号" type="index" width="50"></el-table-column>
 
@@ -205,9 +251,12 @@
                 <el-table-column prop="isRequired" label="是否必填">
                   <template slot-scope="scope">
                     <el-select v-model="scope.row.isRequired" placeholder="请选择">
-                      <el-option v-for="item in whetherOptions" :key="item.value" :label="item.label"
-                        :value="item.value">
-                      </el-option>
+                      <el-option
+                        v-for="item in whetherOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      ></el-option>
                     </el-select>
                   </template>
                 </el-table-column>
@@ -224,16 +273,30 @@
 
                 <el-table-column fixed="right" label="操作" width="100">
                   <template :slot-scope="{ row, $index }">
-                    <el-button type="text" size="small" @click="deleteKeyRow(props.row, $index)">删除</el-button>
+                    <el-button
+                      type="text"
+                      size="small"
+                      @click="deleteValueRow(props.row, $index)"
+                    >删除</el-button>
                   </template>
                 </el-table-column>
               </el-table>
-              <el-button type="primary" plain class="mt-4" style="width: 100%" icon="el-icon-plus"
-                @click="addValueTableRow(props.row)"></el-button>
-
+              <el-button
+                type="primary"
+                plain
+                class="mt-4"
+                style="width: 100%"
+                icon="el-icon-plus"
+                @click="addValueTableRow(props.row)"
+              ></el-button>
 
               <div class="table_title">data子项说明</div>
-              <el-table ref="rightTable" :data="props.row.tabKafkaDataSuns" border style="width: 100%">
+              <el-table
+                ref="rightTable"
+                :data="props.row.tabKafkaDataSuns"
+                border
+                style="width: 100%"
+              >
                 <!-- 序号列 -->
                 <el-table-column label="序号" type="index" width="50"></el-table-column>
 
@@ -256,9 +319,12 @@
                 <el-table-column prop="isRequired" label="是否必填">
                   <template slot-scope="scope">
                     <el-select v-model="scope.row.isRequired" placeholder="请选择">
-                      <el-option v-for="item in whetherOptions" :key="item.value" :label="item.label"
-                        :value="item.value">
-                      </el-option>
+                      <el-option
+                        v-for="item in whetherOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      ></el-option>
                     </el-select>
                   </template>
                 </el-table-column>
@@ -274,17 +340,33 @@
                 </el-table-column>
 
                 <el-table-column fixed="right" label="操作" width="100">
-                  <template :slot-scope="{ row }">
-                    <el-button type="text" size="small">删除</el-button>
+                  <template :slot-scope="{ row , $index }">
+                    <el-button type="text" size="small" @click="deleteDataRow(props.row,index)">删除</el-button>
                   </template>
                 </el-table-column>
               </el-table>
-              <el-button type="primary" plain class="mt-4" style="width: 100%" icon="el-icon-plus"
-                @click="addDataTableRow(props.row)"></el-button>
+              <el-button
+                type="primary"
+                plain
+                class="mt-4"
+                style="width: 100%"
+                icon="el-icon-plus"
+                @click="addDataTableRow(props.row)"
+              ></el-button>
 
-              <el-form :model="apiFormData" label-width="auto" class="textarea-form-block" :label-position="right">
+              <el-form
+                :model="apiFormData"
+                label-width="auto"
+                class="textarea-form-block"
+                :label-position="right"
+              >
                 <el-form-item label="数据样例">
-                  <el-input v-model="props.row.dataExample" placeholder="请输入" type="textarea" :rows="4"></el-input>
+                  <el-input
+                    v-model="props.row.dataExample"
+                    placeholder="请输入"
+                    type="textarea"
+                    :rows="4"
+                  ></el-input>
                 </el-form-item>
               </el-form>
             </div>
@@ -299,15 +381,17 @@ import MyForm from "@/components/MyForm";
 export default {
   name: "",
   components: {
-    MyForm,
+    MyForm
   },
-  data () {
+  data() {
     return {
       pagination: {
         currentPage: 1,
         pageSize: 10,
-        total: 161,
+        total: 0
       },
+      // 表格选中的数据
+      selectedRows: [],
       leftTableData: [],
       rightTableData: [],
       headerFormData: {},
@@ -315,60 +399,73 @@ export default {
       expandedRows: [],
       whetherOptions: [
         { label: "是", value: 1 },
-        { label: "不是", value: 0 },
-      ],
+        { label: "不是", value: 0 }
+      ]
     };
   },
+  computed: {
+    // 计算当前页要显示的数据
+    currentLeftTableData() {
+      const start =
+        (this.pagination.currentPage - 1) * this.pagination.pageSize;
+      const end = start + this.pagination.pageSize;
+      return this.leftTableData.slice(start, end);
+    }
+  },
   methods: {
-   // 右侧列表新增按钮
-    addClick () {
+    onSearch () { },
+    onReset () {
+      this.headerFormData={}
+     },
+    onPageChange(page) {
+      this.pagination.currentPage = page;
+    },
+    // 右侧列表新增按钮
+    addClick() {
       const newRow = {
         id: Date.now(), // 使用当前时间戳生成唯一ID
-        kafkaName: '',
-        scenario: '',
-        sixTopicName: '',
-        role: '',
-        accessIp: '',
-        accessPort: '',
-        format: '',
-        serialization: '',
-        acks: '',
-        applyCount: '',
-        countNum: '',
-        countSize: '',
-        num: '',
-        steps: '',
-        internet: '',
-        group: '',
-        kafkaApplyCode: '',
-        kafkaCode: '',
-        dataExample: '',
+        kafkaName: "",
+        scenario: "",
+        sixTopicName: "",
+        role: "",
+        accessIp: "",
+        accessPort: "",
+        format: "",
+        serialization: "",
+        acks: "",
+        applyCount: "",
+        countNum: "",
+        countSize: "",
+        num: "",
+        steps: "",
+        internet: "",
+        consumerGroup: "",
+        kafkaApplyCode: "",
+        kafkaCode: "",
+        dataExample: "",
         tabKafkaDataSuns: [],
         tabKafkaKeySuns: [],
-        tabKafkaValueSuns: [],
+        tabKafkaValueSuns: []
       };
-      this.rightTableData.push({ ...newRow })
-      this.leftTableData = this.rightTableData
-      this.pagination.total = this.leftTableData.length
+      this.rightTableData.push({ ...newRow });
+      this.leftTableData = this.rightTableData;
+      this.pagination.total = this.leftTableData.length;
     },
     // 处理选择框勾选变化
-    handleSelectionChange (val) {
+    handleSelectionChange(val) {
       this.selectedRows = val; // 将勾选的行保存到 selectedRows 中
     },
-    onEyeClick (row) {
+    onEyeClick(row) {
       // // 检查右侧表格是否已存在相同项
       // const existing = this.rightTableData.find(item => item.tableName === row.tableName && item.tableEnglishName === row.tableEnglishName);
       // 获取右侧表格对应的数据并展开
       if (!this.expandedRows.includes()) {
         // this.expandedRows.push(row.tableName); // 将左侧表格对应的行名称加入展开行
         this.expandedRows = [row.id]; // 将左侧表格对应的行名称加入展开行
-
-
       }
-
     },
     // 删除行
-    onDeleteClick (row) {
+    onDeleteClick(row) {
       const index = this.leftTableData.findIndex(item => item.id === row.id);
       if (index > -1) {
         this.leftTableData.splice(index, 1);
@@ -378,33 +475,69 @@ export default {
     },
 
     // 在右侧表格删除时,删除对应的数据
-    onDeleteRightClick (row) {
+    onDeleteRightClick(row) {
       const index = this.rightTableData.findIndex(item => item.id === row.id);
       if (index > -1) {
         this.rightTableData.splice(index, 1);
       }
     },
 
-
     // 新增 key 表格行
-    addKeyTableRow (row) {
-      const newRow = { id: Date.now(), name: '', englishName: '', dataType: '', isRequired: '', ps: '', example: '' };
+    addKeyTableRow(row) {
+      const newRow = {
+        id: Date.now(),
+        name: "",
+        englishName: "",
+        dataType: "",
+        isRequired: "",
+        ps: "",
+        example: ""
+      };
       row.tabKafkaKeySuns.push(newRow);
     },
 
     // 删除 key 表格行
-    deleteKeyRow (row, index) {
-      console.log(row.tabKafkaKeySuns,'tabKafkaKeySuns')
+    deleteKeyRow(row, index) {
       row.tabKafkaKeySuns.splice(index, 1);
     },
     // 新增 Value 表格行
-    addValueTableRow (row) {
-      const newRow = { id: Date.now(), name: '', englishName: '', dataType: '', isRequired: '', ps: '', example: '' };
+    addValueTableRow(row) {
+      const newRow = {
+        id: Date.now(),
+        name: "",
+        englishName: "",
+        dataType: "",
+        isRequired: "",
+        ps: "",
+        example: ""
+      };
       row.tabKafkaValueSuns.push(newRow);
     },
+    // 删除 Value 表格行
+    deleteValueRow(row, index) {
+      row.tabKafkaValueSuns.splice(index, 1);
+    },
+
+    // 新增 data 表格行
+    addDataTableRow(row) {
+      const newRow = {
+        id: Date.now(),
+        name: "",
+        englishName: "",
+        dataType: "",
+        isRequired: "",
+        ps: "",
+        example: ""
+      };
+      row.tabKafkaDataSuns.push(newRow);
+    },
+    // 删除 data 表格行
+    deleteDataRow(row, index) {
+      row.tabKafkaDataSuns.splice(index, 1);
+    }
   },
-  created () { },
-  mounted () { },
+  created() {},
+  mounted() {}
 };
 </script>
 <style lang="scss" scoped>

+ 94 - 82
src/views/unified-access/access-feedback/dialog/SFTPPage.vue

@@ -4,18 +4,12 @@
       <!-- 顶部工具栏 -->
       <el-form :model="headerFormData" label-width="auto">
         <el-form-item label="数据资源名称">
-          <el-input
-            v-model="headerFormData.datasetName"
-            placeholder="请输入"
-          ></el-input>
+          <el-input v-model="headerFormData.datasourceName" placeholder="请输入"></el-input>
         </el-form-item>
         <el-form-item label="节点IP">
-          <el-input
-            v-model="headerFormData.dataType"
-            placeholder="请输入"
-          ></el-input>
+          <el-input v-model="headerFormData.sixSftpIp" placeholder="请输入"></el-input>
         </el-form-item>
-     
+
         <el-form-item>
           <el-button type="primary" @click="onSearch">查询</el-button>
           <el-button type="default" @click="onReset">重置</el-button>
@@ -30,23 +24,12 @@
         style="width: 100%; margin-right: 10px"
       >
         <el-table-column label="序号" type="index" width="50"></el-table-column>
-        <el-table-column prop="name" label="数据资源名称"></el-table-column>
-        <el-table-column
-          prop="name"
-          label="节点IP"
-        ></el-table-column>
+        <el-table-column prop="datasourceName" label="数据资源名称"></el-table-column>
+        <el-table-column prop="sixSftpIp" label="节点IP"></el-table-column>
         <el-table-column label="操作" width="120">
           <template slot-scope="scope">
-            <el-button
-              type="text"
-              @click="onEyeClick(scope.row)"
-              icon="el-icon-view"
-            ></el-button>
-            <el-button
-              type="text"
-              @click="onEyeClick(scope.row)"
-              icon="el-icon-delete"
-            ></el-button>
+            <el-button type="text" @click="onEyeClick(scope.row)" icon="el-icon-view"></el-button>
+            <el-button type="text" @click="onDeleteClick(scope.row)" icon="el-icon-delete"></el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -73,9 +56,7 @@
           align-items: center;
         "
       >
-        <el-button type="primary">新增</el-button>
-        <el-button type="primary">修改</el-button>
-        <el-button type="primary">删除</el-button>
+        <el-button type="primary" @click="addClick">新增</el-button>
         <el-button type="primary">上传</el-button>
         <el-button type="primary">模版下载</el-button>
       </div>
@@ -85,33 +66,35 @@
         border
         style="width: 100%"
         :expand-row-keys="expandedRows"
+        row-key="id"
         @expand-change="onExpandChange"
         :show-header="false"
         max-height="800"
+        @selection-change="handleSelectionChange"
       >
         <!-- 序号列 -->
         <el-table-column label="序号" type="index" width="50"></el-table-column>
 
         <!-- 普通列 -->
-        <el-table-column prop="name" label="数据资源名称">
+        <el-table-column prop="datasourceName" label="数据资源名称">
           <template slot-scope="scope">
             <div style="display: flex; align-items: center">
               <div>数据资源名称</div>
               <el-input
                 style="width: 260px; margin-left: 20px"
-                v-model="scope.rowinput"
+                v-model="scope.row.datasourceName"
                 placeholder="请输入内容"
               ></el-input>
             </div>
           </template>
         </el-table-column>
- <el-table-column prop="name" label="文件名称">
+        <el-table-column prop="fileName" label="文件名称">
           <template slot-scope="scope">
             <div style="display: flex; align-items: center">
               <div>文件名称</div>
               <el-input
                 style="width: 260px; margin-left: 20px"
-                v-model="scope.rowinput"
+                v-model="scope.row.fileName"
                 placeholder="请输入内容"
               ></el-input>
             </div>
@@ -129,63 +112,34 @@
                 class="form-detail-inline"
                 :label-position="right"
               >
-         
                 <el-form-item label="应用场景">
-                  <el-input
-                    v-model="apiFormData.dataType"
-                    placeholder="请输入"
-                  ></el-input>
+                  <el-input v-model="props.row.scenario" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="文件类型">
-                  <el-input
-                    v-model="apiFormData.datasetName"
-                    placeholder="请输入"
-                  ></el-input>
+                  <el-input v-model="props.row.fileType" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="六统一SFTP IP">
-                  <el-input
-                    v-model="apiFormData.dataType"
-                    placeholder="请输入"
-                  ></el-input>
+                  <el-input v-model="props.row.sixSftpIp" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="六统一SFTP 端口">
-                  <el-input
-                    v-model="apiFormData.dataType"
-                    placeholder="请输入"
-                  ></el-input>
+                  <el-input v-model="props.row.sixSftpPort" placeholder="请输入"></el-input>
                 </el-form-item>
 
                 <el-form-item label="文件夹路径">
-                  <el-input
-                    v-model="apiFormData.datasetName"
-                    placeholder="请输入"
-                  ></el-input>
+                  <el-input v-model="props.row.filePath" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="acks">
-                  <el-input
-                    v-model="apiFormData.dataType"
-                    placeholder="请输入"
-                  ></el-input>
+                  <el-input v-model="props.row.acks" placeholder="请输入"></el-input>
                 </el-form-item>
-               
 
                 <el-form-item label="六统一用户名">
-                  <el-input
-                    v-model="apiFormData.datasetName"
-                    placeholder="请输入"
-                  ></el-input>
+                  <el-input v-model="props.row.sixName" placeholder="请输入"></el-input>
                 </el-form-item>
                 <el-form-item label="六统一密码">
-                  <el-input
-                    v-model="apiFormData.dataType"
-                    placeholder="请输入"
-                  ></el-input>
+                  <el-input v-model="props.row.sixPassword" placeholder="请输入"></el-input>
                 </el-form-item>
-                 <el-form-item label="文件大小">
-                  <el-input
-                    v-model="apiFormData.dataType"
-                    placeholder="请输入"
-                  ></el-input>
+                <el-form-item label="文件大小">
+                  <el-input v-model="props.row.fileSize" placeholder="请输入"></el-input>
                 </el-form-item>
               </el-form>
             </div>
@@ -200,33 +154,93 @@ import MyForm from "@/components/MyForm";
 export default {
   name: "",
   components: {
-    MyForm,
+    MyForm
   },
   data() {
     return {
       pagination: {
         currentPage: 1,
         pageSize: 10,
-        total: 161,
+        total: 161
       },
-      leftTableData: [{}],
-      rightTableData: [{}],
+      leftTableData: [],
+      rightTableData: [],
       headerFormData: {},
       apiFormData: {},
-      expandedRows: [],
+      // 表格选中的数据
+      selectedRows: [],
+      expandedRows: []
     };
   },
-  methods: {},
+  methods: {
+    onSearch () { },
+    onReset () {
+      this.headerFormData={}
+     },
+    onPageChange(page) {
+      this.pagination.currentPage = page;
+    },
+    // 右侧列表新增按钮
+    addClick() {
+      const newRow = {
+        id: Date.now(), // 使用当前时间戳生成唯一ID
+        datasourceName: "",
+        fileName: "",
+        scenario: "",
+        fileType: "",
+        sixSftpIp: "",
+        sixSftpPort: "",
+        filePath: "",
+        acks: "",
+        sixName: "",
+        sixPassword: "",
+        fileSize: "",
+      };
+      this.rightTableData.push({ ...newRow });
+      this.leftTableData = this.rightTableData;
+      this.pagination.total = this.leftTableData.length;
+    },
+    // 处理选择框勾选变化
+    handleSelectionChange(val) {
+      this.selectedRows = val; // 将勾选的行保存到 selectedRows 中
+    },
+    onEyeClick(row) {
+      // // 检查右侧表格是否已存在相同项
+      // const existing = this.rightTableData.find(item => item.tableName === row.tableName && item.tableEnglishName === row.tableEnglishName);
+      // 获取右侧表格对应的数据并展开
+      if (!this.expandedRows.includes()) {
+        // this.expandedRows.push(row.tableName); // 将左侧表格对应的行名称加入展开行
+        this.expandedRows = [row.id]; // 将左侧表格对应的行名称加入展开行
+      }
+    },
+    // 删除行
+    onDeleteClick(row) {
+      const index = this.leftTableData.findIndex(item => item.id === row.id);
+      if (index > -1) {
+        this.leftTableData.splice(index, 1);
+      }
+      // 同步删除右侧表格的对应项
+      this.onDeleteRightClick(row);
+    },
+
+    // 在右侧表格删除时,删除对应的数据
+    onDeleteRightClick(row) {
+      const index = this.rightTableData.findIndex(item => item.id === row.id);
+      if (index > -1) {
+        this.rightTableData.splice(index, 1);
+      }
+    }
+  },
   created() {},
-  mounted() {},
+  mounted() {}
 };
 </script>
 <style lang="scss" scoped>
-.expanded-content{
+.expanded-content {
   padding: 20px;
   box-sizing: border-box;
 }
-.textarea-form-block{
+.textarea-form-block {
   margin-top: 20px;
 }
 .title {
@@ -239,9 +253,7 @@ export default {
   margin: 10px 0;
 }
 
-.textarea-form{
+.textarea-form {
   margin-top: 20px;
 }
-
-
 </style>

+ 66 - 85
src/views/unified-access/access-feedback/index.vue

@@ -1,11 +1,7 @@
 <template>
   <el-container>
     <el-header height="60px" class="content-header">
-      <MyHeader
-        :title="'统一接入反馈表'"
-        :formData="headerFormData"
-        @submit="handleHeaderFormSubmit"
-      ></MyHeader>
+      <MyHeader :title="'统一接入反馈表'" :formData="headerFormData" @submit="handleHeaderFormSubmit"></MyHeader>
     </el-header>
     <el-container>
       <el-main>
@@ -20,48 +16,28 @@
         <MyTable :tableData="tableData" :formData="formData" :minWidth="400">
           <!-- 自定义操作按钮,传递 row 和 index -->
           <template #operation="{ row, index }">
-            <el-button
-              size="mini"
-              @click="handleView(row, index)"
-              type="primary"
-              >查看</el-button
-            >
-            <el-button
-              size="mini"
-              @click="handleEdit(row, index)"
-              type="primary"
-              >编辑</el-button
-            >
+            <el-button size="mini" @click="handleView(row, index)" type="primary">查看</el-button>
+            <el-button size="mini" @click="handleEdit(row, index)" type="primary">编辑</el-button>
             <el-button
               size="mini"
               @click="handleSubmit(row, index)"
               type="primary"
               v-if="activeTabLable !== 2"
-              >提交</el-button
-            >
+            >提交</el-button>
             <el-button
               size="mini"
               @click="handleRevoke(row, index)"
               type="primary"
               v-if="activeTabLable !== 2"
-              >撤回</el-button
-            >
-            <el-button
-              size="mini"
-              @click="handleCatalog(row, index)"
-              type="primary"
-              >编目</el-button
-            >
+            >撤回</el-button>
+            <el-button size="mini" @click="handleCatalog(row, index)" type="primary">编目</el-button>
             <el-button
               size="mini"
               @click="handleUpperChain(row, index)"
               type="primary"
               v-if="activeTabLable !== 1"
-              >上链</el-button
-            >
-            <el-button size="mini" @click="handleDelete(index)" type="primary"
-              >删除</el-button
-            >
+            >上链</el-button>
+            <el-button size="mini" @click="handleDelete(index)" type="primary">删除</el-button>
           </template>
         </MyTable>
         <MyPagination
@@ -78,14 +54,13 @@
         v-model="showDialog"
         :title="title"
         :rowObj="rowObj"
-        @confirm="getList"
-        @before-close=""
-      >
-      </FeedbackDialog>
+        @confirm="confirmHandle"
+      ></FeedbackDialog>
     </div>
   </el-container>
 </template>
 <script>
+import {getTabAccessFeedbackList} from '@/api/unified-access/access-feedback.js'
 import FeedbackDialog from "./dialog/FeedbackDialog.vue";
 import MyHeader from "@/components/MyHeader";
 import MyTable from "@/components/MyTable";
@@ -98,7 +73,7 @@ export default {
     MyTableHeader,
     MyTable,
     MyPagination,
-    FeedbackDialog,
+    FeedbackDialog
   },
   data() {
     return {
@@ -110,7 +85,7 @@ export default {
       tableData: [
         { name: "张三", age: 25, address: "北京市" },
         { name: "李四", age: 30, address: "上海市" },
-        { name: "王五", age: 22, address: "广州市" },
+        { name: "王五", age: 22, address: "广州市" }
       ],
       formData: [
         {
@@ -119,7 +94,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "数据源所需部门",
@@ -127,7 +102,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "数据源联系人",
@@ -135,7 +110,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "数据源联系电话",
@@ -143,7 +118,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "数据源所属信息系统",
@@ -151,7 +126,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "数据源所属信息系统IP端口",
@@ -159,7 +134,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "接收方所属单位",
@@ -167,7 +142,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "接收方所属部门",
@@ -175,7 +150,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "接收方所属信息系统",
@@ -183,7 +158,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "数据项目",
@@ -191,7 +166,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "拟/正式运行时间",
@@ -199,7 +174,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "接入方式",
@@ -207,7 +182,7 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "",
+          width: ""
         },
         {
           label: "状态",
@@ -215,8 +190,8 @@ export default {
           type: "input",
           showInTable: true,
           value: "",
-          width: "80",
-        },
+          width: "80"
+        }
       ],
       tableTotal: 0,
       pageSize: 10,
@@ -229,47 +204,47 @@ export default {
         {
           label: "正式运行",
           value: 2,
-          active: false,
+          active: false
         },
-        { label: "申请反馈", value: 3, active: false },
+        { label: "申请反馈", value: 3, active: false }
       ],
       buttons: [
         {
           label: "新建",
           type: "primary",
           methodName: "action1",
-          icon: "el-icon-circle-plus",
+          icon: "el-icon-circle-plus"
         },
         {
           label: "删除",
           type: "primary",
           methodName: "action2",
-          icon: "el-icon-remove",
+          icon: "el-icon-remove"
         },
         {
           label: "启用",
           type: "primary",
           methodName: "action3",
-          icon: "el-icon-video-play",
+          icon: "el-icon-video-play"
         },
         {
           label: "停用",
           type: "primary",
           methodName: "action4",
-          icon: "el-icon-video-pause",
+          icon: "el-icon-video-pause"
         },
         {
           label: "导入",
           type: "primary",
           methodName: "action5",
-          icon: "el-icon-download",
+          icon: "el-icon-download"
         },
         {
           label: "导出",
           type: "primary",
           methodName: "action6",
-          icon: "el-icon-upload2",
-        },
+          icon: "el-icon-upload2"
+        }
       ],
 
       headerFormData: [
@@ -278,7 +253,7 @@ export default {
           fieldName: "dataMane",
           type: "input",
           value: "",
-          placeholder: "请输入用户分类",
+          placeholder: "请输入用户分类"
           // isRequired: true,
         },
         {
@@ -286,9 +261,9 @@ export default {
           fieldName: "username",
           type: "input",
           value: "",
-          placeholder: "请输入用户状态",
+          placeholder: "请输入用户状态"
           // isRequired: true,
-        },
+        }
         // {
         //   label: "用户状态",
         //   fieldName: "gender",
@@ -309,7 +284,7 @@ export default {
         //   placeholder: "请选择生日",
         //   isRequired: false,
         // },
-      ],
+      ]
     };
   },
   methods: {
@@ -337,11 +312,11 @@ export default {
             //   }
             // });
             let ids = [];
-            ids = this.selectedRows.map((item) => item.id);
+            ids = this.selectedRows.map(item => item.id);
             this.download(
               "/web/tab-access-config/export",
               {
-                ids,
+                ids
               },
               `统一接入配置_${new Date().getTime()}.xlsx`
             );
@@ -352,7 +327,7 @@ export default {
               showCancelButton: false,
               showConfirmButton: false,
               type: "warning",
-              center: true,
+              center: true
             })
               .then(() => {})
               .catch(() => {});
@@ -367,12 +342,12 @@ export default {
     handleNodeClick() {},
     // 列表头部
     handleTabClick(tab) {
-      this.tabs.forEach((item) => {
+      this.tabs.forEach(item => {
         if (item.label === tab.label) {
           item.active = true;
           this.activeTabLable = tab.value;
           if (item.label === "正式运行") {
-            this.formData.forEach((item) => {
+            this.formData.forEach(item => {
               // if (item.label==='正式运行时间') {
               // }
             });
@@ -384,16 +359,16 @@ export default {
     },
 
     getList() {
-      // getFileList({
-      //   pageNumber: this.currentPage,
-      //   pageSize: this.pageSize,
-      //   fileName: this.searchName,
-      // }).then((res) => {
-      //   if (+res.code === 200) {
-      //     this.tableData = res.data;
-      //     this.tableTotal = +res.total;
-      //   }
-      // })
+      getTabAccessFeedbackList({
+        pageNum: this.currentPage,
+        pageSize: this.pageSize,
+        fileName: this.searchName,
+      }).then((res) => {
+        if (+res.code === 200) {
+          this.tableData = res.data;
+          this.tableTotal = +res.total;
+        }
+      })
     },
     // 列表分页
     pagi_changePage(page) {
@@ -421,14 +396,14 @@ export default {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         center: true,
-        type: "warning",
+        type: "warning"
       })
         .then(() => {
-          delTabAccessList({ ids: [row.id] }).then((res) => {
+          delTabAccessList({ ids: [row.id] }).then(res => {
             if (+res.code === 200) {
               this.$message({
                 message: res.msg,
-                type: "success",
+                type: "success"
               });
               this.getList();
             } else {
@@ -439,13 +414,19 @@ export default {
         .catch(() => {
           this.$message({
             type: "info",
-            message: "已取消删除",
+            message: "已取消删除"
           });
         });
     },
+    confirmHandle(){
+      this.showDialog=false
+      this.getList()
+    }
   },
   created() {},
-  mounted() {},
+  mounted() {
+    this.getList()
+  }
 };
 </script>
 <style lang="scss" scoped>

+ 0 - 1
src/views/unified-access/access-party-manage/access-party-maintenance/index.vue

@@ -76,7 +76,6 @@
         :title="title"
         :rowObj="rowObj"
         @confirm="getList"
-        @before-close=""
       >
       </AccessPartyMaintenanceDialog>
     </div>

+ 1 - 1
vue.config.js

@@ -36,7 +36,7 @@ module.exports = {
       [process.env.VUE_APP_BASE_API]: {
         // target: `http://10.1.161.127:8080`,
         // target: `http://10.1.161.183:6661`,
-        target: `http://192.168.136.14:6661`,
+        target: `http://192.168.136.201:6661`,
         // target: `http://10.1.162.158:6661`,
 
         changeOrigin: true,