From eb82684152ffb0acddf67da92e4533a0190eb258 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 10 十月 2025 18:27:31 +0800
Subject: [PATCH] 对接口

---
 admin/src/api/business/jkVersion.js                            |    2 
 admin/src/components/business/BorrowingAndReturningRecords.vue |  133 ++++---
 admin/src/views/business/jkVersion.vue                         |  100 +----
 admin/src/views/login.vue                                      |    2 
 admin/src/components/business/OperaJkKeysWindow.vue            |    4 
 admin/src/components/business/OperaJkIccardWindow.vue          |  106 ++++--
 admin/src/views/business/jkKeys.vue                            |   36 +
 admin/src/api/business/jkIccard.js                             |    7 
 admin/src/views/business/jkCabinet.vue                         |   10 
 admin/src/views/business/jkIccard.vue                          |  111 +++---
 admin/src/api/business/jkCabinet.js                            |   10 
 admin/src/components/business/cabinetDetails.vue               |   63 ++-
 admin/src/api/business/jkCabinetGrid.js                        |    5 
 admin/src/components/business/OperaJkVersionWindow.vue         |  153 ++++++--
 admin/src/views/business/jkCabinetLog.vue                      |  171 +++++-----
 admin/src/api/business/jkKeys.js                               |    2 
 16 files changed, 509 insertions(+), 406 deletions(-)

diff --git a/admin/src/api/business/jkCabinet.js b/admin/src/api/business/jkCabinet.js
index c413215..8f81b84 100644
--- a/admin/src/api/business/jkCabinet.js
+++ b/admin/src/api/business/jkCabinet.js
@@ -20,11 +20,21 @@
   return request.post('/visitsAdmin/cloudService/business/jkCabinet/create', data)
 }
 
+// 鍒楄〃
+export function list (data) {
+  return request.post('/visitsAdmin/cloudService/business/jkCabinet/list', data)
+}
+
 // 淇敼
 export function updateById (data) {
   return request.post('/visitsAdmin/cloudService/business/jkCabinet/updateById', data)
 }
 
+// 鏍规嵁ID淇敼鐘舵��
+export function updateStatusById (data) {
+  return request.post('/visitsAdmin/cloudService/business/jkCabinet/updateStatusById', data)
+}
+
 // 鍒犻櫎
 export function deleteById (id) {
   return request.get(`/business/jkCabinet/delete/${id}`)
diff --git a/admin/src/api/business/jkCabinetGrid.js b/admin/src/api/business/jkCabinetGrid.js
index b97ee1f..bc2d362 100644
--- a/admin/src/api/business/jkCabinetGrid.js
+++ b/admin/src/api/business/jkCabinetGrid.js
@@ -25,6 +25,11 @@
   return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/updateById', data)
 }
 
+// 鏍规嵁ID淇敼鐘舵��
+export function updateStatusById (data) {
+  return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/updateStatusById', data)
+}
+
 // 鍒犻櫎
 export function deleteById (id) {
   return request.get(`/business/jkCabinetGrid/delete/${id}`)
diff --git a/admin/src/api/business/jkIccard.js b/admin/src/api/business/jkIccard.js
index de6ea14..4b4e274 100644
--- a/admin/src/api/business/jkIccard.js
+++ b/admin/src/api/business/jkIccard.js
@@ -25,9 +25,14 @@
   return request.post('/visitsAdmin/cloudService/business/jkIccard/updateById', data)
 }
 
+// 鏍规嵁ID淇敼鐘舵��
+export function updateStatusById (data) {
+  return request.post('/visitsAdmin/cloudService/business/jkIccard/updateStatusById', data)
+}
+
 // 鍒犻櫎
 export function deleteById (id) {
-  return request.get(`/business/jkIccard/delete/${id}`)
+  return request.get(`/visitsAdmin/cloudService/business/jkIccard/delete/${id}`)
 }
 
 // 鎵归噺鍒犻櫎
diff --git a/admin/src/api/business/jkKeys.js b/admin/src/api/business/jkKeys.js
index a54dbfb..edd2d47 100644
--- a/admin/src/api/business/jkKeys.js
+++ b/admin/src/api/business/jkKeys.js
@@ -27,7 +27,7 @@
 
 // 鍒犻櫎
 export function deleteById (id) {
-  return request.get(`/business/jkKeys/delete/${id}`)
+  return request.get(`/visitsAdmin/cloudService/business/jkKeys/delete/${id}`)
 }
 
 // 鎵归噺鍒犻櫎
diff --git a/admin/src/api/business/jkVersion.js b/admin/src/api/business/jkVersion.js
index 9c2df74..5d7065f 100644
--- a/admin/src/api/business/jkVersion.js
+++ b/admin/src/api/business/jkVersion.js
@@ -27,7 +27,7 @@
 
 // 鍒犻櫎
 export function deleteById (id) {
-  return request.get(`/business/jkVersion/delete/${id}`)
+  return request.get(`/visitsAdmin/cloudService/business/jkVersion/delete/${id}`)
 }
 
 // 鎵归噺鍒犻櫎
diff --git a/admin/src/components/business/BorrowingAndReturningRecords.vue b/admin/src/components/business/BorrowingAndReturningRecords.vue
index caffbf9..209c667 100644
--- a/admin/src/components/business/BorrowingAndReturningRecords.vue
+++ b/admin/src/components/business/BorrowingAndReturningRecords.vue
@@ -6,21 +6,26 @@
         :withFooter="false"
     >
         <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="閽ュ寵" prop="keyId">
-                <el-input v-model="searchForm.keyId" placeholder="璇疯緭鍏ラ挜鍖欑紪鐮佹垨鍚嶇О" @keypress.enter.native="getList"></el-input>
+            <el-form-item label="鎿嶄綔浜�" prop="memberName">
+                <el-input v-model="searchForm.memberName" placeholder="璇疯緭鍏ユ搷浣滀汉" @keypress.enter.native="getList"></el-input>
+            </el-form-item>
+            <el-form-item label="鏃堕棿" prop="date">
+                <el-date-picker
+                    v-model="date"
+                    type="daterange"
+                    @change="setDate"
+                    range-separator="鑷�"
+                    start-placeholder="寮�濮嬫棩鏈�"
+                    end-placeholder="缁撴潫鏃ユ湡"
+                    format="yyyy 骞� MM 鏈� dd 鏃�"
+                    value-format="yyyy-MM-dd">
+                </el-date-picker>
             </el-form-item>
             <el-form-item label="鐘舵��" prop="status">
                 <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @change="getList">
                     <el-option label="鍏ㄩ儴" value=""></el-option>
