hc-energy-ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,104 @@
1
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
2
+ chartData: {
3
+ type: ObjectConstructor;
4
+ default: () => {
5
+ xAxisData: string[];
6
+ yAxisData: number[][];
7
+ };
8
+ };
9
+ typeData: {
10
+ type: () => Array<{
11
+ name: string;
12
+ color: string;
13
+ unit?: string;
14
+ }>;
15
+ default: () => never[];
16
+ };
17
+ unit: {
18
+ type: StringConstructor;
19
+ default: string;
20
+ };
21
+ xUnit: {
22
+ type: StringConstructor;
23
+ default: string;
24
+ };
25
+ left: {
26
+ type: NumberConstructor;
27
+ default: number;
28
+ };
29
+ right: {
30
+ type: NumberConstructor;
31
+ default: number;
32
+ };
33
+ bottom: {
34
+ type: NumberConstructor;
35
+ default: number;
36
+ };
37
+ unitLeft: {
38
+ type: NumberConstructor;
39
+ default: number;
40
+ };
41
+ legendLeft: {
42
+ type: NumberConstructor;
43
+ default: number;
44
+ };
45
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
46
+ chartData: {
47
+ type: ObjectConstructor;
48
+ default: () => {
49
+ xAxisData: string[];
50
+ yAxisData: number[][];
51
+ };
52
+ };
53
+ typeData: {
54
+ type: () => Array<{
55
+ name: string;
56
+ color: string;
57
+ unit?: string;
58
+ }>;
59
+ default: () => never[];
60
+ };
61
+ unit: {
62
+ type: StringConstructor;
63
+ default: string;
64
+ };
65
+ xUnit: {
66
+ type: StringConstructor;
67
+ default: string;
68
+ };
69
+ left: {
70
+ type: NumberConstructor;
71
+ default: number;
72
+ };
73
+ right: {
74
+ type: NumberConstructor;
75
+ default: number;
76
+ };
77
+ bottom: {
78
+ type: NumberConstructor;
79
+ default: number;
80
+ };
81
+ unitLeft: {
82
+ type: NumberConstructor;
83
+ default: number;
84
+ };
85
+ legendLeft: {
86
+ type: NumberConstructor;
87
+ default: number;
88
+ };
89
+ }>> & Readonly<{}>, {
90
+ left: number;
91
+ chartData: Record<string, any>;
92
+ typeData: {
93
+ name: string;
94
+ color: string;
95
+ unit?: string | undefined;
96
+ }[];
97
+ unit: string;
98
+ xUnit: string;
99
+ right: number;
100
+ bottom: number;
101
+ unitLeft: number;
102
+ legendLeft: number;
103
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
104
+ export default _default;
@@ -0,0 +1,24 @@
1
+ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
2
+ title: string;
3
+ mountNum?: string | undefined;
4
+ }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
5
+ title: string;
6
+ mountNum?: string | undefined;
7
+ }>>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>, {
8
+ default?(_: {}): any;
9
+ }>;
10
+ export default _default;
11
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
12
+ type __VLS_TypePropsToRuntimeProps<T> = {
13
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
14
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
15
+ } : {
16
+ type: import('vue').PropType<T[K]>;
17
+ required: true;
18
+ };
19
+ };
20
+ type __VLS_WithTemplateSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -0,0 +1,100 @@
1
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
2
+ activeTime?: string | undefined;
3
+ time?: (string | Date)[] | undefined;
4
+ day?: (string | Date)[] | undefined;
5
+ month?: (string | Date)[] | undefined;
6
+ showLj?: boolean | undefined;
7
+ showY?: boolean | undefined;
8
+ showM?: boolean | undefined;
9
+ showD?: boolean | undefined;
10
+ showTime?: boolean | undefined;
11
+ activeTimeModel1?: string | undefined;
12
+ typeNumber?: string | undefined;
13
+ titleOne?: string | undefined;
14
+ }>, {
15
+ activeTime: string;
16
+ showLj: boolean;
17
+ showY: boolean;
18
+ showM: boolean;
19
+ showD: boolean;
20
+ showTime: boolean;
21
+ typeNumber: string;
22
+ time: () => never[];
23
+ day: () => never[];
24
+ month: () => never[];
25
+ titleOne: string;
26
+ activeTimeModel1: string;
27
+ }>>, {
28
+ onTimeFn: (time: string) => void;
29
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
30
+ "update:activeTime": (value: string) => void;
31
+ "update:time": (value: (string | Date)[]) => void;
32
+ "update:day": (value: (string | Date)[]) => void;
33
+ "update:month": (value: (string | Date)[]) => void;
34
+ "update:activeTimeModel1": (value: string) => void;
35
+ dateChange: (value: (string | Date)[] | null) => void;
36
+ }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
37
+ activeTime?: string | undefined;
38
+ time?: (string | Date)[] | undefined;
39
+ day?: (string | Date)[] | undefined;
40
+ month?: (string | Date)[] | undefined;
41
+ showLj?: boolean | undefined;
42
+ showY?: boolean | undefined;
43
+ showM?: boolean | undefined;
44
+ showD?: boolean | undefined;
45
+ showTime?: boolean | undefined;
46
+ activeTimeModel1?: string | undefined;
47
+ typeNumber?: string | undefined;
48
+ titleOne?: string | undefined;
49
+ }>, {
50
+ activeTime: string;
51
+ showLj: boolean;
52
+ showY: boolean;
53
+ showM: boolean;
54
+ showD: boolean;
55
+ showTime: boolean;
56
+ typeNumber: string;
57
+ time: () => never[];
58
+ day: () => never[];
59
+ month: () => never[];
60
+ titleOne: string;
61
+ activeTimeModel1: string;
62
+ }>>> & Readonly<{
63
+ "onUpdate:activeTime"?: ((value: string) => any) | undefined;
64
+ "onUpdate:time"?: ((value: (string | Date)[]) => any) | undefined;
65
+ "onUpdate:day"?: ((value: (string | Date)[]) => any) | undefined;
66
+ "onUpdate:month"?: ((value: (string | Date)[]) => any) | undefined;
67
+ "onUpdate:activeTimeModel1"?: ((value: string) => any) | undefined;
68
+ onDateChange?: ((value: (string | Date)[] | null) => any) | undefined;
69
+ }>, {
70
+ time: (string | Date)[];
71
+ month: (string | Date)[];
72
+ activeTime: string;
73
+ day: (string | Date)[];
74
+ showLj: boolean;
75
+ showY: boolean;
76
+ showM: boolean;
77
+ showD: boolean;
78
+ showTime: boolean;
79
+ activeTimeModel1: string;
80
+ typeNumber: string;
81
+ titleOne: string;
82
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
83
+ export default _default;
84
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
85
+ type __VLS_TypePropsToRuntimeProps<T> = {
86
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
87
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
88
+ } : {
89
+ type: import('vue').PropType<T[K]>;
90
+ required: true;
91
+ };
92
+ };
93
+ type __VLS_WithDefaults<P, D> = {
94
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
95
+ default: D[K];
96
+ }> : P[K];
97
+ };
98
+ type __VLS_Prettify<T> = {
99
+ [K in keyof T]: T[K];
100
+ } & {};
@@ -0,0 +1,40 @@
1
+ export type EnergySeriesItem = {
2
+ name: string;
3
+ dataPoints?: Array<{
4
+ timeLabel: string;
5
+ energyKwh: number | null;
6
+ }>;
7
+ };
8
+ export type EnergyDashboardData = {
9
+ summary?: Record<string, number>;
10
+ series?: EnergySeriesItem[];
11
+ };
12
+ export type ChartViewModel = {
13
+ typeData: Array<{
14
+ name: string;
15
+ color: string;
16
+ unit?: string;
17
+ }>;
18
+ chartData: {
19
+ xAxisData: string[];
20
+ yAxisData: Array<Array<number | null>>;
21
+ };
22
+ xUnit: string;
23
+ };
24
+ /** 组装接口查询参数 */
25
+ export declare function buildEnergyQueryParams(info: {
26
+ activeTime1: string;
27
+ time1: Array<string | Date>;
28
+ day1: Array<string | Date>;
29
+ month1: Array<string | Date>;
30
+ }): {
31
+ selectedDate: string | Date;
32
+ timeDimension: string;
33
+ };
34
+ /** 将接口返回转成图表展示数据 */
35
+ export declare function transformEnergyDashboard(data: EnergyDashboardData | null | undefined, options: {
36
+ activeTime: string;
37
+ typeIndex: number;
38
+ unit: string;
39
+ monthDate?: Date | string;
40
+ }): ChartViewModel;
@@ -0,0 +1,38 @@
1
+ export type EnergyTypeItem = {
2
+ label: string;
3
+ value: string;
4
+ unit: string;
5
+ };
6
+ export type TypeListItem = {
7
+ name: string;
8
+ unit: string;
9
+ value: string;
10
+ date?: string;
11
+ };
12
+ /** 筛选项状态:父组件用一个对象 v-model:query 绑定即可 */
13
+ export type EnergyQueryState = {
14
+ activeTime: string;
15
+ time: Array<string | Date>;
16
+ day: Array<string | Date>;
17
+ month: Array<string | Date>;
18
+ activeTimeModel1: string;
19
+ activeEnergy: string;
20
+ typeIndex: number;
21
+ unit: string;
22
+ };
23
+ /** 展示数据:接口结果整理后一次性传入 */
24
+ export type EnergyViewData = {
25
+ summary: Record<string, number>;
26
+ typeData: Array<{
27
+ name: string;
28
+ color: string;
29
+ unit?: string;
30
+ }>;
31
+ chartData: {
32
+ xAxisData: string[];
33
+ yAxisData: Array<Array<number | null>>;
34
+ };
35
+ xUnit: string;
36
+ };
37
+ export declare function createDefaultEnergyQuery(): EnergyQueryState;
38
+ export declare function createDefaultEnergyView(): EnergyViewData;
@@ -0,0 +1,11 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),J=require("echarts");function ee(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const l in t)if(l!=="default"){const o=Object.getOwnPropertyDescriptor(t,l);Object.defineProperty(n,l,o.get?o:{enumerable:!0,get:()=>t[l]})}}return n.default=t,Object.freeze(n)}const te=ee(J),ne=["disabled"],ae=e.defineComponent({__name:"Button",props:{type:{default:"default"},disabled:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:n}){const l=n,o=c=>{l("click",c)};return(c,r)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["hc-button",[`hc-button--${t.type}`]]),disabled:t.disabled,onClick:o},[e.renderSlot(c.$slots,"default",{},void 0,!0)],10,ne))}}),M=(t,n)=>{const l=t.__vccOpts||t;for(const[o,c]of n)l[o]=c;return l},G=M(ae,[["__scopeId","data-v-c0879ce0"]]),I=G;I.install=t=>{t.component("HcButton",G)};function Y(t){return String(t).padStart(2,"0")}function oe(t,n){const l=t.getFullYear(),o=Y(t.getMonth()+1),c=Y(t.getDate());return n==="year"?`${l}-01-01`:n==="month"?`${l}-${o}-01`:`${l}-${o}-${c}`}function Q(t){if(!t)return null;if(t instanceof Date)return Number.isNaN(t.getTime())?null:t;const n=new Date(t);return Number.isNaN(n.getTime())?null:n}function le(t,n){if(!t)return"";const l=t.getFullYear(),o=Y(t.getMonth()+1),c=Y(t.getDate());return n==="year"?`${l}`:n==="month"?`${l}-${o}`:`${l}-${o}-${c}`}function K(t,n){return t.getFullYear()===n.getFullYear()&&t.getMonth()===n.getMonth()&&t.getDate()===n.getDate()}function re(t,n){const o=new Date(t,n,1).getDay(),c=new Date(t,n+1,0).getDate(),r=new Date(t,n,0).getDate(),g=[];for(let i=o-1;i>=0;i--)g.push({date:new Date(t,n-1,r-i),current:!1});for(let i=1;i<=c;i++)g.push({date:new Date(t,n,i),current:!0});const E=42-g.length;for(let i=1;i<=E;i++)g.push({date:new Date(t,n+1,i),current:!1});return g}const ie=["value","placeholder","disabled"],se={class:"hc-date-picker__header"},ce={class:"hc-date-picker__header-label"},ue={key:0,class:"hc-date-picker__body"},de={class:"hc-date-picker__weeks"},me={class:"hc-date-picker__days"},pe=["onClick"],fe={key:1,class:"hc-date-picker__body hc-date-picker__body--month"},ye=["onClick"],ve={key:2,class:"hc-date-picker__body hc-date-picker__body--year"},he=["onClick"],ge=e.defineComponent({name:"HcDatePicker",__name:"DatePicker",props:{modelValue:{default:""},type:{default:"date"},placeholder:{default:"选择日期"},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},size:{default:"default"},dark:{type:Boolean,default:!1}},emits:["update:modelValue","change"],setup(t,{emit:n}){var j,R;const l=t,o=n,c=["日","一","二","三","四","五","六"],r=new Date,g=e.ref(null),E=e.ref(null),i=e.ref(!1),b=e.ref({}),p=e.computed(()=>Q(l.modelValue)),m=e.computed(()=>le(p.value,l.type)),u=e.ref(((j=p.value)==null?void 0:j.getFullYear())??r.getFullYear()),D=e.ref(((R=p.value)==null?void 0:R.getMonth())??r.getMonth());e.watch(()=>[l.modelValue,l.type],()=>{const w=Q(l.modelValue);w&&(u.value=w.getFullYear(),D.value=w.getMonth())});const k=e.computed(()=>re(u.value,D.value)),y=e.computed(()=>Math.floor(u.value/10)*10),d=e.computed(()=>Array.from({length:12},(w,B)=>y.value-1+B)),a=e.computed(()=>l.type==="year"?`${y.value} 年 - ${y.value+9} 年`:l.type==="month"?`${u.value} 年`:`${u.value} 年 ${D.value+1} 月`);function s(){if(!g.value)return;const w=g.value.getBoundingClientRect(),B=w.bottom+4+window.scrollY;let h=w.left+window.scrollX;const N=292;h+N>window.innerWidth-8&&(h=Math.max(8,window.innerWidth-N-8)),b.value={position:"absolute",top:`${B}px`,left:`${h}px`,zIndex:"3000"}}async function v(){l.disabled||(i.value=!0,await e.nextTick(),s())}function _(){i.value=!1}function $(){l.disabled||(i.value?_():v())}function V(){o("update:modelValue",""),o("change",null)}function F(w){const B=oe(w,l.type);o("update:modelValue",B),o("change",B),_()}function f(w){F(w)}function T(w){F(new Date(u.value,w,1))}function x(w){F(new Date(w,0,1))}function C(){D.value===0?(D.value=11,u.value-=1):D.value-=1}function L(){D.value===11?(D.value=0,u.value+=1):D.value+=1}function S(){l.type==="year"?u.value-=10:u.value-=1}function A(){l.type==="year"?u.value+=10:u.value+=1}function H(w){var h,N;if(!i.value)return;const B=w.target;(h=g.value)!=null&&h.contains(B)||(N=E.value)!=null&&N.contains(B)||_()}function P(){i.value&&s()}return e.onMounted(()=>{document.addEventListener("mousedown",H),window.addEventListener("scroll",P,!0),window.addEventListener("resize",P)}),e.onBeforeUnmount(()=>{document.removeEventListener("mousedown",H),window.removeEventListener("scroll",P,!0),window.removeEventListener("resize",P)}),(w,B)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:g,class:e.normalizeClass(["hc-date-picker",[`hc-date-picker--${t.size}`,{"hc-date-picker--dark":t.dark,"is-disabled":t.disabled}]])},[e.createElementVNode("div",{class:e.normalizeClass(["hc-date-picker__trigger",{"is-focus":i.value,"is-disabled":t.disabled}]),onClick:$},[e.createElementVNode("input",{class:"hc-date-picker__inner",type:"text",readonly:"",value:m.value,placeholder:t.placeholder,disabled:t.disabled},null,8,ie),t.clearable&&m.value&&!t.disabled?(e.openBlock(),e.createElementBlock("span",{key:0,class:"hc-date-picker__clear",onClick:e.withModifiers(V,["stop"])}," × ")):e.createCommentVNode("",!0)],2),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[i.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"popperRef",ref:E,class:e.normalizeClass(["hc-date-picker__popper",{"is-dark":t.dark}]),style:e.normalizeStyle(b.value),onMousedown:B[0]||(B[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",se,[e.createElementVNode("button",{type:"button",class:"hc-date-picker__icon-btn",onClick:S},"«"),t.type==="date"?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"hc-date-picker__icon-btn",onClick:C}," ‹ ")):e.createCommentVNode("",!0),e.createElementVNode("span",ce,e.toDisplayString(a.value),1),t.type==="date"?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"hc-date-picker__icon-btn",onClick:L}," › ")):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"hc-date-picker__icon-btn",onClick:A},"»")]),t.type==="date"?(e.openBlock(),e.createElementBlock("div",ue,[e.createElementVNode("div",de,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(c,h=>e.createElementVNode("span",{key:h},e.toDisplayString(h),1)),64))]),e.createElementVNode("div",me,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,(h,N)=>(e.openBlock(),e.createElementBlock("button",{key:N,type:"button",class:e.normalizeClass(["hc-date-picker__cell",{"is-other":!h.current,"is-selected":p.value&&e.unref(K)(h.date,p.value),"is-today":e.unref(K)(h.date,e.unref(r))}]),onClick:at=>f(h.date)},e.toDisplayString(h.date.getDate()),11,pe))),128))])])):t.type==="month"?(e.openBlock(),e.createElementBlock("div",fe,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(12,h=>e.createElementVNode("button",{key:h,type:"button",class:e.normalizeClass(["hc-date-picker__cell hc-date-picker__cell--month",{"is-selected":p.value&&p.value.getFullYear()===u.value&&p.value.getMonth()===h-1}]),onClick:N=>T(h-1)},e.toDisplayString(h)+"月 ",11,ye)),64))])):(e.openBlock(),e.createElementBlock("div",ve,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,h=>(e.openBlock(),e.createElementBlock("button",{key:h,type:"button",class:e.normalizeClass(["hc-date-picker__cell hc-date-picker__cell--year",{"is-selected":p.value&&p.value.getFullYear()===h}]),onClick:N=>x(h)},e.toDisplayString(h),11,he))),128))]))],38)):e.createCommentVNode("",!0)]))],2))}}),z=M(ge,[["__scopeId","data-v-b2bff9b8"]]),W=z;W.install=t=>{t.component("HcDatePicker",z),t.component("DatePicker",z)};const ke={class:"box-title"},De={class:"text"},be={key:0,class:"text-num"},we={class:"num"},Ce=e.defineComponent({__name:"BoxTitle",props:{title:{},mountNum:{}},setup(t){return(n,l)=>(e.openBlock(),e.createElementBlock("div",ke,[e.createElementVNode("span",De,e.toDisplayString(t.title),1),t.mountNum?(e.openBlock(),e.createElementBlock("p",be,[l[0]||(l[0]=e.createTextVNode(" 挂载总量:",-1)),e.createElementVNode("span",we,e.toDisplayString(t.mountNum||"--"),1),l[1]||(l[1]=e.createTextVNode("个 ",-1))])):e.createCommentVNode("",!0)]))}}),Ee=M(Ce,[["__scopeId","data-v-bc025af7"]]),xe={class:"module-panel"},Be={class:"panel-content"},_e=e.defineComponent({__name:"ModulePanel",props:{title:{},mountNum:{}},setup(t){return(n,l)=>(e.openBlock(),e.createElementBlock("div",xe,[e.createVNode(Ee,{title:t.title,mountNum:t.mountNum},null,8,["title","mountNum"]),e.createElementVNode("div",Be,[e.renderSlot(n.$slots,"default",{},void 0,!0)])]))}}),$e=M(_e,[["__scopeId","data-v-c6a014b4"]]),Ne={class:"time-control"},Te={key:0,class:"filter-group"},Me={class:"dateStyl"},Ve={key:0,class:"title"},Fe=e.defineComponent({name:"HcTimeControl",__name:"TimeControl",props:{activeTime:{default:"日"},time:{default:()=>[]},day:{default:()=>[]},month:{default:()=>[]},showLj:{type:Boolean,default:!0},showY:{type:Boolean,default:!0},showM:{type:Boolean,default:!0},showD:{type:Boolean,default:!0},showTime:{type:Boolean,default:!0},activeTimeModel1:{default:"选择时间"},typeNumber:{default:""},titleOne:{default:"日"}},emits:["update:activeTime","update:time","update:day","update:month","update:activeTimeModel1","dateChange"],setup(t,{expose:n,emit:l}){const o=t,c=l,r=d=>{const a=d.getFullYear(),s=String(d.getMonth()+1).padStart(2,"0"),v=String(d.getDate()).padStart(2,"0");return`${a}-${s}-${v}`},g=d=>{d.length===0&&c("update:activeTimeModel1","选择时间")};e.watch(()=>o.day,g,{deep:!0}),e.watch(()=>o.time,g,{deep:!0}),e.watch(()=>o.month,g,{deep:!0}),(()=>{const d=new Date,a=new Date(d.getFullYear(),d.getMonth(),d.getDate()),s=new Date(a);s.setHours(23,59,59,999);const v=new Date(d.getFullYear(),d.getMonth(),1),_=new Date(d.getFullYear(),0,1);o.time.length===0&&c("update:time",[r(a),r(s)]),o.day.length===0&&c("update:day",[r(v),r(s)]),o.month.length===0&&c("update:month",[r(_),r(s)])})();const i=e.computed({get:()=>o.activeTime,set:d=>c("update:activeTime",d)}),b=e.computed(()=>i.value==="月"?"month":i.value==="年"||i.value==="累计"?"year":"date"),p=e.computed(()=>["日","周",o.titleOne,"月","年","累计"].includes(i.value)),m=e.computed(()=>i.value==="月"?"选择月份":i.value==="年"?"选择年份":i.value==="累计"?"累计":"选择时间"),u=e.computed({get:()=>i.value==="月"?Array.isArray(o.day)&&o.day.length>0?String(o.day[0]):"":i.value==="年"||i.value==="累计"?Array.isArray(o.month)&&o.month.length>0?String(o.month[0]):"":Array.isArray(o.time)&&o.time.length>0?String(o.time[0]):"",set:d=>{if(!d){i.value==="月"?c("update:day",[]):i.value==="年"||i.value==="累计"?c("update:month",[]):c("update:time",[]);return}const a=new Date(d);if(i.value==="月"){const s=new Date(a.getFullYear(),a.getMonth(),1),v=new Date(a.getFullYear(),a.getMonth()+1,0);c("update:day",[r(s),r(v)])}else if(i.value==="年"||i.value==="累计"){const s=a.getFullYear();c("update:month",[`${s}-01-01`,`${s}-12-31`])}else{const s=r(a);c("update:time",[s,s])}}}),D=d=>{const a=new Date;if(d===o.titleOne){const s=new Date(a.getFullYear(),a.getMonth(),a.getDate()),v=new Date(s);v.setHours(23,59,59,999),c("update:time",[r(s),r(v)]),c("dateChange",[r(s),r(v)])}else if(d==="月"){const s=new Date(a.getFullYear(),a.getMonth(),1);c("update:day",[r(s),r(a)]),c("dateChange",[r(s),r(a)])}else if(d==="年"){const s=new Date(a.getFullYear(),0,1);c("update:month",[r(s),r(a)]),c("dateChange",[r(s),r(a)])}else if(d==="累计")c("dateChange",null);else{const s=new Date(a.getFullYear(),0,1);c("dateChange",[r(s),r(a)])}},k=d=>{if(!d){c("dateChange",null);return}const a=new Date(d);if(i.value===o.titleOne||i.value==="日"){const s=new Date(a.getFullYear(),a.getMonth(),a.getDate()),v=new Date(a.getFullYear(),a.getMonth(),a.getDate(),23,59,59,999);c("update:time",[r(s),r(v)]),c("dateChange",[r(s),r(v)])}else if(i.value==="月"){const s=new Date(a.getFullYear(),a.getMonth(),1),v=new Date(a.getFullYear(),a.getMonth()+1,0,23,59,59,999);c("update:day",[r(s),r(v)]),c("dateChange",[r(s),r(v)])}else if(i.value==="年"){const s=new Date(a.getFullYear(),0,1),v=new Date(a.getFullYear(),11,31,23,59,59,999);c("update:month",[r(s),r(v)]),c("dateChange",[r(s),r(v)])}},y=d=>{i.value=d,D(d)};return n({onTimeFn:y}),(d,a)=>(e.openBlock(),e.createElementBlock("div",Ne,[t.showTime?(e.openBlock(),e.createElementBlock("div",Te,[t.showD?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["filter-btn",{active:i.value===t.titleOne}]),onClick:a[0]||(a[0]=s=>y(t.titleOne))},e.toDisplayString(t.titleOne),3)):e.createCommentVNode("",!0),t.showM?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(["filter-btn",{active:i.value==="月"}]),onClick:a[1]||(a[1]=s=>y("月"))}," 月 ",2)):e.createCommentVNode("",!0),t.showY?(e.openBlock(),e.createElementBlock("span",{key:2,class:e.normalizeClass(["filter-btn",{active:i.value==="年"}]),onClick:a[2]||(a[2]=s=>y("年"))}," 年 ",2)):e.createCommentVNode("",!0),t.showLj?(e.openBlock(),e.createElementBlock("span",{key:3,class:e.normalizeClass(["filter-btn",{active:i.value==="累计"}]),onClick:a[3]||(a[3]=s=>y("累计"))}," 累计 ",2)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Me,[t.titleOne!="周"?(e.openBlock(),e.createElementBlock("span",Ve,"选择时间:")):e.createCommentVNode("",!0),p.value?(e.openBlock(),e.createBlock(z,{key:b.value,modelValue:u.value,"onUpdate:modelValue":a[4]||(a[4]=s=>u.value=s),type:b.value,placeholder:m.value,disabled:i.value==="累计",clearable:"",size:"small",dark:"",onChange:k},null,8,["modelValue","type","placeholder","disabled"])):e.createCommentVNode("",!0)])]))}}),Le=M(Fe,[["__scopeId","data-v-e501d06e"]]),O=t=>{const n=t.toString();if(n.replace(".","").length>4){const l=Math.abs(t);return l>=1e8?{value:(t/1e8).toFixed(2),unit:"亿"}:l>=1e7?{value:(t/1e7).toFixed(2),unit:"千万"}:l>=1e4?{value:(t/1e4).toFixed(2),unit:"万"}:{value:Number(t.toFixed(2)).toString(),unit:""}}return{value:n,unit:""}},Se={class:"echsrtLine"},Ae=e.defineComponent({__name:"ChartLine",props:{chartData:{type:Object,default:()=>({xAxisData:[],yAxisData:[]})},typeData:{type:Array,default:()=>[]},unit:{type:String,default:""},xUnit:{type:String,default:""},left:{type:Number,default:2},right:{type:Number,default:3},bottom:{type:Number,default:10},unitLeft:{type:Number,default:9},legendLeft:{type:Number,default:0}},setup(t){const n=t,l=e.computed(()=>n.typeData.map((k,y)=>{var d,a;return{type:k.name,data:((a=(d=n.chartData)==null?void 0:d.yAxisData)==null?void 0:a[y])||[],color:k.color||"#00ff88",unit:k.unit||n.unit}})),o=e.computed(()=>l.value.some(k=>(k.data||[]).some(y=>y!=null&&!Number.isNaN(Number(y))))),c=e.ref(null);let r=null,g=null,E=0;const i=()=>{var y,d;const k=l.value.map(a=>({name:a.type,type:"line",smooth:!0,symbol:"none",data:a.data,lineStyle:{width:3,color:a.color},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:a.color},{offset:1,color:"transparent"}]}}}));return{backgroundColor:"transparent",color:l.value.map(a=>a.color),tooltip:{trigger:"axis",appendToBody:!0,backgroundColor:"rgba(0,0,0,0.8)",borderColor:"#00ffff",extraCssText:"z-index: 1000; pointer-events: auto;",textStyle:{color:"#fff",fontSize:12},axisPointer:{type:"line",lineStyle:{color:"#00ffff",type:"dashed"}},formatter:a=>{const s=a;if(!(s!=null&&s.length))return"";const v=s[0].name??"";let _=`<div style="margin-bottom: 5px;">${v}${v?n.xUnit:""}</div>`;return s.forEach($=>{const V=$.value!==void 0&&$.value!==null?O($.value).value+O($.value).unit:"-";_+=`
2
+ <div style="display: flex; justify-content: space-between; align-items: center; gap: 15px; margin-bottom: 3px">
3
+ <span style="display: flex; align-items: center; gap: 4px;">
4
+ ${$.marker||""}
5
+ <span style="color: #ccc;">${$.seriesName||""}</span>
6
+ </span>
7
+ <span style="font-weight: bold;">
8
+ ${V} <span style="font-size: 10px; font-weight: normal; color: #888;">${n.unit||""}</span>
9
+ </span>
10
+ </div>
11
+ `}),_}},legend:{data:((y=n.typeData)==null?void 0:y.map(a=>a.name))||[],icon:"path://M4,0 L12,0 Q16,0 16,4 L16,4 Q16,8 12,8 L4,8 Q0,8 0,4 L0,4 Q0,0 4,0 Z",itemWidth:12,itemHeight:6,align:"left",textStyle:{color:"#fff",fontSize:12},top:20,left:n.legendLeft?n.legendLeft:"center"},grid:{left:`${n.left}%`,right:`${n.right}%`,top:57,bottom:`${n.bottom}%`,containLabel:!0},xAxis:{type:"category",data:((d=n.chartData)==null?void 0:d.xAxisData)||[],boundaryGap:!1,axisLine:{lineStyle:{color:"#333"}},axisTick:{show:!1},axisLabel:{color:"rgba(255,255,255,0.8)",fontSize:11,fontWeight:300,margin:10,rotate:0}},yAxis:{type:"value",min:o.value?void 0:0,max:o.value?void 0:100,interval:o.value?void 0:25,splitNumber:4,nameGap:0,axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{color:"rgba(255,255,255,0.08)"}},axisLabel:{color:"rgba(255,255,255,0.8)",fontSize:12,fontWeight:300,formatter:a=>a>=1e8?a/1e8+"亿":a>=1e6?a/1e6+"百万":a>=1e4?a/1e4+"万":String(a)}},series:k}},b=()=>{g&&(clearInterval(g),g=null)},p=()=>{r&&(b(),r.dispatchAction({type:"showTip",seriesIndex:0,dataIndex:0}),g=setInterval(()=>{var y,d;const k=((d=(y=n.chartData)==null?void 0:y.xAxisData)==null?void 0:d.length)||0;k&&(E=(E+1)%k,r==null||r.dispatchAction({type:"showTip",seriesIndex:0,dataIndex:E}))},5e3))},m=()=>{var k,y;c.value&&(r=te.init(c.value),r.setOption(i()),(y=(k=n.chartData)==null?void 0:k.yAxisData)!=null&&y.length&&setTimeout(()=>p(),5e3))},u=()=>{r&&r.setOption(i(),!0)},D=()=>{r==null||r.resize()};return e.onMounted(()=>{m(),window.addEventListener("resize",D)}),e.onUnmounted(()=>{b(),r==null||r.dispose(),window.removeEventListener("resize",D)}),e.watch(()=>[n.chartData,n.typeData,n.unit,n.xUnit],()=>u(),{deep:!0,flush:"post"}),(k,y)=>(e.openBlock(),e.createElementBlock("div",Se,[e.createElementVNode("div",{ref_key:"chartRef",ref:c,class:"chart-container"},null,512),e.createElementVNode("div",{class:"unit",style:e.normalizeStyle({left:t.unitLeft+"px"})},e.toDisplayString(t.unit),5)]))}}),Pe=M(Ae,[["__scopeId","data-v-35a8b884"]]);function Ye(){return{activeTime:"日",time:[],day:[],month:[],activeTimeModel1:"",activeEnergy:"0",typeIndex:1,unit:"kW·h"}}function Z(){return{summary:{originalEnergy:0,realtimeEnergy:0,monthCumulativeEnergy:0,yearCumulativeEnergy:0,totalCumulativeEnergy:0},typeData:[{name:"原始能耗",color:"#F2993D"},{name:"实时能耗",color:"#FFFC3F"},{name:"节能量",color:"#28FF87"}],chartData:{xAxisData:[],yAxisData:[]},xUnit:"日"}}const ze={class:"leftBottom"},Oe={key:0,class:"hc-loading"},Ue={class:"typeList"},Ie=["onClick"],We={class:"num"},qe={class:"unit-small"},He={class:"name"},je={class:"unit"},Re={class:"chart-wrapper"},Qe={class:"energy-tabs"},Ke=["onClick"],Xe=e.defineComponent({name:"HcEnergyAnalysis",__name:"EnergyAnalysis",props:e.mergeModels({title:{default:"能耗分析"},loading:{type:Boolean,default:!1},view:{default:()=>Z()},energyTypes:{default:()=>[{label:"电",value:"0",unit:"kW·h"},{label:"水",value:"1",unit:"m³"},{label:"气",value:"2",unit:"m³"}]},typeList:{default:()=>[{name:"原始能耗",unit:"(kW·h)",value:"originalEnergy"},{name:"实时能耗",unit:"(kW·h)",date:"日",value:"realtimeEnergy"},{name:"月累计能耗",unit:"(kW·h)",value:"monthCumulativeEnergy",date:"月"},{name:"年累计能耗",unit:"(kW·h)",value:"yearCumulativeEnergy",date:"年"},{name:"累计总能耗",unit:"(kW·h)",value:"totalCumulativeEnergy",date:"累计"}]}},{query:{required:!0},queryModifiers:{}}),emits:e.mergeModels(["query-change"],["update:query"]),setup(t,{emit:n}){const l=t,o=e.useModel(t,"query"),c=n,r=e.ref(l.typeList.map(p=>({...p})));e.watch(()=>o.value.unit,p=>{r.value=r.value.map(m=>({...m,unit:`(${p})`}))},{immediate:!0}),e.watch(()=>l.typeList,p=>{r.value=p.map(m=>({...m,unit:`(${o.value.unit})`}))},{deep:!0});const g=e.ref(null);function E(){c("query-change")}function i(p){o.value.activeEnergy=p;const m=l.energyTypes.find(u=>u.value===p);m&&(o.value.unit=m.unit),c("query-change")}function b(p,m){var u;o.value.typeIndex=m,p.date?(u=g.value)==null||u.onTimeFn(p.date):c("query-change")}return(p,m)=>(e.openBlock(),e.createBlock($e,{title:t.title},{default:e.withCtx(()=>[e.createElementVNode("div",ze,[t.loading?(e.openBlock(),e.createElementBlock("div",Oe,[...m[5]||(m[5]=[e.createElementVNode("span",{class:"hc-loading__spinner"},null,-1)])])):e.createCommentVNode("",!0),e.withDirectives(e.createVNode(Le,{activeTime:o.value.activeTime,"onUpdate:activeTime":m[0]||(m[0]=u=>o.value.activeTime=u),time:o.value.time,"onUpdate:time":m[1]||(m[1]=u=>o.value.time=u),day:o.value.day,"onUpdate:day":m[2]||(m[2]=u=>o.value.day=u),month:o.value.month,"onUpdate:month":m[3]||(m[3]=u=>o.value.month=u),activeTimeModel1:o.value.activeTimeModel1,"onUpdate:activeTimeModel1":m[4]||(m[4]=u=>o.value.activeTimeModel1=u),"type-number":"2",ref_key:"timeControlRef",ref:g,onDateChange:E},null,8,["activeTime","time","day","month","activeTimeModel1"]),[[e.vShow,o.value.typeIndex!==0]]),e.createElementVNode("div",null,[e.createElementVNode("ul",Ue,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(u,D)=>(e.openBlock(),e.createElementBlock("li",{key:u.name,onClick:k=>b(u,D)},[e.createElementVNode("p",We,[e.createElementVNode("span",null,e.toDisplayString(e.unref(O)(t.view.summary[u.value]||0).value),1),e.createElementVNode("span",qe,e.toDisplayString(e.unref(O)(t.view.summary[u.value]||0).unit),1)]),e.createElementVNode("div",{class:e.normalizeClass(["name_main",{active:o.value.typeIndex!==0?u.date===o.value.activeTime:D===0}])},[e.createElementVNode("p",He,e.toDisplayString(u.name),1),e.createElementVNode("p",je,e.toDisplayString(u.unit),1)],2)],8,Ie))),128))]),e.createElementVNode("div",Re,[e.createElementVNode("div",Qe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.energyTypes,u=>(e.openBlock(),e.createElementBlock("span",{key:u.value,class:e.normalizeClass(["energy-tab",{active:o.value.activeEnergy===u.value}]),onClick:D=>i(u.value)},e.toDisplayString(u.label),11,Ke))),128))]),e.createVNode(Pe,{typeData:t.view.typeData,legendLeft:70,right:4,unitLeft:9,unit:o.value.unit,xUnit:t.view.xUnit,chartData:t.view.chartData},null,8,["typeData","unit","xUnit","chartData"])])])])]),_:1},8,["title"]))}}),U=M(Xe,[["__scopeId","data-v-076a9047"]]),X={日:"时",月:"日",年:"月",累计:"月"},Ge=t=>{const n=t?new Date(t):new Date;return Number.isNaN(n.getTime())?31:new Date(n.getFullYear(),n.getMonth()+1,0).getDate()},Ze=(t,n)=>{if(t==="日")return Array.from({length:24},(l,o)=>`${o}`.padStart(2,"0"));if(t==="月"){const l=Ge(n);return Array.from({length:l},(o,c)=>`${c+1}`)}return Array.from({length:12},(l,o)=>`${o+1}`)};function Je(t){let n="",l="";return t.activeTime1==="日"?(l="hourly",n=t.time1[0]):t.activeTime1==="月"?(l="daily",n=t.day1[0]):t.activeTime1==="年"?(l="monthly",n=t.month1[0]):t.activeTime1==="累计"?(l="cumulative",n=t.month1[0]):(l="monthly",n=t.month1[0]),{selectedDate:n,timeDimension:l}}function et(t,n){var y,d,a,s,v,_,$,V,F;const l=(t==null?void 0:t.series)||[],{activeTime:o,typeIndex:c,unit:r,monthDate:g}=n,E=Ze(o,g);if(o==="累计"){let f=[];if(l.length>0){const x=[...l].sort((C,L)=>{var S,A;return(((S=L.dataPoints)==null?void 0:S.length)||0)-(((A=C.dataPoints)==null?void 0:A.length)||0)})[0];(y=x==null?void 0:x.dataPoints)!=null&&y.length&&(f=x.dataPoints.map(C=>C.timeLabel))}f.length||(f=E);const T=["#28FF87","#F2993D","#0783FA","#1CC767"];return{xUnit:X[o]||"月",typeData:l.map((x,C)=>({name:x.name,color:T[C%T.length]})),chartData:{xAxisData:f,yAxisData:l.map(x=>{var C;return(C=x.dataPoints)!=null&&C.length?x.dataPoints.map(L=>L.energyKwh):f.map(()=>null)})}}}if(c===0){const f=l.find(C=>C.name==="原始能耗"),T=((d=f==null?void 0:f.dataPoints)==null?void 0:d.map(C=>C.timeLabel))||E,x=((a=f==null?void 0:f.dataPoints)==null?void 0:a.map(C=>C.energyKwh))||[];return{xUnit:"月",typeData:[{name:"原始能耗",color:"#F2993D",unit:r}],chartData:{xAxisData:T,yAxisData:x.length?[x]:[T.map(()=>null)]}}}const i=l.find(f=>f.name==="实时能耗"),b=l.find(f=>f.name==="原始能耗"),p=l.find(f=>f.name==="节能量");let m=[];(s=b==null?void 0:b.dataPoints)!=null&&s.length?m=b.dataPoints.map(f=>f.timeLabel):(v=i==null?void 0:i.dataPoints)!=null&&v.length?m=i.dataPoints.map(f=>f.timeLabel):(_=p==null?void 0:p.dataPoints)!=null&&_.length&&(m=p.dataPoints.map(f=>f.timeLabel)),m.length||(m=E);const u=(($=i==null?void 0:i.dataPoints)==null?void 0:$.map(f=>f.energyKwh))||[],D=((V=b==null?void 0:b.dataPoints)==null?void 0:V.map(f=>f.energyKwh))||[],k=((F=p==null?void 0:p.dataPoints)==null?void 0:F.map(f=>f.energyKwh))||[];return{xUnit:X[o]||"日",typeData:[{name:"原始能耗",color:"#F2993D",unit:r},{name:"实时能耗",color:"#FFFC3F",unit:r},{name:"节能量",color:"#28FF87",unit:r}],chartData:{xAxisData:m,yAxisData:[D.length?D:m.map(()=>null),u.length?u:m.map(()=>null),k.length?k:m.map(()=>null)]}}}const q=U;q.install=t=>{t.component("HcEnergyAnalysis",U),t.component("EnergyAnalysis",U)};const tt=[I,W,q],nt={install(t){tt.forEach(n=>{t.use(n)})}};exports.Button=I;exports.DatePicker=W;exports.EnergyAnalysis=q;exports.buildEnergyQueryParams=Je;exports.createDefaultEnergyQuery=Ye;exports.createDefaultEnergyView=Z;exports.default=nt;exports.transformEnergyDashboard=et;