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