-                    <el-option label="鍚敤" :value="0"></el-option>
-                    <el-option label="绂佺敤" :value="1"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鏌滄牸鐘舵��" prop="bindStatus">
-                <el-select v-model="searchForm.bindStatus" placeholder="璇烽�夋嫨" @change="getList">
-                    <el-option label="鍏ㄩ儴" value=""></el-option>
-                    <el-option label="鏈粦瀹�" :value="0"></el-option>
-                    <el-option label="宸茬粦瀹�" :value="1"></el-option>
+                    <el-option label="鎴愬姛" :value="0"></el-option>
+                    <el-option label="澶辫触" :value="1"></el-option>
                 </el-select>
             </el-form-item>
             <el-form-item>
@@ -29,49 +34,28 @@
             <el-form-item>
                 <el-button @click="reset">閲嶇疆</el-button>
             </el-form-item>
+            <el-form-item>
+                <el-button @click="exports">瀵煎嚭</el-button>
+            </el-form-item>
         </el-form>
-        <ul class="toolbar">
-            <li><el-button type="primary">鎵归噺瑙g粦</el-button></li>
-        </ul>
         <el-table
             v-loading="loading"
             :data="list"
             stripe
         >
-            <el-table-column prop="code" label="鏌滄牸缂栧彿" min-width="100px"></el-table-column>
-            <el-table-column prop="cabinetName" label="鎵�灞為挜鍖欐煖" min-width="100px"></el-table-column>
-            <el-table-column prop="keyId" label="缁戝畾閽ュ寵" min-width="100px"></el-table-column>
+            <el-table-column prop="code" label="閽ュ寵缂栧彿" min-width="100px"></el-table-column>
+            <el-table-column prop="cabinetName" label="瀛樻斁浣嶇疆" min-width="100px"></el-table-column>
+            <el-table-column prop="gridName" label="鎵�灞為挜鍖欐煖" min-width="100px"></el-table-column>
+            <el-table-column prop="memberName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
+            <el-table-column label="鏃堕棿" min-width="100px">
+                <template slot-scope="{row}">
+                    {{row.startDate}}~{{row.endDate}}
+                </template>
+            </el-table-column>
             <el-table-column label="鐘舵��" min-width="100px">
                 <template slot-scope="{row}">
-                    <el-switch
-                        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 label="杩愯鐘舵��" min-width="100px">
-                <template slot-scope="{row}">
-                    <el-link type="success" v-if="row.workingStatus === 0">姝e父</el-link>
-                    <el-link type="warning" v-if="row.workingStatus === 1">鏁呴殰</el-link>
-                </template>
-            </el-table-column>
-            <el-table-column label="鏌滄牸鐘舵��" min-width="100px">
-                <template slot-scope="{row}">
-                    <el-link type="warning" v-if="row.bindStatus === 0">鏈粦瀹�</el-link>
-                    <el-link type="success" v-if="row.bindStatus === 1">宸茬粦瀹�</el-link>
-                </template>
-            </el-table-column>
-            <el-table-column
-                label="鎿嶄綔"
-                min-width="100"
-                fixed="right"
-            >
-                <template slot-scope="{row}">
-                    <el-button type="text" v-if="row.bindStatus === 0">缁戝畾</el-button>
-                    <el-button type="text" v-if="row.bindStatus === 1">瑙g粦</el-button>
+                    <el-link v-if="row.status === 0">鎴愬姛</el-link>
+                    <el-link type="danger" v-if="row.status === 1">澶辫触</el-link>
                 </template>
             </el-table-column>
         </el-table>
@@ -90,8 +74,7 @@
 <script>
   import BaseOpera from '@/components/base/BaseOpera'
   import GlobalWindow from '@/components/common/GlobalWindow'
-  import { fetchList } from '@/api/business/jkCabinetGrid'
-  import { allList } from '@/api/business/cars'
+  import { fetchList, exportExcel } from '@/api/business/jkCabinetLog'
   export default {
     name: 'BorrowingAndReturningRecords',
     extends: BaseOpera,
@@ -101,10 +84,13 @@
         id: null,
         info: null,
         searchForm: {
-          keyId: '',
+          memberName: '',
           status: '',
-          bindStatus: ''
+          roleType: '',
+          startDate: '',
+          editDate: ''
         },
+        date: [],
         list: [],
         page: 1,
         total: 0,
@@ -118,14 +104,26 @@
         this.getList()
         this.visible = true
       },
+      setDate(e) {
+        if (e && e.length > 1) {
+          this.searchForm.startDate = e[0]
+          this.searchForm.editDate = e[1]
+        } else {
+          this.searchForm.startDate = ''
+          this.searchForm.editDate = ''
+        }
+      },
       handleCurrentChange(e) {
         this.page = e
         this.getList()
       },
       reset() {
-        this.searchForm.keyId = ''
+        this.searchForm.memberName = ''
         this.searchForm.status = ''
-        this.searchForm.workingStatus = ''
+        this.searchForm.roleType = ''
+        this.searchForm.startDate = ''
+        this.searchForm.editDate = ''
+        this.date = []
         this.page = 1
         this.getList()
       },
@@ -135,18 +133,41 @@
           capacity: 10,
           page: this.page,
           model: {
-            cabinetId: this.id,
-            keyId: this.searchForm.keyId,
+            memberName: this.searchForm.memberName,
             status: this.searchForm.status,
-            workingStatus: this.searchForm.workingStatus
+            roleType: this.searchForm.roleType,
+            startDate: this.searchForm.startDate,
+            editDate: this.searchForm.editDate,
           }
         }).then(res => {
-          console.log(res)
           this.list = res.records
           this.total = res.total
         }).finally(() => {
           this.loading = false
         })
+      },
+      exports() {
+        this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
+          .then(() => {
+            exportExcel({
+              page: 1,
+              capacity: 1000000,
+              model: {
+                memberName: this.searchForm.memberName,
+                status: this.searchForm.status,
+                roleType: this.searchForm.roleType,
+                startDate: this.searchForm.startDate,
+                editDate: this.searchForm.editDate,
+              }
+            })
+              .then(response => {
+                this.download(response)
+              })
+              .catch(e => {
+                this.$tip.apiFailed(e)
+              })
+          })
+          .catch(() => {})
       }
     }
   }
diff --git a/admin/src/components/business/OperaJkIccardWindow.vue b/admin/src/components/business/OperaJkIccardWindow.vue
index 6136bb1..3d9b329 100644
--- a/admin/src/components/business/OperaJkIccardWindow.vue
+++ b/admin/src/components/business/OperaJkIccardWindow.vue
@@ -1,43 +1,37 @@
 <template>
   <GlobalWindow
+    width="50%"
     :title="title"
     :visible.sync="visible"
     :confirm-working="isWorking"
     @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules">
