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