From 43dc204f89527ba402666ba92345efbfe751f297 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 09 十月 2025 18:32:22 +0800
Subject: [PATCH] 钥匙柜、钥匙
---
admin/src/components/business/BorrowingAndReturningRecords.vue | 153 ++++++++
admin/src/components/business/OperaJkCabinetWindow.vue | 225 ++++++++---
admin/src/views/business/jkCabinet.vue | 179 ++-------
admin/src/components/business/OperaJkKeysWindow.vue | 78 ++--
admin/src/components/business/cabinetDetails.vue | 152 ++++++++
admin/package-lock.json | 160 ++++----
admin/src/views/business/jkKeys.vue | 98 ++---
admin/.env.development | 2
8 files changed, 670 insertions(+), 377 deletions(-)
diff --git a/admin/.env.development b/admin/.env.development
index fd98857..3661935 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -2,7 +2,7 @@
NODE_ENV = 'development'
# VUE_APP_API_URL = 'https://atwl.ahzyssl.com/zhyq_interface'
-VUE_APP_API_URL = 'http://192.168.1.46:10010'
+VUE_APP_API_URL = 'http://192.168.1.54:10010'
# VUE_APP_API_URL = 'https://atwl.ahzyssl.com/zhyq_interface'
# VUE_APP_API_URL = 'http://10.50.250.253:8088/gateway_interface'
diff --git a/admin/package-lock.json b/admin/package-lock.json
index f24166f..1e1e87e 100644
--- a/admin/package-lock.json
+++ b/admin/package-lock.json
@@ -1886,63 +1886,6 @@
"integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
"dev": true
},
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "optional": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "optional": true
- },
- "loader-utils": {
- "version": "2.0.4",
- "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
- "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
- "dev": true,
- "optional": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- }
- },
"ssri": {
"version": "8.0.1",
"resolved": "https://registry.npm.taobao.org/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
@@ -1950,28 +1893,6 @@
"dev": true,
"requires": {
"minipass": "^3.1.1"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "optional": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "vue-loader-v16": {
- "version": "npm:vue-loader@16.8.3",
- "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
- "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
- "dev": true,
- "optional": true,
- "requires": {
- "chalk": "^4.1.0",
- "hash-sum": "^2.0.0",
- "loader-utils": "^2.0.0"
}
}
}
@@ -14207,6 +14128,87 @@
}
}
},
+ "vue-loader-v16": {
+ "version": "npm:vue-loader@16.8.3",
+ "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
+ "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "hash-sum": "^2.0.0",
+ "loader-utils": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "optional": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "optional": true
+ },
+ "loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
"vue-property-decorator": {
"version": "8.5.1",
"resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-8.5.1.tgz",
diff --git a/admin/src/components/business/BorrowingAndReturningRecords.vue b/admin/src/components/business/BorrowingAndReturningRecords.vue
new file mode 100644
index 0000000..caffbf9
--- /dev/null
+++ b/admin/src/components/business/BorrowingAndReturningRecords.vue
@@ -0,0 +1,153 @@
+<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="keyId">
+ <el-input v-model="searchForm.keyId" 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">鎵归噺瑙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 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>
+ </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 { allList } from '@/api/business/cars'
+ export default {
+ name: 'BorrowingAndReturningRecords',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data () {
+ return {
+ id: null,
+ info: null,
+ searchForm: {
+ keyId: '',
+ status: '',
+ bindStatus: ''
+ },
+ list: [],
+ page: 1,
+ total: 0,
+ loading: false
+ }
+ },
+ methods: {
+ open (title, id) {
+ this.title = title
+ this.id = id
+ this.getList()
+ this.visible = true
+ },
+ handleCurrentChange(e) {
+ this.page = e
+ this.getList()
+ },
+ reset() {
+ this.searchForm.keyId = ''
+ this.searchForm.status = ''
+ this.searchForm.workingStatus = ''
+ this.page = 1
+ this.getList()
+ },
+ getList() {
+ this.loading = true
+ fetchList({
+ capacity: 10,
+ page: this.page,
+ model: {
+ cabinetId: this.id,
+ keyId: this.searchForm.keyId,
+ status: this.searchForm.status,
+ workingStatus: this.searchForm.workingStatus
+ }
+ }).then(res => {
+ console.log(res)
+ this.list = res.records
+ this.total = res.total
+ }).finally(() => {
+ this.loading = false
+ })
+ }
+ }
+ }
+</script>
diff --git a/admin/src/components/business/OperaJkCabinetWindow.vue b/admin/src/components/business/OperaJkCabinetWindow.vue
index ee63049..7817588 100644
--- a/admin/src/components/business/OperaJkCabinetWindow.vue
+++ b/admin/src/components/business/OperaJkCabinetWindow.vue
@@ -1,29 +1,13 @@
<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>
- <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>
+ <h3 style="margin: 0 0 20px 0;">璁惧淇℃伅</h3>
<el-form-item label="璁惧缂栧彿" prop="code">
<el-input v-model="form.code" placeholder="璇疯緭鍏ヨ澶囩紪鍙�" v-trim/>
</el-form-item>
@@ -39,53 +23,97 @@
<el-form-item label="閫氳鍦板潃" prop="linkAddr">
<el-input v-model="form.linkAddr" placeholder="璇疯緭鍏ラ�氳鍦板潃" v-trim/>
</el-form-item>
- <el-form-item label="鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭" prop="status">
- <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭" v-trim/>
+ <el-form-item label="绔彛鍙�" prop="port">
+ <el-input v-model="form.port" placeholder="璇疯緭鍏ョ鍙e彿" v-trim/>
</el-form-item>
- <el-form-item label="绔彛" prop="port">
- <el-input v-model="form.port" placeholder="璇疯緭鍏ョ鍙�" v-trim/>
+ <el-form-item label="璁惧绠$悊鍛�" prop="managerIdList">
+ <el-select v-model="form.managerIdList" filterable multiple placeholder="璇烽�夋嫨璁惧绠$悊鍛�">
+ <el-option
+ v-for="item in memberList"
+ :key="item.id"
+ :label="item.name+'-'+item.companyName"
+ :value="item.id">
+ </el-option>
+ </el-select>
</el-form-item>
- <el-form-item label="璁惧绠$悊鍛樼紪鐮侊紙鍏宠仈member)" prop="managerId">
- <el-input v-model="form.managerId" placeholder="璇疯緭鍏ヨ澶囩鐞嗗憳缂栫爜锛堝叧鑱攎ember)" v-trim/>
+ <el-form-item label="浣跨敤鏃堕暱" prop="useTime">
+ <div style="width: 100%; display: flex; align-items: center;">
+ <el-input v-model="form.useTime" placeholder="璇疯緭鍏ュ崟娆℃嬁鍙栭挜鍖欏彲浣跨敤鏃堕暱" v-trim style="flex: 1;"/>
+ <span style="margin-left: 20px;">鍗曚綅锛氬垎閽�</span>
+ </div>
</el-form-item>
- <el-form-item label="浣跨敤鏃堕暱(绉�)" prop="useTime">
- <el-input v-model="form.useTime" placeholder="璇疯緭鍏ヤ娇鐢ㄦ椂闀�(绉�)" v-trim/>
+ <el-form-item label="鍙岄噸楠岃瘉" prop="doubleAuth">
+ <div style="width: 100%; display: flex; align-items: center;">
+ <el-switch
+ v-model="form.doubleAuth"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ :active-value="1"
+ :inactive-value="0">
+ </el-switch>
+ <span style="margin-left: 20px; color: #999999;">寮�鍚弻閲嶈璇佸悗锛岄挜鍖欓鍙栨椂鍏堟牎楠岄獙璇佷汉韬唤锛屽啀鏍¢獙鍙告満韬唤</span>
+ </div>
</el-form-item>
- <el-form-item label="鏄惁鍙岄噸楠岃瘉 0鍚� 1鏄�" prop="doubleAuth">
- <el-input v-model="form.doubleAuth" placeholder="璇疯緭鍏ユ槸鍚﹀弻閲嶉獙璇� 0鍚� 1鏄�" v-trim/>
- </el-form-item>
- <el-form-item label="楠岃瘉浜虹紪鐮侊紙鍏宠仈member)" prop="authMemberId">
- <el-input v-model="form.authMemberId" placeholder="璇疯緭鍏ラ獙璇佷汉缂栫爜锛堝叧鑱攎ember)" v-trim/>
- </el-form-item>
- <el-form-item label="鎺掓暟" prop="rowNum">
- <el-input v-model="form.rowNum" placeholder="璇疯緭鍏ユ帓鏁�" v-trim/>
- </el-form-item>
- <el-form-item label="鍒楁暟" prop="columnNum">
- <el-input v-model="form.columnNum" placeholder="璇疯緭鍏ュ垪鏁�" v-trim/>
- </el-form-item>
- <el-form-item label="鏈�鍚庨�氳鏃堕棿" prop="haertTime">
- <el-date-picker v-model="form.haertTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ渶鍚庨�氳鏃堕棿"></el-date-picker>
+ <el-form-item label="楠岃瘉浜�" prop="authMemberIdList">
+ <el-select v-model="form.authMemberIdList" filterable multiple placeholder="璇烽�夋嫨楠岃瘉浜�">
+ <el-option
+ v-for="item in memberList"
+ :key="item.id"
+ :label="item.name+'-'+item.companyName"
+ :value="item.id">
+ </el-option>
+ </el-select>
</el-form-item>
<el-form-item label="鎵�鍦ㄤ綅缃�" prop="lacation">
<el-input v-model="form.lacation" placeholder="璇疯緭鍏ユ墍鍦ㄤ綅缃�" v-trim/>
</el-form-item>
- <el-form-item label="缁忓害" prop="longitude">
- <el-input v-model="form.longitude" placeholder="璇疯緭鍏ョ粡搴�" v-trim/>
+ <el-form-item label="缁忕含搴�" prop="longitude">
+ <div style="width: 100%; display: flex; align-items: center;">
+ <el-input v-model="form.longitude" placeholder="璇疯緭鍏ョ粡绾害" v-trim/>
+ <a style="margin-left: 20px; flex-shrink: 0;" href="https://lbs.amap.com/tools/picker" target="_blank">缁忕含搴﹀湪绾挎嬀鍙栧湴鍧�</a>
+ </div>
</el-form-item>
- <el-form-item label="缁村害" prop="latitude">
- <el-input v-model="form.latitude" placeholder="璇疯緭鍏ョ淮搴�" v-trim/>
+ <el-form-item label="鐘舵��" prop="status">
+ <el-switch
+ v-model="form.status"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ :active-value="0"
+ :inactive-value="1">
+ </el-switch>
</el-form-item>
- <el-form-item label="缂栫爜鏂瑰紡 0鑷姩缂栫爜 1鎵嬪姩缂栫爜" prop="noType">
- <el-input v-model="form.noType" placeholder="璇疯緭鍏ョ紪鐮佹柟寮� 0鑷姩缂栫爜 1鎵嬪姩缂栫爜" v-trim/>
+ <h3 style="margin: 20px 0;">鏌滅粍淇℃伅</h3>
+ <el-form-item label="鎺掑垪" prop="rowNum">
+ <div style="width: 100%; display: flex; align-items: center;">
+ <el-input v-model="form.rowNum" type="number" placeholder="璇疯緭鍏ユ帓鏁�" v-trim>
+ <template slot="append">鎺�</template>
+ </el-input>
+ <span style="margin: 0 20px;">x</span>
+ <el-input v-model="form.columnNum" type="number" placeholder="璇疯緭鍏ュ垪鏁�" v-trim>
+ <template slot="append">鍒�</template>
+ </el-input>
+ </div>
</el-form-item>
- <el-form-item label="缂栫爜鍓嶇紑" prop="noPrefix">
- <el-input v-model="form.noPrefix" placeholder="璇疯緭鍏ョ紪鐮佸墠缂�" v-trim/>
+ <el-form-item label="缂栫爜" prop="noType">
+ <el-radio-group v-model="form.noType" @change="changeNoType">
+ <el-radio :label="0">鑷姩缂栫爜</el-radio>
+ <el-radio :label="1">鎵嬪姩缂栫爜</el-radio>
+ </el-radio-group>
</el-form-item>
- <el-form-item label="缂栫爜浣嶆暟" prop="noLength">
- <el-input v-model="form.noLength" placeholder="璇疯緭鍏ョ紪鐮佷綅鏁�" v-trim/>
+ <el-form-item label="鍓嶇紑" prop="noPrefix" v-if="form.noType === 1">
+ <div style="width: 100%; display: flex; align-items: center;">
+ <el-input style="flex: 1;" v-model="form.noPrefix" placeholder="璇疯緭鍏ユ暟瀛楁垨瀛楁瘝" v-trim/>
+ <span style="margin: 0 20px;">浣嶆暟</span>
+ <el-input style="flex: 1;" v-model="form.noLength" placeholder="璇疯緭鍏ユ暟瀛�" v-trim/>
+ <span style="margin: 0 20px;">璧峰缂栧彿</span>
+ <el-input style="flex: 1;" v-model="form.noIndex" placeholder="璇疯緭鍏ユ暟瀛�" v-trim/>
+ </div>
</el-form-item>
- <el-form-item label="璧峰缂栫爜" prop="noIndex">
- <el-input v-model="form.noIndex" placeholder="璇疯緭鍏ヨ捣濮嬬紪鐮�" v-trim/>
+ <el-form-item label="鎺掑垪椤哄簭" prop="sortType" v-if="form.noType === 1">
+ <el-radio-group v-model="form.sortType">
+ <el-radio :label="0">浠庡乏寰�鍙�</el-radio>
+ <el-radio :label="1">浠庝笂鍚戜笅</el-radio>
+ </el-radio-group>
</el-form-item>
</el-form>
</GlobalWindow>
@@ -94,6 +122,7 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import { allList } from '@/api/business/member'
export default {
name: 'OperaJkCabinetWindow',
extends: BaseOpera,
@@ -103,37 +132,65 @@
// 琛ㄥ崟鏁版嵁
form: {
id: null,
- creator: '',
- createDate: '',
- editor: '',
- editDate: '',
- isdeleted: '',
- info: '',
code: '',
name: '',
devId: '',
serialNo: '',
linkAddr: '',
- status: '',
+ status: 0,
port: '',
- managerId: '',
+ managerIdList: '',
useTime: '',
- doubleAuth: '',
- authMemberId: '',
+ doubleAuth: 0,
+ authMemberIdList: '',
rowNum: '',
columnNum: '',
- haertTime: '',
lacation: '',
longitude: '',
latitude: '',
- noType: '',
+ noType: 0,
noPrefix: '',
noLength: '',
- noIndex: ''
+ noIndex: '',
+ sortType: 0
},
// 楠岃瘉瑙勫垯
rules: {
- }
+ code: [
+ { required: true, message: '璇疯緭鍏ヨ澶囩紪鍙�', trigger: 'blur' }
+ ],
+ name: [
+ { required: true, message: '璇疯緭鍏ヨ澶囧悕绉�', trigger: 'blur' }
+ ],
+ devId: [
+ { required: true, message: '璇疯緭鍏ヨ澶嘔D', trigger: 'blur' }
+ ],
+ linkAddr: [
+ { required: true, message: '璇疯緭鍏ラ�氳鍦板潃', trigger: 'blur' }
+ ],
+ port: [
+ { required: true, message: '璇疯緭鍏ョ鍙e彿', trigger: 'blur' }
+ ],
+ managerIdList: [
+ { required: true, message: '璇烽�夋嫨璁惧绠$悊鍛�', trigger: 'blur' }
+ ],
+ authMemberIdList: [
+ { required: true, message: '璇烽�夋嫨楠岃瘉浜�', trigger: 'blur' }
+ ],
+ rowNum: [
+ { required: true, message: '璇疯緭鍏ユ帓鍒�', trigger: 'blur' }
+ ],
+ noType: [
+ { required: true, message: '璇烽�夋嫨缂栫爜', trigger: 'blur' }
+ ],
+ noPrefix: [
+ { required: true, message: '璇疯緭鍏ュ墠缂�', trigger: 'blur' }
+ ],
+ sortType: [
+ { required: true, message: '璇疯緭鍏ユ帓鍒楅『搴�', trigger: 'blur' }
+ ]
+ },
+ memberList: []
}
},
created () {
@@ -141,6 +198,42 @@
api: '/business/jkCabinet',
'field.id': 'id'
})
+ },
+ methods: {
+ open (title, target) {
+ this.title = title
+ this.loadMember()
+ 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]
+ }
+ })
+ },
+ loadMember () {
+ allList({
+ type: 2
+ }).then(res => {
+ this.memberList = res
+ })
+ },
+ changeNoType() {
+ if (this.form.noType === 0) {
+ this.form.noPrefix = ''
+ this.form.noLength = ''
+ this.form.noIndex = ''
+ this.form.sortType = 0
+ }
+ }
}
}
</script>
diff --git a/admin/src/components/business/OperaJkKeysWindow.vue b/admin/src/components/business/OperaJkKeysWindow.vue
index 9fbb1bf..964ba35 100644
--- a/admin/src/components/business/OperaJkKeysWindow.vue
+++ b/admin/src/components/business/OperaJkKeysWindow.vue
@@ -1,46 +1,33 @@
<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>
- <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="code">
<el-input v-model="form.code" placeholder="璇疯緭鍏ラ挜鍖欑紪鍙�" v-trim/>
</el-form-item>
- <el-form-item label="杞︾墝鍙�" prop="carCode">
- <el-input v-model="form.carCode" placeholder="璇疯緭鍏ヨ溅鐗屽彿" v-trim/>
- </el-form-item>
- <el-form-item label="鎵�灞炶溅杈�(鍏宠仈cars)" prop="carId">
- <el-input v-model="form.carId" placeholder="璇疯緭鍏ユ墍灞炶溅杈�(鍏宠仈cars)" v-trim/>
+ <el-form-item label="鎵�灞炶溅杈�" prop="carId">
+ <el-select v-model="form.carId" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in carAll"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
</el-form-item>
<el-form-item label="RFID鏍囩" prop="rfidLable">
<el-input v-model="form.rfidLable" placeholder="璇疯緭鍏FID鏍囩" v-trim/>
</el-form-item>
- <el-form-item label="棰嗗彇瑙勫垯 0闅忚溅 1闅忔淳杞﹀崟" prop="roleType">
- <el-input v-model="form.roleType" placeholder="璇疯緭鍏ラ鍙栬鍒� 0闅忚溅 1闅忔淳杞﹀崟" v-trim/>
- </el-form-item>
- <el-form-item label="鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭" prop="status">
- <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭" v-trim/>
+ <el-form-item label="棰嗗彇瑙勫垯" prop="roleType">
+ <el-radio-group v-model="form.roleType">
+ <el-radio :label="0">闅忚溅</el-radio>
+ <el-radio :label="1">闅忔淳杞﹀崟</el-radio>
+ </el-radio-group>
</el-form-item>
</el-form>
</GlobalWindow>
@@ -49,6 +36,7 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import { allList } from '@/api/business/cars'
export default {
name: 'OperaJkKeysWindow',
extends: BaseOpera,
@@ -58,22 +46,27 @@
// 琛ㄥ崟鏁版嵁
form: {
id: null,
- creator: '',
- createDate: '',
- editor: '',
- editDate: '',
- isdeleted: '',
- info: '',
code: '',
- carCode: '',
carId: '',
rfidLable: '',
- roleType: '',
- status: ''
+ roleType: 0
},
// 楠岃瘉瑙勫垯
rules: {
- }
+ code: [
+ { required: true, message: '璇疯緭鍏ラ挜鍖欑紪鍙�', trigger: 'blur' }
+ ],
+ carId: [
+ { required: true, message: '璇烽�夋嫨鎵�灞炶溅杈�', trigger: 'blur' }
+ ],
+ rfidLable: [
+ { required: true, message: '璇疯緭鍏FID鏍囩', trigger: 'blur' }
+ ],
+ roleType: [
+ { required: true, message: '璇烽�夋嫨棰嗗彇瑙勫垯', trigger: 'blur' }
+ ]
+ },
+ carAll: []
}
},
created () {
@@ -81,6 +74,15 @@
api: '/business/jkKeys',
'field.id': 'id'
})
+ this.getCars()
+ },
+ methods: {
+ getCars() {
+ allList({ type: 0 })
+ .then(res => {
+ console.log(res)
+ })
+ }
}
}
</script>
diff --git a/admin/src/components/business/cabinetDetails.vue b/admin/src/components/business/cabinetDetails.vue
new file mode 100644
index 0000000..e858232
--- /dev/null
+++ b/admin/src/components/business/cabinetDetails.vue
@@ -0,0 +1,152 @@
+<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="keyId">
+ <el-input v-model="searchForm.keyId" 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">鎵归噺瑙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 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>
+ </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'
+ export default {
+ name: 'cabinetDetails',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data () {
+ return {
+ id: null,
+ info: null,
+ searchForm: {
+ keyId: '',
+ status: '',
+ bindStatus: ''
+ },
+ list: [],
+ page: 1,
+ total: 0,
+ loading: false
+ }
+ },
+ methods: {
+ open (title, id) {
+ this.title = title
+ this.id = id
+ this.getList()
+ this.visible = true
+ },
+ handleCurrentChange(e) {
+ this.page = e
+ this.getList()
+ },
+ reset() {
+ this.searchForm.keyId = ''
+ this.searchForm.status = ''
+ this.searchForm.workingStatus = ''
+ this.page = 1
+ this.getList()
+ },
+ getList() {
+ this.loading = true
+ fetchList({
+ capacity: 10,
+ page: this.page,
+ model: {
+ cabinetId: this.id,
+ keyId: this.searchForm.keyId,
+ status: this.searchForm.status,
+ workingStatus: this.searchForm.workingStatus
+ }
+ }).then(res => {
+ console.log(res)
+ this.list = res.records
+ this.total = res.total
+ }).finally(() => {
+ this.loading = false
+ })
+ }
+ }
+ }
+</script>
diff --git a/admin/src/views/business/jkCabinet.vue b/admin/src/views/business/jkCabinet.vue
index 6feef3f..e4c7b55 100644
--- a/admin/src/views/business/jkCabinet.vue
+++ b/admin/src/views/business/jkCabinet.vue
@@ -2,146 +2,82 @@
<TableLayout :permissions="['business:jkcabinet: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="code">
<el-input v-model="searchForm.code" 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="璁惧ID" prop="devId">
- <el-input v-model="searchForm.devId" placeholder="璇疯緭鍏ヨ澶嘔D" @keypress.enter.native="search"></el-input>
+ <el-form-item label="杩愯鐘舵��" prop="rumStatus">
+ <el-select v-model="searchForm.rumStatus" 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="serialNo">
- <el-input v-model="searchForm.serialNo" placeholder="璇疯緭鍏ュ簭鍒楀彿" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="閫氳鍦板潃" prop="linkAddr">
- <el-input v-model="searchForm.linkAddr" placeholder="璇疯緭鍏ラ�氳鍦板潃" @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>
- <el-form-item label="绔彛" prop="port">
- <el-input v-model="searchForm.port" placeholder="璇疯緭鍏ョ鍙�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="璁惧绠$悊鍛樼紪鐮侊紙鍏宠仈member)" prop="managerId">
- <el-input v-model="searchForm.managerId" placeholder="璇疯緭鍏ヨ澶囩鐞嗗憳缂栫爜锛堝叧鑱攎ember)" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="浣跨敤鏃堕暱(绉�)" prop="useTime">
- <el-input v-model="searchForm.useTime" placeholder="璇疯緭鍏ヤ娇鐢ㄦ椂闀�(绉�)" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鏄惁鍙岄噸楠岃瘉 0鍚� 1鏄�" prop="doubleAuth">
- <el-input v-model="searchForm.doubleAuth" placeholder="璇疯緭鍏ユ槸鍚﹀弻閲嶉獙璇� 0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="楠岃瘉浜虹紪鐮侊紙鍏宠仈member)" prop="authMemberId">
- <el-input v-model="searchForm.authMemberId" placeholder="璇疯緭鍏ラ獙璇佷汉缂栫爜锛堝叧鑱攎ember)" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鎺掓暟" prop="rowNum">
- <el-input v-model="searchForm.rowNum" placeholder="璇疯緭鍏ユ帓鏁�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鍒楁暟" prop="columnNum">
- <el-input v-model="searchForm.columnNum" placeholder="璇疯緭鍏ュ垪鏁�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鏈�鍚庨�氳鏃堕棿" prop="haertTime">
- <el-date-picker v-model="searchForm.haertTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ渶鍚庨�氳鏃堕棿" @change="search"/>
- </el-form-item>
- <el-form-item label="鎵�鍦ㄤ綅缃�" prop="lacation">
- <el-input v-model="searchForm.lacation" placeholder="璇疯緭鍏ユ墍鍦ㄤ綅缃�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="缁忓害" prop="longitude">
- <el-input v-model="searchForm.longitude" placeholder="璇疯緭鍏ョ粡搴�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="缁村害" prop="latitude">
- <el-input v-model="searchForm.latitude" placeholder="璇疯緭鍏ョ淮搴�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="缂栫爜鏂瑰紡 0鑷姩缂栫爜 1鎵嬪姩缂栫爜" prop="noType">
- <el-input v-model="searchForm.noType" placeholder="璇疯緭鍏ョ紪鐮佹柟寮� 0鑷姩缂栫爜 1鎵嬪姩缂栫爜" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="缂栫爜鍓嶇紑" prop="noPrefix">
- <el-input v-model="searchForm.noPrefix" placeholder="璇疯緭鍏ョ紪鐮佸墠缂�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="缂栫爜浣嶆暟" prop="noLength">
- <el-input v-model="searchForm.noLength" placeholder="璇疯緭鍏ョ紪鐮佷綅鏁�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="璧峰缂栫爜" prop="noIndex">
- <el-input v-model="searchForm.noIndex" placeholder="璇疯緭鍏ヨ捣濮嬬紪鐮�" @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="1"></el-option>
+ <el-option label="绂佺敤" :value="0"></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:jkcabinet: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:jkcabinet:create', 'business:jkcabinet:delete']">
- <li><el-button type="primary" @click="$refs.operaJkCabinetWindow.open('鏂板缓閽ュ寵鏌滃熀鏈俊鎭〃')" icon="el-icon-plus" v-permissions="['business:jkcabinet:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" @click="$refs.operaJkCabinetWindow.open('鏂板缓璁惧')" icon="el-icon-plus" v-permissions="['business:jkcabinet:create']">鏂板缓</el-button></li>
<li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkcabinet: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="code" label="璁惧缂栧彿" min-width="100px"></el-table-column>
<el-table-column prop="name" label="璁惧鍚嶇О" min-width="100px"></el-table-column>
<el-table-column prop="devId" label="璁惧ID" min-width="100px"></el-table-column>
- <el-table-column prop="serialNo" label="搴忓垪鍙�" min-width="100px"></el-table-column>
<el-table-column prop="linkAddr" label="閫氳鍦板潃" min-width="100px"></el-table-column>
- <el-table-column prop="status" label="鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭" min-width="100px"></el-table-column>
- <el-table-column prop="port" label="绔彛" min-width="100px"></el-table-column>
- <el-table-column prop="managerId" label="璁惧绠$悊鍛樼紪鐮侊紙鍏宠仈member)" min-width="100px"></el-table-column>
- <el-table-column prop="useTime" label="浣跨敤鏃堕暱(绉�)" min-width="100px"></el-table-column>
- <el-table-column prop="doubleAuth" label="鏄惁鍙岄噸楠岃瘉 0鍚� 1鏄�" min-width="100px"></el-table-column>
- <el-table-column prop="authMemberId" label="楠岃瘉浜虹紪鐮侊紙鍏宠仈member)" min-width="100px"></el-table-column>
- <el-table-column prop="rowNum" label="鎺掓暟" min-width="100px"></el-table-column>
- <el-table-column prop="columnNum" label="鍒楁暟" min-width="100px"></el-table-column>
- <el-table-column prop="haertTime" label="鏈�鍚庨�氳鏃堕棿" min-width="100px"></el-table-column>
+ <el-table-column prop="port" label="绔彛鍙�" min-width="100px"></el-table-column>
<el-table-column prop="lacation" label="鎵�鍦ㄤ綅缃�" min-width="100px"></el-table-column>
- <el-table-column prop="longitude" label="缁忓害" min-width="100px"></el-table-column>
- <el-table-column prop="latitude" label="缁村害" min-width="100px"></el-table-column>
- <el-table-column prop="noType" label="缂栫爜鏂瑰紡 0鑷姩缂栫爜 1鎵嬪姩缂栫爜" min-width="100px"></el-table-column>
- <el-table-column prop="noPrefix" label="缂栫爜鍓嶇紑" min-width="100px"></el-table-column>
- <el-table-column prop="noLength" label="缂栫爜浣嶆暟" min-width="100px"></el-table-column>
- <el-table-column prop="noIndex" label="璧峰缂栫爜" min-width="100px"></el-table-column>
+ <el-table-column label="鏌滄牸鏁伴噺" min-width="100px">
+ <template slot-scope="{row}">
+ <el-button @click="$refs.cabinetDetails.open(row.name + '-鏌滄牸淇℃伅', row.id)">{{row.gridNum}}</el-button>
+ </template>
+ </el-table-column>
+ <el-table-column label="杩愯鐘舵��" min-width="100px">
+ <template slot-scope="{row}">
+ <el-link type="success" v-if="row.runStatus === 0">鍦ㄧ嚎</el-link>
+ <el-link type="danger" v-if="row.runStatus === 1">绂荤嚎</el-link>
+ </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
v-if="containPermissions(['business:jkcabinet:update', 'business:jkcabinet:delete'])"
label="鎿嶄綔"
- min-width="120"
+ min-width="200"
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaJkCabinetWindow.open('缂栬緫閽ュ寵鏌滃熀鏈俊鎭〃', row)" icon="el-icon-edit" v-permissions="['business:jkcabinet:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkcabinet:delete']">鍒犻櫎</el-button>
+ <el-button type="text">鏃ュ織</el-button>
+ <el-button type="text">缁戝畾閽ュ寵</el-button>
+ <el-button type="text" @click="$refs.operaJkCabinetWindow.open('缂栬緫閽ュ寵鏌滃熀鏈俊鎭〃', row)" v-permissions="['business:jkcabinet:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" v-permissions="['business:jkcabinet:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
@@ -154,6 +90,8 @@
</template>
<!-- 鏂板缓/淇敼 -->
<OperaJkCabinetWindow ref="operaJkCabinetWindow" @success="handlePageChange"/>
+ <!-- 鏌滃瓙璇︽儏 -->
+ <CabinetDetails ref="cabinetDetails" />
</TableLayout>
</template>
@@ -162,42 +100,19 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkCabinetWindow from '@/components/business/OperaJkCabinetWindow'
+import CabinetDetails from '@/components/business/cabinetDetails'
export default {
name: 'JkCabinet',
extends: BaseTable,
- components: { TableLayout, Pagination, OperaJkCabinetWindow },
+ components: { TableLayout, Pagination, OperaJkCabinetWindow, CabinetDetails },
data () {
return {
// 鎼滅储
searchForm: {
- id: '',
- creator: '',
- createDate: '',
- editor: '',
- editDate: '',
- isdeleted: '',
- info: '',
code: '',
name: '',
- devId: '',
- serialNo: '',
- linkAddr: '',
status: '',
- port: '',
- managerId: '',
- useTime: '',
- doubleAuth: '',
- authMemberId: '',
- rowNum: '',
- columnNum: '',
- haertTime: '',
- lacation: '',
- longitude: '',
- latitude: '',
- noType: '',
- noPrefix: '',
- noLength: '',
- noIndex: ''
+ rumStatus: ''
}
}
},
diff --git a/admin/src/views/business/jkKeys.vue b/admin/src/views/business/jkKeys.vue
index dd82388..6762ccc 100644
--- a/admin/src/views/business/jkKeys.vue
+++ b/admin/src/views/business/jkKeys.vue
@@ -2,77 +2,59 @@
<TableLayout :permissions="['business:jkkeys: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="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="carCode">
+ <el-input v-model="searchForm.carCode" placeholder="璇疯緭鍏ユ墍灞炶溅杈�" @keypress.enter.native="search"></el-input>
</el-form-item>
- <el-form-item label="鎵�灞炶溅杈�(鍏宠仈cars)" prop="carId">
- <el-input v-model="searchForm.carId" placeholder="璇疯緭鍏ユ墍灞炶溅杈�(鍏宠仈cars)" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="RFID鏍囩" prop="rfidLable">
- <el-input v-model="searchForm.rfidLable" placeholder="璇疯緭鍏FID鏍囩" @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鍦ㄤ綅 2鍊熷嚭" prop="status">
- <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭" @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="3"></el-option>
+ <el-option label="鍊熷嚭" :value="2"></el-option>
+ <el-option label="鍦ㄤ綅" :value="1"></el-option>
+ <el-option label="鏈粦瀹�" :value="0"></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:jkkeys: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:jkkeys:create', 'business:jkkeys:delete']">
- <li><el-button type="primary" @click="$refs.operaJkKeysWindow.open('鏂板缓閽ュ寵鍩烘湰淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:jkkeys:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkkeys:delete']">鍒犻櫎</el-button></li>
+ <li><el-button type="primary" @click="$refs.operaJkKeysWindow.open('鏂板缓閽ュ寵淇℃伅')" icon="el-icon-plus" v-permissions="['business:jkkeys:create']">鏂板缓</el-button></li>
+<!-- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkkeys: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="code" label="閽ュ寵缂栧彿" min-width="100px"></el-table-column>
- <el-table-column prop="carCode" label="杞︾墝鍙�" min-width="100px"></el-table-column>
- <el-table-column prop="carId" label="鎵�灞炶溅杈�(鍏宠仈cars)" min-width="100px"></el-table-column>
+ <el-table-column prop="carName" label="鎵�灞炶溅杈�" min-width="100px"></el-table-column>
<el-table-column prop="rfidLable" label="RFID鏍囩" 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鍦ㄤ綅 2鍊熷嚭" 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 label="缁戝畾鐘舵��" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.isBinding === 0">鏈粦瀹�</span>
+ <span v-if="row.isBinding === 1">宸茬粦瀹�</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="閽ュ寵鐘舵��" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.status === 0">鏈粦瀹�</span>
+ <span v-if="row.status === 1">鍦ㄤ綅</span>
+ <span v-if="row.status === 2">鍊熷嚭</span>
+ <span v-if="row.status === 3">缁翠慨淇濆吇</span>
+ </template>
+ </el-table-column>
<el-table-column
v-if="containPermissions(['business:jkkeys:update', 'business:jkkeys:delete'])"
label="鎿嶄綔"
@@ -80,8 +62,9 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaJkKeysWindow.open('缂栬緫閽ュ寵鍩烘湰淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:jkkeys:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkkeys:delete']">鍒犻櫎</el-button>
+ <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="deleteById(row)" v-permissions="['business:jkkeys:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
@@ -94,6 +77,8 @@
</template>
<!-- 鏂板缓/淇敼 -->
<OperaJkKeysWindow ref="operaJkKeysWindow" @success="handlePageChange"/>
+ <!-- 鍊熻繕璁板綍 -->
+ <BorrowingAndReturningRecords ref="borrowingAndReturningRecords"/>
</TableLayout>
</template>
@@ -102,26 +87,17 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkKeysWindow from '@/components/business/OperaJkKeysWindow'
+import BorrowingAndReturningRecords from '@/components/business/BorrowingAndReturningRecords'
export default {
name: 'JkKeys',
extends: BaseTable,
- components: { TableLayout, Pagination, OperaJkKeysWindow },
+ components: { TableLayout, Pagination, OperaJkKeysWindow, BorrowingAndReturningRecords },
data () {
return {
// 鎼滅储
searchForm: {
- id: '',
- creator: '',
- createDate: '',
- editor: '',
- editDate: '',
- isdeleted: '',
- info: '',
code: '',
carCode: '',
- carId: '',
- rfidLable: '',
- roleType: '',
status: ''
}
}
--
Gitblit v1.9.3