-      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      <el-form-item label="IC鍗″彿" prop="code">
+        <el-input v-model="form.code" :disabled="form.id" placeholder="璇疯緭鍏C鍗″彿锛屽彲浣跨敤璇诲崱鍣�/鎵爜鏋�" v-trim/>
       </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      <el-form-item label="韬唤绫诲瀷" prop="userType">
+        <el-radio-group v-model="form.userType" :disabled="form.id" @change="getUserAll">
+          <el-radio :label="0">鍙告満</el-radio>
+          <el-radio :label="1">鏍¢獙浜哄憳</el-radio>
+        </el-radio-group>
       </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      <el-form-item label="鍏宠仈鐢ㄦ埛" prop="memberId">
+        <div style="width: 100%; display: flex; flex-direction: column;">
+          <el-select v-model="form.memberId" placeholder="璇烽�夋嫨">
+            <el-option v-for="(item, index) in userAll" :key="index" :label="item.name" :value="item.id"></el-option>
+          </el-select>
+          <span style="color: #999999; margin-top: 5px;">绯荤粺浼氶�氳繃IC鍏宠仈鐢ㄦ埛锛屼笌閽ュ寵鏌滀笂鐨勮溅杈嗙殑鍙告満/楠岃瘉浜哄憳淇℃伅杩涜鏍¢獙</span>
+        </div>
       </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="info">
-        <el-input v-model="form.info" placeholder="璇疯緭鍏ュ娉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="浜哄憳缂栫爜缂栫爜锛堝叧鑱攎ember)" prop="memberId">
-        <el-input v-model="form.memberId" placeholder="璇疯緭鍏ヤ汉鍛樼紪鐮佺紪鐮侊紙鍏宠仈member)" v-trim/>
-      </el-form-item>
-      <el-form-item label="缂栫爜" prop="code">
-        <el-input v-model="form.code" placeholder="璇疯緭鍏ョ紪鐮�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鐘舵�� 0绂佺敤 1鍚敤" prop="status">
-        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0绂佺敤 1鍚敤" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍗″悕绉�" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ崱鍚嶇О" v-trim/>
-      </el-form-item>
-      <el-form-item label="閽ュ寵鏌滅紪鐮侊紙鍏宠仈jk_cabinet)" prop="cabinetId">
-        <el-input v-model="form.cabinetId" placeholder="璇疯緭鍏ラ挜鍖欐煖缂栫爜锛堝叧鑱攋k_cabinet)" v-trim/>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-switch
+          v-model="form.status"
+          active-color="#13ce66"
+          inactive-color="#ff4949"
+          :active-value="1"
+          :inactive-value="0">
+        </el-switch>
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -46,6 +40,7 @@
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
+import { allList } from '@/api/business/member'
 export default {
   name: 'OperaJkIccardWindow',
   extends: BaseOpera,
@@ -55,21 +50,24 @@
       // 琛ㄥ崟鏁版嵁
       form: {
         id: null,
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        info: '',
         memberId: '',
         code: '',
-        status: '',
-        name: '',
-        cabinetId: ''
+        status: 1,
+        userType: 0
       },
       // 楠岃瘉瑙勫垯
       rules: {
-      }
+        code: [
+          { required: true, message: '璇疯緭鍏C鍗″彿', trigger: 'blur' }
+        ],
+        userType: [
+          { required: true, message: '璇烽�夋嫨韬唤', trigger: 'blur' }
+        ],
+        memberId: [
+          { required: true, message: '璇烽�夋嫨鍏宠仈鐢ㄦ埛', trigger: 'blur' }
+        ]
+      },
+      userAll: []
     }
   },
   created () {
@@ -77,6 +75,36 @@
       api: '/business/jkIccard',
       'field.id': 'id'
     })
+  },
+  methods: {
+    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
+        })
+        this.getUserAll()
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+        this.getUserAll()
+      })
+    },
+    getUserAll() {
+      allList({
+        type: 2,
+        queryAuth: this.form.userType === 1 ? 1 : 0
+      }).then(res => {
+        this.userAll = res
+      })
+    }
   }
 }
 </script>
diff --git a/admin/src/components/business/OperaJkKeysWindow.vue b/admin/src/components/business/OperaJkKeysWindow.vue
index 964ba35..099b5e2 100644
--- a/admin/src/components/business/OperaJkKeysWindow.vue
+++ b/admin/src/components/business/OperaJkKeysWindow.vue
@@ -15,7 +15,7 @@
           <el-option
             v-for="item in carAll"
             :key="item.id"
-            :label="item.name"
+            :label="item.code"
             :value="item.id">
           </el-option>
         </el-select>
@@ -80,7 +80,7 @@
     getCars() {
       allList({ type: 0 })
         .then(res => {
-          console.log(res)
+          this.carAll = res
         })
     }
   }
diff --git a/admin/src/components/business/OperaJkVersionWindow.vue b/admin/src/components/business/OperaJkVersionWindow.vue
index 101b354..83a120b 100644
--- a/admin/src/components/business/OperaJkVersionWindow.vue
+++ b/admin/src/components/business/OperaJkVersionWindow.vue
@@ -1,52 +1,43 @@
 <template>
   <GlobalWindow
     :title="title"
+    width="50%"
     :visible.sync="visible"
     :confirm-working="isWorking"
     @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules">
-      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="info">
-        <el-input v-model="form.info" placeholder="璇疯緭鍏ュ娉�" v-trim/>
-      </el-form-item>
       <el-form-item label="鐗堟湰鍙�" prop="versionInfo">
         <el-input v-model="form.versionInfo" placeholder="璇疯緭鍏ョ増鏈彿" v-trim/>
       </el-form-item>
-      <el-form-item label="瀹夎鍖呰矾寰�" prop="fileUrl">
-        <el-input v-model="form.fileUrl" placeholder="璇疯緭鍏ュ畨瑁呭寘璺緞" v-trim/>
-      </el-form-item>
-      <el-form-item label="瀹夎鐗堝悕绉�" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ畨瑁呯増鍚嶇О" v-trim/>
+      <el-form-item label="瀹夎鍖�" prop="fileUrl">
+        <div style="width: 100%; height: 1px;"></div>
+        <el-upload
+          class="upload-demo"
+          accept=".APK,.apk"
+          :limit="1"
+          :action="uploadImgUrl"
+          :data="uploadData"
+          :on-success="handleSuccess"
+          :on-error="uploadError"
+          :on-remove="handleRemove"
+          :on-exceed="uploadExceed"
+          :file-list="fileList">
+          <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
+          <div slot="tip" class="el-upload__tip">鏀寔涓婁紶APK鏂囦欢锛屽崟娆′笂浼�<2GB</div>
+        </el-upload>
       </el-form-item>
       <el-form-item label="鏇存柊鎻忚堪" prop="content">
