This commit is contained in:
guanj
2025-09-26 10:59:37 +08:00
parent 6fcf99284d
commit e7f7c8b537
16 changed files with 2227 additions and 2203 deletions

View File

@@ -50,12 +50,13 @@ export const downloadFile = (filePath: any) => {
/**
* 获取文件的短期url展示
*/
export const getFileUrl = (filePath: string) => {
export const getFileUrl = (params:any) => {
let form = new FormData()
form.append('filePath', filePath)
// form.append('filePath', filePath)
return createAxios({
url: SYSTEM_PREFIX + '/file/getFileUrl',
method: 'POST'
method: 'get',
params
})
}

View File

@@ -4,7 +4,8 @@
{{ fieldValue }}
</div>
<!-- Icon -->
<Icon class="ba-icon-dark" v-if="field.render == 'icon' && fieldValue" :name="fieldValue ? fieldValue : field.default ?? ''" />
<Icon class="ba-icon-dark" v-if="field.render == 'icon' && fieldValue"
:name="fieldValue ? fieldValue : field.default ?? ''" />
<!-- switch -->
<el-switch v-if="field.render == 'switch'" @change="onChangeField(field, $event)"
@@ -14,12 +15,13 @@
<!-- image -->
<div v-if="field.render == 'image' && fieldValue" class="ba-render-image">
<el-image :hide-on-click-modal="true" :preview-teleported="true" :preview-src-list="[fieldValue]"
:src="fieldValue.length > 100 ? fieldValue : fullUrl(fieldValue)"></el-image>
:src="fieldValue.length > 100 ? fieldValue : getUrl(fieldValue)"></el-image>
</div>
<!-- tag -->
<div v-if="field.render == 'tag' && fieldValue !== ''">
<el-tag :type="getTagType(fieldValue, field.custom) || 'primary'" :effect="field.effect ||'light'" size="small">
<el-tag :type="getTagType(fieldValue, field.custom) || 'primary'" :effect="field.effect || 'light'"
size="small">
{{ field.replaceValue ? field.replaceValue[fieldValue] : fieldValue }}
</el-tag>
</div>
@@ -101,6 +103,7 @@ import { ref, inject } from 'vue'
import { ElMessageBox, type TagProps } from 'element-plus'
import type TableStoreClass from '@/utils/tableStore'
import { fullUrl, timeFormat } from '@/utils/common'
import { getFileUrl } from '@/api/system-boot/file'
import type { VxeColumnProps } from 'vxe-table'
const TableStore = inject('tableStore') as TableStoreClass
@@ -134,6 +137,11 @@ const onChangeField = (row: any, value: any) => {
// TableStore.onTableAction('field-change', { value: value, ...props })
}
const getUrl = (url: string) => {
getFileUrl({ filePath: url }).then(res => {
return res.data
})
}
const onButtonClick = (btn: OptButton) => {
btn.click && btn.click(props.row, props.field)

View File

@@ -83,7 +83,6 @@ import { useAdminInfo } from '@/stores/adminInfo'
import router from '@/router'
import globalPopUp from './globalPopUp.vue'
import { routePush } from '@/utils/router'
import { fullUrl } from '@/utils/common'
import html2canvas from 'html2canvas'
import PopupPwd from './popup/password.vue'
import AdminInfo from './popup/adminInfo.vue'

View File

@@ -35,21 +35,21 @@ const setupAll = async () => {
const app = createApp(App)
//开启离线地图
// app.use(BaiduMapOffline, {
// offline: true,
// offlineConfig: {
// imgext: '.png',
// customstyle: '',
// tiles_dir: '',
// tiles_hybrid: '',
// tiles_self: '',
// tiles_v_dir: '',
// tiles_satellite_dir: '',
// tiles_road_dir: '',
// tiles_v_road_dir: '',
// home: './plugin/offline/'
// }
// })
app.use(BaiduMapOffline, {
offline: true,
offlineConfig: {
imgext: '.png',
customstyle: '',
tiles_dir: '',
tiles_hybrid: '',
tiles_self: '',
tiles_v_dir: '',
tiles_satellite_dir: '',
tiles_road_dir: '',
tiles_v_road_dir: '',
home: './plugin/offline/'
}
})
app.use(BaiduMap, {
// ak: 'Yp57V71dkOPiXjiN8VdcFRsVELzlVNKK',
ak: 'RpQi6WNFZ9tseKzhdwOQsXwFsoVntnsN',

View File

@@ -347,12 +347,12 @@ const onSubmit = async () => {
}))
// 设置有功功率图表
setEChart(1, res1.data.data, '有功功率', 'kW')
setEChart(1, res1.data.data, '有功功率', 'W')
// 获取无功功率数据并设置图表
const res2 = await queryCarryCapacityQData(form)
q_βminMap.value = res2.data.q_βminMap
setEChart(2, res2.data.data, '无功功率', 'kVar')
setEChart(2, res2.data.data, '无功功率', 'Var')
// 获取谐波电流数据并设置图表
const res3 = await queryCarryCapacityIData(form)

View File

@@ -81,6 +81,7 @@
:style="{ height: GridHeight + 'px' }"
:row-height="rowHeight"
:col-num="12"
prevent-collision
:vertical-compact="false"
>
<template #item="{ item }">

View File

@@ -47,7 +47,7 @@ import Table from '@/components/table/index.vue'
import BackComponent from '@/components/icon/back/index.vue'
import completenessDetails from './completenessDetails.vue'
import { genFileId, ElMessage } from 'element-plus'
import { uploadUserData ,deleteUserDataByIds} from '@/api/advance-boot/division'
import { uploadUserData, deleteUserDataByIds } from '@/api/advance-boot/division'
import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus'
defineOptions({
name: 'division/aListOfLoadData'
@@ -78,6 +78,9 @@ const tableStore = new TableStore({
title: '完整性详情',
type: 'primary',
icon: 'el-icon-Plus',
disabled: row => {
return row.integrity == 1
},
render: 'basicButton',
click: row => {
completenessDetailsRef.value.open(row.id)
@@ -129,7 +132,7 @@ const submitupload = () => {
ElMessage.warning('请上传文件!')
return
}
ElMessage.info('上传中,请稍等...')
ElMessage.info('上传中,请稍等...')
const formData = new FormData()
formData.append('file', fileList.value[0].raw)
loading.value = true

View File

@@ -1,5 +1,4 @@
<template>
<el-dialog v-model="dialogVisible" draggable title="完整性不足详情" width="1000">
<TableHeader :showReset="false" ref="TableHeaderRef">
<template #select>
@@ -13,11 +12,9 @@
</template>
</TableHeader>
<Table ref="tableRef"></Table>
</el-dialog>
</template>
<script setup lang='ts'>
<script setup lang="ts">
import TableStore from '@/utils/tableStore'
import TableHeader from '@/components/table/header/index.vue'
import Table from '@/components/table/index.vue'
@@ -33,15 +30,20 @@ const tableStore = new TableStore({
{ title: '数据名', field: 'name' },
{ title: '用户名', field: 'userName' },
{ title: '测量点局号', field: 'lineNo' },
{ title: '日期', field: 'upDataTime' },
{ title: '完整性', field: 'integrity' },
{ title: '日期', field: 'updateTime' },
{
title: '完整性(%)',
field: 'integrity',
formatter: (row: any) => {
return Math.floor(row.cellValue * 10000) / 100
}
}
],
loadCallback: () => {
setTimeout(() => {
tableStore.table.height = mainHeight(0,2).height as any
// console.log("🚀 ~ setTimeout ~ tableStore.table.height:", tableStore.table.height)
}, 0)
tableStore.table.height = mainHeight(0, 2).height as any
// console.log("🚀 ~ setTimeout ~ tableStore.table.height:", tableStore.table.height)
}, 0)
// setTimeout(() => { tableStore.table.height = 'calc((100vh) / 2)'}, 1000)
}
})
@@ -49,17 +51,12 @@ const tableStore = new TableStore({
provide('tableStore', tableStore)
tableStore.table.params.searchValue = ''
const open = (id: string) => {
tableStore.table.params.userDataId = id
dialogVisible.value = true
tableStore.index()
}
defineExpose({ open })
</script>
<style lang="scss" scoped></style>

View File

@@ -5,7 +5,7 @@
<!-- <div style="font-size: 14px; font-weight: 500">
</div> -->
<span class="monitoring-point"> {{ query.name || '' }}</span>
<span class="monitoring-point">{{ query.name || '' }}</span>
<back-component />
</div>
@@ -21,9 +21,11 @@
<div style="height: calc(100vh - 250px); overflow-y: auto">
<div
class="box boxTab mb10"
:style="`height: calc((100vh - 280px) / ${
item.list.length == 0 ? 1 : item.list.length > 3 ? 3 : item.list.length
})`"
:style="{
height: `calc((100vh - 280px) / ${
item.list.length == 0 ? 1 : item.list.length > 3 ? 3 : item.list.length
})`
}"
v-for="(value, i) in item.dynamicOptions"
:key="i"
>

View File

@@ -7,12 +7,8 @@
</el-form-item>
<el-form-item label="对比">
<el-select v-model="searchType" clearable placeholder="可选择同比、环比">
<el-option
v-for="item in searchTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-option v-for="item in searchTypeOptions" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
</template>
@@ -38,6 +34,7 @@ import MyEchart from '@/components/echarts/MyEchart.vue'
import { useMonitoringPoint } from '@/stores/monitoringPoint'
import { getProbabilityDistribution } from '@/api/event-boot/monitor'
import { getRunInfoData, getComFlagInfoData } from '@/api/device-boot/communicate'
import { ElMessage, ElMessageBox } from 'element-plus'
import TableHeader from '@/components/table/header/index.vue'
import TableStore from '@/utils/tableStore'
const tableStore = new TableStore({
@@ -166,17 +163,29 @@ const handlerOptions1 = (data: any) => {
}
}
const handlerOptions2 = (data: any) => {
let title = ''
if (data.integrityData.some((item: any) => item > 100)) {
title = '数据存在异常,已进行转换处理'
data.integrityData = data.integrityData.map(item => {
return item > 100 ? 100 : item;
});
}
options2.value = {
title: {
text: '在线率和完整性'
text: '在线率和完整性',
subtext: title,
subtextStyle: {
color: 'red' // 设置副标题颜色为红色
}
},
xAxis: {
type: 'category',
data: formData.periodBeginTime
? [
`${formData.searchBeginTime}${formData.searchEndTime}`,
`${formData.periodBeginTime}${formData.periodEndTime}`
]
`${formData.searchBeginTime}${formData.searchEndTime}`,
`${formData.periodBeginTime}${formData.periodEndTime}`
]
: [`${formData.searchBeginTime}${formData.searchEndTime}`]
},
yAxis: {

View File

@@ -1,13 +1,13 @@
<template>
<SecondSheet>
<div style='height: 100%; overflow: hidden'>
<div style='height: 100%; overflow: hidden' >
<div class='switch-tab'>
<el-radio-group v-model='radio' size='small'>
<el-radio-group v-model='radio' >
<el-radio-button value='三维图'>三维图</el-radio-button>
<el-radio-button value='表格'>表格</el-radio-button>
</el-radio-group>
</div>
<Table ref='tableRef' height='auto' isGroup />
<Table ref='tableRef' isGroup />
<SecondSheet v-if="radio === '三维图'">
<MyEchart :options='options' v-if='options'></MyEchart>
</SecondSheet>
@@ -260,8 +260,8 @@ defineExpose({ search })
<style lang='scss'>
.switch-tab {
position: absolute;
right: 16px;
top: 4px;
right: 345px;
top: -37px;
z-index: 11;
}
</style>

View File

@@ -169,7 +169,7 @@ const initOptions = () => {
options.value = {
legend: {
data: ['越限事件', '未越限事件', '不确定事件'],
left: '10px'
},
tooltip: {
formatter: function (a: any) {

View File

@@ -80,7 +80,7 @@ import AreaCascard from '@/components/form/areaCascard/index.vue'
import { uploadFile, deleteFile } from '@/api/system-boot/file'
import { addSgUser, updateSgUser } from '@/api/advance-boot/sgGroven/sgUser'
import IncomingTable from './IncomingTable.vue'
import { fullUrl } from '@/utils/common'
import { getFileUrl } from '@/api/system-boot/file'
const dialogVisible = ref(false)
const title = ref('')
@@ -137,7 +137,9 @@ const open = (text: string, data?: anyObj) => {
form.addr = data.addr.split('/')
form.keyUser = String(data.keyUser)
if (form.userLogo) {
userLogo.url = fullUrl(form.userLogo)
getFileUrl({filePath:form.userLogo}).then(res=>{
userLogo.url=res.data
})
// 图片的name我不知道
}
//待子组件渲染完毕

View File

@@ -2,7 +2,7 @@
<div>
<div class="custom-table-header">
<div class="title">接口权限列表</div>
<el-input v-model="tableStore.table.params.searchValue" style="width: 240px" placeholder="请输入菜单名称"
<el-input v-model="tableStore.table.params.searchValue" style="width: 240px" placeholder="请输入关键字"
class="ml10" clearable @input="search" />
<el-button :icon="Plus" type="primary" @click="addMenu" class="ml10" :disabled="!props.id">新增</el-button>
</div>

View File

@@ -6,7 +6,7 @@
<el-input v-model="form.name" placeholder="请输入菜单名称" maxlength="32" show-word-limit @input="handleInput"/>
</el-form-item>
<el-form-item label="角色编码" prop="code">
<el-input v-model="form.code" placeholder="请输入菜单名称" />
<el-input v-model="form.code" placeholder="请输入角色编码" />
</el-form-item>
<el-form-item label="角色描述">
<el-input v-model="form.remark" :rows="2" type="textarea" placeholder="请输入描述" />

View File

@@ -25,14 +25,15 @@ export default defineConfig({
'/api': {
// target: 'http://10.95.53.49:10215', //海南服务器ip
// target: 'http://10.118.135.128:10215', ///hsw
target: 'http://192.168.1.29:10215', ///hsw
target: 'http://192.168.1.67:10215', ///hsw
// target: 'http://192.168.1.68:10215', ///hsw
// target: 'http://10.119.65.152:10215', //数据中心
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, '') //路径重写,把'/api'替换为''
},
'/api-docx': {
// 文件服务器地址
target: 'http://192.168.1.22:9009',
target: 'http://192.168.1.68:9009',
changeOrigin: true,
rewrite: path => path.replace(/^\/api-docx/, '')
},
@@ -52,3 +53,4 @@ export default defineConfig({
}
}
})