rk
2025-09-29 e067f714c0588407b1c20ddd6b7af3b2043e35f8
Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao
已添加53个文件
已删除16个文件
已修改29个文件
6531 ■■■■ 文件已修改
admin/public/template/jkCustomerTmeplate.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
admin/public/template/jkLineTemplate.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
admin/public/template/jkOrdersTemplate.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkCabinet.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkCabinetGrid.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkCabinetLog.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkCustomer.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkIccard.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkKeys.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkLine.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkOrders.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkSketch.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkSketchCustomer.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkSketchLine.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/jkVersion.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/warning.js 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/warningPush.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/warningRule.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/warningRuleDetail.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/assets/style/style.scss 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCategoryJkBannerWindow.vue 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCategoryJkLineWindow.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkCabinetGridWindow.vue 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkCabinetLogWindow.vue 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkCabinetWindow.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkCustomerWindow.vue 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkIccardWindow.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkKeysWindow.vue 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkLineWindow.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkOrdersWindow.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkSketchCustomerWindow.vue 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkSketchLineWindow.vue 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkSketchWindow.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaJkVersionWindow.vue 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaWarningPushWindow.vue 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaWarningRuleDetailWindow.vue 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaWarningRuleWindow.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaWarningWindow.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/ImageCropper.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/UploadFaceImg.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/UploadImage.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/categoryJkBanner.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/categoryJkLine.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkCabinet.vue 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkCabinetGrid.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkCabinetLog.vue 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkCustomer.vue 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkIccard.vue 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkKeys.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkLine.vue 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkOrders.vue 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkSketch.vue 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkSketchCustomer.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkSketchLine.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/jkVersion.vue 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/warning.vue 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/warningPush.vue 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/warningRule.vue 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/warningRuleDetail.vue 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkCabinetController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkCabinetGridController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkCabinetLogController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkCustomerController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkIccardController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkKeysController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkLineController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkOrdersController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkSketchController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkSketchCustomerController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkSketchLineController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkVersionController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WarningController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WarningPushController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WarningRuleController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WarningRuleDetailController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WarningCloudController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/WarningPushMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCustomer.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkIccard.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkKeys.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkLine.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkOrders.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkSketch.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkSketchCustomer.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkSketchLine.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkVersion.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Warning.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningPush.java 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningRule.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningRuleDetail.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WarningService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningPushServiceImpl.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/public/template/jkCustomerTmeplate.xlsx
Binary files differ
admin/public/template/jkLineTemplate.xlsx
Binary files differ
admin/public/template/jkOrdersTemplate.xlsx
Binary files differ
admin/src/api/business/jkCabinet.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinet/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinet/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinet/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinet/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkCabinet/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/jkCabinet/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/jkCabinetGrid.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinetGrid/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkCabinetGrid/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/jkCabinetGrid/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/jkCabinetLog.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinetLog/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinetLog/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinetLog/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCabinetLog/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkCabinetLog/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/jkCabinetLog/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/jkCustomer.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCustomer/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCustomer/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCustomer/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/jkCustomer/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkCustomer/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/jkCustomer/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/jkIccard.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/jkIccard/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/jkIccard/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/jkIccard/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/jkIccard/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkIccard/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/jkIccard/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/jkKeys.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/jkKeys/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/jkKeys/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/jkKeys/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/jkKeys/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkKeys/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/jkKeys/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/jkLine.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/jkLine/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/jkLine/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/jkLine/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/jkLine/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkLine/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/jkLine/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/jkOrders.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/jkOrders/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/jkOrders/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/jkOrders/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/jkOrders/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkOrders/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/jkOrders/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/jkSketch.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/business/jkSketch/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/business/jkSketch/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/business/jkSketch/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/business/jkSketch/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkSketch/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/business/jkSketch/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/jkSketchCustomer.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/jkSketchCustomer/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/jkSketchCustomer/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/jkSketchCustomer/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/jkSketchCustomer/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkSketchCustomer/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/jkSketchCustomer/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/jkSketchLine.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/jkSketchLine/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/jkSketchLine/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/jkSketchLine/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/jkSketchLine/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkSketchLine/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/jkSketchLine/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/jkVersion.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/jkVersion/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/jkVersion/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/jkVersion/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/jkVersion/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/jkVersion/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/jkVersion/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/warning.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/warning/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/warning/exportExcel', data, {
    trim: true,
    download: true
  })
}
export function updateStatus (data) {
  return request.post('/visitsAdmin/cloudService/business/warning/updateStatus', data)
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/warning/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/warning/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/warning/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/warning/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/warningPush.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/warningPush/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/warningPush/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/warningPush/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/warningPush/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/warningPush/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/warningPush/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/warningRule.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/warningRule/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/warningRule/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/warningRule/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/warningRule/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/warningRule/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/warningRule/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/api/business/warningRuleDetail.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/visitsAdmin/cloudService/business/warningRuleDetail/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/visitsAdmin/cloudService/business/warningRuleDetail/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/warningRuleDetail/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/warningRuleDetail/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/warningRuleDetail/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/visitsAdmin/cloudService/business/warningRuleDetail/delete/batch', {
    params: {
      ids
    }
  })
}
admin/src/assets/style/style.scss
@@ -122,6 +122,12 @@
.status-red{
  color:red;
}
.status-yellow{
  color: orange;
}
.status-grey{
  color:#999;
}
.tip-warn {
  margin: 4px 0 25px 0;
  font-size: 12px;
admin/src/components/business/OperaCategoryJkBannerWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
<template>
  <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @confirm="confirm">
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="广告名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入广告名称" v-trim />
      </el-form-item>
      <el-form-item label="广告图" prop="imgurl">
        <div class="upload_wrap">
          <UploadFaceImg :file="{ 'imgurlfull': form.imgurlFull, 'imgurl': form.imgurl }" :uploadData="uploadData" :auto-crop=" { width: 500, height: 800 }"
                         @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false" @uploadBegin="isUploading = true" />
        </div>
      </el-form-item>
      <el-form-item label="排序码(降序)" prop="sortnum">
        <el-input type="number" v-model="form.sortnum" placeholder="请输入排序码" v-trim />
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input type="textarea" v-model="form.remark" placeholder="请输入备注" v-trim />
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadFaceImg from '@/components/common/UploadFaceImg'
import ImageCropper from '@/components/common/ImageCropper'
export default {
  name: 'OperaCategoryFileWindow',
  extends: BaseOpera,
  components: { GlobalWindow ,UploadFaceImg,ImageCropper},
  data () {
    return {
      // è¡¨å•数据
      form: {
        name: '',
        type: 3,
        imgurl: null,
        imgurlFull: null,
        sortnum: null,
        remark: null,
      },
      isUploading: false,
      uploadData: {
        folder: 'banners'
      },
      // éªŒè¯è§„则
      rules: {
        name: [
          { required: true, message: '请输入广告名称', trigger: 'blur' },
        ],
        imgurl: [
          { required: true, message: '请上传广告图', trigger: 'blur' },
        ]
      },
      dataList: []
    }
  },
  created () {
    this.config({
      api: '/business/category',
      'field.id': 'id'
    })
  },
  methods: {
    // ä¸Šä¼ å›¾ç‰‡
    uploadAvatarSuccess(file) {
      this.form.imgurl = file.imgurl
      this.form.imgurlFull = file.imgurlfull
    },
    open (title, target) {
      this.title = title
      this.visible = true
      // æ–°å»ºç»„织
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
          this.form.type = 3
        })
        return
      }
      // ç¼–辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
      })
    },
  }
}
</script>
<style lang="scss" scoped>
.upload_wrap {
  display: flex;
  align-items: center;
  .avatar-uploader {
    display: flex;
    align-items: center;
    justify-content: center;
  }
  ::v-deep .avatar {
    max-width: 90px;
    max-height: 90px;
  }
  .content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    font-size: 12px;
    color: #999999;
    margin-left: 12px;
    line-height: 24px;
  }
}
</style>
admin/src/components/business/OperaCategoryJkLineWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
<template>
  <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @confirm="confirm">
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="主线路名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入分类名称" v-trim />
      </el-form-item>
      <el-form-item label="排序码(降序)" prop="sortnum">
        <el-input type="number" v-model="form.sortnum" placeholder="请输入排序码" v-trim />
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input type="textarea" v-model="form.remark" placeholder="请输入备注" v-trim />
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaCategoryJkLineWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        name: '',
        type: 4,
        sortnum: null,
        remark: null
      },
      // éªŒè¯è§„则
      rules: {
        name: [
          { required: true, message: '请输入线路名称', trigger: 'blur' }
        ]
      },
      dataList: []
    }
  },
  created () {
    this.config({
      api: '/business/category',
      'field.id': 'id'
    })
  },
  methods: {
    open (title, target) {
      this.title = title
      this.visible = true
      // æ–°å»ºç»„织
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
          this.form.type = 4
        })
        return
      }
      // ç¼–辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
      })
    },
  }
}
</script>
admin/src/components/business/OperaJkCabinetGridWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="钥匙柜编码(关联jk_cabinet)" prop="cabinetId">
        <el-input v-model="form.cabinetId" placeholder="请输入钥匙柜编码(关联jk_cabinet)" v-trim/>
      </el-form-item>
      <el-form-item label="编码" prop="code">
        <el-input v-model="form.code" placeholder="请输入编码" v-trim/>
      </el-form-item>
      <el-form-item label="钥匙编码(关联jk_keys)" prop="keyId">
        <el-input v-model="form.keyId" placeholder="请输入钥匙编码(关联jk_keys)" v-trim/>
      </el-form-item>
      <el-form-item label="序列号" prop="serialNo">
        <el-input v-model="form.serialNo" placeholder="请输入序列号" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0未绑定 1在位 2借出" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0未绑定 1在位 2借出" v-trim/>
      </el-form-item>
      <el-form-item label="运行状态" prop="workingStatus">
        <el-input v-model="form.workingStatus" placeholder="请输入运行状态" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkCabinetGridWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        cabinetId: '',
        code: '',
        keyId: '',
        serialNo: '',
        status: '',
        workingStatus: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkCabinetGrid',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaJkCabinetLogWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="钥匙柜编码(关联jk_cabinet)" prop="cabinetId">
        <el-input v-model="form.cabinetId" placeholder="请输入钥匙柜编码(关联jk_cabinet)" v-trim/>
      </el-form-item>
      <el-form-item label="钥匙柜格编码(关联jk_cabinet_grid)" prop="gridId">
        <el-input v-model="form.gridId" placeholder="请输入钥匙柜格编码(关联jk_cabinet_grid)" v-trim/>
      </el-form-item>
      <el-form-item label="验证方式 0刷脸 1刷卡" prop="authType">
        <el-input v-model="form.authType" placeholder="请输入验证方式 0刷脸 1刷卡" v-trim/>
      </el-form-item>
      <el-form-item label="车辆编码(关联cars)" prop="carId">
        <el-input v-model="form.carId" placeholder="请输入车辆编码(关联cars)" v-trim/>
      </el-form-item>
      <el-form-item label="钥匙编码(关联jk_keys)" prop="keyId">
        <el-input v-model="form.keyId" placeholder="请输入钥匙编码(关联jk_keys)" v-trim/>
      </el-form-item>
      <el-form-item label="人员编码(关联member)" prop="memberId">
        <el-input v-model="form.memberId" placeholder="请输入人员编码(关联member)" v-trim/>
      </el-form-item>
      <el-form-item label="钥匙信息(车牌号-钥匙编码)" prop="keyInfo">
        <el-input v-model="form.keyInfo" placeholder="请输入钥匙信息(车牌号-钥匙编码)" v-trim/>
      </el-form-item>
      <el-form-item label="领取规则 0随车 1随派车单" prop="roleType">
        <el-input v-model="form.roleType" placeholder="请输入领取规则 0随车 1随派车单" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0成功 1失败" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0成功 1失败" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkCabinetLogWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        cabinetId: '',
        gridId: '',
        authType: '',
        carId: '',
        keyId: '',
        memberId: '',
        keyInfo: '',
        roleType: '',
        status: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkCabinetLog',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaJkCabinetWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,146 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="设备编号" prop="code">
        <el-input v-model="form.code" placeholder="请输入设备编号" v-trim/>
      </el-form-item>
      <el-form-item label="设备名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入设备名称" v-trim/>
      </el-form-item>
      <el-form-item label="设备ID" prop="devId">
        <el-input v-model="form.devId" placeholder="请输入设备ID" v-trim/>
      </el-form-item>
      <el-form-item label="序列号" prop="serialNo">
        <el-input v-model="form.serialNo" placeholder="请输入序列号" v-trim/>
      </el-form-item>
      <el-form-item label="通讯地址" prop="linkAddr">
        <el-input v-model="form.linkAddr" placeholder="请输入通讯地址" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0未绑定 1在位 2借出" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0未绑定 1在位 2借出" v-trim/>
      </el-form-item>
      <el-form-item label="端口" prop="port">
        <el-input v-model="form.port" placeholder="请输入端口" v-trim/>
      </el-form-item>
      <el-form-item label="设备管理员编码(关联member)" prop="managerId">
        <el-input v-model="form.managerId" placeholder="请输入设备管理员编码(关联member)" v-trim/>
      </el-form-item>
      <el-form-item label="使用时长(秒)" prop="useTime">
        <el-input v-model="form.useTime" placeholder="请输入使用时长(秒)" v-trim/>
      </el-form-item>
      <el-form-item label="是否双重验证 0否 1是" prop="doubleAuth">
        <el-input v-model="form.doubleAuth" placeholder="请输入是否双重验证 0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="验证人编码(关联member)" prop="authMemberId">
        <el-input v-model="form.authMemberId" placeholder="请输入验证人编码(关联member)" v-trim/>
      </el-form-item>
      <el-form-item label="排数" prop="rowNum">
        <el-input v-model="form.rowNum" placeholder="请输入排数" v-trim/>
      </el-form-item>
      <el-form-item label="列数" prop="columnNum">
        <el-input v-model="form.columnNum" placeholder="请输入列数" v-trim/>
      </el-form-item>
      <el-form-item label="最后通讯时间" prop="haertTime">
        <el-date-picker v-model="form.haertTime" value-format="yyyy-MM-dd" placeholder="请输入最后通讯时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="所在位置" prop="lacation">
        <el-input v-model="form.lacation" placeholder="请输入所在位置" v-trim/>
      </el-form-item>
      <el-form-item label="经度" prop="longitude">
        <el-input v-model="form.longitude" placeholder="请输入经度" v-trim/>
      </el-form-item>
      <el-form-item label="维度" prop="latitude">
        <el-input v-model="form.latitude" placeholder="请输入维度" v-trim/>
      </el-form-item>
      <el-form-item label="编码方式 0自动编码 1手动编码" prop="noType">
        <el-input v-model="form.noType" placeholder="请输入编码方式 0自动编码 1手动编码" v-trim/>
      </el-form-item>
      <el-form-item label="编码前缀" prop="noPrefix">
        <el-input v-model="form.noPrefix" placeholder="请输入编码前缀" v-trim/>
      </el-form-item>
      <el-form-item label="编码位数" prop="noLength">
        <el-input v-model="form.noLength" placeholder="请输入编码位数" v-trim/>
      </el-form-item>
      <el-form-item label="起始编码" prop="noIndex">
        <el-input v-model="form.noIndex" placeholder="请输入起始编码" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkCabinetWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        code: '',
        name: '',
        devId: '',
        serialNo: '',
        linkAddr: '',
        status: '',
        port: '',
        managerId: '',
        useTime: '',
        doubleAuth: '',
        authMemberId: '',
        rowNum: '',
        columnNum: '',
        haertTime: '',
        lacation: '',
        longitude: '',
        latitude: '',
        noType: '',
        noPrefix: '',
        noLength: '',
        noIndex: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkCabinet',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaJkCustomerWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入名称" v-trim/>
      </el-form-item>
      <el-form-item label="编码" prop="code">
        <el-input v-model="form.code" placeholder="请输入编码" v-trim/>
      </el-form-item>
      <el-form-item label="所在位置" prop="lacation">
        <el-input v-model="form.lacation" placeholder="请输入所在位置" v-trim/>
      </el-form-item>
      <el-form-item label="经度" prop="longitude">
        <el-input v-model="form.longitude" placeholder="请输入经度" v-trim/>
      </el-form-item>
      <el-form-item label="维度" prop="latitude">
        <el-input v-model="form.latitude" placeholder="请输入维度" v-trim/>
      </el-form-item>
      <el-form-item label="配送周期" prop="weeks">
        <el-input v-model="form.weeks" placeholder="请输入配送周期" v-trim/>
      </el-form-item>
      <el-form-item label="送货路线编码(关联jk_line)" prop="lineId">
        <el-input v-model="form.lineId" placeholder="请输入送货路线编码(关联jk_line)" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0正常 ç¦ç”¨" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0正常 ç¦ç”¨" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkCustomerWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        name: '',
        code: '',
        lacation: '',
        longitude: '',
        latitude: '',
        weeks: '',
        lineId: '',
        status: '',
        sortnum: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkCustomer',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaJkIccardWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="人员编码编码(关联member)" prop="memberId">
        <el-input v-model="form.memberId" placeholder="请输入人员编码编码(关联member)" v-trim/>
      </el-form-item>
      <el-form-item label="编码" prop="code">
        <el-input v-model="form.code" placeholder="请输入编码" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0禁用 1启用" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0禁用 1启用" v-trim/>
      </el-form-item>
      <el-form-item label="卡名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入卡名称" v-trim/>
      </el-form-item>
      <el-form-item label="钥匙柜编码(关联jk_cabinet)" prop="cabinetId">
        <el-input v-model="form.cabinetId" placeholder="请输入钥匙柜编码(关联jk_cabinet)" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkIccardWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        memberId: '',
        code: '',
        status: '',
        name: '',
        cabinetId: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkIccard',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaJkKeysWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="钥匙编号" prop="code">
        <el-input v-model="form.code" placeholder="请输入钥匙编号" v-trim/>
      </el-form-item>
      <el-form-item label="车牌号" prop="carCode">
        <el-input v-model="form.carCode" placeholder="请输入车牌号" v-trim/>
      </el-form-item>
      <el-form-item label="所属车辆(关联cars)" prop="carId">
        <el-input v-model="form.carId" placeholder="请输入所属车辆(关联cars)" v-trim/>
      </el-form-item>
      <el-form-item label="RFID标签" prop="rfidLable">
        <el-input v-model="form.rfidLable" placeholder="请输入RFID标签" v-trim/>
      </el-form-item>
      <el-form-item label="领取规则 0随车 1随派车单" prop="roleType">
        <el-input v-model="form.roleType" placeholder="请输入领取规则 0随车 1随派车单" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0未绑定 1在位 2借出" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0未绑定 1在位 2借出" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkKeysWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        code: '',
        carCode: '',
        carId: '',
        rfidLable: '',
        roleType: '',
        status: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkKeys',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaJkLineWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入名称" v-trim/>
      </el-form-item>
      <el-form-item label="班组编码(关联category)" prop="categoryId">
        <el-input v-model="form.categoryId" placeholder="请输入班组编码(关联category)" v-trim/>
      </el-form-item>
      <el-form-item label="所属车辆(关联cars)" prop="carId">
        <el-input v-model="form.carId" placeholder="请输入所属车辆(关联cars)" v-trim/>
      </el-form-item>
      <el-form-item label="最大客户量" prop="maxCustomer">
        <el-input v-model="form.maxCustomer" placeholder="请输入最大客户量" v-trim/>
      </el-form-item>
      <el-form-item label="最大订单量" prop="maxOrder">
        <el-input v-model="form.maxOrder" placeholder="请输入最大订单量" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0未绑定 1在位 2借出" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0未绑定 1在位 2借出" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkLineWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        name: '',
        categoryId: '',
        carId: '',
        maxCustomer: '',
        maxOrder: '',
        status: '',
        sortnum: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkLine',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaJkOrdersWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入名称" v-trim/>
      </el-form-item>
      <el-form-item label="销量" prop="num">
        <el-input v-model="form.num" placeholder="请输入销量" v-trim/>
      </el-form-item>
      <el-form-item label="送货路线编码(关联jk_line)" prop="lineId">
        <el-input v-model="form.lineId" placeholder="请输入送货路线编码(关联jk_line)" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0正常 ç¦ç”¨" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0正常 ç¦ç”¨" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
      <el-form-item label="日期" prop="dateInfo">
        <el-date-picker v-model="form.dateInfo" value-format="yyyy-MM-dd" placeholder="请输入日期"></el-date-picker>
      </el-form-item>
      <el-form-item label="同班组间客户位置距离数组,[{a:12,b:100},{a:13,b:200},...],a:客户编码,b:与客户a之间的距离" prop="distances">
        <el-input v-model="form.distances" placeholder="请输入同班组间客户位置距离数组,[{a:12,b:100},{a:13,b:200},...],a:客户编码,b:与客户a之间的距离" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkOrdersWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        name: '',
        num: '',
        lineId: '',
        status: '',
        sortnum: '',
        dateInfo: '',
        distances: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkOrders',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaJkSketchCustomerWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="线路编码(关联jk_sketch_line)" prop="sketchLineId">
        <el-input v-model="form.sketchLineId" placeholder="请输入线路编码(关联jk_sketch_line)" v-trim/>
      </el-form-item>
      <el-form-item label="线路优化编码(关联jk_sketch)" prop="sketchId">
        <el-input v-model="form.sketchId" placeholder="请输入线路优化编码(关联jk_sketch)" v-trim/>
      </el-form-item>
      <el-form-item label="送货量" prop="totalNum">
        <el-input v-model="form.totalNum" placeholder="请输入送货量" v-trim/>
      </el-form-item>
      <el-form-item label="客户数" prop="orderNum">
        <el-input v-model="form.orderNum" placeholder="请输入客户数" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
      <el-form-item label="日期" prop="dateInfo">
        <el-date-picker v-model="form.dateInfo" value-format="yyyy-MM-dd" placeholder="请输入日期"></el-date-picker>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkSketchCustomerWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        sketchLineId: '',
        sketchId: '',
        totalNum: '',
        orderNum: '',
        sortnum: '',
        dateInfo: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkSketchCustomer',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaJkSketchLineWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="线路编码(关联jk_line)" prop="lineId">
        <el-input v-model="form.lineId" placeholder="请输入线路编码(关联jk_line)" v-trim/>
      </el-form-item>
      <el-form-item label="线路优化编码(关联jk_sketch)" prop="sketchId">
        <el-input v-model="form.sketchId" placeholder="请输入线路优化编码(关联jk_sketch)" v-trim/>
      </el-form-item>
      <el-form-item label="送货量" prop="totalNum">
        <el-input v-model="form.totalNum" placeholder="请输入送货量" v-trim/>
      </el-form-item>
      <el-form-item label="客户数" prop="orderNum">
        <el-input v-model="form.orderNum" placeholder="请输入客户数" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
      <el-form-item label="日期" prop="dateInfo">
        <el-date-picker v-model="form.dateInfo" value-format="yyyy-MM-dd" placeholder="请输入日期"></el-date-picker>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkSketchLineWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        lineId: '',
        sketchId: '',
        totalNum: '',
        orderNum: '',
        sortnum: '',
        dateInfo: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkSketchLine',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaJkSketchWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="主线路编码(关联category)" prop="categoryId">
        <el-input v-model="form.categoryId" placeholder="请输入主线路编码(关联category)" v-trim/>
      </el-form-item>
      <el-form-item label="送货量" prop="totalNum">
        <el-input v-model="form.totalNum" placeholder="请输入送货量" v-trim/>
      </el-form-item>
      <el-form-item label="客户数" prop="orderNum">
        <el-input v-model="form.orderNum" placeholder="请输入客户数" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0未优化 1优化中 2已优化" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0未优化 1优化中 2已优化" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
      <el-form-item label="日期" prop="dateInfo">
        <el-date-picker v-model="form.dateInfo" value-format="yyyy-MM-dd" placeholder="请输入日期"></el-date-picker>
      </el-form-item>
      <el-form-item label="优化记录编码(作为key值存redis)" prop="jobId">
        <el-input v-model="form.jobId" placeholder="请输入优化记录编码(作为key值存redis)" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkSketchWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        categoryId: '',
        totalNum: '',
        orderNum: '',
        status: '',
        sortnum: '',
        dateInfo: '',
        jobId: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkSketch',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaJkVersionWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="版本号" prop="versionInfo">
        <el-input v-model="form.versionInfo" placeholder="请输入版本号" v-trim/>
      </el-form-item>
      <el-form-item label="安装包路径" prop="fileUrl">
        <el-input v-model="form.fileUrl" placeholder="请输入安装包路径" v-trim/>
      </el-form-item>
      <el-form-item label="安装版名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入安装版名称" v-trim/>
      </el-form-item>
      <el-form-item label="更新描述" prop="content">
        <el-input v-model="form.content" placeholder="请输入更新描述" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
      <el-form-item label="更新标题" prop="title">
        <el-input v-model="form.title" placeholder="请输入更新标题" v-trim/>
      </el-form-item>
      <el-form-item label="是否强制更新 0否 1是" prop="isForce">
        <el-input v-model="form.isForce" placeholder="请输入是否强制更新 0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="平台类型 0Android 1IOS" prop="type">
        <el-input v-model="form.type" placeholder="请输入平台类型 0Android 1IOS" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkVersionWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        versionInfo: '',
        fileUrl: '',
        name: '',
        content: '',
        sortnum: '',
        title: '',
        isForce: '',
        type: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/jkVersion',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaWarningPushWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="人员编码(关联member)" prop="memberId">
        <el-input v-model="form.memberId" placeholder="请输入人员编码(关联member)" v-trim/>
      </el-form-item>
      <el-form-item label="事件编码(关联warning)" prop="warningId">
        <el-input v-model="form.warningId" placeholder="请输入事件编码(关联warning)" v-trim/>
      </el-form-item>
      <el-form-item label="报警标题" prop="title">
        <el-input v-model="form.title" placeholder="请输入报警标题" v-trim/>
      </el-form-item>
      <el-form-item label="报警内容" prop="content">
        <el-input v-model="form.content" placeholder="请输入报警内容" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0未推送 1推送成功2推送失败" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0未推送 1推送成功2推送失败" v-trim/>
      </el-form-item>
      <el-form-item label="推送结果" prop="pushInfo">
        <el-input v-model="form.pushInfo" placeholder="请输入推送结果" v-trim/>
      </el-form-item>
      <el-form-item label="事件内容" prop="eventInfo">
        <el-input v-model="form.eventInfo" placeholder="请输入事件内容" v-trim/>
      </el-form-item>
      <el-form-item label="推送标识" prop="pushId">
        <el-input v-model="form.pushId" placeholder="请输入推送标识" v-trim/>
      </el-form-item>
      <el-form-item label="推送时间" prop="pushDate">
        <el-date-picker v-model="form.pushDate" value-format="yyyy-MM-dd" placeholder="请输入推送时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="推送方式 0钉钉通知" prop="pushType">
        <el-input v-model="form.pushType" placeholder="请输入推送方式 0钉钉通知" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaWarningPushWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        memberId: '',
        warningId: '',
        title: '',
        content: '',
        status: '',
        pushInfo: '',
        eventInfo: '',
        pushId: '',
        pushDate: '',
        pushType: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/warningPush',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaWarningRuleDetailWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="规则编码(关联warning_rule)" prop="ruleId">
        <el-input v-model="form.ruleId" placeholder="请输入规则编码(关联warning_rule)" v-trim/>
      </el-form-item>
      <el-form-item label="报警类型编码(关联warning)" prop="warningId">
        <el-input v-model="form.warningId" placeholder="请输入报警类型编码(关联warning)" v-trim/>
      </el-form-item>
      <el-form-item label="多规则间隔时间(秒)" prop="regionCode">
        <el-input v-model="form.regionCode" placeholder="请输入多规则间隔时间(秒)" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
      <el-form-item label="区域名称" prop="regionName">
        <el-input v-model="form.regionName" placeholder="请输入区域名称" v-trim/>
      </el-form-item>
      <el-form-item label="区域主键" prop="regionId">
        <el-input v-model="form.regionId" placeholder="请输入区域主键" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaWarningRuleDetailWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        ruleId: '',
        warningId: '',
        regionCode: '',
        sortnum: '',
        regionName: '',
        regionId: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/warningRuleDetail',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaWarningRuleWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="内部人员编码(关联member)" prop="memberId">
        <el-input v-model="form.memberId" placeholder="请输入内部人员编码(关联member)" v-trim/>
      </el-form-item>
      <el-form-item label="多规则间隔时间(秒)" prop="intervalSec">
        <el-input v-model="form.intervalSec" placeholder="请输入多规则间隔时间(秒)" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
      <el-form-item label="状态 0禁用 1启用" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态 0禁用 1启用" v-trim/>
      </el-form-item>
      <el-form-item label="报警类型编码(关联warning)" prop="warningId">
        <el-input v-model="form.warningId" placeholder="请输入报警类型编码(关联warning)" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaWarningRuleWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        memberId: '',
        intervalSec: '',
        sortnum: '',
        status: '',
        warningId: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/warningRule',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaWarningWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