-        <el-input v-model="form.content" placeholder="璇疯緭鍏ユ洿鏂版弿杩�" v-trim/>
+        <el-input type="textarea" :rows="5" maxlength="100" show-word-limit v-model="form.content" placeholder="璇疯緭鍏ユ洿鏂版弿杩�" v-trim/>
       </el-form-item>
-      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏇存柊鏍囬" prop="title">
-        <el-input v-model="form.title" placeholder="璇疯緭鍏ユ洿鏂版爣棰�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏄惁寮哄埗鏇存柊 0鍚� 1鏄�" prop="isForce">
-        <el-input v-model="form.isForce" placeholder="璇疯緭鍏ユ槸鍚﹀己鍒舵洿鏂� 0鍚� 1鏄�" v-trim/>
-      </el-form-item>
-      <el-form-item label="骞冲彴绫诲瀷 0Android 1IOS" prop="type">
-        <el-input v-model="form.type" placeholder="璇疯緭鍏ュ钩鍙扮被鍨� 0Android 1IOS" v-trim/>
+      <el-form-item label="鏄惁寮哄埗鏇存柊" prop="isForce">
+        <el-switch
+          v-model="form.isForce"
+          active-color="#13ce66"
+          inactive-color="#ff4949"
+          :active-value="1"
+          :inactive-value="0">
+        </el-switch>
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -61,26 +52,32 @@
   components: { GlobalWindow },
   data () {
     return {
+      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload',
       // 琛ㄥ崟鏁版嵁
       form: {
         id: null,
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        info: '',
         versionInfo: '',
         fileUrl: '',
-        name: '',
         content: '',
-        sortnum: '',
-        title: '',
-        isForce: '',
-        type: ''
+        fileSize: '',
+        name: '',
+        isForce: 1
       },
       // 楠岃瘉瑙勫垯
       rules: {
+        versionInfo: [
+          { required: true, message: '璇疯緭鍏ョ増鏈彿', trigger: 'blur' }
+        ],
+        fileUrl: [
+          { required: true, message: '璇蜂笂浼犲畨瑁呭寘', trigger: 'blur' }
+        ],
+        content: [
+          { required: true, message: '璇疯緭鍏ユ洿鏂版弿杩�', trigger: 'blur' }
+        ]
+      },
+      fileList: [],
+      uploadData: {
+        folder: 'appFile'
       }
     }
   },
@@ -89,6 +86,70 @@
       api: '/business/jkVersion',
       'field.id': 'id'
     })
+  },
+  methods: {
+    open (title, target) {
+      this.title = title
+      this.fileList = []
+      this.form.fileSize = ''
+      this.form.name = ''
+      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]
+        }
+        if (this.form.fileUrl) {
+          this.fileList.push({
+            name: this.form.name,
+            url: target.fullFileUrl
+          })
+        }
+      })
+    },
+    handleSuccess(res, file) {
+      if (res.code == 200) {
+        let { data } = res
+        this.form.fileUrl = data.imgaddr
+        this.form.fileSize = data.fileSize
+        this.form.name = data.originname
+        this.fileList.push({
+          name: data.originname,
+          url: data.url
+        })
+        this.$message.success('涓婁紶鎴愬姛')
+      } else {
+        this.$message.error('涓婁紶澶辫触')
+        this.form.fileUrl = ''
+        this.fileList = []
+        this.form.name = ''
+        this.form.fileSize = ''
+      }
+    },
+    uploadError() {
+      this.form.fileUrl = ''
+      this.fileList = []
+      this.form.name = ''
+      this.form.fileSize = ''
+      this.$message.error('涓婁紶澶辫触')
+    },
+    uploadExceed() {
+      this.$message.error('鏈�澶氬彧鑳戒笂浼犱竴涓枃浠�')
+    },
+    handleRemove() {
+      this.form.fileUrl = ''
+      this.fileList = []
+      this.form.name = ''
+      this.form.fileSize = ''
+    }
   }
 }
 </script>
diff --git a/admin/src/components/business/cabinetDetails.vue b/admin/src/components/business/cabinetDetails.vue
index e858232..8e324d7 100644
--- a/admin/src/components/business/cabinetDetails.vue
+++ b/admin/src/components/business/cabinetDetails.vue
@@ -38,12 +38,34 @@
             :data="list"
             stripe
         >
-            <el-table-column prop="code" label="鏌滄牸缂栧彿" min-width="100px"></el-table-column>
+            <el-table-column prop="code" label="鏌滄牸缂栫爜" min-width="100px"></el-table-column>
             <el-table-column prop="cabinetName" label="鎵�灞為挜鍖欐煖" min-width="100px"></el-table-column>
-            <el-table-column prop="keyId" label="缁戝畾閽ュ寵" min-width="100px"></el-table-column>
+            <el-table-column prop="keyId" label="缁戝畾閽ュ寵" min-width="100px">
+                <template slot-scope="{row}">
+                    <el-select v-model="row.keyId" placeholder="璇烽�夋嫨">
+                        <el-option
+                            v-for="item in keysAll"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.id">
+                        </el-option>
+                    </el-select>
+                </template>
+            </el-table-column>
+            <el-table-column label="鏉垮彿" min-width="100px">
+                <template slot-scope="{row}">
+                    <el-input v-model="row.boardCode" placeholder="璇疯緭鍏ユ澘鍙�"></el-input>
+                </template>
+            </el-table-column>
+            <el-table-column label="閫氶亾鍙�" min-width="100px">
+                <template slot-scope="{row}">
+                    <el-input v-model="row.channelCode" placeholder="璇疯緭鍏ラ�氶亾鍙�"></el-input>
+                </template>
+            </el-table-column>
             <el-table-column label="鐘舵��" min-width="100px">
                 <template slot-scope="{row}">
                     <el-switch
+                        @change="changeStatus($event, row.id)"
                         v-model="row.status"
                         active-color="#13ce66"
                         inactive-color="#ff4949"
@@ -64,33 +86,14 @@
                     <el-link type="success" v-if="row.bindStatus === 1">宸茬粦瀹�</el-link>
                 </template>
             </el-table-column>
-            <el-table-column
-                label="鎿嶄綔"
-                min-width="100"
-                fixed="right"
-            >
-                <template slot-scope="{row}">
-                    <el-button type="text" v-if="row.bindStatus === 0">缁戝畾</el-button>
-                    <el-button type="text" v-if="row.bindStatus === 1">瑙g粦</el-button>
-                </template>
-            </el-table-column>
         </el-table>
-        <div style="width: 100%; text-align: right; margin-top: 20px">
-            <el-pagination
-                @current-change="handleCurrentChange"
-                :current-page="page"
-                :page-size="10"
-                layout="total, prev, pager, next, jumper"
-                :total="total">
-            </el-pagination>
-        </div>
     </GlobalWindow>
 </template>
 
 <script>
   import BaseOpera from '@/components/base/BaseOpera'
   import GlobalWindow from '@/components/common/GlobalWindow'
