{{#each nodes as | node |}}
    {
        id: "{{node.id}}",
        treeNodeType: "{{node.treeNodeType}}",
        allowDrag: {{node.allowDrag}},
        allowDrop: {{node.allowDrop}},
        allowEditText: {{node.allowEditText}},
        allowOrder: {{node.allowOrder}},
        enableCheck: {{node.enableCheck}},
        disableSelect: {{node.disableSelect}},
        expanded: {{node.expanded}},
        cssName: "{{node.psSysCss.cssName}}",
        leaf: {{#if node.hasPSDETreeNodeRSs}}false{{else}}true{{/if}},
        selected: {{node.selected}},
        navFilter: "{{node.navFilter}}",
        appendPNodeId: {{node.appendPNodeId}},
        counterId: "{{node.counterId}}",
        counterMode: {{node.counterMode}},
        nodeType: "{{node.nodeType}}",
        rootNode: {{node.rootNode}},
        selectFirstOnly: {{node.selectFirstOnly}},
        expandFirstOnly: {{node.expandFirstOnly}},
        enableQuickSearch: {{node.enableQuickSearch}},
        {{#if node.appendCaption}}
        appendCaption: {{node.appendCaption}},
        {{/if}}
        {{#if node.psSysImage}}
        {{#if node.psSysImage.cssClass}}
        cssClass: "{{node.psSysImage.cssClass}}",
        {{else}}
        imagePath: "{{node.psSysImage.imagePath}}",
        {{/if}}
        {{/if}}
    {{#if (eq node.treeNodeType 'STATIC')}}
        text: "{{node.text}}",
        tooltip: "{{node.tooltip}}",
        {{#if node.namePSLanguageRes}}
        lanResTag: "{{node.namePSLanguageRes.lanResTag}}",
        {{/if}}
        {{#if node.tooltipPSLanguageRes}}
        tooltipLanResTag: "{{node.tooltipPSLanguageRes.lanResTag}}",
        {{/if}}
        nodeValue: "{{node.nodeValue}}",
    {{/if}}
    {{#if (eq node.treeNodeType 'CODELIST')}}
        {{#if node.psCodeList}}
        codeListTag: "{{node.psCodeList.codeListTag}}",
        {{/if}}
    {{/if}}
    {{#if (and (eq node.treeNodeType 'DE') node.psAppDataEntity)}}
        entityCodeName: "{{node.psAppDataEntity.codeName}}",
        controlVoName: "{{pascalCase node.id}}ControlVO",
        keyPSAppDEField: "{{node.psAppDataEntity.keyPSAppDEField.codeName}}",
        majorPSAppDEField: "{{node.psAppDataEntity.majorPSAppDEField.codeName}}",
        {{#if node.psAppDEDataSet}}
        appDeDataSet: "{{node.psAppDEDataSet.codeName}}",
        {{/if}}
        {{#if node.psDETreeNodeDataItems}}
        deTreeNodeDataItems: [
            {{#each node.psDETreeNodeDataItems as | dataItem |}}
            {
                customCode: {{dataItem.customCode}},
                {{#if dataItem.psAppDEField}}
                fieldCodeName: "{{dataItem.psAppDEField.codeName}}",
                {{/if}}
                name: "{{dataItem.name}}"
            },
            {{/each}}
        ],
        {{/if}}
        {{#if node.sortDir}}
        sortDir: "{{node.sortDir}}",
        {{/if}}
        {{#if node.sortPSAppDEField}}
        sortPSAppDEField: "{{node.sortPSAppDEField.codeName}}",
        {{/if}}
        {{#if node.textFormat}}
        textFormat: "{{node.textFormat}}",
        {{/if}}
    {{/if}}
    {{#if node.navPSAppView}}
        navViewName: "{{node.navPSAppView.codeName}}",
    {{/if}}
        navigateContext: {{> @macro/common/navparam.hbs appNavParams=node.psNavigateContexts}},
        navigateParams: {{> @macro/common/navparam.hbs appNavParams=node.psNavigateParams}},
    {{#if (and node.psDEContextMenu node.psDEContextMenu.psDEToolbarItems)}}
        contextMenus: [
            {{> @macro/widgets/tree-detail/tree-node-context-menu.hbs toolbarItems=node.psDEContextMenu.psDEToolbarItems contextMenu=node.psDEContextMenu node=node}}
        ],
    {{/if}}
    }{{#unless @last}},{{/unless}}
{{/each}}