From b38df3d967a98f9793e15f375658bfecc9de2667 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 28 一月 2026 10:36:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 /dev/null                                                 |  154 -------------------
 admin/src/api/business/interfaceLog.js                    |   18 ++
 admin/src/components/business/OperaInterfaceLogWindow.vue |  102 ++++++++++++
 admin/package-lock.json                                   |    9 +
 admin/src/views/business/interfaceLog.vue                 |  148 ++++++++++++++++++
 admin/package.json                                        |    7 
 6 files changed, 281 insertions(+), 157 deletions(-)

diff --git a/admin/package-lock.json b/admin/package-lock.json
index 58e4f64..1bd4443 100644
--- a/admin/package-lock.json
+++ b/admin/package-lock.json
@@ -13596,6 +13596,15 @@
       "integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=",
       "dev": true
     },
+    "vue-json-viewer": {
+      "version": "2.2.22",
+      "resolved": "https://registry.npmmirror.com/vue-json-viewer/-/vue-json-viewer-2.2.22.tgz",
+      "integrity": "sha512-3oPH5BxoUWva/qp7wNJj+15FBXyi9Yu5VDW4mCWivjHR1pUpMv34fjqqxML7jh2uOqm1S/3Xks5nQ5JjC5+OWw==",
+      "dev": true,
+      "requires": {
+        "clipboard": "^2.0.4"
+      }
+    },
     "vue-loader": {
       "version": "15.9.7",
       "resolved": "https://registry.nlark.com/vue-loader/download/vue-loader-15.9.7.tgz",
diff --git a/admin/package.json b/admin/package.json
index 81a4b79..718c85f 100644
--- a/admin/package.json
+++ b/admin/package.json
@@ -37,19 +37,20 @@
     "@vue/cli-service": "~4.5.0",
     "@vue/eslint-config-standard": "^5.1.2",
     "babel-eslint": "^10.1.0",
+    "crypto-js": "^4.2.0",
     "eslint": "^6.7.2",
     "eslint-plugin-import": "^2.20.2",
     "eslint-plugin-node": "^11.1.0",
     "eslint-plugin-promise": "^4.2.1",
     "eslint-plugin-standard": "^4.0.0",
     "eslint-plugin-vue": "^6.2.2",
+    "jsencrypt": "^3.3.2",
     "lint-staged": "^9.5.0",
     "node-sass": "^4.12.0",
     "sass-loader": "^8.0.2",
     "vue-cli-plugin-element-ui": "~1.1.4",
-    "vue-template-compiler": "^2.6.11",
-    "crypto-js": "^4.2.0",
-    "jsencrypt": "^3.3.2"
+    "vue-json-viewer": "^2.2.22",
+    "vue-template-compiler": "^2.6.11"
   },
   "eslintConfig": {
     "root": true,
diff --git a/admin/src/api/business/interfaceLog.js b/admin/src/api/business/interfaceLog.js
new file mode 100644
index 0000000..7d6ff29
--- /dev/null
+++ b/admin/src/api/business/interfaceLog.js
@@ -0,0 +1,18 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/interfaceLog/page', data, {
+    trim: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/business/interfaceLog/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/business/interfaceLog/updateById', data)
+}
diff --git a/admin/src/components/business/OperaInterfaceLogWindow.vue b/admin/src/components/business/OperaInterfaceLogWindow.vue
new file mode 100644
index 0000000..1533647
--- /dev/null
+++ b/admin/src/components/business/OperaInterfaceLogWindow.vue
@@ -0,0 +1,102 @@
+<template>
+    <el-dialog
+        :title="title"
+        width="60%"
+        :withFooter="false"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        append-to-body
+        @confirm="confirm"
+    >
+      <div class="codeEditBox">
+        <json-viewer
+            :value="form.formatContent"
+            :expand-depth="5"
+            copyable
+            boxed
+            :expanded="false"
+            @copied="copyText"
+            sort
+            :show-array-index="false"
+            class="w-100%">
+          <template slot="copy">
+            <i class="el-icon-document-copy" title="澶嶅埗">澶嶅埗浠g爜</i>
+          </template>
+        </json-viewer>
+      </div>
+    </el-dialog>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import JsonViewer from 'vue-json-viewer'
+
+export default {
+  name: 'OperaInterfaceLogWindow',
+  extends: BaseOpera,
+  components: { JsonViewer },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        content: '',
+        formatContent: {}
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+      },
+      copyable: { copyText: 'copy', copiedText: 'copied' }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/interfaceLog',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    copyText (val) {
+      this.$message.success('鍐呭宸叉垚鍔熷鍒跺埌鍓垏鏉匡紒')
+    },
+    open (title, target) {
+      this.title = title
+      this.visible = true
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+        try {
+          this.form.formatContent = JSON.parse(this.form.content)
+        } catch (e) {
+          this.form.formatContent = this.form.content
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+    .codeEditBox {
+      width: 100%;
+      height: 90%;
+      overflow:auto;
+      display: block;
+      border: 1px solid #dcdee2;
+      overflow-y: auto;
+    }
+    ::v-deep .el-dialog__body{height:70vh;overflow-y: auto}
+    ::v-deep .el-dialog{height:78vh;overflow: hidden}
+    .jv-container {
+      //height: 60vh;
+    }
+</style>
diff --git a/admin/src/views/business/categoryCb.vue b/admin/src/views/business/categoryCb.vue
deleted file mode 100644
index 38054d1..0000000
--- a/admin/src/views/business/categoryCb.vue
+++ /dev/null
@@ -1,122 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:category:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="鍚嶇О" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
-        <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓椁愭爣閰嶇疆',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
-      </ul>
-      <el-table
-          :height="tableHeightNew"
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" :selectable="isChangeSelected" width="55"></el-table-column>
-        <el-table-column prop="name" label="鐢ㄩ鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column  prop="detail" label="椁愭爣" min-width="200px">
-          <template slot-scope="{row}">
-              <div v-if="row.detailList && row.detailList.length">
-                <span v-for="(item,index) in row.detailList">
-                  {{item || 0}}鍏�
-                  <span v-if="index < row.detailList.length-1" style="margin: 5px">|</span>
-                </span>
-              </div>
-          </template>
-        </el-table-column>
-        <el-table-column label="鐘舵��">
-          <template slot-scope="{row}">
-            <el-switch :disabled="row.isFixed ==1" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
-            inactive-color="#ff4949" :active-value="0" :inactive-value="1">
-            </el-switch>
-          </template>
-        </el-table-column>
-        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
-        <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:category:update', 'business:category:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text"   @click="$refs.operaCategoryWindow.open('缂栬緫椁愭爣閰嶇疆', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
-            <el-button type="text"   @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
-export default {
-  name: 'Category',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCategoryWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        name: '',
-        type: 2
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '鍒嗙被淇℃伅琛�',
-      api: '/business/category',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-    isChangeSelected(row,index){
-      // if(row.isFixed ==1) {
-      //   return false
-      // }
-      return true
-    },
-    changeStatus (e, row) {
-      this.working = true
-      this.api.updateStatus({ id: row.id, status: e })
-        .then(res => {
-          this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
-          this.search()
-        })
-        .catch(e => {
-          this.$tip.apiFailed(e)
-        })
-        .finally(() => {
-          this.working = false
-        })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/business/categoryFee.vue b/admin/src/views/business/categoryFee.vue
deleted file mode 100644
index 8e5631d..0000000
--- a/admin/src/views/business/categoryFee.vue
+++ /dev/null
@@ -1,112 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:category:query']">
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
-        <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鎵嬬画璐归厤缃�',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
-      </ul>
-      <el-table
-          :height="tableHeightNew"
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" :selectable="isChangeSelected" width="55"></el-table-column>
-        <el-table-column prop="name" label="宸ュ崟绫诲瀷" min-width="100px">
-          <template slot-scope="{row}">
-            <span v-if="row.name=='0'">鐢ㄥ伐鍗�</span>
-            <span v-if="row.name=='1'">璐ц繍鍗�</span>
-            <span v-if="row.name=='2'">璁㈤鍗�</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="detail" label="鎵嬬画璐癸紙%锛�" min-width="100px">
-          <template slot-scope="{row}">
-            <span class="yellowstate">{{row.detail||0}}%</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="鐘舵��">
-          <template slot-scope="{row}">
-            <el-switch :disabled="row.isFixed ==1" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
-            inactive-color="#ff4949" :active-value="0" :inactive-value="1">
-            </el-switch>
-          </template>
-        </el-table-column>
-        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
-        <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:category:update', 'business:category:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text"   @click="$refs.operaCategoryWindow.open('缂栬緫鎵嬬画璐归厤缃�', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
-            <el-button type="text"   @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
-export default {
-  name: 'Category',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCategoryWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        name: '',
-        type: 3
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '鍒嗙被淇℃伅琛�',
-      api: '/business/category',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-    isChangeSelected(row,index){
-      // if(row.isFixed ==1) {
-      //   return false
-      // }
-      return true
-    },
-    changeStatus (e, row) {
-      this.working = true
-      this.api.updateStatus({ id: row.id, status: e })
-        .then(res => {
-          this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
-          this.search()
-        })
-        .catch(e => {
-          this.$tip.apiFailed(e)
-        })
-        .finally(() => {
-          this.working = false
-        })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/business/categoryOld.vue b/admin/src/views/business/categoryOld.vue
deleted file mode 100644
index 2ff4c1a..0000000
--- a/admin/src/views/business/categoryOld.vue
+++ /dev/null
@@ -1,106 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:category:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="鍚嶇О" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
-        <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鍒嗙被淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
-      </ul>
-      <el-table
-          :height="tableHeightNew"
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="updateUser" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
-        <el-table-column prop="name" label="鍗曚綅鍚嶇О" min-width="100px"></el-table-column>
-        <el-table-column label="鐘舵��">
-          <template slot-scope="{row}">
-            <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
-                       inactive-color="#ff4949" :active-value="0" :inactive-value="1">
-            </el-switch>
-          </template>
-        </el-table-column>
-        <el-table-column prop="type" label="绫诲瀷:0=鍝佺閰嶇疆锛�1=杞﹁締绫诲瀷閰嶇疆锛�2=椁愭爣閰嶇疆锛�3=鎵嬬画璐归厤缃紱" min-width="100px"></el-table-column>
-        <el-table-column prop="detail" label="鍐呭锛堣溅杈嗚鏍笺�侀鏍囥�佹墜缁垂姣斾緥锛�" min-width="100px"></el-table-column>
-        <el-table-column prop="icon" label="鍥炬爣锛堣溅杈嗙被鍨嬩娇鐢級" min-width="100px"></el-table-column>
-        <el-table-column prop="isFixed" label="鏄惁鍥哄畾杞﹁締锛堣溅杈嗙被鍨嬩娇鐢級:0=鍚︼紱1=鏄紱" min-width="100px">
-        </el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:category:update', 'business:category:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鍒嗙被淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
-export default {
-  name: 'Category',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCategoryWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        id: '',
-        deleted: '',
-        status: '',
-        createUser: '',
-        createTime: '',
-        updateUser: '',
-        updateTime: '',
-        remark: '',
-        name: '',
-        type: '',
-        detail: '',
-        icon: '',
-        isFixed: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '鍒嗙被淇℃伅琛�',
-      api: '/business/category',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  }
-}
-</script>
diff --git a/admin/src/views/business/identityInfo.vue b/admin/src/views/business/identityInfo.vue
deleted file mode 100644
index d7c3fd3..0000000
--- a/admin/src/views/business/identityInfo.vue
+++ /dev/null
@@ -1,160 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:identityinfo:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="韬唤绫诲瀷" prop="type">
-        <el-select v-model="searchForm.type" clearable placeholder="璇烽�夋嫨韬唤绫诲瀷" @change="search">
-          <el-option :value="0" label="鐢ㄥ伐韬唤"></el-option>
-          <el-option :value="1" label="璐ц繍韬唤"></el-option>
-          <el-option :value="2" label="渚涢韬唤"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="璁よ瘉绫诲瀷 " prop="authType">
-        <el-select v-model="searchForm.authType" clearable placeholder="璇烽�夋嫨璁よ瘉绫诲瀷" @change="search">
-          <el-option :value="0" label="涓汉"></el-option>
-          <el-option :value="1" label="浼佷笟"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鑱旂郴浜�" prop="linkName">
-        <el-input v-model="searchForm.linkName" placeholder="璇疯緭鍏ヨ仈绯讳汉" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鑱旂郴鏂瑰紡" prop="telephone">
-        <el-input v-model="searchForm.telephone" placeholder="璇疯緭鍏ヨ仈绯绘柟寮�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鎺ュ崟浣嶇疆" prop="location">
-        <el-input v-model="searchForm.location" placeholder="璇疯緭鍏ユ帴鍗曚綅缃�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍗曚綅鍚嶇О" prop="companyName">
-        <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ュ崟浣嶅悕绉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-        <el-button type="primary" :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-<!--      <ul class="toolbar" v-permissions="['business:identityinfo:create', 'business:identityinfo:delete']">
-        <li><el-button type="primary" @click="$refs.operaIdentityInfoWindow.open('鏂板缓浼氬憳韬唤璁よ瘉淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:identityinfo:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:identityinfo:delete']">鍒犻櫎</el-button></li>
-      </ul>-->
-      <el-table
-          :height="tableHeightNew"
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="auditStatus" label="瀹℃牳鐘舵��" min-width="100px" fixed="left">
-          <template slot-scope="{row}">
-            <span class="bluestate" v-if="row.auditStatus ==1">鐢宠涓�</span>
-            <span class="greenstate" v-if="row.auditStatus ==2">宸查�氳繃</span>
-            <span class="redstate" v-if="row.auditStatus ==3">鏈�氳繃</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="openid" label="openid" min-width="180px"  :show-overflow-tooltip='true'></el-table-column>
-        <el-table-column prop="memberName" label="浼氬憳鏄电О" min-width="100px" :show-overflow-tooltip='true'></el-table-column>
-        <el-table-column prop="type" label="绫诲瀷" min-width="100px">
-          <template slot-scope="{row}">
-           <span v-if="row.type ==0">鐢ㄥ伐韬唤</span>
-           <span v-if="row.type ==1">璐ц繍韬唤</span>
-           <span v-if="row.type ==2">渚涢韬唤</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="authType" label="璁よ瘉绫诲瀷" min-width="100px">
-          <template slot-scope="{row}">
-            <span v-if="row.authType ==0">涓汉</span>
-            <span v-if="row.authType ==1">浼佷笟</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="linkName" label="鑱旂郴浜�" min-width="100px" :show-overflow-tooltip='true'></el-table-column>
-        <el-table-column prop="telephone" label="鑱旂郴鏂瑰紡" min-width="100px" :show-overflow-tooltip='true'></el-table-column>
-        <el-table-column prop="location" label="鎺ュ崟浣嶇疆" min-width="180px"  :show-overflow-tooltip='true'></el-table-column>
-        <el-table-column prop="companyName" label="鍗曚綅鍚嶇О" min-width="150px"  :show-overflow-tooltip='true'></el-table-column>
-        <el-table-column prop="createTime" label="鐢宠鏃堕棿" min-width="150px"></el-table-column>
-        <el-table-column prop="editorName" label="瀹℃牳浜�" min-width="100px" :show-overflow-tooltip='true'></el-table-column>
-        <el-table-column prop="auditTime" label="璁よ瘉瀹℃壒鏃堕棿" min-width="150px"></el-table-column>
-        <el-table-column prop="auditRemark" label="璁よ瘉瀹℃壒澶囨敞" min-width="120px"  :show-overflow-tooltip='true'></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:identityinfo:update','business:identityinfo:query'])"
-          label="鎿嶄綔"
-          min-width="160"
-          fixed="right"
-        >
-        <template slot-scope="{row}">
-            <el-button type="text" v-if="row.auditStatus==1" @click="$refs.OperaIdentityDetailWindow.open('鐢ㄦ埛璁よ瘉瀹℃牳', row)" icon="el-icon-edit" v-permissions="['business:identityinfo:update']">瀹℃牳</el-button>
-            <el-button type="text"  @click="$refs.OperaIdentityDetailWindow.open('鐢ㄦ埛璁よ瘉璇︽儏', row)" icon="el-icon-info" >璇︽儏</el-button>
-<!--
-            <el-button type="text" @click="$refs.operaIdentityInfoWindow.open('缂栬緫浼氬憳韬唤璁よ瘉淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:identityinfo:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:identityinfo:delete']">鍒犻櫎</el-button>
--->
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaIdentityDetailWindow ref="OperaIdentityDetailWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaIdentityDetailWindow from '@/components/business/OperaIdentityDetailWindow'
-export default {
-  name: 'IdentityInfo',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaIdentityDetailWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        id: '',
-        deleted: '',
-        createUser: '',
-        createTime: '',
-        updateUser: '',
-        updateTime: '',
-        remark: '',
-        type: '',
-        memberId: '',
-        authType: '',
-        linkName: '',
-        telephone: '',
-        location: '',
-        companyName: '',
-        lat: '',
-        lgt: '',
-        identityFront: '',
-        identityBack: '',
-        businessLicense: '',
-        otherFile: '',
-        transportFile: '',
-        foodBusinessFile: '',
-        healthFile: '',
-        auditStatus: '',
-        auditTime: '',
-        auditRemark: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '浼氬憳韬唤璁よ瘉淇℃伅琛�',
-      api: '/business/identityInfo',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  }
-}
-</script>
diff --git a/admin/src/views/business/interfaceLog.vue b/admin/src/views/business/interfaceLog.vue
new file mode 100644
index 0000000..d31cd1f
--- /dev/null
+++ b/admin/src/views/business/interfaceLog.vue
@@ -0,0 +1,148 @@
+<template>
+  <TableLayout :permissions="['business:interfacelog:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鎺ュ彛鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ユ帴鍙e悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="绫诲瀷" prop="type">
+        <el-select v-model="searchForm.type" @change="search" placeholder="璇烽�夋嫨">
+          <el-option label="璋冪敤" value="0"></el-option>
+          <el-option label="鎺ㄩ�佹帴鍙�" value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="璧锋鏃堕棿" prop="startDate">
+        <!-- <el-date-picker
+                    @change="seleTime"
+                    v-model="time"
+                    type="datetimerange"
+                    format="yyyy-MM-dd HH:mm:ss"
+                    value-format="yyyy-MM-dd HH:mm:ss"
+                    range-separator="鑷�"
+                    start-placeholder="寮�濮嬫椂闂�"
+                    end-placeholder="缁撴潫鏃堕棿">
+                </el-date-picker> -->
+        <el-date-picker type="datetime" v-model="searchForm.startDate" value-format="yyyy-MM-dd HH:mm:ss"
+          placeholder="璇烽�夋嫨寮�濮嬫椂闂�" @change="changeRadio" />
+        <el-date-picker type="datetime" v-model="searchForm.endDate" value-format="yyyy-MM-dd HH:mm:ss"
+          placeholder="璇烽�夋嫨缁撴潫鏃堕棿" @change="changeRadio" />
+      </el-form-item>
+      <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+        <el-radio-button label="0">褰撳ぉ</el-radio-button>
+        <el-radio-button label="1">杩�7澶�</el-radio-button>
+        <el-radio-button label="2">杩�30澶�</el-radio-button>
+      </el-radio-group>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <el-table :height="tableHeightNew" v-loading="isWorking.search" :data="tableData.list" stripe>
+        <el-table-column prop="name" label="鎺ュ彛鍚嶇О" min-width="180px"></el-table-column>
+        <el-table-column prop="url" label="鍦板潃淇℃伅" min-width="180px"></el-table-column>
+        <el-table-column label="绫诲瀷" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.type == 0">璋冪敤</span>
+            <span v-if="row.type == 1">鎺ㄩ�佹帴鏀�</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="骞冲彴" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.plat == 0">娴峰悍瀹夐槻骞冲彴</span>
+            <span v-if="row.plat == 1">ERP绯荤粺</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="request" label="璇锋眰鍙傛暟" min-width="100px">
+          <template slot-scope="{row}">
+            <el-button type="text"
+              @click="$refs.operaInterfaceLogWindow.open('璇锋眰鍙傛暟', { content: row.request })">鏌ョ湅</el-button>
+          </template>
+        </el-table-column>
+        <el-table-column prop="repose" label="鍝嶅簲鍙傛暟" min-width="100px">
+          <template slot-scope="{row}">
+            <el-button type="text"
+              @click="$refs.operaInterfaceLogWindow.open('鍝嶅簲鍙傛暟', { content: row.repose })">鏌ョ湅</el-button>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+      </el-table>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaInterfaceLogWindow ref="operaInterfaceLogWindow" @success="handlePageChange" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaInterfaceLogWindow from '@/components/business/OperaInterfaceLogWindow'
+import { timeForMat } from '@/utils/util'
+export default {
+  name: 'InterfaceLog',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaInterfaceLogWindow },
+  data() {
+    return {
+      // 鎼滅储
+      searchForm: {
+        name: '',
+        type: '',
+        endDate: '',
+        startDate: '',
+        radio: '0'
+      },
+      time: []
+    }
+  },
+  created() {
+    this.config({
+      module: '涓夋柟骞冲彴鎺ュ彛浜や簰璁板綍',
+      api: '/business/interfaceLog',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.changeRadio('0')
+  },
+  methods: {
+    changeRadio(e) {
+      if (e === '0') {
+        this.searchForm.startDate = timeForMat(0)[0]
+        this.searchForm.endDate = timeForMat(0)[1]
+      } else if (e === '1') {
+        this.searchForm.startDate = timeForMat(6)[0]
+        this.searchForm.endDate = timeForMat(6)[1]
+      } else if (e === '2') {
+        this.searchForm.startDate = timeForMat(29)[0]
+        this.searchForm.endDate = timeForMat(29)[1]
+      } else {
+        this.searchForm.radio = ''
+      }
+      if (this.searchForm.startDate && this.searchForm.endDate && new Date(this.searchForm.startDate).getTime() > new Date(this.searchForm.endDate).getTime()) {
+        this.$message.error('寮�濮嬫椂闂翠笉鑳藉ぇ浜庣粨鏉熸椂闂�')
+        this.searchForm.startDate = ''
+        return
+      }
+      this.search()
+    },
+    seleTime(e) {
+      this.searchForm.startDate = e[0]
+      this.searchForm.endDate = e[1]
+      this.searchForm.radio = null
+      this.search()
+    },
+    reset() {
+      this.$refs.searchForm.resetFields()
+      this.searchForm.startDate = ''
+      this.searchForm.endDate = ''
+      this.searchForm.radio = ''
+      this.time = []
+      this.search()
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/memberRevenue.vue b/admin/src/views/business/memberRevenue.vue
deleted file mode 100644
index cd8a473..0000000
--- a/admin/src/views/business/memberRevenue.vue
+++ /dev/null
@@ -1,154 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:memberrevenue:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="涓婚敭" prop="id">
-        <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" prop="deleted">
-        <el-input v-model="searchForm.deleted" placeholder="璇疯緭鍏ユ槸鍚﹀凡鍒犻櫎 0鏈垹闄� 1宸插垹闄�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="createUser">
-        <el-input v-model="searchForm.createUser" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
-        <el-date-picker v-model="searchForm.createTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
-      </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="updateUser">
-        <el-input v-model="searchForm.updateUser" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="updateTime">
-        <el-date-picker v-model="searchForm.updateTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="浼氬憳涓婚敭" prop="memberId">
-        <el-input v-model="searchForm.memberId" placeholder="璇疯緭鍏ヤ細鍛樹富閿�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍙樺姩绫诲瀷:0=鐢ㄥ伐鍗曟敹鍏ワ紱1=璐ц繍鍗曟敹鍏ワ紱2=渚涢鍗曟敹鍏ワ紱3=鎻愮幇鐢宠锛�" prop="type">
-        <el-input v-model="searchForm.type" placeholder="璇疯緭鍏ュ彉鍔ㄧ被鍨�:0=鐢ㄥ伐鍗曟敹鍏ワ紱1=璐ц繍鍗曟敹鍏ワ紱2=渚涢鍗曟敹鍏ワ紱3=鎻愮幇鐢宠锛�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏀舵敮绫诲瀷:1=鏀跺叆锛�-1=鏀嚭锛�" prop="optType">
-        <el-input v-model="searchForm.optType" placeholder="璇疯緭鍏ユ敹鏀被鍨�:1=鏀跺叆锛�-1=鏀嚭锛�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍙樺姩閲戦" prop="amount">
-        <el-input v-model="searchForm.amount" placeholder="璇疯緭鍏ュ彉鍔ㄩ噾棰�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍙樺姩鍓嶉噾棰�" prop="beforeAmount">
-        <el-input v-model="searchForm.beforeAmount" placeholder="璇疯緭鍏ュ彉鍔ㄥ墠閲戦" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍙樺姩鍚庨噾棰�" prop="afterAmount">
-        <el-input v-model="searchForm.afterAmount" placeholder="璇疯緭鍏ュ彉鍔ㄥ悗閲戦" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="涓氬姟璁板綍涓婚敭" prop="objId">
-        <el-input v-model="searchForm.objId" placeholder="璇疯緭鍏ヤ笟鍔¤褰曚富閿�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="涓氬姟绫诲瀷:0=璁㈠崟涓氬姟锛�1=鎻愮幇涓氬姟锛�" prop="objType">
-        <el-input v-model="searchForm.objType" placeholder="璇疯緭鍏ヤ笟鍔$被鍨�:0=璁㈠崟涓氬姟锛�1=鎻愮幇涓氬姟锛�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="涓氬姟鐘舵��:0=鎴愬姛锛�1=澶辫触锛�2=澶勭悊涓紱" prop="status">
-        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ヤ笟鍔$姸鎬�:0=鎴愬姛锛�1=澶辫触锛�2=澶勭悊涓紱" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:memberrevenue:create', 'business:memberrevenue:delete']">
-        <li><el-button type="primary" @click="$refs.operaMemberRevenueWindow.open('鏂板缓浼氬憳鏀舵敮璁板綍')" icon="el-icon-plus" v-permissions="['business:memberrevenue:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:memberrevenue:delete']">鍒犻櫎</el-button></li>
-      </ul>
-      <el-table
-          :height="tableHeightNew"
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
-        <el-table-column prop="deleted" label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" min-width="100px"></el-table-column>
-        <el-table-column prop="createUser" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="updateUser" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
-        <el-table-column prop="memberId" label="浼氬憳涓婚敭" min-width="100px"></el-table-column>
-        <el-table-column prop="type" label="鍙樺姩绫诲瀷:0=鐢ㄥ伐鍗曟敹鍏ワ紱1=璐ц繍鍗曟敹鍏ワ紱2=渚涢鍗曟敹鍏ワ紱3=鎻愮幇鐢宠锛�" min-width="100px"></el-table-column>
-        <el-table-column prop="optType" label="鏀舵敮绫诲瀷:1=鏀跺叆锛�-1=鏀嚭锛�" min-width="100px"></el-table-column>
-        <el-table-column prop="amount" label="鍙樺姩閲戦" min-width="100px"></el-table-column>
-        <el-table-column prop="beforeAmount" label="鍙樺姩鍓嶉噾棰�" min-width="100px"></el-table-column>
-        <el-table-column prop="afterAmount" label="鍙樺姩鍚庨噾棰�" min-width="100px"></el-table-column>
-        <el-table-column prop="objId" label="涓氬姟璁板綍涓婚敭" min-width="100px"></el-table-column>
-        <el-table-column prop="objType" label="涓氬姟绫诲瀷:0=璁㈠崟涓氬姟锛�1=鎻愮幇涓氬姟锛�" min-width="100px"></el-table-column>
-        <el-table-column prop="status" label="涓氬姟鐘舵��:0=鎴愬姛锛�1=澶辫触锛�2=澶勭悊涓紱" min-width="100px"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:memberrevenue:update', 'business:memberrevenue:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaMemberRevenueWindow.open('缂栬緫浼氬憳鏀舵敮璁板綍', row)" icon="el-icon-edit" v-permissions="['business:memberrevenue:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:memberrevenue:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaMemberRevenueWindow ref="operaMemberRevenueWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaMemberRevenueWindow from '@/components/business/OperaMemberRevenueWindow'
-export default {
-  name: 'MemberRevenue',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaMemberRevenueWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        id: '',
-        deleted: '',
-        createUser: '',
-        createTime: '',
-        updateUser: '',
-        updateTime: '',
-        remark: '',
-        memberId: '',
-        type: '',
-        optType: '',
-        amount: '',
-        beforeAmount: '',
-        afterAmount: '',
-        objId: '',
-        objType: '',
-        status: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '浼氬憳鏀舵敮璁板綍',
-      api: '/business/memberRevenue',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  }
-}
-</script>

--
Gitblit v1.9.3