修改组态
This commit is contained in:
@@ -82,7 +82,7 @@ export function targetList(params: any) {
|
|||||||
export function eleEpdChooseTree_ypt() {
|
export function eleEpdChooseTree_ypt() {
|
||||||
return http.request({
|
return http.request({
|
||||||
url: '/cs-system-boot/csDictData/eleEpdChooseTree',
|
url: '/cs-system-boot/csDictData/eleEpdChooseTree',
|
||||||
method: 'post',
|
method: 'GET'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 无锡指标列表
|
// 无锡指标列表
|
||||||
|
|||||||
@@ -320,9 +320,13 @@ const onSaveClick = () => {
|
|||||||
const useData = useDataStore()
|
const useData = useDataStore()
|
||||||
const onSaveAll = async () => {
|
const onSaveAll = async () => {
|
||||||
let data: any = await useData.dataTree.map((item, ind) => {
|
let data: any = await useData.dataTree.map((item, ind) => {
|
||||||
|
let pathList = JSON.parse(item.path)
|
||||||
|
pathList.canvasCfg.lineList = pathList.json.filter(k => k.lineId != '' && k.lineId != null).map(k => k.lineId)
|
||||||
|
item.path = JSON.stringify(pathList)
|
||||||
item.sort = ind
|
item.sort = ind
|
||||||
return item
|
return item
|
||||||
})
|
})
|
||||||
|
console.log('🚀 ~ onSaveAll ~ data:', data)
|
||||||
|
|
||||||
let form = new FormData()
|
let form = new FormData()
|
||||||
let blob = new Blob([JSON.stringify(data)], {
|
let blob = new Blob([JSON.stringify(data)], {
|
||||||
|
|||||||
@@ -819,7 +819,6 @@ export const eventToVOn = (item: IDoneJson, externalMethod: (kid?: string) => vo
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!Object.prototype.hasOwnProperty.call(event_obj, event.type)) {
|
if (!Object.prototype.hasOwnProperty.call(event_obj, event.type)) {
|
||||||
|
|
||||||
event_obj[event.type] = code_str
|
event_obj[event.type] = code_str
|
||||||
} else {
|
} else {
|
||||||
event_obj[event.type] += code_str
|
event_obj[event.type] += code_str
|
||||||
|
|||||||
@@ -6,12 +6,13 @@
|
|||||||
<div class="title">{{ corner.title }}</div>
|
<div class="title">{{ corner.title }}</div>
|
||||||
<el-descriptions :column="1" size="small" label-width="70px" border>
|
<el-descriptions :column="1" size="small" label-width="70px" border>
|
||||||
<el-descriptions-item label="指标数据">
|
<el-descriptions-item label="指标数据">
|
||||||
<div style="max-height: 120px; overflow-y: auto">
|
<div style="height: 200px; overflow-y: auto">
|
||||||
<div
|
<div
|
||||||
v-for="item in props.steadyState?.filter(k => k.lineId === corner.elementId)"
|
v-for="item in props.steadyState?.filter(k => k.lineId === corner.elementId)"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
>
|
>
|
||||||
{{ item.statisticalName }}: {{ item.value === 3.1415926 ? '/' : item.value }}
|
{{ item.statisticalName.replace(/\//g, '_') }}:
|
||||||
|
{{ item.value === 3.1415926 ? '/' : item.value + item.unit }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
@@ -29,9 +30,7 @@ import { ref, onMounted, watch } from 'vue'
|
|||||||
import { Close } from '@element-plus/icons-vue'
|
import { Close } from '@element-plus/icons-vue'
|
||||||
|
|
||||||
// 定义 emits
|
// 定义 emits
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits(['lineListChange'])
|
||||||
(e: 'lineListChange', lineList: string[]): void
|
|
||||||
}>()
|
|
||||||
|
|
||||||
// 定义接收的 props
|
// 定义接收的 props
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
@@ -59,7 +58,6 @@ const corners = ref([
|
|||||||
])
|
])
|
||||||
|
|
||||||
const displayOrder = ref<number[]>([])
|
const displayOrder = ref<number[]>([])
|
||||||
const lineList = ref<string[]>([]) // 缓存打开的lineId
|
|
||||||
|
|
||||||
// 截取名称的最后一部分作为标题
|
// 截取名称的最后一部分作为标题
|
||||||
const extractTitleFromLineName = (lineName: string): string => {
|
const extractTitleFromLineName = (lineName: string): string => {
|
||||||
@@ -117,20 +115,25 @@ const showNextCorner = (elementId: string, lineName: string) => {
|
|||||||
displayOrder.value.push(replaceIndex)
|
displayOrder.value.push(replaceIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新 lineList,去重并触发事件
|
|
||||||
// updateLineList()
|
// updateLineList()
|
||||||
}
|
}
|
||||||
|
const timer = ref<any>(null)
|
||||||
// 更新 lineList,根据 corners 的 show 状态来维护
|
// 更新 lineList,根据 corners 的 show 状态来维护
|
||||||
const updateLineList = () => {
|
const updateLineList = () => {
|
||||||
// 根据 corners 中 show 为 true 的项来构建 lineList
|
|
||||||
const newLineList = corners.value.filter(corner => corner.show && corner.elementId).map(corner => corner.elementId)
|
const newLineList = corners.value.filter(corner => corner.show && corner.elementId).map(corner => corner.elementId)
|
||||||
|
if (timer.value) {
|
||||||
// 更新 lineList
|
clearInterval(timer.value)
|
||||||
lineList.value = newLineList
|
timer.value = null
|
||||||
|
}
|
||||||
// 触发事件,传递更新后的 lineList
|
if (newLineList.length > 0) {
|
||||||
emit('lineListChange', [...lineList.value])
|
emit('lineListChange', newLineList)
|
||||||
|
timer.value = setInterval(
|
||||||
|
() => {
|
||||||
|
emit('lineListChange', newLineList)
|
||||||
|
},
|
||||||
|
3 * 60 * 1000
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 关闭指定角落的函数
|
// 关闭指定角落的函数
|
||||||
@@ -145,9 +148,6 @@ const closeCorner = (id: string) => {
|
|||||||
if (orderIndex !== -1) {
|
if (orderIndex !== -1) {
|
||||||
displayOrder.value.splice(orderIndex, 1)
|
displayOrder.value.splice(orderIndex, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新 lineList
|
|
||||||
// updateLineList()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,7 +159,6 @@ const closeAllCorners = () => {
|
|||||||
})
|
})
|
||||||
displayOrder.value = []
|
displayOrder.value = []
|
||||||
|
|
||||||
// 更新 lineList
|
|
||||||
updateLineList()
|
updateLineList()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,20 +187,7 @@ defineExpose({
|
|||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
.corner {
|
.corner {
|
||||||
width: 260px;
|
width: 260px;
|
||||||
background-color: #2b2d3a90;
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
color: 000;
|
|
||||||
opacity: 0;
|
|
||||||
transform: scale(0.3);
|
|
||||||
transition: all 0.4s ease-out;
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 显示状态的样式 */
|
|
||||||
.corner:not([style*='display: none']):not([style*='display:none']) {
|
|
||||||
opacity: 1;
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-left {
|
.top-left {
|
||||||
@@ -235,15 +221,15 @@ defineExpose({
|
|||||||
.title {
|
.title {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
border-bottom: 1px solid #fff;
|
border-bottom: 1px solid #ccc;
|
||||||
|
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border-radius: 8px 8px 0 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.data-item {
|
.data-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.label {
|
.label {
|
||||||
|
|||||||
@@ -43,9 +43,9 @@
|
|||||||
@drag-canvas-mouse-up="dragCanvasMouseUp"
|
@drag-canvas-mouse-up="dragCanvasMouseUp"
|
||||||
></drag-canvas>
|
></drag-canvas>
|
||||||
</div>
|
</div>
|
||||||
<!-- 弹框 -->
|
|
||||||
<iframeDia :steadyState="dataList" ref="iframeDiaRef" @lineListChange="indicator"></iframeDia>
|
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 弹框 -->
|
||||||
|
<iframeDia :steadyState="dataList" ref="iframeDiaRef" @lineListChange="indicator"></iframeDia>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@@ -611,7 +611,7 @@ const setImportJson = (exportJson: IExportJson) => {
|
|||||||
if (!useData.loading) {
|
if (!useData.loading) {
|
||||||
if (exportJson == null) {
|
if (exportJson == null) {
|
||||||
setDoneJson(useData.dataTree[0].kId)
|
setDoneJson(useData.dataTree[0].kId)
|
||||||
publish(useData.dataTree[0].id)
|
publish(useData.dataTree[0])
|
||||||
} else {
|
} else {
|
||||||
executeOperations()
|
executeOperations()
|
||||||
}
|
}
|
||||||
@@ -624,7 +624,7 @@ const setImportJson = (exportJson: IExportJson) => {
|
|||||||
// 当loading变为true时执行操作
|
// 当loading变为true时执行操作
|
||||||
if (exportJson == null) {
|
if (exportJson == null) {
|
||||||
setDoneJson(useData.dataTree[0].kId)
|
setDoneJson(useData.dataTree[0].kId)
|
||||||
publish(useData.dataTree[0].id)
|
publish(useData.dataTree[0])
|
||||||
} else {
|
} else {
|
||||||
executeOperations()
|
executeOperations()
|
||||||
}
|
}
|
||||||
@@ -869,6 +869,7 @@ const setMqtt = async () => {
|
|||||||
// 设置消息接收回调
|
// 设置消息接收回调
|
||||||
mqttClient.value.onMessage((subscribe: string, message: any) => {
|
mqttClient.value.onMessage((subscribe: string, message: any) => {
|
||||||
const msg: any = uint8ArrayToObject(message)
|
const msg: any = uint8ArrayToObject(message)
|
||||||
|
console.log('🚀 ~ setMqtt ~ msg:', msg)
|
||||||
if (subscribe.split('/')[2] === 'csConfigRtData') {
|
if (subscribe.split('/')[2] === 'csConfigRtData') {
|
||||||
// 指标数据
|
// 指标数据
|
||||||
dataList.value = JSON.parse(msg.message)
|
dataList.value = JSON.parse(msg.message)
|
||||||
@@ -878,22 +879,28 @@ const setMqtt = async () => {
|
|||||||
console.error('MQTT 初始化失败:', error)
|
console.error('MQTT 初始化失败:', error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const publish = async (id: string) => {
|
const publish = async (list: any) => {
|
||||||
// if (mqttClient.value) {
|
console.log('🚀 ~ publish ~ list:', JSON.parse(list.path).canvasCfg.lineList)
|
||||||
// await mqttClient.value.subscribe('zl/askCSConfigWarnData/' + id)
|
if (mqttClient.value) {
|
||||||
// // 发送消息
|
// 发送消息
|
||||||
// await mqttClient.value.publish('/zl/askCSConfigWarnData/' + id, '{}')
|
await mqttClient.value.publish(
|
||||||
// if (timer.value) {
|
'/zl/askCSConfigWarnData/' + useData.dataTree[0].id,
|
||||||
// clearInterval(timer.value)
|
`[${JSON.parse(list.path).canvasCfg.lineList}]`
|
||||||
// timer.value = null
|
)
|
||||||
// }
|
if (timer.value) {
|
||||||
// timer.value = setInterval(
|
clearInterval(timer.value)
|
||||||
// () => {
|
timer.value = null
|
||||||
// mqttClient.value.publish('/zl/askCSConfigWarnData/' + id, '{}')
|
}
|
||||||
// },
|
timer.value = setInterval(
|
||||||
// 3 * 60 * 1000
|
() => {
|
||||||
// )
|
mqttClient.value.publish(
|
||||||
// }
|
'/zl/askCSConfigWarnData/' + useData.dataTree[0].id,
|
||||||
|
`[${JSON.parse(list.path).canvasCfg.lineList}]`
|
||||||
|
)
|
||||||
|
},
|
||||||
|
3 * 60 * 1000
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 绑定指标
|
// 绑定指标
|
||||||
const indicator = async (ids: string[]) => {
|
const indicator = async (ids: string[]) => {
|
||||||
|
|||||||
@@ -19,11 +19,10 @@ class HttpRequest {
|
|||||||
instance.interceptors.request.use(
|
instance.interceptors.request.use(
|
||||||
config => {
|
config => {
|
||||||
// 添加全局的loading..
|
// 添加全局的loading..
|
||||||
config.headers['Authorization'] =
|
|
||||||
'bearer ' + JSON.parse(window.localStorage.getItem('adminInfo') || '{}').access_token // 请求头带上token token要在登录的时候保存在localStorage中
|
|
||||||
|
|
||||||
// config.headers['Authorization'] =
|
// config.headers['Authorization'] =
|
||||||
// 'bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySW5kZXgiOiJmYTM3YjkzY2M5MGQ0YzE3ODRjYThmNmRlYmRkZWUxYSIsInVzZXJfbmFtZSI6InJvb3QiLCJzY29wZSI6WyJhbGwiXSwibmlja25hbWUiOiLotoXnuqfnrqHnkIblkZgiLCJ1c2VyVHlwZSI6MCwiZGVwdEluZGV4IjoiNTY5OWU1OTE2YTE4YTYzODFlMWFjOTJkYTViZDI2MjgiLCJleHAiOjE4MjE4MTc2MTksImF1dGhvcml0aWVzIjpbInJvb3QiXSwianRpIjoiMmJiM2Q5ZTYtNmY3Yy00Yjg1LThiM2EtZDI2ODdmMTUzMDg5IiwiY2xpZW50X2lkIjoibmpjbnRlc3QiLCJoZWFkU2N1bHB0dXJlIjoicmVzb3VyY2VEYXRhLzMxNzRDRUFFOUQ0MjRGMjJCQjkxQTU4OURENjdCMDUxLmpwZyJ9.WjeYl1lvvJdDE1FUGIhS99rE5qKaBXOypWxmxK0svWweGqEbu1XCLjKm_YkiTwjZJ_oIcn5JOO9rvHFkkea76BUsYo5wlzuBBiy7sKqM1fFzOFQq6hdFevNTJAbYH9FiBxYxI-e9DZ5mvLGE6umOjUfn_FAsku2w6Uj5DtvpOKBWYzLEPTEifOqNI9he4zJAmVZniUUMf26SDoEdfu0TyrIS1j_qKaEb-cqR1XDhivdthEBK5m9vxJyXFZ5kofNxwQQkit_oiqJRkCZIt9TWAjCh-frzMHCvA30hkAr-VCD2JfCmmEr3hW_lmwfINaPtFVbHCdCKqdrl6VmF1HObaQ'
|
// 'bearer ' + JSON.parse(window.localStorage.getItem('adminInfo') || '{}').access_token // 请求头带上token token要在登录的时候保存在localStorage中
|
||||||
|
config.headers['Authorization'] =
|
||||||
|
'bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySW5kZXgiOiJmYTM3YjkzY2M5MGQ0YzE3ODRjYThmNmRlYmRkZWUxYSIsInVzZXJfbmFtZSI6InJvb3QiLCJzY29wZSI6WyJhbGwiXSwibmlja25hbWUiOiLotoXnuqfnrqHnkIblkZgiLCJ1c2VyVHlwZSI6MCwiZGVwdEluZGV4IjoiNTY5OWU1OTE2YTE4YTYzODFlMWFjOTJkYTViZDI2MjgiLCJleHAiOjE4MjE4MTc2MTksImF1dGhvcml0aWVzIjpbInJvb3QiXSwianRpIjoiMmJiM2Q5ZTYtNmY3Yy00Yjg1LThiM2EtZDI2ODdmMTUzMDg5IiwiY2xpZW50X2lkIjoibmpjbnRlc3QiLCJoZWFkU2N1bHB0dXJlIjoicmVzb3VyY2VEYXRhLzMxNzRDRUFFOUQ0MjRGMjJCQjkxQTU4OURENjdCMDUxLmpwZyJ9.WjeYl1lvvJdDE1FUGIhS99rE5qKaBXOypWxmxK0svWweGqEbu1XCLjKm_YkiTwjZJ_oIcn5JOO9rvHFkkea76BUsYo5wlzuBBiy7sKqM1fFzOFQq6hdFevNTJAbYH9FiBxYxI-e9DZ5mvLGE6umOjUfn_FAsku2w6Uj5DtvpOKBWYzLEPTEifOqNI9he4zJAmVZniUUMf26SDoEdfu0TyrIS1j_qKaEb-cqR1XDhivdthEBK5m9vxJyXFZ5kofNxwQQkit_oiqJRkCZIt9TWAjCh-frzMHCvA30hkAr-VCD2JfCmmEr3hW_lmwfINaPtFVbHCdCKqdrl6VmF1HObaQ'
|
||||||
// 请求头携带token
|
// 请求头携带token
|
||||||
return config
|
return config
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user