diff --git a/io.sc.platform.core.frontend/src/platform/components/form/Field.vue b/io.sc.platform.core.frontend/src/platform/components/form/Field.vue new file mode 100644 index 00000000..dfd3c22b --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/form/Field.vue @@ -0,0 +1,38 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/form/FormElement.vue b/io.sc.platform.core.frontend/src/platform/components/form/FormElement.vue new file mode 100644 index 00000000..fd566f48 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/form/FormElement.vue @@ -0,0 +1,35 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/form/FormGroup.vue b/io.sc.platform.core.frontend/src/platform/components/form/FormGroup.vue new file mode 100644 index 00000000..213404dd --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/form/FormGroup.vue @@ -0,0 +1,124 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue b/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue index 28775188..237bc9fe 100644 --- a/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue +++ b/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue @@ -1,28 +1,9 @@ + + + + @@ -40,14 +44,15 @@ import { inject, computed, ref } from 'vue'; import { useQuasar } from 'quasar'; import { Constant, GridTools } from '../../ts/index'; -import CheckboxSelection from './CheckboxSelection.vue'; -import Dense from './Dense.vue'; -import DisplayColumn from './DisplayColumn.vue'; -import Fullscreen from './Fullscreen.vue'; -import Separator from './Separator.vue'; -import SortNo from './SortNo.vue'; -import StickyColumn from './StickyColumn.vue'; -import AloneGorup from './AloneGroup.vue'; +import CheckboxSelection from './src/CheckboxSelection.vue'; +import Dense from './src/Dense.vue'; +import DisplayColumn from './src/DisplayColumn.vue'; +import Fullscreen from './src/Fullscreen.vue'; +import Separator from './src/Separator.vue'; +import SortNo from './src/SortNo.vue'; +import Stripe from './src/Stripe.vue'; +import StickyColumn from './src/StickyColumn.vue'; +import AloneGorup from './src/AloneGroup.vue'; const $q = useQuasar(); const tools = inject('tools'); diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/extra/config/AloneGroup.vue b/io.sc.platform.core.frontend/src/platform/components/grid/extra/config/src/AloneGroup.vue similarity index 96% rename from io.sc.platform.core.frontend/src/platform/components/grid/extra/config/AloneGroup.vue rename to io.sc.platform.core.frontend/src/platform/components/grid/extra/config/src/AloneGroup.vue index 802f0c2a..96d04f16 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/extra/config/AloneGroup.vue +++ b/io.sc.platform.core.frontend/src/platform/components/grid/extra/config/src/AloneGroup.vue @@ -18,7 +18,7 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/ts/GridTools.ts b/io.sc.platform.core.frontend/src/platform/components/grid/ts/GridTools.ts index 65a60ee4..62b3b09e 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/ts/GridTools.ts +++ b/io.sc.platform.core.frontend/src/platform/components/grid/ts/GridTools.ts @@ -146,6 +146,8 @@ export class GridTools { stickyNum: props.stickyNum, useCheckboxSelection: props.checkboxSelection, showSortNo: props.sortNo, + stripe: props.stripe ? true : false, + stripeColor: typeof props.stripe === 'boolean' ? '#fafafa' : props.stripe, dense: dense, denseToolbar: props.denseToolbar !== undefined ? props.denseToolbar : false, denseHeader: props.denseHeader !== undefined ? props.denseHeader : false, diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/ts/function/Operator.ts b/io.sc.platform.core.frontend/src/platform/components/grid/ts/function/Operator.ts index 55fae7e0..d7fe860a 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/ts/function/Operator.ts +++ b/io.sc.platform.core.frontend/src/platform/components/grid/ts/function/Operator.ts @@ -7,6 +7,11 @@ import { Constant, PropsType, TableType } from '../index'; * w-grid 表格操作函数 */ export class Operator extends Base { + /** + * 斑马纹监听器是否已启动 + */ + stripeWatch: boolean = false; + constructor(props: PropsType, table: TableType) { super(props, table); this.tableFullscreen = this.tableFullscreen.bind(this); @@ -106,13 +111,24 @@ export class Operator extends Base { if (trArr.length > 0) { for (let i = 0; i < trArr.length; i++) { if (i % 2 !== 0) { - trArr[i].style['background-color'] = typeof this.props.stripe === 'boolean' ? '#fafafa' : this.props.stripe; + trArr[i].style['background-color'] = this.table.configStore.stripeColor; } else { trArr[i].style['background-color'] = ''; } } } } + /** + * 清除所有斑马纹样式 + */ + private cleanStripeStyle() { + const tbodyDom = this.getTbodyDom(); + for (let i = 0; i < tbodyDom.children.length; i++) { + if (!tbodyDom.children[i].classList.contains('groupTr')) { + tbodyDom.children[i].style['background-color'] = ''; + } + } + } private getTbodyDom() { const tableElement = this.instance.getHtmlElement(); @@ -136,8 +152,10 @@ export class Operator extends Base { * 重新设置斑马纹样式(用于拖拽排序后等场景导致的斑马纹样式错乱) */ resetStripeStyle() { - if (!Tools.isEmpty(this.props.stripe) && this.props.stripe !== false) { + if (this.table.configStore.stripe) { this.setStripeStyle(this.getStripeTrArr()); + } else { + this.cleanStripeStyle(); } } @@ -145,7 +163,7 @@ export class Operator extends Base { * 设置斑马纹 */ setStripe() { - if (!Tools.isEmpty(this.props.stripe) && this.props.stripe !== false) { + if (this.table.configStore.stripe) { const trArr = this.getStripeTrArr(); // 初始化时设置一遍样式 this.setStripeStyle(trArr); @@ -154,7 +172,7 @@ export class Operator extends Base { const observer = new MutationObserver((mutations) => { const currentTrArr = this.getStripeTrArr(); const currentRowCount = currentTrArr.length; - if (currentRowCount !== previousRowCount) { + if (currentRowCount !== previousRowCount && this.table.configStore.stripe) { previousRowCount = currentRowCount; this.setStripeStyle(currentTrArr); } @@ -165,6 +183,7 @@ export class Operator extends Base { childList: true, // 监视子节点增删 subtree: false, // 若tr嵌套在更深层级需启用 }); + this.stripeWatch = true; } } diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/ts/types/table/ConfigPanelStoreType.ts b/io.sc.platform.core.frontend/src/platform/components/grid/ts/types/table/ConfigPanelStoreType.ts index dfc2943e..1166f3d0 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/ts/types/table/ConfigPanelStoreType.ts +++ b/io.sc.platform.core.frontend/src/platform/components/grid/ts/types/table/ConfigPanelStoreType.ts @@ -26,6 +26,14 @@ export type ConfigPanelStoreType = { * 是否显示前端序号列 */ showSortNo: boolean, + /** + * 是否显示斑马纹 + */ + stripe: boolean, + /** + * 斑马纹颜色 + */ + stripeColor: string, /** * 表格整体紧凑 */ diff --git a/io.sc.platform.core.frontend/src/views/likm/Form.vue b/io.sc.platform.core.frontend/src/views/likm/Form.vue index 2e36db7e..39a90698 100644 --- a/io.sc.platform.core.frontend/src/views/likm/Form.vue +++ b/io.sc.platform.core.frontend/src/views/likm/Form.vue @@ -1,6 +1,6 @@ diff --git a/io.sc.platform.core.frontend/src/views/likm/Grid.vue b/io.sc.platform.core.frontend/src/views/likm/Grid.vue index b7b8d409..1d97977c 100644 --- a/io.sc.platform.core.frontend/src/views/likm/Grid.vue +++ b/io.sc.platform.core.frontend/src/views/likm/Grid.vue @@ -1,54 +1,227 @@ diff --git a/io.sc.platform.core.frontend/src/views/likm/SelectMenuTreeGrid.vue b/io.sc.platform.core.frontend/src/views/likm/SelectMenuTreeGrid.vue new file mode 100644 index 00000000..425de10c --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/likm/SelectMenuTreeGrid.vue @@ -0,0 +1,125 @@ + + diff --git a/io.sc.platform.core.frontend/src/views/likm/SelectUserDialog.vue b/io.sc.platform.core.frontend/src/views/likm/SelectUserDialog.vue index 60b81fd9..1bee27ec 100644 --- a/io.sc.platform.core.frontend/src/views/likm/SelectUserDialog.vue +++ b/io.sc.platform.core.frontend/src/views/likm/SelectUserDialog.vue @@ -1,7 +1,7 @@