MrShi
2 天以前 39fc2d6754953e41a7334a2166347baacfcfb40a
对接口
已添加1个文件
已修改6个文件
228 ■■■■■ 文件已修改
admin/src/api/business/jkCabinet.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkCabinetGrid.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkKeys.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkCabinetWindow.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/alcoholTest.vue 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/cabinetDetails.vue 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkCabinet.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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`)
}
// æ‰¹é‡åˆ é™¤
admin/src/api/business/jkCabinetGrid.js
@@ -30,6 +30,11 @@
  return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/updateStatusById', data)
}
// è§£ç»‘钥匙
export function unBindKeys (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/unBindKeys', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkCabinetGrid/delete/${id}`)
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)
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>
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>
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">批量解绑</el-button></li>
            <li><el-button type="primary" @click="bathUnBindKeys">批量解绑</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('确认批量解绑吗?', '提示', {
          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 => {
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
        })
    }
  }
}