修改组件页面

This commit is contained in:
guanj
2026-01-06 15:42:33 +08:00
parent 5d3d16f8ec
commit 7a81c008c3
12 changed files with 266 additions and 222 deletions

View File

@@ -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
})
}

View File

@@ -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' ||

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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

View File

@@ -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)

View File

@@ -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;

View File

@@ -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' }],

View File

@@ -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)`">

View File

@@ -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">

View File

@@ -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('修改成功!')

View File

@@ -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">