diff --git a/packages/grid-design/src/components/grid-shell/grid-shell.scss b/packages/grid-design/src/components/grid-shell/grid-shell.scss index d31df4553255395937faf73f4e446c4315f45c50..ee004ad447c4228ae22d594b93cfbbaa519b5ec5 100644 --- a/packages/grid-design/src/components/grid-shell/grid-shell.scss +++ b/packages/grid-design/src/components/grid-shell/grid-shell.scss @@ -43,6 +43,7 @@ :root.studio_dark{ @include b('light-theme-shell'){ + .ibiz-control-treegrid .el-pagination.is-background .el-pager li.is-active, .ibiz-control-grid .el-pagination.is-background .el-pager li.is-active{ color: getCssVar(color,primary); background-color: getCssVar(color,primary,text); diff --git a/packages/grid-design/src/components/grid-shell/grid-shell.tsx b/packages/grid-design/src/components/grid-shell/grid-shell.tsx index f9726d71f788dfae6db32b55ceba18b9da657355..75733fd49abab1ef9f5f159aa163cf7c4b4e0067 100644 --- a/packages/grid-design/src/components/grid-shell/grid-shell.tsx +++ b/packages/grid-design/src/components/grid-shell/grid-shell.tsx @@ -86,6 +86,7 @@ export default defineComponent({ (model as IDEGridFieldColumn).appDEFieldId = gridColName; (model as IDEGridFieldColumn).valueType = 'SIMPLE'; (model as IDEGridFieldColumn).dataItemName = gridColName; + (model as IDEGridFieldColumn).treeColumnMode = item.treeitem; } if (gridColType === 'UAGRIDCOLUMN') { (model as IDEGridUAColumn).deuiactionGroup = { @@ -119,7 +120,6 @@ export default defineComponent({ valueType: 'SIMPLE', dataType: 25, }; - gridDataItems.push(dataItem); } }); @@ -136,6 +136,8 @@ export default defineComponent({ const srfAppDataEntityId = ''; const enablePagingBar = !!props.data.enablepagingbar; const pagingSize = props.data.pagingsize || 20; + const gridType = + props.data.gridstyle === 'TREEGRID' ? 'TREEGRID' : 'GRID'; const model: IDEGrid = { aggMode: 'NONE', columnEnableFilter: 2, @@ -149,15 +151,15 @@ export default defineComponent({ autoLoad: true, showBusyIndicator: true, singleSelect: true, - codeName: 'GRID', - controlType: 'GRID', + codeName: gridType, + controlType: gridType, logicName: '主表格', appDataEntityId: srfAppDataEntityId, controlParam: { id: 'grid', appId: srfAppId }, modelId: '9db1aa2be35a58b18c1974ca7cb64cc1', - modelType: 'PSDEGRID', - name: 'grid', - id: `${srfAppId}.${srfAppDataEntityId}.GRID`, + modelType: `PSDE${gridType}`, + name: `${gridType.toLowerCase()}`, + id: `${gridType}`, appId: srfAppId, }; const filterGridCols = props.gridCols?.filter( @@ -173,16 +175,33 @@ export default defineComponent({ appId: srfAppId, }; modelData.value = model; - items.value = Array.from({ length: 5 }, (_, i) => { - const data: IData = {}; - filterGridCols.forEach(item => { - const gridColName = item.psdegridcolname; - const caption = - item.logicname || item.caption || item.psdegridcolname; - data[gridColName] = `${caption}「${i + 1}」`; - }); - return data; - }); + const valCol = props.gridCols?.find(item => + [2, 3].includes(item.treeitem), + ); + items.value = Array.from( + { length: gridType === 'TREEGRID' ? 10 : 5 }, + (_, i) => { + const data: IData = { + srfkey: i, + tempsrfkey: i, + }; + props.gridCols?.forEach(item => { + if (item.gridcoltype === 'DEFGRIDCOLUMN') { + const gridColName = item.psdegridcolname; + const caption = + item.logicname || item.caption || item.psdegridcolname; + // 后7条为子数据 + const isChild = i > 2 && [4, 12].includes(item.treeitem); + const childName = + valCol?.logicname || valCol?.caption || valCol?.psdegridcolname; + data[gridColName] = `${isChild ? childName : caption}「${ + isChild ? Math.floor(i / 2) : i + 1 + }」`; + } + }); + return data; + }, + ); }; init(); @@ -213,14 +232,14 @@ export default defineComponent({ } return ( - + /> ); }, }); diff --git a/packages/md-design/src/components/dataview-shell/dataview-shell.tsx b/packages/md-design/src/components/dataview-shell/dataview-shell.tsx index de0c0a73fb31e335e7f693d0579004719405a324..5ba4fd533facb921979bfec9b010aa0939f3fc5f 100644 --- a/packages/md-design/src/components/dataview-shell/dataview-shell.tsx +++ b/packages/md-design/src/components/dataview-shell/dataview-shell.tsx @@ -96,7 +96,7 @@ export default defineComponent({ groupLayout: data.grouplayout, groupMode: enableGroup ? 'AUTO' : undefined, groupAppDEFieldId: data.grouppsdefname ? 'grouppsdefid' : undefined, - groupStyle: data.groupstyle, + groupStyle: data.groupstyle || 'DEFAULT', minorSortDir: data.minorsortdir, pagingMode: data.enablepagingbar, pagingSize: data.pagesize, @@ -106,8 +106,14 @@ export default defineComponent({ singleSelect: data.multiselect === 0, dedataViewItems, dedataViewDataItems, + enableCardNew: + props.data.enableedit && (props.data.enableedit & 128) !== 128, + enableCardEditOrder: + props.data.enableedit && (props.data.enableedit & 257) === 257, + enableEditGroup: + props.data.enableedit && (props.data.enableedit & 513) === 513, itemLayoutPanel: transformLayoutPanel(data.layoutviewpanel), - }; + } as IDEDataView; modelData.value = model; }; diff --git a/packages/md-design/src/components/kanban-shell/kanban-shell.tsx b/packages/md-design/src/components/kanban-shell/kanban-shell.tsx index e1c3fb12371ad49a1360dde3cfa98a7bc28fb2cd..e26864e38ed33ab32785cc61e47008783bc2639a 100644 --- a/packages/md-design/src/components/kanban-shell/kanban-shell.tsx +++ b/packages/md-design/src/components/kanban-shell/kanban-shell.tsx @@ -103,7 +103,7 @@ export default defineComponent({ swimlaneAppDEFieldId: data.swimlanepsdefname ? 'swimlanepsdefid' : undefined, - groupStyle: data.groupstyle, + groupStyle: data.groupstyle || 'DEFAULT', minorSortDir: data.minorsortdir, pagingMode: data.enablepagingbar, pagingSize: data.pagesize, @@ -114,6 +114,12 @@ export default defineComponent({ dedataViewItems, dedataViewDataItems, itemLayoutPanel: transformLayoutPanel(data.layoutviewpanel), + enableCardNew: + props.data.enableedit && (props.data.enableedit & 128) !== 128, + enableCardEditOrder: + props.data.enableedit && (props.data.enableedit & 257) === 257, + enableEditGroup: + props.data.enableedit && (props.data.enableedit & 513) === 513, controlParam: { appId: props.context.srfappid, ctrlParams: { diff --git a/packages/md-design/src/components/list-shell/list-shell.tsx b/packages/md-design/src/components/list-shell/list-shell.tsx index a4403f9d39b6785da464ba6b1c5d2aed445f594a..b0876e1f346692d51a3e2d6f43f3f2f04c497219 100644 --- a/packages/md-design/src/components/list-shell/list-shell.tsx +++ b/packages/md-design/src/components/list-shell/list-shell.tsx @@ -49,6 +49,10 @@ export default defineComponent({ srfkey: i + 1, srfmajortext: `srfmajortext 「${i + 1}」`, }; + if (props.data.grouppsdefname) + Object.assign(data, { + grouppsdefid: `分组${(i % 3) + 1}`, + }); delistItems.forEach(item => { if (item.itemType !== 'ACTIONITEM') { data[item.id!.toLowerCase()] = `${item.caption || item.id}「${ @@ -66,24 +70,34 @@ export default defineComponent({ const { delistItems, delistDataItems } = parseListItem( data.psdelistitems, ); + const enableGroup = + data.groupmode && data.groupmode !== 'NONE' && data.grouppsdefname + ? true + : false; const model: IDEList = { appId: props.context.srfappid, controlType: 'LIST', codeName: data.codename, - groupMode: data.groupmode, emptyText: data.emptytext, - groupStyle: data.groupstyle, minorSortDir: data.minorsortdir, mobListStyle: data.mobliststyle, pagingMode: data.enablepagingbar, pagingSize: data.pagesize, - enableGroup: false, - groupAppDEFieldId: data.grouppsdefname, + enableGroup, + groupMode: enableGroup ? 'AUTO' : undefined, + groupStyle: data.groupstyle || 'DEFAULT', + groupAppDEFieldId: data.grouppsdefname ? 'grouppsdefid' : undefined, enablePagingBar: data.enablepagingbar === 1, noSort: data.nosort, singleSelect: data.multiselect === 0, delistItems, delistDataItems, + enableRowNew: + props.data.enableedit && (props.data.enableedit & 128) !== 128, + enableRowEditOrder: + props.data.enableedit && (props.data.enableedit & 257) === 257, + enableRowEditGroup: + props.data.enableedit && (props.data.enableedit & 513) === 513, itemLayoutPanel: transformLayoutPanel(data.layoutviewpanel), }; modelData.value = model; diff --git a/packages/panel-design/public/assets/json/layout-json2/DETREEGRIDEXVIEW.json b/packages/panel-design/public/assets/json/layout-json2/DETREEGRIDEXVIEW.json index fda3c4f0a9d652d304cb0bd1af4dedea5bc6c914..f30347e818fadbd4812ac2202adf109d661c3fa1 100644 --- a/packages/panel-design/public/assets/json/layout-json2/DETREEGRIDEXVIEW.json +++ b/packages/panel-design/public/assets/json/layout-json2/DETREEGRIDEXVIEW.json @@ -134,7 +134,7 @@ "pssysviewpanelitems": [ { "itemtype": "CTRLPOS", - "predefinedtype": "TREEVIEW", + "predefinedtype": "TREEGRIDEX", "custommode": 0, "caption": "树表格", "ppssysviewpanelitemname": "view_content", diff --git a/packages/panel-design/public/assets/json/layout-json2/DETREEGRIDVIEW.json b/packages/panel-design/public/assets/json/layout-json2/DETREEGRIDVIEW.json index bb12291995409c4613340329a0bc1f9fd5f22d29..6cd083616b5a463f9a1159dda9cad45e8fc2e166 100644 --- a/packages/panel-design/public/assets/json/layout-json2/DETREEGRIDVIEW.json +++ b/packages/panel-design/public/assets/json/layout-json2/DETREEGRIDVIEW.json @@ -134,7 +134,7 @@ "pssysviewpanelitems": [ { "itemtype": "CTRLPOS", - "predefinedtype": "GRID", + "predefinedtype": "TREEGRID", "custommode": 0, "caption": "树表格", "ppssysviewpanelitemname": "view_content", diff --git a/packages/panel-design/src/components/panel-item-widgets/hooks/use-ctrl-pos/use-ctrl-pos.ts b/packages/panel-design/src/components/panel-item-widgets/hooks/use-ctrl-pos/use-ctrl-pos.ts index 9e8f8a304b3b056aefa92119632e3e1bbcf483c3..44e06130602ca2026b6990258099eed86854abf1 100644 --- a/packages/panel-design/src/components/panel-item-widgets/hooks/use-ctrl-pos/use-ctrl-pos.ts +++ b/packages/panel-design/src/components/panel-item-widgets/hooks/use-ctrl-pos/use-ctrl-pos.ts @@ -13,6 +13,7 @@ export function getCtrlIdByType(type: string, data: IData): string { switch (type) { case 'SEARCHFORM': return data.psdeformid; + case 'TREEGRIDEX': case 'TREEEXPBAR': return data.psdetreeviewid; case 'CALENDAR': @@ -21,6 +22,7 @@ export function getCtrlIdByType(type: string, data: IData): string { case 'MAP': case 'MAPEXPBAR': return data.pssysmapviewid; + case 'TREEGRID': case 'GRIDEXPBAR': return data.psdegridid; case 'LISTEXPBAR': diff --git a/packages/panel-design/src/components/panel-item-widgets/preview-componnets/view-ctrl-shell/view-ctrl-shell.tsx b/packages/panel-design/src/components/panel-item-widgets/preview-componnets/view-ctrl-shell/view-ctrl-shell.tsx index 593f1692d25dc18a5d0ad4b534e75080f9c81430..ef2f2522ef150d1dfbdbed400e6e42a9e9021869 100644 --- a/packages/panel-design/src/components/panel-item-widgets/preview-componnets/view-ctrl-shell/view-ctrl-shell.tsx +++ b/packages/panel-design/src/components/panel-item-widgets/preview-componnets/view-ctrl-shell/view-ctrl-shell.tsx @@ -25,6 +25,8 @@ const CtrlTypeEntityMap: Map = new Map([ ['WIZARDPANEL', 'psdewizard'], ['STATEWIZARDPANEL', 'psdewizard'], ['SEARCHBAR', 'pssyssearchbar'], + ['TREEGRIDEX', 'psdetreeview'], + ['TREEGRID','psdegrid'], ]); export default defineComponent({ diff --git a/packages/panel-design/src/components/panel-item-widgets/widgets/view-design-control/view-design-control.tsx b/packages/panel-design/src/components/panel-item-widgets/widgets/view-design-control/view-design-control.tsx index 63ed77c263e9e57323075cf88c64d1c39a602933..05ed99f2b26a892cc6c987cd5b5310cc1e710025 100644 --- a/packages/panel-design/src/components/panel-item-widgets/widgets/view-design-control/view-design-control.tsx +++ b/packages/panel-design/src/components/panel-item-widgets/widgets/view-design-control/view-design-control.tsx @@ -1,21 +1,21 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ import { - PropType, Ref, + ref, + watch, + PropType, computed, - defineComponent, onMounted, onUnmounted, - ref, - watch, + defineComponent, } from 'vue'; import { clone } from 'ramda'; import { IAppDEService } from '@ibiz-template/runtime'; import { useNamespace } from '@ibiz-template/vue3-util'; import { IPortalMessage } from '@ibiz-template/core'; import { - PanelContentProvider, PanelItemActionItem, + PanelContentProvider, PanelItemDataProvider, } from '../../../../providers'; import { useCtrlPos } from '../../hooks'; diff --git a/packages/panel-design/src/providers/util/create-provider/create-provider.ts b/packages/panel-design/src/providers/util/create-provider/create-provider.ts index 51beac3dd5f1fbcb0211d24c6725265f4ff146d8..8ca7dddea4e9820501b1e0d5f6498be9da6a38ed 100644 --- a/packages/panel-design/src/providers/util/create-provider/create-provider.ts +++ b/packages/panel-design/src/providers/util/create-provider/create-provider.ts @@ -74,6 +74,8 @@ export function createProvider( case 'PANEL': case 'WIZARDPANEL': case 'STATEWIZARDPANEL': + case 'TREEGRID': + case 'TREEGRIDEX': return new PanelCtrlPosProvider( model, type,