From 145dbc2a4f5bafcb432fb35d7bc91101aa3318d8 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 13 十月 2025 10:15:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao

---
 admin/src/components/business/cabinetDetails.vue |  199 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 199 insertions(+), 0 deletions(-)

diff --git a/admin/src/components/business/cabinetDetails.vue b/admin/src/components/business/cabinetDetails.vue
new file mode 100644
index 0000000..f08a6ba
--- /dev/null
+++ b/admin/src/components/business/cabinetDetails.vue
@@ -0,0 +1,199 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        :visible.sync="visible"
+        :withFooter="false"
+    >
+        <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
+            <el-form-item label="閽ュ寵" prop="keyCode">
+                <el-input v-model="searchForm.keyCode" placeholder="璇疯緭鍏ラ挜鍖欑紪鐮佹垨鍚嶇О" @keypress.enter.native="getList"></el-input>
+            </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-select>
+            </el-form-item>
+            <el-form-item>
+                <el-button type="primary" @click="getList">鎼滅储</el-button>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="reset">閲嶇疆</el-button>
+            </el-form-item>
+        </el-form>
+        <ul class="toolbar">
+            <li><el-button type="primary" @click="bathUnBindKeys">鎵归噺瑙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">
+                <template slot-scope="{row}">
+                    <el-select v-model="row.keyId" placeholder="璇烽�夋嫨" @change="blurFunc($event, row, 1)">
+                        <el-option
+                            v-for="item in keysAll"
+                            :key="item.id"
+                            :label="item.code"
+                            :value="item.id"
+                            :disabled="item.isBinding === 1">
+                        </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" @blur="blurFunc($event, row, 2)" placeholder="璇疯緭鍏ユ澘鍙�"></el-input>
+                </template>
+            </el-table-column>
+            <el-table-column label="閫氶亾鍙�" min-width="100px">
+                <template slot-scope="{row}">
+                    <el-input v-model="row.channelCode" @blur="blurFunc($event, row, 3)" 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"
+                        :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>
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import { fetchList, updateStatusById, unBindKeys, updateById } from '@/api/business/jkCabinetGrid'
+  import { list } from '@/api/business/jkKeys'
+  export default {
+    name: 'cabinetDetails',
+    extends: BaseOpera,
+    components: { GlobalWindow },
+    data () {
+      return {
+        id: null,
+        info: null,
+        searchForm: {
+          keyCode: '',
+          status: '',
+          bindStatus: ''
+        },
+        list: [],
+        keysAll: [],
+        loading: false
+      }
+    },
+    methods: {
+      open (title, id) {
+        this.title = title
+        this.id = id
+        this.getList()
+        this.getKeysAll()
+        this.visible = true
+      },
+      getKeysAll() {
+        list({  })
+            .then(res => {
+              this.keysAll = res
+            })
+      },
+      blurFunc(e, row, type) {
+        let obj = {
+          id: row.id
+        }
+        if (type === 1) {
+          obj.keyId = row.keyId
+        } else if (type === 2) {
+          obj.boardCode = row.boardCode
+        } else if (type === 3) {
+          obj.channelCode = row.channelCode
+        }
+        updateById(obj)
+            .then(res => {
+              this.getList()
+              if (type === 1) {
+                this.getKeysAll()
+              }
+            })
+      },
+      bathUnBindKeys() {
+        this.$confirm('纭鎵归噺瑙g粦鍚�?', '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          unBindKeys(this.list.map(item => item.id))
+            .then(res => {
+              this.getList()
+            })
+        }).catch(() => {
+
+        });
+      },
+      changeStatus(status, id) {
+        updateStatusById({ id, status })
+          .then(res => {
+            this.getList()
+          })
+      },
+      handleCurrentChange(e) {
+        this.page = e
+        this.getList()
+      },
+      reset() {
+        this.searchForm.keyId = ''
+        this.searchForm.status = ''
+        this.searchForm.workingStatus = ''
+        this.getList()
+      },
+      getList() {
+        this.loading = true
+        fetchList({
+          capacity: 99999,
+          page: 1,
+          model: {
+            cabinetId: this.id,
+            keyId: this.searchForm.keyId,
+            status: this.searchForm.status,
+            workingStatus: this.searchForm.workingStatus
+          }
+        }).then(res => {
+          this.list = res.records
+        }).finally(() => {
+          this.loading = false
+        })
+      }
+    }
+  }
+</script>

--
Gitblit v1.9.3