|
|
@@ -0,0 +1,638 @@
|
|
|
+import store from '@/store'
|
|
|
+import request, { tenantRequest } from '@/utils/request.js'
|
|
|
+import {
|
|
|
+ add,
|
|
|
+ update,
|
|
|
+ del,
|
|
|
+ confirm,
|
|
|
+ messageSend,
|
|
|
+ send,
|
|
|
+ confirmAndSend,
|
|
|
+ addTenant,
|
|
|
+ addTenantOrOrg,
|
|
|
+ addUser
|
|
|
+} from './base.js'
|
|
|
+import {
|
|
|
+ AssetType,
|
|
|
+ SupportedAlarmStrategies
|
|
|
+} from '@/constant.js'
|
|
|
+
|
|
|
+export function getRatiosWithUser () {
|
|
|
+ return tenantRequest({
|
|
|
+ url: '/device/resolutionRatio',
|
|
|
+ method: 'GET',
|
|
|
+ params: addTenantOrOrg({})
|
|
|
+ }).then(({ data }) => {
|
|
|
+ return {
|
|
|
+ data: Object.keys(data).map(key => {
|
|
|
+ return {
|
|
|
+ value: key,
|
|
|
+ label: `${key} ${data[key].slice(0, 3).map(device => device.name).join(', ')}`
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getRatios () {
|
|
|
+ return tenantRequest({
|
|
|
+ url: '/device/resolutionRatio',
|
|
|
+ method: 'GET',
|
|
|
+ params: addTenant({})
|
|
|
+ }).then(({ data }) => {
|
|
|
+ return {
|
|
|
+ data: Object.keys(data).map(key => {
|
|
|
+ return {
|
|
|
+ value: key,
|
|
|
+ label: key
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getTimeline (deviceId, options) {
|
|
|
+ return request({
|
|
|
+ url: `/content/deviceCalender/${deviceId}`,
|
|
|
+ method: 'GET',
|
|
|
+ ...options
|
|
|
+ }).then(({ data }) => JSON.parse(data.eventDetail) || [])
|
|
|
+}
|
|
|
+
|
|
|
+export function getTimelineByRange (deviceId, startTime, endTime, options) {
|
|
|
+ return request({
|
|
|
+ url: `/content/deviceCalender/${deviceId}`,
|
|
|
+ method: 'GET',
|
|
|
+ params: {
|
|
|
+ startTime,
|
|
|
+ endTime
|
|
|
+ },
|
|
|
+ ...options
|
|
|
+ }).then(({ data }) => JSON.parse(data.eventDetail) || [])
|
|
|
+}
|
|
|
+
|
|
|
+export function addDevice (data) {
|
|
|
+ return add({
|
|
|
+ url: '/device',
|
|
|
+ method: 'POST',
|
|
|
+ data
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function updateDevice (data) {
|
|
|
+ return update({
|
|
|
+ url: '/device',
|
|
|
+ method: 'PUT',
|
|
|
+ data
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function replaceDevice (id, data) {
|
|
|
+ return update({
|
|
|
+ url: `/device/${id}/replace`,
|
|
|
+ method: 'POST',
|
|
|
+ data
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function deleteDeviceById (id) {
|
|
|
+ return messageSend({
|
|
|
+ url: `/device/${id}`,
|
|
|
+ method: 'DELETE'
|
|
|
+ }, '删除')
|
|
|
+}
|
|
|
+
|
|
|
+export function deleteDevice ({ id, name, masterId }) {
|
|
|
+ if (__SUB_DEVICE__) {
|
|
|
+ if (masterId) {
|
|
|
+ return confirm(`删除备份设备【${name}】?`).then(() => deleteDeviceById(id))
|
|
|
+ }
|
|
|
+ return send({
|
|
|
+ url: `/device/${id}/standbyDevice`,
|
|
|
+ method: 'GET',
|
|
|
+ params: { pageNum: 1, pageSize: 1 }
|
|
|
+ }).then(({ data }) => confirm(
|
|
|
+ data.length
|
|
|
+ ? `删除主设备【${name}】后备份设备也将删除`
|
|
|
+ : `删除设备【${name}】?`
|
|
|
+ )).then(() => deleteDeviceById(id))
|
|
|
+ }
|
|
|
+ return confirm(`删除设备【${name}】?`).then(() => deleteDeviceById(id))
|
|
|
+}
|
|
|
+
|
|
|
+// isAttentionFlag 是否带关注标识位,开启值为1
|
|
|
+// attentionValue 过滤值,2为不过滤
|
|
|
+export function getDevices (query, options) {
|
|
|
+ return getDevicesByQuery(addTenantOrOrg(query), options)
|
|
|
+}
|
|
|
+
|
|
|
+export function getDevicesByQuery (query, options) {
|
|
|
+ const { tenant, org, ...params } = query
|
|
|
+ if (tenant || org && org === store.getters.tenant) {
|
|
|
+ return getDevicesByTenant(tenant || org, params, options)
|
|
|
+ }
|
|
|
+ return getDevicesByOrg(org, params, options)
|
|
|
+}
|
|
|
+
|
|
|
+export function getDevicesByTenant (tenant, query, options) {
|
|
|
+ const { pageNum: pageIndex, pageSize, ...params } = query
|
|
|
+ return tenantRequest({
|
|
|
+ url: '/device/tenant/page',
|
|
|
+ method: 'GET',
|
|
|
+ params: {
|
|
|
+ tenant,
|
|
|
+ pageIndex,
|
|
|
+ pageSize,
|
|
|
+ ...params
|
|
|
+ },
|
|
|
+ timeout: 30000,
|
|
|
+ ...options
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getDevicesByOrg (org, query, options) {
|
|
|
+ const { pageNum: pageIndex, pageSize, ...params } = query
|
|
|
+ return tenantRequest({
|
|
|
+ url: '/device/relation/page',
|
|
|
+ method: 'GET',
|
|
|
+ params: {
|
|
|
+ org,
|
|
|
+ pageIndex,
|
|
|
+ pageSize,
|
|
|
+ ...params
|
|
|
+ },
|
|
|
+ timeout: 30000,
|
|
|
+ ...options
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function activateDevice ({ id, name }) {
|
|
|
+ return confirmAndSend('激活', name, {
|
|
|
+ url: '/device/batch/activate',
|
|
|
+ method: 'PUT',
|
|
|
+ data: [id]
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function deactivateDevice ({ id, name }) {
|
|
|
+ return confirmAndSend('停用', name, {
|
|
|
+ url: '/device/batch/deactivate',
|
|
|
+ method: 'PUT',
|
|
|
+ data: [id]
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getDevice (id) {
|
|
|
+ return request({
|
|
|
+ url: `/device/${id}`,
|
|
|
+ method: 'GET'
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getSubDevices (query) {
|
|
|
+ const { id, pageNum: pageIndex, pageSize, ...params } = query
|
|
|
+ return request({
|
|
|
+ url: `/device/${id}/standbyDevice`,
|
|
|
+ method: 'GET',
|
|
|
+ params: {
|
|
|
+ pageIndex, pageSize,
|
|
|
+ ...params
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function addSubDevice ({ id }, data) {
|
|
|
+ return add({
|
|
|
+ url: `/device/${id}/addStandby`,
|
|
|
+ method: 'POST',
|
|
|
+ data
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function addProductType (data) {
|
|
|
+ return add({
|
|
|
+ url: '/productType',
|
|
|
+ method: 'POST',
|
|
|
+ data
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function updateProductType (data) {
|
|
|
+ return update({
|
|
|
+ url: '/productType',
|
|
|
+ method: 'put',
|
|
|
+ data
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function deleteProductType ({ id, name }) {
|
|
|
+ return del({
|
|
|
+ url: `/productType/${id}`,
|
|
|
+ method: 'DELETE'
|
|
|
+ }, name)
|
|
|
+}
|
|
|
+
|
|
|
+export function getProductTypes (query, options) {
|
|
|
+ const { pageNum: pageIndex, pageSize, ...params } = query
|
|
|
+ return tenantRequest({
|
|
|
+ url: '/productType/list',
|
|
|
+ method: 'GET',
|
|
|
+ params: addTenant({
|
|
|
+ pageIndex, pageSize,
|
|
|
+ ...params
|
|
|
+ }),
|
|
|
+ ...options
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function addProduct (data) {
|
|
|
+ return add({
|
|
|
+ url: '/product',
|
|
|
+ method: 'POST',
|
|
|
+ data
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function updateProduct (data) {
|
|
|
+ return update({
|
|
|
+ url: '/product',
|
|
|
+ method: 'put',
|
|
|
+ data
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function deleteProduct ({ id, name }) {
|
|
|
+ return del({
|
|
|
+ url: `/product/${id}`,
|
|
|
+ method: 'DELETE'
|
|
|
+ }, name)
|
|
|
+}
|
|
|
+
|
|
|
+const productMap = {}
|
|
|
+export function getProduct (id) {
|
|
|
+ if (productMap[id]) {
|
|
|
+ return Promise.resolve({ data: productMap[id] })
|
|
|
+ }
|
|
|
+ return request({
|
|
|
+ url: `/product/${id}`,
|
|
|
+ method: 'GET'
|
|
|
+ }).then(({ data }) => {
|
|
|
+ if (data) {
|
|
|
+ productMap[id] = data
|
|
|
+ }
|
|
|
+ return { data }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getProducts (query) {
|
|
|
+ const { pageNum: pageIndex, pageSize, ...params } = query
|
|
|
+ return tenantRequest({
|
|
|
+ url: '/product/list',
|
|
|
+ method: 'GET',
|
|
|
+ params: addTenant({
|
|
|
+ pageIndex, pageSize,
|
|
|
+ ...params
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function addDeviceGroup (data) {
|
|
|
+ return add({
|
|
|
+ url: '/deviceGroup',
|
|
|
+ method: 'POST',
|
|
|
+ data
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function updateDeviceGroup (data) {
|
|
|
+ return update({
|
|
|
+ url: '/deviceGroup',
|
|
|
+ method: 'PUT',
|
|
|
+ data
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function deleteDeviceGroup ({ id, name }) {
|
|
|
+ return del({
|
|
|
+ url: `/deviceGroup/${id}`,
|
|
|
+ method: 'DELETE'
|
|
|
+ }, name)
|
|
|
+}
|
|
|
+
|
|
|
+export function getDeviceGroups (query) {
|
|
|
+ const { pageNum: pageIndex, pageSize, ...params } = query
|
|
|
+ return tenantRequest({
|
|
|
+ url: '/deviceGroup/list',
|
|
|
+ method: 'GET',
|
|
|
+ params: addUser({
|
|
|
+ pageIndex, pageSize,
|
|
|
+ ...params
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getDevicesByGroup (id) {
|
|
|
+ return tenantRequest({
|
|
|
+ url: `/deviceGroup/${id}/device`,
|
|
|
+ method: 'GET',
|
|
|
+ params: addTenantOrOrg({})
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getDeviceTree () {
|
|
|
+ return tenantRequest({
|
|
|
+ url: '/deviceGroup/deviceTree',
|
|
|
+ method: 'GET',
|
|
|
+ params: addUser(addTenantOrOrg({}))
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function addDevicesToGroup (id, deviceIds) {
|
|
|
+ return add({
|
|
|
+ url: `/deviceGroup/${id}/device`,
|
|
|
+ method: 'POST',
|
|
|
+ data: deviceIds
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function deleteDeviceFromGroup (id, { id: deviceId, name }) {
|
|
|
+ return confirmAndSend('移除', name, {
|
|
|
+ url: `/deviceGroup/${id}/device`,
|
|
|
+ method: 'DELETE',
|
|
|
+ params: { deviceId }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getDeviceStatistics () {
|
|
|
+ return getDeviceStatisticsByPath(store.getters.org)
|
|
|
+}
|
|
|
+
|
|
|
+export function getDeviceStatisticsByPath (path, options) {
|
|
|
+ return tenantRequest({
|
|
|
+ url: '/device/listDeviceTotal',
|
|
|
+ method: 'GET',
|
|
|
+ params: path === store.getters.tenant
|
|
|
+ ? { tenant: path }
|
|
|
+ : { org: path },
|
|
|
+ ...options
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const handeEnum = ['应用重启', '设备重启', '恢复出厂', '未干预']
|
|
|
+const typeEnum = ['primary', 'success', 'danger']
|
|
|
+const labelEnum = ['处理中', '成功', '失败']
|
|
|
+
|
|
|
+export function getDeviceAlarms (query) {
|
|
|
+ const { pageNum: pageIndex, pageSize, ...params } = query
|
|
|
+ return request({
|
|
|
+ url: '/deviceException/list',
|
|
|
+ method: 'GET',
|
|
|
+ params: {
|
|
|
+ pageIndex, pageSize,
|
|
|
+ ...params
|
|
|
+ }
|
|
|
+ }).then(({ data, totalCount }) => {
|
|
|
+ return {
|
|
|
+ data: data.map(({ id, messageId, deviceName, level, pic, picUrl, type, handle, status, happenTime, bugMessage, ...item }) => {
|
|
|
+ const alarm = {
|
|
|
+ id, messageId, deviceName, level, happenTime,
|
|
|
+ file: pic && picUrl
|
|
|
+ ? {
|
|
|
+ type: AssetType.IMAGE,
|
|
|
+ url: picUrl,
|
|
|
+ origin: true
|
|
|
+ }
|
|
|
+ : null,
|
|
|
+ type: bugMessage || `E${type.toString().padStart(3, '0')}`,
|
|
|
+ handle: handeEnum[handle] || '-',
|
|
|
+ status: handle <= 2 && status <= 2
|
|
|
+ ? {
|
|
|
+ type: typeEnum[status],
|
|
|
+ label: labelEnum[status]
|
|
|
+ }
|
|
|
+ : { label: '-' }
|
|
|
+ }
|
|
|
+ SupportedAlarmStrategies.forEach(({ key }) => {
|
|
|
+ alarm[key] = getTag(item[key])
|
|
|
+ })
|
|
|
+ return alarm
|
|
|
+ }),
|
|
|
+ totalCount
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function getTag (status) {
|
|
|
+ switch (status) {
|
|
|
+ case 0:
|
|
|
+ return {
|
|
|
+ type: 'primary',
|
|
|
+ label: '待发送'
|
|
|
+ }
|
|
|
+ case 1:
|
|
|
+ return {
|
|
|
+ type: 'success',
|
|
|
+ label: '已发送'
|
|
|
+ }
|
|
|
+ case 2:
|
|
|
+ return {
|
|
|
+ type: 'warning',
|
|
|
+ label: '发送中'
|
|
|
+ }
|
|
|
+ case 3:
|
|
|
+ return {
|
|
|
+ type: 'danger',
|
|
|
+ label: '失败'
|
|
|
+ }
|
|
|
+ case 4:
|
|
|
+ return {
|
|
|
+ type: 'danger',
|
|
|
+ label: '无目标'
|
|
|
+ }
|
|
|
+ case 5:
|
|
|
+ return {
|
|
|
+ type: 'warning',
|
|
|
+ label: '未开启'
|
|
|
+ }
|
|
|
+ default:
|
|
|
+ return null
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function getUsersByInform ({ messageId }) {
|
|
|
+ return request({
|
|
|
+ url: '/deviceException/user/list',
|
|
|
+ method: 'GET',
|
|
|
+ params: { messageId }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getTasks (query) {
|
|
|
+ const { pageNum: pageIndex, pageSize, ...params } = query
|
|
|
+ return request({
|
|
|
+ url: '/device/functionTask',
|
|
|
+ method: 'GET',
|
|
|
+ params: {
|
|
|
+ pageIndex, pageSize,
|
|
|
+ ...params
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function addTask (task) {
|
|
|
+ return add({
|
|
|
+ url: '/device/functionTask',
|
|
|
+ method: 'POST',
|
|
|
+ data: task
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function updateTask (task) {
|
|
|
+ return update({
|
|
|
+ url: '/device/functionTask',
|
|
|
+ method: 'PUT',
|
|
|
+ data: task
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function deleteTask ({ taskId }) {
|
|
|
+ return del({
|
|
|
+ url: `/device/functionTask/${taskId}`,
|
|
|
+ method: 'DELETE'
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function activateTask ({ taskId }) {
|
|
|
+ return confirmAndSend('启用', null, {
|
|
|
+ url: '/device/functionTask/resume',
|
|
|
+ method: 'PUT',
|
|
|
+ data: [taskId]
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function deactivateTask ({ taskId }) {
|
|
|
+ return confirmAndSend('停用', null, {
|
|
|
+ url: '/device/functionTask/pause',
|
|
|
+ method: 'PUT',
|
|
|
+ data: [taskId]
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getShadow (deviceId) {
|
|
|
+ return request({
|
|
|
+ url: `/device/shadow/${deviceId}`,
|
|
|
+ method: 'GET'
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getRecordConfig (deviceId, config) {
|
|
|
+ return request({
|
|
|
+ url: '/deviceStream/config',
|
|
|
+ method: 'GET',
|
|
|
+ params: { deviceId },
|
|
|
+ ...config
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function addRecordConfig (data, config) {
|
|
|
+ return request({
|
|
|
+ url: '/deviceStream/config',
|
|
|
+ method: 'POST',
|
|
|
+ data,
|
|
|
+ ...config
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function updateRecordConfig (data, config) {
|
|
|
+ return request({
|
|
|
+ url: '/deviceStream/config',
|
|
|
+ method: 'PUT',
|
|
|
+ data,
|
|
|
+ ...config
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function authCode (stream, options) {
|
|
|
+ return request({
|
|
|
+ url: `/deviceStream/${stream}/authCode`,
|
|
|
+ method: 'GET',
|
|
|
+ ...options
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function addDeviceAttention (deviceId) {
|
|
|
+ return update({
|
|
|
+ url: `/device/attention/add/${deviceId}`,
|
|
|
+ method: 'POST',
|
|
|
+ data: { deviceId }
|
|
|
+ }, '关注')
|
|
|
+}
|
|
|
+
|
|
|
+export function cancelDeviceAttention (deviceId) {
|
|
|
+ return update({
|
|
|
+ url: `/device/attention/cancel/${deviceId}`,
|
|
|
+ method: 'DELETE'
|
|
|
+ }, '取关')
|
|
|
+}
|
|
|
+
|
|
|
+export function getDeviceAttentionList (options) {
|
|
|
+ return request({
|
|
|
+ url: '/device/user/attention/list',
|
|
|
+ method: 'GET',
|
|
|
+ ...options
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getMultiCardStatusReport (id, options) {
|
|
|
+ return request({
|
|
|
+ url: '/device/screenPower/latestStatusReport',
|
|
|
+ method: 'POST',
|
|
|
+ data: { deviceIds: id },
|
|
|
+ ...options
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getReceivingCardStatusReport (id, options) {
|
|
|
+ return request({
|
|
|
+ url: '/device/receiverCard/cacheData',
|
|
|
+ method: 'GET',
|
|
|
+ params: { deviceId: id },
|
|
|
+ ...options
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getDevicesWithPower (params, options) {
|
|
|
+ return request({
|
|
|
+ url: '/device/bond/multiFunction/list',
|
|
|
+ method: 'GET',
|
|
|
+ params: addTenant(params),
|
|
|
+ timeout: 30000,
|
|
|
+ ...options
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getDepartmentDeviceTree (options) {
|
|
|
+ return getDepartmentDeviceTreeByGroup(store.getters.org, options)
|
|
|
+}
|
|
|
+
|
|
|
+export function getDepartmentDeviceTreeByGroup (path, options) {
|
|
|
+ const data = addTenant()
|
|
|
+ if (path && path !== data.tenant) {
|
|
|
+ data.org = path
|
|
|
+ }
|
|
|
+ return tenantRequest({
|
|
|
+ url: '/tenant/department/device/list',
|
|
|
+ method: 'GET',
|
|
|
+ params: data,
|
|
|
+ timeout: 30000,
|
|
|
+ ...options
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+export function getPlaylist (data) {
|
|
|
+ return request({
|
|
|
+ url: '/orchestration/timeSplit/page',
|
|
|
+ method: 'POST',
|
|
|
+ data
|
|
|
+ })
|
|
|
+}
|