diff --git a/src/api/cs-device-boot/csGroup.ts b/src/api/cs-device-boot/csGroup.ts
index de08d55..1af464c 100644
--- a/src/api/cs-device-boot/csGroup.ts
+++ b/src/api/cs-device-boot/csGroup.ts
@@ -41,7 +41,7 @@ export function deviceRtData(data: any) {
form.append('pageNum', data.pageNum)
form.append('pageSize', data.pageSize)
form.append('searchValue', data.searchValue)
- form.append('dataLevel',data.dataLevel)
+ form.append('dataLevel', data.dataLevel)
return createAxios({
url: '/cs-device-boot/csGroup/deviceRtData',
method: 'POST',
@@ -60,12 +60,27 @@ export function realTimeData(data: any) {
form.append('pageSize', data.pageSize)
form.append('searchValue', data.searchValue)
form.append('targetType', data.targetType)
- form.append('dataLevel',data.dataLevel)
+ form.append('dataLevel', data.dataLevel)
return createAxios({
url: '/cs-harmonic-boot/data/realTimeData',
method: 'POST',
-
+
data
})
}
-
+// 设备监控-》测试项数据
+export function getTestData(data: any) {
+ return createAxios({
+ url: '/cs-harmonic-boot/data/getTestData',
+ method: 'POST',
+ data
+ })
+}
+// 设备监控-删除装置测试项
+export function deleteItem(data: any) {
+ return createAxios({
+ url: '/cs-device-boot/wlRecord/deleteItem',
+ method: 'POST',
+ params: data
+ })
+}
diff --git a/src/api/cs-system-boot/device.ts b/src/api/cs-system-boot/device.ts
index 1bf946a..2ab3012 100644
--- a/src/api/cs-system-boot/device.ts
+++ b/src/api/cs-system-boot/device.ts
@@ -73,10 +73,11 @@ export const governDeviceRegister = (data: any) => {
}
// 便携式设备注册
-export const portableDeviceRegister = (data: any) => {
+export const portableDeviceRegister = (params: any) => {
return createAxios({
- url: `/access-boot/device/wlRegister?nDid=${data.nDid}`,
+ url: `/access-boot/device/wlRegister`,
method: 'POST',
+ params
})
}
diff --git a/src/components/table/fieldRender/index.vue b/src/components/table/fieldRender/index.vue
index 6cb8b85..6aefbd5 100644
--- a/src/components/table/fieldRender/index.vue
+++ b/src/components/table/fieldRender/index.vue
@@ -3,8 +3,9 @@
-
+
@@ -124,8 +125,10 @@ if (props.field.renderFormatter && typeof props.field.renderFormatter == 'functi
fieldValue.value = props.field.renderFormatter(props.row, props.field, fieldValue.value, props.column, props.index)
}
-const onChangeField = (value: any) => {
- TableStore.onTableAction('field-change', { value: value, ...props })
+const onChangeField = (row: any, value: any) => {
+ row.onChangeField && row.onChangeField(props.row, value)
+
+ // TableStore.onTableAction('field-change', { value: value, ...props })
}
const onButtonClick = (btn: OptButton) => {
diff --git a/src/utils/request.ts b/src/utils/request.ts
index d3aab5d..454bffe 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -1,9 +1,10 @@
import type { AxiosRequestConfig, Method } from 'axios'
import axios from 'axios'
-import { ElLoading,ElMessage, ElNotification, type LoadingOptions } from 'element-plus'
+import { ElLoading, ElMessage, ElNotification, type LoadingOptions } from 'element-plus'
import { refreshToken } from '@/api/user-boot/user'
import router from '@/router/index'
import { useAdminInfo } from '@/stores/adminInfo'
+import { set } from 'lodash'
window.requests = []
window.tokenRefreshing = false
@@ -150,11 +151,13 @@ function createAxios>(
return Promise.reject(response.data)
} else {
if (options.showCodeMessage) {
- // ElNotification({
- // type: 'error',
- // message: response.data.message || '未知错误'
- // })
- ElMessage.error(response.data.message || '未知错误')
+ if (response.config.url == '/access-boot/device/wlRegister') {
+ setTimeout(() => {
+ ElMessage.error(response.data.message || '未知错误')
+ }, 6000)
+ } else {
+ ElMessage.error(response.data.message || '未知错误')
+ }
}
return Promise.reject(response.data)
}
diff --git a/src/views/govern/device/control/index.vue b/src/views/govern/device/control/index.vue
index 616a3bf..4ce113f 100644
--- a/src/views/govern/device/control/index.vue
+++ b/src/views/govern/device/control/index.vue
@@ -79,27 +79,34 @@
realTimeFlag
">
-
+
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
查询
@@ -138,87 +145,87 @@
"
>
-->
+
+
+
+ 统计时间:{{ tableData[0]?.time || '' }}
+
-
-
- 统计时间:{{ tableData[0]?.time || '' }}
-
-
-
+
-
-
+
+
-
-
-
- {{ item.name }}
-
-
-
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+ {{ child.anotherName }}:
+ {{ child.dataValue === 3.1415926 ? '暂无数据' : child.dataValue }}
+
-
-
-
- {{ child.anotherName }}:
- {{ child.dataValue === 3.1415926 ? '暂无数据' : child.dataValue }}
-
-
-
-
-
- MAX
-
- {{
- item.children[0].maxValue === 3.1415956 ||
- typeof item.children[0].maxValue != 'number'
- ? '暂无数据'
- : item.children[0].maxValue
- }}
+
+
+
+ MAX
+
+ {{
+ item.children[0].maxValue === 3.1415956 ||
+ typeof item.children[0].maxValue != 'number'
+ ? '暂无数据'
+ : item.children[0].maxValue
+ }}
+
+
+
+ AVG
+
+ {{
+ item.children[0].avgValue === 3.1415956 ||
+ typeof item.children[0].avgValue != 'number'
+ ? '暂无数据'
+ : item.children[0].avgValue
+ }}
+
+
+
+ MIN
+
+ {{
+ item.children[0].minValue === 3.1415956 ||
+ typeof item.children[0].minValue != 'number'
+ ? '暂无数据'
+ : item.children[0].minValue
+ }}
+
-
-
- AVG
-
- {{
- item.children[0].avgValue === 3.1415956 ||
- typeof item.children[0].avgValue != 'number'
- ? '暂无数据'
- : item.children[0].avgValue
- }}
-
-
-
- MIN
-
- {{
- item.children[0].minValue === 3.1415956 ||
- typeof item.children[0].minValue != 'number'
- ? '暂无数据'
- : item.children[0].minValue
- }}
-
-
-
-
-
-
+
-
+
-
-
+
@@ -356,7 +364,7 @@ import {
queryDictType,
} from '@/api/cs-device-boot/EquipmentDelivery'
-import { deviceHisData, deviceRtData, realTimeData } from '@/api/cs-device-boot/csGroup'
+import { deviceHisData, deviceRtData, realTimeData, getTestData } from '@/api/cs-device-boot/csGroup'
import { ref, reactive, onMounted, onUnmounted, inject, nextTick, onBeforeUnmount } from 'vue'
import { ElMessage } from 'element-plus'
import DatePicker from '@/components/form/datePicker/index.vue'
@@ -368,6 +376,7 @@ import recordWoves from './tabs/components/recordwoves.vue' //实时数据-实
import offLineDataImport from './offLineDataImport/index.vue'
import Event from './tabs/event.vue'
import nearRealTimeData from './nearRealTimeData.vue'
+import testItemRecords from './testItemRecords.vue'
import { useRouter } from 'vue-router'
import TableHeader from '@/components/table/header/index.vue'
import { useAdminInfo } from '@/stores/adminInfo'
@@ -384,14 +393,18 @@ const tableLoading = ref(false)
const getGroupLoading = ref(false)
const deviceData = ref(null)
const dataSet = ref('')
+const testItemRecordsRef = ref()
const nearRealTimeDataRef = ref()
const devTypeOptions = ref([])
const devModelOptions = ref([])
const tableData = ref([])
const tableHeight = mainHeight(290).height
const tableHeightBox = mainHeight(310).height
-const mangePopup = ref()
-const datePickerRef = ref()
+const searchValue = ref('')
+const TrendList=ref({})
+const oddAndEven = ref('1')
+const datePickerRef = ref('1')
+const oddAndEvenFlag = ref(false)
const formInline = reactive({
searchValue: '',
pageNum: 1,
@@ -404,7 +417,21 @@ const formInline = reactive({
targetType: '',
dataLevel: 'Secondary'
})
+const oddAndEvenList = [
+ {
+ value: '1',
+ label: '奇次',
+ },
+ {
+ value: '2',
+ label: '偶次',
+ },
+ {
+ value: '3',
+ label: '全部',
+ },
+]
const detail = ref(null)
//是否显示实时数据默认内容
const realTimeFlag = ref(true)
@@ -567,20 +594,24 @@ const deviceId: any = ref('')
const lineId: any = ref('')
const dataLevel: any = ref('')
const nodeClick = async (e: anyObj) => {
+ searchValue.value = ''
await queryDictType({
lineId: e?.id
}).then(res => {
+ oddAndEvenFlag.value = false
queryList.value = res.data
formInline.targetType = res.data[0].id
})
- // console.log("🚀 ~ nodeClick ~ e:", e)
+
if (e.level == 2) return
deviceId.value = e?.pid
lineId.value = e?.id
+ TrendList.value=e
if (!e) {
loading.value = false
return
}
+
//选中设备名称后,点击标签页也能查询数据,要求点击设备名称后,点击标签页默认查询第一个监测点数据
if (e.level == 3 || e.level == 2) {
loading.value = true
@@ -948,15 +979,16 @@ const handleClick = async (tab?: any) => {
}
//测试项记录
if (dataSet.value.includes('_items')) {
+ formInline.startTime = datePickerRef.value && datePickerRef.value.timeValue[0]
+ formInline.endTime = datePickerRef.value && datePickerRef.value.timeValue[1]
formInline.id = dataSet.value
- // await deviceRtData(formInline)
- await realTimeData(formInline)
+ await getTestData(formInline)
.then((res: any) => {
tableData.value = res.data
formInline.total = res.data.total
tableLoading.value = false
setTimeout(() => { //targetType
- nearRealTimeDataRef.value?.setData(res.data, queryList.value.filter((item: any) => item.id == formInline.targetType))
+ testItemRecordsRef.value?.setData(res.data,)
}, 500)
setTimeout(() => {
@@ -979,12 +1011,41 @@ const handleClick = async (tab?: any) => {
.then((res: any) => {
tableData.value = res.data
formInline.total = res.data.total
- tableLoading.value = false
+ let queryListName = queryList.value.filter((item: any) => item.id == formInline.targetType)
+ let list = res.data.filter((item: any) => {
+ if (item.otherName.includes(searchValue.value)) {
+ return item
+ }
+ })
+ if (oddAndEvenFlag.value) {
+ list = list.filter((item: any) => {
+ let str = item.otherName.split("次")[0]
+ queryListName[0].name == '间谐波电压含有率' ? str = str - 0.5 : ''
+
+ if (oddAndEven.value == '1') {
+ // 奇次
+ if (str % 2 != 0) {
+ return item
+ }
+
+ } else if (oddAndEven.value == '2') {
+ // 偶次
+ if (str % 2 == 0) {
+ return item
+ }
+ } else {
+ return item
+ }
+
+
+ })
+ }
+
setTimeout(() => { //targetType
- nearRealTimeDataRef.value?.setData(res.data, queryList.value.filter((item: any) => item.id == formInline.targetType))
+ nearRealTimeDataRef.value?.setData(list, queryListName)
+ tableLoading.value = false
}, 500)
setTimeout(() => {
-
loading.value = false
}, 1500)
})
@@ -1045,6 +1106,14 @@ queryByCode('Device_Type').then(res => {
})
})
})
+const handleTargetTypeChange = () => {
+
+ if (queryList.value.filter((item: any) => item.id == formInline.targetType)[0].name != '基本数据') {
+ oddAndEvenFlag.value = true
+ } else {
+ oddAndEvenFlag.value = false
+ }
+}
const queryList: any = ref([])
const echoName = (value: any, arr: any[]) => {
diff --git a/src/views/govern/device/control/nearRealTimeData.vue b/src/views/govern/device/control/nearRealTimeData.vue
index 008f5b8..a89460f 100644
--- a/src/views/govern/device/control/nearRealTimeData.vue
+++ b/src/views/govern/device/control/nearRealTimeData.vue
@@ -22,8 +22,8 @@ const setData = (data: any, targetType: any) => {
dataList.value = JSON.parse(JSON.stringify(data))
- console.log("🚀 ~ setData ~ targetType:", targetType[0].code)
- if (targetType[0].code == 'base_data' || targetType[0].code == '1') {
+
+ if (targetType[0].name == '基本数据' ) {
column.value = [
{ field: 'otherName', title: '名称', },
{ field: 'valueA', title: 'A相', },
@@ -31,27 +31,7 @@ const setData = (data: any, targetType: any) => {
{ field: 'valueC', title: 'C相', },
{ field: 'valueM', title: '', },
]
- } else if (targetType[0].code == 'other_data') {
- let list: any = []
- data.forEach((item: any, i: any) => {
- if (i % 2 == 0) {
- list.push(item)
- } else {
- list[list.length - 1].otherName1 = item.otherName
- list[list.length - 1].valueM1 = item.valueM
- }
-
- })
-
- dataList.value = JSON.parse(JSON.stringify(list))
-
- column.value = [
- { field: 'otherName', title: '名称', },
- { field: 'valueM', title: '', },
- { field: 'otherName1', title: '名称', },
- { field: 'valueM1', title: '', },
- ]
- } else {
+ } else {
column.value = [
{ field: 'otherName', title: '谐波次数', },
{ field: 'valueA', title: 'A相', },
@@ -62,7 +42,7 @@ const setData = (data: any, targetType: any) => {
key.value += 1
}
const formatter = (row: any) => {
- return row.cellValue || '/'
+ return row.cellValue==null? '/':row.cellValue
}
defineExpose({ setData })
diff --git a/src/views/govern/device/control/tabs/components/realtrend.vue b/src/views/govern/device/control/tabs/components/realtrend.vue
index 5de6a12..cc0121b 100644
--- a/src/views/govern/device/control/tabs/components/realtrend.vue
+++ b/src/views/govern/device/control/tabs/components/realtrend.vue
@@ -1,9 +1,12 @@
-
-
-
+
@@ -311,6 +314,9 @@ defineExpose({ open, setRealTrendData, setOverLimitData })
.select {
position: absolute;
top: -40px;
+ display: flex;
+ align-items: center;
+ font-size: 14px;
}
.realtrend_top {
diff --git a/src/views/govern/device/control/tabs/trend.vue b/src/views/govern/device/control/tabs/trend.vue
index 77882aa..86ad92e 100644
--- a/src/views/govern/device/control/tabs/trend.vue
+++ b/src/views/govern/device/control/tabs/trend.vue
@@ -20,6 +20,14 @@
+
+
+
+
+
+
+
+
{
+queryByCode(props?.TrendList?.lineType == 0 ? 'apf-harmonic' : 'portable-harmonic').then(res => {
queryCsDictTree(res.data.id).then(item => {
//排序
indexOptions.value = item.data.sort((a: any, b: any) => {
@@ -180,6 +196,7 @@ const init = async () => {
list: lists,
valueType: searchForm.value.type,
dataLevel: searchForm.value.dataLevel,
+ valueType: searchForm.value.valueType,
startTime: datePickerRef.value && datePickerRef.value.timeValue[0],
endTime: datePickerRef.value && datePickerRef.value.timeValue[1]
}
diff --git a/src/views/govern/device/control/testItemRecords.vue b/src/views/govern/device/control/testItemRecords.vue
new file mode 100644
index 0000000..2340f9f
--- /dev/null
+++ b/src/views/govern/device/control/testItemRecords.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/govern/manage/factory.vue b/src/views/govern/manage/factory.vue
index 12ba146..6f8a983 100644
--- a/src/views/govern/manage/factory.vue
+++ b/src/views/govern/manage/factory.vue
@@ -4,33 +4,16 @@
-
-
+
+
-
-
+
+
@@ -51,15 +34,8 @@
模版下载
-
+
批量导入
新增设备
@@ -67,44 +43,25 @@
-
+
-
+
-
+
-
+
@@ -137,6 +94,7 @@ import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue'
import { queryByCode, queryByid, queryCsDictTree } from '@/api/system-boot/dictTree'
import { ElMessage, ElMessageBox } from 'element-plus'
+import { activateUser, deluser, passwordConfirm } from '@/api/user-boot/user'
import {
addEquipmentDelivery,
deleteEquipmentDelivery,
@@ -254,6 +212,35 @@ const tableStore = new TableStore({
},
{ title: '录入时间', field: 'createTime' },
{ title: '网络设备ID', field: 'ndid' },
+ {
+ title: '使用状态',
+ render: 'switch',
+ width: 100,
+ field: 'usageStatus',
+ activeText: '启用',
+ inactiveText: '停用',
+ inactiveValue: '0',
+ activeValue: '1',
+ onChangeField: (row: any, value: any) => {
+ console.log("🚀 ~ row:", row)
+ ElMessageBox.prompt('二次校验密码确认', '', {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ customClass: 'customInput',
+ inputType: 'text'
+ }).then(({ value }) => {
+ passwordConfirm(value).then(res => {
+ editEquipmentDelivery({ ...row, usageStatus: row.usageStatus == 1 ? 0 : 1 }).then(res => {
+ ElMessage.success(row.usageStatus == 1 ? '设备停用成功!' : '设备启用成功!')
+ tableStore.index()
+ })
+
+
+ })
+ })
+
+ }
+ },
{
title: '通讯状态',
field: 'runStatus',
@@ -277,6 +264,7 @@ const tableStore = new TableStore({
// return row.cellValue == 1 ? '未注册' : row.cellValue == 2 ? '注册' : '接入'
// },
},
+
{
title: '操作',
align: 'center',
@@ -284,69 +272,69 @@ const tableStore = new TableStore({
render: 'buttons',
buttons: [
//直连装置注册
- {
- title: '注册',
- type: 'primary',
- icon: 'el-icon-Grid',
- render: 'basicButton',
- disabled: row => {
- return (
- (row.devType == '8b45cf6b7f5266e777d07c166ad5fa77' &&
- row.devModel == 'a0d4da4b5c17b2172362a3f5a27bf217') ||
- row.status == '1'
- )
- },
- click: row => {
- // 直连设备注册
- ElMessageBox.confirm('确定注册该设备吗?', '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(() => {
- governDeviceRegister({
- nDid: row.ndid,
- type: '4'
- }).then(res => {
- ElMessage.success(res.message)
- tableStore.onTableAction('search', {})
- })
- })
- .catch(e => {})
- }
- },
- //便携式设备注册
- {
- title: '注册',
- type: 'primary',
- icon: 'el-icon-Grid',
- render: 'basicButton',
- disabled: row => {
- // return (
- // (row.devType != '8b45cf6b7f5266e777d07c166ad5fa77' &&
- // row.devModel != 'a0d4da4b5c17b2172362a3f5a27bf217') ||
- // row.status != '1'
- // )
- return true
- },
- click: row => {
- // 便携式设备注册
- ElMessageBox.confirm('确定注册该设备吗?', '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(() => {
- portableDeviceRegister({
- nDid: row.ndid
- }).then(res => {
- ElMessage.success(res.message)
- tableStore.index()
- })
- })
- .catch(e => {})
- }
- },
+ // {
+ // title: '注册',
+ // type: 'primary',
+ // icon: 'el-icon-Grid',
+ // render: 'basicButton',
+ // disabled: row => {
+ // return (
+ // (row.devType == '8b45cf6b7f5266e777d07c166ad5fa77' &&
+ // row.devModel == 'a0d4da4b5c17b2172362a3f5a27bf217') ||
+ // row.status == '1'
+ // )
+ // },
+ // click: row => {
+ // // 直连设备注册
+ // ElMessageBox.confirm('确定注册该设备吗?', '提示', {
+ // confirmButtonText: '确认',
+ // cancelButtonText: '取消',
+ // type: 'warning'
+ // })
+ // .then(() => {
+ // governDeviceRegister({
+ // nDid: row.ndid,
+ // type: '4'
+ // }).then(res => {
+ // ElMessage.success(res.message)
+ // tableStore.onTableAction('search', {})
+ // })
+ // })
+ // .catch(e => {})
+ // }
+ // },
+ // //便携式设备注册
+ // {
+ // title: '注册',
+ // type: 'primary',
+ // icon: 'el-icon-Grid',
+ // render: 'basicButton',
+ // disabled: row => {
+ // // return (
+ // // (row.devType != '8b45cf6b7f5266e777d07c166ad5fa77' &&
+ // // row.devModel != 'a0d4da4b5c17b2172362a3f5a27bf217') ||
+ // // row.status != '1'
+ // // )
+ // return true
+ // },
+ // click: row => {
+ // // 便携式设备注册
+ // ElMessageBox.confirm('确定注册该设备吗?', '提示', {
+ // confirmButtonText: '确认',
+ // cancelButtonText: '取消',
+ // type: 'warning'
+ // })
+ // .then(() => {
+ // portableDeviceRegister({
+ // nDid: row.ndid
+ // }).then(res => {
+ // ElMessage.success(res.message)
+ // tableStore.index()
+ // })
+ // })
+ // .catch(e => {})
+ // }
+ // },
//直连设备接入
// {
// title: '接入',
@@ -407,7 +395,7 @@ const tableStore = new TableStore({
tableStore.index()
})
})
- .catch(e => {})
+ .catch(e => { })
}
},
{
@@ -512,7 +500,7 @@ const tableStore = new TableStore({
tableStore.onTableAction('search', {})
})
})
- .catch(e => {})
+ .catch(e => { })
}
}
]
@@ -580,11 +568,28 @@ const add = () => {
// 确认
const onSubmit = () => {
+
+
+
ruleFormRef.value.validate((valid: any) => {
if (valid) {
if (dialogTitle.value == '新增设备') {
addEquipmentDelivery(form).then(res => {
ElMessage.success('新增成功')
+ if (devTypeOptions.value.filter((item: any) => item.value == form.devType)[0].code == 'Portable') {
+ setTimeout(() => {
+ ElMessage.warning('设备正在接入中,请稍等。')
+ }, 3000)
+ portableDeviceRegister({
+ nDid: res.data.ndid
+ }).then(pres => {
+ ElMessage.success(pres.message)
+ tableStore.index()
+ }).catch(err => {
+ // clearTimeout (time)
+ })
+ }
+
resetForm()
tableStore.onTableAction('search', {})
})
@@ -630,7 +635,7 @@ onMounted(() => {
}, 100)
})
-const addMenu = () => {}
+const addMenu = () => { }
+
diff --git a/types/table.d.ts b/types/table.d.ts
index 61a4d3e..8a26293 100644
--- a/types/table.d.ts
+++ b/types/table.d.ts
@@ -58,6 +58,12 @@ declare global {
replaceValue?: any
// 时间格式化
timeFormat?: string
+ // 开关控制
+ onChangeField?: (row: TableRow, value: any) => void
+ activeValue?: string
+ inactiveValue?: string
+ activeText?: string
+ inactiveText?: string
// 自定义组件/函数渲染
customRender?: string | Component
// 使用了 render 属性时,渲染前对字段值的预处理方法,请返回新值