-  import { fetchList } from '@/api/business/jkCabinetGrid'
+  import { fetchList, updateStatusById } from '@/api/business/jkCabinetGrid'
   export default {
     name: 'cabinetDetails',
     extends: BaseOpera,
@@ -105,8 +108,7 @@
           bindStatus: ''
         },
         list: [],
-        page: 1,
-        total: 0,
+        keysAll: [],
         loading: false
       }
     },
@@ -117,6 +119,12 @@
         this.getList()
         this.visible = true
       },
+      changeStatus(status, id) {
+        updateStatusById({ id, status })
+          .then(res => {
+            this.getList()
+          })
+      },
       handleCurrentChange(e) {
         this.page = e
         this.getList()
@@ -125,14 +133,13 @@
         this.searchForm.keyId = ''
         this.searchForm.status = ''
         this.searchForm.workingStatus = ''
-        this.page = 1
         this.getList()
       },
       getList() {
         this.loading = true
         fetchList({
-          capacity: 10,
-          page: this.page,
+          capacity: 99999,
+          page: 1,
           model: {
             cabinetId: this.id,
             keyId: this.searchForm.keyId,
@@ -140,9 +147,7 @@
             workingStatus: this.searchForm.workingStatus
           }
         }).then(res => {
-          console.log(res)
           this.list = res.records
-          this.total = res.total
         }).finally(() => {
           this.loading = false
         })
diff --git a/admin/src/views/business/jkCabinet.vue b/admin/src/views/business/jkCabinet.vue
index e4c7b55..d6f7b5c 100644
--- a/admin/src/views/business/jkCabinet.vue
+++ b/admin/src/views/business/jkCabinet.vue
@@ -60,6 +60,7 @@
           <template slot-scope="{row}">
             <el-switch
               v-model="row.status"
+              @change="changeStatus($event, row.id)"
               active-color="#13ce66"
               inactive-color="#ff4949"
               :active-value="0"
@@ -101,6 +102,7 @@
 import Pagination from '@/components/common/Pagination'
 import OperaJkCabinetWindow from '@/components/business/OperaJkCabinetWindow'
 import CabinetDetails from '@/components/business/cabinetDetails'
+import { updateStatusById } from '@/api/business/jkCabinet'
 export default {
   name: 'JkCabinet',
   extends: BaseTable,
@@ -124,6 +126,14 @@
       'field.main': 'id'
     })
     this.search()
+  },
+  methods: {
+    changeStatus(status, id) {
+      updateStatusById({ id, status })
+        .then(res => {
+          this.search()
+        })
+    }
   }
 }
 </script>
diff --git a/admin/src/views/business/jkCabinetLog.vue b/admin/src/views/business/jkCabinetLog.vue
index 17d5c87..6bf29af 100644
--- a/admin/src/views/business/jkCabinetLog.vue
+++ b/admin/src/views/business/jkCabinetLog.vue
@@ -2,53 +2,44 @@
   <TableLayout :permissions="['business:jkcabinetlog: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 label="寮�闂ㄦ椂闂�" prop="date">
+        <el-date-picker
+          v-model="date"
+          @change="setDate"
+          type="daterange"
+          range-separator="鑷�"
+          start-placeholder="寮�濮嬫棩鏈�"
+          end-placeholder="缁撴潫鏃ユ湡"
+          format="yyyy 骞� MM 鏈� dd 鏃�"
+          value-format="yyyy-MM-dd">
+        </el-date-picker>
       </el-form-item>
-      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
+      <el-form-item label="鎿嶄綔浜�" prop="memberName">
+        <el-input v-model="searchForm.memberName" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
+      <el-form-item label="閽ュ寵鏌�" prop="cabinetId">
+        <el-select v-model="searchForm.cabinetId" placeholder="璇烽�夋嫨" @change="search">
+          <el-option
+            v-for="item in keysAll"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id">
+          </el-option>
+        </el-select>
       </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
+      <el-form-item label="楠岃瘉鏂瑰紡" prop="authType">
+        <el-select v-model="searchForm.authType" placeholder="璇烽�夋嫨" @change="search">
+          <el-option label="鍏ㄩ儴" value=""></el-option>
+          <el-option label="鍒疯劯" :value="0"></el-option>
+          <el-option label="鍒峰崱" :value="1"></el-option>
+        </el-select>
       </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="info">
