From 39fc2d6754953e41a7334a2166347baacfcfb40a Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期六, 11 十月 2025 18:21:18 +0800 Subject: [PATCH] 对接口 --- admin/src/components/business/OperaJkCabinetWindow.vue | 6 admin/src/views/business/jkCabinet.vue | 26 ++++-- admin/src/api/business/jkCabinet.js | 12 ++ admin/src/components/business/cabinetDetails.vue | 62 +++++++++++++-- admin/src/api/business/jkCabinetGrid.js | 5 + admin/src/api/business/jkKeys.js | 5 + admin/src/components/business/alcoholTest.vue | 112 ++++++++++++++++++++++++++++ 7 files changed, 206 insertions(+), 22 deletions(-) diff --git a/admin/src/api/business/jkCabinet.js b/admin/src/api/business/jkCabinet.js index 8f81b84..2370a04 100644 --- a/admin/src/api/business/jkCabinet.js +++ b/admin/src/api/business/jkCabinet.js @@ -35,9 +35,19 @@ return request.post('/visitsAdmin/cloudService/business/jkCabinet/updateStatusById', data) } +// 鏇存柊閰掔簿妫�娴嬮厤缃� +export function updateCabinetConfig (data) { + return request.post('/visitsAdmin/cloudService/business/jkCabinet/updateCabinetConfig', data) +} + // 鍒犻櫎 export function deleteById (id) { - return request.get(`/business/jkCabinet/delete/${id}`) + return request.get(`/visitsAdmin/cloudService/business/jkCabinet/delete/${id}`) +} + +// 鑾峰彇閰掔簿妫�娴嬮厤缃� +export function getCabinetConfig () { + return request.get(`/visitsAdmin/cloudService/business/jkCabinet/getCabinetConfig`) } // 鎵归噺鍒犻櫎 diff --git a/admin/src/api/business/jkCabinetGrid.js b/admin/src/api/business/jkCabinetGrid.js index bc2d362..15c20d7 100644 --- a/admin/src/api/business/jkCabinetGrid.js +++ b/admin/src/api/business/jkCabinetGrid.js @@ -30,6 +30,11 @@ return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/updateStatusById', data) } +// 瑙g粦閽ュ寵 +export function unBindKeys (data) { + return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/unBindKeys', data) +} + // 鍒犻櫎 export function deleteById (id) { return request.get(`/business/jkCabinetGrid/delete/${id}`) diff --git a/admin/src/api/business/jkKeys.js b/admin/src/api/business/jkKeys.js index edd2d47..b85f391 100644 --- a/admin/src/api/business/jkKeys.js +++ b/admin/src/api/business/jkKeys.js @@ -20,6 +20,11 @@ return request.post('/visitsAdmin/cloudService/business/jkKeys/create', data) } +// 鍒楄〃鏌ヨ +export function list (data) { + return request.post('/visitsAdmin/cloudService/business/jkKeys/list', data) +} + // 淇敼 export function updateById (data) { return request.post('/visitsAdmin/cloudService/business/jkKeys/updateById', data) diff --git a/admin/src/components/business/OperaJkCabinetWindow.vue b/admin/src/components/business/OperaJkCabinetWindow.vue index 7817588..fe508bb 100644 --- a/admin/src/components/business/OperaJkCabinetWindow.vue +++ b/admin/src/components/business/OperaJkCabinetWindow.vue @@ -85,11 +85,11 @@ <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> + <el-input v-model="form.rowNum" :disabled="form.id" 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> + <el-input v-model="form.columnNum" :disabled="form.id" type="number" placeholder="璇疯緭鍏ュ垪鏁�" v-trim> <template slot="append">鍒�</template> </el-input> </div> @@ -110,7 +110,7 @@ </div> </el-form-item> <el-form-item label="鎺掑垪椤哄簭" prop="sortType" v-if="form.noType === 1"> - <el-radio-group v-model="form.sortType"> + <el-radio-group v-model="form.sortType" :disabled="form.id"> <el-radio :label="0">浠庡乏寰�鍙�</el-radio> <el-radio :label="1">浠庝笂鍚戜笅</el-radio> </el-radio-group> diff --git a/admin/src/components/business/alcoholTest.vue b/admin/src/components/business/alcoholTest.vue new file mode 100644 index 0000000..9d7e2d6 --- /dev/null +++ b/admin/src/components/business/alcoholTest.vue @@ -0,0 +1,112 @@ +<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="blowTime"> + <el-input v-model="form.blowTime" placeholder="璇疯緭鍏ュ惞姘旀椂闀匡紙绉掞級" v-trim/> + </el-form-item> + <el-form-item label="鍘嬪姏鍊�" prop="pressure"> + <el-input v-model="form.pressure" placeholder="璇疯緭鍏ュ帇鍔涘��" v-trim/> + </el-form-item> + <el-form-item label="閰掔簿娴撳害闃堝��" prop="concentration"> + <div style="width: 100%; display: flex; align-items: center;"> + <el-input v-model="form.concentration" placeholder="璇疯緭鍏ラ厭绮炬祿搴﹂璀﹀��" style="flex: 1;" v-trim/> + <el-select v-model="form.threshold" placeholder="璇烽�夋嫨" style="flex-shrink: 0; margin-left: 15px;"> + <el-option label="mg/100ml" value="1"></el-option> + <el-option label="mg/L" value="2"></el-option> + <el-option label="%BAC" value="3"></el-option> + </el-select> + </div> + </el-form-item> + </el-form> + </GlobalWindow> +</template> + +<script> + import BaseOpera from '@/components/base/BaseOpera' + import GlobalWindow from '@/components/common/GlobalWindow' + import { updateCabinetConfig } from '@/api/business/jkCabinet' + export default { + name: 'alcoholTest', + extends: BaseOpera, + components: { GlobalWindow }, + data () { + return { + // 琛ㄥ崟鏁版嵁 + form: { + id: null, + blowTime: '', + pressure: '', + concentration: '', + threshold: '' + }, + // 楠岃瘉瑙勫垯 + rules: { + blowTime: [ + { required: true, message: '璇疯緭鍏ュ惞姘旀椂闀�', trigger: 'blur' } + ], + pressure: [ + { required: true, message: '璇疯緭鍏ュ帇鍔涘��', trigger: 'blur' } + ], + concentration: [ + { required: true, message: '璇烽�夋嫨閰掔簿娴撳害棰勮鍊�', trigger: 'blur' } + ], + } + } + }, + created () { + this.config({ + api: '/business/jkCabinet', + 'field.id': 'id' + }) + }, + methods: { + open (title, target) { + this.title = title + this.form.threshold = '' + 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] + } + }) + }, + // 纭鏂板缓 + __confirmCreate () { + this.$refs.form.validate((valid) => { + if (!valid) { + return + } + // 璋冪敤鏂板缓鎺ュ彛 + this.isWorking = true + updateCabinetConfig(this.form) + .then(() => { + this.visible = false + this.$tip.apiSuccess('鎿嶄綔鎴愬姛') + this.$emit('success') + }) + .catch(e => { + // this.$tip.apiFailed(e) + }) + .finally(() => { + this.isWorking = false + }) + }) + }, + } + } +</script> diff --git a/admin/src/components/business/cabinetDetails.vue b/admin/src/components/business/cabinetDetails.vue index 8e324d7..f08a6ba 100644 --- a/admin/src/components/business/cabinetDetails.vue +++ b/admin/src/components/business/cabinetDetails.vue @@ -6,8 +6,8 @@ :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="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"> @@ -31,7 +31,7 @@ </el-form-item> </el-form> <ul class="toolbar"> - <li><el-button type="primary">鎵归噺瑙g粦</el-button></li> + <li><el-button type="primary" @click="bathUnBindKeys">鎵归噺瑙g粦</el-button></li> </ul> <el-table v-loading="loading" @@ -42,24 +42,25 @@ <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="璇烽�夋嫨"> + <el-select v-model="row.keyId" placeholder="璇烽�夋嫨" @change="blurFunc($event, row, 1)"> <el-option v-for="item in keysAll" :key="item.id" - :label="item.name" - :value="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" placeholder="璇疯緭鍏ユ澘鍙�"></el-input> + <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" placeholder="璇疯緭鍏ラ�氶亾鍙�"></el-input> + <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"> @@ -93,7 +94,8 @@ <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' - import { fetchList, updateStatusById } from '@/api/business/jkCabinetGrid' + import { fetchList, updateStatusById, unBindKeys, updateById } from '@/api/business/jkCabinetGrid' + import { list } from '@/api/business/jkKeys' export default { name: 'cabinetDetails', extends: BaseOpera, @@ -103,7 +105,7 @@ id: null, info: null, searchForm: { - keyId: '', + keyCode: '', status: '', bindStatus: '' }, @@ -117,8 +119,48 @@ 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 => { diff --git a/admin/src/views/business/jkCabinet.vue b/admin/src/views/business/jkCabinet.vue index d6f7b5c..a15d6d7 100644 --- a/admin/src/views/business/jkCabinet.vue +++ b/admin/src/views/business/jkCabinet.vue @@ -31,7 +31,7 @@ <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 @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkcabinet:delete']">鍒犻櫎</el-button></li> + <li><el-button type="warning" @click="$refs.alcoholTest.open('鏂板缓閰掔簿妫�娴嬮厤缃�', form)">閰掔簿妫�娴嬮厤缃�</el-button></li> </ul> <el-table :height="tableHeightNew" @@ -52,8 +52,8 @@ </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> + <el-link type="success" :underline="false" v-if="row.runStatus === 0">鍦ㄧ嚎</el-link> + <el-link type="danger" :underline="false" v-if="row.runStatus === 1">绂荤嚎</el-link> </template> </el-table-column> <el-table-column label="鐘舵��" min-width="100px"> @@ -75,8 +75,7 @@ fixed="right" > <template slot-scope="{row}"> - <el-button type="text">鏃ュ織</el-button> - <el-button type="text">缁戝畾閽ュ寵</el-button> + <el-button type="text" @click="$refs.cabinetDetails.open(row.name + '-鏌滄牸淇℃伅', row.id)">缁戝畾閽ュ寵</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> @@ -93,6 +92,8 @@ <OperaJkCabinetWindow ref="operaJkCabinetWindow" @success="handlePageChange"/> <!-- 鏌滃瓙璇︽儏 --> <CabinetDetails ref="cabinetDetails" /> + <!-- 鏂板閰掔簿妫�娴� --> + <AlcoholTest ref="alcoholTest" @success="GetCabinetConfig" /> </TableLayout> </template> @@ -102,11 +103,12 @@ import Pagination from '@/components/common/Pagination' import OperaJkCabinetWindow from '@/components/business/OperaJkCabinetWindow' import CabinetDetails from '@/components/business/cabinetDetails' -import { updateStatusById } from '@/api/business/jkCabinet' +import AlcoholTest from '@/components/business/alcoholTest' +import { updateStatusById, getCabinetConfig } from '@/api/business/jkCabinet' export default { name: 'JkCabinet', extends: BaseTable, - components: { TableLayout, Pagination, OperaJkCabinetWindow, CabinetDetails }, + components: { TableLayout, Pagination, OperaJkCabinetWindow, CabinetDetails, AlcoholTest}, data () { return { // 鎼滅储 @@ -115,7 +117,8 @@ name: '', status: '', rumStatus: '' - } + }, + form: null } }, created () { @@ -126,6 +129,7 @@ 'field.main': 'id' }) this.search() + this.GetCabinetConfig() }, methods: { changeStatus(status, id) { @@ -133,6 +137,12 @@ .then(res => { this.search() }) + }, + GetCabinetConfig() { + getCabinetConfig() + .then(res => { + this.form = res + }) } } } -- Gitblit v1.9.3