<template>
  <GlobalWindow
    :title="title"
    width="50%"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="告警类型" prop="name">
        <el-input v-model="form.name" placeholder="请输入事件类型" v-trim/>
      </el-form-item>
      <el-form-item label="所属分类" prop="type">
        <el-select v-model="form.type" placeholder="请选择"  >
          <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="3"></el-option>
          <el-option label="天气预警" :value="4"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="事件编号" prop="code">
        <el-input v-model="form.code" placeholder="请输入关联对象编码" v-trim/>
      </el-form-item>
      <el-form-item label="事件等级" prop="level">
        <el-radio-group v-model="form.level">
          <el-radio :label="0">低</el-radio>
          <el-radio :label="1">中</el-radio>
          <el-radio :label="2">高</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="状态" prop="status">
        <el-radio-group v-model="form.status">
          <el-radio :label="0">禁用</el-radio>
          <el-radio :label="1">启用</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input type="number" v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="form.info" type="textarea" placeholder="请输入备注" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaWarningWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        name: '',
        info: '',
        type: 0,
        code: '',
        sortnum: '',
        level: 0,
        status: 0
      },
      // éªŒè¯è§„则
      rules: {
        name: [{ required: true, message: '请输入事件类型', trigger: 'blur' }],
        level: [{ required: true, message: '请输入事件等级', trigger: 'blur' }],
        status: [{ required: true, message: '请输入状态', trigger: 'blur' }],
        type: [{ required: true, message: '请选择所属分类', trigger: 'blur' }]
      }
    }
  },
  created () {
    this.config({
      api: '/business/warning',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/common/ImageCropper.vue
@@ -13,8 +13,8 @@
              :canMove="options.canMove"
              :output-size="options.outputSize"
              :centerBox="options.centerBox"
              :autoCropWidth="options.autoCropWidth"
              :autoCropHeight="options.autoCropHeight"
              :autoCropWidth="autoCrop.width || options.autoCropWidth"
              :autoCropHeight="autoCrop.height || options.autoCropHeight"
              @realTime="realTime"
          ></vue-cropper>
        </div>
@@ -28,7 +28,7 @@
<script>
import { VueCropper } from 'vue-cropper'
import {upload} from "@/api/system/common";
import { upload } from '@/api/system/common'
export default {
  name: 'ImageCropper',
  components: { VueCropper },
@@ -36,6 +36,12 @@
    imgSrc: {
      type: String,
      default: ''
    },
    autoCrop: {
      type: Object,
      default () {
        return { width: 500, height: 500 }
      }
    },
    // å›žæ˜¾ä¸Šæ¬¡ä¿å­˜çš„æˆªå›¾çš„位置
    location: {
@@ -76,7 +82,7 @@
        centerBox: true,
        height: 500,
        width: 500,
        outputSize:{width: 500, height: 500 },
        outputSize: 1,
        autoCropWidth: 500,
        autoCropHeight: 500,
        fixed: true,
@@ -94,7 +100,7 @@
  watch: {
  },
  methods: {
    getImagecropper(){
    getImagecropper () {
      return this.$refs.cropper
    },
    // å­¦ä¹ æˆªå›¾æ¡†å˜åŒ–事件
admin/src/components/common/UploadFaceImg.vue
@@ -21,7 +21,7 @@
        :visible.sync="updateImg"
        width="1000px"
        class="icon-dialog-wrapper dialong-com-style">
      <ImageCropper ref="iconShot" v-if="updateImg" :imgSrc="img" >
      <ImageCropper ref="iconShot" v-if="updateImg" :imgSrc="img"  :auto-crop="autoCrop">
      </ImageCropper>
      <span slot="footer" class="dialog-footer">
            <el-button v-if="loading">取 æ¶ˆ</el-button>
@@ -42,7 +42,17 @@
      type: Object,
      default: () => {}
    },
    tipsLabel: '',
    autoCrop: {
      type: Object,
      default () {
        return { width: 500, height: 500 }
      }
    },
    // eslint-disable-next-line vue/require-prop-type-constructor
    tipsLabel: {
      type: String,
      default: ''
    },
    customStyle: {
      type: String,
      default: 'width: 90px; height: 90px;'
@@ -52,7 +62,7 @@
  data () {
    return {
      loading: false,
      fileInfo:{},
      fileInfo: {},
      img: null,
      updateImg: false,
      imageSrc: null,
@@ -68,17 +78,17 @@
        console.log(fileData)
        const formData = new FormData()
        formData.append('folder', 'member')
        if(this.uploadData.isFace || this.uploadData.isFace == 0){
        formData.append('folder', this.uploadData.folder || 'member')
        if (this.uploadData.isFace || this.uploadData.isFace == 0) {
          formData.append('isFace', 0)
        }
        formData.append(
            'file',
            new File(
                [fileData], // å°†Blob类型转化成File类型
                this.fileInfo.name, // è®¾ç½®File类型的文件名称
                { type: this.fileInfo.type } // è®¾ç½®File类型的文件类型
            )
          'file',
          new File(
            [fileData], // å°†Blob类型转化成File类型
            this.fileInfo.name, // è®¾ç½®File类型的文件名称
            { type: this.fileInfo.type } // è®¾ç½®File类型的文件类型
          )
        )
        this.loading = true
        upload(formData).then(res => {
admin/src/components/common/UploadImage.vue
@@ -59,12 +59,11 @@
  },
  data() {
    return {
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadLocal',
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload',
      realList: [],
      srcList: [],
      tempIndex: 0,
      showViewer: false,
      showViewer: false
    }
  },
  watch: {
@@ -81,7 +80,6 @@
  },
  methods: {
    beforeUpload(file) {
      this.$emit('beginUpload')
      return true
    },
admin/src/views/business/categoryJkBanner.vue
@@ -13,7 +13,7 @@
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:category:create','business:category:delete']">
        <li><el-button type="primary" @click="$refs.OperaCategoryFileWindow.open('新建广告')" icon="el-icon-plus" v-permissions="['business:category:create']">新建</el-button></li>
        <li><el-button type="primary" @click="$refs.OperaCategoryJkBannerWindow.open('新建广告')" icon="el-icon-plus" v-permissions="['business:category:create']">新建</el-button></li>
        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">批量删除</el-button></li>
      </ul>
      <el-table
@@ -41,7 +41,7 @@
            fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaCategoryFileWindow.open('编辑广告',row)" v-permissions="['business:category:update']">编辑</el-button>
            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaCategoryJkBannerWindow.open('编辑广告',row)" v-permissions="['business:category:update']">编辑</el-button>
            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:category:delete']">删除</el-button>
          </template>
        </el-table-column>
@@ -54,7 +54,7 @@
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaCategoryFileWindow ref="OperaCategoryFileWindow" @success="handlePageChange"/>
    <OperaCategoryJkBannerWindow ref="OperaCategoryJkBannerWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
@@ -62,17 +62,17 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaCategoryFileWindow from '@/components/business/OperaCategoryFileWindow'
import OperaCategoryJkBannerWindow from '@/components/business/OperaCategoryJkBannerWindow'
export default {
  name: 'areaSet',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaCategoryFileWindow },
  components: { TableLayout, Pagination, OperaCategoryJkBannerWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        name: '',
        type: 4
        type: 3
      }
    }
  },
admin/src/views/business/categoryJkLine.vue
@@ -13,7 +13,7 @@
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:category:create','business:category:delete']">
        <li><el-button type="primary" @click="$refs.OperaCategoryFileWindow.open('新建主线路')" icon="el-icon-plus" v-permissions="['business:category:create']">新建</el-button></li>
        <li><el-button type="primary" @click="$refs.OperaCategoryJkLineWindow.open('新建主线路')" icon="el-icon-plus" v-permissions="['business:category:create']">新建</el-button></li>
        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">批量删除</el-button></li>
      </ul>
      <el-table
@@ -34,7 +34,7 @@
            fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaCategoryFileWindow.open('编辑主线路',row)" v-permissions="['business:category:update']">编辑</el-button>
            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaCategoryJkLineWindow.open('编辑主线路',row)" v-permissions="['business:category:update']">编辑</el-button>
            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:category:delete']">删除</el-button>
          </template>
        </el-table-column>
@@ -47,7 +47,7 @@
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaCategoryFileWindow ref="OperaCategoryFileWindow" @success="handlePageChange"/>
    <OperaCategoryJkLineWindow ref="OperaCategoryJkLineWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
@@ -55,11 +55,11 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaCategoryFileWindow from '@/components/business/OperaCategoryFileWindow'
import OperaCategoryJkLineWindow from '@/components/business/OperaCategoryJkLineWindow'
export default {
  name: 'areaSet',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaCategoryFileWindow },
  components: { TableLayout, Pagination, OperaCategoryJkLineWindow },
  data () {
    return {
      // æœç´¢
admin/src/views/business/jkCabinet.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,214 @@
<template>
  <TableLayout :permissions="['business:jkcabinet:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" 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="name">
        <el-input v-model="searchForm.name" placeholder="请输入设备名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="设备ID" prop="devId">
        <el-input v-model="searchForm.devId" placeholder="请输入设备ID" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="序列号" prop="serialNo">
        <el-input v-model="searchForm.serialNo" placeholder="请输入序列号" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="通讯地址" prop="linkAddr">
        <el-input v-model="searchForm.linkAddr" placeholder="请输入通讯地址" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态 0未绑定 1在位 2借出" prop="status">
        <el-input v-model="searchForm.status" placeholder="请输入状态 0未绑定 1在位 2借出" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="端口" prop="port">
        <el-input v-model="searchForm.port" placeholder="请输入端口" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="设备管理员编码(关联member)" prop="managerId">
        <el-input v-model="searchForm.managerId" placeholder="请输入设备管理员编码(关联member)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="使用时长(秒)" prop="useTime">
        <el-input v-model="searchForm.useTime" placeholder="请输入使用时长(秒)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="是否双重验证 0否 1是" prop="doubleAuth">
        <el-input v-model="searchForm.doubleAuth" placeholder="请输入是否双重验证 0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="验证人编码(关联member)" prop="authMemberId">
        <el-input v-model="searchForm.authMemberId" placeholder="请输入验证人编码(关联member)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="排数" prop="rowNum">
        <el-input v-model="searchForm.rowNum" placeholder="请输入排数" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="列数" prop="columnNum">
        <el-input v-model="searchForm.columnNum" placeholder="请输入列数" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="最后通讯时间" prop="haertTime">
        <el-date-picker v-model="searchForm.haertTime" value-format="yyyy-MM-dd" placeholder="请输入最后通讯时间" @change="search"/>
      </el-form-item>
      <el-form-item label="所在位置" prop="lacation">
        <el-input v-model="searchForm.lacation" placeholder="请输入所在位置" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="经度" prop="longitude">
        <el-input v-model="searchForm.longitude" placeholder="请输入经度" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="维度" prop="latitude">
        <el-input v-model="searchForm.latitude" placeholder="请输入维度" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="编码方式 0自动编码 1手动编码" prop="noType">
        <el-input v-model="searchForm.noType" placeholder="请输入编码方式 0自动编码 1手动编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="编码前缀" prop="noPrefix">
        <el-input v-model="searchForm.noPrefix" placeholder="请输入编码前缀" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="编码位数" prop="noLength">
        <el-input v-model="searchForm.noLength" placeholder="请输入编码位数" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="起始编码" prop="noIndex">
        <el-input v-model="searchForm.noIndex" placeholder="请输入起始编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jkcabinet:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <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>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="code" label="设备编号" min-width="100px"></el-table-column>
        <el-table-column prop="name" label="设备名称" min-width="100px"></el-table-column>
        <el-table-column prop="devId" label="设备ID" min-width="100px"></el-table-column>
        <el-table-column prop="serialNo" label="序列号" min-width="100px"></el-table-column>
        <el-table-column prop="linkAddr" label="通讯地址" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0未绑定 1在位 2借出" min-width="100px"></el-table-column>
        <el-table-column prop="port" label="端口" min-width="100px"></el-table-column>
        <el-table-column prop="managerId" label="设备管理员编码(关联member)" min-width="100px"></el-table-column>
        <el-table-column prop="useTime" label="使用时长(秒)" min-width="100px"></el-table-column>
        <el-table-column prop="doubleAuth" label="是否双重验证 0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="authMemberId" label="验证人编码(关联member)" min-width="100px"></el-table-column>
        <el-table-column prop="rowNum" label="排数" min-width="100px"></el-table-column>
        <el-table-column prop="columnNum" label="列数" min-width="100px"></el-table-column>
        <el-table-column prop="haertTime" label="最后通讯时间" min-width="100px"></el-table-column>
        <el-table-column prop="lacation" label="所在位置" min-width="100px"></el-table-column>
        <el-table-column prop="longitude" label="经度" min-width="100px"></el-table-column>
        <el-table-column prop="latitude" label="维度" min-width="100px"></el-table-column>
        <el-table-column prop="noType" label="编码方式 0自动编码 1手动编码" min-width="100px"></el-table-column>
        <el-table-column prop="noPrefix" label="编码前缀" min-width="100px"></el-table-column>
        <el-table-column prop="noLength" label="编码位数" min-width="100px"></el-table-column>
        <el-table-column prop="noIndex" label="起始编码" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jkcabinet:update', 'business:jkcabinet:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkCabinetWindow.open('编辑钥匙柜基本信息表', row)" icon="el-icon-edit" v-permissions="['business:jkcabinet:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkcabinet:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkCabinetWindow ref="operaJkCabinetWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkCabinetWindow from '@/components/business/OperaJkCabinetWindow'
export default {
  name: 'JkCabinet',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkCabinetWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        code: '',
        name: '',
        devId: '',
        serialNo: '',
        linkAddr: '',
        status: '',
        port: '',
        managerId: '',
        useTime: '',
        doubleAuth: '',
        authMemberId: '',
        rowNum: '',
        columnNum: '',
        haertTime: '',
        lacation: '',
        longitude: '',
        latitude: '',
        noType: '',
        noPrefix: '',
        noLength: '',
        noIndex: ''
      }
    }
  },
  created () {
    this.config({
      module: '钥匙柜基本信息表',
      api: '/business/jkCabinet',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/jkCabinetGrid.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
<template>
  <TableLayout :permissions="['business:jkcabinetgrid:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="钥匙柜编码(关联jk_cabinet)" prop="cabinetId">
        <el-input v-model="searchForm.cabinetId" placeholder="请输入钥匙柜编码(关联jk_cabinet)" @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="钥匙编码(关联jk_keys)" prop="keyId">
        <el-input v-model="searchForm.keyId" placeholder="请输入钥匙编码(关联jk_keys)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="序列号" prop="serialNo">
        <el-input v-model="searchForm.serialNo" placeholder="请输入序列号" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态 0未绑定 1在位 2借出" prop="status">
        <el-input v-model="searchForm.status" placeholder="请输入状态 0未绑定 1在位 2借出" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="运行状态" prop="workingStatus">
        <el-input v-model="searchForm.workingStatus" placeholder="请输入运行状态" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jkcabinetgrid:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:jkcabinetgrid:create', 'business:jkcabinetgrid:delete']">
        <li><el-button type="primary" @click="$refs.operaJkCabinetGridWindow.open('新建钥匙柜柜格基本信息表')" icon="el-icon-plus" v-permissions="['business:jkcabinetgrid:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkcabinetgrid:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="cabinetId" label="钥匙柜编码(关联jk_cabinet)" min-width="100px"></el-table-column>
        <el-table-column prop="code" label="编码" min-width="100px"></el-table-column>
        <el-table-column prop="keyId" label="钥匙编码(关联jk_keys)" min-width="100px"></el-table-column>
        <el-table-column prop="serialNo" label="序列号" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0未绑定 1在位 2借出" min-width="100px"></el-table-column>
        <el-table-column prop="workingStatus" label="运行状态" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jkcabinetgrid:update', 'business:jkcabinetgrid:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkCabinetGridWindow.open('编辑钥匙柜柜格基本信息表', row)" icon="el-icon-edit" v-permissions="['business:jkcabinetgrid:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkcabinetgrid:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkCabinetGridWindow ref="operaJkCabinetGridWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkCabinetGridWindow from '@/components/business/OperaJkCabinetGridWindow'
export default {
  name: 'JkCabinetGrid',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkCabinetGridWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        cabinetId: '',
        code: '',
        keyId: '',
        serialNo: '',
        status: '',
        workingStatus: ''
      }
    }
  },
  created () {
    this.config({
      module: '钥匙柜柜格基本信息表',
      api: '/business/jkCabinetGrid',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/jkCabinetLog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,154 @@
<template>
  <TableLayout :permissions="['business:jkcabinetlog:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="钥匙柜编码(关联jk_cabinet)" prop="cabinetId">
        <el-input v-model="searchForm.cabinetId" placeholder="请输入钥匙柜编码(关联jk_cabinet)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="钥匙柜格编码(关联jk_cabinet_grid)" prop="gridId">
        <el-input v-model="searchForm.gridId" placeholder="请输入钥匙柜格编码(关联jk_cabinet_grid)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="验证方式 0刷脸 1刷卡" prop="authType">
        <el-input v-model="searchForm.authType" placeholder="请输入验证方式 0刷脸 1刷卡" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="车辆编码(关联cars)" prop="carId">
        <el-input v-model="searchForm.carId" placeholder="请输入车辆编码(关联cars)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="钥匙编码(关联jk_keys)" prop="keyId">
        <el-input v-model="searchForm.keyId" placeholder="请输入钥匙编码(关联jk_keys)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="人员编码(关联member)" prop="memberId">
        <el-input v-model="searchForm.memberId" placeholder="请输入人员编码(关联member)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="钥匙信息(车牌号-钥匙编码)" prop="keyInfo">
        <el-input v-model="searchForm.keyInfo" placeholder="请输入钥匙信息(车牌号-钥匙编码)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="领取规则 0随车 1随派车单" prop="roleType">
        <el-input v-model="searchForm.roleType" placeholder="请输入领取规则 0随车 1随派车单" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态 0成功 1失败" prop="status">
        <el-input v-model="searchForm.status" placeholder="请输入状态 0成功 1失败" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jkcabinetlog:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:jkcabinetlog:create', 'business:jkcabinetlog:delete']">
        <li><el-button type="primary" @click="$refs.operaJkCabinetLogWindow.open('新建钥匙柜开关门记录')" icon="el-icon-plus" v-permissions="['business:jkcabinetlog:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkcabinetlog:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="cabinetId" label="钥匙柜编码(关联jk_cabinet)" min-width="100px"></el-table-column>
        <el-table-column prop="gridId" label="钥匙柜格编码(关联jk_cabinet_grid)" min-width="100px"></el-table-column>
        <el-table-column prop="authType" label="验证方式 0刷脸 1刷卡" min-width="100px"></el-table-column>
        <el-table-column prop="carId" label="车辆编码(关联cars)" min-width="100px"></el-table-column>
        <el-table-column prop="keyId" label="钥匙编码(关联jk_keys)" min-width="100px"></el-table-column>
        <el-table-column prop="memberId" label="人员编码(关联member)" min-width="100px"></el-table-column>
        <el-table-column prop="keyInfo" label="钥匙信息(车牌号-钥匙编码)" min-width="100px"></el-table-column>
        <el-table-column prop="roleType" label="领取规则 0随车 1随派车单" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0成功 1失败" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jkcabinetlog:update', 'business:jkcabinetlog:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkCabinetLogWindow.open('编辑钥匙柜开关门记录', row)" icon="el-icon-edit" v-permissions="['business:jkcabinetlog:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkcabinetlog:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkCabinetLogWindow ref="operaJkCabinetLogWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkCabinetLogWindow from '@/components/business/OperaJkCabinetLogWindow'
export default {
  name: 'JkCabinetLog',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkCabinetLogWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        cabinetId: '',
        gridId: '',
        authType: '',
        carId: '',
        keyId: '',
        memberId: '',
        keyInfo: '',
        roleType: '',
        status: ''
      }
    }
  },
  created () {
    this.config({
      module: '钥匙柜开关门记录',
      api: '/business/jkCabinetLog',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/jkCustomer.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,154 @@
<template>
  <TableLayout :permissions="['business:jkcustomer:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <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>
      <el-form-item label="所在位置" prop="lacation">
        <el-input v-model="searchForm.lacation" placeholder="请输入所在位置" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="经度" prop="longitude">
        <el-input v-model="searchForm.longitude" placeholder="请输入经度" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="维度" prop="latitude">
        <el-input v-model="searchForm.latitude" placeholder="请输入维度" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="配送周期" prop="weeks">
        <el-input v-model="searchForm.weeks" placeholder="请输入配送周期" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="送货路线编码(关联jk_line)" prop="lineId">
        <el-input v-model="searchForm.lineId" placeholder="请输入送货路线编码(关联jk_line)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态 0正常 ç¦ç”¨" prop="status">
        <el-input v-model="searchForm.status" placeholder="请输入状态 0正常 ç¦ç”¨" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="searchForm.sortnum" placeholder="请输入排序码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jkcustomer:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:jkcustomer:create', 'business:jkcustomer:delete']">
        <li><el-button type="primary" @click="$refs.operaJkCustomerWindow.open('新建交控-客户信息表')" icon="el-icon-plus" v-permissions="['business:jkcustomer:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkcustomer:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="name" label="名称" min-width="100px"></el-table-column>
        <el-table-column prop="code" label="编码" min-width="100px"></el-table-column>
        <el-table-column prop="lacation" label="所在位置" min-width="100px"></el-table-column>
        <el-table-column prop="longitude" label="经度" min-width="100px"></el-table-column>
        <el-table-column prop="latitude" label="维度" min-width="100px"></el-table-column>
        <el-table-column prop="weeks" label="配送周期" min-width="100px"></el-table-column>
        <el-table-column prop="lineId" label="送货路线编码(关联jk_line)" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0正常 ç¦ç”¨" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jkcustomer:update', 'business:jkcustomer:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkCustomerWindow.open('编辑交控-客户信息表', row)" icon="el-icon-edit" v-permissions="['business:jkcustomer:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkcustomer:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkCustomerWindow ref="operaJkCustomerWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkCustomerWindow from '@/components/business/OperaJkCustomerWindow'
export default {
  name: 'JkCustomer',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkCustomerWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        name: '',
        code: '',
        lacation: '',
        longitude: '',
        latitude: '',
        weeks: '',
        lineId: '',
        status: '',
        sortnum: ''
      }
    }
  },
  created () {
    this.config({
      module: '交控-客户信息表',
      api: '/business/jkCustomer',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/jkIccard.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,134 @@
<template>
  <TableLayout :permissions="['business:jkiccard:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="人员编码编码(关联member)" prop="memberId">
        <el-input v-model="searchForm.memberId" placeholder="请输入人员编码编码(关联member)" @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="状态 0禁用 1启用" prop="status">
        <el-input v-model="searchForm.status" placeholder="请输入状态 0禁用 1启用" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <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="钥匙柜编码(关联jk_cabinet)" prop="cabinetId">
        <el-input v-model="searchForm.cabinetId" placeholder="请输入钥匙柜编码(关联jk_cabinet)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jkiccard:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:jkiccard:create', 'business:jkiccard:delete']">
        <li><el-button type="primary" @click="$refs.operaJkIccardWindow.open('新建钥匙柜IC卡信息表')" icon="el-icon-plus" v-permissions="['business:jkiccard:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkiccard:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="memberId" label="人员编码编码(关联member)" min-width="100px"></el-table-column>
        <el-table-column prop="code" label="编码" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0禁用 1启用" min-width="100px"></el-table-column>
        <el-table-column prop="name" label="卡名称" min-width="100px"></el-table-column>
        <el-table-column prop="cabinetId" label="钥匙柜编码(关联jk_cabinet)" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jkiccard:update', 'business:jkiccard:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkIccardWindow.open('编辑钥匙柜IC卡信息表', row)" icon="el-icon-edit" v-permissions="['business:jkiccard:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkiccard:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkIccardWindow ref="operaJkIccardWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkIccardWindow from '@/components/business/OperaJkIccardWindow'
export default {
  name: 'JkIccard',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkIccardWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        memberId: '',
        code: '',
        status: '',
        name: '',
        cabinetId: ''
      }
    }
  },
  created () {
    this.config({
      module: '钥匙柜IC卡信息表',
      api: '/business/jkIccard',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/jkKeys.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
<template>
  <TableLayout :permissions="['business:jkkeys:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" 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="carCode">
        <el-input v-model="searchForm.carCode" placeholder="请输入车牌号" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="所属车辆(关联cars)" prop="carId">
        <el-input v-model="searchForm.carId" placeholder="请输入所属车辆(关联cars)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="RFID标签" prop="rfidLable">
        <el-input v-model="searchForm.rfidLable" placeholder="请输入RFID标签" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="领取规则 0随车 1随派车单" prop="roleType">
        <el-input v-model="searchForm.roleType" placeholder="请输入领取规则 0随车 1随派车单" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态 0未绑定 1在位 2借出" prop="status">
        <el-input v-model="searchForm.status" placeholder="请输入状态 0未绑定 1在位 2借出" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jkkeys:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:jkkeys:create', 'business:jkkeys:delete']">
        <li><el-button type="primary" @click="$refs.operaJkKeysWindow.open('新建钥匙基本信息表')" icon="el-icon-plus" v-permissions="['business:jkkeys:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkkeys:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="code" label="钥匙编号" min-width="100px"></el-table-column>
        <el-table-column prop="carCode" label="车牌号" min-width="100px"></el-table-column>
        <el-table-column prop="carId" label="所属车辆(关联cars)" min-width="100px"></el-table-column>
        <el-table-column prop="rfidLable" label="RFID标签" min-width="100px"></el-table-column>
        <el-table-column prop="roleType" label="领取规则 0随车 1随派车单" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0未绑定 1在位 2借出" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jkkeys:update', 'business:jkkeys:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkKeysWindow.open('编辑钥匙基本信息表', row)" icon="el-icon-edit" v-permissions="['business:jkkeys:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkkeys:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkKeysWindow ref="operaJkKeysWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkKeysWindow from '@/components/business/OperaJkKeysWindow'
export default {
  name: 'JkKeys',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkKeysWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        code: '',
        carCode: '',
        carId: '',
        rfidLable: '',
        roleType: '',
        status: ''
      }
    }
  },
  created () {
    this.config({
      module: '钥匙基本信息表',
      api: '/business/jkKeys',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/jkLine.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,144 @@
<template>
  <TableLayout :permissions="['business:jkline:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <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="班组编码(关联category)" prop="categoryId">
        <el-input v-model="searchForm.categoryId" placeholder="请输入班组编码(关联category)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="所属车辆(关联cars)" prop="carId">
        <el-input v-model="searchForm.carId" placeholder="请输入所属车辆(关联cars)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="最大客户量" prop="maxCustomer">
        <el-input v-model="searchForm.maxCustomer" placeholder="请输入最大客户量" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="最大订单量" prop="maxOrder">
        <el-input v-model="searchForm.maxOrder" placeholder="请输入最大订单量" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态 0未绑定 1在位 2借出" prop="status">
        <el-input v-model="searchForm.status" placeholder="请输入状态 0未绑定 1在位 2借出" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="searchForm.sortnum" placeholder="请输入排序码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jkline:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:jkline:create', 'business:jkline:delete']">
        <li><el-button type="primary" @click="$refs.operaJkLineWindow.open('新建交控-线路信息表')" icon="el-icon-plus" v-permissions="['business:jkline:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkline:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="name" label="名称" min-width="100px"></el-table-column>
        <el-table-column prop="categoryId" label="班组编码(关联category)" min-width="100px"></el-table-column>
        <el-table-column prop="carId" label="所属车辆(关联cars)" min-width="100px"></el-table-column>
        <el-table-column prop="maxCustomer" label="最大客户量" min-width="100px"></el-table-column>
        <el-table-column prop="maxOrder" label="最大订单量" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0未绑定 1在位 2借出" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jkline:update', 'business:jkline:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkLineWindow.open('编辑交控-线路信息表', row)" icon="el-icon-edit" v-permissions="['business:jkline:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkline:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkLineWindow ref="operaJkLineWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkLineWindow from '@/components/business/OperaJkLineWindow'
export default {
  name: 'JkLine',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkLineWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        name: '',
        categoryId: '',
        carId: '',
        maxCustomer: '',
        maxOrder: '',
        status: '',
        sortnum: ''
      }
    }
  },
  created () {
    this.config({
      module: '交控-线路信息表',
      api: '/business/jkLine',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/jkOrders.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,144 @@
<template>
  <TableLayout :permissions="['business:jkorders:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <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="num">
        <el-input v-model="searchForm.num" placeholder="请输入销量" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="送货路线编码(关联jk_line)" prop="lineId">
        <el-input v-model="searchForm.lineId" placeholder="请输入送货路线编码(关联jk_line)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态 0正常 ç¦ç”¨" prop="status">
        <el-input v-model="searchForm.status" placeholder="请输入状态 0正常 ç¦ç”¨" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="searchForm.sortnum" placeholder="请输入排序码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="日期" prop="dateInfo">
        <el-date-picker v-model="searchForm.dateInfo" value-format="yyyy-MM-dd" placeholder="请输入日期" @change="search"/>
      </el-form-item>
      <el-form-item label="同班组间客户位置距离数组,[{a:12,b:100},{a:13,b:200},...],a:客户编码,b:与客户a之间的距离" prop="distances">
        <el-input v-model="searchForm.distances" placeholder="请输入同班组间客户位置距离数组,[{a:12,b:100},{a:13,b:200},...],a:客户编码,b:与客户a之间的距离" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jkorders:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:jkorders:create', 'business:jkorders:delete']">
        <li><el-button type="primary" @click="$refs.operaJkOrdersWindow.open('新建交控-销售订单信息表')" icon="el-icon-plus" v-permissions="['business:jkorders:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkorders:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="name" label="名称" min-width="100px"></el-table-column>
        <el-table-column prop="num" label="销量" min-width="100px"></el-table-column>
        <el-table-column prop="lineId" label="送货路线编码(关联jk_line)" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0正常 ç¦ç”¨" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column prop="dateInfo" label="日期" min-width="100px"></el-table-column>
        <el-table-column prop="distances" label="同班组间客户位置距离数组,[{a:12,b:100},{a:13,b:200},...],a:客户编码,b:与客户a之间的距离" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jkorders:update', 'business:jkorders:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkOrdersWindow.open('编辑交控-销售订单信息表', row)" icon="el-icon-edit" v-permissions="['business:jkorders:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkorders:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkOrdersWindow ref="operaJkOrdersWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkOrdersWindow from '@/components/business/OperaJkOrdersWindow'
export default {
  name: 'JkOrders',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkOrdersWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        name: '',
        num: '',
        lineId: '',
        status: '',
        sortnum: '',
        dateInfo: '',
        distances: ''
      }
    }
  },
  created () {
    this.config({
      module: '交控-销售订单信息表',
      api: '/business/jkOrders',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/jkSketch.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,144 @@
<template>
  <TableLayout :permissions="['business:jksketch:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="主线路编码(关联category)" prop="categoryId">
        <el-input v-model="searchForm.categoryId" placeholder="请输入主线路编码(关联category)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="送货量" prop="totalNum">
        <el-input v-model="searchForm.totalNum" placeholder="请输入送货量" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="客户数" prop="orderNum">
        <el-input v-model="searchForm.orderNum" placeholder="请输入客户数" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态 0未优化 1优化中 2已优化" prop="status">
        <el-input v-model="searchForm.status" placeholder="请输入状态 0未优化 1优化中 2已优化" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="searchForm.sortnum" placeholder="请输入排序码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="日期" prop="dateInfo">
        <el-date-picker v-model="searchForm.dateInfo" value-format="yyyy-MM-dd" placeholder="请输入日期" @change="search"/>
      </el-form-item>
      <el-form-item label="优化记录编码(作为key值存redis)" prop="jobId">
        <el-input v-model="searchForm.jobId" placeholder="请输入优化记录编码(作为key值存redis)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jksketch:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:jksketch:create', 'business:jksketch:delete']">
        <li><el-button type="primary" @click="$refs.operaJkSketchWindow.open('新建交控-线路优化记录信息表')" icon="el-icon-plus" v-permissions="['business:jksketch:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jksketch:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="categoryId" label="主线路编码(关联category)" min-width="100px"></el-table-column>
        <el-table-column prop="totalNum" label="送货量" min-width="100px"></el-table-column>
        <el-table-column prop="orderNum" label="客户数" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0未优化 1优化中 2已优化" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column prop="dateInfo" label="日期" min-width="100px"></el-table-column>
        <el-table-column prop="jobId" label="优化记录编码(作为key值存redis)" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jksketch:update', 'business:jksketch:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkSketchWindow.open('编辑交控-线路优化记录信息表', row)" icon="el-icon-edit" v-permissions="['business:jksketch:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jksketch:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkSketchWindow ref="operaJkSketchWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkSketchWindow from '@/components/business/OperaJkSketchWindow'
export default {
  name: 'JkSketch',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkSketchWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        categoryId: '',
        totalNum: '',
        orderNum: '',
        status: '',
        sortnum: '',
        dateInfo: '',
        jobId: ''
      }
    }
  },
  created () {
    this.config({
      module: '交控-线路优化记录信息表',
      api: '/business/jkSketch',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/jkSketchCustomer.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
<template>
  <TableLayout :permissions="['business:jksketchcustomer:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="线路编码(关联jk_sketch_line)" prop="sketchLineId">
        <el-input v-model="searchForm.sketchLineId" placeholder="请输入线路编码(关联jk_sketch_line)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="线路优化编码(关联jk_sketch)" prop="sketchId">
        <el-input v-model="searchForm.sketchId" placeholder="请输入线路优化编码(关联jk_sketch)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="送货量" prop="totalNum">
        <el-input v-model="searchForm.totalNum" placeholder="请输入送货量" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="客户数" prop="orderNum">
        <el-input v-model="searchForm.orderNum" placeholder="请输入客户数" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="searchForm.sortnum" placeholder="请输入排序码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="日期" prop="dateInfo">
        <el-date-picker v-model="searchForm.dateInfo" value-format="yyyy-MM-dd" placeholder="请输入日期" @change="search"/>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jksketchcustomer:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:jksketchcustomer:create', 'business:jksketchcustomer:delete']">
        <li><el-button type="primary" @click="$refs.operaJkSketchCustomerWindow.open('新建交控-线路优化线路客户记录信息表')" icon="el-icon-plus" v-permissions="['business:jksketchcustomer:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jksketchcustomer:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="sketchLineId" label="线路编码(关联jk_sketch_line)" min-width="100px"></el-table-column>
        <el-table-column prop="sketchId" label="线路优化编码(关联jk_sketch)" min-width="100px"></el-table-column>
        <el-table-column prop="totalNum" label="送货量" min-width="100px"></el-table-column>
        <el-table-column prop="orderNum" label="客户数" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column prop="dateInfo" label="日期" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jksketchcustomer:update', 'business:jksketchcustomer:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkSketchCustomerWindow.open('编辑交控-线路优化线路客户记录信息表', row)" icon="el-icon-edit" v-permissions="['business:jksketchcustomer:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jksketchcustomer:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkSketchCustomerWindow ref="operaJkSketchCustomerWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkSketchCustomerWindow from '@/components/business/OperaJkSketchCustomerWindow'
export default {
  name: 'JkSketchCustomer',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkSketchCustomerWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        sketchLineId: '',
        sketchId: '',
        totalNum: '',
        orderNum: '',
        sortnum: '',
        dateInfo: ''
      }
    }
  },
  created () {
    this.config({
      module: '交控-线路优化线路客户记录信息表',
      api: '/business/jkSketchCustomer',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/jkSketchLine.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
<template>
  <TableLayout :permissions="['business:jksketchline:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="线路编码(关联jk_line)" prop="lineId">
        <el-input v-model="searchForm.lineId" placeholder="请输入线路编码(关联jk_line)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="线路优化编码(关联jk_sketch)" prop="sketchId">
        <el-input v-model="searchForm.sketchId" placeholder="请输入线路优化编码(关联jk_sketch)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="送货量" prop="totalNum">
        <el-input v-model="searchForm.totalNum" placeholder="请输入送货量" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="客户数" prop="orderNum">
        <el-input v-model="searchForm.orderNum" placeholder="请输入客户数" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="searchForm.sortnum" placeholder="请输入排序码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="日期" prop="dateInfo">
        <el-date-picker v-model="searchForm.dateInfo" value-format="yyyy-MM-dd" placeholder="请输入日期" @change="search"/>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jksketchline:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:jksketchline:create', 'business:jksketchline:delete']">
        <li><el-button type="primary" @click="$refs.operaJkSketchLineWindow.open('新建交控-线路优化线路记录信息表')" icon="el-icon-plus" v-permissions="['business:jksketchline:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jksketchline:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="lineId" label="线路编码(关联jk_line)" min-width="100px"></el-table-column>
        <el-table-column prop="sketchId" label="线路优化编码(关联jk_sketch)" min-width="100px"></el-table-column>
        <el-table-column prop="totalNum" label="送货量" min-width="100px"></el-table-column>
        <el-table-column prop="orderNum" label="客户数" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column prop="dateInfo" label="日期" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jksketchline:update', 'business:jksketchline:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkSketchLineWindow.open('编辑交控-线路优化线路记录信息表', row)" icon="el-icon-edit" v-permissions="['business:jksketchline:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jksketchline:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkSketchLineWindow ref="operaJkSketchLineWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkSketchLineWindow from '@/components/business/OperaJkSketchLineWindow'
export default {
  name: 'JkSketchLine',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkSketchLineWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        lineId: '',
        sketchId: '',
        totalNum: '',
        orderNum: '',
        sortnum: '',
        dateInfo: ''
      }
    }
  },
  created () {
    this.config({
      module: '交控-线路优化线路记录信息表',
      api: '/business/jkSketchLine',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/jkVersion.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,149 @@
<template>
  <TableLayout :permissions="['business:jkversion:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="版本号" prop="versionInfo">
        <el-input v-model="searchForm.versionInfo" placeholder="请输入版本号" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="安装包路径" prop="fileUrl">
        <el-input v-model="searchForm.fileUrl" placeholder="请输入安装包路径" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <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="content">
        <el-input v-model="searchForm.content" placeholder="请输入更新描述" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="searchForm.sortnum" placeholder="请输入排序码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新标题" prop="title">
        <el-input v-model="searchForm.title" placeholder="请输入更新标题" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="是否强制更新 0否 1是" prop="isForce">
        <el-input v-model="searchForm.isForce" placeholder="请输入是否强制更新 0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="平台类型 0Android 1IOS" prop="type">
        <el-input v-model="searchForm.type" placeholder="请输入平台类型 0Android 1IOS" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:jkversion:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:jkversion:create', 'business:jkversion:delete']">
        <li><el-button type="primary" @click="$refs.operaJkVersionWindow.open('新建交控-钥匙柜终端版本信息表')" icon="el-icon-plus" v-permissions="['business:jkversion:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:jkversion:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="versionInfo" label="版本号" min-width="100px"></el-table-column>
        <el-table-column prop="fileUrl" label="安装包路径" min-width="100px"></el-table-column>
        <el-table-column prop="name" label="安装版名称" min-width="100px"></el-table-column>
        <el-table-column prop="content" label="更新描述" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column prop="title" label="更新标题" min-width="100px"></el-table-column>
        <el-table-column prop="isForce" label="是否强制更新 0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="type" label="平台类型 0Android 1IOS" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:jkversion:update', 'business:jkversion:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaJkVersionWindow.open('编辑交控-钥匙柜终端版本信息表', row)" icon="el-icon-edit" v-permissions="['business:jkversion:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:jkversion:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaJkVersionWindow ref="operaJkVersionWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaJkVersionWindow from '@/components/business/OperaJkVersionWindow'
export default {
  name: 'JkVersion',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaJkVersionWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        versionInfo: '',
        fileUrl: '',
        name: '',
        content: '',
        sortnum: '',
        title: '',
        isForce: '',
        type: ''
      }
    }
  },
  created () {
    this.config({
      module: '交控-钥匙柜终端版本信息表',
      api: '/business/jkVersion',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/warning.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,161 @@
<template>
  <TableLayout :permissions="['business:warning: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="请输入时间名称" clearable  @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="报警分类" prop="type">
        <el-select v-model="searchForm.type" placeholder="请选择" clearable @change="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="3"></el-option>
          <el-option label="天气预警" value="4"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="报警分类" prop="level" >
        <el-select v-model="searchForm.level" placeholder="请选择" clearable @change="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="status" >
          <el-select v-model="searchForm.level" placeholder="请选择" clearable @change="search">
            <el-option label="未订阅" value="0"></el-option>
            <el-option label="已订阅" value="1"></el-option>
          </el-select>
      </el-form-item>
      <el-form-item label="订阅结果" prop="subscribeStatus" @change="search">
        <el-select v-model="searchForm.subscribeStatus" placeholder="请选择" clearable @change="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>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:warning:create', 'business:warning:delete']">
        <li><el-button type="primary" @click="$refs.operaWarningWindow.open('新建报警记录信息表')" icon="el-icon-plus" v-permissions="['business:warning:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:warning:delete']">删除</el-button></li>
      </ul>
      <el-table
          :height="tableHeightNew"
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <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="type" label="报警分类" min-width="120px">
          <template slot-scope="{row}">
            <span v-if="row.type === 0">安防事件</span>
            <span v-if="row.type === 1"  >消防事件</span>
            <span v-if="row.type === 2"  >车载事件</span>
            <span v-if="row.type === 3"  >钥匙柜事件</span>
            <span v-if="row.type === 4"  >天气预警</span>
          </template>
        </el-table-column>
        <el-table-column prop="level" label="报警等级" min-width="100px">
          <template slot-scope="{row}">
            <span v-if="row.level === 0" class="status-grey">低</span>
            <span v-if="row.level === 1"  class="status-yellow" >中</span>
            <span v-if="row.level === 2"  class="status-red">高</span>
          </template>
        </el-table-column>
        <el-table-column prop="status" label="订阅状态" min-width="160px">
          <template slot-scope="{row}">
            <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
                       inactive-color="#ff4949" :active-value="1" :inactive-value="0" >
            </el-switch>
          </template>
        </el-table-column>
        <el-table-column prop="subscribeStatus" label="订阅结果" min-width="100px">
          <template slot-scope="{row}">
            <span v-if="!row.subscribeStatus || row.subscribeStatus === 0" class="status-grey">未订阅</span>
            <span v-if="row.subscribeStatus === 1"  class="status-yellow" >订阅成功</span>
            <span v-if="row.subscribeStatus === 2"  class="status-red">订阅失败</span>
          </template>
        </el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:warning:update', 'business:warning:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaWarningWindow.open('编辑报警记录信息表', row)" icon="el-icon-edit" v-permissions="['business:warning:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:warning:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaWarningWindow ref="operaWarningWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaWarningWindow from '@/components/business/OperaWarningWindow'
export default {
  name: 'Warning',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaWarningWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        name: '',
        type: '',
        level: '',
        status: '',
        subscribeStatus: ''
      }
    }
  },
  created () {
    this.config({
      module: '报警记录信息表',
      api: '/business/warning',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
    changeStatus (e, row) {
      this.working = true
      this.api.updateStatus({ id: row.id, status: e })
        .then(res => {
          this.$tip.apiSuccess(res || '操作成功')
          this.search()
        })
        .catch(e => {
          this.$tip.apiFailed(e)
        })
        .finally(() => {
          this.working = false
        })
        .catch(() => { })
    }
  }
}
</script>
admin/src/views/business/warningPush.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,154 @@
<template>
  <TableLayout :permissions="['business:warningpush:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="报警类型" prop="warningId">
        <el-select v-model="searchForm.warningId" placeholder="请选择" clearable @change="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="warningType">
        <el-select v-model="searchForm.warningType" placeholder="请选择" clearable  @change="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="3"></el-option>
          <el-option label="天气预警" value="4"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="报警标题" prop="title">
        <el-input v-model="searchForm.title" placeholder="请输入报警标题" clearable @keypress.enter.native="search" ></el-input>
      </el-form-item>
      <el-form-item label="报警内容" prop="content">
        <el-input v-model="searchForm.content" placeholder="请输入报警内容" clearable @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="通知状态 " prop="status">
        <el-select v-model="searchForm.status" placeholder="请选择"   clearable @change="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="date">
        <el-date-picker
            v-model="searchForm.queryStarttime"
            type="datetime"
            clearable
            value-format="yyyy-MM-dd HH:mm:ss"
            class="w200"
            placeholder="开始时间" />
        <el-date-picker
            v-model="searchForm.queryEndtime"
            type="datetime"
            value-format="yyyy-MM-dd HH:mm:ss"
            class="w200"
            clearable
            placeholder="结束时间" />
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:warningpush:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:warningpush:create', 'business:warningpush:delete']">
        <li><el-button type="primary" @click="$refs.operaWarningPushWindow.open('新建报警推送记录')" icon="el-icon-plus" v-permissions="['business:warningpush:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:warningpush:delete']">删除</el-button></li>
      </ul>
      <el-table
        :height="tableHeightNew"
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="createDate" label="发生时间" min-width="150px"></el-table-column>
        <el-table-column prop="warningName" label="报警类型" min-width="120px" show-tooltip-when-overflow></el-table-column>
        <el-table-column prop="warningType" label="报警分类" min-width="100px">
          <template slot-scope="{row}">
            <span v-if="row.warningType === 0">安防事件</span>
            <span v-if="row.warningType === 1"  >消防事件</span>
            <span v-if="row.warningType === 2"  >车载事件</span>
            <span v-if="row.warningType === 3"  >钥匙柜事件</span>
            <span v-if="row.warningType === 4"  >天气预警</span>
          </template>
        </el-table-column>
        <el-table-column prop="warningLevel" label="报警等级" min-width="100px">
          <template slot-scope="{row}">
            <span v-if="row.warningLevel === 0" class="status-grey">低</span>
            <span v-if="row.warningLevel === 1"  class="status-yellow" >中</span>
            <span v-if="row.warningLevel === 2"  class="status-red">高</span>
          </template>
        </el-table-column>
        <el-table-column prop="region" label="所在位置" min-width="120px" show-tooltip-when-overflow></el-table-column>
        <el-table-column prop="content" label="报警内容" min-width="180px" show-tooltip-when-overflow></el-table-column>
        <el-table-column prop="memberName" label="通知人员" min-width="100px" show-tooltip-when-overflow></el-table-column>
        <el-table-column prop="status" label="通知状态" min-width="100px">
          <template slot-scope="{row}">
            <span style="color: rgba(245, 154, 35, 0.996);" v-if="row.status === 0">未通知</span>
            <span v-if="row.status === 1" style="color: rgba(245, 154, 35, 0.996);">通知成功</span>
            <span v-if="row.status === 2" style="color: rgba(245, 154, 35, 0.996);">同志失败</span>
          </template>
        </el-table-column>
        <el-table-column
          v-if="containPermissions(['business:warningpush:update', 'business:warningpush:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
<!--          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaWarningPushWindow.open('编辑报警推送记录', row)" icon="el-icon-edit" v-permissions="['business:warningpush:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:warningpush:delete']">删除</el-button>
          </template>-->
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaWarningPushWindow ref="operaWarningPushWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaWarningPushWindow from '@/components/business/OperaWarningPushWindow'
export default {
  name: 'WarningPush',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaWarningPushWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        warningId: '',
        warningType: null,
        title: '',
        content: '',
        status: ''
      }
    }
  },
  created () {
    this.config({
      module: '报警推送记录',
      api: '/business/warningPush',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/warningRule.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,135 @@
<template>
  <TableLayout :permissions="['business:warningrule:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="内部人员编码(关联member)" prop="memberId">
        <el-input v-model="searchForm.memberId" placeholder="请输入内部人员编码(关联member)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="多规则间隔时间(秒)" prop="intervalSec">
        <el-input v-model="searchForm.intervalSec" placeholder="请输入多规则间隔时间(秒)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="searchForm.sortnum" placeholder="请输入排序码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态 0禁用 1启用" prop="status">
        <el-input v-model="searchForm.status" placeholder="请输入状态 0禁用 1启用" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="报警类型编码(关联warning)" prop="warningId">
        <el-input v-model="searchForm.warningId" placeholder="请输入报警类型编码(关联warning)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:warningrule:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:warningrule:create', 'business:warningrule:delete']">
        <li><el-button type="primary" @click="$refs.operaWarningRuleWindow.open('新建报警规则配置表')" icon="el-icon-plus" v-permissions="['business:warningrule:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:warningrule:delete']">删除</el-button></li>
      </ul>
      <el-table
          :height="tableHeightNew"
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="memberId" label="内部人员编码(关联member)" min-width="100px"></el-table-column>
        <el-table-column prop="intervalSec" label="多规则间隔时间(秒)" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0禁用 1启用" min-width="100px"></el-table-column>
        <el-table-column prop="warningId" label="报警类型编码(关联warning)" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:warningrule:update', 'business:warningrule:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaWarningRuleWindow.open('编辑报警规则配置表', row)" icon="el-icon-edit" v-permissions="['business:warningrule:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:warningrule:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaWarningRuleWindow ref="operaWarningRuleWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaWarningRuleWindow from '@/components/business/OperaWarningRuleWindow'
export default {
  name: 'WarningRule',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaWarningRuleWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        memberId: '',
        intervalSec: '',
        sortnum: '',
        status: '',
        warningId: ''
      }
    }
  },
  created () {
    this.config({
      module: '报警规则配置表',
      api: '/business/warningRule',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/warningRuleDetail.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,140 @@
<template>
  <TableLayout :permissions="['business:warningruledetail:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="info">
        <el-input v-model="searchForm.info" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="规则编码(关联warning_rule)" prop="ruleId">
        <el-input v-model="searchForm.ruleId" placeholder="请输入规则编码(关联warning_rule)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="报警类型编码(关联warning)" prop="warningId">
        <el-input v-model="searchForm.warningId" placeholder="请输入报警类型编码(关联warning)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="多规则间隔时间(秒)" prop="regionCode">
        <el-input v-model="searchForm.regionCode" placeholder="请输入多规则间隔时间(秒)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="searchForm.sortnum" placeholder="请输入排序码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="区域名称" prop="regionName">
        <el-input v-model="searchForm.regionName" placeholder="请输入区域名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="区域主键" prop="regionId">
        <el-input v-model="searchForm.regionId" placeholder="请输入区域主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:warningruledetail:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:warningruledetail:create', 'business:warningruledetail:delete']">
        <li><el-button type="primary" @click="$refs.operaWarningRuleDetailWindow.open('新建报警规则配置明细表')" icon="el-icon-plus" v-permissions="['business:warningruledetail:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:warningruledetail:delete']">删除</el-button></li>
      </ul>
      <el-table
          :height="tableHeightNew"
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="ruleId" label="规则编码(关联warning_rule)" min-width="100px"></el-table-column>
        <el-table-column prop="warningId" label="报警类型编码(关联warning)" min-width="100px"></el-table-column>
        <el-table-column prop="regionCode" label="多规则间隔时间(秒)" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column prop="regionName" label="区域名称" min-width="100px"></el-table-column>
        <el-table-column prop="regionId" label="区域主键" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:warningruledetail:update', 'business:warningruledetail:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaWarningRuleDetailWindow.open('编辑报警规则配置明细表', row)" icon="el-icon-edit" v-permissions="['business:warningruledetail:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:warningruledetail:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaWarningRuleDetailWindow ref="operaWarningRuleDetailWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaWarningRuleDetailWindow from '@/components/business/OperaWarningRuleDetailWindow'
export default {
  name: 'WarningRuleDetail',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaWarningRuleDetailWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        info: '',
        ruleId: '',
        warningId: '',
        regionCode: '',
        sortnum: '',
        regionName: '',
        regionId: ''
      }
    }
  },
  created () {
    this.config({
      module: '报警规则配置明细表',
      api: '/business/warningRuleDetail',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkCabinetController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkCabinetGridController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkCabinetLogController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkCustomerController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkIccardController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkKeysController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkLineController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkOrdersController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkSketchController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkSketchCustomerController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkSketchLineController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/JkVersionController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WarningController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WarningPushController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WarningRuleController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WarningRuleDetailController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WarningCloudController.java
@@ -5,6 +5,7 @@
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Warning;
import com.doumee.service.business.WarningService;
import com.doumee.service.business.third.model.ApiResponse;
@@ -35,35 +36,45 @@
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:warning:create")
    public ApiResponse create(@RequestBody Warning warning) {
    public ApiResponse create(@RequestBody Warning warning, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        warning.setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(warningService.create(warning));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:warning:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        warningService.deleteById(id);
    public ApiResponse deleteById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        warningService.deleteById(id,this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID ç¦å¯ç”¨  ")
    @PostMapping("/updateStatus")
    @CloudRequiredPermission("business:warning:update")
    public ApiResponse updateStatus(@RequestBody Warning param, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        param.setLoginUserInfo(this.getLoginUser(token));
        warningService.updateStatus(param);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:warning:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
    public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        warningService.deleteByIdInBatch(idList);
        warningService.deleteByIdInBatch(idList,this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:warning:update")
    public ApiResponse updateById(@RequestBody Warning warning) {
    public ApiResponse updateById(@RequestBody Warning warning, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        warning.setLoginUserInfo(this.getLoginUser(token));
        warningService.updateById(warning);
        return ApiResponse.success(null);
    }
@@ -71,21 +82,21 @@
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:warning:query")
    public ApiResponse<PageData<Warning>> findPage (@RequestBody PageWrap<Warning> pageWrap) {
    public ApiResponse<PageData<Warning>> findPage (@RequestBody PageWrap<Warning> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(warningService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:warning:exportExcel")
    public void exportExcel (@RequestBody PageWrap<Warning> pageWrap, HttpServletResponse response) {
    public void exportExcel (@RequestBody PageWrap<Warning> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ExcelExporter.build(Warning.class).export(warningService.findPage(pageWrap).getRecords(), "报警记录信息表", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:warning:query")
    public ApiResponse findById(@PathVariable Integer id) {
    public ApiResponse findById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(warningService.findById(id));
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/WarningPushMapper.java
@@ -2,11 +2,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.WarningPush;
import com.github.yulichang.base.MPJBaseMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/28 09:01
 */
public interface WarningPushMapper extends BaseMapper<WarningPush> {
public interface WarningPushMapper extends MPJBaseMapper<WarningPush> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -19,7 +20,7 @@
@Data
@ApiModel("钥匙柜基本信息表")
@TableName("`jk_cabinet`")
public class JkCabinet {
public class JkCabinet  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("钥匙柜柜格基本信息表")
@TableName("`jk_cabinet_grid`")
public class JkCabinetGrid {
public class JkCabinetGrid  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("钥匙柜开关门记录")
@TableName("`jk_cabinet_log`")
public class JkCabinetLog {
public class JkCabinetLog  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCustomer.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -19,7 +20,7 @@
@Data
@ApiModel("交控-客户信息表")
@TableName("`jk_customer`")
public class JkCustomer {
public class JkCustomer  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkIccard.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("钥匙柜IC卡信息表")
@TableName("`jk_iccard`")
public class JkIccard {
public class JkIccard  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkKeys.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("钥匙基本信息表")
@TableName("`jk_keys`")
public class JkKeys {
public class JkKeys  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkLine.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("交控-线路信息表")
@TableName("`jk_line`")
public class JkLine {
public class JkLine  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkOrders.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("交控-销售订单信息表")
@TableName("`jk_orders`")
public class JkOrders {
public class JkOrders  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkSketch.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("交控-线路优化记录信息表")
@TableName("`jk_sketch`")
public class JkSketch {
public class JkSketch  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkSketchCustomer.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("交控-线路优化线路客户记录信息表")
@TableName("`jk_sketch_customer`")
public class JkSketchCustomer {
public class JkSketchCustomer  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkSketchLine.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("交控-线路优化线路记录信息表")
@TableName("`jk_sketch_line`")
public class JkSketchLine {
public class JkSketchLine  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkVersion.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("交控-钥匙柜终端版本信息表")
@TableName("`jk_version`")
public class JkVersion {
public class JkVersion  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Warning.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("报警记录信息表")
@TableName("`warning`")
public class Warning {
public class Warning  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
@@ -99,4 +100,5 @@
    @ExcelColumn(name="订阅用户(关联member)")
    private Integer subscribeMemberId;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningPush.java
@@ -1,6 +1,8 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,77 +20,106 @@
@Data
@ApiModel("报警推送记录")
@TableName("`warning_push`")
public class WarningPush {
public class WarningPush  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    //@ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    //@ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelColumn(name="发生事件",dateFormat = "yyyy-MM-dd HH:mm:ss",index = 1)
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    //@ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    //@ExcelColumn(name="更新时间")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    //@ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    //@ExcelColumn(name="备注")
    private String info;
    @ApiModelProperty(value = "人员编码(关联member)", example = "1")
    @ExcelColumn(name="人员编码(关联member)")
    //@ExcelColumn(name="人员编码(关联member)")
    private Integer memberId;
    @ApiModelProperty(value = "事件编码(关联warning)", example = "1")
    @ExcelColumn(name="事件编码(关联warning)")
    //@ExcelColumn(name="事件编码(关联warning)")
    private Integer warningId;
    @ApiModelProperty(value = "报警标题")
    @ExcelColumn(name="报警标题")
    //@ExcelColumn(name="报警标题")
    private String title;
    @ApiModelProperty(value = "报警内容")
    @ExcelColumn(name="报警内容")
    //@ExcelColumn(name="报警内容")
    private String content;
    @ApiModelProperty(value = "状态 0未推送 1推送成功2推送失败", example = "1")
    @ExcelColumn(name="状态 0未推送 1推送成功2推送失败")
    @ExcelColumn(name="通知状态",valueMapping = "0=未通知;1=通知成功;2=通知失败;",index = 7)
    private Integer status;
    @ApiModelProperty(value = "推送结果", example = "1")
    @ExcelColumn(name="推送结果")
    //@ExcelColumn(name="推送结果")
    private Integer pushInfo;
    @ApiModelProperty(value = "事件内容")
    @ExcelColumn(name="事件内容")
    //@ExcelColumn(name="事件内容")
    private String eventInfo;
    @ApiModelProperty(value = "推送标识")
    @ExcelColumn(name="推送标识")
    @ApiModelProperty(value = "所在位置")
    //@ExcelColumn(name="推送标识")
    private String pushId;
    @ApiModelProperty(value = "推送标识")
    @ExcelColumn(name="所在位置",index = 5)
    private String region;
    @ApiModelProperty(value = "推送时间")
    @ExcelColumn(name="推送时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    //@ExcelColumn(name="推送时间")
    private Date pushDate;
    @ApiModelProperty(value = "推送方式 0钉钉通知", example = "1")
    @ExcelColumn(name="推送方式 0钉钉通知")
    //@ExcelColumn(name="推送方式 0钉钉通知")
    private Integer pushType;
    @ApiModelProperty(value = "事件分类 0=安防事件;1=消防事件;2=车载事件;3=钥匙柜事件; 4=天气预警;", example = "1")
    @ExcelColumn(name="事件分类",valueMapping = "0=安防事件;1=消防事件;2=车载事件;3=钥匙柜事件;4=天气预警;",index = 3)
    @TableField(exist = false)
    private Integer warningType;
    @ApiModelProperty(value = "事件类型", example = "1")
    @ExcelColumn(name="事件类型",index = 2)
    @TableField(exist = false)
    private String warningName;
    @ApiModelProperty(value = "事件等级 0低 1中 2高", example = "1")
    @ExcelColumn(name="事件等级",valueMapping = "0=低;1=中;2=高;",index = 4)
    @TableField(exist = false)
    private Integer warningLevel;
    @ApiModelProperty(value = "通知人员", example = "1")
    @ExcelColumn(name="通知人员",index = 6)
    @TableField(exist = false)
    private String memberName;
    @ApiModelProperty(value = "查询时间开始 æ—¥æœŸæ ¼å¼ï¼šyyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date queryStarttime;
    @ApiModelProperty(value = "查询时间结束 æ—¥æœŸæ ¼å¼ï¼šyyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date queryEndtime;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningRule.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("报警规则配置表")
@TableName("`warning_rule`")
public class WarningRule {
public class WarningRule  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningRuleDetail.java
@@ -1,6 +1,7 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.service.business.third.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -18,7 +19,7 @@
@Data
@ApiModel("报警规则配置明细表")
@TableName("`warning_rule_detail`")
public class WarningRuleDetail {
public class WarningRuleDetail  extends LoginUserModel {
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WarningService.java
@@ -1,5 +1,6 @@
package com.doumee.service.business;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.dao.business.model.Warning;
@@ -25,7 +26,7 @@
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    void deleteById(Integer id, LoginUserInfo user);
    /**
     * åˆ é™¤
@@ -39,7 +40,7 @@
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user);
    /**
     * ä¸»é”®æ›´æ–°
@@ -94,4 +95,6 @@
     * @return long
     */
    long count(Warning warning);
    void updateStatus(Warning param);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
@@ -108,9 +108,9 @@
        model.setCreateDate(new Date());
        model.setCreator(loginUserInfo.getId());
        model.setEditDate(new Date());
        model.setIsdeleted(Constants.ZERO);
        model.setEdirot(loginUserInfo.getId());
        model.setStatus(Constants.ZERO);
        model.setIsdeleted(Constants.ZERO);
        model.setHkStatus(Constants.ZERO);
        model.setAuthStatus(Constants.ZERO);
        model.setRemark("");
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -238,7 +238,7 @@
        List<Category> categories = categoryMapper.selectList(wrapper);
        if (org.apache.commons.collections.CollectionUtils.isNotEmpty(categories)){
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"分类信息已存在");
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"信息已存在");
        }
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningPushServiceImpl.java
@@ -1,20 +1,27 @@
package com.doumee.service.business.impl;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.Visits;
import com.doumee.dao.business.model.Warning;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.WarningPushMapper;
import com.doumee.dao.business.model.WarningPush;
import com.doumee.dao.business.model.Member;
import com.doumee.service.business.WarningPushService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
 * æŠ¥è­¦æŽ¨é€è®°å½•Service实现
@@ -83,65 +90,78 @@
        QueryWrapper<WarningPush> wrapper = new QueryWrapper<>(warningPush);
        return warningPushMapper.selectList(wrapper);
    }
    @Override
    public PageData<WarningPush> findPage(PageWrap<WarningPush> pageWrap) {
        IPage<WarningPush> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<WarningPush> queryWrapper = new QueryWrapper<>();
        MPJLambdaWrapper<WarningPush> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        queryWrapper.selectAll(WarningPush.class )
                .selectAs(Member::getName,WarningPush::getMemberName)
                .selectAs(Warning::getName,WarningPush::getWarningName)
                .selectAs(Warning::getType,WarningPush::getWarningType)
                .selectAs(Warning::getLevel,WarningPush::getWarningLevel)
                .leftJoin(Member.class,Member::getId,WarningPush::getMemberId)
                .leftJoin(Warning.class,Warning::getId,WarningPush::getWarningId);
        queryWrapper.eq(pageWrap.getModel().getWarningType()!=null,Warning::getType, pageWrap.getModel().getWarningType());
        queryWrapper.eq(pageWrap.getModel().getWarningLevel()!=null,Warning::getLevel, pageWrap.getModel().getWarningLevel());
        queryWrapper.eq(pageWrap.getModel().getWarningLevel()!=null,Warning::getLevel, pageWrap.getModel().getWarningLevel());
        queryWrapper.ge(Objects.nonNull(pageWrap.getModel().getQueryStarttime()), WarningPush::getCreateDate,Utils.Date.getStart(pageWrap.getModel().getQueryStarttime()));
        queryWrapper.le(Objects.nonNull(pageWrap.getModel().getQueryEndtime()),WarningPush::getCreateDate,Utils.Date.getEnd(pageWrap.getModel().getQueryEndtime()));
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(WarningPush::getId, pageWrap.getModel().getId());
            queryWrapper.eq(WarningPush::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(WarningPush::getCreator, pageWrap.getModel().getCreator());
            queryWrapper.eq(WarningPush::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(WarningPush::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(WarningPush::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
            queryWrapper.ge(WarningPush::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.le(WarningPush::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(WarningPush::getEditor, pageWrap.getModel().getEditor());
            queryWrapper.eq(WarningPush::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(WarningPush::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(WarningPush::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
            queryWrapper.ge(WarningPush::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.le(WarningPush::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(WarningPush::getIsdeleted, pageWrap.getModel().getIsdeleted());
            queryWrapper.eq(WarningPush::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getInfo() != null) {
            queryWrapper.lambda().eq(WarningPush::getInfo, pageWrap.getModel().getInfo());
            queryWrapper.eq(WarningPush::getInfo, pageWrap.getModel().getInfo());
        }
        if (pageWrap.getModel().getMemberId() != null) {
            queryWrapper.lambda().eq(WarningPush::getMemberId, pageWrap.getModel().getMemberId());
            queryWrapper.eq(WarningPush::getMemberId, pageWrap.getModel().getMemberId());
        }
        if (pageWrap.getModel().getWarningId() != null) {
            queryWrapper.lambda().eq(WarningPush::getWarningId, pageWrap.getModel().getWarningId());
            queryWrapper.eq(WarningPush::getWarningId, pageWrap.getModel().getWarningId());
        }
        if (pageWrap.getModel().getTitle() != null) {
            queryWrapper.lambda().eq(WarningPush::getTitle, pageWrap.getModel().getTitle());
            queryWrapper.like(WarningPush::getTitle, pageWrap.getModel().getTitle());
        }
        if (pageWrap.getModel().getContent() != null) {
            queryWrapper.lambda().eq(WarningPush::getContent, pageWrap.getModel().getContent());
            queryWrapper.like(WarningPush::getContent, pageWrap.getModel().getContent());
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(WarningPush::getStatus, pageWrap.getModel().getStatus());
            queryWrapper.eq(WarningPush::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getPushInfo() != null) {
            queryWrapper.lambda().eq(WarningPush::getPushInfo, pageWrap.getModel().getPushInfo());
            queryWrapper.eq(WarningPush::getPushInfo, pageWrap.getModel().getPushInfo());
        }
        if (pageWrap.getModel().getEventInfo() != null) {
            queryWrapper.lambda().eq(WarningPush::getEventInfo, pageWrap.getModel().getEventInfo());
            queryWrapper.eq(WarningPush::getEventInfo, pageWrap.getModel().getEventInfo());
        }
        if (pageWrap.getModel().getPushId() != null) {
            queryWrapper.lambda().eq(WarningPush::getPushId, pageWrap.getModel().getPushId());
            queryWrapper.eq(WarningPush::getPushId, pageWrap.getModel().getPushId());
        }
        if (pageWrap.getModel().getPushDate() != null) {
            queryWrapper.lambda().ge(WarningPush::getPushDate, Utils.Date.getStart(pageWrap.getModel().getPushDate()));
            queryWrapper.lambda().le(WarningPush::getPushDate, Utils.Date.getEnd(pageWrap.getModel().getPushDate()));
            queryWrapper.ge(WarningPush::getPushDate, Utils.Date.getStart(pageWrap.getModel().getPushDate()));
            queryWrapper.le(WarningPush::getPushDate, Utils.Date.getEnd(pageWrap.getModel().getPushDate()));
        }
        if (pageWrap.getModel().getPushType() != null) {
            queryWrapper.lambda().eq(WarningPush::getPushType, pageWrap.getModel().getPushType());
            queryWrapper.eq(WarningPush::getPushType, pageWrap.getModel().getPushType());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
@@ -150,7 +170,10 @@
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(warningPushMapper.selectPage(page, queryWrapper));
        queryWrapper.orderByDesc(WarningPush::getCreateDate);
        IPage<WarningPush> result = warningPushMapper.selectJoinPage(page, WarningPush.class,queryWrapper);
        return PageData.from(result);
    }
    @Override
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java
@@ -1,5 +1,11 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.Category;
import com.doumee.dao.business.model.PlatformGroup;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.core.utils.Utils;
@@ -14,6 +20,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
/**
@@ -29,31 +36,62 @@
    @Override
    public Integer create(Warning warning) {
        if(warningMapper.selectCount(new QueryWrapper<Warning>().lambda()
                .eq(Warning::getIsdeleted,Constants.ZERO)
                .eq(Warning::getName,warning.getName()) )>0){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,事件类型已存在,请返回刷新页面查看!");
        }
        warning.setStatus(Constants.formatIntegerNum(warning.getStatus()));
        warning.setIsdeleted(Constants.ZERO);
        warning.setCreator(warning.getLoginUserInfo().getId());
        warning.setCreateDate(new Date());
        warning.setSubscribeStatus(Constants.ZERO);
        warning.setEditDate(warning.getCreateDate());
        warning.setEditor(warning.getCreator());
        warningMapper.insert(warning);
        return warning.getId();
    }
    @Override
    public void deleteById(Integer id) {
        warningMapper.deleteById(id);
    public void deleteById(Integer id, LoginUserInfo user) {
        warningMapper.update(null,new UpdateWrapper<Warning>().lambda()
                .set(Warning::getIsdeleted,Constants.ONE)
                .set(Warning::getEditor,user.getId())
                .set(Warning::getEditDate,new Date())
                .eq(Warning::getId,id)
        );
    }
    @Override
    public void delete(Warning warning) {
    public void delete(Warning warning ) {
        UpdateWrapper<Warning> deleteWrapper = new UpdateWrapper<>(warning);
        warningMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        warningMapper.deleteBatchIds(ids);
        warningMapper.update(null,new UpdateWrapper<Warning>().lambda()
                .set(Warning::getEditor,user.getId())
                .set(Warning::getEditDate,new Date())
                .set(Warning::getIsdeleted,Constants.ONE)
                .in(Warning::getId,ids)
        );
    }
    @Override
    public void updateById(Warning warning) {
        if(warningMapper.selectCount(new QueryWrapper<Warning>().lambda()
                .ne(Warning::getId,warning.getId())
                .eq(Warning::getIsdeleted,Constants.ZERO)
                .eq(Warning::getName,warning.getName()) )>0){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,事件类型已存在,请返回刷新页面查看!");
        }
        warning.setEditDate(warning.getCreateDate());
        warning.setEditor(warning.getCreator());
        warningMapper.updateById(warning);
    }
@@ -89,6 +127,7 @@
        IPage<Warning> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<Warning> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(Warning::getId, pageWrap.getModel().getId());
        }
@@ -110,7 +149,7 @@
            queryWrapper.lambda().eq(Warning::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getName() != null) {
            queryWrapper.lambda().eq(Warning::getName, pageWrap.getModel().getName());
            queryWrapper.lambda().like(Warning::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getInfo() != null) {
            queryWrapper.lambda().eq(Warning::getInfo, pageWrap.getModel().getInfo());
@@ -149,13 +188,8 @@
        if (pageWrap.getModel().getSubscribeMemberId() != null) {
            queryWrapper.lambda().eq(Warning::getSubscribeMemberId, pageWrap.getModel().getSubscribeMemberId());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        queryWrapper.lambda().orderByDesc(Warning::getSortnum);
        return PageData.from(warningMapper.selectPage(page, queryWrapper));
    }
@@ -164,4 +198,18 @@
        QueryWrapper<Warning> wrapper = new QueryWrapper<>(warning);
        return warningMapper.selectCount(wrapper);
    }
    @Override
    public  void updateStatus(Warning param) {
        Warning model = warningMapper.selectById(param.getId());
        if (model==null || Constants.equalsInteger(model.getIsdeleted(), Constants.ONE)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(Constants.equalsInteger(model.getStatus(),param.getStatus())){
            return;
        }
        model.setStatus(param.getStatus());
        model.setEditDate(new Date());
        model.setEditor(param.getLoginUserInfo().getId());
        warningMapper.updateById(model);
    }
}