-        <el-input v-model="searchForm.info" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="閽ュ寵鏌滅紪鐮侊紙鍏宠仈jk_cabinet)" prop="cabinetId">
-        <el-input v-model="searchForm.cabinetId" placeholder="璇疯緭鍏ラ挜鍖欐煖缂栫爜锛堝叧鑱攋k_cabinet)" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="閽ュ寵鏌滄牸缂栫爜(鍏宠仈jk_cabinet_grid)" prop="gridId">
-        <el-input v-model="searchForm.gridId" placeholder="璇疯緭鍏ラ挜鍖欐煖鏍肩紪鐮�(鍏宠仈jk_cabinet_grid)" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="楠岃瘉鏂瑰紡 0鍒疯劯 1鍒峰崱" prop="authType">
-        <el-input v-model="searchForm.authType" placeholder="璇疯緭鍏ラ獙璇佹柟寮� 0鍒疯劯 1鍒峰崱" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="杞﹁締缂栫爜锛堝叧鑱攃ars)" prop="carId">
-        <el-input v-model="searchForm.carId" placeholder="璇疯緭鍏ヨ溅杈嗙紪鐮侊紙鍏宠仈cars)" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="閽ュ寵缂栫爜(鍏宠仈jk_keys)" prop="keyId">
-        <el-input v-model="searchForm.keyId" placeholder="璇疯緭鍏ラ挜鍖欑紪鐮�(鍏宠仈jk_keys)" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="浜哄憳缂栫爜锛堝叧鑱攎ember)" prop="memberId">
-        <el-input v-model="searchForm.memberId" placeholder="璇疯緭鍏ヤ汉鍛樼紪鐮侊紙鍏宠仈member)" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="閽ュ寵淇℃伅锛堣溅鐗屽彿-閽ュ寵缂栫爜锛�" prop="keyInfo">
-        <el-input v-model="searchForm.keyInfo" placeholder="璇疯緭鍏ラ挜鍖欎俊鎭紙杞︾墝鍙�-閽ュ寵缂栫爜锛�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="棰嗗彇瑙勫垯 0闅忚溅 1闅忔淳杞﹀崟" prop="roleType">
-        <el-input v-model="searchForm.roleType" placeholder="璇疯緭鍏ラ鍙栬鍒� 0闅忚溅 1闅忔淳杞﹀崟" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鐘舵�� 0鎴愬姛 1澶辫触" prop="status">
-        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鎴愬姛 1澶辫触" @keypress.enter.native="search"></el-input>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @change="search">
+          <el-option label="鍏ㄩ儴" value=""></el-option>
+          <el-option label="鎴愬姛" :value="0"></el-option>
+          <el-option label="澶辫触" :value="1"></el-option>
+        </el-select>
       </el-form-item>
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
@@ -58,42 +49,27 @@
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:jkcabinetlog:create', 'business:jkcabinetlog:delete']">
-        <li><el-button type="primary" @click="$refs.operaJkCabinetLogWindow.open('鏂板缓閽ュ寵鏌滃紑鍏抽棬璁板綍')" icon="el-icon-plus" v-permissions="['business:jkcabinetlog:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkcabinetlog: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="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
-        <el-table-column prop="info" label="澶囨敞" min-width="100px"></el-table-column>
-        <el-table-column prop="cabinetId" label="閽ュ寵鏌滅紪鐮侊紙鍏宠仈jk_cabinet)" min-width="100px"></el-table-column>
-        <el-table-column prop="gridId" label="閽ュ寵鏌滄牸缂栫爜(鍏宠仈jk_cabinet_grid)" min-width="100px"></el-table-column>
-        <el-table-column prop="authType" label="楠岃瘉鏂瑰紡 0鍒疯劯 1鍒峰崱" min-width="100px"></el-table-column>
-        <el-table-column prop="carId" label="杞﹁締缂栫爜锛堝叧鑱攃ars)" min-width="100px"></el-table-column>
-        <el-table-column prop="keyId" label="閽ュ寵缂栫爜(鍏宠仈jk_keys)" min-width="100px"></el-table-column>
-        <el-table-column prop="memberId" label="浜哄憳缂栫爜锛堝叧鑱攎ember)" min-width="100px"></el-table-column>
-        <el-table-column prop="keyInfo" label="閽ュ寵淇℃伅锛堣溅鐗屽彿-閽ュ寵缂栫爜锛�" min-width="100px"></el-table-column>
-        <el-table-column prop="roleType" label="棰嗗彇瑙勫垯 0闅忚溅 1闅忔淳杞﹀崟" min-width="100px"></el-table-column>
-        <el-table-column prop="status" label="鐘舵�� 0鎴愬姛 1澶辫触" min-width="100px"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:jkcabinetlog:update', 'business:jkcabinetlog:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          fixed="right"
-        >
+        <el-table-column prop="createDate" label="寮�闂ㄦ椂闂�" min-width="100px"></el-table-column>
+        <el-table-column prop="memberName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
+        <el-table-column label="鏍¢獙鏂瑰紡" min-width="100px">
           <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaJkCabinetLogWindow.open('缂栬緫閽ュ寵鏌滃紑鍏抽棬璁板綍', row)" icon="el-icon-edit" v-permissions="['business:jkcabinetlog:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkcabinetlog:delete']">鍒犻櫎</el-button>
+            <el-link :underline="false" v-if="row.authType === 0">鍒疯劯</el-link>
+            <el-link :underline="false" v-if="row.authType === 1">鍒峰崱</el-link>
+          </template>
+        </el-table-column>
+        <el-table-column prop="cabinetName" label="鎵�灞為挜鍖欐煖" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鏌滄牸缂栧彿" min-width="100px"></el-table-column>
+        <el-table-column prop="isdeleted" label="閽ュ寵" min-width="100px"></el-table-column>
+        <el-table-column label="鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <el-link :underline="false" v-if="row.status === 0">鎴愬姛</el-link>
+            <el-link type="danger" :underline="false" v-if="row.status === 1">澶辫触</el-link>
           </template>
         </el-table-column>
       </el-table>
@@ -114,6 +90,7 @@
 import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
 import OperaJkCabinetLogWindow from '@/components/business/OperaJkCabinetLogWindow'
+import { list } from '@/api/business/jkCabinet'
 export default {
   name: 'JkCabinetLog',
   extends: BaseTable,
@@ -122,23 +99,15 @@
     return {
       // 鎼滅储
       searchForm: {
-        id: '',
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        info: '',
+        endDate: '',
+        startDate: '',
         cabinetId: '',
-        gridId: '',
         authType: '',
-        carId: '',
-        keyId: '',
-        memberId: '',
-        keyInfo: '',
-        roleType: '',
+        memberName: '',
         status: ''
-      }
+      },
+      date: [],
+      keysAll: []
     }
   },
   created () {
@@ -149,6 +118,34 @@
       'field.main': 'id'
     })
     this.search()
+    this.getkeysAll()
+  },
+  methods: {
+    setDate(e) {
+      if (e && e.length > 1) {
+        this.searchForm.startDate = e[0]
+        this.searchForm.endDate = e[1]
+      } else {
+        this.searchForm.startDate = ''
+        this.searchForm.endDate = ''
+      }
+      this.search()
+    },
+    // 鎼滅储妗嗛噸缃�
+    reset () {
+      this.$refs.searchForm.resetFields()
+      this.date = []
+      this.searchForm.startDate = ''
+      this.searchForm.endDate = ''
+      this.search()
+    },
+    getkeysAll() {
+      list({})
+        .then(res => {
+          console.log(res)
+          this.keysAll = res
+        })
+    }
   }
 }
 </script>
diff --git a/admin/src/views/business/jkIccard.vue b/admin/src/views/business/jkIccard.vue
index 3577834..18fbe95 100644
--- a/admin/src/views/business/jkIccard.vue
+++ b/admin/src/views/business/jkIccard.vue
@@ -2,73 +2,63 @@
   <TableLayout :permissions="['business:jkiccard: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 label="鍗″彿" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ崱鍙�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
+      <el-form-item label="濮撳悕" prop="memberName">
+        <el-input v-model="searchForm.memberName" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
+      <el-form-item label="韬唤绫诲瀷" prop="userType">
+        <el-select v-model="searchForm.userType" placeholder="璇烽�夋嫨" @change="search">
+          <el-option label="鍏ㄩ儴" value=""></el-option>
+          <el-option label="鍙告満" :value="0"></el-option>
+          <el-option label="鏍¢獙浜哄憳" :value="1"></el-option>
+        </el-select>
       </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="info">
