From aff3a18bd2ad0a14d8acb019cbba10a6860d33f4 Mon Sep 17 00:00:00 2001 From: zhf <1204297681@qq.com> Date: Fri, 14 Nov 2025 09:59:10 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=9C=8B=E6=9D=BF=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B8=83?= =?UTF-8?q?=E5=B1=80=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom-dashboard-design.scss | 102 ++++++---------- .../custom-dashboard-design.tsx | 111 ++++++------------ 2 files changed, 68 insertions(+), 145 deletions(-) diff --git a/src/control/dashboard/custom-dashboard-design/custom-dashboard-design.scss b/src/control/dashboard/custom-dashboard-design/custom-dashboard-design.scss index 48dae347f..c00e65907 100644 --- a/src/control/dashboard/custom-dashboard-design/custom-dashboard-design.scss +++ b/src/control/dashboard/custom-dashboard-design/custom-dashboard-design.scss @@ -1,33 +1,29 @@ $custom-dashboard-design: ( // 颜色 - color: getCssVar(color, text, 0), - bg-color: getCssVar(color, bg, 0), save-btn-color: getCssVar(color, primary), - group-header-color: getCssVar(color, text, 1), - group-content-bg-color: getCssVar(color, bg, 1), - remove-btn-color: getCssVar(color, danger), - add-btn-color: getCssVar(color, primary), + item-bg-color: getCssVar(color, bg, 0), + + // 高度 + item-height: getCssVar(height-control, large), // 间距 - header-padding: getCssVar(spacing, base), - content-padding: 0 getCssVar(spacing, base) getCssVar(spacing, base), - group-margin-bottom: getCssVar(spacing, base), - group-header-margin-bottom: getCssVar(spacing, base), - group-content-padding: getCssVar(spacing, base) getCssVar(spacing, base-tight), - item-padding: getCssVar(spacing, base-tight) 0, - btn-margin-right: getCssVar(spacing, tight), + padding: getCssVar(spacing, base), + header-padding: 0 0 getCssVar(spacing, tight), + item-padding: 0 getCssVar(spacing, base), + item-margin: getCssVar(spacing, tight) 0, + item-icon-margin-right: getCssVar(spacing, extra-tight), + item-checkbox-margin-left: getCssVar(spacing, extra-tight), // 圆角 - group-content-border-radius: getCssVar(border, radius, medium), + item-border-radius: getCssVar(border, radius, medium), // 字体大小 - btn-font-size: getCssVar(font-size, header-3), + header-font-size: getCssVar(font-size, header-5), + close-btn-font-size: getCssVar(font-size, header-3), + item-font-size: getCssVar(font-size, header-6), // 字体粗细 header-title-font-weight: getCssVar(font-weight, bold), - - // 边框 - item-border-bottom: 1px solid getCssVar(color, border), ); @include b(custom-dashboard-design) { @@ -36,8 +32,7 @@ $custom-dashboard-design: ( display: flex; flex-direction: column; height: 100%; - color: getCssVar(custom-dashboard-design, color); - background-color: getCssVar(custom-dashboard-design, bg-color); + padding: getCssVar(custom-dashboard-design, padding); } @include b(custom-dashboard-design-header) { @@ -46,10 +41,11 @@ $custom-dashboard-design: ( align-items: center; justify-content: space-between; padding: getCssVar(custom-dashboard-design, header-padding); + font-size: getCssVar(custom-dashboard-design, header-font-size); @include e(close-btn) { flex-shrink: 0; - font-size: getCssVar(custom-dashboard-design, btn-font-size); + font-size: getCssVar(custom-dashboard-design, close-btn-font-size); cursor: pointer; } @@ -69,56 +65,27 @@ $custom-dashboard-design: ( @include b(custom-dashboard-design-content) { flex: 1 1 0; - padding: getCssVar(custom-dashboard-design, content-padding); overflow: auto; } -@include b(custom-dashboard-design-group) { - margin-bottom: getCssVar(custom-dashboard-design, group-margin-bottom); - - &:last-child { - margin-bottom: 0; - } -} - -@include b(custom-dashboard-design-group-header) { - margin-bottom: getCssVar(custom-dashboard-design, group-header-margin-bottom); - color: getCssVar(custom-dashboard-design, group-header-color); -} - -@include b(custom-dashboard-design-group-content) { - padding: getCssVar(custom-dashboard-design, group-content-padding); - background-color: getCssVar(custom-dashboard-design, group-content-bg-color); - border-radius: getCssVar(custom-dashboard-design, group-content-border-radius); - - .van-empty { - padding: 0; - } - - .van-empty__bottom { - margin-top: 0; - } -} - @include b(custom-dashboard-design-item) { display: flex; + align-items: center; + height: getCssVar(custom-dashboard-design, item-height); padding: getCssVar(custom-dashboard-design, item-padding); - border-bottom: getCssVar(custom-dashboard-design, item-border-bottom); - - @include e(remove-btn) { - flex-shrink: 0; - margin-right: getCssVar(custom-dashboard-design, btn-margin-right); - font-size: getCssVar(custom-dashboard-design, btn-font-size); - color: getCssVar(custom-dashboard-design, remove-btn-color); - cursor: pointer; - } - - @include e(add-btn) { - flex-shrink: 0; - margin-right: getCssVar(custom-dashboard-design, btn-margin-right); - font-size: getCssVar(custom-dashboard-design, btn-font-size); - color: getCssVar(custom-dashboard-design, add-btn-color); - cursor: pointer; + margin: getCssVar(custom-dashboard-design, item-margin); + font-size: getCssVar(custom-dashboard-design, item-font-size); + line-height: getCssVar(custom-dashboard-design, item-height); + background-color: getCssVar(custom-dashboard-design, item-bg-color); + border-radius: getCssVar(custom-dashboard-design, item-border-radius); + + @include e(icon) { + display: flex; + flex: 0 0 auto; + align-items: center; + width: 1em; + height: 1em; + margin-right: getCssVar(custom-dashboard-design, item-icon-margin-right); } @include e(text) { @@ -128,8 +95,9 @@ $custom-dashboard-design: ( white-space: nowrap; } - &:first-child { - padding-top: 0; + @include e(checkbox) { + flex: 0 0 auto; + margin-left: getCssVar(custom-dashboard-design, item-checkbox-margin-left); } } diff --git a/src/control/dashboard/custom-dashboard-design/custom-dashboard-design.tsx b/src/control/dashboard/custom-dashboard-design/custom-dashboard-design.tsx index 652ac625c..2ea4a1cae 100644 --- a/src/control/dashboard/custom-dashboard-design/custom-dashboard-design.tsx +++ b/src/control/dashboard/custom-dashboard-design/custom-dashboard-design.tsx @@ -27,38 +27,20 @@ export const CustomDashboardDesign = defineComponent({ ); // 门户部件列表 - const items = portlets.map(item => { - return { - id: item.model.id!, - title: item.model.title, - }; - }); - - // 默认门户部件列表 - const defaultItems = ref( - items.filter(item => { - if (!Array.isArray(customDashboard.portlets)) { - return true; - } - return customDashboard.portlets.includes(item.id); + const items = ref( + portlets.map(item => { + const id = item.model.id!; + const visible = !Array.isArray(customDashboard.portlets) + ? true + : customDashboard.portlets.includes(id); + return { + id, + title: item.model.title, + visible, + }; }), ); - // 隐藏门户部件列表 - const hiddenItems = ref( - items.filter(item => !defaultItems.value.includes(item)), - ); - - // 处理移除门户部件 - const handleRemove = (index: number) => { - hiddenItems.value.push(...defaultItems.value.splice(index, 1)); - }; - - // 处理添加门户部件 - const handleAdd = (index: number) => { - defaultItems.value.push(...hiddenItems.value.splice(index, 1)); - }; - // 处理关闭 const handleClose = () => { props.modal.dismiss(); @@ -66,16 +48,15 @@ export const CustomDashboardDesign = defineComponent({ // 处理保存 const handleSave = async () => { - await customDashboard.save(defaultItems.value.map(item => item.id)); + await customDashboard.save( + items.value.filter(item => item.visible).map(item => item.id), + ); handleClose(); }; return { ns, - defaultItems, - hiddenItems, - handleRemove, - handleAdd, + items, handleClose, handleSave, }; @@ -100,50 +81,24 @@ export const CustomDashboardDesign = defineComponent({
-
-
- {ibiz.i18n.t('control.dashboard.showList')} -
-
- {this.defaultItems.map((item, index) => { - return ( -
- this.handleRemove(index)} - > -
- {item.title || item.id} -
-
- ); - })} - {this.defaultItems.length === 0 ? : null} -
-
-
-
- {ibiz.i18n.t('control.dashboard.hiddenList')} -
-
- {this.hiddenItems.map((item, index) => { - return ( -
- this.handleAdd(index)} - > -
- {item.title || item.id} -
-
- ); - })} - {this.hiddenItems.length === 0 ? : null} -
-
+ {this.items.map(item => { + return ( +
+ +
+ {item.title || item.id} +
+ +
+ ); + })} + {this.items.length === 0 ? : null}
); -- Gitee From b83f5a5afbe26ebf261d0eeb68b66a13e25e2d23 Mon Sep 17 00:00:00 2001 From: zhf <1204297681@qq.com> Date: Fri, 14 Nov 2025 10:02:52 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E9=94=9A=E7=82=B9=E6=9C=AA=E5=9B=BA=E5=AE=9A=E5=9C=A8=E8=A7=86?= =?UTF-8?q?=E5=8F=A3=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/control/form/edit-form/edit-form.scss | 33 +++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/src/control/form/edit-form/edit-form.scss b/src/control/form/edit-form/edit-form.scss index 440c62405..9ea2f731b 100644 --- a/src/control/form/edit-form/edit-form.scss +++ b/src/control/form/edit-form/edit-form.scss @@ -1,25 +1,48 @@ +$control-edit-form: ( + // 边距 + sidebar-topright-top: calc(#{getCssVar(view-page-caption, line-height)} + 2 * #{getCssVar(spacing, tight)}), + sidebar-topright-right: rem(0px), + sidebar-bottomright-bottom: rem(0px), + sidebar-bottomright-right: rem(0px), + sidebar-middleright-top: 50%, + sidebar-middleright-right: rem(0px), +); + @include b(control-edit-form) { width: 100%; @include e(anchor) { + @include set-component-css-var('control-edit-form', $control-edit-form); + position: relative; + .van-index-anchor { padding: 0; } + + // 右侧 + @include m(middleright) { + .van-index-bar__sidebar { + top: getCssVar('control-edit-form', 'sidebar-middleright-top'); + right: getCssVar('control-edit-form', 'sidebar-middleright-right'); + } + } + // 右下角 @include m(bottomright) { .van-index-bar__sidebar { - bottom: 0; - transform: none; top: auto; + right: getCssVar('control-edit-form', 'sidebar-bottomright-right'); + bottom: getCssVar('control-edit-form', 'sidebar-bottomright-bottom'); + transform: none; } } + // 右上角 @include m(topright) { .van-index-bar__sidebar { - position: absolute; - top: 0; + top: getCssVar('control-edit-form', 'sidebar-topright-top'); + right: getCssVar('control-edit-form', 'sidebar-topright-right'); transform: none; - bottom: auto; } } } -- Gitee From dfe7fb3ccb33dd6702efee5cf6fc52f056dbaf73 Mon Sep 17 00:00:00 2001 From: zhf <1204297681@qq.com> Date: Fri, 14 Nov 2025 10:06:42 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA=E6=98=BE=E7=A4=BA=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E4=B8=8D=E6=AD=A3=E7=A1=AE=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form-item-container.scss | 70 +++++++++++++------ 1 file changed, 50 insertions(+), 20 deletions(-) diff --git a/src/control/form/form-detail/form-item/form-item-container/form-item-container.scss b/src/control/form/form-detail/form-item/form-item-container/form-item-container.scss index 70f3da031..57fd712eb 100644 --- a/src/control/form/form-detail/form-item/form-item-container/form-item-container.scss +++ b/src/control/form/form-detail/form-item/form-item-container/form-item-container.scss @@ -1,43 +1,73 @@ /* stylelint-disable order/properties-order */ $form-item-container: ( - label-width: rem(130px), - line-height: getCssVar(form-item, line-height), + // 颜色 require-mark-color: getCssVar(color, danger), - container-padding: getCssVar(spacing, base), - left-container-padding: getCssVar(spacing, base), - error-margin-top: getCssVar(spacing, extra-tight), bg-color: getCssVar(color, bg, 1), - label-font-size: getCssVar(font-size, header-6), label-text-color: getCssVar(color, text, 0), - container-error-padding: 0 getCssVar(spacing, base), - editor-padding: getCssVar(spacing, tight) getCssVar(spacing, none) - getCssVar(spacing, tight) getCssVar(spacing, none), - border: rem(1px) getCssVar(color, border) solid, - border-radius: rem(4px), - border-width: calc(100% - getCssVar(spacing, base) * 2), underline-color: getCssVar(color, border), + + // 宽度 + label-width: rem(130px), + underline-width: calc(100% - getCssVar(spacing, base) * 2), + + // 高度 editor-min-height: calc( getCssVar(form-item, line-height) + 2 * getCssVar(spacing, tight) ), - border-editor-padding: getCssVar(spacing, tight), border-editor-min-height: calc( getCssVar(form-item, line-height) + 2 * getCssVar(spacing, tight) ), + + // 间距 + container-padding: getCssVar(spacing, base), + left-container-padding: getCssVar(spacing, base), + error-margin-top: getCssVar(spacing, extra-tight), + container-error-padding: 0 getCssVar(spacing, base), + editor-padding: getCssVar(spacing, tight) getCssVar(spacing, none) + getCssVar(spacing, tight) getCssVar(spacing, none), + border-editor-padding: getCssVar(spacing, tight), + + // 圆角 + border-radius: rem(4px), + + // 字体大小 + label-font-size: getCssVar(font-size, header-6), + + // 行高 + line-height: getCssVar(form-item, line-height), + + // 边框 + border: rem(1px) getCssVar(color, border) solid, + border-width: calc(100% - getCssVar(spacing, base) * 2), ); $form-item-label: ( - line-height: 1, - font-size: getCssVar(font-size, header-5), + // 颜色 text-color: getCssVar(color, text, 0), + + // 间距 icon-padding-right: getCssVar(spacing, extra-tight), + + // 字体大小 + font-size: getCssVar(font-size, header-5), + + // 行高 + line-height: 1, ); $form-item-popover: ( - font-size: getCssVar(font-size, header-6), + // 颜色 + link-color: getCssVar(color, link), + + // 间距 padding: getCssVar(spacing, tight), - cell-border: 1px solid getCssVar(color, border), cell-padding: getCssVar(spacing, extra-tight) getCssVar(spacing, tight), - link-color: getCssVar(color, link), + + // 字体大小 + font-size: getCssVar(font-size, header-6), + + // 边框 + cell-border: 1px solid getCssVar(color, border), ); // 表单项基础样式 @@ -60,7 +90,7 @@ $form-item-popover: ( &::after { position: absolute; z-index: 1; - width: 100%; + width: getCssVar(form-item-container, underline-width); height: rem(1px); content: ''; background-color: getCssVar(form-item-container, underline-color); @@ -269,7 +299,7 @@ $form-item-popover: ( @include b(form-item-container-error) { position: absolute; bottom: 0; - width: 100%; + width: getCssVar(form-item-container, underline-width); font-size: getCssVar('form-item', 'error-font-size'); line-height: getCssVar('form-item', 'font-size'); color: getCssVar('form-item', 'error-color'); -- Gitee From c8fbab788819c443b9bc681a9744295cd176c2f8 Mon Sep 17 00:00:00 2001 From: zhf <1204297681@qq.com> Date: Fri, 14 Nov 2025 10:09:37 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E7=AB=AF=E5=A4=9A=E6=95=B0=E6=8D=AE=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=E7=9A=84=E9=80=89=E6=8B=A9=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 +++ .../data-picker/ibiz-mpicker/ibiz-mpicker.tsx | 25 +++++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f11df7de..4aedd7d8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -123,6 +123,8 @@ - 迁移数据关系分页通知事件(分页切换)至控制器中 - 优化浮动按钮及信息项通用组件的绘制逻辑及样式 - 优化分页导航引擎的视图刷新逻辑,使其与pc端视图刷新保持一致 +- 修改数据看板自定义布局逻辑 +- 修改移动端多数据选择编辑器的选择逻辑 ### Fixed @@ -150,6 +152,8 @@ - 修复菜单图标样式呈现不正确异常 - 修复开启下拉刷新后视图返回按钮失效异常 - 修复数据关系分页隐藏编辑项逻辑计算异常及计数器禁用未生效 +- 修复表单锚点未固定在视口异常 +- 修复表单错误提示显示样式不正确异常 ## [0.7.41-alpha.19] - 2025-10-16 diff --git a/src/editor/data-picker/ibiz-mpicker/ibiz-mpicker.tsx b/src/editor/data-picker/ibiz-mpicker/ibiz-mpicker.tsx index 313efd42c..f000e18c9 100644 --- a/src/editor/data-picker/ibiz-mpicker/ibiz-mpicker.tsx +++ b/src/editor/data-picker/ibiz-mpicker/ibiz-mpicker.tsx @@ -321,11 +321,11 @@ export const IBizMPicker = defineComponent({ }; const openPicker = async () => { - if (props.disabled || props.readonly) { - return; - } - showPicker.value = true; - onSearch(); + // if (props.disabled || props.readonly) { + // return; + // } + // showPicker.value = true; + // onSearch(); }; return { @@ -403,6 +403,11 @@ export const IBizMPicker = defineComponent({ this.ns.b('select-item'), this.ns.bm('select-item', 'more'), ]} + onClick={(event: MouseEvent) => { + if (this.c.model.pickupAppViewId) { + this.openPickUpView(event); + } + }} > + {this.selectItems.length - showNum} @@ -430,20 +435,20 @@ export const IBizMPicker = defineComponent({ > ), - this.c.model.appDEDataSetId && ( - - ), + // this.c.model.appDEDataSetId && ( + // + // ), ]; }, }} )} - + > */} ); }, -- Gitee