doum
2025-09-08 fa7ac16021db8d9a6a5bc214f50600420876325e
admin/src/views/operation/tram.vue
@@ -8,6 +8,12 @@
      <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="bikeStatuus">
        <el-select v-model="searchForm.bikeStatuus" placeholder="上架状态" @change="search">
          <el-option label="下架中" :value="0" />
          <el-option label="上架中" :value="1" />
        </el-select>
      </el-form-item>
      <el-form-item label="电量情况" prop="lowVoltage">
        <el-select v-model="searchForm.lowVoltage" placeholder="电量情况" @change="search">
          <el-option label="正常" :value="0" />
@@ -24,13 +30,14 @@
      <ul class="toolbar" v-permissions="['business:sites:create']">
        <li><el-button type="primary" @click="$refs.TramEditRef.open('新增车辆')" icon="el-icon-plus"
            v-permissions="['business:sites:create']">新建</el-button></li>
        <li><el-button @click="handleDelAll">批量删除</el-button></li>
        <li><el-button  type="danger"  @click="handleDelAll">批量删除</el-button></li>
        <li v-permissions="['system:user:create']">
          <ImportButton text="导入" template-name="电车模板.xlsx" template-path="/template/tram_import_tem.xlsx"
            action="/business/bikes/importExcel" @success="search" />
        </li>
        <li><el-button :loading="downLoading" @click="handleDownAll"
            v-permissions="['business:sites:create']">批量下载二维码</el-button></li>
        <li><el-button type="primary"  :loading="downLoading" @click="handleDownAll" >批量下载二维码</el-button></li>
        <li><el-button type="primary" @click="handleStatusAll(1)">批量上架</el-button></li>
        <li><el-button type="danger" @click="handleStatusAll(0)">批量下架</el-button></li>
      </ul>
      <el-table @selection-change="handleSelectionChange" v-loading="isWorking.search" :data="tableData.list" stripe
        border>
@@ -44,9 +51,19 @@
            <span :class="{ red: row.lowVoltage == 1 }">{{ row.lowVoltage == 0 ? '正常' : '低电量' }}</span>
          </template>
        </el-table-column>
        <el-table-column label="上架状态" width="80px" align="center">
          <template v-slot="{ row }">
            <span :class="row.bikeStatus !== 1?'red':'green'">{{ row.bikeStatus  !== 1 ? '已下架' : '已上架' }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="siteId" label="站点编号" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="siteName" label="站点名称" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="heartDate" label="最后通讯时间" min-width="100px" align="center"></el-table-column>
        <el-table-column label="是否在线" width="80px" align="center">
          <template v-slot="{ row }">
            <span  :class="row.isOnline == 0?'red':'green'" >{{ row.isOnline == 0 ? '离线' : '在线' }}</span>
          </template>
        </el-table-column>
        <el-table-column v-if="containPermissions(['business:sites:update', 'business:sites:delete'])" label="操作"
          min-width="160" align="center" fixed="right">
          <template slot-scope="{row}">
@@ -85,7 +102,7 @@
import QRcode from './components/QRcode'
import ImportButton from '@/components/common/ImportButton'
import { tranListPost } from '@/api/business/bikes.js'
import { qrcodeBike, qrcodeBikeList, deleteBatchById } from '@/api/business/bikes.js'
import { qrcodeBike, qrcodeBikeList, updateBikeStatusBatch,deleteBatchById } from '@/api/business/bikes.js'
import { Message } from 'element-ui'
export default {
  name: 'bikes',
@@ -109,6 +126,7 @@
        lowVoltage: '',
        ip: '',
        type: 1,
        bikeStatuus: null,
        clientVersion: ''
      },
      imgurl: '',
@@ -149,6 +167,22 @@
        })
      })
    },
    handleStatusAll (status) {
      const { selList } = this
      if (selList.length == 0) return Message.warning('请先选择处理的车辆')
      this.$confirm('您确认要处理选中的车辆吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      }).then(() => {
        updateBikeStatusBatch({ bikeStatus: status, ids: selList.map(i => i.id).join() }).then(res => {
          if (res) {
            this.search(1)
            Message.success('操作成功')
          }
        })
      })
    },
    handlePri(row) {
      this.imgurl = null
      qrcodeBike({ fouce: 0, bikeId: row.id }).then(res => {