-        <el-input v-model="searchForm.info" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="浜哄憳缂栫爜缂栫爜锛堝叧鑱攎ember)" prop="memberId">
-        <el-input v-model="searchForm.memberId" placeholder="璇疯緭鍏ヤ汉鍛樼紪鐮佺紪鐮侊紙鍏宠仈member)" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="缂栫爜" prop="code">
-        <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ョ紪鐮�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鐘舵�� 0绂佺敤 1鍚敤" prop="status">
-        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0绂佺敤 1鍚敤" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍗″悕绉�" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ崱鍚嶇О" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="閽ュ寵鏌滅紪鐮侊紙鍏宠仈jk_cabinet)" prop="cabinetId">
-        <el-input v-model="searchForm.cabinetId" placeholder="璇疯緭鍏ラ挜鍖欐煖缂栫爜锛堝叧鑱攋k_cabinet)" @keypress.enter.native="search"></el-input>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @change="search">
+          <el-option label="鍏ㄩ儴" value=""></el-option>
+          <el-option label="绂佺敤" :value="0"></el-option>
+          <el-option label="鍚敤" :value="1"></el-option>
+        </el-select>
       </el-form-item>
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jkiccard:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
       </section>
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:jkiccard:create', 'business:jkiccard:delete']">
-        <li><el-button type="primary" @click="$refs.operaJkIccardWindow.open('鏂板缓閽ュ寵鏌淚C鍗′俊鎭〃')" icon="el-icon-plus" v-permissions="['business:jkiccard:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkiccard:delete']">鍒犻櫎</el-button></li>
+        <li><el-button type="primary" @click="$refs.operaJkIccardWindow.open('鏂板缓IC鍗�')" icon="el-icon-plus" v-permissions="['business:jkiccard:create']">鏂板缓</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="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="code" label="IC鍗″彿" min-width="100px"></el-table-column>
+        <el-table-column label="韬唤绫诲瀷" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.userType === 0">鍙告満</span>
+            <span v-if="row.userType === 1">鏍¢獙浜哄憳</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="memberName" label="鍏宠仈浜哄憳" min-width="100px"></el-table-column>
         <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
-        <el-table-column prop="info" label="澶囨敞" min-width="100px"></el-table-column>
-        <el-table-column prop="memberId" label="浜哄憳缂栫爜缂栫爜锛堝叧鑱攎ember)" min-width="100px"></el-table-column>
-        <el-table-column prop="code" label="缂栫爜" min-width="100px"></el-table-column>
-        <el-table-column prop="status" label="鐘舵�� 0绂佺敤 1鍚敤" min-width="100px"></el-table-column>
-        <el-table-column prop="name" label="鍗″悕绉�" min-width="100px"></el-table-column>
-        <el-table-column prop="cabinetId" label="閽ュ寵鏌滅紪鐮侊紙鍏宠仈jk_cabinet)" min-width="100px"></el-table-column>
+        <el-table-column label="鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <el-switch
+              v-model="row.status"
+              @change="changeStatus($event, row.id)"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="1"
+              :inactive-value="0">
+            </el-switch>
+          </template>
+        </el-table-column>
         <el-table-column
           v-if="containPermissions(['business:jkiccard:update', 'business:jkiccard:delete'])"
           label="鎿嶄綔"
@@ -76,7 +66,7 @@
           fixed="right"
         >
           <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaJkIccardWindow.open('缂栬緫閽ュ寵鏌淚C鍗′俊鎭〃', row)" icon="el-icon-edit" v-permissions="['business:jkiccard:update']">缂栬緫</el-button>
+            <el-button type="text" @click="$refs.operaJkIccardWindow.open('缂栬緫鏂板缓IC鍗�', row)" icon="el-icon-edit" v-permissions="['business:jkiccard:update']">缂栬緫</el-button>
             <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkiccard:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
@@ -98,6 +88,7 @@
 import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
 import OperaJkIccardWindow from '@/components/business/OperaJkIccardWindow'
+import { updateStatusById } from '@/api/business/jkIccard'
 export default {
   name: 'JkIccard',
   extends: BaseTable,
@@ -106,18 +97,10 @@
     return {
       // 鎼滅储
       searchForm: {
-        id: '',
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        info: '',
-        memberId: '',
-        code: '',
-        status: '',
         name: '',
-        cabinetId: ''
+        memberName: '',
+        userType: '',
+        status: ''
       }
     }
   },
@@ -129,6 +112,14 @@
       'field.main': 'id'
     })
     this.search()
+  },
+  methods: {
+    changeStatus(status, id) {
+      updateStatusById({ id, status })
+        .then(res => {
+          this.search()
+        })
+    }
   }
 }
 </script>
diff --git a/admin/src/views/business/jkKeys.vue b/admin/src/views/business/jkKeys.vue
index 6762ccc..23f116e 100644
--- a/admin/src/views/business/jkKeys.vue
+++ b/admin/src/views/business/jkKeys.vue
@@ -5,8 +5,15 @@
       <el-form-item label="閽ュ寵缂栧彿" prop="code">
         <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ラ挜鍖欑紪鍙�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鎵�灞炶溅杈�" prop="carCode">
-        <el-input v-model="searchForm.carCode" placeholder="璇疯緭鍏ユ墍灞炶溅杈�" @keypress.enter.native="search"></el-input>
+      <el-form-item label="鎵�灞炶溅杈�" prop="carId">
+        <el-select v-model="searchForm.carId" placeholder="璇烽�夋嫨" @change="search">
+          <el-option
+            v-for="item in carAll"
+            :key="item.id"
+            :label="item.code"
+            :value="item.id">
+          </el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="鐘舵��" prop="status">
         <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @change="search">
@@ -37,10 +44,10 @@
       >
         <el-table-column type="selection" width="55"></el-table-column>
         <el-table-column prop="code" label="閽ュ寵缂栧彿" min-width="100px"></el-table-column>
-        <el-table-column prop="carName" label="鎵�灞炶溅杈�" min-width="100px"></el-table-column>
+        <el-table-column prop="carCode" label="鎵�灞炶溅杈�" min-width="100px"></el-table-column>
         <el-table-column prop="rfidLable" label="RFID鏍囩" min-width="100px"></el-table-column>
-        <el-table-column prop="rfidLable" label="缁戝畾閽ュ寵鏌�" min-width="100px"></el-table-column>
-        <el-table-column prop="rfidLable" label="瀛樻斁浣嶇疆" min-width="100px"></el-table-column>
+        <el-table-column prop="cabinetName" label="缁戝畾閽ュ寵鏌�" min-width="100px"></el-table-column>
+        <el-table-column prop="gridCode" label="瀛樻斁浣嶇疆" min-width="100px"></el-table-column>
         <el-table-column label="缁戝畾鐘舵��" min-width="100px">
           <template slot-scope="{row}">
             <span v-if="row.isBinding === 0">鏈粦瀹�</span>
@@ -58,12 +65,12 @@
         <el-table-column
           v-if="containPermissions(['business:jkkeys:update', 'business:jkkeys:delete'])"
           label="鎿嶄綔"
