提交 d02efe19 编写于 作者: Shine-zwj's avatar Shine-zwj

update:更新表格

上级 c8e48f99
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
title: "{{item.caption}}", title: "{{item.caption}}",
columnType: "{{item.columnType}}", columnType: "{{item.columnType}}",
{{#if item.align}} {{#if item.align}}
align: "{{item.align}}", align: "{{lowerCase item.align}}",
{{/if}} {{/if}}
{{#neq lastColumn true}} {{#neq lastColumn true}}
{{#if item.widthUnit 'PX'}} {{#if item.widthUnit 'PX'}}
...@@ -19,7 +19,10 @@ ...@@ -19,7 +19,10 @@
{{/each}} {{/each}}
], ],
{{else}} {{else}}
dataIndex: "{{lowerCase item.codeName}}", {{#eq item.columnType 'UAGRIDCOLUMN'}}
fixed: "right",
{{/eq}}
dataIndex: "{{#if item.dataItemName}}{{lowerCase item.dataItemName}}{{else}}{{lowerCase item.codeName}}{{/if}}",
ellipsis: true, ellipsis: true,
enableSort: {{item.enableSort}}, enableSort: {{item.enableSort}},
{{#if item.aggMode}} {{#if item.aggMode}}
......
{{#neq item.columnType 'GROUPGRIDCOLUMN'}} {{#if (neq item.columnType 'GROUPGRIDCOLUMN')}}
<div v-if="column.dataIndex === '{{item.codeName}}'" class="table-cell"> <div v-if="Object.is(column.dataIndex, '{{item.codeName}}')" class="table-cell">
{{#eq item.columnType 'DEFGRIDCOLUMN'}} {{#if (eq item.columnType 'DEFGRIDCOLUMN')}}
{{#if item.enableRowEdit}} {{#if item.enableRowEdit}}
<div v-if="state.rowEditState" class="editor-cell"> <div v-if="state.rowEditState" class="editor-cell">
{{#each ctrl.psDEGridEditItems as | editColumn | }} {{#each ctrl.psDEGridEditItems as | editColumn | }}
{{#eq editColumn.codeName (item.codeName)}} {{#eq editColumn.codeName (item.codeName)}}
...@@ -20,13 +20,13 @@ ...@@ -20,13 +20,13 @@
<span class="text">\{{text}}</span> <span class="text">\{{text}}</span>
</div> </div>
{{/if}} {{/if}}
{{/eq}} {{/if}}
{{#eq item.columnType 'UAGRIDCOLUMN'}} {{#if (eq item.columnType 'UAGRIDCOLUMN')}}
{{!-- <ibizToolbar {{!-- <ibizToolbar
:toolbarModel="state.actionModel" :toolbarModel="state.actionModel"
@toolbarEvent="handleToolbarEvent" @toolbarEvent="handleToolbarEvent"
:context="state.context" :context="state.context"
:viewParams="state.viewParams"/> --}} :viewParams="state.viewParams"/> --}}
{{/eq}} {{/if}}
</div> </div>
{{/neq}} {{/if}}
import { createUUID } from 'qx-util';
import { calcActionItemAuthState, deepCopy, GridControlProps, GridControlState, IActionParam, IParam, MainControl } from '@ibiz-core'; import { calcActionItemAuthState, deepCopy, GridControlProps, GridControlState, IActionParam, IParam, MainControl } from '@ibiz-core';
/** /**
...@@ -22,11 +23,11 @@ export class GridControl extends MainControl { ...@@ -22,11 +23,11 @@ export class GridControl extends MainControl {
*/ */
public setState(props: GridControlProps) { public setState(props: GridControlProps) {
super.setState(props); super.setState(props);
this.controlState.multiple = toRef(props, 'multiple') as any; this.controlState.multiple = toRef(props, "multiple") as any;
this.controlState.rowEditState = toRef(props, 'rowEditState') as any; this.controlState.rowEditState = toRef(props, "rowEditState") as any;
this.controlState.rowActiveMode = toRef(props, 'rowActiveMode') as any; this.controlState.rowActiveMode = toRef(props, "rowActiveMode") as any;
this.controlState.selectedData = toRef(props, 'selectedData') as any; this.controlState.selectedData = toRef(props, "selectedData") as any;
this.controlState.selectFirstDefault = toRef(props, 'selectFirstDefault') as any; this.controlState.selectFirstDefault = toRef(props, "selectFirstDefault") as any;
} }
/** /**
...@@ -61,14 +62,14 @@ export class GridControl extends MainControl { ...@@ -61,14 +62,14 @@ export class GridControl extends MainControl {
* @memberof GridControl * @memberof GridControl
*/ */
public getGridColumn(columns: IParam[], columnType: string): any { public getGridColumn(columns: IParam[], columnType: string): any {
columns.forEach((column: IParam) => { for (const column of columns) {
if (Object.is(column.columnType, columnType)) { if (Object.is(column.columnType, columnType)) {
return column; return deepCopy(column);
} }
if (column.children?.length > 0) { if (column.children?.length > 0) {
return this.getGridColumn(column.children, columnType); return this.getGridColumn(column.children, columnType);
} }
}) }
} }
/** /**
...@@ -77,7 +78,7 @@ export class GridControl extends MainControl { ...@@ -77,7 +78,7 @@ export class GridControl extends MainControl {
*/ */
public autoGroup() { public autoGroup() {
const { groupField } = this.controlState; const { groupField } = this.controlState;
const dataRef = toRef(this.controlState, 'items'); const dataRef = toRef(this.controlState, "items");
let autoGroup: string[] = []; let autoGroup: string[] = [];
dataRef.value.forEach((item: IParam) => { dataRef.value.forEach((item: IParam) => {
if (item.hasOwnProperty(groupField)) { if (item.hasOwnProperty(groupField)) {
...@@ -86,10 +87,10 @@ export class GridControl extends MainControl { ...@@ -86,10 +87,10 @@ export class GridControl extends MainControl {
}) })
autoGroup = [...new Set(autoGroup)]; autoGroup = [...new Set(autoGroup)];
if (autoGroup.length > 0) { if (autoGroup.length > 0) {
const columnsModelRef = toRef(this.controlState, 'columnsModel'); const columnsModelRef = toRef(this.controlState, "columnsModel");
const groupColumn = this.getGridColumn(columnsModelRef.value, 'GROUP'); const groupColumn = this.getGridColumn(columnsModelRef.value, "GROUP");
const gridData: IParam[] = []; const gridData: IParam[] = [];
autoGroup.forEach((group: string) => { autoGroup.forEach((group: string, index: number) => {
const children: IParam[] = []; const children: IParam[] = [];
dataRef.value.forEach((item: IParam) => { dataRef.value.forEach((item: IParam) => {
if (Object.is(group, item[groupField])) { if (Object.is(group, item[groupField])) {
...@@ -97,6 +98,8 @@ export class GridControl extends MainControl { ...@@ -97,6 +98,8 @@ export class GridControl extends MainControl {
} }
}) })
gridData.push({ gridData.push({
groupRow: true,
srfkey: createUUID(),
[groupColumn.dataIndex]: group, [groupColumn.dataIndex]: group,
children: deepCopy(children), children: deepCopy(children),
}) })
...@@ -111,12 +114,12 @@ export class GridControl extends MainControl { ...@@ -111,12 +114,12 @@ export class GridControl extends MainControl {
*/ */
public async codeListGroup() { public async codeListGroup() {
const { groupField } = this.controlState; const { groupField } = this.controlState;
const dataRef = toRef(this.controlState, 'items'); const dataRef = toRef(this.controlState, "items");
// TODO 代码表数据 // TODO 代码表数据
let codeListGroup: IParam[] = []; let codeListGroup: IParam[] = [];
if (codeListGroup.length > 0) { if (codeListGroup.length > 0) {
const columnsModelRef = toRef(this.controlState, 'columnsModel'); const columnsModelRef = toRef(this.controlState, "columnsModel");
const groupColumn = this.getGridColumn(columnsModelRef.value, 'GROUP'); const groupColumn = this.getGridColumn(columnsModelRef.value, "GROUP");
const gridData: IParam[] = []; const gridData: IParam[] = [];
const otherGroup: IParam[] = []; const otherGroup: IParam[] = [];
codeListGroup.forEach((group: IParam) => { codeListGroup.forEach((group: IParam) => {
...@@ -127,6 +130,8 @@ export class GridControl extends MainControl { ...@@ -127,6 +130,8 @@ export class GridControl extends MainControl {
} }
}); });
gridData.push({ gridData.push({
groupRow: true,
srfkey: createUUID(),
[groupColumn.dataIndex]: group.text, [groupColumn.dataIndex]: group.text,
children: deepCopy(children), children: deepCopy(children),
}) })
...@@ -139,6 +144,8 @@ export class GridControl extends MainControl { ...@@ -139,6 +144,8 @@ export class GridControl extends MainControl {
}); });
if (otherGroup.length > 0) { if (otherGroup.length > 0) {
gridData.push({ gridData.push({
groupRow: true,
srfkey: createUUID(),
[groupColumn.dataIndex]: "其它", [groupColumn.dataIndex]: "其它",
children: deepCopy(otherGroup), children: deepCopy(otherGroup),
}) })
...@@ -152,9 +159,9 @@ export class GridControl extends MainControl { ...@@ -152,9 +159,9 @@ export class GridControl extends MainControl {
* @memberof GridControl * @memberof GridControl
*/ */
public calcGridAuthState() { public calcGridAuthState() {
const dataRef = toRef(this.controlState, 'items'); const dataRef = toRef(this.controlState, "items");
const columnsModelRef = toRef(this.controlState, 'columnsModel'); const columnsModelRef = toRef(this.controlState, "columnsModel");
let columnModel = this.getGridColumn(columnsModelRef.value, 'UAGRIDCOLUMN'); let columnModel = this.getGridColumn(columnsModelRef.value, "UAGRIDCOLUMN");
if (columnModel) { if (columnModel) {
dataRef.value.forEach((item: IParam) => { dataRef.value.forEach((item: IParam) => {
Object.assign(item, { Object.assign(item, {
...@@ -164,18 +171,27 @@ export class GridControl extends MainControl { ...@@ -164,18 +171,27 @@ export class GridControl extends MainControl {
} }
} }
/**
* @description 设置表格合并列
* @memberof GridControl
*/
public setGridColSpan() {
}
/** /**
* @description 处理表格分组 * @description 处理表格分组
* @memberof GridControl * @memberof GridControl
*/ */
public handleGridGroup() { public handleGridGroup() {
const { groupMode, groupField } = this.controlState; const { groupMode, groupField } = this.controlState;
if (groupField) { if (groupField && !Object.is(groupMode, "NONE")) {
if (Object.is(groupMode, "AUTO")) { if (Object.is(groupMode, "AUTO")) {
this.autoGroup(); this.autoGroup();
} else if (Object.is(groupMode, "CODELIST")) { } else if (Object.is(groupMode, "CODELIST")) {
this.codeListGroup(); this.codeListGroup();
} }
this.setGridColSpan();
} }
} }
...@@ -198,21 +214,21 @@ export class GridControl extends MainControl { ...@@ -198,21 +214,21 @@ export class GridControl extends MainControl {
*/ */
public getAggValue(aggData: IParam[], column: IParam): string { public getAggValue(aggData: IParam[], column: IParam): string {
switch (column.aggMode) { switch (column.aggMode) {
case 'NONE': case "NONE":
return ''; return "";
case 'SUM': case "SUM":
let sum: number = 0; let sum: number = 0;
aggData.forEach((item: IParam) => { aggData.forEach((item: IParam) => {
sum += Number(item[column.dataIndex] ? item[column.dataIndex] : 0); sum += Number(item[column.dataIndex] ? item[column.dataIndex] : 0);
}) })
return 'SUM:' + sum; return "SUM:" + sum;
case 'AVG': case "AVG":
let sum2: number = 0; let sum2: number = 0;
aggData.forEach((item: IParam) => { aggData.forEach((item: IParam) => {
sum2 += Number(item[column.dataIndex] ? item[column.dataIndex] : 0); sum2 += Number(item[column.dataIndex] ? item[column.dataIndex] : 0);
}) })
return 'AVG:' + Number(sum2 / (aggData.length)).toFixed(3); return "AVG:" + Number(sum2 / (aggData.length)).toFixed(3);
case 'MAX': case "MAX":
let max: number = 0; let max: number = 0;
aggData.forEach((item: IParam) => { aggData.forEach((item: IParam) => {
const value: number = Number(item[column.dataIndex] ? item[column.dataIndex] : 0); const value: number = Number(item[column.dataIndex] ? item[column.dataIndex] : 0);
...@@ -220,8 +236,8 @@ export class GridControl extends MainControl { ...@@ -220,8 +236,8 @@ export class GridControl extends MainControl {
max = value; max = value;
} }
}) })
return 'MAX:' + max; return "MAX:" + max;
case 'MIN': case "MIN":
let min: number = 0; let min: number = 0;
aggData.forEach((item: IParam) => { aggData.forEach((item: IParam) => {
const value: number = Number(item[column.dataIndex] ? item[column.dataIndex] : 0); const value: number = Number(item[column.dataIndex] ? item[column.dataIndex] : 0);
...@@ -229,9 +245,9 @@ export class GridControl extends MainControl { ...@@ -229,9 +245,9 @@ export class GridControl extends MainControl {
min = value; min = value;
} }
}) })
return 'MIN:' + min; return "MIN:" + min;
default: default:
return ''; return "";
} }
} }
...@@ -241,19 +257,19 @@ export class GridControl extends MainControl { ...@@ -241,19 +257,19 @@ export class GridControl extends MainControl {
*/ */
public async handleDataAgg() { public async handleDataAgg() {
const { aggMode } = this.controlState; const { aggMode } = this.controlState;
if (!Object.is(aggMode, 'NONE')) { if (!Object.is(aggMode, "NONE")) {
const dataAggRef = toRef(this.controlState, 'dataAgg'); const dataAggRef = toRef(this.controlState, "dataAgg");
let aggData: IParam[]; let aggData: IParam[];
if (Object.is(aggMode, 'PAGE')) { if (Object.is(aggMode, "PAGE")) {
const dataRef = toRef(this.controlState, 'items'); const dataRef = toRef(this.controlState, "items");
aggData = [...dataRef.value]; aggData = [...dataRef.value];
} else if (Object.is(aggMode, 'ALL')) { } else if (Object.is(aggMode, "ALL")) {
aggData = await this.remoteAgg(); aggData = await this.remoteAgg();
} }
const columnsModelRef = toRef(this.controlState, 'columnsModel'); const columnsModelRef = toRef(this.controlState, "columnsModel");
const columnsModel: IParam[] = []; const columnsModel: IParam[] = [];
columnsModelRef.value.forEach((column: IParam) => { columnsModelRef.value.forEach((column: IParam) => {
if (!Object.is(column.columnType, 'GROUPGRIDCOLUMN')) { if (!Object.is(column.columnType, "GROUPGRIDCOLUMN")) {
columnsModel.push(column); columnsModel.push(column);
} }
}); });
...@@ -280,13 +296,13 @@ export class GridControl extends MainControl { ...@@ -280,13 +296,13 @@ export class GridControl extends MainControl {
controlService, context, viewParams, showBusyIndicator, noSort, minorSortDir, minorSortPSDEF, controlService, context, viewParams, showBusyIndicator, noSort, minorSortDir, minorSortPSDEF,
enablePagingBar, pageSize enablePagingBar, pageSize
} = this.controlState; } = this.controlState;
const dataRef = toRef(this.controlState, 'items'); const dataRef = toRef(this.controlState, "items");
const paginationRef = toRef(this.controlState, 'pagination'); const paginationRef = toRef(this.controlState, "pagination");
if(!loadAction){ // if(!loadAction){
return; // return;
} // }
let _context = deepCopy(context); let _context = deepCopy(context ? context : {});
let _viewParams = deepCopy(viewParams); let _viewParams = deepCopy(viewParams ? context : {});
if (noSort && minorSortDir && minorSortPSDEF) { if (noSort && minorSortDir && minorSortPSDEF) {
Object.assign(_viewParams, { sort: `${minorSortPSDEF},${minorSortDir}`}); Object.assign(_viewParams, { sort: `${minorSortPSDEF},${minorSortDir}`});
} }
...@@ -297,19 +313,32 @@ export class GridControl extends MainControl { ...@@ -297,19 +313,32 @@ export class GridControl extends MainControl {
Object.assign(_viewParams, { page: 0, size: pageSize}); Object.assign(_viewParams, { page: 0, size: pageSize});
} }
} }
const response = await controlService.get(loadAction, _context, {viewParams: _viewParams}, showBusyIndicator ); // const response = await controlService.get(loadAction, _context, {viewParams: _viewParams}, showBusyIndicator );
if (!response.status || response.status !== 200) { // if (!response.status || response.status !== 200) {
return // return
// }
const data = [];
for (let i = 0; i < 100; i++) {
data.push({
group: i % 2 === 1 ? "分组1": "分组2",
srfkey: i,
tefsubjecttypename: `Edrward ${i}`,
updatedate: 32,
description: `London Park no. ${i}`,
});
} }
dataRef.value = response.data; dataRef.value = data;
// dataRef.value = response.data;
if (enablePagingBar) { if (enablePagingBar) {
paginationRef.value['total'] = response.total; // paginationRef.value['total'] = response.total;
paginationRef.value["total"] = 100;
} }
this.calcGridAuthState(); this.calcGridAuthState();
this.handleGridGroup(); this.handleGridGroup();
this.handleDataAgg(); this.handleDataAgg();
} catch (error) { } catch (error) {
// todo 错误异常处理 // todo 错误异常处理
console.error(error)
} }
} }
......
...@@ -46,6 +46,7 @@ export const CtrlConfig = { ...@@ -46,6 +46,7 @@ export const CtrlConfig = {
{{#if ctrl.groupPSAppDEField}} {{#if ctrl.groupPSAppDEField}}
{ {
title: "分组", title: "分组",
align: "center",
columnType: "GROUP", columnType: "GROUP",
width: 100, width: 100,
resizable: true, resizable: true,
......
...@@ -37,18 +37,24 @@ const { state, handleEditorEvent } = new GridControl(CtrlConfig).moduleInstall(p ...@@ -37,18 +37,24 @@ const { state, handleEditorEvent } = new GridControl(CtrlConfig).moduleInstall(p
const gridScrollOption = computed(() => { const gridScrollOption = computed(() => {
return { return {
scrollToFirstRowOnChange: true, scrollToFirstRowOnChange: true,
x: '100%', x: '110%',
y: '690px', y: '690px',
} }
}); });
// 表格行key
const rowKey = (record: IParam) => {
return record.srfkey;
}
// 表格行样式(斑马纹) // 表格行样式(斑马纹)
const rowClassName = (record: IParam, index: number) => { const rowClassName = (record: IParam, index: number) => {
return index % 2 === 1 ? 'table-striped' : null; return index % 2 === 1 ? "table-striped" : null;
} }
// 表格选择功能配置 // 表格选择功能配置
const rowSelectionOption = computed(() => { const rowSelectionOption = computed(() => {
return { return {
fixed: true,
columnWidth: {{#neq ctrl.aggMode 'NONE'}}90{{else}}50{{/neq}}, columnWidth: {{#neq ctrl.aggMode 'NONE'}}90{{else}}50{{/neq}},
checkStrictly: props.multiple ? false : true,
onChange: (selectedRowKeys: string[], selectedRows: IParam[]) => { onChange: (selectedRowKeys: string[], selectedRows: IParam[]) => {
console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows); console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
}, },
...@@ -68,7 +74,9 @@ const handleChange = (pagination: IParam, filters: IParam, sorter: IParam, data: ...@@ -68,7 +74,9 @@ const handleChange = (pagination: IParam, filters: IParam, sorter: IParam, data:
<template> <template>
<a-table <a-table
bordered bordered
sticky
class="ibiz-grid" class="ibiz-grid"
:rowKey="rowKey"
:showHeader="{{#if ctrl.hideHeader}}false{{else}}true{{/if}}" :showHeader="{{#if ctrl.hideHeader}}false{{else}}true{{/if}}"
:scroll="gridScrollOption" :scroll="gridScrollOption"
:sortDirections="['ascend', 'descend']" :sortDirections="['ascend', 'descend']"
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册