jiangping
2024-05-24 351ef2827d05262218d1e4275535d6d1e8af26c1
最新版本
已修改8个文件
209 ■■■■■ 文件已修改
admin/src/api/business/cars.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/parkBook.js 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/assets/style/style.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCarAuthWindow.vue 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaMemberRoleWindow.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/internalCompany.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/internalMember.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/vehicle/parkBook.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/cars.js
@@ -23,12 +23,12 @@
// 删除
export function deleteById (id) {
  return request.get(`/business/cars/delete/${id}`)
  return request.get(`/visitsAdmin/cloudService/business/cars/delete/${id}`)
}
// 批量删除
export function deleteByIdInBatch (ids) {
  return request.get('/business/cars/delete/batch', {
  return request.get('/visitsAdmin/cloudService/business/cars/delete/batch', {
    params: {
      ids
    }
admin/src/api/business/parkBook.js
@@ -11,6 +11,9 @@
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/parkBook/create', data)
}
export function batchAuth (data) {
  return request.post('/visitsAdmin/cloudService/business/parkBook/batchAuth', data)
}
// 修改
export function updateById (data) {
@@ -23,7 +26,7 @@
// 删除
export function deleteById (id) {
  return request.get(`/business/parkBook/delete/${id}`)
  return request.get(`/visitsAdmin/cloudService/business/parkBook/delete/${id}`)
}
// 批量删除
admin/src/assets/style/style.scss
@@ -115,7 +115,7 @@
  }
}
.tip-warn {
  margin: 4px 0 12px 0;
  margin: 4px 0 25px 0;
  font-size: 12px;
  color: #999;
  i {
admin/src/components/business/OperaCarAuthWindow.vue
@@ -0,0 +1,176 @@
<template>
  <GlobalWindow
      :title="title"
      width="800px"
      :visible.sync="visible"
      :confirm-working="isWorking"
      @confirm="confirm"
  >
    <p class="tip-warn"><i class="el-icon-warning"></i>提醒:<br>
      1.车辆权限配置成功后,授权任务即进入权限下发队列,可前往【车辆授权申请记录】查看下发进度;<br>
      2.如果需要清空当前选中人员下发权限,以下【授权停车场】为空提交即可。
    </p>
    <p class="tip" v-if="form.codes != null">正在为<em>【{{ form.codes.map(item => `${item}`).join(',') }}】</em> 配置停车场权限</p>
      <el-form :model="form" ref="form" :rules="rules">
        <el-form-item label="授权有效期:" prop="authTimeType" >
          <el-radio-group v-model="form.authTimeType">
            <el-radio :label="0">长期有效</el-radio>
            <el-radio :label="1">自定义时间</el-radio>
            <el-radio :label="2">跟随车主</el-radio>
          </el-radio-group>
          <div v-if="form.authTimeType ==1" style="margin-top: 10px" >
            <el-date-picker
                @change="seleTime"
                v-model="time"
                type="datetimerange"
                format="yyyy-MM-dd HH:mm:ss"
                value-format="yyyy-MM-dd HH:mm:ss"
                range-separator="至"
                start-placeholder="开始日期"
                end-placeholder="结束日期">
            </el-date-picker>
          </div>
        </el-form-item>
        <el-form-item label="选择停车库" prop="parkIdList">
          <el-select multiple v-model="form.parkIdList" filterable placeholder="请选择" clearable>
            <el-option
                v-for="item in parks"
                :key="item.id"
                :label="item.name"
                :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
      </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { findList } from '@/api/business/parks'
export default {
  name: 'OperaCarsWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    var validateTime = (rule, value, callback) => {
      if (this.form.authTimeType == null) {
        callback(new Error('请填写正确的授权有效期时间'))
        return
      }
      if (this.form.authTimeType === 1 && (this.form.startTime == null || this.form.endTime == null)) {
        callback(new Error('请填写正确的授权有效期时间'))
        return
      }
      callback()
    }
    return {
      // 表单数据
      form: {
        ids: [],
        codes: [],
        authTimeType: 0,
        startTime: null,
        endTime: null,
        parkIdList: []
      },
      time: null,
      parks: [],
      // 验证规则
      rules: {
        authTimeType: [
          { required: true, validator: validateTime, message: '请选中门禁有效期' }
        ]
      },
      options: []
    }
  },
  created () {
    this.config({
      api: '/business/parkBook',
      'field.id': 'id'
    })
  },
  methods: {
    confirm () {
      this.$refs.form.validate((valid) => {
        if (!valid) {
          return
        }
        if (this.form.parkIdList == null || this.form.parkIdList.length === 0) {
          this.$dialog.actionConfirm('授权停车库为空,提交后即清除所选车辆已分配的全部权限,请谨慎操作!', '您确认进行该操作吗?')
            .then(() => {
              this.confirmDo()
            })
            .catch(() => {})
        } else {
          this.confirmDo()
        }
      })
    },
    confirmDo () {
      // 调用新建接口
      this.isWorking = true
      this.api.batchAuth({
        idList: this.form.ids,
        authTimeType: this.form.authTimeType,
        startTime: this.form.startTime,
        endTime: this.form.endTime,
        parkIdList: this.form.parkIdList
      })
        .then(() => {
          this.visible = false
          this.$tip.apiSuccess('授权成功,可前往【车辆授权申请记录】查看下发进度')
          this.$emit('success')
        })
        .catch(e => {
          // this.$tip.apiFailed(e)
        })
        .finally(() => {
          this.isWorking = false
        })
    },
    seleTime (e) {
      if (e && e.length >= 2) {
        this.form.startTime = e[0]
        this.form.endTime = e[1]
      } else {
        this.form.startTime = null
        this.form.endTime = null
      }
    },
    open (title, ids, names, companyType) {
      this.title = title
      this.visible = true
      this.companyType = companyType
      // 新建
      this.$nextTick(() => {
        this.$refs.form.resetFields()
        this.form[this.configData['field.id']] = null
        this.form.ids = ids
        this.form.codes = names
        this.loadParks()
        console.log(names)
      })
    },
    loadParks () {
      this.parks = []
      findList({
        isdeleted: 0
      })
        .then(res => {
          this.parks = res
        })
        .catch(e => {
          this.$message.error('加载停车库信息失败')
        })
        .finally(() => {
          // this.isWorking = false
        })
    }
  }
}
</script>
admin/src/components/business/OperaMemberRoleWindow.vue
@@ -2,7 +2,7 @@
    <GlobalWindow
        :title="title"
        :visible.sync="visible"
        width="900px"
        width="70%"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
@@ -145,7 +145,7 @@
        })
            .then(() => {
              this.visible = false
              this.$tip.apiSuccess('新建成功')
              this.$tip.apiSuccess('授权成功,可前往【人员授权记录】查看下发进度')
              this.$emit('success')
            })
            .catch(e => {
admin/src/views/business/internalCompany.vue
@@ -50,7 +50,7 @@
                    <template slot-scope="{row}">
                        <el-button type="text" @click="$refs.OperaInternalCompanyWindow.open('编辑企业信息',{  id: row.parentId,name:row.parentName,type:row.parentType, companyPath:row.parentCompanyPath}, row)" icon="el-icon-edit" v-permissions="['business:company:update']">编辑</el-button>
                        <el-button type="text" @click="$refs.OperaInternalCompanyWindow.open('新建子级',  row,null)" icon="el-icon-plus">新建子级</el-button>
                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:company:delete']">删除</el-button>
                        <el-button type="text" @click="deleteById(row)" style="color: red" icon="el-icon-delete" v-permissions="['business:company:delete']">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
admin/src/views/business/internalMember.vue
@@ -6,26 +6,26 @@
                <el-input v-model="searchForm.keyword" placeholder="请输入姓名/手机号/工号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="" prop="hasFace">
                <el-select v-model="searchForm.hasFace" @keypress.enter.native="search" placeholder="是否有人脸">
                <el-select v-model="searchForm.hasFace" @keypress.enter.native="search" clearable placeholder="是否有人脸">
                    <el-option label="无" value="0"></el-option>
                    <el-option label="有" value="1"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="" prop="canVisit">
                <el-select v-model="searchForm.canVisit" @keypress.enter.native="search" placeholder="可拜访">
                <el-select v-model="searchForm.canVisit" clearable @keypress.enter.native="search" placeholder="可拜访">
                    <el-option label="是" value="1"></el-option>
                    <el-option label="否" value="0"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="" prop="status">
                <el-select v-model="searchForm.status" @keypress.enter.native="search" placeholder="状态">
                <el-select v-model="searchForm.status" @keypress.enter.native="search" clearable placeholder="状态">
                    <el-option label="正常" value="0"></el-option>
                    <el-option label="禁用" value="1"></el-option>
                    <el-option label="拉黑/冻结" value="2"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="" prop="hkStatus">
                <el-select v-model="searchForm.hkStatus" @keypress.enter.native="search" placeholder="海康同步状态">
                <el-select v-model="searchForm.hkStatus" @keypress.enter.native="search" clearable placeholder="海康同步状态">
                    <el-option label="待同步" value="0"></el-option>
                    <el-option label="同步成功" value="1"></el-option>
                    <el-option label="同步失败" value="2"></el-option>
@@ -170,7 +170,7 @@
                        <el-button type="text" :loading="heading" icon="el-icon-delete" @click="updateHead(row,0)" v-if="row.headStatus ==1 " v-permissions="['business:member:head']">取消主管</el-button>
                        <el-button type="text" :loading="heading"  icon="el-icon-edit" @click="updateHead(row,1)"  v-if="row.headStatus  == 0"  v-permissions="['business:member:head']">设为主管</el-button>
                        <el-button type="text"  icon="el-icon-plus" @click="empower(row.id)" v-permissions="['business:empower:create']">重新授权</el-button>
                        <el-button  type="text"  icon="el-icon-delete" @click="empower(row.id)" v-permissions="['business:empower:delete']">删除</el-button>
                        <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:member:delete']">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
admin/src/views/vehicle/parkBook.vue
@@ -5,11 +5,11 @@
            <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="员工姓名/手机号" prop="memberName">
            <el-form-item label="车主姓名/手机号" prop="memberName">
                <el-input v-model="searchForm.memberName" placeholder="请输入员工姓名/手机号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="部门" prop="companyName">
                <el-input v-model="searchForm.companyName" placeholder="请输入部门" @keypress.enter.native="search"></el-input>
            <el-form-item label="车主组织" prop="companyName">
                <el-input v-model="searchForm.companyName" placeholder="请输入车主组织" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="停车库名称" prop="parksName">
                <el-input v-model="searchForm.parksName" placeholder="请输入停车库名称" @keypress.enter.native="search"></el-input>