-          min-width="120"
+          min-width="150"
           fixed="right"
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.borrowingAndReturningRecords.open('鍊熻繕璁板綍', row)">棰嗗彇璁板綍</el-button>
-            <el-button type="text" @click="$refs.operaJkKeysWindow.open('缂栬緫閽ュ寵鍩烘湰淇℃伅琛�', row)" v-permissions="['business:jkkeys:update']">缂栬緫</el-button>
+            <el-button type="text" @click="$refs.operaJkKeysWindow.open('缂栬緫閽ュ寵淇℃伅', row)" v-permissions="['business:jkkeys:update']">缂栬緫</el-button>
             <el-button type="text" @click="deleteById(row)" v-permissions="['business:jkkeys:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
@@ -88,6 +95,7 @@
 import Pagination from '@/components/common/Pagination'
 import OperaJkKeysWindow from '@/components/business/OperaJkKeysWindow'
 import BorrowingAndReturningRecords from '@/components/business/BorrowingAndReturningRecords'
+import { allList } from '@/api/business/cars'
 export default {
   name: 'JkKeys',
   extends: BaseTable,
@@ -97,9 +105,10 @@
       // 鎼滅储
       searchForm: {
         code: '',
-        carCode: '',
+        carId: '',
         status: ''
-      }
+      },
+      carAll: []
     }
   },
   created () {
@@ -110,6 +119,15 @@
       'field.main': 'id'
     })
     this.search()
+    this.getCars()
+  },
+  methods: {
+    getCars() {
+      allList({ type: 0 })
+        .then(res => {
+          this.carAll = res
+        })
+    }
   }
 }
 </script>
diff --git a/admin/src/views/business/jkVersion.vue b/admin/src/views/business/jkVersion.vue
index 18e08f8..fc1e505 100644
--- a/admin/src/views/business/jkVersion.vue
+++ b/admin/src/views/business/jkVersion.vue
@@ -2,85 +2,50 @@
   <TableLayout :permissions="['business:jkversion: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="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
-      </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="info">
-        <el-input v-model="searchForm.info" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
       <el-form-item label="鐗堟湰鍙�" prop="versionInfo">
         <el-input v-model="searchForm.versionInfo" placeholder="璇疯緭鍏ョ増鏈彿" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="瀹夎鍖呰矾寰�" prop="fileUrl">
-        <el-input v-model="searchForm.fileUrl" placeholder="璇疯緭鍏ュ畨瑁呭寘璺緞" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="瀹夎鐗堝悕绉�" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ畨瑁呯増鍚嶇О" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏇存柊鎻忚堪" prop="content">
-        <el-input v-model="searchForm.content" placeholder="璇疯緭鍏ユ洿鏂版弿杩�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="searchForm.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏇存柊鏍囬" prop="title">
-        <el-input v-model="searchForm.title" placeholder="璇疯緭鍏ユ洿鏂版爣棰�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏄惁寮哄埗鏇存柊 0鍚� 1鏄�" prop="isForce">
-        <el-input v-model="searchForm.isForce" placeholder="璇疯緭鍏ユ槸鍚﹀己鍒舵洿鏂� 0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="骞冲彴绫诲瀷 0Android 1IOS" prop="type">
-        <el-input v-model="searchForm.type" placeholder="璇疯緭鍏ュ钩鍙扮被鍨� 0Android 1IOS" @keypress.enter.native="search"></el-input>
+      <el-form-item label="鏄惁寮哄埗鏇存柊" prop="isForce">
+        <el-select v-model="searchForm.isForce" placeholder="璇烽�夋嫨" @change="search">
+          <el-option label="鍏ㄩ儴" value=""></el-option>
+          <el-option label="鍚�" :value="0"></el-option>
+          <el-option label="鏄�" :value="1"></el-option>
+        </el-select>
       </el-form-item>
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jkversion:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
       </section>
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:jkversion:create', 'business:jkversion:delete']">
-        <li><el-button type="primary" @click="$refs.operaJkVersionWindow.open('鏂板缓浜ゆ帶-閽ュ寵鏌滅粓绔増鏈俊鎭〃')" icon="el-icon-plus" v-permissions="['business:jkversion:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkversion:delete']">鍒犻櫎</el-button></li>
+        <li><el-button type="primary" @click="$refs.operaJkVersionWindow.open('鏂板缓鐗堟湰')" icon="el-icon-plus" v-permissions="['business:jkversion:create']">鏂板缓</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="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
-        <el-table-column prop="info" label="澶囨敞" min-width="100px"></el-table-column>
         <el-table-column prop="versionInfo" label="鐗堟湰鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="fileUrl" label="瀹夎鍖呰矾寰�" min-width="100px"></el-table-column>
-        <el-table-column prop="name" label="瀹夎鐗堝悕绉�" min-width="100px"></el-table-column>
+        <el-table-column label="骞冲彴绫诲瀷" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.type === 0">Android</span>
+            <span v-if="row.type === 1">IOS</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="content" label="鏇存柊鎻忚堪" min-width="100px"></el-table-column>
-        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="title" label="鏇存柊鏍囬" min-width="100px"></el-table-column>
-        <el-table-column prop="isForce" label="鏄惁寮哄埗鏇存柊 0鍚� 1鏄�" min-width="100px"></el-table-column>
-        <el-table-column prop="type" label="骞冲彴绫诲瀷 0Android 1IOS" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="瀹夎鍖�" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="鏂囦欢澶у皬" min-width="100px"></el-table-column>
+        <el-table-column label="鏄惁寮哄埗鏇存柊" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.isForce === 0">鍚�</span>
+            <span v-if="row.isForce === 1">鏄�</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createUserName" label="鍒涘缓鑰�" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
         <el-table-column
           v-if="containPermissions(['business:jkversion:update', 'business:jkversion:delete'])"
           label="鎿嶄綔"
@@ -88,7 +53,7 @@
           fixed="right"
         >
           <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaJkVersionWindow.open('缂栬緫浜ゆ帶-閽ュ寵鏌滅粓绔増鏈俊鎭〃', row)" icon="el-icon-edit" v-permissions="['business:jkversion:update']">缂栬緫</el-button>
+            <el-button type="text" @click="$refs.operaJkVersionWindow.open('缂栬緫鐗堟湰', row)" icon="el-icon-edit" v-permissions="['business:jkversion:update']">缂栬緫</el-button>
             <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkversion:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
@@ -118,21 +83,8 @@
     return {
       // 鎼滅储
       searchForm: {
-        id: '',
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        info: '',
         versionInfo: '',
-        fileUrl: '',
-        name: '',
-        content: '',
-        sortnum: '',
-        title: '',
-        isForce: '',
-        type: ''
+        isForce: ''
       }
     }
   },
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index 765d208..12a0bb7 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -278,7 +278,7 @@
         align-items: center;
         justify-content: center;
         border-radius: 4px;
-        width: 186px;
+        width: 208px;
         display: flex;
         margin-bottom: 12px;
       }

--
Gitblit v1.9.3