function toolTab() {
    return {
        title: `小工具`,
        icon: 'fa fa-toolbox',
        tab: [
            {
                type: 'panel',
                title: '乱七八糟小工具',
                body: [
                    {
                        type: 'action',
                        label: 'SQL日志',
                        actionType: 'dialog',
                        dialog: {
                            title: '日志',
                            ...readOnlyDialogOptions(),
                            size: 'lg',
                            body: {
                                type: 'crud',
                                api: '${base}/log/query_sql_log',
                                ...crudCommonOptions(),
                                loadDataOnce: true,
                                perPage: 50,
                                headerToolbar: [
                                    "reload",
                                    paginationCommonOptions(undefined, 10),
                                ],
                                footerToolbar: [
                                    paginationCommonOptions(undefined, 10),
                                ],
                                columns: [
                                    {
                                        name: 'sql',
                                        label: 'SQL',
                                    },
                                    {
                                        name: 'createTime',
                                        label: '执行时间',
                                    },
                                ],
                            }
                        }
                    },
                    {
                        type: 'action',
                        label: 'ZK节点',
                        className: 'ml-2',
                        actionType: 'dialog',
                        dialog: {
                            title: '日志',
                            ...readOnlyDialogOptions(),
                            size: 'lg',
                            body: {}
                        }
                    }
                ]
            },
            {
                type: 'form',
                title: '查询时间线',
                actions: [
                    {
                        type: 'submit',
                        label: '查询时间线',
                        actionType: 'dialog',
                        dialog: {
                            title: 'Hudi 表时间线',
                            actions: [],
                            size: 'lg',
                            body: {
                                type: 'crud',
                                api: {
                                    method: 'get',
                                    url: '${base}/hudi/timeline/list_hdfs',
                                    data: {
                                        page: '${page|default:undefined}',
                                        count: '${perPage|default:undefined}',
                                        order: '${orderBy|default:undefined}',
                                        direction: '${orderDir|default:undefined}',
                                        hdfs: '${hdfs|default:undefined}',
                                        filter_type: "${type|default:active}",
                                        filter_action: '${action|default:undefined}',
                                        filter_state: '${state|default:undefined}',
                                    },
                                },
                                ...crudCommonOptions(),
                                perPage: 50,
                                headerToolbar: [
                                    "reload",
                                    paginationCommonOptions(undefined, 10),
                                ],
                                footerToolbar: [
                                    paginationCommonOptions(undefined, 10),
                                ],
                                columns: timelineColumns(),
                            }
                        }
                    },
                    {
                        type: 'submit',
                        label: '查询表结构',
                        actionType: 'dialog',
                        dialog: {
                            title: 'Hudi 表结构',
                            actions: [],
                            size: 'lg',
                            body: {
                                type: 'service',
                                api: {
                                    method: 'get',
                                    url: '${base}/hudi/schema',
                                    data: {
                                        hdfs: '${hdfs|default:undefined}',
                                    },
                                },
                                body: {
                                    type: 'page',
                                    body: {
                                        type: 'json',
                                        source: '${detail}',
                                        levelExpand: 3,
                                    }
                                }
                            }
                        }
                    }
                ],
                body: [
                    {
                        type: 'input-text',
                        name: 'hdfs',
                        label: 'HDFS路经',
                        required: true,
                        clearable: true,
                        description: '输入表HDFS路径',
                        autoComplete: '${base}/table/all_hdfs?key=$term',
                    }
                ]
            },
            {
                type: 'form',
                title: '提交压缩任务',
                api: {
                    method: 'get',
                    url: '${base}/schedule/table',
                    data: {
                        flink_job_id: '${flinkJobId|default:undefined}',
                        alias: '${alias|default:undefined}',
                        recommend: "${recommend === 'undefined' ? undefined : recommend|default:undefined}",
                        force: "${force === 'undefined' ? undefined : force|default:undefined}",
                    }
                },
                ...formReloadFlinkJobIdTextInputAndAliasTextInput("0fe6a96c-6b6e-4346-b18e-c631c2389f48"),
                body: [
                    {
                        type: 'group',
                        body: [
                            flinkJobIdTextInput("0fe6a96c-6b6e-4346-b18e-c631c2389f48", true),
                            aliasTextInput("0fe6a96c-6b6e-4346-b18e-c631c2389f48", true),
                        ]
                    },
                    {
                        type: 'group',
                        body: [
                            {
                                name: 'recommend',
                                type: 'radios',
                                label: '优先指定集群',
                                selectFirst: true,
                                options: [
                                    {label: '无', value: 'undefined'},
                                    ...Object.keys(commonInfo.clusters.compaction)
                                        .map(name => {
                                            return {label: name, value: name}
                                        }),
                                ]
                            },
                            {
                                name: 'force',
                                type: 'radios',
                                label: '强制指定集群',
                                selectFirst: true,
                                options: [
                                    {label: '无', value: 'undefined'},
                                    ...Object.keys(commonInfo.clusters.compaction)
                                        .map(name => {
                                            return {label: name, value: name}
                                        }),
                                ]
                            },
                        ]
                    }
                ]
            },
            {
                type: 'form',
                title: '批量提交压缩任务',
                api: {
                    method: 'post',
                    url: '${base}/schedule/table_batch',
                    dataType: 'form',
                },
                body: [
                    {
                        name: 'lines',
                        type: 'textarea',
                        label: '表信息 (flink_job_id alias\\n)',
                        clearable: true,
                        minRows: 5,
                        maxRows: 5,
                        className: 'no-resize',
                        required: true,
                    }
                ]
            },
            {
                type: 'form',
                title: '停止所有压缩任务',
                api: {
                    method: 'get',
                    url: '${base}/schedule/stop_all',
                    data: {
                        flink_job_id: '${flinkJobId|default:undefined}',
                        alias: '${alias|default:undefined}',
                        disable_meta: "${disableMeta|default:undefined}",
                    }
                },
                ...formReloadFlinkJobIdTextInputAndAliasTextInput("163e043e-8cee-41fd-b5a4-0442ac682aec"),
                body: [
                    {
                        type: 'group',
                        body: [
                            {
                                ...flinkJobIdTextInput("163e043e-8cee-41fd-b5a4-0442ac682aec", true),
                                columnRatio: 5
                            },
                            {
                                ...aliasTextInput("163e043e-8cee-41fd-b5a4-0442ac682aec", true),
                                columnRatio: 5
                            },
                            {
                                name: 'disableMeta',
                                type: 'checkbox',
                                label: '是否禁用表',
                                option: '表status设为n',
                                columnRatio: 2
                            }
                        ]
                    },
                ]
            },
        ]
    }
}