Compare commits
2 Commits
a790be4474
...
47d4d1055c
Author | SHA1 | Date |
---|---|---|
|
47d4d1055c | |
|
39afb91f8f |
|
@ -7,10 +7,16 @@ export const css = (mode): CSSOptions => {
|
||||||
const plugins: Plugin[] = [usePostCssPxToViewport8plugin(mode)];
|
const plugins: Plugin[] = [usePostCssPxToViewport8plugin(mode)];
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
preprocessorOptions: {
|
||||||
|
scss: {
|
||||||
|
additionalData: `@use "@/assets/styles/minix/sidebar" as *;`,
|
||||||
|
api: 'modern-compiler',
|
||||||
|
},
|
||||||
|
},
|
||||||
postcss: {
|
postcss: {
|
||||||
plugins: plugins.filter(Boolean),
|
plugins: plugins.filter(Boolean),
|
||||||
},
|
},
|
||||||
};
|
} as CSSOptions;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 是否启用px转换vw插件 */
|
/** 是否启用px转换vw插件 */
|
||||||
|
|
|
@ -1,25 +1,18 @@
|
||||||
.business-supervision {
|
@mixin view-style-default($sidebar-width,$content-width) {
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
padding: 19px 25px;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
&__sidebar {
|
&__sidebar {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
width: 530px;
|
width: $sidebar-width;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
|
||||||
&-item {
|
&-item {
|
||||||
padding: 9px 15px;
|
padding: 9px 15px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: rgba(14, 95, 255, 0.20);
|
background: rgba(14, 95, 255, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
&-tag {
|
&-tag {
|
||||||
|
@ -51,10 +44,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
&__content {
|
&__content {
|
||||||
width: 759px;
|
width: $content-width;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { TimeSelectType } from '@/components/TimeSelect/type';
|
import { TimeSelectType } from '@/components/PanelItem/TimeSelect/type';
|
||||||
|
|
||||||
defineProps({
|
defineProps({
|
||||||
timeList: Array<TimeSelectType>,
|
timeList: Array<TimeSelectType>,
|
|
@ -1,4 +1,3 @@
|
||||||
import Layout from '@/layout/index.vue';
|
|
||||||
import type { RouteConfigsTable } from '@/types/router/Route';
|
import type { RouteConfigsTable } from '@/types/router/Route';
|
||||||
|
|
||||||
const routes: RouteConfigsTable[] = [
|
const routes: RouteConfigsTable[] = [
|
||||||
|
@ -8,30 +7,23 @@ const routes: RouteConfigsTable[] = [
|
||||||
component: () => import('@/views/welcome/index.vue'),
|
component: () => import('@/views/welcome/index.vue'),
|
||||||
meta: { transition: 'fade', title: '后台管理系统大标题' },
|
meta: { transition: 'fade', title: '后台管理系统大标题' },
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
|
||||||
path: '/business-supervision',
|
|
||||||
name: 'manageForms',
|
|
||||||
component: () => import('@/views/business-supervision/index.vue'),
|
|
||||||
meta: { title: '智慧经营监管中心', subtitle: '园区经营可视化' },
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
{
|
||||||
path: '/smart-park',
|
path: '/smart-park',
|
||||||
name: 'smartParking',
|
name: 'smartPark',
|
||||||
component: () => import('@/views/smart-park/index.vue'),
|
component: () => import('@/views/smart-park/index.vue'),
|
||||||
meta: { title: '智慧智能监管中心', subtitle: '车辆监控中心' },
|
meta: { title: '智慧智能监管中心', subtitle: '车辆监控中心' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/redirect',
|
path: '/business-supervision',
|
||||||
component: Layout,
|
name: 'businessSupervision',
|
||||||
meta: { hidden: true },
|
component: () => import('@/views/business-supervision/index.vue'),
|
||||||
children: [
|
meta: { title: '智慧经营监管中心', subtitle: '园区经营可视化' },
|
||||||
{
|
|
||||||
path: '/redirect/:path(.*)',
|
|
||||||
component: () => import('@/views/redirect/index.vue'),
|
|
||||||
},
|
},
|
||||||
],
|
{
|
||||||
|
path: '/big-data',
|
||||||
|
name: 'bigData',
|
||||||
|
component: () => import('@/views/big-data/index.vue'),
|
||||||
|
meta: { title: '大数据可视化中心', subtitle: '大数据可视化' },
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,20 @@ const routes: RouteRecordRaw[] = [
|
||||||
name: 'layout',
|
name: 'layout',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
redirect: 'welcome',
|
redirect: 'welcome',
|
||||||
children: [...home],
|
children: [
|
||||||
|
...home,
|
||||||
|
{
|
||||||
|
path: '/redirect',
|
||||||
|
component: Layout,
|
||||||
|
meta: { hidden: true },
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: '/:path(.*)',
|
||||||
|
component: () => import('@/views/redirect/index.vue'),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/redirect',
|
path: '/redirect',
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
import { useEventListener } from '@vueuse/core';
|
||||||
|
import type { EChartsType } from 'echarts';
|
||||||
|
|
||||||
|
/** 通用重置图表样式 */
|
||||||
|
export const debounceChart = (myChart: EChartsType) => {
|
||||||
|
useEventListener(
|
||||||
|
window,
|
||||||
|
'resize',
|
||||||
|
() => {
|
||||||
|
myChart.resize();
|
||||||
|
},
|
||||||
|
500
|
||||||
|
);
|
||||||
|
};
|
|
@ -0,0 +1,11 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
top
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<script lang="ts" setup></script>
|
||||||
|
|
||||||
|
<template>top</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
top
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import ContentBottom from '@/views/big-data/components/big-data-content/components/content-bottom.vue';
|
||||||
|
import ContentMiddle from '@/views/big-data/components/big-data-content/components/content-middle.vue';
|
||||||
|
import ContentTop from '@/views/big-data/components/big-data-content/components/content-top.vue';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="big-data__content">
|
||||||
|
<content-top />
|
||||||
|
<content-middle />
|
||||||
|
<content-bottom />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<script lang="ts" setup></script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="big-data__sidebar-item h-[272px]">
|
||||||
|
<div class="flex-x-between">
|
||||||
|
<div class="big-data__sidebar-title">
|
||||||
|
<h1>规模效益</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<script lang="ts" setup></script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="big-data__sidebar-item h-[389px]">
|
||||||
|
<div class="flex-x-between">
|
||||||
|
<div class="big-data__sidebar-title">
|
||||||
|
<h1>规模效益</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,66 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
|
import TimeSelect from '@/components/PanelItem/TimeSelect/index.vue';
|
||||||
|
import { TimeSelectType } from '@/components/PanelItem/TimeSelect/type';
|
||||||
|
|
||||||
|
const timeList = ref<TimeSelectType[]>([
|
||||||
|
{ label: '2020.09', value: '2021' },
|
||||||
|
{ label: '2020.09', value: '2021' },
|
||||||
|
{ label: '2020.09', value: '2021' },
|
||||||
|
]);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="big-data__sidebar-item h-[200px]">
|
||||||
|
<div class="flex-x-between">
|
||||||
|
<div class="big-data__sidebar-title">
|
||||||
|
<h1>规模效益</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<TimeSelect :time-list="timeList" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ul class="big-data__body">
|
||||||
|
<li class="big-data__body-item">
|
||||||
|
<div class="big-data__body-title">
|
||||||
|
<h1>进出口总值</h1>
|
||||||
|
<span>
|
||||||
|
总值增幅
|
||||||
|
<em>+123%</em>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.big-data__body {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
margin: 18px 15px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-title {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
em {
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import LeftBottom from '@/views/big-data/components/big-data-left/components/left-bottom.vue';
|
||||||
|
import LeftMiddle from '@/views/big-data/components/big-data-left/components/left-middle.vue';
|
||||||
|
import LeftTop from '@/views/big-data/components/big-data-left/components/left-top.vue';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="big-data__sidebar">
|
||||||
|
<left-top />
|
||||||
|
<left-middle />
|
||||||
|
<left-bottom />
|
||||||
|
</div>
|
||||||
|
</template>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
top
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
top
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,28 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
|
import TimeSelect from '@/components/PanelItem/TimeSelect/index.vue';
|
||||||
|
import { TimeSelectType } from '@/components/PanelItem/TimeSelect/type';
|
||||||
|
|
||||||
|
const timeList = ref<TimeSelectType[]>([
|
||||||
|
{ label: '2020.09', value: '2021' },
|
||||||
|
{ label: '2020.09', value: '2021' },
|
||||||
|
{ label: '2020.09', value: '2021' },
|
||||||
|
]);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="big-data__sidebar-item h-[200px]">
|
||||||
|
<div class="flex-x-between">
|
||||||
|
<div class="big-data__sidebar-title">
|
||||||
|
<h1>规模效益</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<TimeSelect :time-list="timeList" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import RightBottom from '@/views/big-data/components/big-data-right/components/right-bottom.vue';
|
||||||
|
import RightMiddle from '@/views/big-data/components/big-data-right/components/right-middle.vue';
|
||||||
|
import RightTop from '@/views/big-data/components/big-data-right/components/right-top.vue';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="big-data__sidebar">
|
||||||
|
<right-top />
|
||||||
|
<right-middle />
|
||||||
|
<right-bottom />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import BigDataContent from '@/views/big-data/components/big-data-content/index.vue';
|
||||||
|
import BigDataLeft from '@/views/big-data/components/big-data-left/index.vue';
|
||||||
|
import BigDataRight from '@/views/big-data/components/big-data-right/index.vue';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="big-data">
|
||||||
|
<big-data-left />
|
||||||
|
<big-data-content />
|
||||||
|
<big-data-right />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.big-data {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 19px 25px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
@include view-style-default(530px, 748px);
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,10 +1,10 @@
|
||||||
import 'echarts/lib/component/dataZoom';
|
import 'echarts/lib/component/dataZoom';
|
||||||
|
|
||||||
import { useDebounceFn, useEventListener } from '@vueuse/core';
|
|
||||||
import type { EChartsOption } from 'echarts';
|
import type { EChartsOption } from 'echarts';
|
||||||
import { type Ref, ref } from 'vue';
|
import { type Ref, ref } from 'vue';
|
||||||
|
|
||||||
import echarts from '@/plugins/echarts';
|
import echarts from '@/plugins/echarts';
|
||||||
|
import { debounceChart } from '@/utils/chart';
|
||||||
|
|
||||||
const option = ref<EChartsOption>();
|
const option = ref<EChartsOption>();
|
||||||
option.value = {
|
option.value = {
|
||||||
|
@ -69,10 +69,7 @@ export const renderEcharts = (element: Ref<HTMLDivElement>) => {
|
||||||
devicePixelRatio: window.devicePixelRatio,
|
devicePixelRatio: window.devicePixelRatio,
|
||||||
});
|
});
|
||||||
|
|
||||||
const debouncedFn = useDebounceFn(() => {
|
debounceChart(myChart);
|
||||||
myChart.resize();
|
|
||||||
}, 1000);
|
|
||||||
useEventListener(window, 'resize', debouncedFn);
|
|
||||||
|
|
||||||
myChart.setOption(option.value);
|
myChart.setOption(option.value);
|
||||||
};
|
};
|
|
@ -1,10 +1,10 @@
|
||||||
import 'echarts/lib/component/dataZoom';
|
import 'echarts/lib/component/dataZoom';
|
||||||
|
|
||||||
import { useDebounceFn, useEventListener } from '@vueuse/core';
|
|
||||||
import type { EChartsOption } from 'echarts';
|
import type { EChartsOption } from 'echarts';
|
||||||
import { type Ref, ref } from 'vue';
|
import { type Ref, ref } from 'vue';
|
||||||
|
|
||||||
import echarts from '@/plugins/echarts';
|
import echarts from '@/plugins/echarts';
|
||||||
|
import { debounceChart } from '@/utils/chart';
|
||||||
|
|
||||||
const option = ref<EChartsOption>();
|
const option = ref<EChartsOption>();
|
||||||
option.value = {
|
option.value = {
|
||||||
|
@ -90,10 +90,7 @@ export const renderEcharts = (element: Ref<HTMLDivElement>) => {
|
||||||
devicePixelRatio: window.devicePixelRatio,
|
devicePixelRatio: window.devicePixelRatio,
|
||||||
});
|
});
|
||||||
|
|
||||||
const debouncedFn = useDebounceFn(() => {
|
debounceChart(myChart);
|
||||||
myChart.resize();
|
|
||||||
}, 1000);
|
|
||||||
useEventListener(window, 'resize', debouncedFn);
|
|
||||||
|
|
||||||
myChart.setOption(option.value);
|
myChart.setOption(option.value);
|
||||||
};
|
};
|
|
@ -1,10 +1,10 @@
|
||||||
import 'echarts/lib/component/dataZoom';
|
import 'echarts/lib/component/dataZoom';
|
||||||
|
|
||||||
import { useDebounceFn, useEventListener } from '@vueuse/core';
|
|
||||||
import type { EChartsOption } from 'echarts';
|
import type { EChartsOption } from 'echarts';
|
||||||
import { type Ref, ref } from 'vue';
|
import { type Ref, ref } from 'vue';
|
||||||
|
|
||||||
import echarts from '@/plugins/echarts';
|
import echarts from '@/plugins/echarts';
|
||||||
|
import { debounceChart } from '@/utils/chart';
|
||||||
|
|
||||||
const option = ref<EChartsOption>();
|
const option = ref<EChartsOption>();
|
||||||
option.value = {
|
option.value = {
|
||||||
|
@ -50,10 +50,7 @@ export const renderEcharts = (element: Ref<HTMLDivElement>) => {
|
||||||
devicePixelRatio: window.devicePixelRatio,
|
devicePixelRatio: window.devicePixelRatio,
|
||||||
});
|
});
|
||||||
|
|
||||||
const debouncedFn = useDebounceFn(() => {
|
debounceChart(myChart);
|
||||||
myChart.resize();
|
|
||||||
}, 1000);
|
|
||||||
useEventListener(window, 'resize', debouncedFn);
|
|
||||||
|
|
||||||
myChart.setOption(option.value);
|
myChart.setOption(option.value);
|
||||||
};
|
};
|
|
@ -1,9 +1,9 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
|
|
||||||
import TimeSelect from '@/components/TimeSelect/index.vue';
|
import TimeSelect from '@/components/PanelItem/TimeSelect/index.vue';
|
||||||
import { TimeSelectType } from '@/components/TimeSelect/type';
|
import { TimeSelectType } from '@/components/PanelItem/TimeSelect/type';
|
||||||
import { renderEcharts } from '@/views/business-supervision/components/business-supervision-content/charts/contentBottom';
|
import { renderEcharts } from '@/views/business-supervision/charts/contentBottom';
|
||||||
|
|
||||||
const chartYear = ref();
|
const chartYear = ref();
|
||||||
|
|
||||||
|
|
|
@ -11,5 +11,3 @@ import ContentTop from '@/views/business-supervision/components/business-supervi
|
||||||
<content-bottom />
|
<content-bottom />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped></style>
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
|
|
||||||
import { renderEcharts } from '@/views/business-supervision/components/business-supervision-left/charts/sidebarMiddle';
|
import { renderEcharts } from '@/views/business-supervision/charts/leftSidebarMiddle';
|
||||||
|
|
||||||
const chartPie = ref<HTMLDivElement>();
|
const chartPie = ref<HTMLDivElement>();
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<script lang="tsx" setup>
|
<script lang="tsx" setup>
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
|
|
||||||
import { displayContent } from '@/components/CommonItem/DigitalNumber';
|
import { displayContent } from '@/components/PanelItem/DigitalNumber';
|
||||||
import TimeSelect from '@/components/TimeSelect/index.vue';
|
import TimeSelect from '@/components/PanelItem/TimeSelect/index.vue';
|
||||||
import { TimeSelectType } from '@/components/TimeSelect/type';
|
import { TimeSelectType } from '@/components/PanelItem/TimeSelect/type';
|
||||||
import { renderEcharts } from '@/views/business-supervision/components/business-supervision-left/charts/sidebarTop';
|
import { renderEcharts } from '@/views/business-supervision/charts/leftSidebarTop';
|
||||||
|
|
||||||
const chartProgress = ref<HTMLDivElement>();
|
const chartProgress = ref<HTMLDivElement>();
|
||||||
const money = '1386114';
|
const money = '1386114';
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
|
|
||||||
import BottomChart from '@/views/business-supervision/components/business-supervision-right/chart/bottom-chart.vue';
|
import BottomChart from '@/views/business-supervision/charts/right-bottom-chart.vue';
|
||||||
|
|
||||||
const charData1 = ref(Math.round(Math.random() * 100));
|
const charData1 = ref(Math.round(Math.random() * 100));
|
||||||
const charData2 = ref(Math.round(Math.random() * 100));
|
const charData2 = ref(Math.round(Math.random() * 100));
|
||||||
|
@ -99,6 +99,10 @@ onMounted(() => {
|
||||||
&-change {
|
&-change {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0 0 0 9px;
|
margin: 0 0 0 9px;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
|
|
||||||
import TimeSelect from '@/components/TimeSelect/index.vue';
|
import TimeSelect from '@/components/PanelItem/TimeSelect/index.vue';
|
||||||
import { TimeSelectType } from '@/components/TimeSelect/type';
|
import { TimeSelectType } from '@/components/PanelItem/TimeSelect/type';
|
||||||
|
|
||||||
const timeList = ref<TimeSelectType[]>([
|
const timeList = ref<TimeSelectType[]>([
|
||||||
{ label: '2020.09', value: '2021' },
|
{ label: '2020.09', value: '2021' },
|
||||||
|
|
|
@ -12,6 +12,15 @@ import BusinessSupervisionRight from '@/views/business-supervision/components/bu
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
@import 'style.scss';
|
.business-supervision {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 19px 25px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
@include view-style-default(530px, 759px);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -11,5 +11,5 @@ const router = useRouter();
|
||||||
const { params, query } = route;
|
const { params, query } = route;
|
||||||
const { path } = params;
|
const { path } = params;
|
||||||
|
|
||||||
router.replace({ path: '/' + path, query });
|
router.replace({ path: '/', query });
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import 'echarts/lib/component/dataZoom';
|
import 'echarts/lib/component/dataZoom';
|
||||||
|
|
||||||
import { useDebounceFn, useEventListener } from '@vueuse/core';
|
|
||||||
import type { EChartsOption } from 'echarts';
|
import type { EChartsOption } from 'echarts';
|
||||||
import { type Ref, ref } from 'vue';
|
import { type Ref, ref } from 'vue';
|
||||||
|
|
||||||
import echarts from '@/plugins/echarts';
|
import echarts from '@/plugins/echarts';
|
||||||
|
import { debounceChart } from '@/utils/chart';
|
||||||
|
|
||||||
const option = ref<EChartsOption>();
|
const option = ref<EChartsOption>();
|
||||||
option.value = {
|
option.value = {
|
||||||
|
@ -102,10 +102,7 @@ export const renderEcharts = (element: Ref<HTMLDivElement>) => {
|
||||||
devicePixelRatio: window.devicePixelRatio,
|
devicePixelRatio: window.devicePixelRatio,
|
||||||
});
|
});
|
||||||
|
|
||||||
const debouncedFn = useDebounceFn(() => {
|
debounceChart(myChart);
|
||||||
myChart.resize();
|
|
||||||
}, 1000);
|
|
||||||
useEventListener(window, 'resize', debouncedFn);
|
|
||||||
|
|
||||||
myChart.setOption(option.value);
|
myChart.setOption(option.value);
|
||||||
};
|
};
|
|
@ -15,7 +15,7 @@ defineProps({
|
||||||
<img
|
<img
|
||||||
alt="arrow-item"
|
alt="arrow-item"
|
||||||
class="float-left h-[16px]"
|
class="float-left h-[16px]"
|
||||||
src="../../../../../../../assets/images/smart-park/arrow/arrow-item.png"
|
src="@/assets/images/smart-park/arrow/arrow-item.png"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -11,22 +11,22 @@
|
||||||
<!-- 汽车列表 -->
|
<!-- 汽车列表 -->
|
||||||
<ul class="mt-[32px]">
|
<ul class="mt-[32px]">
|
||||||
<li class="smart-park__sidebar--left-item">
|
<li class="smart-park__sidebar--left-item">
|
||||||
<img alt="car-1" src="../../../../../../assets/images/smart-park/car/car-1.png" />
|
<img alt="car-1" src="@/assets/images/smart-park/car/car-1.png" />
|
||||||
<p>入卡口(西北门)</p>
|
<p>入卡口(西北门)</p>
|
||||||
<span class="dashed-circle c-primary-secondary border-b-primary-secondary">畅通</span>
|
<span class="dashed-circle c-primary-secondary border-b-primary-secondary">畅通</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="smart-park__sidebar--left-item">
|
<li class="smart-park__sidebar--left-item">
|
||||||
<img alt="car-1" src="../../../../../../assets/images/smart-park/car/car-1.png" />
|
<img alt="car-1" src="@/assets/images/smart-park/car/car-1.png" />
|
||||||
<p>入卡口(东北门)</p>
|
<p>入卡口(东北门)</p>
|
||||||
<span class="dashed-circle c-primary-secondary border-b-primary-secondary">畅通</span>
|
<span class="dashed-circle c-primary-secondary border-b-primary-secondary">畅通</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="smart-park__sidebar--left-item">
|
<li class="smart-park__sidebar--left-item">
|
||||||
<img alt="car-1" src="../../../../../../assets/images/smart-park/car/car-2.png" />
|
<img alt="car-1" src="@/assets/images/smart-park/car/car-2.png" />
|
||||||
<p>入卡口(东北门)</p>
|
<p>入卡口(东北门)</p>
|
||||||
<span class="dashed-circle c-warning border-b-warning">拥堵</span>
|
<span class="dashed-circle c-warning border-b-warning">拥堵</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="smart-park__sidebar--left-item">
|
<li class="smart-park__sidebar--left-item">
|
||||||
<img alt="car-1" src="../../../../../../assets/images/smart-park/car/car-1.png" />
|
<img alt="car-1" src="@/assets/images/smart-park/car/car-1.png" />
|
||||||
<p>入卡口(东南门)</p>
|
<p>入卡口(东南门)</p>
|
||||||
<span class="dashed-circle c-primary-secondary border-b-primary-secondary">畅通</span>
|
<span class="dashed-circle c-primary-secondary border-b-primary-secondary">畅通</span>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
|
|
||||||
import { renderEcharts } from '@/views/smart-park/components/smart-park-content/components/smart-park-sidebar-right/charts/charts';
|
import { renderEcharts } from '@/views/smart-park/charts/right-sidebar';
|
||||||
|
|
||||||
const weekDataChart = ref<HTMLDivElement>();
|
const weekDataChart = ref<HTMLDivElement>();
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,6 @@ import SmartPartFooter from '@/views/smart-park/components/smart-park-footer/ind
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
@import 'style.scss';
|
@use 'style.scss';
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -7,26 +7,23 @@ const router = useRouter();
|
||||||
<template>
|
<template>
|
||||||
<ul class="welcome__content-list">
|
<ul class="welcome__content-list">
|
||||||
<li @click="router.push('/smart-park')">
|
<li @click="router.push('/smart-park')">
|
||||||
<img alt="car" src="../../../../assets/images/welcome/icon/center/car.png" />
|
<img alt="car" src="@/assets/images/welcome/icon/center/car.png" />
|
||||||
<span>智慧停车</span>
|
<span>智慧停车</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<img
|
<img alt="distribution" src="@/assets/images/welcome/icon/center/distribution.png" />
|
||||||
alt="distribution"
|
|
||||||
src="../../../../assets/images/welcome/icon/center/distribution.png"
|
|
||||||
/>
|
|
||||||
<span>智慧配送</span>
|
<span>智慧配送</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<img alt="muck" src="../../../../assets/images/welcome/icon/center/muck.png" />
|
<img alt="muck" src="@/assets/images/welcome/icon/center/muck.png" />
|
||||||
<span>智慧渣土</span>
|
<span>智慧渣土</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<img alt="clean-city" src="../../../../assets/images/welcome/icon/center/clean-city.png" />
|
<img alt="clean-city" src="@/assets/images/welcome/icon/center/clean-city.png" />
|
||||||
<span>智慧洁城</span>
|
<span>智慧洁城</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<img alt="lamp" src="../../../../assets/images/welcome/icon/center/lamp.png" />
|
<img alt="lamp" src="@/assets/images/welcome/icon/center/lamp.png" />
|
||||||
<span>智慧路灯</span>
|
<span>智慧路灯</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -3,10 +3,10 @@ import ContentList from '@/views/welcome/components/welcome-content/content-list
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="welcome__content flex-y-around">
|
<div class="flex-y-around">
|
||||||
<div class="mt-[158px]">
|
<div class="mt-[158px]">
|
||||||
<p>
|
<p>
|
||||||
<img alt="welcome-bg" src="../../../../assets/images/welcome/icon/welcome.png" />
|
<img alt="welcome-bg" src="@/assets/images/welcome/icon/welcome.png" />
|
||||||
<i>xxxx</i>
|
<i>xxxx</i>
|
||||||
你好 欢迎使用xxxxxxxzz
|
你好 欢迎使用xxxxxxxzz
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -8,7 +8,7 @@ const list = ref([
|
||||||
{ icon: 'i-material-symbols:home-and-garden', name: '园区', target: '/' },
|
{ icon: 'i-material-symbols:home-and-garden', name: '园区', target: '/' },
|
||||||
{ icon: 'i-fa:building', name: '园区', target: '/' },
|
{ icon: 'i-fa:building', name: '园区', target: '/' },
|
||||||
{ icon: 'i-fa-solid:chart-line', name: '经营', target: '/business-supervision' },
|
{ icon: 'i-fa-solid:chart-line', name: '经营', target: '/business-supervision' },
|
||||||
{ icon: 'i-ri:community-fill', name: '园区', target: '/' },
|
{ icon: 'i-eos-icons:big-data-outlined', name: '大数据', target: '/big-data' },
|
||||||
]);
|
]);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,6 @@ import WelcomeFooter from '@/views/welcome/components/welcome-footer.vue';
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
@import 'style.scss';
|
@use 'style.scss';
|
||||||
</style>
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue