修改组件页面
This commit is contained in:
@@ -1,21 +1,33 @@
|
|||||||
import createAxios from '@/utils/request'
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
export function getFunctionsByRoleIndex(data) {
|
export function getFunctionsByRoleIndex(data) {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/user-boot/roleFunction/getFunctionsByRoleIndex',
|
url: '/user-boot/roleFunction/getFunctionsByRoleIndex',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: data
|
params: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateRoleMenu(data:any) {
|
export function updateRoleMenu(data: any) {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/user-boot/function/assignFunctionByRoleIndexes',
|
url: '/user-boot/function/assignFunctionByRoleIndexes',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data
|
data: data
|
||||||
// params: roleIndex,functionIndexList
|
})
|
||||||
// data:{
|
}
|
||||||
// roleIndex,functionIndexList
|
// 新增角色与系统关系
|
||||||
// }
|
export function systemAdd(data: any) {
|
||||||
})
|
return createAxios({
|
||||||
}
|
url: '/user-boot/sysRoleSystem/add',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 根据角色id获取系统信息
|
||||||
|
export function getSystemByRoleId(params: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/sysRoleSystem/getSystemByRoleId',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
|
|||||||
!(
|
!(
|
||||||
config.url == '/system-boot/file/upload' ||
|
config.url == '/system-boot/file/upload' ||
|
||||||
config.url == '/system-boot/file/getFileUrl' ||
|
config.url == '/system-boot/file/getFileUrl' ||
|
||||||
|
config.url == '/cs-harmonic-boot/realData/getBaseRealData' ||
|
||||||
config.url == '/harmonic-boot/grid/getAssessOverview' ||
|
config.url == '/harmonic-boot/grid/getAssessOverview' ||
|
||||||
config.url == '/harmonic-boot/gridDiagram/getGridDiagramAreaData' ||
|
config.url == '/harmonic-boot/gridDiagram/getGridDiagramAreaData' ||
|
||||||
config.url == '/cs-device-boot/csline/list' ||
|
config.url == '/cs-device-boot/csline/list' ||
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<div class="mt10 mr10" style="display: flex; justify-content: end">
|
<div class="mt10 mr10" style="display: flex; justify-content: end">
|
||||||
<el-button type="primary" icon="el-icon-Select" @click="saveSystem">保存</el-button>
|
<el-button type="primary" icon="el-icon-Select" @click="saveSystem">保存</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-checkbox-group v-model="systemIds" class="md10 system" >
|
<el-checkbox-group v-model="systemIds" class="md10 system">
|
||||||
<el-checkbox v-for="item in systemList" :label="item.name" :value="item.id" :key="item.id" />
|
<el-checkbox v-for="item in systemList" :label="item.name" :value="item.id" :key="item.id" />
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
@@ -46,7 +46,7 @@ import Table from '@/components/table/index.vue'
|
|||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import Tree from '@/components/tree/allocation.vue'
|
import Tree from '@/components/tree/allocation.vue'
|
||||||
import { functionTree } from '@/api/user-boot/function'
|
import { functionTree } from '@/api/user-boot/function'
|
||||||
import { getFunctionsByRoleIndex, updateRoleMenu } from '@/api/user-boot/roleFuction'
|
import { getFunctionsByRoleIndex, updateRoleMenu, getSystemByRoleId, systemAdd } from '@/api/user-boot/roleFuction'
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
import { del } from '@/api/user-boot/role'
|
import { del } from '@/api/user-boot/role'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
@@ -163,6 +163,9 @@ const currentChange = (data: any) => {
|
|||||||
getFunctionsByRoleIndex({ id: data.row.id }).then((res: any) => {
|
getFunctionsByRoleIndex({ id: data.row.id }).then((res: any) => {
|
||||||
treeRef.value.treeRef.setCheckedKeys(res.data.map((item: any) => item.id))
|
treeRef.value.treeRef.setCheckedKeys(res.data.map((item: any) => item.id))
|
||||||
})
|
})
|
||||||
|
getSystemByRoleId({ id: data.row.id }).then((res: any) => {
|
||||||
|
systemIds.value = res.data.systemIds || []
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const timeout = ref<NodeJS.Timeout>()
|
const timeout = ref<NodeJS.Timeout>()
|
||||||
@@ -185,17 +188,17 @@ const checkChange = (data: any) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
const saveSystem = () => {
|
const saveSystem = () => {
|
||||||
// updateRoleMenu({
|
systemAdd({
|
||||||
// id: menuListId.value,
|
roleId: menuListId.value,
|
||||||
// idList: systemIds.value
|
systemIds: systemIds.value
|
||||||
// })
|
})
|
||||||
// .then(() => {
|
.then(() => {
|
||||||
// ElMessage.success('操作成功!')
|
ElMessage.success('操作成功!')
|
||||||
// treeRef.value.loading = false
|
treeRef.value.loading = false
|
||||||
// })
|
})
|
||||||
// .catch(() => {
|
.catch(() => {
|
||||||
// treeRef.value.loading = false
|
treeRef.value.loading = false
|
||||||
// })
|
})
|
||||||
}
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
@@ -209,11 +212,11 @@ const addRole = () => {
|
|||||||
:deep(.el-tabs--border-card > .el-tabs__content) {
|
:deep(.el-tabs--border-card > .el-tabs__content) {
|
||||||
padding: 0px !important;
|
padding: 0px !important;
|
||||||
}
|
}
|
||||||
.system{
|
.system {
|
||||||
width: 330px;
|
width: 330px;
|
||||||
height: calc(100vh - 225px);
|
height: calc(100vh - 225px);
|
||||||
border: 1px solid var(--el-border-color);
|
border: 1px solid var(--el-border-color);
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,74 +1,86 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog class="cn-operate-dialog" width="700px" v-model.trim="dialogVisible" :title="title">
|
<el-dialog class="cn-operate-dialog" width="700px" v-model.trim="dialogVisible" :title="title">
|
||||||
<el-form :inline="false" :model="form" label-width="auto" class="form-one" :rules="rules">
|
<el-form :inline="false" ref="formRef" :model="form" label-width="auto" class="form-one" :rules="rules">
|
||||||
<el-form-item label="角色名称">
|
<el-form-item label="角色名称" prop="name">
|
||||||
<el-input maxlength="32" show-word-limit v-model.trim="form.name" placeholder="请输入菜单名称" />
|
<el-input maxlength="32" show-word-limit v-model.trim="form.name" placeholder="请输入菜单名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="角色编码">
|
<el-form-item label="角色编码" prop="code">
|
||||||
<el-input maxlength="32" show-word-limit v-model.trim="form.code" placeholder="请输入菜单名称" />
|
<el-input maxlength="32" show-word-limit v-model.trim="form.code" placeholder="请输入菜单名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="角色描述">
|
<el-form-item label="角色描述">
|
||||||
<el-input maxlength="300" show-word-limit v-model.trim="form.remark" :rows="2" type="textarea"
|
<el-input
|
||||||
placeholder="请输入描述" />
|
maxlength="300"
|
||||||
</el-form-item>
|
show-word-limit
|
||||||
</el-form>
|
v-model.trim="form.remark"
|
||||||
|
:rows="2"
|
||||||
<template #footer>
|
type="textarea"
|
||||||
<span class="dialog-footer">
|
placeholder="请输入描述"
|
||||||
<el-button @click="dialogVisible = false">取消</el-button>
|
/>
|
||||||
<el-button type="primary" @click="submit">确认</el-button>
|
</el-form-item>
|
||||||
</span>
|
</el-form>
|
||||||
</template>
|
|
||||||
</el-dialog>
|
<template #footer>
|
||||||
</template>
|
<span class="dialog-footer">
|
||||||
<script lang="ts" setup>
|
<el-button @click="dialogVisible = false">取消</el-button>
|
||||||
import { ref, inject } from 'vue'
|
<el-button type="primary" @click="submit">确认</el-button>
|
||||||
import { reactive } from 'vue'
|
</span>
|
||||||
import TableStore from '@/utils/tableStore'
|
</template>
|
||||||
import { ElMessage } from 'element-plus'
|
</el-dialog>
|
||||||
import { add, update } from '@/api/user-boot/role'
|
</template>
|
||||||
import { useAdminInfo } from '@/stores/adminInfo'
|
<script lang="ts" setup>
|
||||||
|
import { ref, inject } from 'vue'
|
||||||
const adminInfo = useAdminInfo()
|
import { reactive } from 'vue'
|
||||||
const tableStore = inject('tableStore') as TableStore
|
import TableStore from '@/utils/tableStore'
|
||||||
// do not use same name with ref
|
import { ElMessage } from 'element-plus'
|
||||||
const form = reactive({
|
import { add, update } from '@/api/user-boot/role'
|
||||||
code: '',
|
import { useAdminInfo } from '@/stores/adminInfo'
|
||||||
name: '',
|
|
||||||
remark: '',
|
const adminInfo = useAdminInfo()
|
||||||
id: '',
|
const tableStore = inject('tableStore') as TableStore
|
||||||
type: 0
|
// do not use same name with ref
|
||||||
})
|
const form = reactive({
|
||||||
const rules = {
|
code: '',
|
||||||
name: [{ required: true, message: '角色名称不能为空', trigger: 'blur' }],
|
name: '',
|
||||||
code: [{ required: true, message: '角色编码不能为空', trigger: 'blur' }]
|
remark: '',
|
||||||
}
|
id: '',
|
||||||
const dialogVisible = ref(false)
|
type: 0
|
||||||
const title = ref('新增菜单')
|
})
|
||||||
const open = (text: string, data?: anyObj) => {
|
const rules = {
|
||||||
title.value = text
|
name: [{ required: true, message: '角色名称不能为空', trigger: 'blur' }],
|
||||||
dialogVisible.value = true
|
code: [{ required: true, message: '角色编码不能为空', trigger: 'blur' }]
|
||||||
if (data) {
|
}
|
||||||
for (let key in form) {
|
const dialogVisible = ref(false)
|
||||||
form[key] = data[key]
|
const title = ref('新增菜单')
|
||||||
}
|
const formRef = ref()
|
||||||
} else {
|
const open = (text: string, data?: anyObj) => {
|
||||||
for (let key in form) {
|
formRef.value?.resetFields()
|
||||||
form[key] = ''
|
title.value = text
|
||||||
}
|
dialogVisible.value = true
|
||||||
}
|
if (data) {
|
||||||
}
|
for (let key in form) {
|
||||||
const submit = async () => {
|
form[key] = data[key]
|
||||||
if (form.id) {
|
}
|
||||||
await update(form)
|
} else {
|
||||||
} else {
|
for (let key in form) {
|
||||||
form.type = adminInfo.$state.userType + 1
|
form[key] = ''
|
||||||
await add(form)
|
}
|
||||||
}
|
}
|
||||||
ElMessage.success('保存成功')
|
}
|
||||||
tableStore.index()
|
const submit = async () => {
|
||||||
dialogVisible.value = false
|
formRef.value.validate(async valid => {
|
||||||
}
|
if (valid) {
|
||||||
|
if (form.id) {
|
||||||
defineExpose({ open })
|
await update(form)
|
||||||
</script>
|
} else {
|
||||||
|
form.type = adminInfo.$state.userType + 1
|
||||||
|
await add(form)
|
||||||
|
}
|
||||||
|
ElMessage.success('保存成功')
|
||||||
|
tableStore.index()
|
||||||
|
dialogVisible.value = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({ open })
|
||||||
|
</script>
|
||||||
|
|||||||
@@ -700,7 +700,7 @@ const handleTrend = async () => {
|
|||||||
// }
|
// }
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
ElMessage.success('装置应答失败')
|
ElMessage.warning('装置应答失败')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(e => {
|
.catch(e => {
|
||||||
@@ -748,11 +748,13 @@ const handleHarmonicSpectrum = async () => {
|
|||||||
//返回
|
//返回
|
||||||
const handleReturn = async () => {
|
const handleReturn = async () => {
|
||||||
if (realDataTimer.value) {
|
if (realDataTimer.value) {
|
||||||
clearInterval(realDataTimer.value)
|
window.clearInterval(realDataTimer.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trendTimer.value) {
|
if (trendTimer.value) {
|
||||||
clearInterval(trendTimer.value)
|
window.clearInterval(trendTimer.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
realTimeFlag.value = true
|
realTimeFlag.value = true
|
||||||
sonTab.value = null
|
sonTab.value = null
|
||||||
activeTrendName.value = 0
|
activeTrendName.value = 0
|
||||||
@@ -981,10 +983,10 @@ const getRealDataMqttMsg = async () => {
|
|||||||
})
|
})
|
||||||
}, 30000)
|
}, 30000)
|
||||||
mqttRef.value.on('message', (topic: any, message: any) => {
|
mqttRef.value.on('message', (topic: any, message: any) => {
|
||||||
console.log(
|
// console.log(
|
||||||
'实时数据&实时趋势---mqtt接收到消息',
|
// '实时数据&实时趋势---mqtt接收到消息',
|
||||||
JSON.parse(JSON.stringify(JSON.parse(new TextDecoder().decode(message))))
|
// JSON.parse(JSON.stringify(JSON.parse(new TextDecoder().decode(message))))
|
||||||
)
|
// )
|
||||||
let obj = JSON.parse(JSON.stringify(JSON.parse(new TextDecoder().decode(message))))
|
let obj = JSON.parse(JSON.stringify(JSON.parse(new TextDecoder().decode(message))))
|
||||||
|
|
||||||
if (lineId.value != obj.lineId || adminInfo.userIndex != obj.userId) return
|
if (lineId.value != obj.lineId || adminInfo.userIndex != obj.userId) return
|
||||||
@@ -1152,10 +1154,10 @@ const mqttMessage = ref<any>({})
|
|||||||
const handleClick = async (tab?: any) => {
|
const handleClick = async (tab?: any) => {
|
||||||
tableLoading.value = true
|
tableLoading.value = true
|
||||||
if (realDataTimer.value) {
|
if (realDataTimer.value) {
|
||||||
clearInterval(realDataTimer.value)
|
window.clearInterval(realDataTimer.value)
|
||||||
}
|
}
|
||||||
if (trendTimer.value) {
|
if (trendTimer.value) {
|
||||||
clearInterval(trendTimer.value)
|
window.clearInterval(trendTimer.value)
|
||||||
}
|
}
|
||||||
sonTab.value = null
|
sonTab.value = null
|
||||||
activeTrendName.value = 0
|
activeTrendName.value = 0
|
||||||
|
|||||||
@@ -375,10 +375,10 @@ const changeDataType = () => {
|
|||||||
let flag = dataType.value.includes(0) || dataType.value.includes(1)
|
let flag = dataType.value.includes(0) || dataType.value.includes(1)
|
||||||
if (flag) {
|
if (flag) {
|
||||||
let data1 = dataType.value.includes(0)
|
let data1 = dataType.value.includes(0)
|
||||||
? list.value[activeTab.value].loadList.map(k => (k.data == 3.14159 ? 0 : k.data))
|
? list.value[activeTab.value]?.loadList.map(k => (k.data == 3.14159 ? 0 : k.data))
|
||||||
: [0]
|
: [0]
|
||||||
let data2 = dataType.value.includes(1)
|
let data2 = dataType.value.includes(1)
|
||||||
? list.value[activeTab.value].modOutList.map(k => (k.data == 3.14159 ? 0 : k.data))
|
? list.value[activeTab.value]?.modOutList.map(k => (k.data == 3.14159 ? 0 : k.data))
|
||||||
: [0]
|
: [0]
|
||||||
let [modOuMin, modOuMax] = yMethod([...data1, ...data2])
|
let [modOuMin, modOuMax] = yMethod([...data1, ...data2])
|
||||||
console.log("🚀 ~ changeDataType ~ modOuMin:", modOuMin,modOuMax)
|
console.log("🚀 ~ changeDataType ~ modOuMin:", modOuMin,modOuMax)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="realtrend" v-loading="loading">
|
<div class="realtrend" v-loading="loading">
|
||||||
<div class="select" v-if="!loading">
|
<div class="select" v-if="!loading">
|
||||||
<div class="mr10">谐波次数 </div>
|
<div class="mr10">谐波次数</div>
|
||||||
<el-select v-model.trim="selectValue" style="width: 100px" @change="selectChange">
|
<el-select v-model.trim="selectValue" style="width: 100px" @change="selectChange">
|
||||||
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -29,24 +29,26 @@
|
|||||||
</div> -->
|
</div> -->
|
||||||
<div class="realtrend_table" v-if="Object.keys(tableData).length != 0">
|
<div class="realtrend_table" v-if="Object.keys(tableData).length != 0">
|
||||||
<div class="thead_left">
|
<div class="thead_left">
|
||||||
<p style=" font-weight: 700; background-color: #F3F6F9;">次数(次)</p>
|
<p style="font-weight: 700; background-color: #f3f6f9">次数(次)</p>
|
||||||
<p>{{ item.groupName }}{{ item.unit ? '(' + item.unit + ')' : '' }}</p>
|
<p>{{ item.groupName }}{{ item.unit ? '(' + item.unit + ')' : '' }}</p>
|
||||||
<!-- <p>国标限值{{ item.unit ? '(' + item.unit + ')' : '' }}</p> -->
|
<!-- <p>国标限值{{ item.unit ? '(' + item.unit + ')' : '' }}</p> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="thead_right">
|
<div class="thead_right">
|
||||||
<div class="right_cell" v-for="(value, key, index) in tableData" :key="index">
|
<div class="right_cell" v-for="(value, key, index) in tableData" :key="index">
|
||||||
<p v-if="item.groupName.includes('间谐波')" style="background-color: #F3F6F9;">
|
<p v-if="item.groupName.includes('间谐波')" style="background-color: #f3f6f9">
|
||||||
{{ Number(String(key).replace('data', ' ')) - 0.5 }}
|
{{ Number(String(key).replace('data', ' ')) - 0.5 }}
|
||||||
</p>
|
</p>
|
||||||
<p v-else style="background-color: #F3F6F9;">
|
<p v-else style="background-color: #f3f6f9">
|
||||||
<span>{{ String(key).replace('data', ' ') }}</span>
|
<span>{{ String(key).replace('data', ' ') }}</span>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<span v-if="
|
<span
|
||||||
String(key).includes('data') &&
|
v-if="
|
||||||
String(key) != 'dataLevel' &&
|
String(key).includes('data') &&
|
||||||
String(key) != 'dataTime'
|
String(key) != 'dataLevel' &&
|
||||||
">
|
String(key) != 'dataTime'
|
||||||
|
"
|
||||||
|
>
|
||||||
{{ value }}
|
{{ value }}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
@@ -60,10 +62,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</p> -->
|
</p> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab_info" v-if="Object.keys(tableData).length != 0">
|
<div class="tab_info" v-if="Object.keys(tableData).length != 0">
|
||||||
@@ -91,18 +90,17 @@ const selectValue = ref('1')
|
|||||||
const options = [
|
const options = [
|
||||||
{
|
{
|
||||||
value: '3',
|
value: '3',
|
||||||
label: '全部',
|
label: '全部'
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
value: '1',
|
value: '1',
|
||||||
label: '奇次',
|
label: '奇次'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: '2',
|
value: '2',
|
||||||
label: '偶次',
|
label: '偶次'
|
||||||
},
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
interface RowVO {
|
interface RowVO {
|
||||||
[key: string]: any
|
[key: string]: any
|
||||||
@@ -121,36 +119,58 @@ const gridOptions = ref<VxeGridProps<RowVO>>({
|
|||||||
})
|
})
|
||||||
gridOptions.value = { ...defaultAttribute, ...gridOptions.value }
|
gridOptions.value = { ...defaultAttribute, ...gridOptions.value }
|
||||||
|
|
||||||
const tabsList: any = ref([])
|
const tabsList: any = ref([
|
||||||
|
{
|
||||||
|
id: '6d5470f509ca271d7108a86e83bb283f',
|
||||||
|
groupName: '谐波电压含有率',
|
||||||
|
thdDataVOS: null,
|
||||||
|
thdDataTdVODatas: null,
|
||||||
|
unit: '%'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '8dc260f16280184e2b57d26668dc00b1',
|
||||||
|
groupName: '谐波电流幅值',
|
||||||
|
thdDataVOS: null,
|
||||||
|
thdDataTdVODatas: null,
|
||||||
|
unit: 'A'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'ae31115b83f02f03a0d3bd65cb017121',
|
||||||
|
groupName: '间谐波电压含有率',
|
||||||
|
thdDataVOS: null,
|
||||||
|
thdDataTdVODatas: null,
|
||||||
|
unit: '%'
|
||||||
|
}
|
||||||
|
])
|
||||||
const loading: any = ref(true)
|
const loading: any = ref(true)
|
||||||
//接收参数
|
//接收参数
|
||||||
const params = ref({})
|
const params = ref({})
|
||||||
const open = async (val: any) => {
|
const open = async (val: any) => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
//获取指标tab
|
//获取指标tab
|
||||||
tabsList.value = [
|
// tabsList.value = [
|
||||||
{
|
// {
|
||||||
id: '6d5470f509ca271d7108a86e83bb283f',
|
// id: '6d5470f509ca271d7108a86e83bb283f',
|
||||||
groupName: '谐波电压含有率',
|
// groupName: '谐波电压含有率',
|
||||||
thdDataVOS: null,
|
// thdDataVOS: null,
|
||||||
thdDataTdVODatas: null,
|
// thdDataTdVODatas: null,
|
||||||
unit: '%'
|
// unit: '%'
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
id: '8dc260f16280184e2b57d26668dc00b1',
|
// id: '8dc260f16280184e2b57d26668dc00b1',
|
||||||
groupName: '谐波电流幅值',
|
// groupName: '谐波电流幅值',
|
||||||
thdDataVOS: null,
|
// thdDataVOS: null,
|
||||||
thdDataTdVODatas: null,
|
// thdDataTdVODatas: null,
|
||||||
unit: 'A'
|
// unit: 'A'
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
id: 'ae31115b83f02f03a0d3bd65cb017121',
|
// id: 'ae31115b83f02f03a0d3bd65cb017121',
|
||||||
groupName: '间谐波电压含有率',
|
// groupName: '间谐波电压含有率',
|
||||||
thdDataVOS: null,
|
// thdDataVOS: null,
|
||||||
thdDataTdVODatas: null,
|
// thdDataTdVODatas: null,
|
||||||
unit: '%'
|
// unit: '%'
|
||||||
}
|
// }
|
||||||
]
|
// ]
|
||||||
if (tabsList.value.length != 0) {
|
if (tabsList.value.length != 0) {
|
||||||
// activeName.value = tabsList.value[0]?.id
|
// activeName.value = tabsList.value[0]?.id
|
||||||
activeName.value = val.activeTrendName || 0
|
activeName.value = val.activeTrendName || 0
|
||||||
@@ -222,13 +242,12 @@ const init = () => {
|
|||||||
let list: any = [
|
let list: any = [
|
||||||
trendData.map((item: any) => {
|
trendData.map((item: any) => {
|
||||||
return item.value
|
return item.value
|
||||||
}),
|
})
|
||||||
// gbData.value.map((item: any) => {
|
// gbData.value.map((item: any) => {
|
||||||
// return item.value
|
// return item.value
|
||||||
// }),
|
// }),
|
||||||
|
|
||||||
]
|
]
|
||||||
let legendList = [tabsList.value[activeName.value]?.groupName, ]
|
let legendList = [tabsList.value[activeName.value]?.groupName]
|
||||||
// let legendList = [tabsList.value[activeName.value]?.groupName, '国标限值',]
|
// let legendList = [tabsList.value[activeName.value]?.groupName, '国标限值',]
|
||||||
// echartsData.value.legend.data = legendList
|
// echartsData.value.legend.data = legendList
|
||||||
list.map((item: any, index: any) => {
|
list.map((item: any, index: any) => {
|
||||||
@@ -269,7 +288,7 @@ const setRealTrendData = (val: any) => {
|
|||||||
mqttMessage.value = val
|
mqttMessage.value = val
|
||||||
for (let key in val) {
|
for (let key in val) {
|
||||||
if (String(key).includes('data') && String(key) != 'dataLevel' && String(key) != 'dataTime') {
|
if (String(key).includes('data') && String(key) != 'dataLevel' && String(key) != 'dataTime') {
|
||||||
const numberPart = parseInt(key.replace('data', ''));
|
const numberPart = parseInt(key.replace('data', ''))
|
||||||
if (selectValue.value != '3') {
|
if (selectValue.value != '3') {
|
||||||
if (selectValue.value == '2') {
|
if (selectValue.value == '2') {
|
||||||
if (activeName.value == 2) {
|
if (activeName.value == 2) {
|
||||||
@@ -292,19 +311,16 @@ const setRealTrendData = (val: any) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
tableData.value[key] = val[key]
|
tableData.value[key] = val[key]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tabsList.value[activeName.value].groupName.includes('间谐波')) {
|
if (!tabsList.value[activeName.value].groupName.includes('间谐波')) {
|
||||||
delete tableData.value.data1
|
delete tableData.value.data1
|
||||||
} else {
|
} else {
|
||||||
console.log('不删除')
|
// console.log('不删除')
|
||||||
}
|
}
|
||||||
if (Object.keys(tableData.value).length != 0) {
|
if (Object.keys(tableData.value).length != 0) {
|
||||||
init()
|
init()
|
||||||
@@ -327,28 +343,21 @@ const setOverLimitData = (val: any) => {
|
|||||||
if (activeName.value == 0) {
|
if (activeName.value == 0) {
|
||||||
if (String(key).includes('uharm')) {
|
if (String(key).includes('uharm')) {
|
||||||
if (key.startsWith('uharm')) {
|
if (key.startsWith('uharm')) {
|
||||||
|
limitData.value[key] = val[key]
|
||||||
limitData.value[key] = val[key];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (activeName.value == 1) {
|
} else if (activeName.value == 1) {
|
||||||
if (String(key).includes('iharm')) {
|
if (String(key).includes('iharm')) {
|
||||||
limitData.value[key] = val[key]
|
limitData.value[key] = val[key]
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (String(key).includes('inuharm')) {
|
if (String(key).includes('inuharm')) {
|
||||||
limitData.value[key] = val[key]
|
limitData.value[key] = val[key]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
onMounted(() => { })
|
onMounted(() => {})
|
||||||
defineExpose({ open, setRealTrendData, setOverLimitData })
|
defineExpose({ open, setRealTrendData, setOverLimitData })
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@@ -411,7 +420,6 @@ defineExpose({ open, setRealTrendData, setOverLimitData })
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
.realtrend_table {
|
.realtrend_table {
|
||||||
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: auto;
|
height: auto;
|
||||||
max-height: 150px;
|
max-height: 150px;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog class="cn-operate-dialog" v-model.trim="dialogVisible" :title="title" @close=" emit('close')">
|
<el-dialog class="cn-operate-dialog" draggable v-model.trim="dialogVisible" :title="title" @close="emit('close')">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<div style="padding-left: 50px">
|
<div style="padding-left: 50px">
|
||||||
<el-divider content-position="center">基础数据</el-divider>
|
<el-divider content-position="center">基础数据</el-divider>
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="单位:" prop="unit">
|
<el-form-item label="单位:">
|
||||||
<el-input
|
<el-input
|
||||||
maxlength="32"
|
maxlength="32"
|
||||||
show-word-limit
|
show-word-limit
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
placeholder="请输入单位"
|
placeholder="请输入单位"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="基础数据类型:" prop="type">
|
<el-form-item label="基础数据类型:" >
|
||||||
<el-input
|
<el-input
|
||||||
maxlength="32"
|
maxlength="32"
|
||||||
show-word-limit
|
show-word-limit
|
||||||
@@ -70,10 +70,10 @@
|
|||||||
placeholder="请输入基础数据类型"
|
placeholder="请输入基础数据类型"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="开始结束次数:" prop="harmStart">
|
<el-form-item label="开始结束次数:">
|
||||||
<el-slider v-model.trim="form.harm" range show-stops :max="50" style="width: 95%" />
|
<el-slider v-model.trim="form.harm" range show-stops :max="50" style="width: 95%" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="统计方法:" prop="statMethod">
|
<el-form-item label="统计方法:">
|
||||||
<el-select
|
<el-select
|
||||||
v-model.trim="form.statMethod"
|
v-model.trim="form.statMethod"
|
||||||
multiple
|
multiple
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="报表数据来源:" prop="resourcesId">
|
<el-form-item label="报表数据来源:">
|
||||||
<el-select v-model.trim="form.resourcesId" filterable clearable placeholder="请选择报表数据来源">
|
<el-select v-model.trim="form.resourcesId" filterable clearable placeholder="请选择报表数据来源">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in ResourcesIdSelect"
|
v-for="item in ResourcesIdSelect"
|
||||||
@@ -247,7 +247,7 @@
|
|||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<span class="dialog-footer">
|
<span class="dialog-footer">
|
||||||
<el-button @click="dialogVisible = false; emit('close')">取消</el-button>
|
<el-button @click=";(dialogVisible = false), emit('close')">取消</el-button>
|
||||||
<el-button type="primary" @click="submit">确认</el-button>
|
<el-button type="primary" @click="submit">确认</el-button>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -338,17 +338,14 @@ const form = reactive<any>({
|
|||||||
limitTable: 'pq_overlimit'
|
limitTable: 'pq_overlimit'
|
||||||
})
|
})
|
||||||
const rules = {
|
const rules = {
|
||||||
dataType: [
|
dataType: [{ required: true, message: '请输入数据分类', trigger: 'change' }],
|
||||||
{ required: true, message: '请输入数据分类', trigger: 'blur' },
|
|
||||||
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
name: [{ required: true, message: '请输入数据名称', trigger: 'blur' }],
|
name: [{ required: true, message: '请输入数据名称', trigger: 'blur' }],
|
||||||
otherName: [{ required: true, message: '请输入别名', trigger: 'blur' }],
|
otherName: [{ required: true, message: '请输入别名', trigger: 'blur' }],
|
||||||
showName: [{ required: true, message: '请输入展示名称', trigger: 'blur' }],
|
showName: [{ required: true, message: '请输入展示名称', trigger: 'blur' }],
|
||||||
phase: [{ type: 'array', required: true, message: '请选择相别', trigger: 'blur' }],
|
phase: [{ required: true, message: '请选择相别', trigger: 'change' }],
|
||||||
unit: [{ required: true, message: '请输入单位', trigger: 'blur' }],
|
unit: [{ required: true, message: '请输入单位', trigger: 'blur' }],
|
||||||
type: [{ required: true, message: '请输入基础数据类型', trigger: 'blur' }],
|
type: [{ required: true, message: '请输入基础数据类型', trigger: 'blur' }],
|
||||||
harmStart: [{ required: true, message: '请填写开始结束次数', trigger: 'blur' }],
|
harmStart: [{ required: true, message: '请填写开始结束次数', trigger: 'change' }],
|
||||||
statMethod: [{ required: true, message: '请选择统计方法', trigger: 'blur' }],
|
statMethod: [{ required: true, message: '请选择统计方法', trigger: 'blur' }],
|
||||||
classId: [{ required: true, message: '请选择数据存储', trigger: 'blur' }],
|
classId: [{ required: true, message: '请选择数据存储', trigger: 'blur' }],
|
||||||
resourcesId: [{ required: true, message: '请选择报表数据来源', trigger: 'blur' }],
|
resourcesId: [{ required: true, message: '请选择报表数据来源', trigger: 'blur' }],
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
</template>
|
</template>
|
||||||
<template #operation>
|
<template #operation>
|
||||||
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">生成报告</el-button>
|
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">导出</el-button>
|
||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<div class="box" :style="`height: calc(${tableStore.table.height} + 65px)`">
|
<div class="box" :style="`height: calc(${tableStore.table.height} + 65px)`">
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
<el-button icon="el-icon-Upload" type="primary" class="mr10 ml10">上传接线图</el-button>
|
<el-button icon="el-icon-Upload" type="primary" class="mr10 ml10">上传接线图</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">生成</el-button>
|
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">导出</el-button>
|
||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
|
|||||||
@@ -13,13 +13,32 @@
|
|||||||
<el-input v-model="form.name" placeholder="请输入组件名称"></el-input>
|
<el-input v-model="form.name" placeholder="请输入组件名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item class="top" label="父组件节点" prop="system">
|
<el-form-item class="top" label="父组件节点" prop="system">
|
||||||
<el-cascader
|
<!-- <el-cascader
|
||||||
v-model="form.system"
|
v-model="form.system"
|
||||||
:options="customDeptOption"
|
:options="customDeptOption"
|
||||||
:props="props"
|
:props="props"
|
||||||
placeholder="请选择父组件节点"
|
placeholder="请选择父组件节点"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/> -->
|
||||||
|
<el-select v-model="form.systemType" placeholder="请选择父组件节点">
|
||||||
|
<el-option
|
||||||
|
v-for="item in customDeptOption"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item class="top" label="组件绑定系统" prop="systemIds">
|
||||||
|
<el-select
|
||||||
|
v-model="form.systemIds"
|
||||||
|
multiple
|
||||||
|
collapse-tags
|
||||||
|
collapse-tags-tooltip
|
||||||
|
placeholder="请选择组件绑定系统"
|
||||||
|
>
|
||||||
|
<el-option v-for="item in systemList" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="组件图标" prop="icon">
|
<el-form-item label="组件图标" prop="icon">
|
||||||
<IconSelector v-model="form.icon" placeholder="请选择图标" />
|
<IconSelector v-model="form.icon" placeholder="请选择图标" />
|
||||||
@@ -39,17 +58,7 @@
|
|||||||
<el-checkbox-button value="5">日</el-checkbox-button>
|
<el-checkbox-button value="5">日</el-checkbox-button>
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item class="top" label="组件绑定系统" prop="systemIds">
|
|
||||||
<el-select
|
|
||||||
v-model="form.systemIds"
|
|
||||||
multiple
|
|
||||||
collapse-tags
|
|
||||||
collapse-tags-tooltip
|
|
||||||
placeholder="请选择组件绑定系统"
|
|
||||||
>
|
|
||||||
<el-option v-for="item in systemList" :key="item.id" :label="item.name" :value="item.id" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item class="top" label="组件排序" prop="sort">
|
<el-form-item class="top" label="组件排序" prop="sort">
|
||||||
<el-input v-model.number="form.sort" placeholder="请输入组件排序"></el-input>
|
<el-input v-model.number="form.sort" placeholder="请输入组件排序"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -119,11 +128,11 @@ const systemList = dictData.getBasicData('System_Type')
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
customDeptOption.value = dictData.getBasicData('Component_Type')
|
customDeptOption.value = dictData.getBasicData('Component_Type')
|
||||||
|
|
||||||
customDeptOption.value.forEach((item: any) => {
|
// customDeptOption.value.forEach((item: any) => {
|
||||||
getFatherComponent({ systemType: item.id }).then(res => {
|
// getFatherComponent({ systemType: item.id }).then(res => {
|
||||||
item.children = res.data.filter(item => item.name != '无')
|
// item.children = res.data.filter(item => item.name != '无')
|
||||||
})
|
// })
|
||||||
})
|
// })
|
||||||
})
|
})
|
||||||
|
|
||||||
const open = (text: string, data?: anyObj) => {
|
const open = (text: string, data?: anyObj) => {
|
||||||
@@ -133,7 +142,7 @@ const open = (text: string, data?: anyObj) => {
|
|||||||
if (data) {
|
if (data) {
|
||||||
let Data = JSON.parse(JSON.stringify(data))
|
let Data = JSON.parse(JSON.stringify(data))
|
||||||
form.value = Data
|
form.value = Data
|
||||||
form.value.system = [Data.systemType, Data.pid]
|
form.value.system = [Data.systemType]
|
||||||
// form.value.timeKeys = Data.timeKeys.split(',').map(Number)
|
// form.value.timeKeys = Data.timeKeys.split(',').map(Number)
|
||||||
form.value.timeKeys = Data.timeKeys || []
|
form.value.timeKeys = Data.timeKeys || []
|
||||||
}
|
}
|
||||||
@@ -163,8 +172,8 @@ const submit = () => {
|
|||||||
if (title.value == '新增组件') {
|
if (title.value == '新增组件') {
|
||||||
await componentAdd({
|
await componentAdd({
|
||||||
...form.value,
|
...form.value,
|
||||||
systemType: form.value.system[0],
|
// systemType: form.value.system[0],
|
||||||
pid: form.value.system[1],
|
pid: '',
|
||||||
image: url
|
image: url
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
ElMessage.success('新增成功!')
|
ElMessage.success('新增成功!')
|
||||||
@@ -174,8 +183,8 @@ const submit = () => {
|
|||||||
} else {
|
} else {
|
||||||
await componentEdit({
|
await componentEdit({
|
||||||
...form.value,
|
...form.value,
|
||||||
systemType: form.value.system[0],
|
// systemType: form.value.system[0],
|
||||||
pid: form.value.system[1],
|
pid: '',
|
||||||
image: url
|
image: url
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
ElMessage.success('修改成功!')
|
ElMessage.success('修改成功!')
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
<TableHeader :showSearch="false">
|
<TableHeader :showSearch="false">
|
||||||
<template v-slot:operation>
|
<template v-slot:operation>
|
||||||
<el-button type="primary" @click="addTree" icon="el-icon-Plus">新增树</el-button>
|
<!-- <el-button type="primary" @click="addTree" icon="el-icon-Plus">新增树</el-button> -->
|
||||||
<el-button type="primary" @click="add" icon="el-icon-Plus">新增组件</el-button>
|
<el-button type="primary" @click="add" icon="el-icon-Plus">新增组件</el-button>
|
||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
<p>{{ k.name }}</p>
|
<p>{{ k.name }}</p>
|
||||||
|
|
||||||
<!-- <el-icon><Edit /></el-icon> -->
|
<!-- <el-icon><Edit /></el-icon> -->
|
||||||
<el-button
|
<!-- <el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-Edit"
|
icon="el-icon-Edit"
|
||||||
link
|
link
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
link
|
link
|
||||||
class="ml0"
|
class="ml0"
|
||||||
@click.stop="del(k)"
|
@click.stop="del(k)"
|
||||||
></el-button>
|
></el-button> -->
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
<div :style="height" style="overflow-y: auto; overflow-x: hidden">
|
<div :style="height" style="overflow-y: auto; overflow-x: hidden">
|
||||||
|
|||||||
Reference in New Issue
Block a user