MrShi
2023-12-27 d71fde29b661900f67bfe5f8edc81626d910082f
Mr.Shi
已添加1个文件
已修改17个文件
607 ■■■■ 文件已修改
admin/src/api/business/cars.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/parks.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/strandedPersonnel.js 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/common.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaVisitsDesWindow.vue 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/utils/util.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/blackmailPersonnel.vue 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/cars.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/deviceRole.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/empower.vue 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/freezePersonnel.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/laborSource.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/parks.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/strandedPersonnel.vue 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/visitorManagement.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/visitorSources.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/visits.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/vue.config.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/cars.js
@@ -2,29 +2,29 @@
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/business/cars/page', data, {
  return request.post('/business/parkBook/page', data, {
    trim: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/business/cars/create', data)
  return request.post('/business/parkBook/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/business/cars/updateById', data)
  return request.post('/business/parkBook/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/cars/delete/${id}`)
  return request.get(`/business/parkBook/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/business/cars/delete/batch', {
  return request.get('/business/parkBook/delete/batch', {
    params: {
      ids
    }
admin/src/api/business/parks.js
@@ -6,3 +6,10 @@
    trim: true
  })
}
// æ‰€å±žåœè½¦åœºåˆ—表
export function findList (data) {
  return request.post('/business/parks/findList', data, {
    trim: true
  })
}
admin/src/api/business/strandedPersonnel.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/business/visits/retentionPage', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/business/visits/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/business/visits/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/business/visits/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/visits/delete/${id}`)
}
// æ ¹æ®ID查询
export function queryById (id) {
  return request.get(`/business/visits/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/business/visits/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/system/common.js
@@ -46,3 +46,8 @@
export function updateLaborConfigDTO (data) {
  return request.post('/system/dictData/updateLaborConfigDTO', data)
}
// åˆ†é¡µæŸ¥è¯¢ç³»ç»Ÿç”¨æˆ·
export function findAllList (data) {
  return request.post('/system/user/findAllList', data)
}
admin/src/components/business/OperaVisitsDesWindow.vue
@@ -23,7 +23,7 @@
                <div class="list_item_info" v-if="info">随访车辆:{{info.carNos}}</div>
                <div class="list_item_table" v-if="info">
                    <el-table
                        :data="info.lwWithUserList ? info.lwWithUserList : []"
                        :data="info.withUserList ? info.withUserList : []"
                        border
                        :header-cell-style="{background: '#dcdde2', color: 'rgb(51, 51, 51)'}"
                        style="width: 100%">
@@ -41,8 +41,12 @@
                        <el-table-column
                            prop="birthday"
                            label="年龄">
                            <template slot-scope="{row}">
                                <span>{{getAge(row.birthday)}}</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                            width="150"
                            prop="phone"
                            label="手机号">
                        </el-table-column>
@@ -55,7 +59,8 @@
                            </template>
                        </el-table-column>
                        <el-table-column
                            prop="idcardNo"
                            width="160"
                            prop="idcardDecode"
                            label="身份证号码">
                        </el-table-column>
                        <el-table-column
@@ -63,12 +68,28 @@
                            label="公司">
                        </el-table-column>
                        <el-table-column
                            prop="faceImg"
                            width="150"
                            label="人脸照片">
                            <template slot-scope="{row}">
                                <el-image
                                    v-if="row.faceImg"
                                    style="width: 100px; height: 100px"
                                    :src="info.prefixUrl + row.faceImg"
                                    :preview-src-list="[info.prefixUrl + row.faceImg]">
                                </el-image>
                            </template>
                        </el-table-column>
                        <el-table-column
                            prop="imgurl"
                            width="150"
                            label="健康证">
                            <template slot-scope="{row}">
                                <el-image
                                    v-if="row.imgurl"
                                    style="width: 100px; height: 100px"
                                    :src="info.prefixUrl + row.imgurl"
                                    :preview-src-list="[info.prefixUrl + row.imgurl]">
                                </el-image>
                            </template>
                        </el-table-column>
                    </el-table>
                </div>
@@ -106,6 +127,19 @@
    }
  },
  methods: {
    getAge (val) {
      if (!val) return ''
      const currentYear = new Date().getFullYear() // å½“前的年份
      const calculationYear = new Date(val).getFullYear() // è®¡ç®—的年份
      const wholeTime = currentYear + val.substring(4) // å‘¨å²æ—¶é—´
      const calculationAge = currentYear - calculationYear // æŒ‰ç…§å¹´ä»½è®¡ç®—的年龄
      // åˆ¤æ–­æ˜¯å¦è¿‡äº†ç”Ÿæ—¥
      if (new Date().getTime() > new Date(wholeTime).getTime()) {
        return calculationAge
      } else {
        return calculationAge - 1
      }
    },
    open (title, id) {
      this.title = title
      this.visible = true
@@ -118,7 +152,11 @@
  }
}
</script>
<style>
    .el-image-viewer__wrapper {
        z-index: 3000 !important;
    }
</style>
<style lang="scss" scoped>
    .list {
        width: 100%;
admin/src/utils/util.js
@@ -41,3 +41,17 @@
  const timer2 = Y2 + '-' + M2 + '-' + D2 + ' ' + '00:00:00' // ä¹‹å‰çš„7天或者30天
  return [timer2, timer1]
}
/**
 * æœ‰æ•ˆæœŸåˆ¤æ–­
 * @param startTime å¼€å§‹æ—¥æœŸ
 * @param endTime ç»“束日期
 * @returns {string}
 */
export function validity (startTime, endTime) {
  if (startTime && endTime) {
    return `${startTime} è‡³ ${endTime}`
  } else {
    return '长期'
  }
}
admin/src/views/business/blackmailPersonnel.vue
@@ -2,33 +2,26 @@
    <TableLayout :permissions="['business:member:query']">
        <!-- æœç´¢è¡¨å• -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="姓名" prop="name">
                <el-input v-model="searchForm.name" placeholder="请输入访客名称" @keypress.enter.native="search"></el-input>
            <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="code">
                <el-input v-model="searchForm.code" 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="code">
                <el-input v-model="searchForm.code" placeholder="请输入工号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="操作人员" prop="code">
                <el-select v-model="searchForm.code" placeholder="请选择">
            <el-form-item label="操作人员" prop="createrId">
                <el-select v-model="searchForm.createrId" placeholder="请选择">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                        v-for="item in user"
                        :key="item.id"
                        :label="item.name"
                        :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="人员类型" prop="companyId">
                <el-select v-model="searchForm.code" placeholder="请选择">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
            <el-form-item label="人员类型" prop="type">
                <el-select v-model="searchForm.type" placeholder="请选择">
                    <el-option label="访客" value="1"></el-option>
                    <el-option label="劳务" value="0"></el-option>
                </el-select>
            </el-form-item>
            <section>
@@ -39,7 +32,7 @@
        <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
                <li><el-button type="primary" v-permissions="['business:member:create']">移出</el-button></li>
                <li><el-button type="primary" v-permissions="['business:member:create']" @click="thaws">移出</el-button></li>
            </ul>
            <el-table
                v-loading="isWorking.search"
@@ -50,7 +43,7 @@
                <el-table-column type="selection" width="55"></el-table-column>
                <el-table-column prop="name" label="姓名" min-width="100px"></el-table-column>
                <el-table-column prop="phone" label="手机号" min-width="100px"></el-table-column>
                <el-table-column prop="idcard_id" label="身份证号码" min-width="100px"></el-table-column>
                <el-table-column prop="idcardDecode" label="身份证号码" min-width="100px"></el-table-column>
                <el-table-column label="人员类型" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.type === 0">劳务访客</span>
@@ -58,7 +51,7 @@
                        <span v-if="row.type === 2">内部人员</span>
                    </template>
                </el-table-column>
                <el-table-column prop="company_id" label="公司" min-width="100px"></el-table-column>
                <el-table-column prop="companyName" label="公司" min-width="100px"></el-table-column>
                <el-table-column prop="edit_date" label="操作时间" min-width="100px"></el-table-column>
                <el-table-column prop="editor" label="操作人" min-width="100px"></el-table-column>
                <el-table-column
@@ -68,7 +61,7 @@
                    fixed="right"
                >
                    <template slot-scope="{row}">
                        <el-button type="text" icon="el-icon-edit" v-permissions="['business:member:update']">移出</el-button>
                        <el-button type="text" icon="el-icon-edit" v-permissions="['business:member:update']" @click="thaw(row.id)">移出</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -86,6 +79,8 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import { findAllList } from '@/api/system/common'
import { updateRemoveStatusById } from '@/api/business/block'
export default {
  name: 'blackmailPersonnel',
  extends: BaseTable,
@@ -94,13 +89,13 @@
    return {
      // æœç´¢
      searchForm: {
        companyId: '',
        companyName: '',
        name: '',
        code: '',
        createrId: '',
        status: 2,
        type: 1
        type: '1'
      },
      options: []
      user: []
    }
  },
  created () {
@@ -111,6 +106,42 @@
      'field.main': 'id'
    })
    this.search()
    this.getUser()
  },
  methods: {
    thaws () {
      if (this.tableData.selectedRows.length === 0) return this.$message.warning('至少选择一项内容')
      const ids = this.tableData.selectedRows.map(item => {
        return { id: item.id }
      })
      this.thaw(ids)
    },
    thaw (ids) {
      this.$confirm('确定移除此用户吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        updateRemoveStatusById(ids)
          .then(res => {
            this.$message.success('操作成功')
            this.search()
          })
      }).catch(() => {
      })
    },
    getUser () {
      findAllList({})
        .then(res => {
          this.user = res.map(item => {
            return {
              name: item.realname,
              id: item.id
            }
          })
        })
    }
  }
}
</script>
admin/src/views/business/cars.vue
@@ -5,18 +5,11 @@
            <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="code">
                <el-input v-model="searchForm.code" placeholder="请输入员工姓名/手机号" @keypress.enter.native="search"></el-input>
            <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="code">
                <el-select v-model="value" placeholder="请选择">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
                </el-select>
            <el-form-item label="部门" prop="companyName">
                <el-input v-model="searchForm.companyName" placeholder="请输入部门" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <section>
                <el-button type="primary" @click="search">搜索</el-button>
@@ -26,7 +19,7 @@
        <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
                <li><el-button type="primary" @click="$refs.operaCarsWindow.open('新建车辆信息表')" icon="el-icon-plus" v-permissions="['business:member:create']">新建</el-button></li>
<!--                <li><el-button type="primary" @click="$refs.operaCarsWindow.open('新建车辆信息表')" icon="el-icon-plus" v-permissions="['business:member:create']">新建</el-button></li>-->
                <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">删除</el-button></li>
            </ul>
            <el-table
@@ -37,13 +30,25 @@
            >
                <el-table-column type="selection" width="55"></el-table-column>
                <el-table-column prop="code" label="车牌号" min-width="100px"></el-table-column>
                <el-table-column prop="code" label="停车场" min-width="100px"></el-table-column>
                <el-table-column prop="remark" label="用户类型" min-width="100px"></el-table-column>
                <el-table-column prop="remark" label="姓名" min-width="100px"></el-table-column>
                <el-table-column prop="remark" label="手机号" min-width="100px"></el-table-column>
                <el-table-column prop="remark" label="部门/公司" min-width="100px"></el-table-column>
                <el-table-column prop="parksName" label="停车场" min-width="100px"></el-table-column>
                <el-table-column label="用户类型" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.memberType === 0">劳务访客</span>
                        <span v-if="row.memberType === 1">普通访客</span>
                        <span v-if="row.memberType === 2">内部人员</span>
                    </template>
                </el-table-column>
                <el-table-column prop="memberName" label="姓名" min-width="100px"></el-table-column>
                <el-table-column prop="memberPhone" label="手机号" min-width="100px"></el-table-column>
                <el-table-column prop="companyName" label="部门/公司" min-width="100px"></el-table-column>
                <el-table-column prop="remark" label="备注" min-width="100px"></el-table-column>
                <el-table-column prop="remark" label="有效期" min-width="100px"></el-table-column>
                <el-table-column prop="remark" label="有效期" min-width="100px">
                    <template slot-scope="{row}">
                        <span>{{validity(row.startTime, row.endTime)}}</span>
<!--                        <span v-if="!row.startTime || !row.endTime">长期</span>-->
<!--                        <span v-else>{{row.startTime}} è‡³ {{row.endTime}}</span>-->
                    </template>
                </el-table-column>
                <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
                <el-table-column
                    v-if="containPermissions(['business:member:update', 'business:member:delete'])"
@@ -52,7 +57,7 @@
                    fixed="right"
                >
                    <template slot-scope="{row}">
                        <el-button type="text" @click="$refs.operaCarsWindow.open('编辑车辆信息表', row)" icon="el-icon-edit" v-permissions="['business:member:update']">编辑</el-button>
<!--                        <el-button type="text" @click="$refs.operaCarsWindow.open('编辑车辆信息表', row)" icon="el-icon-edit" v-permissions="['business:member:update']">编辑</el-button>-->
                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:member:delete']">删除</el-button>
                    </template>
                </el-table-column>
@@ -74,6 +79,7 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaCarsWindow from '@/components/business/OperaCarsWindow'
import { validity } from '@/utils/util'
export default {
  name: 'Cars',
  extends: BaseTable,
@@ -82,9 +88,10 @@
    return {
      // æœç´¢
      searchForm: {
        code: ''
      },
      options: []
        code: '',
        memberName: '',
        companyName: ''
      }
    }
  },
  created () {
admin/src/views/business/deviceRole.vue
@@ -28,7 +28,7 @@
                <el-table-column prop="isDefault" label="是否默认" min-width="100px">
                    <template slot-scope="{row}">
                        <el-switch
                            @change="changeIsDefault"
                            @change="changeIsDefault($event, row.id)"
                            v-model="row.isDefault"
                            active-color="#13ce66"
                            inactive-color="#ff4949"
@@ -91,8 +91,8 @@
    this.search()
  },
  methods: {
    changeIsDefault (r) {
      updateStatusById({ isDefault: r, type: 2 })
    changeIsDefault (r, id) {
      updateStatusById({ isDefault: r, type: 2, id })
        .finally(() => {
          this.search()
        })
admin/src/views/business/empower.vue
@@ -2,34 +2,45 @@
    <TableLayout :permissions="['business:empower:query']">
        <!-- æœç´¢è¡¨å• -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="姓名手机号" prop="startTime">
                <el-input v-model="searchForm.startTime" placeholder="请输入姓名/手机号" @keypress.enter.native="search"></el-input>
            <el-form-item label="姓名手机号" prop="keyWords">
                <el-input v-model="searchForm.keyWords" placeholder="请输入姓名/手机号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="下发状态" prop="sendStatus">
                <el-select v-model="searchForm.sendStatus" placeholder="请选择">
                <el-select v-model="searchForm.sendStatus" placeholder="请选择" @keypress.enter.native="search">
                    <el-option label="待下发" value="0"></el-option>
                    <el-option label="已下发" value="1"></el-option>
                    <el-option label="已取消" value="2"></el-option>
                    <el-option label="下发成功" value="2"></el-option>
                    <el-option label="已取消" value="3"></el-option>
                    <el-option label="下发失败" value="4"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="公司" prop="sendStatus">
                <el-select v-model="searchForm.sendStatus" placeholder="请选择公司">
            <el-form-item label="公司" prop="companyId">
                <el-select v-model="searchForm.companyId" placeholder="请选择公司" @keypress.enter.native="search">
                    <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="startTime">
                <el-input v-model="searchForm.startTime" placeholder="请输入门禁有效期开始" @keypress.enter.native="search"></el-input>
                <el-date-picker
                    @change="seleTime"
                    v-model="time"
                    @keypress.enter.native="search"
                    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>
            </el-form-item>
            <el-radio-group v-model="searchForm.eventType" size="small">
                <el-radio-button label="当天"></el-radio-button>
                <el-radio-button label="近7天"></el-radio-button>
                <el-radio-button label="近30天"></el-radio-button>
            <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
                <el-radio-button label="0">当天</el-radio-button>
                <el-radio-button label="1">近7天</el-radio-button>
                <el-radio-button label="2">近30天</el-radio-button>
            </el-radio-group>
            <section>
                <el-button type="primary" @click="search">搜索</el-button>
<!--                <el-button type="primary" :loading="isWorking.export" v-permissions="['business:member:exportExcel']" @click="exportExcel">导出</el-button>-->
                <el-button @click="reset">重置</el-button>
            </section>
        </el-form>
@@ -37,8 +48,8 @@
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:empower:create', 'business:empower:delete']">
                <li><el-button type="primary" v-permissions="['business:empower:create']">导出</el-button></li>
                <li><el-button type="primary" v-permissions="['business:empower:create']">立即下发</el-button></li>
                <li><el-button type="primary" v-permissions="['business:empower:create']">取消下发</el-button></li>
<!--                <li><el-button type="primary" v-permissions="['business:empower:create']">立即下发</el-button></li>-->
<!--                <li><el-button type="primary" v-permissions="['business:empower:create']">取消下发</el-button></li>-->
            </ul>
            <el-table
                v-loading="isWorking.search"
@@ -89,6 +100,7 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import { timeForMat } from '@/utils/util'
export default {
  name: 'Empower',
  extends: BaseTable,
@@ -97,10 +109,14 @@
    return {
      // æœç´¢
      searchForm: {
        keyWords: '',
        companyId: '',
        startTime: '',
        endTime: '',
        sendStatus: ''
      }
        sendStatus: '',
        radio: null
      },
      time: []
    }
  },
  created () {
@@ -111,6 +127,38 @@
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
    changeRadio (e) {
      if (e === '0') {
        this.searchForm.startTime = timeForMat(1)[0]
        this.searchForm.endTime = timeForMat(1)[1]
        this.time = timeForMat(1)
      } else if (e === '1') {
        this.searchForm.startTime = timeForMat(7)[0]
        this.searchForm.endTime = timeForMat(7)[1]
        this.time = timeForMat(7)
      } else if (e === '2') {
        this.searchForm.startTime = timeForMat(30)[0]
        this.searchForm.endTime = timeForMat(30)[1]
        this.time = timeForMat(30)
      }
      this.search()
    },
    seleTime (e) {
      this.searchForm.startTime = e[0]
      this.searchForm.endTime = e[1]
      this.searchForm.radio = null
      this.search()
    },
    reset () {
      this.$refs.searchForm.resetFields()
      this.searchForm.startTime = ''
      this.searchForm.endTime = ''
      this.time = []
      this.searchForm.radio = null
      this.search()
    }
  }
}
</script>
admin/src/views/business/freezePersonnel.vue
@@ -26,7 +26,7 @@
        <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
                <li><el-button type="primary" v-permissions="['business:member:create']">解冻</el-button></li>
                <li><el-button type="primary" v-permissions="['business:member:create']" @click="thaws()">解冻</el-button></li>
                <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:member:exportExcel']" @click="exportExcel">导出</el-button></li>
            </ul>
            <el-table
@@ -37,7 +37,7 @@
            >
                <el-table-column type="selection" width="55"></el-table-column>
                <el-table-column prop="name" label="姓名" min-width="100px"></el-table-column>
                <el-table-column prop="companyId" label="部门" min-width="100px"></el-table-column>
                <el-table-column prop="companyName" label="部门" min-width="100px"></el-table-column>
                <el-table-column prop="code" label="工号" min-width="100px"></el-table-column>
                <el-table-column prop="visitsLastDate" label="最后一次门禁时间" min-width="100px"></el-table-column>
                <el-table-column prop="userActionType1" label="冻结时间" min-width="100px"></el-table-column>
@@ -48,7 +48,7 @@
                    fixed="right"
                >
                    <template slot-scope="{row}">
                        <el-button type="text" icon="el-icon-edit" v-permissions="['business:member:update']">解冻</el-button>
                        <el-button type="text" @click="thaw([{id: row.id}])" icon="el-icon-edit" v-permissions="['business:member:update']">解冻</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -86,7 +86,7 @@
  },
  created () {
    this.config({
      module: '人员信息表',
      module: '冻结人员',
      api: '/business/block',
      'field.id': 'id',
      'field.main': 'id'
@@ -95,6 +95,28 @@
    this.getfindCompanyTreePage()
  },
  methods: {
    thaws () {
      if (this.tableData.selectedRows.length === 0) return this.$message.warning('至少选择一项内容')
      const ids = this.tableData.selectedRows.map(item => {
        return { id: item.id }
      })
      this.thaw(ids)
    },
    thaw (ids) {
      this.$confirm('确定解冻此用户吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        updateRemoveStatusById(ids)
          .then(res => {
            this.$message.success('操作成功')
            this.search()
          })
      }).catch(() => {
      })
    },
    changeCompanyId (e) {
      this.searchForm.companyId = e[e.length - 1]
    },
@@ -102,9 +124,7 @@
    getfindCompanyTreePage () {
      findCompanyTreePage(1)
        .then(res => {
          console.log(res)
          this.options = res
          // this.search()
        })
    }
  }
admin/src/views/business/laborSource.vue
@@ -68,18 +68,17 @@
    getData () {
      getLaborConfigDTO({})
        .then(res => {
          this.form.id = res.id
          this.form.checkVisit = res.LaborConfigParam.checkVisit
          this.form.checkVisit = res.laborConfigParam.checkVisit
          this.form.description = res.description
          this.form.healthCard = res.LaborConfigParam.healthCard
          this.form.isAnswer = res.LaborConfigParam.isAnswer
          this.form.reservationWay = res.LaborConfigParam.reservationWay
          this.form.healthCard = res.laborConfigParam.healthCard
          this.form.isAnswer = res.laborConfigParam.isAnswer
          this.form.reservationWay = res.laborConfigParam.reservationWay
          this.form.theme = res.theme
        })
    },
    submit () {
      updateLaborConfigDTO({
        LaborConfigParam: {
        laborConfigParam: {
          isAnswer: this.form.isAnswer,
          healthCard: this.form.healthCard,
          checkVisit: this.form.checkVisit,
admin/src/views/business/parks.vue
@@ -2,16 +2,16 @@
    <TableLayout :permissions="['business:member:query']">
        <!-- æœç´¢è¡¨å• -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="停车库名称" prop="title">
                <el-input v-model="searchForm.title" placeholder="请输入停车库名称" @keypress.enter.native="search"></el-input>
            <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="title">
                <el-select v-model="searchForm.title" placeholder="请选择">
            <el-form-item label="所属停车库" prop="parentHkId">
                <el-select v-model="searchForm.parentHkId" placeholder="请选择">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                        v-for="item in list"
                        :key="item.id"
                        :label="item.name"
                        :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
@@ -30,15 +30,15 @@
                :data="tableData.list"
                stripe
            >
                <el-table-column prop="createDate" label="停车库名称" min-width="100px"></el-table-column>
                <el-table-column prop="createDate" label="所属停车库" min-width="100px"></el-table-column>
                <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
                <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
                <el-table-column prop="name" label="停车库名称" min-width="100px"></el-table-column>
                <el-table-column prop="parentName" label="所属停车库" min-width="100px"></el-table-column>
                <el-table-column prop="parkCreateDate" label="创建时间" min-width="100px"></el-table-column>
                <el-table-column prop="parkEditDate" label="更新时间" min-width="100px"></el-table-column>
            </el-table>
            <pagination
                    @size-change="handleSizeChange"
                    @current-change="handlePageChange"
                    :pagination="tableData.pagination"
                @size-change="handleSizeChange"
                @current-change="handlePageChange"
                :pagination="tableData.pagination"
            >
            </pagination>
        </template>
@@ -49,6 +49,7 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import { findList } from '@/api/business/parks'
export default {
  name: 'Parks',
  extends: BaseTable,
@@ -57,9 +58,10 @@
    return {
      // æœç´¢
      searchForm: {
        title: ''
        name: '',
        parentHkId: ''
      },
      options: []
      list: []
    }
  },
  created () {
@@ -70,6 +72,16 @@
      'field.main': 'id'
    })
    this.search()
    this.getfindList()
  },
  methods: {
    getfindList () {
      findList({})
        .then(res => {
          this.list = res
          console.log(res)
        })
    }
  }
}
</script>
admin/src/views/business/strandedPersonnel.vue
@@ -5,27 +5,13 @@
            <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="code">
                <el-input v-model="searchForm.code" 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="code">
                <el-select v-model="searchForm.code" placeholder="请选择">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="用户类型" prop="companyId">
                <el-select v-model="searchForm.code" placeholder="请选择">
                    <el-option
                        v-for="item in options"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value">
                    </el-option>
            <el-form-item label="用户类型" prop="type">
                <el-select v-model="searchForm.type" placeholder="请选择">
                    <el-option label="访客" value="1"></el-option>
                    <el-option label="劳务" value="0"></el-option>
                </el-select>
            </el-form-item>
            <section>
@@ -35,19 +21,19 @@
        </el-form>
        <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
                <li><el-button type="primary" v-permissions="['business:member:create']">离场</el-button></li>
            </ul>
<!--            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">-->
<!--                <li><el-button type="primary" v-permissions="['business:member:create']" @click="thaws">离场</el-button></li>-->
<!--            </ul>-->
            <el-table
                    v-loading="isWorking.search"
                    :data="tableData.list"
                    stripe
                    @selection-change="handleSelectionChange"
                v-loading="isWorking.search"
                :data="tableData.list"
                stripe
                @selection-change="handleSelectionChange"
            >
                <el-table-column type="selection" width="55"></el-table-column>
<!--                <el-table-column type="selection" width="55"></el-table-column>-->
                <el-table-column prop="name" label="姓名" min-width="100px"></el-table-column>
                <el-table-column prop="phone" label="手机号" min-width="100px"></el-table-column>
                <el-table-column prop="company_id" label="公司" min-width="100px"></el-table-column>
                <el-table-column prop="companyName" label="公司" min-width="100px"></el-table-column>
                <el-table-column label="用户类型" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.type === 0">劳务访客</span>
@@ -55,26 +41,31 @@
                        <span v-if="row.type === 2">内部人员</span>
                    </template>
                </el-table-column>
                <el-table-column prop="idcard_id" label="入场时间" min-width="100px"></el-table-column>
                <el-table-column prop="edit_date" label="授权到期时间" min-width="100px"></el-table-column>
                <el-table-column prop="idcard_id" label="超时时长" min-width="100px"></el-table-column>
                <el-table-column prop="idcard_id" label="状态" min-width="100px"></el-table-column>
                <el-table-column prop="editor" label="操作人" min-width="100px"></el-table-column>
                <el-table-column
                    v-if="containPermissions(['business:member:update', 'business:member:delete'])"
                    label="操作"
                    min-width="120"
                    fixed="right"
                >
                <el-table-column prop="inDate" label="入场时间" min-width="100px"></el-table-column>
                <el-table-column prop="endtime" label="授权到期时间" min-width="100px"></el-table-column>
                <el-table-column prop="timeOut" label="超时时长" min-width="100px"></el-table-column>
                <el-table-column label="状态" min-width="100px">
                    <template slot-scope="{row}">
                        <el-button type="text" icon="el-icon-edit" v-permissions="['business:member:update']">离厂</el-button>
                        <span v-if="row.outStatus === 0">未超时</span>
                        <span v-else-if="row.timeOut === 1">已超时</span>
                        <span v-else-if="row.timeOut === 2">即将超时</span>
                    </template>
                </el-table-column>
<!--                <el-table-column-->
<!--                    v-if="containPermissions(['business:member:update', 'business:member:delete'])"-->
<!--                    label="操作"-->
<!--                    min-width="120"-->
<!--                    fixed="right"-->
<!--                >-->
<!--                    <template slot-scope="{row}">-->
<!--                        <el-button type="text" icon="el-icon-edit" v-permissions="['business:member:update']" @click="thaw(row.id)">离厂</el-button>-->
<!--                    </template>-->
<!--                </el-table-column>-->
            </el-table>
            <pagination
                    @size-change="handleSizeChange"
                    @current-change="handlePageChange"
                    :pagination="tableData.pagination"
                @size-change="handleSizeChange"
                @current-change="handlePageChange"
                :pagination="tableData.pagination"
            >
            </pagination>
        </template>
@@ -85,6 +76,7 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import { findAllList } from '@/api/system/common'
export default {
  name: 'strandedPersonnel',
  extends: BaseTable,
@@ -93,23 +85,58 @@
    return {
      // æœç´¢
      searchForm: {
        companyId: '',
        companyName: '',
        name: '',
        code: '',
        status: 2,
        type: 1
        type: '1'
      },
      options: []
      user: []
    }
  },
  created () {
    this.config({
      module: '人员信息表',
      api: '/business/member',
      api: '/business/strandedPersonnel',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
    this.getUser()
  },
  methods: {
    // thaws () {
    //   if (this.tableData.selectedRows.length === 0) return this.$message.warning('至少选择一项内容')
    //   const ids = this.tableData.selectedRows.map(item => {
    //     return { id: item.id }
    //   })
    //   this.thaw(ids)
    // },
    // thaw (ids) {
    //   this.$confirm('确定移除此用户吗?', '提示', {
    //     confirmButtonText: '确定',
    //     cancelButtonText: '取消',
    //     type: 'warning'
    //   }).then(() => {
    //     // updateRemoveStatusById(ids)
    //     //   .then(res => {
    //     //     this.$message.success('操作成功')
    //     //     this.search()
    //     //   })
    //   }).catch(() => {
    //
    //   })
    // },
    getUser () {
      findAllList({})
        .then(res => {
          this.user = res.map(item => {
            return {
              name: item.realname,
              id: item.id
            }
          })
        })
    }
  }
}
</script>
admin/src/views/business/visitorManagement.vue
@@ -34,7 +34,12 @@
                <el-table-column type="selection" width="55"></el-table-column>
                <el-table-column prop="name" label="姓名" min-width="100px"></el-table-column>
                <el-table-column prop="phone" label="手机号" min-width="100px"></el-table-column>
                <el-table-column prop="phone" label="性别" min-width="100px"></el-table-column>
                <el-table-column prop="phone" label="性别" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.sex === 1">男</span>
                        <span v-if="row.sex === 2">女</span>
                    </template>
                </el-table-column>
                <el-table-column label="证件类型" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.idcardType === 0">身份证</span>
@@ -42,9 +47,9 @@
                        <span v-if="row.idcardType === 2">护照</span>
                    </template>
                </el-table-column>
                <el-table-column prop="idcardNo" label="身份证号" min-width="100px"></el-table-column>
                <el-table-column prop="idcardDecode" label="身份证号" width="150px"></el-table-column>
                <el-table-column prop="companyName" label="公司" min-width="100px"></el-table-column>
                <el-table-column prop="visitTimes" label="拜访次数" min-width="100px"></el-table-column>
                <el-table-column prop="visitsCount" label="拜访次数" min-width="100px"></el-table-column>
                <el-table-column prop="lastVisitDate" label="最后拜访时间" min-width="100px"></el-table-column>
            </el-table>
            <pagination
admin/src/views/business/visitorSources.vue
@@ -68,18 +68,17 @@
    getData () {
      getVisitConfigDTO({})
        .then(res => {
          this.form.id = res.id
          this.form.checkVisit = res.VisitConfigParam.checkVisit
          this.form.checkVisit = res.visitConfigParam.checkVisit
          this.form.description = res.description
          this.form.healthCard = res.VisitConfigParam.healthCard
          this.form.isAnswer = res.VisitConfigParam.isAnswer
          this.form.reservationWay = res.VisitConfigParam.reservationWay
          this.form.healthCard = res.visitConfigParam.healthCard
          this.form.isAnswer = res.visitConfigParam.isAnswer
          this.form.reservationWay = res.visitConfigParam.reservationWay
          this.form.theme = res.theme
        })
    },
    submit () {
      updateVisitConfig({
        VisitConfigParam: {
        visitConfigParam: {
          isAnswer: this.form.isAnswer,
          healthCard: this.form.healthCard,
          checkVisit: this.form.checkVisit,
admin/src/views/business/visits.vue
@@ -48,20 +48,18 @@
                <el-table-column prop="reason" label="拜访事由" min-width="100px"></el-table-column>
                <el-table-column label="拜访时间" min-width="170px">
                    <template slot-scope="{row}">
                        <span>起:{{row.starttime}}</span>
                        <span>起:{{row.starttime}}</span><br/>
                        <span>止:{{row.endtime}}</span>
                    </template>
                </el-table-column>
                <el-table-column label="随访人员" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.visitsList && row.visitsList.length > 0">{{row.visitsList.length}}</span>
                        <span>0</span>
                        <span>{{row.memberNum}}</span>
                    </template>
                </el-table-column>
                <el-table-column label="随访车辆" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.carNos">{{row.carNos.split(',').length}}</span>
                        <span>0</span>
                    </template>
                </el-table-column>
                <el-table-column prop="status" fixed="right" label="状态" min-width="100px">
@@ -78,12 +76,12 @@
                <el-table-column
                    v-if="containPermissions(['business:visits:update', 'business:visits:delete'])"
                    label="操作"
                    min-width="190"
                    min-width="100"
                    fixed="right"
                >
                    <template slot-scope="{row}">
                        <el-button type="text" @click="$refs.OperaVisitsDesWindow.open('详情', row.id)" v-permissions="['business:visits:update']">查看详情</el-button>
                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:visits:delete']">查询审批结果</el-button>
<!--                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:visits:delete']">查询审批结果</el-button>-->
                    </template>
                </el-table-column>
            </el-table>
admin/vue.config.js
@@ -11,9 +11,11 @@
    proxy: {
      [process.env.VUE_APP_API_PREFIX]: {
        // http://192.168.0.130:10013
        // 192.168.0.110:10013  192.168.0.110:10013
        // 192.168.0.110:10013
        // http://192.168.0.101:10013
        // http://192.168.0.132:10013
        // http://192.168.0.132:10013   ä»»åº·
        // http://192.168.0.110:10013   ç£Šç£Š
        // http://192.168.0.133:10013   å¸…å“¥
        target: 'http://192.168.0.132:10013',
        changeOrigin: true,
        pathRewrite: {