Browse Source

换热站大屏数据修改

develop
fuguobin 12 months ago
parent
commit
de2cd87727
  1. 7
      src/store/modules/date.js
  2. 10
      src/store/modules/user.ts
  3. 4
      src/types/components.d.ts
  4. 5
      src/views/dashboard/index.vue
  5. 22
      src/views/data-visual/components/header.vue
  6. 12
      src/views/data-visual/components/hxPress.vue
  7. 12
      src/views/data-visual/components/hxTemp.vue
  8. 8
      src/views/data-visual/components/priTemp.vue
  9. 59
      src/views/data-visual/components/table.vue

7
src/store/modules/date.js

@ -5,9 +5,12 @@ const useCounter = defineStore('date', {
* 存储全局状态 * 存储全局状态
*/ */
state: () => ({ state: () => ({
deptIdStr:'', deptIdStr: '',
dateStr: '', dateStr: '',
orgStr:'' orgStr: {
title: '',
uuid: ''
}
}), }),
/** /**

10
src/store/modules/user.ts

@ -8,7 +8,7 @@ import { store } from '@/store';
import { LoginData } from '@/api/auth/types'; import { LoginData } from '@/api/auth/types';
import { UserInfo } from '@/api/user/types'; import { UserInfo } from '@/api/user/types';
import { useStorage,useSessionStorage } from '@vueuse/core'; import { useStorage, useSessionStorage } from '@vueuse/core';
export const useUserStore = defineStore('user', () => { export const useUserStore = defineStore('user', () => {
// state // state
@ -57,10 +57,10 @@ export const useUserStore = defineStore('user', () => {
roles.value = data.roles; roles.value = data.roles;
perms.value = data.permissions; perms.value = data.permissions;
userInfo.value = user; userInfo.value = user;
if(data.webVersion===null){ if (data.webVersion === null) {
webVersion.value='' webVersion.value = '';
}else{ } else {
webVersion.value=JSON.stringify(data.webVersion) webVersion.value = JSON.stringify(data.webVersion);
} }
// useStorage('userInfo', user); // useStorage('userInfo', user);
resolve(data); resolve(data);

4
src/types/components.d.ts

@ -9,12 +9,15 @@ declare module '@vue/runtime-core' {
export interface GlobalComponents { export interface GlobalComponents {
Breadcrumb: typeof import('./../components/Breadcrumb/index.vue')['default'] Breadcrumb: typeof import('./../components/Breadcrumb/index.vue')['default']
Button: typeof import('./../components/Widgets/button.vue')['default'] Button: typeof import('./../components/Widgets/button.vue')['default']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
ElButton: typeof import('element-plus/es')['ElButton'] ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard'] ElCard: typeof import('element-plus/es')['ElCard']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCol: typeof import('element-plus/es')['ElCol'] ElCol: typeof import('element-plus/es')['ElCol']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDialog: typeof import('element-plus/es')['ElDialog'] ElDialog: typeof import('element-plus/es')['ElDialog']
ElDivider: typeof import('element-plus/es')['ElDivider']
ElDropdown: typeof import('element-plus/es')['ElDropdown'] ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
@ -30,6 +33,7 @@ declare module '@vue/runtime-core' {
ElRow: typeof import('element-plus/es')['ElRow'] ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect'] ElSelect: typeof import('element-plus/es')['ElSelect']
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTable: typeof import('element-plus/es')['ElTable'] ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn']

5
src/views/dashboard/index.vue

@ -171,8 +171,7 @@ const timePeriod = computed(() => {
onMounted(() => { onMounted(() => {
getWeatherData(); getWeatherData();
const webVersion = sessionStorage.getItem('webVersion'); const webVersion = sessionStorage.getItem('webVersion');
debugger if (webVersion != '' && webVersion != null) {
if (webVersion != '') {
const version = JSON.parse(webVersion); const version = JSON.parse(webVersion);
notice.value = ElNotification({ notice.value = ElNotification({
title: '更新日志', title: '更新日志',
@ -193,7 +192,7 @@ function noticeCloce(id: any) {
}; };
userVersionRelation(params).then((res: any) => { userVersionRelation(params).then((res: any) => {
if (res.code === 200) { if (res.code === 200) {
console.log('更新日志关闭!') console.log('更新日志关闭!');
} }
}); });
} }

22
src/views/data-visual/components/header.vue

@ -14,10 +14,10 @@
<svg-icon class="logoIcon" icon-class="BIlogo" /> <svg-icon class="logoIcon" icon-class="BIlogo" />
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="text">智能生产调度系统 - 大唐管井锅炉房</div> <div class="text">智能生产调度系统 - {{ deviceTitle }}锅炉房</div>
</div> </div>
<div class="home"> <div class="home">
<div class="homeBtn"> <div class="homeBtn" @click="returnBack">
<div class="homeIcon"> <div class="homeIcon">
<svg viewBox="0 0 20 20.215051651000977"> <svg viewBox="0 0 20 20.215051651000977">
<path <path
@ -33,7 +33,7 @@
</div> </div>
</div> </div>
<div class="menuInfo"> <div class="menuInfo">
<div class="return"> <div class="return" @click="returnBack">
<svg class="returnIcon" viewBox="0 0 20 20"> <svg class="returnIcon" viewBox="0 0 20 20">
<path <path
d="M16.6667,2.5C17.1269,2.5,17.5,2.873096,17.5,3.333333C17.5,3.333333,17.5,9.16667,17.5,9.16667C17.5,10.27173,17.061,11.33158,16.279600000000002,12.11292C15.4983,12.8943,14.4384,13.3333,13.3333,13.3333C13.3333,13.3333,5.34518,13.3333,5.34518,13.3333C5.34518,13.3333,8.08926,16.0774,8.08926,16.0774C8.41469,16.4028,8.41469,16.930500000000002,8.08926,17.2559C7.76382,17.5813,7.23618,17.5813,6.91074,17.2559C6.91074,17.2559,2.744077,13.0892,2.744077,13.0892C2.4186408,12.7638,2.4186408,12.23617,2.744077,11.91075C2.744077,11.91075,6.91074,7.74407,6.91074,7.74407C7.23618,7.41864,7.76382,7.41864,8.08926,7.74407C8.41469,8.06952,8.41469,8.59715,8.08926,8.92259C8.08926,8.92259,5.34518,11.66667,5.34518,11.66667C5.34518,11.66667,13.3333,11.66667,13.3333,11.66667C13.9963,11.66667,14.6322,11.40325,15.1011,10.93442C15.5699,10.465589999999999,15.8333,9.82971,15.8333,9.16667C15.8333,9.16667,15.8333,3.333333,15.8333,3.333333C15.8333,2.873096,16.206400000000002,2.5,16.6667,2.5C16.6667,2.5,16.6667,2.5,16.6667,2.5Z" d="M16.6667,2.5C17.1269,2.5,17.5,2.873096,17.5,3.333333C17.5,3.333333,17.5,9.16667,17.5,9.16667C17.5,10.27173,17.061,11.33158,16.279600000000002,12.11292C15.4983,12.8943,14.4384,13.3333,13.3333,13.3333C13.3333,13.3333,5.34518,13.3333,5.34518,13.3333C5.34518,13.3333,8.08926,16.0774,8.08926,16.0774C8.41469,16.4028,8.41469,16.930500000000002,8.08926,17.2559C7.76382,17.5813,7.23618,17.5813,6.91074,17.2559C6.91074,17.2559,2.744077,13.0892,2.744077,13.0892C2.4186408,12.7638,2.4186408,12.23617,2.744077,11.91075C2.744077,11.91075,6.91074,7.74407,6.91074,7.74407C7.23618,7.41864,7.76382,7.41864,8.08926,7.74407C8.41469,8.06952,8.41469,8.59715,8.08926,8.92259C8.08926,8.92259,5.34518,11.66667,5.34518,11.66667C5.34518,11.66667,13.3333,11.66667,13.3333,11.66667C13.9963,11.66667,14.6322,11.40325,15.1011,10.93442C15.5699,10.465589999999999,15.8333,9.82971,15.8333,9.16667C15.8333,9.16667,15.8333,3.333333,15.8333,3.333333C15.8333,2.873096,16.206400000000002,2.5,16.6667,2.5C16.6667,2.5,16.6667,2.5,16.6667,2.5Z"
@ -57,17 +57,20 @@
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { useRoute, useRouter } from 'vue-router';
import { useDateFormat, useNow } from '@vueuse/core'; import { useDateFormat, useNow } from '@vueuse/core';
import { getWeather } from '@/api/user/index'; import { getWeather } from '@/api/user/index';
import { getDeptList } from '@/api/dataVisual/index'; import { getDeptList } from '@/api/dataVisual/index';
import useCounter from '@/store/modules/date'; import useCounter from '@/store/modules/date';
import calendar from '@/utils/lunar'; const route = useRoute();
const router = useRouter();
const counterStore = useCounter(); const counterStore = useCounter();
const currentTime = useDateFormat(useNow(), 'YYYY-MM-DD HH:mm:ss'); const currentTime = useDateFormat(useNow(), 'YYYY-MM-DD HH:mm:ss');
const weatherData = ref({ city: '', weather: '', temperature: '', weatherImg: '' }); const weatherData = ref({ city: '', weather: '', temperature: '', weatherImg: '' });
const timer = ref(); const timer = ref();
const isCurrentRoute = ref(true); const isCurrentRoute = ref(true);
const deptData = ref(); const deptData = ref();
const deviceTitle = ref();
const handleNodeClick = (node: any) => { const handleNodeClick = (node: any) => {
if (!node.children || node.children.length === 0) { if (!node.children || node.children.length === 0) {
console.log(node); console.log(node);
@ -85,6 +88,17 @@ onMounted(() => {
getDeptData(); getDeptData();
}); });
watchEffect(() => {
const dataStr = counterStore.orgStr;
if (dataStr.title != '') {
deviceTitle.value = dataStr.title;
}
});
function returnBack() {
//
router.replace('/dashboard');
}
function getWeatherData() { function getWeatherData() {
// //
getWeather().then((res: any) => { getWeather().then((res: any) => {

12
src/views/data-visual/components/hxPress.vue

@ -1057,8 +1057,8 @@ onMounted(() => {
}); });
watchEffect(() => { watchEffect(() => {
const dataStr = counterStore.orgStr; const dataStr = counterStore.orgStr;
if (dataStr != '') { if (dataStr.uuid != '') {
deviceUuid.value = dataStr; deviceUuid.value = dataStr.uuid;
getDeviceInfo(); getDeviceInfo();
} }
}); });
@ -1072,7 +1072,7 @@ function getDeviceInfo() {
mainInfoList.value = res.data.mainInfos; mainInfoList.value = res.data.mainInfos;
if (res.data.additionalInfo != null) { if (res.data.additionalInfo != null) {
currentEndTime.value = res.data.additionalInfo.endTime; currentEndTime.value = res.data.additionalInfo.endTime;
// debounceClick(); debounceClick();
} }
init(res.data); init(res.data);
} }
@ -1196,6 +1196,12 @@ function init(data: any) {
chart.setOption(options); chart.setOption(options);
console.log('结束时间:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value); console.log('结束时间:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value);
} }
onUnmounted(() => {
//setTimeout
if (timer.value !== null || timer.value !== undefined) {
clearTimeout(timer.value);
}
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.hxPressInfo { .hxPressInfo {

12
src/views/data-visual/components/hxTemp.vue

@ -551,8 +551,8 @@ onMounted(() => {
}); });
watchEffect(() => { watchEffect(() => {
const dataStr = counterStore.orgStr; const dataStr = counterStore.orgStr;
if (dataStr != '') { if (dataStr.uuid != '') {
deviceUuid.value = dataStr; deviceUuid.value = dataStr.uuid;
getDeviceInfo(); getDeviceInfo();
} }
}); });
@ -566,7 +566,7 @@ function getDeviceInfo() {
mainInfoList.value = res.data.mainInfos; mainInfoList.value = res.data.mainInfos;
if (res.data.additionalInfo != null) { if (res.data.additionalInfo != null) {
currentEndTime.value = res.data.additionalInfo.endTime; currentEndTime.value = res.data.additionalInfo.endTime;
// debounceClick(); debounceClick();
} }
init(res.data); init(res.data);
} }
@ -690,6 +690,12 @@ function init(data: any) {
chart.setOption(options); chart.setOption(options);
console.log('结束时间:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value); console.log('结束时间:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value);
} }
onUnmounted(() => {
//setTimeout
if (timer.value !== null || timer.value !== undefined) {
clearTimeout(timer.value);
}
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.hxTempInfo { .hxTempInfo {

8
src/views/data-visual/components/priTemp.vue

@ -94,11 +94,11 @@ const options = {
], ],
series: [ series: [
{ {
type: 'bar', type: 'line',
seriesLayoutBy: 'row', seriesLayoutBy: 'row',
tooltip: { tooltip: {
valueFormatter: function (value: any) { valueFormatter: function (value: any) {
return value + ' '; return value + ' °C';
} }
} }
}, },
@ -121,11 +121,11 @@ const options = {
} }
}, },
{ {
type: 'line', type: 'bar',
seriesLayoutBy: 'row', seriesLayoutBy: 'row',
tooltip: { tooltip: {
valueFormatter: function (value: any) { valueFormatter: function (value: any) {
return value + ' °C'; return value + ' ';
} }
} }
} }

59
src/views/data-visual/components/table.vue

@ -55,22 +55,12 @@
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { import { VxeTableEvents, VxeColumnPropTypes, VxePagerEvents } from 'vxe-table';
VxeGridProps,
VxeGridInstance,
VxeTableEvents,
VxeColumnPropTypes,
VXETable,
VxeFormInstance,
VxeFormPropTypes,
VxeFormEvents,
VxeTablePropTypes,
VxePagerEvents
} from 'vxe-table';
import { getTableHeader } from '@/api/table/list'; import { getTableHeader } from '@/api/table/list';
import { getTableData } from '@/api/dataVisual/index'; import { getTableData } from '@/api/dataVisual/index';
import { TableVo } from '@/api/table/types'; import { TableVo } from '@/api/table/types';
import { tableStore } from '@/store/modules/table'; import { tableStore } from '@/store/modules/table';
import { debounce } from '@/utils/index';
import useStorage from '@/utils/useStorage'; import useStorage from '@/utils/useStorage';
import useCounter from '@/store/modules/date'; import useCounter from '@/store/modules/date';
const counterStore = useCounter(); const counterStore = useCounter();
@ -81,6 +71,8 @@ const tableColumn = ref([]);
const tableData = ref<TableVo[]>(); const tableData = ref<TableVo[]>();
const deptId = ref('208'); const deptId = ref('208');
const tableBorder = ref(false); const tableBorder = ref(false);
const timer = ref();
const isCurrentRoute = ref(true);
const tablePage = reactive({ const tablePage = reactive({
total: 0, total: 0,
currentPage: 1, currentPage: 1,
@ -162,23 +154,53 @@ function tableDatas() {
// tableData.value=oldData // tableData.value=oldData
tableData.value = res.rows; tableData.value = res.rows;
if (res.rows.length != 0) { if (res.rows.length != 0) {
counterStore.orgStore(res.rows[0].deviceuuid.uuid); counterStore.orgStore(res.rows[0].deviceuuid);
} else { } else {
counterStore.orgStore('0'); counterStore.orgStore({
title: '',
uuid: ''
});
} }
tableStoreCounter.tableDataAction(res.rows); tableStoreCounter.tableDataAction(res.rows);
tablePage.total = res.total; tablePage.total = res.total;
// gridOptions.data = res.data; // gridOptions.data = res.data;
loadingShow.value = false; loadingShow.value = false;
tableDataClick();
console.log('接口结束:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value); console.log('接口结束:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value);
} }
}); });
} }
const tableDataClick = debounce(() => {
tableDataPolling();
}, 10000);
function tableDataPolling() {
//
const params = {
pageNum: tablePage.currentPage,
pageSize: tablePage.pageSize,
orgCode: deptId.value
};
getTableData(params).then((res: any) => {
if (res.code === 200) {
if (isCurrentRoute.value) {
timer.value = setTimeout(async () => {
await (timer.value && clearTimeout(timer.value));
await tableDataPolling();
}, 10000);
}
tableData.value = res.rows;
tableStoreCounter.tableDataAction(res.rows);
tablePage.total = res.total;
}
});
}
const cellDBLClickEvent: VxeTableEvents.CellDblclick<TableVo> = ({ row, column }) => { const cellDBLClickEvent: VxeTableEvents.CellDblclick<TableVo> = ({ row, column }) => {
// //
console.log('cellData--', row, column); console.log('cellData--', row, column);
counterStore.orgStore(row.deviceuuid.uuid); counterStore.orgStore(row.deviceuuid);
}; };
const formatRole: VxeColumnPropTypes.Formatter<HeaderVo> = ({ cellValue }) => { const formatRole: VxeColumnPropTypes.Formatter<HeaderVo> = ({ cellValue }) => {
// //
@ -190,6 +212,13 @@ const formatRole: VxeColumnPropTypes.Formatter<HeaderVo> = ({ cellValue }) => {
console.log('渲染完成:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value); console.log('渲染完成:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value);
return cellData; return cellData;
}; };
onUnmounted(() => {
//setTimeout
if (timer.value !== null || timer.value !== undefined) {
clearTimeout(timer.value);
}
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.tableInfo { .tableInfo {

Loading…
Cancel
Save