修改全局报表功能
This commit is contained in:
@@ -103,6 +103,14 @@ export function getTemplateByDept(params) {
|
||||
params
|
||||
})
|
||||
}
|
||||
// 获取模版
|
||||
export function querySysExcel(params) {
|
||||
return createAxios({
|
||||
url: '/cs-harmonic-boot/sysExcel/querySysExcel',
|
||||
method: 'post',
|
||||
params
|
||||
})
|
||||
}
|
||||
//资源管理 查询数据
|
||||
export function queryData(data) {
|
||||
return createAxios({
|
||||
@@ -168,3 +176,43 @@ export function terminalChooseTree() {
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
//新增模版
|
||||
export function addSysExcel(data:any) {
|
||||
return createAxios({
|
||||
url: '/cs-harmonic-boot/sysExcel/addSysExcel',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//修改模版
|
||||
export function updateSysExcel(data:any) {
|
||||
return createAxios({
|
||||
url: '/cs-harmonic-boot/sysExcel/updateSysExcel',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//删除模版
|
||||
export function deleteSysExcel(params:any) {
|
||||
return createAxios({
|
||||
url: '/cs-harmonic-boot/sysExcel/deleteSysExcel',
|
||||
method: 'post',
|
||||
params
|
||||
})
|
||||
}
|
||||
//查詢綁定
|
||||
export function queryList(params:any) {
|
||||
return createAxios({
|
||||
url: '/cs-harmonic-boot/sysExcelRelation/queryList',
|
||||
method: 'post',
|
||||
params
|
||||
})
|
||||
}
|
||||
//綁定
|
||||
export function bandRelation(data:any) {
|
||||
return createAxios({
|
||||
url: '/cs-harmonic-boot/sysExcelRelation/bandRelation',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
@@ -116,8 +116,8 @@ const tableStore: any = new TableStore({
|
||||
loadCallback: () => {
|
||||
const gongData = gongfunction(tableStore.table.data)
|
||||
data.gs = tableStore.table.data.length
|
||||
data.krr = gongData.pointI.length
|
||||
data.bkrr = gongData.pointIun.length
|
||||
data.krr = gongData.pointF.length
|
||||
data.bkrr = gongData.pointFun.length
|
||||
echartList.value = {
|
||||
title: {
|
||||
text: `F47曲线`
|
||||
@@ -215,15 +215,7 @@ const tableStore: any = new TableStore({
|
||||
// [0.4, 50, '2023-01-01 11:00:00']
|
||||
// ],
|
||||
legendSymbol: 'circle',
|
||||
emphasis: {
|
||||
focus: 'series',
|
||||
itemStyle: {
|
||||
borderColor: '#fff',
|
||||
borderWidth: 2,
|
||||
shadowBlur: 10,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
},
|
||||
|
||||
tooltip: {
|
||||
show: true,
|
||||
trigger: 'item',
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
<!--治理效果报表 -->
|
||||
<TableHeader :showReset="false" :timeKeyList="prop.timeKey" ref="TableHeaderRef" datePicker @selectChange="selectChange" v-if="fullscreen">
|
||||
<template v-slot:select>
|
||||
<el-form-item label="报表模板">
|
||||
<el-select filterable v-model="tableStore.table.params.tempId" placeholder="请选择报表模板" clearable>
|
||||
<el-option v-for="item in templateList" :key="item.id" :label="item.name" :value="item.id" />
|
||||
<el-form-item label="模板策略">
|
||||
<el-select filterable v-model="tableStore.table.params.tempId" placeholder="请选择模板策略" clearable>
|
||||
<el-option v-for="item in templateList" :key="item.id" :label="item.excelName" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="监测对象">
|
||||
@@ -34,7 +34,7 @@ import { ref, onMounted, provide, reactive, watch, h, computed, nextTick } from
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import { exportExcel } from '@/views/govern/reportForms/export.js'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { getTemplateList } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { querySysExcel } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { getListByIds } from '@/api/harmonic-boot/cockpit/cockpit'
|
||||
import { getTime } from '@/utils/formatTime'
|
||||
import { ElMessage } from 'element-plus'
|
||||
@@ -71,8 +71,8 @@ const initListByIds = () => {
|
||||
}
|
||||
|
||||
const templateListData = () => {
|
||||
getTemplateList({}).then(res => {
|
||||
templateList.value = res.data.filter(item => item.reportForm == 4)
|
||||
querySysExcel({}).then(res => {
|
||||
templateList.value = res.data.filter(item => item.excelType == 4)
|
||||
if (!tableStore.table.params.tempId && templateList.value?.length > 0) {
|
||||
tableStore.table.params.tempId = templateList.value[0].id
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
<el-option
|
||||
v-for="vv in item.countOptions"
|
||||
:key="vv"
|
||||
:label="item.name.includes('间谐波') ? vv - 0.5 : vv"
|
||||
:label="item.name.includes('间谐波') ? vv - 0.5 : vv"
|
||||
:value="vv"
|
||||
></el-option>
|
||||
</el-select>
|
||||
@@ -82,11 +82,7 @@
|
||||
</TableHeader>
|
||||
</div>
|
||||
<div class="history_chart" :style="pageHeight" v-loading="loading">
|
||||
<MyEchart
|
||||
ref="historyChart"
|
||||
:options="echartsData"
|
||||
v-if="showEchart"
|
||||
/>
|
||||
<MyEchart ref="historyChart" :options="echartsData" v-if="showEchart" />
|
||||
<el-empty :style="pageHeight" v-else description="暂无数据" />
|
||||
</div>
|
||||
</el-dialog>
|
||||
@@ -160,28 +156,40 @@ const countOptions: any = ref([])
|
||||
const legendDictList: any = ref([])
|
||||
|
||||
const initCode = (field: string, title: string) => {
|
||||
queryByCode('steady_state_limit_trend').then(res => {
|
||||
queryByCode('gridSide_exceedTheLimit').then(res => {
|
||||
queryCsDictTree(res.data.id).then(item => {
|
||||
//排序
|
||||
indexOptions.value = item.data.sort((a: any, b: any) => {
|
||||
return a.sort - b.sort
|
||||
})
|
||||
const titleMap: Record<string, number> = {
|
||||
flickerOvertime: 0,
|
||||
uaberranceOvertime: 3,
|
||||
ubalanceOvertime: 4,
|
||||
freqDevOvertime: 5
|
||||
}
|
||||
let codeKey = field.includes('flickerOvertime')
|
||||
? '闪变'
|
||||
: field.includes('uharm')
|
||||
? '谐波电压'
|
||||
: field.includes('iharm')
|
||||
? '谐波电流'
|
||||
: field.includes('voltageDevOvertime')
|
||||
? '电压偏差'
|
||||
: field.includes('ubalanceOvertime')
|
||||
? '不平衡'
|
||||
: ''
|
||||
|
||||
let defaultIndex = 0 // 默认值
|
||||
// const titleMap: Record<string, number> = {
|
||||
// flickerOvertime: 0,
|
||||
// uaberranceOvertime: 3,
|
||||
// ubalanceOvertime: 4,
|
||||
// freqDevOvertime: 5
|
||||
// }
|
||||
|
||||
if (field in titleMap) {
|
||||
defaultIndex = titleMap[field]
|
||||
} else if (field.includes('uharm')) {
|
||||
defaultIndex = 1
|
||||
} else if (field.includes('iharm')) {
|
||||
defaultIndex = 2
|
||||
}
|
||||
// let defaultIndex = 0 // 默认值
|
||||
let defaultIndex = indexOptions.value.findIndex((item: any) => item.name.includes(codeKey)) || 0
|
||||
// if (field in titleMap) {
|
||||
// defaultIndex = titleMap[field]
|
||||
// } else if (field.includes('uharm')) {
|
||||
// defaultIndex = indexOptions.value.findIndex((item: any) => item.code === 'uharm')
|
||||
// } else if (field.includes('iharm')) {
|
||||
// defaultIndex = indexOptions.value.findIndex((item: any) => item.code === 'iharm')
|
||||
// }
|
||||
|
||||
searchForm.value.index[0] = indexOptions.value[defaultIndex].id
|
||||
})
|
||||
@@ -205,7 +213,7 @@ const initCode = (field: string, title: string) => {
|
||||
if (kk.harmStart && kk.harmEnd) {
|
||||
range(0, 0, 0)
|
||||
|
||||
if (kk.showName == '间谐波电压含有率') {
|
||||
if (kk.showName.includes('间谐波电压')) {
|
||||
countDataCopy.value[index].countOptions = range(kk.harmStart, kk.harmEnd, 1).map(
|
||||
(item: any) => {
|
||||
return item - 0.5
|
||||
@@ -287,14 +295,15 @@ const init = async () => {
|
||||
let lists: any = []
|
||||
let frequencys: any = null
|
||||
countData.value.map((item: any, index: any) => {
|
||||
if (item.name.includes('谐波含有率')) {
|
||||
if (item.name.includes('谐波')) {
|
||||
frequencys = item.count
|
||||
} else {
|
||||
frequencys = ''
|
||||
}
|
||||
|
||||
lists[index] = {
|
||||
statisticalId: item.index,
|
||||
frequency: frequencys !== null && frequencys !== undefined ? String(frequencys) : ''
|
||||
frequency: frequencys !== null && frequencys !== undefined ? String(frequencys) : ''
|
||||
}
|
||||
})
|
||||
let obj = {
|
||||
@@ -600,12 +609,12 @@ const formatCountOptions = () => {
|
||||
})
|
||||
|
||||
countData.value.map((item: any, key: any) => {
|
||||
if (item.name == '谐波电流有效值') {
|
||||
item.name = '谐波电流次数'
|
||||
} else if (item.name == '谐波电压含有率') {
|
||||
item.name = '谐波电压次数'
|
||||
} else if (item.name == '间谐波电压含有率') {
|
||||
if (item.name.includes('间谐波电压')) {
|
||||
item.name = '间谐波电压次数'
|
||||
} else if (item.name.includes('谐波电流')) {
|
||||
item.name = '谐波电流次数'
|
||||
} else if (item.name.includes('谐波电压')) {
|
||||
item.name = '谐波电压次数'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.lineId"
|
||||
:label="item.name"
|
||||
:label="item.lineName"
|
||||
:value="item.lineId"
|
||||
/>
|
||||
</el-select>
|
||||
@@ -101,16 +101,7 @@ const tableStore: any = new TableStore({
|
||||
title: '谐波电流越限(%)',
|
||||
children: loop50('iharm')
|
||||
},
|
||||
{
|
||||
title: '三相不平衡度越限(%)',
|
||||
field: 'ubalanceOvertime',
|
||||
width: '100',
|
||||
render: 'customTemplate',
|
||||
customTemplate: (row: any) => {
|
||||
return `<span style='cursor: pointer;text-decoration: underline;'>${row.ubalanceOvertime}</span>`
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
title: '电压偏差越限(%)',
|
||||
field: 'voltageDevOvertime',
|
||||
width: '100',
|
||||
@@ -120,14 +111,24 @@ const tableStore: any = new TableStore({
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '频率偏差越限(%)',
|
||||
field: 'freqDevOvertime',
|
||||
title: '三相不平衡度越限(%)',
|
||||
field: 'ubalanceOvertime',
|
||||
width: '100',
|
||||
render: 'customTemplate',
|
||||
customTemplate: (row: any) => {
|
||||
return `<span style='cursor: pointer;text-decoration: underline;'>${row.freqDevOvertime}</span>`
|
||||
return `<span style='cursor: pointer;text-decoration: underline;'>${row.ubalanceOvertime}</span>`
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// {
|
||||
// title: '频率偏差越限(%)',
|
||||
// field: 'freqDevOvertime',
|
||||
// width: '100',
|
||||
// render: 'customTemplate',
|
||||
// customTemplate: (row: any) => {
|
||||
// return `<span style='cursor: pointer;text-decoration: underline;'>${row.freqDevOvertime}</span>`
|
||||
// }
|
||||
// }
|
||||
],
|
||||
beforeSearchFun: () => {
|
||||
},
|
||||
@@ -139,9 +140,10 @@ const tableStore: any = new TableStore({
|
||||
provide('tableStore', tableStore)
|
||||
tableStore.table.params.sortBy = ''
|
||||
tableStore.table.params.orderBy = ''
|
||||
const open = async (row: any,searchBeginTime:any,searchEndTime:any,interval:any) => {
|
||||
const open = async (row: any,searchBeginTime:any,searchEndTime:any,interval:any,list:any) => {
|
||||
dialogVisible.value = true
|
||||
initCSlineList()
|
||||
options.value = list
|
||||
// initCSlineList()
|
||||
tableStore.table.params.lineId = row.lineId
|
||||
|
||||
nextTick(() => {
|
||||
|
||||
@@ -217,7 +217,8 @@ const cellClickEvent = ({ row, column }: any) => {
|
||||
row,
|
||||
tableStore.table.params.searchBeginTime || prop.timeValue?.[0],
|
||||
tableStore.table.params.searchEndTime || prop.timeValue?.[1],
|
||||
tableStore.table.params.interval || prop.interval
|
||||
tableStore.table.params.interval || prop.interval,
|
||||
tableStore.table.data
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -177,8 +177,8 @@ const onHarmonicRatioClose = () => {
|
||||
}
|
||||
|
||||
const initCSlineList = async () => {
|
||||
const res = await cslineList({})
|
||||
options.value = res.data
|
||||
// const res = await cslineList({})
|
||||
// options.value = res.data
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
:timeKeyList="prop.timeKey"
|
||||
@selectChange="selectChange"
|
||||
v-if="fullscreen"
|
||||
datePicker
|
||||
|
||||
ref="TableHeaderRef"
|
||||
>
|
||||
<template v-slot:select>
|
||||
@@ -29,7 +29,7 @@ import { ref, onMounted, provide, reactive, watch, nextTick } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import Table from '@/components/table/index.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { getTime } from '@/utils/formatTime'
|
||||
import { getTimeOfTheMonth } from '@/utils/formatTime'
|
||||
import OverLimitDetails from '@/components/cockpit/indicatorFittingChart/components/overLimitDetails.vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { useTimeCacheStore } from '@/stores/timeCache'
|
||||
@@ -66,11 +66,11 @@ const fullscreen = computed(() => {
|
||||
const selectChange = (showSelect: any, height: any, datePickerValue?: any) => {
|
||||
headerHeight.value = height
|
||||
|
||||
if (datePickerValue && datePickerValue.timeValue) {
|
||||
// 更新时间参数
|
||||
tableStore.table.params.searchBeginTime = datePickerValue.timeValue[0]
|
||||
tableStore.table.params.searchEndTime = datePickerValue.timeValue[1]
|
||||
}
|
||||
// if (datePickerValue && datePickerValue.timeValue) {
|
||||
// // 更新时间参数
|
||||
// tableStore.table.params.searchBeginTime = datePickerValue.timeValue[0]
|
||||
// tableStore.table.params.searchEndTime = datePickerValue.timeValue[1]
|
||||
// }
|
||||
}
|
||||
|
||||
const tableStore: any = new TableStore({
|
||||
@@ -132,32 +132,34 @@ provide('tableStore', tableStore)
|
||||
// 点击行
|
||||
const cellClickEvent = ({ row, column }: any) => {
|
||||
if (column.field == 'lineName') {
|
||||
|
||||
let time = getTimeOfTheMonth('3');
|
||||
OverLimitDetailsRef.value.open(
|
||||
row,
|
||||
tableStore.table.params.searchBeginTime || prop.timeValue?.[0],
|
||||
tableStore.table.params.searchEndTime || prop.timeValue?.[1],
|
||||
time[0],
|
||||
time[1],
|
||||
tableStore.table.data
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
const setTime = () => {
|
||||
const time = getTime(
|
||||
(TableHeaderRef.value?.datePickerRef.interval || prop.interval) ?? 0,
|
||||
prop.timeKey,
|
||||
fullscreen.value
|
||||
? [tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime]
|
||||
: prop.timeValue
|
||||
)
|
||||
// const time = getTime(
|
||||
// (TableHeaderRef.value?.datePickerRef.interval || prop.interval) ?? 0,
|
||||
// prop.timeKey,
|
||||
// fullscreen.value
|
||||
// ? [tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime]
|
||||
// : prop.timeValue
|
||||
// )
|
||||
|
||||
if (Array.isArray(time)) {
|
||||
tableStore.table.params.searchBeginTime = time[0]
|
||||
tableStore.table.params.searchEndTime = time[1]
|
||||
// TableHeaderRef.value?.setInterval(time[2] - 0)
|
||||
// TableHeaderRef.value?.setTimeInterval([time[0], time[1]])
|
||||
} else {
|
||||
console.warn('获取时间失败,time 不是一个有效数组')
|
||||
}
|
||||
// if (Array.isArray(time)) {
|
||||
// tableStore.table.params.searchBeginTime = time[0]
|
||||
// tableStore.table.params.searchEndTime = time[1]
|
||||
// // TableHeaderRef.value?.setInterval(time[2] - 0)
|
||||
// // TableHeaderRef.value?.setTimeInterval([time[0], time[1]])
|
||||
// } else {
|
||||
// console.warn('获取时间失败,time 不是一个有效数组')
|
||||
// }
|
||||
}
|
||||
|
||||
// 在组件挂载时设置缓存值到 DatePicker
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
ref="TableHeaderRef"
|
||||
:showReset="false"
|
||||
@selectChange="selectChange"
|
||||
datePicker
|
||||
|
||||
v-if="fullscreen"
|
||||
:timeKeyList="prop.timeKey"
|
||||
></TableHeader>
|
||||
@@ -86,11 +86,11 @@ const fileList = ref([])
|
||||
const selectChange = (showSelect: any, height: any, datePickerValue?: any) => {
|
||||
headerHeight.value = height
|
||||
|
||||
if (datePickerValue && datePickerValue.timeValue) {
|
||||
// 更新时间参数
|
||||
tableStore.table.params.searchBeginTime = datePickerValue.timeValue[0]
|
||||
tableStore.table.params.searchEndTime = datePickerValue.timeValue[1]
|
||||
}
|
||||
// if (datePickerValue && datePickerValue.timeValue) {
|
||||
// // 更新时间参数
|
||||
// tableStore.table.params.searchBeginTime = datePickerValue.timeValue[0]
|
||||
// tableStore.table.params.searchEndTime = datePickerValue.timeValue[1]
|
||||
// }
|
||||
}
|
||||
|
||||
// 计算是否全屏展示
|
||||
@@ -297,22 +297,22 @@ tableStore.table.params.keywords = ''
|
||||
provide('tableStore', tableStore)
|
||||
|
||||
const setTime = () => {
|
||||
const time = getTime(
|
||||
(TableHeaderRef.value?.datePickerRef.interval || prop.interval) ?? 0,
|
||||
prop.timeKey,
|
||||
fullscreen.value
|
||||
? [tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime]
|
||||
: prop.timeValue
|
||||
)
|
||||
// const time = getTime(
|
||||
// (TableHeaderRef.value?.datePickerRef.interval || prop.interval) ?? 0,
|
||||
// prop.timeKey,
|
||||
// fullscreen.value
|
||||
// ? [tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime]
|
||||
// : prop.timeValue
|
||||
// )
|
||||
|
||||
if (Array.isArray(time)) {
|
||||
tableStore.table.params.searchBeginTime = time[0]
|
||||
tableStore.table.params.searchEndTime = time[1]
|
||||
TableHeaderRef.value?.setInterval(time[2] - 0)
|
||||
TableHeaderRef.value?.setTimeInterval([time[0], time[1]])
|
||||
} else {
|
||||
console.warn('获取时间失败,time 不是一个有效数组')
|
||||
}
|
||||
// if (Array.isArray(time)) {
|
||||
// tableStore.table.params.searchBeginTime = time[0]
|
||||
// tableStore.table.params.searchEndTime = time[1]
|
||||
// TableHeaderRef.value?.setInterval(time[2] - 0)
|
||||
// TableHeaderRef.value?.setTimeInterval([time[0], time[1]])
|
||||
// } else {
|
||||
// console.warn('获取时间失败,time 不是一个有效数组')
|
||||
// }
|
||||
}
|
||||
|
||||
// 点击行
|
||||
|
||||
@@ -82,11 +82,7 @@
|
||||
</TableHeader>
|
||||
</div>
|
||||
<div class="history_chart" :style="pageHeight" v-loading="loading">
|
||||
<MyEchart
|
||||
ref="historyChart"
|
||||
:options="echartsData"
|
||||
v-if="showEchart"
|
||||
/>
|
||||
<MyEchart ref="historyChart" :options="echartsData" v-if="showEchart" />
|
||||
<el-empty :style="pageHeight" v-else description="暂无数据" />
|
||||
</div>
|
||||
</el-dialog>
|
||||
@@ -160,28 +156,40 @@ const countOptions: any = ref([])
|
||||
const legendDictList: any = ref([])
|
||||
|
||||
const initCode = (field: string, title: string) => {
|
||||
queryByCode('steady_state_limit_trend').then(res => {
|
||||
queryByCode('gridSide_exceedTheLimit').then(res => {
|
||||
queryCsDictTree(res.data.id).then(item => {
|
||||
//排序
|
||||
indexOptions.value = item.data.sort((a: any, b: any) => {
|
||||
return a.sort - b.sort
|
||||
})
|
||||
const titleMap: Record<string, number> = {
|
||||
flickerOvertime: 0,
|
||||
uaberranceOvertime: 3,
|
||||
ubalanceOvertime: 4,
|
||||
freqDevOvertime: 5
|
||||
}
|
||||
// const titleMap: Record<string, number> = {
|
||||
// flickerOvertime: 0,
|
||||
// uaberranceOvertime: 3,
|
||||
// ubalanceOvertime: 4,
|
||||
// freqDevOvertime: 5
|
||||
// }
|
||||
|
||||
let defaultIndex = 0 // 默认值
|
||||
// let defaultIndex = 0 // 默认值
|
||||
|
||||
if (field in titleMap) {
|
||||
defaultIndex = titleMap[field]
|
||||
} else if (field.includes('uharm')) {
|
||||
defaultIndex = 1
|
||||
} else if (field.includes('iharm')) {
|
||||
defaultIndex = 2
|
||||
}
|
||||
// if (field in titleMap) {
|
||||
// defaultIndex = titleMap[field]
|
||||
// } else if (field.includes('uharm')) {
|
||||
// defaultIndex = 1
|
||||
// } else if (field.includes('iharm')) {
|
||||
// defaultIndex = 2
|
||||
// }
|
||||
let codeKey = field.includes('flickerOvertime')
|
||||
? '闪变'
|
||||
: field.includes('uharm')
|
||||
? '谐波电压'
|
||||
: field.includes('iharm')
|
||||
? '谐波电流'
|
||||
: field.includes('voltageDevOvertime')
|
||||
? '电压偏差'
|
||||
: field.includes('ubalanceOvertime')
|
||||
? '不平衡'
|
||||
: ''
|
||||
let defaultIndex = indexOptions.value.findIndex((item: any) => item.name.includes(codeKey)) || 0
|
||||
|
||||
searchForm.value.index[0] = indexOptions.value[defaultIndex].id
|
||||
})
|
||||
@@ -205,7 +213,7 @@ const initCode = (field: string, title: string) => {
|
||||
if (kk.harmStart && kk.harmEnd) {
|
||||
range(0, 0, 0)
|
||||
|
||||
if (kk.showName == '间谐波电压含有率') {
|
||||
if (kk.showName.includes('间谐波电压')) {
|
||||
countDataCopy.value[index].countOptions = range(kk.harmStart, kk.harmEnd, 1).map(
|
||||
(item: any) => {
|
||||
return item - 0.5
|
||||
@@ -294,7 +302,7 @@ const init = async () => {
|
||||
}
|
||||
lists[index] = {
|
||||
statisticalId: item.index,
|
||||
frequency: frequencys !== null && frequencys !== undefined ? String(frequencys) : ''
|
||||
frequency: frequencys !== null && frequencys !== undefined ? String(frequencys) : ''
|
||||
}
|
||||
})
|
||||
let obj = {
|
||||
@@ -600,12 +608,12 @@ const formatCountOptions = () => {
|
||||
})
|
||||
|
||||
countData.value.map((item: any, key: any) => {
|
||||
if (item.name == '谐波电流有效值') {
|
||||
item.name = '谐波电流次数'
|
||||
} else if (item.name == '谐波电压含有率') {
|
||||
item.name = '谐波电压次数'
|
||||
} else if (item.name == '间谐波电压含有率') {
|
||||
if (item.name.includes('间谐波电压')) {
|
||||
item.name = '间谐波电压次数'
|
||||
} else if (item.name.includes('谐波电流')) {
|
||||
item.name = '谐波电流次数'
|
||||
} else if (item.name.includes('谐波电压')) {
|
||||
item.name = '谐波电压次数'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -101,16 +101,7 @@ const tableStore: any = new TableStore({
|
||||
title: '谐波电流越限(%)',
|
||||
children: loop50('iharm')
|
||||
},
|
||||
{
|
||||
title: '三相不平衡度越限(%)',
|
||||
field: 'ubalanceOvertime',
|
||||
width: '100',
|
||||
render: 'customTemplate',
|
||||
customTemplate: (row: any) => {
|
||||
return `<span style='cursor: pointer;text-decoration: underline;'>${row.ubalanceOvertime}</span>`
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
title: '电压偏差越限(%)',
|
||||
field: 'voltageDevOvertime',
|
||||
width: '100',
|
||||
@@ -120,14 +111,24 @@ const tableStore: any = new TableStore({
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '频率偏差越限(%)',
|
||||
field: 'freqDevOvertime',
|
||||
title: '三相不平衡度越限(%)',
|
||||
field: 'ubalanceOvertime',
|
||||
width: '100',
|
||||
render: 'customTemplate',
|
||||
customTemplate: (row: any) => {
|
||||
return `<span style='cursor: pointer;text-decoration: underline;'>${row.freqDevOvertime}</span>`
|
||||
return `<span style='cursor: pointer;text-decoration: underline;'>${row.ubalanceOvertime}</span>`
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// {
|
||||
// title: '频率偏差越限(%)',
|
||||
// field: 'freqDevOvertime',
|
||||
// width: '100',
|
||||
// render: 'customTemplate',
|
||||
// customTemplate: (row: any) => {
|
||||
// return `<span style='cursor: pointer;text-decoration: underline;'>${row.freqDevOvertime}</span>`
|
||||
// }
|
||||
// }
|
||||
],
|
||||
beforeSearchFun: () => {
|
||||
},
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
ref="TableHeaderRef"
|
||||
:showReset="false"
|
||||
@selectChange="selectChange"
|
||||
datePicker
|
||||
|
||||
v-if="fullscreen"
|
||||
:timeKeyList="prop.timeKey"
|
||||
></TableHeader>
|
||||
@@ -45,11 +45,11 @@ const sensitiveUserType = dictData.getBasicData('Interference_Source')
|
||||
const selectChange = (showSelect: any, height: any, datePickerValue?: any) => {
|
||||
headerHeight.value = height
|
||||
|
||||
if (datePickerValue && datePickerValue.timeValue) {
|
||||
// 更新时间参数
|
||||
tableStore.table.params.searchBeginTime = datePickerValue.timeValue[0]
|
||||
tableStore.table.params.searchEndTime = datePickerValue.timeValue[1]
|
||||
}
|
||||
// if (datePickerValue && datePickerValue.timeValue) {
|
||||
// // 更新时间参数
|
||||
// tableStore.table.params.searchBeginTime = datePickerValue.timeValue[0]
|
||||
// tableStore.table.params.searchEndTime = datePickerValue.timeValue[1]
|
||||
// }
|
||||
}
|
||||
|
||||
// 计算是否全屏展示
|
||||
@@ -130,22 +130,22 @@ const cellClickEvent = ({ row, column }: any) => {
|
||||
}
|
||||
|
||||
const setTime = () => {
|
||||
const time = getTime(
|
||||
(TableHeaderRef.value?.datePickerRef.interval || prop.interval) ?? 0,
|
||||
prop.timeKey,
|
||||
fullscreen.value
|
||||
? [tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime]
|
||||
: prop.timeValue
|
||||
)
|
||||
// const time = getTime(
|
||||
// (TableHeaderRef.value?.datePickerRef.interval || prop.interval) ?? 0,
|
||||
// prop.timeKey,
|
||||
// fullscreen.value
|
||||
// ? [tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime]
|
||||
// : prop.timeValue
|
||||
// )
|
||||
|
||||
if (Array.isArray(time)) {
|
||||
tableStore.table.params.searchBeginTime = time[0]
|
||||
tableStore.table.params.searchEndTime = time[1]
|
||||
TableHeaderRef.value?.setInterval(time[2] - 0)
|
||||
TableHeaderRef.value?.setTimeInterval([time[0], time[1]])
|
||||
} else {
|
||||
console.warn('获取时间失败,time 不是一个有效数组')
|
||||
}
|
||||
// if (Array.isArray(time)) {
|
||||
// tableStore.table.params.searchBeginTime = time[0]
|
||||
// tableStore.table.params.searchEndTime = time[1]
|
||||
// TableHeaderRef.value?.setInterval(time[2] - 0)
|
||||
// TableHeaderRef.value?.setTimeInterval([time[0], time[1]])
|
||||
// } else {
|
||||
// console.warn('获取时间失败,time 不是一个有效数组')
|
||||
// }
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
|
||||
@@ -325,7 +325,6 @@ const setEchart = () => {
|
||||
const xname = params[0].value[0]
|
||||
let str = `${xname}<br>`
|
||||
params.forEach((el: any, index: any) => {
|
||||
console.log('🚀 ~ setEchart ~ el:', el)
|
||||
let marker = ''
|
||||
|
||||
marker = `<span style="display:inline-block;border: 2px ${el.color} ${el.value[3]};margin-right:5px;width:40px;height:0px;background-color:#ffffff00;"></span>`
|
||||
|
||||
@@ -7,7 +7,7 @@ import { ref, nextTick, onMounted, defineProps } from 'vue'
|
||||
import Tree from '../index.vue'
|
||||
import { getLineTree,getCldTree } from '@/api/cs-device-boot/csLedger'
|
||||
import { useConfig } from '@/stores/config'
|
||||
import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { querySysExcel } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
|
||||
interface Props {
|
||||
@@ -158,7 +158,7 @@ const onAdd = () => {
|
||||
emit('onAdd')
|
||||
}
|
||||
if (props.template) {
|
||||
getTemplateByDept({ id: dictData.state.area[0]?.id })
|
||||
querySysExcel({ id: dictData.state.area[0]?.id })
|
||||
.then((res: any) => {
|
||||
emit('Policy', res.data)
|
||||
info()
|
||||
|
||||
@@ -15,7 +15,7 @@ import { ref, nextTick, onMounted, defineProps } from 'vue'
|
||||
import Tree from '../index.vue'
|
||||
import { getLineTree, objTree } from '@/api/cs-device-boot/csLedger'
|
||||
import { useConfig } from '@/stores/config'
|
||||
import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { querySysExcel } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
|
||||
interface Props {
|
||||
@@ -85,7 +85,7 @@ const onAdd = () => {
|
||||
emit('onAdd')
|
||||
}
|
||||
if (props.template) {
|
||||
getTemplateByDept({ id: dictData.state.area[0]?.id })
|
||||
querySysExcel({ id: dictData.state.area[0]?.id })
|
||||
.then((res: any) => {
|
||||
emit('Policy', res.data)
|
||||
info()
|
||||
|
||||
@@ -7,7 +7,7 @@ import { ref, nextTick, onMounted, defineProps } from 'vue'
|
||||
import Tree from '../point.vue'
|
||||
import { getLineTree } from '@/api/cs-device-boot/csLedger'
|
||||
import { useConfig } from '@/stores/config'
|
||||
import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { querySysExcel } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
// const props = defineProps(['template'])
|
||||
interface Props {
|
||||
@@ -138,7 +138,7 @@ const changePointType = (val: any, obj: any) => {
|
||||
emit('pointTypeChange', val, obj)
|
||||
}
|
||||
if (props.template) {
|
||||
getTemplateByDept({ id: dictData.state.area[0]?.id })
|
||||
querySysExcel({ id: dictData.state.area[0]?.id })
|
||||
.then((res: any) => {
|
||||
emit('Policy', res.data)
|
||||
info()
|
||||
|
||||
@@ -53,7 +53,7 @@ import { getSchemeTree, getTestRecordInfo } from '@/api/cs-device-boot/planData'
|
||||
import { useConfig } from '@/stores/config'
|
||||
import useCurrentInstance from '@/utils/useCurrentInstance'
|
||||
import { ElTree } from 'element-plus'
|
||||
import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { querySysExcel } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
defineOptions({
|
||||
name: 'govern/schemeTree'
|
||||
@@ -157,7 +157,7 @@ const clickNode = (e: anyObj) => {
|
||||
}
|
||||
|
||||
if (props.template) {
|
||||
getTemplateByDept({ id: dictData.state.area[0]?.id })
|
||||
querySysExcel({ id: dictData.state.area[0]?.id })
|
||||
.then((res: any) => {
|
||||
emit('Policy', res.data)
|
||||
getTreeList()
|
||||
|
||||
@@ -230,14 +230,14 @@
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="form-item"
|
||||
label="地市:"
|
||||
label="地址:"
|
||||
:prop="'projectInfoList[' + index + '].area'"
|
||||
:rules="[{ required: true, message: '请输入地市', trigger: 'blur' }]"
|
||||
:rules="[{ required: true, message: '请输入地址', trigger: 'blur' }]"
|
||||
>
|
||||
<el-input
|
||||
clearable
|
||||
v-model="item.area"
|
||||
placeholder="请输入地市"
|
||||
placeholder="请输入地址"
|
||||
:disabled="
|
||||
!(
|
||||
(nodeLevel == 2 && pageStatus == 3) ||
|
||||
|
||||
@@ -16,14 +16,19 @@
|
||||
<el-button type="primary" :icon="Setting" @click="handleUpDevice">补召</el-button>
|
||||
<el-button :icon="Back" @click="go(-1)">返回</el-button>
|
||||
</template>
|
||||
|
||||
</TableHeader>
|
||||
<!-- 设备补召 -->
|
||||
<div class=" current_device" v-loading="loading">
|
||||
|
||||
<div class="current_device" v-loading="loading">
|
||||
<div class="current_body" ref="tbodyRef">
|
||||
<vxe-table border ref="tableRef" :data="dirList" align="center" height="auto"
|
||||
:style="{ height: tableHeight }" @radio-change="radioChangeEvent">
|
||||
<vxe-table
|
||||
border
|
||||
ref="tableRef"
|
||||
:data="dirList"
|
||||
align="center"
|
||||
height="auto"
|
||||
:style="{ height: tableHeight }"
|
||||
@radio-change="radioChangeEvent"
|
||||
>
|
||||
<vxe-column type="radio" width="60">
|
||||
<template #header>
|
||||
<vxe-button mode="text" @click="clearRadioRowEvent" :disabled="!selectRow">取消</vxe-button>
|
||||
@@ -34,13 +39,20 @@
|
||||
<vxe-column field="status" title="补召进度">
|
||||
<template #default="{ row }">
|
||||
<div class="finish" v-if="row.status == 100">
|
||||
<SuccessFilled style="width: 16px;" /><span class="ml5">补召完成</span>
|
||||
<SuccessFilled style="width: 16px" />
|
||||
<span class="ml5">补召完成</span>
|
||||
</div>
|
||||
<el-progress v-model.trim="row.status" v-else :class="row.status == 100 ? 'progress' : ''"
|
||||
:format="format" :stroke-width="10" striped :percentage="row.status" :duration="30"
|
||||
striped-flow />
|
||||
|
||||
|
||||
<el-progress
|
||||
v-model.trim="row.status"
|
||||
v-else
|
||||
:class="row.status == 100 ? 'progress' : ''"
|
||||
:format="format"
|
||||
:stroke-width="10"
|
||||
striped
|
||||
:percentage="row.status"
|
||||
:duration="30"
|
||||
striped-flow
|
||||
/>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="startTime" title="起始时间"></vxe-column>
|
||||
@@ -58,10 +70,7 @@ import { useRouter, useRoute } from 'vue-router'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { VxeUI, VxeTableInstance, VxeTableEvents } from 'vxe-table'
|
||||
import { SuccessFilled } from '@element-plus/icons-vue'
|
||||
import {
|
||||
Back,
|
||||
Setting, Search
|
||||
} from '@element-plus/icons-vue'
|
||||
import { Back, Setting, Search } from '@element-plus/icons-vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import mqtt from 'mqtt'
|
||||
defineOptions({
|
||||
@@ -75,7 +84,7 @@ const loading = ref(false)
|
||||
const dirList = ref([])
|
||||
const route: any = ref({})
|
||||
const datePickerRef = ref()
|
||||
const format = (percentage) => (percentage === 100 ? '完成' : `${percentage}%`)
|
||||
const format = percentage => (percentage === 100 ? '完成' : `${percentage}%`)
|
||||
const getMakeUpDataList = (row: any) => {
|
||||
route.value = row
|
||||
loading.value = true
|
||||
@@ -139,11 +148,11 @@ const handleUpDevice = () => {
|
||||
}
|
||||
|
||||
const radioChangeEvent: VxeTableEvents.RadioChange = ({ row }) => {
|
||||
datePickerRef.value.timeValue = [row.startTime.split(' ')[0] , row.endTime.split(' ')[0] ]
|
||||
selectRow.value = row
|
||||
// console.log('单选事件')
|
||||
}
|
||||
|
||||
|
||||
const clearRadioRowEvent = () => {
|
||||
const $table = tableRef.value
|
||||
if ($table) {
|
||||
@@ -152,7 +161,7 @@ const clearRadioRowEvent = () => {
|
||||
}
|
||||
}
|
||||
const mqttRef = ref()
|
||||
const url: any = window.localStorage.getItem('MQTTURL')
|
||||
const url: any = window.localStorage.getItem('MQTTURL')
|
||||
const connectMqtt = () => {
|
||||
if (mqttRef.value) {
|
||||
if (mqttRef.value.connected) {
|
||||
@@ -173,10 +182,10 @@ const connectMqtt = () => {
|
||||
const handleSearch = () => {
|
||||
getMakeUpDataList(route.value)
|
||||
}
|
||||
function parseStringToObject(str:string) {
|
||||
function parseStringToObject(str: string) {
|
||||
const content = str.replace(/^{|}$/g, '')
|
||||
const pairs = content.split(',')
|
||||
const result:any = {}
|
||||
const result: any = {}
|
||||
pairs.forEach(pair => {
|
||||
const [key, value] = pair.split(':')
|
||||
// 尝试将数字转换为Number类型
|
||||
@@ -210,7 +219,6 @@ mqttRef.value.on('message', (topic: any, message: any) => {
|
||||
let percentage = parseInt(Number((mqttMessage.value.nowStep / mqttMessage.value.allStep) * 100)) || 0
|
||||
if (percentage > 5) {
|
||||
item.status = percentage
|
||||
|
||||
}
|
||||
}
|
||||
// })
|
||||
@@ -226,6 +234,8 @@ mqttRef.value.on('close', function () {
|
||||
console.log('mqtt客户端已断开连接.....')
|
||||
})
|
||||
onMounted(() => {
|
||||
datePickerRef.value.setInterval(5)
|
||||
datePickerRef.value.setTimeOptions([{ label: '自定义', value: 5 }])
|
||||
})
|
||||
onBeforeUnmount(() => {
|
||||
if (mqttRef.value) {
|
||||
@@ -261,14 +271,21 @@ defineExpose({ getMakeUpDataList })
|
||||
// }
|
||||
// }
|
||||
:deep(.el-progress-bar__inner--striped) {
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, .3) 25%, transparent 0, transparent 50%, rgba(255, 255, 255, .3) 0, rgba(255, 255, 255, .3) 75%, transparent 0, transparent);
|
||||
|
||||
background-image: linear-gradient(
|
||||
45deg,
|
||||
rgba(255, 255, 255, 0.3) 25%,
|
||||
transparent 0,
|
||||
transparent 50%,
|
||||
rgba(255, 255, 255, 0.3) 0,
|
||||
rgba(255, 255, 255, 0.3) 75%,
|
||||
transparent 0,
|
||||
transparent
|
||||
);
|
||||
}
|
||||
|
||||
:deep(.progress) {
|
||||
.el-progress__text {
|
||||
color: green;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -276,6 +293,6 @@ defineExpose({ getMakeUpDataList })
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
font-weight: 550;
|
||||
color: #009688
|
||||
color: #009688;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<template v-slot:select>
|
||||
<el-form-item label="模板策略">
|
||||
<el-select v-model.trim="Template" @change="changetype" placeholder="请选择模版" value-key="id">
|
||||
<el-option v-for="item in templatePolicy" :key="item.id" :label="item.name"
|
||||
<el-option v-for="item in templatePolicy" :key="item.id" :label="item.excelName"
|
||||
:value="item"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -35,7 +35,6 @@ import PointTree from '@/components/tree/govern/pointTree.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { exportExcel } from '@/views/system/reportForms/export.js'
|
||||
import 'splitpanes/dist/splitpanes.css'
|
||||
import { Splitpanes, Pane } from 'splitpanes'
|
||||
@@ -106,16 +105,11 @@ onMounted(() => {
|
||||
}
|
||||
})
|
||||
|
||||
// getTemplateByDept({ id: dictData.state.area[0].id }).then((res: any) => {
|
||||
// templatePolicy.value = res.data
|
||||
|
||||
|
||||
// })
|
||||
|
||||
const stencil = (val: any) => {
|
||||
templatePolicy.value = val
|
||||
Template.value = val[0]
|
||||
reportForm.value = val[0]?.reportForm
|
||||
reportForm.value = val[0]?.excelType
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="模板策略">
|
||||
<el-select v-model.trim="Template" @change="changetype" placeholder="请选择模版" value-key="id">
|
||||
<el-option v-for="item in templatePolicy" :key="item.id" :label="item.name"
|
||||
<el-option v-for="item in templatePolicy" :key="item.id" :label="item.excelName"
|
||||
:value="item"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -40,7 +40,6 @@ import pointTreeWx from '@/components/tree/govern/pointTreeWx.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { exportExcel } from '@/views/system/reportForms/export.js'
|
||||
import 'splitpanes/dist/splitpanes.css'
|
||||
import DatePicker from '@/components/form/datePicker/time.vue'
|
||||
@@ -112,21 +111,16 @@ onMounted(() => {
|
||||
})
|
||||
})
|
||||
|
||||
// getTemplateByDept({ id: dictData.state.area[0].id }).then((res: any) => {
|
||||
// templatePolicy.value = res.data
|
||||
|
||||
|
||||
// })
|
||||
|
||||
const stencil = (val: any) => {
|
||||
templatePolicy.value = val
|
||||
Template.value = val[0]
|
||||
reportForm.value = val[0]?.reportForm
|
||||
reportForm.value = val[0]?.excelType
|
||||
|
||||
}
|
||||
|
||||
const changetype = (val: any) => {
|
||||
reportForm.value = val.reportForm
|
||||
reportForm.value = val.excelType
|
||||
}
|
||||
|
||||
const handleNodeClick = (data: any, node: any) => {
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<el-option
|
||||
v-for="item in templatePolicy"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:label="item.excelName"
|
||||
:value="item"
|
||||
></el-option>
|
||||
</el-select>
|
||||
@@ -62,7 +62,6 @@ import pointTreeWx from '@/components/tree/govern/pointTreeWx.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { exportExcel } from '@/views/system/reportForms/export.js'
|
||||
import 'splitpanes/dist/splitpanes.css'
|
||||
import DatePicker from '@/components/form/datePicker/time.vue'
|
||||
@@ -144,15 +143,11 @@ onMounted(() => {
|
||||
})
|
||||
})
|
||||
|
||||
// getTemplateByDept({ id: dictData.state.area[0].id }).then((res: any) => {
|
||||
// templatePolicy.value = res.data
|
||||
|
||||
// })
|
||||
|
||||
const stencil = (val: any) => {
|
||||
templatePolicy.value = val.filter((item: any) => item.reportForm != '4')
|
||||
templatePolicy.value = val.filter((item: any) => item.excelType != '4')
|
||||
Template.value = templatePolicy.value[0]
|
||||
reportForm.value = templatePolicy.value[0]?.reportForm
|
||||
reportForm.value = templatePolicy.value[0]?.excelType
|
||||
}
|
||||
|
||||
const changetype = (val: any) => {
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<el-option
|
||||
v-for="item in templatePolicy"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:label="item.excelName"
|
||||
:value="item"
|
||||
></el-option>
|
||||
</el-select>
|
||||
@@ -72,7 +72,6 @@ import pointTreeWx from '@/components/tree/govern/pointTreeWx.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { exportExcel } from '@/views/system/reportForms/export.js'
|
||||
import 'splitpanes/dist/splitpanes.css'
|
||||
import DatePicker from '@/components/form/datePicker/time.vue'
|
||||
@@ -154,10 +153,6 @@ onMounted(() => {
|
||||
})
|
||||
})
|
||||
|
||||
// getTemplateByDept({ id: dictData.state.area[0].id }).then((res: any) => {
|
||||
// templatePolicy.value = res.data
|
||||
|
||||
// })
|
||||
const idList = ref([])
|
||||
// 监测对象
|
||||
const initListByIds = () => {
|
||||
@@ -174,13 +169,13 @@ const initListByIds = () => {
|
||||
}
|
||||
const stencil = (val: any) => {
|
||||
console.log('🚀 ~ stencil ~ val:', val)
|
||||
templatePolicy.value = val.filter((item: any) => item.reportForm == '4')
|
||||
templatePolicy.value = val.filter((item: any) => item.excelType == '4')
|
||||
Template.value = templatePolicy.value[0]
|
||||
reportForm.value = templatePolicy.value[0]?.reportForm
|
||||
reportForm.value = templatePolicy.value[0]?.excelType
|
||||
}
|
||||
|
||||
const changetype = (val: any) => {
|
||||
reportForm.value = val.reportForm
|
||||
reportForm.value = val.excelType
|
||||
}
|
||||
|
||||
const handleNodeClick = (data: any, node: any) => {
|
||||
|
||||
111
src/views/govern/reportForms/PopupForm.vue
Normal file
111
src/views/govern/reportForms/PopupForm.vue
Normal file
@@ -0,0 +1,111 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" width="500px" 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="modelTypeName">
|
||||
<el-input
|
||||
maxlength="32"
|
||||
show-word-limit
|
||||
v-model.trim="form.modelTypeName"
|
||||
placeholder="请输入菜单名称"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="报表类型" prop="modelType">
|
||||
<el-select style="width: 100%" v-model.trim="form.modelType" placeholder="请选择报表类型">
|
||||
<el-option
|
||||
v-for="item in reportFormList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input maxlength="32" show-word-limit-number v-model.number="form.sort" :min="0" />
|
||||
</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'
|
||||
import { updateSysExcel, addSysExcel } from '@/api/harmonic-boot/luckyexcel'
|
||||
const adminInfo = useAdminInfo()
|
||||
const tableStore = inject('tableStore') as TableStore
|
||||
// do not use same name with ref
|
||||
const form = reactive({
|
||||
modelTypeName: '',
|
||||
id: '',
|
||||
sort: 100,
|
||||
modelType: ''
|
||||
})
|
||||
const reportFormList = [
|
||||
{
|
||||
value: '1',
|
||||
label: '分析报表'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '统计报表'
|
||||
},
|
||||
{
|
||||
value: '4',
|
||||
label: '治理前后对比报表'
|
||||
},
|
||||
{
|
||||
value: '3',
|
||||
label: '自定义报表'
|
||||
}
|
||||
]
|
||||
const rules = {
|
||||
modelTypeName: [{ required: true, message: '请输入报表名称', trigger: 'blur' }],
|
||||
modelType: [{ required: true, message: '请选择报表类型', trigger: 'change' }],
|
||||
sort: [{ 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) {
|
||||
form.id = data.id
|
||||
form.modelTypeName = data.excelName
|
||||
form.modelType = data.excelType
|
||||
form.sort = data.sort
|
||||
} else {
|
||||
form.id = ''
|
||||
form.modelTypeName = ''
|
||||
form.modelType =''
|
||||
form.sort = 100
|
||||
}
|
||||
}
|
||||
const submit = async () => {
|
||||
formRef.value.validate(async valid => {
|
||||
if (valid) {
|
||||
if (form.id) {
|
||||
await updateSysExcel(form)
|
||||
} else {
|
||||
await addSysExcel(form)
|
||||
}
|
||||
ElMessage.success('保存成功')
|
||||
tableStore.index()
|
||||
dialogVisible.value = false
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
@@ -2,8 +2,13 @@
|
||||
<el-dialog draggable :title="title" v-model.trim="formVisible" width="500px" :before-close="closeDialog">
|
||||
<el-form :model="formdata" label-width="100px" :rules="rules" ref="ruleForm" class="form-one">
|
||||
<el-form-item label="模板名称:" prop="name">
|
||||
<el-input maxlength="32" show-word-limit placeholder="模板名称" v-model.trim="formdata.name"
|
||||
style="width: 100%"></el-input>
|
||||
<el-input
|
||||
maxlength="32"
|
||||
show-word-limit
|
||||
placeholder="模板名称"
|
||||
v-model.trim="formdata.name"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="部门:" prop="deptId">
|
||||
<Area v-model.trim="formdata.deptId" style="width: 100%" collapse-tags
|
||||
@@ -12,16 +17,37 @@
|
||||
|
||||
<el-form-item label="模板类型:" prop="reportType">
|
||||
<el-select style="width: 100%" v-model.trim="formdata.reportType" placeholder="请选择模板类型">
|
||||
<el-option v-for="item in classificationData" :key="item.id" :label="item.label"
|
||||
:value="item.id"></el-option>
|
||||
<el-option
|
||||
v-for="item in classificationData"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="报表类型:" prop="reportForm">
|
||||
<el-select style="width: 100%" v-model.trim="formdata.reportForm" placeholder="请选择报表类型">
|
||||
<el-option v-for="item in reportFormList" :key="item.value" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
<el-option
|
||||
v-for="item in reportFormList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="接线方式:" prop="wiringMethod">
|
||||
<el-select style="width: 100%" v-model.trim="formdata.wiringMethod" placeholder="请选择接线方式">
|
||||
<el-option
|
||||
v-for="item in volConTypeList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input maxlength="32" show-word-limit-number v-model.number="formdata.sort" :min="0" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="closeDialog">取 消</el-button>
|
||||
@@ -37,6 +63,9 @@ const emit = defineEmits(['submitForm'])
|
||||
const title = ref('')
|
||||
const list = ref({})
|
||||
const ruleForm = ref()
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
const dictData = useDictData()
|
||||
const volConTypeList: any = dictData.getBasicData('Dev_Connect')
|
||||
const formVisible = ref(false)
|
||||
const classificationData = [
|
||||
{
|
||||
@@ -56,34 +85,37 @@ const reportFormList = [
|
||||
{
|
||||
value: '2',
|
||||
label: '统计报表'
|
||||
}, {
|
||||
},
|
||||
{
|
||||
value: '4',
|
||||
label: '治理前后对比报表'
|
||||
},
|
||||
{
|
||||
value: '3',
|
||||
label: '自定义报表'
|
||||
},
|
||||
|
||||
}
|
||||
]
|
||||
const rules = {
|
||||
name: [{ required: true, message: '请输入模板名称', trigger: 'blur' }],
|
||||
deptId: [{ required: true, message: '请选择部门', trigger: 'change' }],
|
||||
reportType: [{ required: true, message: '请选择模板类型', trigger: 'change' }],
|
||||
reportForm: [{ required: true, message: '请选择报表类型', trigger: 'change' }]
|
||||
reportForm: [{ required: true, message: '请选择报表类型', trigger: 'change' }],
|
||||
wiringMethod: [{ required: true, message: '请选择接线方式', trigger: 'change' }],
|
||||
sort: [{ required: true, message: '请输入排序', trigger: 'blur' }]
|
||||
}
|
||||
const formdata = ref({
|
||||
name: '',
|
||||
deptId: [],
|
||||
reportType: '',
|
||||
reportForm: ''
|
||||
reportForm: '',
|
||||
wiringMethod: '',
|
||||
sort: 100
|
||||
})
|
||||
// 确定
|
||||
const preservation = () => {
|
||||
ruleForm.value.validate((valid: boolean) => {
|
||||
if (valid) {
|
||||
emit('submitForm', formdata.value, title.value)
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -106,6 +138,6 @@ const open = (text: string, row?: any) => {
|
||||
|
||||
formVisible.value = true
|
||||
}
|
||||
defineExpose({ open,shutDown })
|
||||
defineExpose({ open, shutDown })
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
@@ -1,69 +1,155 @@
|
||||
<template>
|
||||
<div class="default-main">
|
||||
<div v-show="show && lookShow">
|
||||
<TableHeader ref="TableHeaderRef">
|
||||
<template #operation>
|
||||
<el-button icon="el-icon-Plus" type="primary" @click="add">新增</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" />
|
||||
<div v-show="show && lookShow" style="display: flex">
|
||||
<div style="width: 600px">
|
||||
<div class="custom-table-header">
|
||||
<div class="title">报表列表</div>
|
||||
<el-button :icon="Plus" type="primary" @click="addRole" class="ml10">新增报表</el-button>
|
||||
</div>
|
||||
<Table ref="tableRef" @currentChange="currentChange" />
|
||||
</div>
|
||||
<div style="flex: 1">
|
||||
<div class="custom-table-header">
|
||||
<div class="title">模版绑定</div>
|
||||
|
||||
<el-button type="primary" icon="el-icon-Plus" @click="add">新增模版</el-button>
|
||||
<el-button type="primary" icon="el-icon-Select" @click="save">保存</el-button>
|
||||
</div>
|
||||
<div :style="height">
|
||||
<vxe-table
|
||||
ref="tableRef1"
|
||||
v-bind="defaultAttribute"
|
||||
:data="templateList"
|
||||
height="auto"
|
||||
style="width: 100%"
|
||||
>
|
||||
<vxe-column type="checkbox" width="60"></vxe-column>
|
||||
<vxe-column field="name" title="模版名称"></vxe-column>
|
||||
<vxe-column field="wiringMethod" title="接线方式">
|
||||
<template #default="{ row }">
|
||||
{{ volConTypeList.find(item => item.id == row.wiringMethod)?.name || '/' }}
|
||||
</template>
|
||||
</vxe-column>
|
||||
|
||||
<!-- <vxe-column field="createTime" title="创建时间"></vxe-column> -->
|
||||
<vxe-column field="sort" title="排序" width="80px"></vxe-column>
|
||||
<vxe-column field="createTime" title="操作" width="180px">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link @click="lookView(row)" size="small">查看</el-button>
|
||||
<el-button
|
||||
style="margin-left: 4px"
|
||||
type="primary"
|
||||
link
|
||||
size="small"
|
||||
@click="templateModification(row)"
|
||||
class="ml10 mr10"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-popconfirm
|
||||
@confirm="templateRemove(row)"
|
||||
title="确定删除吗?"
|
||||
confirm-button-type="danger"
|
||||
>
|
||||
<template #reference>
|
||||
<el-button style="margin-left: 4px" type="danger" size="small" link>
|
||||
刪除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<luckysheet ref="luckysheetRef" v-if="!show" @shutDown="shutDown" />
|
||||
<!-- 查看 -->
|
||||
<look ref="lookRef" v-if="!lookShow" @shutDown="shutDown" />
|
||||
<!-- 绑定 -->
|
||||
<department ref="departmentRef" />
|
||||
<PopupForm ref="popupRef"></PopupForm>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, provide, nextTick } from 'vue'
|
||||
import { Plus } from '@element-plus/icons-vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import Table from '@/components/table/index.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { delTemplate } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { delTemplate, deleteSysExcel, getTemplateList, bandRelation, queryList } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||
import luckysheet from './luckysheet.vue'
|
||||
import look from './look.vue'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import PopupForm from './PopupForm.vue'
|
||||
import department from './department.vue'
|
||||
const dictData = useDictData()
|
||||
defineOptions({
|
||||
name: 'govern/reportForms/index'
|
||||
})
|
||||
const height = mainHeight(80)
|
||||
const volConTypeList: any = dictData.getBasicData('Dev_Connect')
|
||||
const luckysheetRef = ref()
|
||||
const lookRef = ref()
|
||||
const departmentRef = ref()
|
||||
const show = ref(true)
|
||||
const lookShow = ref(true)
|
||||
const popupRef = ref()
|
||||
const tableRef = ref()
|
||||
const tableRef1 = ref()
|
||||
const templateList = ref([])
|
||||
const menuListId = ref([])
|
||||
const defaultProps = {
|
||||
children: 'children',
|
||||
label: 'name'
|
||||
}
|
||||
const reportFormList = [
|
||||
{
|
||||
value: '1',
|
||||
label: '分析报表'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '统计报表'
|
||||
},
|
||||
{
|
||||
value: '4',
|
||||
label: '治理前后对比报表'
|
||||
},
|
||||
{
|
||||
value: '3',
|
||||
label: '自定义报表'
|
||||
}
|
||||
]
|
||||
const tableStore: any = new TableStore({
|
||||
url: '/cs-harmonic-boot/customReport/getTemplateList',
|
||||
// url: '/cs-harmonic-boot/customReport/getTemplateList',
|
||||
url: '/cs-harmonic-boot/sysExcel/querySysExcel',
|
||||
method: 'POST',
|
||||
isWebPaging: true,
|
||||
publicHeight: 60,
|
||||
showPage: false,
|
||||
column: [
|
||||
{ field: 'name', title: '模板名称' },
|
||||
{ field: 'reportForm', title: '模板类型',formatter: (row) => {
|
||||
return row.cellValue == 1 ? '分析报表' : row.cellValue == 2 ? '统计报表' : row.cellValue == 3 ? '自定义报表' : '治理前后对比报表'
|
||||
} },
|
||||
{ field: 'updateBy', title: '更新用户' },
|
||||
{ field: 'createTime', title: '创建时间' , sortable: true},
|
||||
{ field: 'updateTime', title: '更新时间', sortable: true },
|
||||
{ field: 'excelName', title: '报表名称' },
|
||||
{
|
||||
title: '操作', fixed: 'right',
|
||||
width: '220',
|
||||
field: 'excelType',
|
||||
title: '报表类型',
|
||||
formatter: row => {
|
||||
return reportFormList.filter(item => item.value == row.cellValue)[0]?.label || '/' //row.cellValue
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'sort',
|
||||
title: '排序',
|
||||
width: '80px'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
fixed: 'right',
|
||||
width: '150',
|
||||
render: 'buttons',
|
||||
buttons: [
|
||||
{
|
||||
name: 'edit',
|
||||
title: '查看 ',
|
||||
type: 'primary',
|
||||
icon: 'el-icon-Plus',
|
||||
render: 'basicButton',
|
||||
click: row => {
|
||||
lookShow.value = false
|
||||
setTimeout(() => {
|
||||
lookRef.value.open(row)
|
||||
}, 10)
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'edit',
|
||||
title: '编辑',
|
||||
@@ -71,22 +157,10 @@ const tableStore: any = new TableStore({
|
||||
icon: 'el-icon-Plus',
|
||||
render: 'basicButton',
|
||||
click: row => {
|
||||
show.value = false
|
||||
setTimeout(() => {
|
||||
luckysheetRef.value.open('编辑报表模板', row)
|
||||
}, 10)
|
||||
popupRef.value.open('编辑报表', row)
|
||||
}
|
||||
},
|
||||
// {
|
||||
// name: 'edit',
|
||||
// title: '绑定',
|
||||
// type: 'primary',
|
||||
// icon: 'el-icon-Plus',
|
||||
// render: 'basicButton',
|
||||
// click: row => {
|
||||
// departmentRef.value.open(row)
|
||||
// }
|
||||
// },
|
||||
|
||||
{
|
||||
name: 'del',
|
||||
text: '删除',
|
||||
@@ -100,7 +174,7 @@ const tableStore: any = new TableStore({
|
||||
title: '确定删除?'
|
||||
},
|
||||
click: row => {
|
||||
delTemplate({ tempId: row.id, deptId: row.deptId }).then(res => {
|
||||
deleteSysExcel({ id: row.id }).then(res => {
|
||||
ElMessage.success('删除成功')
|
||||
tableStore.index()
|
||||
})
|
||||
@@ -110,18 +184,45 @@ const tableStore: any = new TableStore({
|
||||
}
|
||||
],
|
||||
|
||||
loadCallback: () => {}
|
||||
loadCallback: () => {
|
||||
tableRef.value.getRef().setCurrentRow(tableStore.table.data[0])
|
||||
currentChange({
|
||||
row: tableStore.table.data[0]
|
||||
})
|
||||
}
|
||||
})
|
||||
tableStore.table.params = {}
|
||||
tableStore.table.params.pageSize = 20
|
||||
tableStore.table.params.pageNum = 1
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
// 查看
|
||||
const lookView = (row: any) => {
|
||||
lookShow.value = false
|
||||
setTimeout(() => {
|
||||
lookRef.value.open(row)
|
||||
}, 10)
|
||||
}
|
||||
// 修改模版
|
||||
const templateModification = (row: any) => {
|
||||
show.value = false
|
||||
setTimeout(() => {
|
||||
luckysheetRef.value.open('编辑报表模板', row)
|
||||
}, 10)
|
||||
}
|
||||
// 删除模版
|
||||
const templateRemove = (row: any) => {
|
||||
delTemplate({ tempId: row.id, deptId: row.deptId }).then(res => {
|
||||
ElMessage.success('删除成功')
|
||||
getTemplate()
|
||||
})
|
||||
}
|
||||
// 关闭
|
||||
const shutDown = () => {
|
||||
show.value = true
|
||||
lookShow.value = true
|
||||
tableStore.index()
|
||||
getTemplate()
|
||||
}
|
||||
const addRole = () => {
|
||||
// add()
|
||||
popupRef.value.open('新增报表')
|
||||
}
|
||||
const add = () => {
|
||||
show.value = false
|
||||
@@ -129,7 +230,49 @@ const add = () => {
|
||||
luckysheetRef.value.open('新增报表模板')
|
||||
}, 10)
|
||||
}
|
||||
// 查询绑定模版
|
||||
const currentChange = (data: any) => {
|
||||
tableRef1.value.clearCheckboxRow()
|
||||
menuListId.value = data.row.id
|
||||
queryList({ id: data.row.id }).then((res: any) => {
|
||||
let ids = res.data.map(item => item.id)
|
||||
tableRef1.value.setCheckboxRow(
|
||||
templateList.value.filter(item => ids.includes(item.id)),
|
||||
true
|
||||
)
|
||||
})
|
||||
}
|
||||
// 保存模版
|
||||
const save = () => {
|
||||
bandRelation({
|
||||
modelIds: tableRef1.value.getCheckboxRecords().map(item => item.id),
|
||||
id: menuListId.value
|
||||
})
|
||||
.then(() => {
|
||||
ElMessage.success('操作成功!')
|
||||
})
|
||||
.catch(() => {})
|
||||
}
|
||||
const getTemplate = () => {
|
||||
getTemplateList({
|
||||
pageNum: 1,
|
||||
pageSize: 10000
|
||||
}).then(res => {
|
||||
templateList.value = res.data
|
||||
})
|
||||
}
|
||||
onMounted(() => {
|
||||
getTemplate()
|
||||
tableStore.index()
|
||||
})
|
||||
</script>
|
||||
<style scoped>
|
||||
.custom-tree-node {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: 14px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -123,6 +123,8 @@ const submitForm = (formdata: any, text: string) => {
|
||||
params.append('name', formdata.name)
|
||||
params.append('reportType', formdata.reportType)
|
||||
params.append('reportForm', formdata.reportForm)
|
||||
params.append('wiringMethod', formdata.wiringMethod)
|
||||
params.append('sort', formdata.sort)
|
||||
ElMessage.info('正在保存请稍等!')
|
||||
if (text == '新增报表模板') {
|
||||
addTemplate(params)
|
||||
|
||||
Reference in New Issue
Block a user