From 104bb7251b19accff1dcc6b21a0ce2e7b0af7534 Mon Sep 17 00:00:00 2001 From: hisoka0728 <1399952343@qq.com> Date: Wed, 7 Aug 2024 18:57:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8F=90=E4=BA=A4=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/img/today-new-student.png | Bin 0 -> 2497 bytes public/assets/img/year-month-target.png | Bin 0 -> 6585 bytes public/assets/img/year-total.png | Bin 0 -> 7933 bytes src/index.ts | 2 + src/screen-panel-attribute/global.ts | 8 + src/screen-panel-attribute/index.ts | 17 + .../screen-panel-attribute.controller.ts | 67 ++++ .../screen-panel-attribute.provider.ts | 30 ++ .../screen-panel-attribute.scss | 308 ++++++++++++++++++ .../screen-panel-attribute.tsx | 102 ++++++ 10 files changed, 534 insertions(+) create mode 100644 public/assets/img/today-new-student.png create mode 100644 public/assets/img/year-month-target.png create mode 100644 public/assets/img/year-total.png create mode 100644 src/screen-panel-attribute/global.ts create mode 100644 src/screen-panel-attribute/index.ts create mode 100644 src/screen-panel-attribute/screen-panel-attribute.controller.ts create mode 100644 src/screen-panel-attribute/screen-panel-attribute.provider.ts create mode 100644 src/screen-panel-attribute/screen-panel-attribute.scss create mode 100644 src/screen-panel-attribute/screen-panel-attribute.tsx diff --git a/public/assets/img/today-new-student.png b/public/assets/img/today-new-student.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc337a856e631dc0ed4faac4dd5baf345fd371d GIT binary patch literal 2497 zcmcJR`8U*y8^=F0V=|JmH0q{{8M~Nkt!OZ|Vd6_9`@Urzlx;LJRETViEsP}^YlvHz zD^oWv5n~%S+aycH82e-?T=)AYe9!s*@;=Xbo^zh(yx!;i!}IW(g^9rNbH@Py5Wtxl zSpxt_@~C!%9Xryq|4AhS0ADiBNZ%&9h(oc=n8*H-^r@wnv-qU=p|2VlUihHj_vLV+ zv2!LY3nSkGcYF&C)1PI?7!VEOHjoKMF=0EsuDz1QXLn$9v2cw@X_ zBYvRokpTgSLLVGLe5F-|0e4LgDFvziP9<`0uN)anstxHQ1SY3uC%7G0S^xlYK)YcGf8)K3a0Q+F)IlWh;jZx&&#v;+52XgeE-2H7=x}6aQji)MZ;FLgIgd{-H zCzHT^0yjE58rT_n`YFF6D2~w{5U`FANRN@`3>yjkLr3Axk)D!M}ewW!wvs zw=UHBkCooG-`XE;emMJJE6tdU9rfLgvQ34(W~x)PA~*PX!m-8Ib(z;8;k!Rt>*Zh{ErnGMi*qN^+snKH#)fVMnYrsM3?Ia2{Bg97^vH8VgjQSv* z%|#f@8Ng`%RPxQXcoIr5`P(ch8pSJ^$s2kLPyx1&GSCkCzlq18tcKWib>@Olpg7>p zojG@^6|I&l*Qj<0XPToBm?;9dzpUCcA`=r?jnIm^>I(`|8)X}-pV{sWdN;1_zr#=$ z2;#ogcSJ>B#sbc&$Mvex%+0V@Etnc1`6FN_42nFC3j$SJTvSrI^2><})!et}lRmBH zo~W_wl%QE21}(s|*kMJZW^dr$(Z-2-@_UZ9rSqy7$&Bag#%Gd7h_^PoT081;QiM5( z$!C%`U2lLs4-*kF`_o_ZR zGH&(x?4-=zE>DH&C|0!bsm85z1;|ec$_l2ZK|MqL3?DG+~5cAx*nG5)&J zErqU+#BE96$^Jf^X&)&~2VWGl6bETls3pcWKjl0a+H-bFOmn&zd8*-HEEIUNtE$bo zzj4Z-FoHXr`enP z=-F{ZZWi&D!y_JzZb|jNYocl|T)FTJ8mwn25ityM=R2DQ$+ZOe}fg_`Z3o{F{oFER_>aJT_-wEr4!TDA~i? z3#bjh_ud(9EKn$HPN}qrOm%FiUNO$*Loqr6_GTzI4;n7%^PtxoC5xI&gui#7} zuBl9!Iye#YOEbDH}Am8K_eG~d9ZRAJT`NgOO zc_P*j^kC7E&1!DBT>4t0H$6szLNu2ao9oK7w@SL4J5E^k!TS!SOoIw5@M6xB4kjbt z83rSFLpd1^+Y%0aY}T9-_hL@)s*|0L_w$i(B`VWpyLdUq_jw%4%Q#)zg{%2%CH1>z zpi@u)e>19(tHYT5PA$0-w4xYAXuGc6GUhfI{Bm+{ve7f z`^$@=@QW9c>^BJaPSKD#`U6#zw0#C`a9~Eg;k2d9Go%?)xpqRFtxUs)EYo-6R-Q}w USbtd!I(p3joUw&by@7keKPSa&A^-pY literal 0 HcmV?d00001 diff --git a/public/assets/img/year-month-target.png b/public/assets/img/year-month-target.png new file mode 100644 index 0000000000000000000000000000000000000000..edae361039779c9f00900977f619bacf3d76d9f0 GIT binary patch literal 6585 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 literal 0 HcmV?d00001 diff --git a/public/assets/img/year-total.png b/public/assets/img/year-total.png new file mode 100644 index 0000000000000000000000000000000000000000..2d6e44cb0890da2f9e092360677280846cac5881 GIT binary patch literal 7933 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 literal 0 HcmV?d00001 diff --git a/src/index.ts b/src/index.ts index ed6fead..2d951ae 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,13 @@ import { App } from 'vue'; import { IBizDigitalFlop } from './digital-flop/index'; import { IBizScreenDashboard } from './screen-dashboard/index'; +import { IBizScreenPanelAttribute } from './screen-panel-attribute/index'; // 注入组件 export default { install(_app: App): void { _app.use(IBizDigitalFlop); _app.use(IBizScreenDashboard); + _app.use(IBizScreenPanelAttribute); }, }; diff --git a/src/screen-panel-attribute/global.ts b/src/screen-panel-attribute/global.ts new file mode 100644 index 0000000..85e28ca --- /dev/null +++ b/src/screen-panel-attribute/global.ts @@ -0,0 +1,8 @@ +// 文件路径: [插件项目的根目录]/src/global.ts + +// eslint-disable-next-line import/no-extraneous-dependencies +import { PluginStaticResource } from '@ibiz-template/runtime'; + +const resource = new PluginStaticResource(import.meta.url); + +export { resource }; diff --git a/src/screen-panel-attribute/index.ts b/src/screen-panel-attribute/index.ts new file mode 100644 index 0000000..4550a4d --- /dev/null +++ b/src/screen-panel-attribute/index.ts @@ -0,0 +1,17 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { withInstall } from '@ibiz-template/vue3-util'; +import { App } from 'vue'; +import { registerPanelItemProvider } from '@ibiz-template/runtime'; +import { ScreenPanelAttribute } from './screen-panel-attribute'; +import { ScreenPanelAttributeControllerProvider } from './screen-panel-attribute.provider'; + +export const IBizScreenPanelAttribute = withInstall( + ScreenPanelAttribute, + function (v: App) { + v.component(ScreenPanelAttribute.name, ScreenPanelAttribute); + registerPanelItemProvider( + 'EDITOR_CUSTOMSTYLE_SCREEN_PANEL_ATTRIBUTE', + () => new ScreenPanelAttributeControllerProvider(), + ); + }, +); diff --git a/src/screen-panel-attribute/screen-panel-attribute.controller.ts b/src/screen-panel-attribute/screen-panel-attribute.controller.ts new file mode 100644 index 0000000..75894df --- /dev/null +++ b/src/screen-panel-attribute/screen-panel-attribute.controller.ts @@ -0,0 +1,67 @@ +import { IPanelRawItem } from '@ibiz/model-core'; + +// eslint-disable-next-line import/no-extraneous-dependencies +import { PanelItemController } from '@ibiz-template/runtime'; + +/** + * @description 大屏面板属性 + * @export + * @class DigitalFlopController + * @extends {EditorController} + */ +export class ScreenPanelAttributeController extends PanelItemController { + /** + * 展示模式 + * + * @author fangZhiHao + * @date 2024-08-07 15:08:14 + * @type {string} + */ + showModel: string = 'model1'; + + /** + * 单位 + * + * @author fangZhiHao + * @date 2024-08-07 14:08:14 + * @type {string} + */ + public unit: string = '个'; + + /** + * 标题位置 + * + * @author fangZhiHao + * @date 2024-08-07 14:08:38 + * @type {string} + */ + public labelPosition: string = 'bottom'; + + /** + * 初始化 + */ + protected async onInit(): Promise { + console.log('this.model', this.model); + if (this.model.rawItem) { + const { rawItemParams } = this.model.rawItem; + if (rawItemParams) { + const unitParams = rawItemParams.find(item => item.key === 'UNIT'); + if (unitParams && unitParams.value) { + this.unit = unitParams.value; + } + const labelPositionParams = rawItemParams.find( + item => item.key === 'LABELPOSITION', + ); + if (labelPositionParams && labelPositionParams.value) { + this.labelPosition = labelPositionParams.value; + } + const showModelParams = rawItemParams.find( + item => item.key === 'SHOWMODEL', + ); + if (showModelParams && showModelParams.value) { + this.showModel = showModelParams.value; + } + } + } + } +} diff --git a/src/screen-panel-attribute/screen-panel-attribute.provider.ts b/src/screen-panel-attribute/screen-panel-attribute.provider.ts new file mode 100644 index 0000000..eae6076 --- /dev/null +++ b/src/screen-panel-attribute/screen-panel-attribute.provider.ts @@ -0,0 +1,30 @@ +import { IPanelItem } from '@ibiz/model-core'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { + PanelController, + IPanelItemProvider, + PanelItemController, +} from '@ibiz-template/runtime'; +import { ScreenPanelAttributeController } from './screen-panel-attribute.controller'; + +/** + * @description 大屏面板属性 + * @export + * @class DigitalFlopControllerProvider + * @implements {IEditorProvider} + */ +export class ScreenPanelAttributeControllerProvider + implements IPanelItemProvider +{ + component: string = 'ScreenPanelAttribute'; + + async createController( + panelItem: IPanelItem, + panel: PanelController, + parent: PanelItemController | undefined, + ): Promise { + const c = new ScreenPanelAttributeController(panelItem, panel, parent); + await c.init(); + return c; + } +} diff --git a/src/screen-panel-attribute/screen-panel-attribute.scss b/src/screen-panel-attribute/screen-panel-attribute.scss new file mode 100644 index 0000000..983255a --- /dev/null +++ b/src/screen-panel-attribute/screen-panel-attribute.scss @@ -0,0 +1,308 @@ +$screen-panel-attribute: ( + 'min-height': 124px, + 'margin-top': 16px, + 'textvalue-top': 15%, + 'textvalue-left': 52%, + 'textvalue-transform': translateX(-50%), + 'textvalue-height': 100%, + 'textvalue-left-top': 0%, + 'textvalue-left-margin-top': 46%, + 'textvalue-right-top': 0%, + 'textvalue-right-margin-top': 46%, + 'textvalue-top-top': 0%, + 'hours-font-size': 36px, + 'hours-font-weight': bold, + 'hours-color': transparent, + 'hours-background-image': linear-gradient(white, #77c0f9), + 'hours-transform': skewX(-10deg), + 'unit-padding-top': 10px, + 'unit-font-size': 11px, + 'unit-font-weight': bold, + 'unit-color': transparent, + 'unit-background-image': linear-gradient(white, #77c0f9), + 'unit-transform': skewX(-10deg), + 'label-font-size': 14px, + 'label-color': #77c0f9, + 'backimg-margin':0 auto, + 'backimg-height':103px, + 'backimg-width':173px, + 'backimg-background-image':url('../../public/assets/img/year-month-target.png'), +); + +@include b(screen-panel-attribute) { + @include set-component-css-var( + 'screen-panel-attribute', + $screen-panel-attribute + ); + + @include e(backimg) { + width: 173px; + height: 103px; + margin: 0 auto; + background-image: url('../../public/assets/img/year-month-target.png'); + } + + position: relative; + min-height: getCssVar('screen-panel-attribute', 'min-height'); + margin-top: getCssVar('screen-panel-attribute', 'margin-top'); + overflow: hidden; + text-align: center; + + @include e(textvalue) { + position: absolute; + top: getCssVar('screen-panel-attribute', 'textvalue-top'); + left: getCssVar('screen-panel-attribute', 'textvalue-left'); + display: flex; + flex-direction: column; + width: max-content; + height: getCssVar('screen-panel-attribute', 'textvalue-height'); + transform: getCssVar('screen-panel-attribute', 'textvalue-transform'); + + &.left { + top: getCssVar('screen-panel-attribute', 'textvalue-left-top'); + flex-direction: row-reverse; + .#{bem('screen-panel-attribute','label')} { + margin-top: getCssVar( + 'screen-panel-attribute', + 'textvalue-left-margin-top' + ); + } + } + + &.right { + top: getCssVar('screen-panel-attribute', 'textvalue-right-top'); + flex-direction: row; + .#{bem('screen-panel-attribute','label')} { + margin-top: getCssVar( + 'screen-panel-attribute', + 'textvalue-right-margin-top' + ); + } + } + + &.top { + top: getCssVar('screen-panel-attribute', 'textvalue-top-top'); + flex-direction: column-reverse; + } + } + + @include e(value) { + display: flex; + align-items: center; + justify-content: center; + vertical-align: bottom; + } + @include e(hours) { + font-size: getCssVar('screen-panel-attribute', 'hours-font-size'); + font-weight: getCssVar('screen-panel-attribute', 'hours-font-weight'); + color: getCssVar('screen-panel-attribute', 'hours-color'); + background-image: getCssVar( + 'screen-panel-attribute', + 'hours-background-image' + ); + background-clip: text; + transform: getCssVar('screen-panel-attribute', 'hours-transform'); + } + + @include e(unit) { + padding-top: getCssVar('screen-panel-attribute', 'unit-padding-top'); + font-size: getCssVar('screen-panel-attribute', 'unit-font-size'); + font-weight: getCssVar('screen-panel-attribute', 'unit-font-weight'); + color: getCssVar('screen-panel-attribute', 'unit-color'); + background-image: getCssVar( + 'screen-panel-attribute', + 'unit-background-image' + ); + background-clip: text; + transform: getCssVar('screen-panel-attribute', 'unit-transform'); + } + + @include e(label) { + font-size: getCssVar('screen-panel-attribute', 'label-font-size'); + color: getCssVar('screen-panel-attribute', 'label-color'); + } +} + +$screen-panel-attribute-model3: ( + 'padding-top': 40px, + 'margin-bottom': -20px, + 'value-height': 53px, + 'value-background-image': url('../../public/assets/img/year-total.png'), + 'total-padding-top': 2px, + 'total-font-size': 28px, + 'total-color': #fefefe, + 'total-text-shadow': 1px 0 4px rgb(39 116 245 / 50%) -1px 0 4px rgb( + 39 116 245 / 50% + ) 0 -1px 4px rgb(39 116 245 / 50%) 0 1px 4px rgb(39 116 245 / 50%), + 'total-letter-spacing': 5px, + 'total-webkit-text-stroke': 0.5px #3474c6, + 'label-margin-top': 5px, + 'label-font-size': 16px, + 'label-font-weight': 700, + 'label-color': #fff, + 'text-margin': 0 2px, +); + +@include b(screen-panel-attribute-model3) { + @include set-component-css-var( + 'screen-panel-attribute-model3', + $screen-panel-attribute-model3 + ); + + padding-top: getCssVar('screen-panel-attribute-model3', 'padding-top'); + margin-bottom: getCssVar('screen-panel-attribute-model3', 'margin-bottom'); + + @include e(value) { + height: getCssVar('screen-panel-attribute-model3', 'value-height'); + text-align: center; + background-image: getCssVar( + 'screen-panel-attribute-model3', + 'value-background-image' + ); + background-repeat: no-repeat; + background-position: center; + } + + @include e(total) { + padding-top: getCssVar( + 'screen-panel-attribute-model3', + 'total-padding-top' + ); + font-size: getCssVar('screen-panel-attribute-model3', 'total-font-size'); + color: getCssVar('screen-panel-attribute-model3', 'total-font-size'); + text-shadow: getCssVar( + 'screen-panel-attribute-model3', + 'total-text-shadow' + ); + letter-spacing: getCssVar( + 'screen-panel-attribute-model3', + 'total-letter-spacing' + ); + -webkit-text-stroke: getCssVar( + 'screen-panel-attribute-model3', + 'total-webkit-text-stroke' + ); + } + + @include e(label) { + display: block; + margin-top: getCssVar('screen-panel-attribute-model3', 'label-margin-top'); + font-size: getCssVar('screen-panel-attribute-model3', 'label-font-size'); + font-weight: getCssVar( + 'screen-panel-attribute-model3', + 'label-font-weight' + ); + color: getCssVar('screen-panel-attribute-model3', 'label-color'); + text-align: center; + } + @include e(text) { + margin: 0 2px; + } +} + +$screen-panel-attribute-model2: ( + 'min-width': 366px, + 'height': 90px, + 'textvalue-top': 0, + 'textvalue-left': 50%, + 'textvalue-width': 288px, + 'textvalue-height': 100%, + 'textvalue-background-image': + url('../../public/assets/img/today-new-student.png'), + 'textvalue-transform': translateX(-50%), + 'label-padding-top': 10px, + 'label-font-size': 18px, + 'label-font-weight': normal, + 'label-color': #409df1, + 'label-letter-spacing': 4px, + 'label-webkit-text-stroke': 0.3px, + 'value-padding-top': 6px, + 'value-font-size': 36px, + 'value-font-weight': bold, + 'value-color': transparent, + 'value-background': linear-gradient(to bottom, white, #3cbef1), + 'value-transform': skewX(-10deg), + 'unit-font-size': 18px, + 'unit-font-weight': 600, +); + +@include b(screen-panel-attribute-model2) { + @include set-component-css-var( + 'screen-panel-attribute-model2', + $screen-panel-attribute-model2 + ); + + position: relative; + min-width: getCssVar('screen-panel-attribute-model2', 'min-width'); + height: getCssVar('screen-panel-attribute-model2', 'height'); + overflow: hidden; + text-align: center; + + @include e(textvalue) { + position: absolute; + top: getCssVar('screen-panel-attribute-model2', 'textvalue-top'); + left: getCssVar('screen-panel-attribute-model2', 'textvalue-left'); + display: flex; + flex-direction: column; + width: getCssVar('screen-panel-attribute-model2', 'textvalue-width'); + height: getCssVar('screen-panel-attribute-model2', 'textvalue-height'); + background-image: getCssVar( + 'screen-panel-attribute-model2', + 'textvalue-background-image' + ); + transform: getCssVar( + 'screen-panel-attribute-model2', + 'textvalue-transform' + ); + } + @include e(label) { + display: flex; + flex: 0; + justify-content: center; + padding-top: getCssVar( + 'screen-panel-attribute-model2', + 'label-padding-top' + ); + font-size: getCssVar('screen-panel-attribute-model2', 'label-font-size'); + font-weight: getCssVar( + 'screen-panel-attribute-model2', + 'label-font-weight' + ); + color: getCssVar('screen-panel-attribute-model2', 'label-color'); + letter-spacing: getCssVar( + 'screen-panel-attribute-model2', + 'label-letter-spacing' + ); + -webkit-text-stroke: getCssVar( + 'screen-panel-attribute-model2', + 'label-webkit-text-stroke' + ); + } + + @include e(value) { + display: flex; + flex: 1; + align-items: baseline; + justify-content: center; + padding-top: getCssVar( + 'screen-panel-attribute-model2', + 'value-padding-top' + ); + font-size: getCssVar('screen-panel-attribute-model2', 'value-font-size'); + font-weight: getCssVar( + 'screen-panel-attribute-model2', + 'value-font-weight' + ); + color: getCssVar('screen-panel-attribute-model2', 'value-color'); + background: getCssVar('screen-panel-attribute-model2', 'value-background'); + background-clip: text; + transform: getCssVar('screen-panel-attribute-model2', 'value-transform'); + } + + @include e(unit) { + display: inline-flex; + align-items: end; + font-size: getCssVar('screen-panel-attribute-model2', 'unit-font-size'); + font-weight: getCssVar('screen-panel-attribute-model2', 'unit-font-weight'); + } +} diff --git a/src/screen-panel-attribute/screen-panel-attribute.tsx b/src/screen-panel-attribute/screen-panel-attribute.tsx new file mode 100644 index 0000000..c037d3e --- /dev/null +++ b/src/screen-panel-attribute/screen-panel-attribute.tsx @@ -0,0 +1,102 @@ +import { defineComponent, PropType, computed } from 'vue'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { useNamespace } from '@ibiz-template/vue3-util'; +import { IPanelRawItem } from '@ibiz/model-core'; +import { ScreenPanelAttributeController } from './screen-panel-attribute.controller'; +import './screen-panel-attribute.scss'; + +export const ScreenPanelAttribute = defineComponent({ + name: 'ScreenPanelAttribute', + props: { + modelData: { + type: Object as PropType, + required: true, + }, + controller: { + type: ScreenPanelAttributeController, + required: true, + }, + }, + setup(props) { + const ns = useNamespace('screen-panel-attribute'); + + const c = props.controller; + console.log('c', c, props); + + const label = computed(() => { + if (c.model.caption) { + return c.model.caption; + } + return ''; + }); + + const renderModel1 = () => { + return ( +
+
+
+
+
{0}
+
{c.unit}
+
+
{label.value}
+
+
+ ); + }; + + const renderModel2 = () => { + return ( +
+
+
{label.value}
+
+ {0} +
{c.unit}
+
+
+
+ ); + }; + + const renderModel3 = () => { + return ( +
+
+
{0}
+
+
+ + {label.value} + +
+
+ ); + }; + + const renderModel = () => { + if (c.showModel === 'model1') { + return renderModel1(); + } + if (c.showModel === 'model2') { + return renderModel2(); + } + if (c.showModel === 'model3') { + return renderModel3(); + } + }; + + return { + ns, + c, + label, + renderModel1, + renderModel2, + renderModel3, + renderModel, + }; + }, + render() { + return this.renderModel(); + }, +}); -- Gitee