提交 18f5c1a9 编写于 作者: sq3536's avatar sq3536

提交

上级 8454d229
......@@ -12,6 +12,7 @@
<artifactId>ibizlab-generator-cli</artifactId>
<build>
<finalName>ibizlab-generator-cli</finalName>
<resources>
......
......@@ -156,7 +156,11 @@
<artifactId>caffeine</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.10</version>
</dependency>
<dependency>
<groupId>net.ibizsys.plugin</groupId>
<artifactId>ibiz-model</artifactId>
......
package cn.ibizlab.codegen.templating;
import java.util.Set;
public interface EmbedTemplateLocator {
Set<String> getTemplatePaths();
}
/*
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.ibizlab.codegen.templating;
import java.io.IOException;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.net.URL;
import org.springframework.core.io.VfsUtils;
import org.springframework.lang.Nullable;
/**
* Artificial class used for accessing the {@link VfsUtils} methods
* without exposing them to the entire world.
*
* @author Costin Leau
* @since 3.0.3
*/
abstract class VfsPatternUtils extends VfsUtils {
@Nullable
static Object getVisitorAttributes() {
return doGetVisitorAttributes();
}
static String getPath(Object resource) {
String path = doGetPath(resource);
return (path != null ? path : "");
}
static Object findRoot(URL url) throws IOException {
return getRoot(url);
}
static void visit(Object resource, InvocationHandler visitor) throws IOException {
Object visitorProxy = Proxy.newProxyInstance(
VIRTUAL_FILE_VISITOR_INTERFACE.getClassLoader(),
new Class<?>[] {VIRTUAL_FILE_VISITOR_INTERFACE}, visitor);
invokeVfsMethod(VIRTUAL_FILE_METHOD_VISIT, resource, visitorProxy);
}
}
......@@ -12,5 +12,14 @@
<artifactId>ibizlab-template-ibizedge</artifactId>
<groupId>cn.ibizlab</groupId>
<version>1.0-SNAPSHOT</version>
<build>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
</resource>
</resources>
</build>
</project>
\ No newline at end of file
......@@ -29,7 +29,7 @@ public class BootHeaderFilter extends ZuulFilter {
@Override
public Object run() throws ZuulException {
RequestContext ctx = RequestContext.getCurrentContext();
ctx.addZuulRequestHeader("srfsystem", "{{system.codeName}}");
ctx.addZuulRequestHeader("srfsystem", "{{system.deploySysId}}");
return null;
}
}
......
......@@ -439,12 +439,12 @@ public class {{entity.codeName}}ServiceBase extends ServiceImpl<{{entity.codeNam
Map<String, Map<String, Object>> keys = null;
Collection<String> businessKeys = null;
if(!StringUtils.isEmpty(context.getSrfWF())){
keys= ibzwfFeignClient.getMyTask("{{lowerCase system.codeName}}", "", "{{pluralize entity.codeName}}");
keys= ibzwfFeignClient.getMyTask("{{lowerCase system.deploySysId}}", "", "{{pluralize entity.codeName}}");
if(!ObjectUtils.isEmpty(keys))
businessKeys = keys.keySet();
}
else if(!StringUtils.isEmpty(context.getUserTaskId()) && !StringUtils.isEmpty(context.getProcessDefinitionKey()))
businessKeys= ibzwfFeignClient.getbusinesskeysByUserId("{{lowerCase system.codeName}}", AuthenticationUser.getAuthenticationUser().getUserid(),"{{pluralize entity.codeName}}",context.getProcessDefinitionKey(),context.getUserTaskId());
businessKeys= ibzwfFeignClient.getbusinesskeysByUserId("{{lowerCase system.deploySysId}}", AuthenticationUser.getAuthenticationUser().getUserid(),"{{pluralize entity.codeName}}",context.getProcessDefinitionKey(),context.getUserTaskId());
if(!ObjectUtils.isEmpty(businessKeys))
context.getSelectCond().in("{{entity.keyField.columnName}}",businessKeys);
else
......
......@@ -113,6 +113,11 @@ public interface {{entity.codeName}}Service extends IService<{{entity.codeName}}
List<{{entity.codeName}}> list{{pascalCase codeName}}({{entity.codeName}}SearchContext context);
{{/entity.dataSets}}
{{#if entity.hasDupCheck}}
default {{entity.codeName}}SearchContext getSearchContext() {
return new {{entity.codeName}}SearchContext();
}
{{/if}}
{{#entity.references}}
List<{{entity.codeName}}> selectBy{{pascalCase fkField.codeName}}({{fkField.type.java}} {{camelCase fkField.codeName}});
{{#entity.enableEntityCache}}
......
......@@ -113,6 +113,11 @@ public interface {{entity.codeName}}Service {
List<{{entity.codeName}}> list{{pascalCase codeName}}({{entity.codeName}}SearchContext context);
{{/entity.dataSets}}
{{#if entity.hasDupCheck}}
default {{entity.codeName}}SearchContext getSearchContext() {
return new {{entity.codeName}}SearchContext();
}
{{/if}}
{{#entity.references}}
List<{{entity.codeName}}> selectBy{{pascalCase fkField.codeName}}({{fkField.type.java}} {{camelCase fkField.codeName}});
{{#entity.enableEntityCache}}
......
......@@ -68,7 +68,7 @@ public class PermissionSyncJob implements ApplicationRunner {
if (!ObjectUtils.isEmpty(permission)) {
String strPermission = IOUtils.toString(permission, "UTF-8");
JSONObject system = new JSONObject();
system.put("pssystemid", StringUtils.isEmpty(systemId)?"{{system.codeName}}":systemId);
system.put("pssystemid", StringUtils.isEmpty(systemId)?"{{system.deploySysId}}":systemId);
system.put("pssystemname", StringUtils.isEmpty(systemName)?"{{system.logicName}}":systemName);
system.put("sysstructure", JSONObject.parseObject(strPermission));
system.put("md5check", DigestUtils.md5DigestAsHex(strPermission.getBytes()));
......
......@@ -143,6 +143,29 @@ public class {{apiEntity.codeName}}Resource {
return ResponseEntity.status(HttpStatus.OK).body(true);
}
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','{{projectName}}-{{apiEntity.entity.codeName}}-Save-all')")
@ApiOperation(value = "批量导入{{apiEntity.entity.logicName}}", tags = {"{{apiEntity.entity.logicName}}" }, notes = "批量导入{{apiEntity.entity.logicName}}")
@RequestMapping(method = RequestMethod.POST, value = "{{pluralize apiEntity.codeName}}/import")
public ResponseEntity<Map> importData(@RequestParam(value = "config") String config ,@RequestBody List<{{apiEntity.codeName}}DTO> dtos) {
Map rs=new HashMap();
if(ObjectUtils.isEmpty(dtos)){
rs.put("rst", 1);
rs.put("msg", "未传入内容");
return ResponseEntity.status(HttpStatus.NO_CONTENT).body(rs);
}
else{
List<{{apiEntity.entity.codeName}}> list={{camelCase apiEntity.defaultDto.codeName}}Mapping.toDomain(dtos);
List<{{apiEntity.entity.codeName}}> rtList=new ArrayList();
list.forEach(item->{
if({{camelCase apiEntity.entity.codeName}}Service.save(item))
rtList.add(item);
});
rs.put("rst", 0);
rs.put("data",rtList);
}
return ResponseEntity.status(HttpStatus.OK).body(rs);
}
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','{{projectName}}-{{apiEntity.entity.codeName}}-Remove-all')")
@ApiOperation(value = "批量删除{{apiEntity.entity.logicName}}", tags = {"{{apiEntity.entity.logicName}}" }, notes = "批量删除{{apiEntity.entity.logicName}}")
@RequestMapping(method = RequestMethod.DELETE, value = {"{{pluralize apiEntity.codeName}}","/{{pluralize apiEntity.codeName}}/batch"})
......
......@@ -10,7 +10,7 @@
]
{{/inline}}
{
"systemid": "{{system.codeName}}",
"systemid": "{{system.deploySysId}}",
"systemname": "{{system.logicName}}",
"unires": [
{{#each system.allPSSysUniReses as |unires|}}
......
......@@ -12,7 +12,7 @@ const routes = [
meta: {
tag: '{{app.defaultPSAppIndexView.codeName}}'
},
component: () => import("@views/{{spinalCase app.defaultPSAppIndexView.psAppModule.codeName}}/{{spinalCase app.defaultPSAppIndexView.codeName}}"),
component: () => import("@views/{{#if app.defaultPSAppIndexView.psAppModule.codeName}}{{spinalCase app.defaultPSAppIndexView.psAppModule.codeName}}{{else}}default{{/if}}/{{spinalCase app.defaultPSAppIndexView.codeName}}"),
children: [
{{#each app.appEntityResources as |appEntityResource|}}
{{#if appEntityResource.appDataEntity.allPSAppViews}}
......@@ -35,7 +35,7 @@ const routes = [
meta: {
tag:'{{appView.codeName}}'
},
component: () => import("@views/{{spinalCase appView.psAppModule.codeName}}/{{spinalCase appView.codeName}}"),
component: () => import("@views/{{#if appView.psAppModule.codeName}}{{spinalCase appView.psAppModule.codeName}}{{else}}default{{/if}}/{{spinalCase appView.codeName}}"),
},
{{/if}}
{{/if}}
......@@ -51,7 +51,7 @@ const routes = [
meta: {
tag:'{{appView.codeName}}'
},
component: () => import("@views/{{spinalCase appView.psAppModule.codeName}}/{{spinalCase appView.codeName}}"),
component: () => import("@views/{{#if appView.psAppModule.codeName}}{{spinalCase appView.psAppModule.codeName}}{{else}}default{{/if}}/{{spinalCase appView.codeName}}"),
},
{{/unless}}
{{/if}}
......
......@@ -5,7 +5,7 @@ import { FormControl, IActionParam, IParam, ControlAction, IContext } from '@cor
{{#*inline "importFormDruipart"}}
{{#each items as | formDetail | }}
{{#eq formDetail.detailType 'DRUIPART'}}
import {{formDetail.psAppView.codeName}} from '@views/{{spinalCase formDetail.psAppView.psAppModule.codeName}}/{{spinalCase formDetail.psAppView.codeName}}';
import {{formDetail.psAppView.codeName}} from '@views/{{#if formDetail.psAppView.psAppModule.codeName}}{{spinalCase formDetail.psAppView.psAppModule.codeName}}{{else}}default{{/if}}/{{spinalCase formDetail.psAppView.codeName}}';
{{/eq}}
{{#if formDetail.psDEFormDetails}}
{{> importFormDruipart items=formDetail.psDEFormDetails}}
......
......@@ -6,7 +6,7 @@ import { ctrlState } from './{{spinalCase ctrl.codeName}}-grid-exp-bar-state';
{{#eq controlType "GRID"}}
import { {{codeName}}Grid} from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-grid';
{{#if navPSAppView}}
import {{navPSAppView.name}} from '@views/{{spinalCase navPSAppView.psAppModule.codeName}}/{{spinalCase navPSAppView.codeName}}';
import {{navPSAppView.name}} from '@views/{{#if navPSAppView.psAppModule.codeName}}{{spinalCase navPSAppView.psAppModule.codeName}}{{else}}default{{/if}}/{{spinalCase navPSAppView.codeName}}';
{{/if}}
{{/eq}}
{{/ctrl.psControls}}
......
......@@ -6,7 +6,7 @@ import { ctrlState } from './{{spinalCase ctrl.codeName}}-list-exp-bar-state';
{{#eq controlType "LIST"}}
import { {{codeName}}List} from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-list';
{{#if navPSAppView}}
import {{navPSAppView.name}} from '@views/{{spinalCase navPSAppView.psAppModule.codeName}}/{{spinalCase navPSAppView.codeName}}';
import {{navPSAppView.name}} from '@views/{{#if navPSAppView.psAppModule.codeName}}{{spinalCase navPSAppView.psAppModule.codeName}}{{else}}default{{/if}}/{{spinalCase navPSAppView.codeName}}';
{{/if}}
{{/eq}}
{{/ctrl.psControls}}
......
......@@ -3,7 +3,7 @@ import { Subject } from 'rxjs';
import { IActionParam, IParam, ControlAction, PickupViewPanelControl, IContext } from '@core';
import { ctrlState } from './{{spinalCase ctrl.codeName}}-pickup-view-panel-state';
{{#if ctrl.embeddedPSAppDEView}}
import {{ctrl.embeddedPSAppDEView.codeName}} from '@views/{{spinalCase ctrl.embeddedPSAppDEView.psAppModule.codeName}}/{{spinalCase ctrl.embeddedPSAppDEView.codeName}}';
import {{ctrl.embeddedPSAppDEView.codeName}} from '@views/{{#if ctrl.embeddedPSAppDEView.psAppModule.codeName}}{{spinalCase ctrl.embeddedPSAppDEView.psAppModule.codeName}}{{else}}default{{/if}}/{{spinalCase ctrl.embeddedPSAppDEView.codeName}}';
{{/if}}
interface Props {
name:string,
......
......@@ -4,7 +4,7 @@ import { ctrlState } from './{{spinalCase ctrl.codeName}}-portlet-state';
import { PortletControl, IActionParam, IParam, IContext, ILayoutOpts } from '@core';
{{#eq ctrl.portletType "VIEW"}}
{{#if ctrl.portletPSAppView}}
import {{ctrl.portletPSAppView.codeName}} from '@views/{{spinalCase ctrl.portletPSAppView.psAppModule.codeName}}/{{spinalCase ctrl.portletPSAppView.codeName}}';
import {{ctrl.portletPSAppView.codeName}} from '@views/{{#if ctrl.portletPSAppView.psAppModule.codeName}}{{spinalCase ctrl.portletPSAppView.psAppModule.codeName}}{{else}}default{{/if}}/{{spinalCase ctrl.portletPSAppView.codeName}}';
{{/if}}
{{/eq}}
{{#eq ctrl.portletType "APPMENU"}}
......
......@@ -3,7 +3,7 @@ import { Subject } from 'rxjs';
import { IActionParam, IParam, ControlAction, TabViewPanelControl, IContext } from '@core';
import { ctrlState } from './{{spinalCase ctrl.codeName}}-tab-view-panel-state';
{{#if ctrl.embeddedPSAppDEView}}
import {{ctrl.embeddedPSAppDEView.codeName}} from '@views/{{spinalCase ctrl.embeddedPSAppDEView.psAppModule.codeName}}/{{spinalCase ctrl.embeddedPSAppDEView.codeName}}';
import {{ctrl.embeddedPSAppDEView.codeName}} from '@views/{{#if ctrl.embeddedPSAppDEView.psAppModule.codeName}}{{spinalCase ctrl.embeddedPSAppDEView.psAppModule.codeName}}{{else}}default{{/if}}/{{spinalCase ctrl.embeddedPSAppDEView.codeName}}';
{{/if}}
interface Props {
name:string,
......
......@@ -25,9 +25,9 @@ import { {{codeName}}Tree} from '@widgets/{{spinalCase psAppDataEntity.codeName}
(eq viewRef.refPSAppView.viewType 'DETABEXPVIEW')
)
}}
import {{viewRef.refPSAppView.name}} from '@views/{{spinalCase viewRef.refPSAppView.psAppModule.codeName}}/{{spinalCase viewRef.refPSAppView.codeName}}';
import {{viewRef.refPSAppView.name}} from '@views/{{#if viewRef.refPSAppView.psAppModule.codeName}}{{spinalCase viewRef.refPSAppView.psAppModule.codeName}}{{else}}default{{/if}}/{{spinalCase viewRef.refPSAppView.codeName}}';
{{else}}
//import {{viewRef.refPSAppView.name}} from '@views/{{spinalCase viewRef.refPSAppView.psAppModule.codeName}}/{{spinalCase viewRef.refPSAppView.codeName}}';
//import {{viewRef.refPSAppView.name}} from '@views/{{#if viewRef.refPSAppView.psAppModule.codeName}}{{spinalCase viewRef.refPSAppView.psAppModule.codeName}}{{else}}default{{/if}}/{{spinalCase viewRef.refPSAppView.codeName}}';
{{/if}}
{{/if}}
{{/each}}
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ibizlab-template</artifactId>
<groupId>cn.ibizlab</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ibizlab-template-vue3</artifactId>
<groupId>cn.ibizlab</groupId>
<version>1.0-SNAPSHOT</version>
<build>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
</resource>
</resources>
</build>
</project>
\ No newline at end of file
预定义代码片段模板目录
其余模板文件引用时可以使用 {{> @macro/pub.txt.hbs}} 方式引用,支持相对路径
如果额外设置局部引用属性,可以用比如 {{> @macro/pub.txt.hbs data=page}} 等来设置,把本模板数据的page以data变量传递给子模板
\ No newline at end of file
{
name: '{{logic.name}}',
logicType: '{{logic.logicType}}',
logicCat: '{{logic.logicCat}}',
{{#eq logic.logicType 'GROUP'}}
notMode: {{logic.notMode}},
groupOP: '{{logic.groupOP}}',
relatedDetailNames: [{{#each logic.relatedDetailNames as | name |}}"{{name}}"{{#unless @last}},{{/unless}}{{/each}}],
{{#if logic.psDEFDLogics}}
childLogics: [
{{#each logic.psDEFDLogics as | childLogic |}}
{{> @macro/front-end/common/delogic.hbs logic=childLogic}}
{{/each}}
]
{{/if}}
{{/eq}}
{{#eq logic.logicType 'SINGLE'}}
condOP: "{{logic.condOP}}",
dEFDName: "{{lowerCase logic.dEFDName}}",
value: "{{logic.value}}"
{{/eq}}
},
{
{{#if item.condOp}}
"condOp": "{{item.condOp}}",
{{/if}}
"notMode": {{#if item.notMode}}true{{else}}false{{/if}},
"condType": "{{item.condType}}",
"ruleInfo": "{{item.ruleInfo}}",
"keyCond": {{#if item.keyCond}}true{{else}}false{{/if}},
{{#eq item.condType 'SIMPLE'}}
"paramType": "{{item.paramType}}",
"paramValue": "{{item.paramValue}}",
{{/eq}}
{{#if (or (eq item.condType 'VALUERANGE2') (eq item.condType 'STRINGLENGTH'))}}
"includeMinValue": {{item.includeMinValue}},
"minValue": "{{item.minValue}}",
"includeMaxValue": {{item.includeMaxValue}},
"maxValue": "{{item.maxValue}}",
{{/if}}
{{#eq item.condType 'REGEX'}}
"regExCode": {{item.regExCode}},
{{/eq}}
{{#if (and (eq item.condType 'SYSVALUERULE') item.psSysValueRule)}}
{{#with item.psSysValueRule as | sysRule |}}
"sysValueRule": {
"ruleType": "{{sysRule.ruleType}}",
"regExCode": "{{sysRule.regExCode}}",
"ruleInfo": "{{sysRule.ruleInfo}}",
"scriptCode": `{{sysRule.scriptCode}}`
}
{{/with}}
{{/if}}
{{#if item.psDEFVRConditions}}
"conditions": [
{{#each item.psDEFVRConditions as | condition |}}
{{> @macro/front-end/common/derules.hbs item=condition}}
{{#unless @last}},{{/unless}}
{{/each}}
]
{{/if}}
}
{
{{~#if layout}}
{{~#if layout.layout~}}
selfLayout: '{{layout.layout}}',
{{~/if~}}
{{~#if layout.dir~}}
dir: '{{layout.dir}}',
{{/if~}}
{{~#if layout.align~}}
align: '{{layout.align}}',
{{~/if~}}
{{~#if layout.vAlign~}}
vAlign: '{{layout.vAlign}}',
{{~/if~}}
{{~/if~}}
{{~#if layoutPos~}}
{{~#if layoutPos.layout~}}
parentLayout: '{{layoutPos.layout}}',
{{~/if~}}
{{~#if layoutPos.grow~}}
grow: {{layoutPos.grow}},
{{~/if~}}
{{~#if (and layoutPos.colLG (neq layoutPos.colLG -1) )~}}
colLG: {{layoutPos.colLG}},
{{~/if~}}
{{~#if (and layoutPos.colLGOffset (neq layoutPos.colLGOffset -1) )~}}
colLGOffset: {{layoutPos.colLGOffset}},
{{~/if~}}
{{~#if (and layoutPos.colMD (neq layoutPos.colMD -1) )~}}
colMD: {{layoutPos.colMD}},
{{~/if~}}
{{~#if (and layoutPos.colMDOffset (neq layoutPos.colMDOffset -1) )~}}
colMDOffset: {{layoutPos.colMDOffset}},
{{~/if~}}
{{~#if (and layoutPos.colSM (neq layoutPos.colSM -1) )~}}
colSM: {{layoutPos.colSM}},
{{~/if~}}
{{~#if (and layoutPos.colSMOffset (neq layoutPos.colSMOffset -1) )~}}
colSMOffset: {{layoutPos.colSMOffset}},
{{~/if~}}
{{~#if (and layoutPos.colXS (neq layoutPos.colXS -1) )~}}
colXS: {{layoutPos.colXS}},
{{~/if~}}
{{~#if (and layoutPos.colXSOffset (neq layoutPos.colXSOffset -1) )~}}
colXSOffset: {{layoutPos.colXSOffset}},
{{~/if~}}
{{/if}}
}
\ No newline at end of file
{ {{#appNavParams}}'{{lowerCase key}}':{{#if (eq rawValue true)}}'{{value}}'{{else}}'%{{lowerCase value}}%'{{/if}}{{#unless @last}},{{/unless}}{{/appNavParams}} }
\ No newline at end of file
<AppAutoComplete
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
:data="state.data"
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.valueItemName}}
valueItem="{{item.valueItemName}}"
{{/if}}
{{#if item.psEditor.placeHolder}}
placeholder="{{item.psEditor.placeHolder}}"
{{/if}}
:context="state.context"
:viewParams="state.viewParams"
{{#if item.psEditor.psNavigateContexts}}
:localContext="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateContexts}}"
{{/if}}
{{#if item.psEditor.psNavigateParams}}
:localParam="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateParams}}"
{{/if}}
{{#if item.psEditor.psAppDataEntity}}
deMajorField="{{lowerCase item.psEditor.psAppDataEntity.majorPSAppDEField.codeName}}"
deKeyField="{{lowerCase item.psEditor.psAppDataEntity.keyPSAppDEField.codeName}}"
{{/if}}
{{#and item.psEditor.psAppDataEntity item.psEditor.psAppDEDataSet}}
:acParams="{ serviceName: '{{item.psEditor.psAppDataEntity.codeName}}', interfaceName: '{{item.psEditor.psAppDEDataSet.codeName}}' }"
{{/and}}
{{#and item.psEditor.psAppDEACMode item.psEditor.psAppDEACMode.minorSortPSAppDEField}}
sort="{{lowerCase item.psEditor.psAppDEACMode.minorSortPSAppDEField}},{{#if item.psEditor.psAppDEACMode.minorSortDir}}{{item.psEditor.psAppDEACMode.minorSortDir}}{{else}}asc{{/if}}"
{{/and}}
{{#if item.psEditor.disabled}}
disabled="{{item.psEditor.disabled}}"
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if item.psEditor.editorParams.multiple}}
:multiple="{{item.psEditor.editorParams.multiple}}"
{{/if}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if defaultOpen}}
:defaultOpen="{{defaultOpen}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#eq item.psEditor.editorType "AC_NOBUTTON"}}
:showButton="false"
{{/eq}}
{{#eq item.psEditor.editorType "AC_FS_NOBUTTON"}}
:showButton="false"
{{/eq}}
:service="state.controlService"
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppCheckboxList
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
:data="state.data"
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if mode}}
:mode="{{mode}}"
{{/if}}
{{#if valueType}}
:valueType="{{valueType}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#if item.psEditor.psAppCodeList}}
codeListTag="{{item.psEditor.psAppCodeList.codeListTag}}"
codeListType="{{item.psEditor.psAppCodeList.codeListType}}"
{{~#if item.psEditor.psAppCodeList.valueSeparator}}valueSeparator="{{item.psEditor.psAppCodeList.valueSeparator}}"{{/if}}
{{/if}}
{{#if item.psEditor.psNavigateContexts}}
:localContext="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateContexts}}"
{{/if}}
{{#if item.psEditor.psNavigateParams}}
:localParam="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateParams}}"
{{/if}}
:context="state.context"
:viewParams="state.viewParams"
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppCheckbox
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppCode
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readonly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
:context="state.context"
:viewParams="state.viewParams"/>
<AppDataPickerView
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
:data="state.data"
{{#if item.valueItemName}}
valueItem="{{item.valueItemName}}"
{{/if}}
{{#if item.psEditor.placeHolder}}
placeholder="{{item.psEditor.placeHolder}}"
{{/if}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.psNavigateContexts}}
:localContext="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateContexts}}"
{{/if}}
{{#if item.psEditor.psNavigateParams}}
:localParam="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateParams}}"
{{/if}}
:context="state.context"
:viewParams="state.viewParams"
{{#if item.psEditor.psAppDEACMode.minorSortDir}}
sort="{{item.psEditor.psAppDEACMode.minorSortDir}}"
{{/if}}
{{#if item.psEditor.editorParams.pickUpData}}
pickUpData="{{item.psEditor.editorParams.pickUpData}}"
{{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppDataPicker
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
:data="state.data"
{{#if item.valueItemName}}
valueItem="{{item.valueItemName}}"
{{/if}}
{{#if item.psEditor.placeHolder}}
placeholder="{{item.psEditor.placeHolder}}"
{{/if}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.psNavigateContexts}}
:localContext="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateContexts}}"
{{/if}}
{{#if item.psEditor.psNavigateParams}}
:localParam="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateParams}}"
{{/if}}
:context="state.context"
:viewParams="state.viewParams"
{{#if item.psEditor.psAppDataEntity}}
deMajorField="{{lowerCase item.psEditor.psAppDataEntity.majorPSAppDEField.codeName}}"
deKeyField="{{lowerCase item.psEditor.psAppDataEntity.keyPSAppDEField.codeName}}"
{{/if}}
{{#if item.psEditor.pickupPSAppView }}
pickUpView="{{item.psEditor.pickupPSAppView.codeName}}"
{{/if}}
{{!-- :linkView="getLinkView({{item.psEditor}})" --}}
{{#and item.psEditor.psAppDataEntity item.psEditor.psAppDEDataSet}}
:acParams="{ serviceName: '{{item.psEditor.psAppDataEntity.codeName}}', interfaceName: '{{item.psEditor.psAppDEDataSet.codeName}}' }"
{{/and}}
{{#and item.psEditor.psAppDEACMode item.psEditor.psAppDEACMode.minorSortPSAppDEField}}
sort="{{lowerCase item.psEditor.psAppDEACMode.minorSortPSAppDEField}},{{#if item.psEditor.psAppDEACMode.minorSortDir}}{{item.psEditor.psAppDEACMode.minorSortDir}}{{else}}asc{{/if}}"
{{/and}}
{{#if item.psEditor.editorParams.pickUpData}}
pickUpData="{{item.psEditor.editorParams.pickUpData}}"
{{/if}}
{{#if (or (eq item.psEditor.editorType "PICKEREX_LINKONLY") (eq item.psEditor.editorType "PICKEREX_LINK"))}}
:linkOnly="true"
{{/if}}
{{#if (or (eq item.psEditor.editorType "PICKEREX_NOAC") (eq item.psEditor.editorType "PICKEREX_NOAC_LINK"))}}
:noAC="true"
{{/if}}
{{#if (or (eq item.psEditor.editorType "PICKEREX_TRIGGER") (eq item.psEditor.editorType "PICKEREX_TRIGGER_LINK"))}}
:isDropdown="true"
{{/if}}
{{#if (or (eq item.psEditor.editorType "ADDRESSPICKUP") (eq item.psEditor.editorType "ADDRESSPICKUP_AC"))}}
:multiple="true"
{{/if}}
:service="state.controlService"
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppDatePicker
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if item.psEditor.placeHolder}}
placeholder="{{item.psEditor.placeHolder}}"
{{/if}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#eq item.psEditor.editorType "DATEPICKEREX"}}
dateFormat="YYYY-MM-DD HH:mm:ss"
dateType="dateTime"
{{/eq}}
{{#eq item.psEditor.editorType "DATEPICKEREX_NOTIME"}}
dateFormat="YYYY-MM-DD"
dateType="date"
{{/eq}}
{{#eq item.psEditor.editorType "DATEPICKER"}}
dateFormat="YYYY-MM-DD HH:mm:ss"
dateType="dateTime"
{{/eq}}
{{#eq item.psEditor.editorType "DATEPICKEREX_HOUR"}}
dateFormat="YYYY-MM-DD HH"
dateType="dateTime"
{{/eq}}
{{#eq item.psEditor.editorType "DATEPICKEREX_MINUTE"}}
dateFormat="YYYY-MM-DD HH:mm"
dateType="dateTime"
{{/eq}}
{{#eq item.psEditor.editorType "DATEPICKEREX_SECOND"}}
dateFormat="YYYY-MM-DD HH:mm:ss"
dateType="dateTime"
{{/eq}}
{{#eq item.psEditor.editorType "DATEPICKEREX_NODAY"}}
dateFormat="HH:mm:ss"
dateType="time"
{{/eq}}
{{#eq item.psEditor.editorType "DATEPICKEREX_NODAY_NOSECOND"}}
dateFormat="HH:mm"
dateType="time"
{{/eq}}
{{#eq item.psEditor.editorType "DATEPICKEREX_NOSECOND"}}
dateFormat="YYYY-MM-DD HH:mm"
dateType="dateTime"
{{/eq}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppDropdownList
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if item.psEditor.psAppCodeList}}
codeListTag="{{item.psEditor.psAppCodeList.codeListTag}}"
codeListType="{{item.psEditor.psAppCodeList.codeListType}}"
{{#if item.psEditor.psAppCodeList.valueSeparator}}
valueSeparator="{{item.psEditor.psAppCodeList.valueSeparator}}"
{{/if}}
{{/if}}
{{#if item.psEditor.placeHolder}}
placeholder="{{item.psEditor.placeHolder}}"
{{/if}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#eq item.psEditor.editorType "DROPDOWNLIST"}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if multiple}}
:multiple="{{multiple}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{/eq}}
{{#if item.psEditor.psNavigateContexts}}
:localContext="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateContexts}}"
{{/if}}
{{#if item.psEditor.psNavigateParams}}
:localParam="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateParams}}"
{{/if}}
{{#eq item.psEditor.editorType "MDROPDOWNLIST"}}
:multiple="true"
{{/eq}}
:context="state.context"
:viewParams="state.viewParams"
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
:data="state.data"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
:data="record"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
{{#eq type "AC"}}{{> @macro/front-end/editors/auto-complete.hbs}}{{/eq}}
{{#eq type "AC_FS"}}{{> @macro/front-end/editors/auto-complete.hbs}}{{/eq}}
{{#eq type "AC_NOBUTTON"}}{{> @macro/front-end/editors/auto-complete.hbs}}{{/eq}}
{{#eq type "AC_FS_NOBUTTON"}}{{> @macro/front-end/editors/auto-complete.hbs}}{{/eq}}
{{#eq type "CHECKBOXLIST"}}{{> @macro/front-end/editors/checkbox-list.hbs}}{{/eq}}
{{#eq type "CHECKBOX"}}{{> @macro/front-end/editors/checkbox.hbs}}{{/eq}}
{{#eq type "LISTBOXPICKUP"}}{{> @macro/front-end/editors/list-box.hbs}}{{/eq}}
{{#eq type "LISTBOX"}}{{> @macro/front-end/editors/list-box.hbs}}{{/eq}}
{{#eq type "PICKEREX_LINKONLY"}}{{> @macro/front-end/editors/data-picker.hbs}}{{/eq}}
{{#eq type "PICKER"}}{{> @macro/front-end/editors/data-picker.hbs}}{{/eq}}
{{#eq type "PICKEREX_NOBUTTON"}}{{> @macro/front-end/editors/data-picker.hbs}}{{/eq}}
{{#eq type "PICKEREX_NOAC_LINK"}}{{> @macro/front-end/editors/data-picker.hbs}}{{/eq}}
{{#eq type "PICKEREX_TRIGGER_LINK"}}{{> @macro/front-end/editors/data-picker.hbs}}{{/eq}}
{{#eq type "PICKEREX_TRIGGER"}}{{> @macro/front-end/editors/data-picker.hbs}}{{/eq}}
{{#eq type "PICKEREX_NOAC"}}{{> @macro/front-end/editors/data-picker.hbs}}{{/eq}}
{{#eq type "PICKEREX_LINK"}}{{> @macro/front-end/editors/data-picker.hbs}}{{/eq}}
{{#eq type "ADDRESSPICKUP"}}{{> @macro/front-end/editors/data-picker.hbs}}{{/eq}}
{{#eq type "ADDRESSPICKUP_AC"}}{{> @macro/front-end/editors/data-picker.hbs}}{{/eq}}
{{#eq type "DATEPICKEREX"}}{{> @macro/front-end/editors/date-picker.hbs}}{{/eq}}
{{#eq type "DATEPICKEREX_NOTIME"}}{{> @macro/front-end/editors/date-picker.hbs}}{{/eq}}
{{#eq type "DATEPICKER"}}{{> @macro/front-end/editors/date-picker.hbs}}{{/eq}}
{{#eq type "DATEPICKEREX_HOUR"}}{{> @macro/front-end/editors/date-picker.hbs}}{{/eq}}
{{#eq type "DATEPICKEREX_MINUTE"}}{{> @macro/front-end/editors/date-picker.hbs}}{{/eq}}
{{#eq type "DATEPICKEREX_SECOND"}}{{> @macro/front-end/editors/date-picker.hbs}}{{/eq}}
{{#eq type "DATEPICKEREX_NODAY"}}{{> @macro/front-end/editors/date-picker.hbs}}{{/eq}}
{{#eq type "DATEPICKEREX_NODAY_NOSECOND"}}{{> @macro/front-end/editors/date-picker.hbs}}{{/eq}}
{{#eq type "DATEPICKEREX_NOSECOND"}}{{> @macro/front-end/editors/date-picker.hbs}}{{/eq}}
{{#eq type "DROPDOWNLIST"}}{{> @macro/front-end/editors/dropdown-list.hbs}}{{/eq}}
{{#eq type "DROPDOWNLIST_100"}}{{> @macro/front-end/editors/dropdown-list.hbs}}{{/eq}}
{{#eq type "MDROPDOWNLIST"}}{{> @macro/front-end/editors/dropdown-list.hbs}}{{/eq}}
{{#eq type "IPADDRESSTEXTBOX"}}{{> @macro/front-end/editors/input-ip.hbs}}{{/eq}}
{{#eq type "TEXTBOX"}}{{> @macro/front-end/editors/input.hbs}}{{/eq}}
{{#eq type "NUMBER"}}{{> @macro/front-end/editors/input.hbs}}{{/eq}}
{{#eq type "PASSWORD"}}{{> @macro/front-end/editors/input.hbs}}{{/eq}}
{{#eq type "TEXTAREA"}}{{> @macro/front-end/editors/input.hbs}}{{/eq}}
{{#eq type "TEXTAREA_10"}}{{> @macro/front-end/editors/input.hbs}}{{/eq}}
{{#eq type "RADIOBUTTONLIST"}}{{> @macro/front-end/editors/radio-group.hbs}}{{/eq}}
{{#eq type "RATING"}}{{> @macro/front-end/editors/rating.hbs}}{{/eq}}
{{#eq type "RAW"}}{{> @macro/front-end/editors/raw.hbs}}{{/eq}}
{{#eq type "SLIDER"}}{{> @macro/front-end/editors/slider.hbs}}{{/eq}}
{{#eq type "SPAN"}}{{> @macro/front-end/editors/span.hbs}}{{/eq}}
{{#eq type "STEPPER"}}{{> @macro/front-end/editors/stepper.hbs}}{{/eq}}
{{#eq type "SWITCH"}}{{> @macro/front-end/editors/switch.hbs}}{{/eq}}
{{#eq type "FILEUPLOADER"}}{{> @macro/front-end/editors/upload.hbs}}{{/eq}}
{{#eq type "FILEUPLOADER_ONE"}}{{> @macro/front-end/editors/upload.hbs}}{{/eq}}
{{#eq type "PICTURE"}}{{> @macro/front-end/editors/upload.hbs}}{{/eq}}
{{#eq type "PICTURE_ONE"}}{{> @macro/front-end/editors/upload.hbs}}{{/eq}}
{{#eq type "PICTURE_ONE_RAW"}}{{> @macro/front-end/editors/upload.hbs}}{{/eq}}
{{#eq type "PICKUPVIEW"}}{{> @macro/front-end/editors/data-picker-view.hbs}}{{/eq}}
{{#eq type "PICKEREX_DROPDOWNVIEW"}}{{> @macro/front-end/editors/data-picker-view.hbs}}{{/eq}}
{{#eq type "PICKEREX_DROPDOWNVIEW_LINK"}}{{> @macro/front-end/editors/data-picker-view.hbs}}{{/eq}}
{{#eq type "CODE"}}{{> @macro/front-end/editors/code.hbs}}{{/eq}}
{{#eq type "HTMLEDITOR"}}{{> @macro/front-end/editors/rich-text.hbs}}{{/eq}}
\ No newline at end of file
<AppInputIp
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppInput
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.placeHolder}}
placeholder="{{item.psEditor.placeHolder}}"
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if max}}
:max="{{max}}"
{{/if}}
{{#if min}}
:min="{{min}}"
{{/if}}
{{#if precision}}
:precision="{{precision}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#if item.psEditor.maxLength}}
:maxLength="{{item.psEditor.maxLength}}"
{{/if}}
{{#if item.psEditor.showMaxLength}}
:showMaxLength="{{item.psEditor.showMaxLength}}"
{{/if}}
{{#eq item.psEditor.editorType "TEXTBOX"}}
type="text"
{{/eq}}
{{#eq item.psEditor.editorType "NUMBER"}}
type="number"
{{/eq}}
{{#eq item.psEditor.editorType "PASSWORD"}}
type="password"
{{/eq}}
{{#eq item.psEditor.editorType "TEXTAREA"}}
type="textarea"
{{/eq}}
{{#eq item.psEditor.editorType "TEXTAREA_10"}}
type="textarea"
{{/eq}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppListBox
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
:data="state.data"
:server="state.controlService"
:deMajorField="state.appDeMajorFieldName"
:deKeyField="state.appDeKeyFieldName"
editorType='{{item.psEditor.editorType}}'
{{#and item.psEditor.psAppDataEntity item.psEditor.psAppDEDataSet}}
:acParams="{ serviceName: '{{item.psEditor.psAppDataEntity.codeName}}', interfaceName: '{{item.psEditor.psAppDEDataSet.codeName}}' }"
{{/and}}
{{#and item.psEditor.psAppDEACMode item.psEditor.psAppDEACMode.minorSortPSAppDEField}}
sort="{{lowerCase item.psEditor.psAppDEACMode.minorSortPSAppDEField}},{{#if item.psEditor.psAppDEACMode.minorSortDir}}{{item.psEditor.psAppDEACMode.minorSortDir}}{{else}}asc{{/if}}"
{{/and}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if mode}}
:mode="{{mode}}"
{{/if}}
{{#if valueType}}
:valueType="{{valueType}}"
{{/if}}
{{#if multiple}}
:multiple="{{multiple}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if item.psEditor.psAppCodeList}}
codeListTag="{{item.psEditor.psAppCodeList.codeListTag}}"
codeListType="{{item.psEditor.psAppCodeList.codeListType}}"
{{#if item.psEditor.psAppCodeList.valueSeparator}}valueSeparator="{{item.psEditor.psAppCodeList.valueSeparator}}"{{/if}}
{{/if}}
{{#if item.psEditor.psNavigateContexts}}
:localContext="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateContexts}}"
{{/if}}
{{#if item.psEditor.psNavigateParams}}
:localParam="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateParams}}"
{{/if}}
:context="state.context"
:viewParams="state.viewParams"
:service="state.controlService"
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppRadioGroup
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
:data="state.data"
{{#if item.psEditor.psAppCodeList}}
codeListTag="{{item.psEditor.psAppCodeList.codeListTag}}"
codeListType="{{item.psEditor.psAppCodeList.codeListType}}"
{{#if item.psEditor.psAppCodeList.valueSeparator}}valueSeparator="{{item.psEditor.psAppCodeList.valueSeparator}}"{{/if}}
{{/if}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if item.psEditor.psNavigateContexts}}
:localContext="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateContexts}}"
{{/if}}
{{#if item.psEditor.psNavigateParams}}
:localParam="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateParams}}"
{{/if}}
:context="state.context"
:viewParams="state.viewParams"
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppRating
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if max}}
:max="{{max}}"
{{/if}}
{{#if allowHalf}}
:allowHalf="{{allowHalf}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppRaw
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
:date="state.data"
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if contentType}}
contentType="{{contentType}}"
{{else}}
contentType="RAW"
{{/if}}
{{#if iconClass}}
iconClass="{{iconClass}}"
{{/if}}
{{#if imgPath}}
imgPath="{{imgPath}}"
{{/if}}
{{#if caption}}
caption="{{caption}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppRichText
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readonly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if item.psEditor.editorParams.height}}
:height="{{item.psEditor.editorParams.height}}"
{{/if}}
{{#if item.psEditor.editorParams.uploadParams}}
:uploadParams="{{item.psEditor.editorParams.uploadParams}}"
{{/if}}
{{#if item.psEditor.editorParams.exportParams}}
:exportParams="{{item.psEditor.editorParams.exportParams}}"
{{/if}}
:context="state.context"
:viewParams="state.viewParams"
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
:data="state.data"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
:data="record"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppSlider
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
:date="state.data"
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if step}}
:step="{{step}}"
{{/if}}
{{#if min}}
:min="{{min}}"
{{/if}}
{{#if max}}
:max="{{max}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppSpan
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.psAppCodeList}}
codeListTag="{{item.psEditor.psAppCodeList.codeListTag}}"
codeListType="{{item.psEditor.psAppCodeList.codeListType}}"
{{/if}}
{{#if item.dataType}}
:dataType="{{item.dataType}}"
{{/if}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if unitName}}
unitName="{{unitName}}"
{{/if}}
{{#if precision}}
:precision="{{precision}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#if item.valueFormat}}
valueFormat="{{item.valueFormat}}"
{{else if item.psAppDEField.valueFormat}}
valueFormat="{{item.psAppDEField.valueFormat}}"
{{/if}}
{{#if item.psEditor.psNavigateContexts}}
:localContext="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateContexts}}"
{{/if}}
{{#if item.psEditor.psNavigateParams}}
:localParam="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psEditor.psNavigateParams}}"
{{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
{{/eq}}
:context="state.context"
:viewParams="state.viewParams"/>
<AppStepper
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if precision}}
:precision="{{precision}}"
{{/if}}
{{#if step}}
:step="{{step}}"
{{/if}}
{{#if max}}
:max="{{max}}"
{{/if}}
{{#if min}}
:min="{{min}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppSwitch
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if}}
{{#jsonParse item.psEditor.editorParams}}
{{#if size}}
:size="{{size}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#if item.psEditor.readOnly}}
:readOnly="{{item.psEditor.readOnly}}"
{{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
<AppUpload
{{#eq ctrlType 'grid'}}
name="{{#if dataItemName}}{{dataItemName}}{{else}}{{item.codeName}}{{/if}}"
{{/eq}}
{{#eq ctrlType 'panel'}}
name="{{item.name}}"
{{/eq}}
{{#eq ctrlType 'form'}}
name="{{item.codeName}}"
{{/eq}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if method}}
method="{{method}}"
{{/if}}
{{#if multiple}}
multiple="{{multiple}}"
{{/if}}
{{#if showUploadList}}
:showUploadList="{{showUploadList}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#if (eq ctrlType 'form')}}
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{else if (eq ctrlType 'grid')}}
{{#if (eq item.enableCond 0)}}
:disabled="true"
{{else if (eq item.enableCond 1)}}
:disabled="!Object.is(record.srfuf,0)"
{{else if (eq item.enableCond 2)}}
:disabled="!Object.is(record.srfuf,1)"
{{/if}}
{{else if (eq ctrlType 'panel')}}
:disabled="state.detailsModel.{{item.name}}.disabled"
{{/if}}
{{#if item.psEditor.readOnly}}
:readonly="{{item.psEditor.readOnly}}"
{{/if}}
{{!-- TODO maxFileContent识别 --}}
{{#if item.psEditor.editorParams}}
{{#jsonParse item.psEditor.editorParams}}
{{#if limit}}
:limit="{{limit}}"
{{/if}}
{{/jsonParse}}
{{/if}}
{{#eq item.psEditor.editorType "PICTURE"}}
accept='image/*'
listType="picture-card"
{{/eq}}
{{#eq item.psEditor.editorType "PICTURE_ONE"}}
accept='image/*'
listType="picture-card"
{{/eq}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}"
@editorEvent="onEditorEvent"
{{/if}}
{{#eq ctrlType 'grid'}}
:value="record.{{#if dataItemName}}{{dataItemName}}{{else}}{{item.psEditor.name}}{{/if}}"
@editorEvent="onEditorEvent($event,index)"
{{/eq}}
/>
/**
* {{singleAppMethod.codeName}}
*
* @param {IContext} [context={}]
* @param {IParam} [data = {}]
* @returns {Promise<any>}
* @memberof {{pascalCase appEntity.codeName}}ServiceBase
*/
public async {{singleAppMethod.codeName}}(context: IContext = {}, data: IParam = {}): Promise<any> {
try {
// data = await this.executeAppDELogic('{{singleAppMethod.psDEAction.psDELogic.codeName}}', context, data);
const res = {
ok: true,
status: 200,
data: data
};
return res;
} catch (error: any) {
const res = {
ok: false,
status: 500,
message: error?.message
}
return res;
}
}
/**
* {{singleAppMethod.codeName}}
*
* @param {IContext} [context={}]
* @param {IParam} [data = {}]
* @returns {Promise<any>}
* @memberof {{pascalCase appEntity.codeName}}ServiceBase
*/
public async {{singleAppMethod.codeName}}(context: IContext = {}, data: IParam = {}): Promise<any> {
{{#if singleAppMethod.psDEDataSet}}
{{#if singleAppMethod.psDEDataSet.psDEDataQueries}}
{{#singleAppMethod.psDEDataSet.psDEDataQueries}}
// const cond: any = this.get{{codeName}}Cond();
{{/singleAppMethod.psDEDataSet.psDEDataQueries}}
// return this.searchAppLocal(cond, new SearchFilter(context, data));
// return this.searchAppLocal(null, new SearchFilter(context, data));
// 从数据模式暂未支持。等待后续补充
const res = { ok: true, data: [], status: 200 };
return res;
{{else}}
// return this.searchAppLocal(null, new SearchFilter(context, data));
// 从数据模式暂未支持。等待后续补充
const res = { ok: true, data: [], status: 200 };
return res;
{{/if}}
{{else}}
const res: any = { ok: false, message: '未设置数据集', status: 500 };
return res;
{{/if}}
}
/**
* {{singleAppMethod.codeName}}
*
* @param {IContext} [context={}]
* @param {IParam} [data = {}]
* @returns {Promise<any>}
* @memberof {{pascalCase appEntity.codeName}}ServiceBase
*/
public async {{singleAppMethod.codeName}}(context: IContext = {}, data: IParam = {}): Promise<any> {
{{! 方法路径是否带资源主键 }}
const deResPath = this.buildDeResPath(context, {{singleAppMethod.psDEServiceAPIMethod.needResourceKey}});
{{#if (eq singleAppMethod.methodType "SELECT")}}
{{! 方法类型为SELECT }}
{{#if (or (eq singleAppMethod.psDEServiceAPIMethod.requestMethod "PUT") (eq singleAppMethod.psDEServiceAPIMethod.requestMethod "POST") )}}
const res = await this.http.{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestMethod }}(`${deResPath}{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestPath}}`,data);
{{else}}
const res = await this.http.{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestMethod }}(`${deResPath}{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestPath}}`);
{{/if}}
{{else if (eq singleAppMethod.methodType "FETCHTEMP")}}
{{! 方法类型为FETCHTEMP }}
const res = await this.http.{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestMethod }}(`${deResPath}{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestPath}}`);
{{else if (eq singleAppMethod.methodType "FETCH")}}
{{! 方法类型为FETCH }}
const res = await this.http.{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestMethod }}(`${deResPath}{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestPath}}`,data);
{{else}}
{{! 方法类型为DEACTION }}
this.beforeExecuteAction(context,data,'{{singleAppMethod.codeName}}');
{{#if (eq singleAppMethod.psDEServiceAPIMethod.requestParamType "NONE")}}
{{! 参数类型为NONE,包含GetDraft }}
{{#if (neq singleAppMethod.codeName 'GetDraft')}}
const res = await this.http.{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestMethod }}(`${deResPath}{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestPath}}`);
{{else}}
const res = await this.http.{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestMethod }}(`${deResPath}{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestPath}}`,data);
{{/if}}
{{else if (eq singleAppMethod.psDEServiceAPIMethod.requestParamType "FIELD")}}
{{! 参数类型为FIELD,包含Get,Remove }}
const res = await this.http.{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestMethod }}(`${deResPath}{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestPath}}`);
{{else if (eq singleAppMethod.psDEServiceAPIMethod.requestParamType "ENTITY")}}
{{! 参数类型为ENTITY,包含CheckKey,Create,Save,Update }}
const res = await this.http.{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestMethod }}(`${deResPath}{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestPath}}`,data);
{{else}}
{{! 参数类型为URIPARAM }}
const res = await this.http.{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestMethod }}(`${deResPath}{{lowerCase singleAppMethod.psDEServiceAPIMethod.requestPath}}`,data);
{{/if}}
this.afterExecuteAction(context,data,'{{singleAppMethod.codeName}}');
{{/if}}
return res;
}
/**
* {{singleAppMethod.codeName}}
*
* @param {IContext} [context={}]
* @param {IParam} [data = {}]
* @returns {Promise<any>}
* @memberof {{pascalCase appEntity.codeName}}ServiceBase
*/
public async {{singleAppMethod.codeName}}(context: IContext = {}, data: IParam = {}): Promise<any> {
{{#if singleAppMethod.psDEAction.scriptCode}}
eval(`{{singleAppMethod.psDEAction.scriptCode}}`);
{{/if}}
const res = {
ok: true,
status: 200,
data: data
}
return res;
}
{{#eq ctrl.controlType "FORM"}}{{> @macro/front-end/views/view-control/view-form/view-control-form.hbs}}{{/eq~}}
{{#eq ctrl.controlType "SEARCHFORM"}}{{> @macro/front-end/views/view-control/view-search-form/view-control-search-form.hbs}}{{/eq~}}
{{#eq ctrl.controlType "GRID"}}{{> @macro/front-end/views/view-control/view-grid/view-control-grid.hbs}}{{/eq~}}
{{#eq ctrl.controlType "LIST"}}{{> @macro/front-end/views/view-control/view-list/view-control-list.hbs}}{{/eq~}}
{{#eq ctrl.controlType "APPMENU"}}{{> @macro/front-end/views/view-control/view-menu/view-control-menu.hbs}}{{/eq~}}
{{#eq ctrl.controlType "PICKUPVIEWPANEL"}}{{> @macro/front-end/views/view-control/view-pickup-panel/view-pickup-panel.hbs}}{{/eq~}}
{{#eq ctrl.controlType "TREEVIEW"}}{{> @macro/front-end/views/view-control/view-tree/view-control-tree.hbs}}{{/eq~}}
{{#eq ctrl.controlType "PANEL"}}{{> @macro/front-end/views/view-control/view-panel/view-control-panel.hbs}}{{/eq~}}
{{#eq ctrl.controlType "DATAVIEW"}}{{> @macro/front-end/views/view-control/view-dataview/view-control-dataview.hbs}}{{/eq~}}
\ No newline at end of file
{{!-- 视图基本信息 --}}
viewCodeName: '{{page.codeName}}',
viewName: '{{page.name}}',
viewCaption: '{{page.caption}}',
subCaption: '{{page.subCaption}}',
viewSysCss: '{{lowerCase page.codeName}} {{page.psSysCss.cssName}}',
{{!-- viewSysImage: '{{page.psSysImage}}', --}}
showCaptionBar: {{page.showCaptionBar}},
viewType: '{{page.viewType}}',
viewStyle: '{{page.viewStyle}}',
xDataControlName:'{{page.xDataControlName}}',
height: '{{page.height}}',
width: '{{page.width}}',
appEntityCodeName: '{{page.psAppDataEntity.codeName}}',
appDeKeyFieldName: '{{lowerCase page.psAppDataEntity.keyPSAppDEField.codeName}}',
appDeMajorFieldName: '{{lowerCase page.psAppDataEntity.majorPSAppDEField.codeName}}',
isLoadDefault: {{#if (or page.loadDefault (eq page.loadDefault false))}}{{page.loadDefault}}{{else}}true{{/if}},
appViewNavContexts:{{> @macro/front-end/common/navparam.hbs appNavParams=page.psAppViewNavContexts}},
appViewNavParams:{{> @macro/front-end/common/navparam.hbs appNavParams=page.psAppViewNavParams}},
{{#if page.psAppCounterRefs}}
appCounterRefs: [
{{#each page.psAppCounterRefs as | counterRef |}}
{{#if counterRef.psAppCounter}}
{{#with counterRef.psAppCounter as | counter |}}
{
id: '{{counterRef.id}}',
getAction: '{{counter.getPSAppDEAction.codeName}}',
timer: {{#if counter.timer}}{{counter.timer}}{{else}}6000{{/if}},
{{#if counter.psAppDataEntity}}
deCodeName: '{{lowerCase counter.psAppDataEntity.codeName}}'
{{/if}}
}{{#unless @last}},{{/unless}}
{{/with}}
{{/if}}
{{/each}}
],
counterServices: [],
{{/if}}
{{!-- 快速分组代码表 --}}
enableQuickGroup: {{#if page.enableQuickGroup}}true{{else}}false{{/if}},
{{#if page.quickGroupPSCodeList}}
quickGroupPSCodeList: {
codeName: '{{page.quickGroupPSCodeList.codeName}}',
codeListTag: '{{page.quickGroupPSCodeList.codeListTag}}'
},
quickGroupData: {},
{{/if}}
{{#eq page.viewType 'APPINDEXVIEW'}}
menuAlign: '{{#if page.mainMenuAlign}}{{page.mainMenuAlign}}{{else}}LEFT{{/if}}',
{{/eq}}
{{!-- viewMsgGroup: '{{page.psAppViewMsgGroup}}', --}}
{{!-- viewUIActions: '{{page.psAppViewUIActions}}', --}}
{{!-- 视图逻辑 --}}
viewLogics: {
{{#each page.psAppViewLogics as |viewLogic|}}
{{#if (eq viewLogic.name 'newdata')}}
newData:{
{{#if viewLogic.psAppUILogic.newDataPSAppView.openMode}}
openMode: '{{viewLogic.psAppUILogic.newDataPSAppView.openMode}}'
{{/if}}
newDataViewName: '{{viewLogic.psAppUILogic.newDataPSAppView.refPSAppView.codeName}}',
},
{{/if}}
{{#if (eq viewLogic.name 'opendata')}}
openData:{
{{#if viewLogic.psAppUILogic.newDataPSAppView.openMode}}
openMode: '{{viewLogic.psAppUILogic.newDataPSAppView.openMode}}'
{{/if}}
openDataViewName: '{{viewLogic.psAppUILogic.openDataPSAppView.refPSAppView.codeName}}',
},
{{/if}}
{{/each}}
},
{{#page.viewToolBarItems}}
toolbar: [
{{#items}}
{ id:'{{id}}',name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if uIAction}}uIAction:{codeName:'{{uIAction.codeName}}',fullCodeName:'{{uIAction.fullCodeName}}',uIActionMode:'{{uIAction.uIActionMode}}',actionTarget:'{{uIAction.actionTarget}}',uIActionTag:'{{uIAction.uIActionTag}}',dataAccessAction:'{{uIAction.dataAccessAction}}',uIActionType:'{{uIAction.uIActionType}}'}{{#if uIAction.counterId}},counterId: '{{uIAction.counterId}}'{{/if}}{{/if}} },
{{/items}}
],
{{/page.viewToolBarItems}}
{{#each page.ctrls as | ctrl |}}
{{#if (neq ctrl.controlType "TOOLBAR")}}
{{> @macro/front-end/views/include-view-control type=ctrl.controlType ctrl=ctrl}}
{{/if}}
{{/each}}
\ No newline at end of file
{{ctrl.name}}:{
action:{
loadAction: '{{ctrl.getPSControlAction.psAppDEMethod.codeName}}',
removeAction: '{{ctrl.removePSControlAction.psAppDEMethod.codeName}}',
updateAction: '{{ctrl.updatePSControlAction.psAppDEMethod.codeName}}',
loadDraftAction: '{{ctrl.getDraftPSControlAction.psAppDEMethod.codeName}}',
createAction: '{{ctrl.createPSControlAction.psAppDEMethod.codeName}}',
fetchAction:'{{ctrl.fetchPSControlAction.psAppDEMethod.codeName}}'
}
},
\ No newline at end of file
{{ctrl.name}}:{
action:{
loadAction: '{{ctrl.getPSControlAction.psAppDEMethod.codeName}}',
removeAction: '{{ctrl.removePSControlAction.psAppDEMethod.codeName}}',
updateAction: '{{ctrl.updatePSControlAction.psAppDEMethod.codeName}}',
loadDraftAction: '{{ctrl.getDraftPSControlAction.psAppDEMethod.codeName}}',
createAction: '{{ctrl.createPSControlAction.psAppDEMethod.codeName}}'
}
},
\ No newline at end of file
{{ctrl.name}}:{
action:{
loadAction: '{{ctrl.getPSControlAction.psAppDEMethod.codeName}}',
removeAction: '{{ctrl.removePSControlAction.psAppDEMethod.codeName}}',
updateAction: '{{ctrl.updatePSControlAction.psAppDEMethod.codeName}}',
loadDraftAction: '{{ctrl.getDraftPSControlAction.psAppDEMethod.codeName}}',
createAction: '{{ctrl.createPSControlAction.psAppDEMethod.codeName}}',
fetchAction:'{{ctrl.fetchPSControlAction.psAppDEMethod.codeName}}'
}
},
\ No newline at end of file
{{ctrl.name}}:{
action:{
loadAction: '{{ctrl.getPSControlAction.psAppDEMethod.codeName}}',
removeAction: '{{ctrl.removePSControlAction.psAppDEMethod.codeName}}',
updateAction: '{{ctrl.updatePSControlAction.psAppDEMethod.codeName}}',
loadDraftAction: '{{ctrl.getDraftPSControlAction.psAppDEMethod.codeName}}',
createAction: '{{ctrl.createPSControlAction.psAppDEMethod.codeName}}',
fetchAction:'{{ctrl.fetchPSControlAction.psAppDEMethod.codeName}}'
}
},
\ No newline at end of file
{{ctrl.name}}:{
loadAction: '{{ctrl.getPSControlAction.psAppDEMethod.codeName}}'
},
\ No newline at end of file
{{ctrl.name}}:{
action:{
loadAction: '{{ctrl.getPSControlAction.psAppDEMethod.codeName}}',
removeAction: '{{ctrl.removePSControlAction.psAppDEMethod.codeName}}',
updateAction: '{{ctrl.updatePSControlAction.psAppDEMethod.codeName}}',
loadDraftAction: '{{ctrl.getDraftPSControlAction.psAppDEMethod.codeName}}',
createAction: '{{ctrl.createPSControlAction.psAppDEMethod.codeName}}'
}
},
\ No newline at end of file
{{ctrl.name}}:{
action:{
loadAction: '{{ctrl.getPSControlAction.psAppDEMethod.codeName}}',
removeAction: '{{ctrl.removePSControlAction.psAppDEMethod.codeName}}',
updateAction: '{{ctrl.updatePSControlAction.psAppDEMethod.codeName}}',
loadDraftAction: '{{ctrl.getDraftPSControlAction.psAppDEMethod.codeName}}',
createAction: '{{ctrl.createPSControlAction.psAppDEMethod.codeName}}',
fetchAction:'{{ctrl.fetchPSControlAction.psAppDEMethod.codeName}}'
}
},
\ No newline at end of file
{{camelCase ctrl.name}}:{
action:{
{{#each ctrl.psControlHandler.psHandlerActions as | action |}}
{{#eq action.name 'search'}}
searchAction: '{{action.psAppDEMethod.id}}',
{{/eq}}
{{#eq action.name 'load'}}
loadAction: '{{action.psAppDEMethod.id}}',
{{/eq}}
{{#eq action.name 'loaddraft'}}
loadDraftAction: '{{action.psAppDEMethod.id}}',
{{/eq}}
{{/each}}
}
},
\ No newline at end of file
{{ctrl.name}}: {
action:{
loadAction: '{{ctrl.getPSControlAction.psAppDEMethod.codeName}}',
removeAction: '{{ctrl.removePSControlAction.psAppDEMethod.codeName}}',
updateAction: '{{ctrl.updatePSControlAction.psAppDEMethod.codeName}}',
loadDraftAction: '{{ctrl.getDraftPSControlAction.psAppDEMethod.codeName}}',
createAction: '{{ctrl.createPSControlAction.psAppDEMethod.codeName}}',
fetchAction:'{{ctrl.fetchPSControlAction.psAppDEMethod.codeName}}'
}
},
\ No newline at end of file
layoutPos: {
layout: '{{item.layout}}',
{{#if (eq item.layout 'TABLE_24COL')}}
{{#if item.colLG}}lg:"{{#if (neq item.colLG -1)}}{{item.colLG}}{{/if}}", lgOffset: "{{#if (neq item.colLGOffset -1)}}{{item.colLGOffset}}{{else}}0{{/if}}",{{/if}}
{{#if item.colMD}}md:"{{#if (neq item.colMD -1)}}{{item.colMD}}{{/if}}", mdOffset: "{{#if (neq item.colMDOffset -1)}}{{item.colMDOffset}}{{else}}0{{/if}}",{{/if}}
{{#if item.colSM}}sm:"{{#if (neq item.colSM -1)}}{{item.colSM}}{{/if}}", smOffset: "{{#if (neq item.colSMOffset -1)}}{{item.colSMOffset}}{{else}}0{{/if}}",{{/if}}
{{#if item.colXS}}xs:"{{#if (neq item.colXS -1)}}{{item.colXS}}{{/if}}", xsOffset: "{{#if (neq item.colXSOffset -1)}}{{item.colXSOffset}}{{else}}0{{/if}}",{{/if}}
{{else}}
{{#if item.colLG}}lg:"{{#if (neq item.colLG -1)}}{{item.colLG}}*2{{/if}}", lgOffset: "{{#if (neq item.colLGOffset -1)}}{{item.colLGOffset}}*2{{else}}0{{/if}}",{{/if}}
{{#if item.colMD}}md:"{{#if (neq item.colMD -1)}}{{item.colMD}}*2{{/if}}", mdOffset: "{{#if (neq item.colMDOffset -1)}}{{item.colMDOffset}}*2{{else}}0{{/if}}",{{/if}}
{{#if item.colSM}}sm:"{{#if (neq item.colSM -1)}}{{item.colSM}}*2{{/if}}", smOffset: "{{#if (neq item.colSMOffset -1)}}{{item.colSMOffset}}*2{{else}}0{{/if}}",{{/if}}
{{#if item.colXS}}xs:"{{#if (neq item.colXS -1)}}{{item.colXS}}*2{{/if}}", xsOffset: "{{#if (neq item.colXSOffset -1)}}{{item.colXSOffset}}*2{{else}}0{{/if}}",{{/if}}
{{/if}}
},
{{#if item.colLG}}
{{#if (eq item.layout 'TABLE_24COL')}}
:lg="{span: {{#if (neq item.colLG -1)}}{{item.colLG}}{{else}}24{{/if}}, offset: {{#if (neq item.colLGOffset -1)}}{{item.colLGOffset}}{{else}}0{{/if}} }"
{{else}}
:lg="{span: {{#if (neq item.colLG -1)}}{{item.colLG}}*2{{else}}24{{/if}}, offset: {{#if (neq item.colLGOffset -1)}}{{item.colLGOffset}}*2{{else}}0{{/if}} }"
{{/if}}
{{/if}}
{{#if item.colMD}}
{{#if (eq item.layout 'TABLE_24COL')}}
:md="{span: {{#if (neq item.colMD -1)}}{{item.colMD}}{{else}}24{{/if}}, offset: {{#if (neq item.colMDOffset -1)}}{{item.colMDOffset}}{{else}}0{{/if}} }"
{{else}}
:md="{span: {{#if (neq item.colMD -1)}}{{item.colMD}}*2{{else}}24{{/if}}, offset: {{#if (neq item.colMDOffset -1)}}{{item.colMDOffset}}*2{{else}}0{{/if}} }"
{{/if}}
{{/if}}
{{#if item.colSM}}
{{#if (eq item.layout 'TABLE_24COL')}}
:sm="{span: {{#if (neq item.colSM -1)}}{{item.colSM}}{{else}}24{{/if}}, offset: {{#if (neq item.colSMOffset -1)}}{{item.colSMOffset}}{{else}}0{{/if}} }"
{{else}}
:sm="{span: {{#if (neq item.colSM -1)}}{{item.colSM}}*2{{else}}24{{/if}}, offset: {{#if (neq item.colSMOffset -1)}}{{item.colSMOffset}}*2{{else}}0{{/if}} }"
{{/if}}
{{/if}}
{{#if item.colXS}}
{{#if (eq item.layout 'TABLE_24COL')}}
:xs="{span: {{#if (neq item.colXS -1)}}{{item.colXS}}{{else}}24{{/if}}, offset: {{#if (neq item.colXSOffset -1)}}{{item.colXSOffset}}{{else}}0{{/if}} }"
{{else}}
:xs="{span: {{#if (neq item.colXS -1)}}{{item.colXS}}*2{{else}}24{{/if}}, offset: {{#if (neq item.colXSOffset -1)}}{{item.colXSOffset}}*2{{else}}0{{/if}} }"
{{/if}}
{{/if}}
\ No newline at end of file
<AppPortletCard
name="{{portlet.name}}"
:isContainer="true"
{{#if portlet.caption}}
title="{{portlet.caption}}"
{{/if}}
:showCaption="{{#if portlet.isShowTitleBar}}true{{else}}false{{/if}}"
{{#if portlet.psSysImage}}
{{#if portlet.psSysImage.imagePath}}imgPath="{{portlet.psSysImage.imagePath}}"{{else if portlet.psSysImage.cssClass}}iconClass="{{portlet.psSysImage.cssClass}}"{{/if}}
{{/if}}
:layoutOpts="{{> @macro/front-end/common/layoutPos.hbs layout=portlet.psLayout layoutPos=portlet.psLayoutPos}}"
class="app-portlet-container {{portlet.psSysCss.cssName}}"
{{#if (or portlet.width portlet.height)}}
style="{{#if portlet.width}}width: {{portlet.width}}px;{{/if}}{{#if portlet.height}}height: {{portlet.height}}px;{{/if}}"
{{/if}}
>
{{#each portlet.psControls as | subPortlet | }}
{{#eq subPortlet.portletType 'CONTAINER'}}
{{> @macro/front-end/widgets/dashboard-detail/include-dashboard.hbs type='PORTLET_CONTAINER' portlet=subPortlet}}
{{else}}
{{> @macro/front-end/widgets/dashboard-detail/include-dashboard.hbs type='PORTLET' portlet=subPortlet}}
{{/eq}}
{{/each}}
</AppPortletCard>
{{#eq ctrl.psLayout.layout "FLEX"}}
<div class="app-dashboard-layout-flex" style="display: flex;{{#if ctrl.psLayout.dir}}flex-direction: {{ctrl.psLayout.dir}};{{/if}}{{#if ctrl.psLayout.align}}justify-content: {{ctrl.psLayout.align}};{{/if}}{{#if ctrl.psLayout.vAlign}}align-items: {{ctrl.psLayout.vAlign}};{{/if}}">
{{#each ctrl.psControls as | portlet | }}
<div style="flex-grow: {{#if portlet.psLayoutPos.grow}}{{portlet.psLayoutPos.grow}}{{else}}0{{/if}};">
{{>(lookup 'CONTAINER') portlet=portlet}}
</div>
{{/each}}
</div>
{{else}}
<a-row class="app-dashboard-layout-table">
{{#each ctrl.psControls as | portlet | }}
<a-col
{{> @macro/front-end/widgets/common/layout-pos.hbs item=portlet.psLayoutPos}} >
{{>(lookup 'CONTAINER') portlet=portlet}}
</a-col>
{{/each}}
</a-row>
{{/eq}}
{{#eq type "PORTLET_CONTAINER"}}{{> @macro/front-end/widgets/dashboard-detail/container.hbs}}{{/eq}}
{{#eq type "PORTLET"}}{{> @macro/front-end/widgets/dashboard-detail/portlet.hbs}}{{/eq}}
\ No newline at end of file
{{#eq portlet.portletType 'CONTAINER'}}
{{#if portlet.psControls}}
<div class="portlet-card" :bordered="false" dis-hover :padding="0">
{{else}}
<div class="portlet-card custom-card" :bordered="false" dis-hover :padding="10">
{{/if}}
{{#if (and portlet.showTitleBar portlet.title)}}
<div class="portlet-card-title">{{portlet.title}}</div>
{{/if}}
<div class="portlet-container">
{{>(lookup 'DASHBOARD') ctrl=portlet}}
</div>
</div>
{{else}}
<{{codeName}}Portlet
ref="portlet"
name="{{portlet.name}}"
:context="state.context"
:viewParams="state.viewParams"
:viewSubject="state.viewSubject"
:parent="dashboardControl"
@ctrlEvent="onCtrlEvent"
></{{codeName}}Portlet>
{{/eq}}
<{{codeName}}Portlet
ref="portlet"
name="{{portlet.name}}"
:showCaption="{{#if portlet.isShowTitleBar}}true{{else}}false{{/if}}"
:context="state.context"
:viewParams="state.viewParams"
:viewSubject="state.viewSubject"
:parent="dashboardControl"
@ctrlEvent="onCtrlEvent"
/>
{{#each item.psDEFormDetails as | detail |}}
{{#if (and (eq detail.detailType "BUTTON") detail.psUIAction)}}
{{#detail.psUIAction}}
'{{uIActionTag}}': { disabled: false, visible: true, noPrivDisplayMode: "{{noPrivDisplayMode}}", dataAccessAction: '{{dataAccessAction}}', actionTarget: '{{actionTarget}}' },
{{/detail.psUIAction}}
{{/if}}
{{#if (and (eq detail.detailType "GROUPPANEL") detail.psUIActionGroup detail.psUIActionGroup.psUIActionGroupDetails)}}
{{#each detail.psUIActionGroup.psUIActionGroupDetails as | detail | }}
{{#detail.psUIAction}}
'{{uIActionTag}}': { disabled: false, visible: true, noPrivDisplayMode: "{{noPrivDisplayMode}}", dataAccessAction: '{{dataAccessAction}}', actionTarget: '{{actionTarget}}' },
{{/detail.psUIAction}}
{{/each}}
{{/if}}
{{#if detail.psDEFormDetails}}
{{> @macro/front-end/widgets/form-detail/form-action-model.hbs item=detail}}
{{/if}}
{{/each}}
<AppFormButton
name="{{item.codeName}}"
:layoutOpts="{{> @macro/front-end/common/layoutPos.hbs layout=item.psLayout layoutPos=item.psLayoutPos}}"
:visible="state.detailsModel.{{item.codeName}}.visible"
{{#if item.psSysCss}}
class="{{item.psSysCss.cssName}}"
{{/if}}
{{#if (or item.width item.height)}}
style="{{#if item.width}}width: {{item.width}}px;{{/if}}{{#if item.height}}height: {{item.height}}px;{{/if}}"
{{/if}}
{{#if item.psSysImage.cssClass}}
iconClass="{{item.psSysImage.cssClass}}"
{{/if}}
{{#if item.psSysImage.imagePath}}
imgPath="{{item.psSysImage.imagePath}}"
{{/if}}
:showCaption="{{item.showCaption}}"
{{#if item.labelPSSysCss}}
labelCssName="{{item.labelPSSysCss.cssName}}"
{{/if}}
{{#if item.caption}}
caption="{{item.caption}}"
{{/if}}
:uIAction="state.detailsModel.{{item.codeName}}.uIAction"
@action="onComponentEvent"
/>
{{item.codeName}}: {
caption: '{{item.caption}}',
name: '{{item.name}}',
codeName: '{{item.codeName}}',
disabled: false,
visible: true,
detailStyle: '{{item.detailStyle}}',
detailType: '{{item.detailType}}',
showCaption: {{#if item.showCaption}}true{{else}}false{{/if}},
enableAnchor: {{#if item.enableAnchor}}true{{else}}false{{/if}},
{{#if item.valueFormat}}
valueFormat: '{{item.valueFormat}}',
{{else}}
{{#if item.psAppDEField}}
valueFormat: '{{item.psAppDEField.valueFormat}}',
{{/if}}
{{/if}}
{{#if (eq item.detailType "FORMITEM")}}
dataType: '{{item.dataType}}',
required: {{#if item.allowEmpty}}false{{else}}true{{/if}},
enableCond: {{item.enableCond}},
{{#if item.psDEFormItemUpdate}}
formItemUpdate: {
{{#if item.psDEFormItemUpdate.customCode}}
customCode: {{item.psDEFormItemUpdate.customCode}},
scriptCode: `{{item.psDEFormItemUpdate.scriptCode}}`,
{{else}}
showBusyIndicator: "{{item.psDEFormItemUpdate.showBusyIndicator}}",
appDEMethod: "{{item.psDEFormItemUpdate.psAppDEMethod.codeName}}",
updateDetails: [
{{#each item.psDEFormItemUpdate.psDEFIUpdateDetails as | updateDetails | }}
"{{updateDetails.name}}",
{{/each}}
],
{{/if}}
},
{{/if}}
{{#if item.resetItemName}}
resetItemName: '{{item.resetItemName}}',
{{/if}}
{{#if item.valueItemName}}
valueItemName: '{{item.valueItemName}}',
{{/if}}
{{/if}}
{{#if (and (eq item.detailType "BUTTON") item.psUIAction)}}
{{!-- TODO 补充显示图标和文字模式 --}}
uIAction: { caption: '{{item.psUIAction.caption}}', uIActionMode: "{{item.psUIAction.uIActionMode}}", disabled: false, visible: true, uIActionTag: '{{item.psUIAction.uIActionTag}}', showCaption: {{item.showCaption}}, {{#if item.psUIAction.psSysImage}}{{#if item.psUIAction.psSysImage.imagePath}} imgPath: "{{item.psUIAction.psSysImage.imagePath}}",{{/if}}{{#if item.psUIAction.psSysImage.cssClass}} iconClass: "{{item.psUIAction.psSysImage.cssClass}}",{{/if}}{{/if}} },
{{/if}}
{{#if (and (eq item.detailType "GROUPPANEL") item.psUIActionGroup)}}
uIActionGroup: {
extractMode: '{{item.psUIActionGroup.actionGroupExtractMode}}',
caption: '{{item.psUIActionGroup.name}}',
details: [
{{#each item.psUIActionGroup.psUIActionGroupDetails as | detail | }}
{ caption: '{{detail.psUIAction.caption}}', uIActionMode: "{{detail.psUIAction.uIActionMode}}", disabled: false, visible: true, uIActionTag: '{{detail.psUIAction.uIActionTag}}', showCaption: {{detail.showCaption}}, showIcon: {{detail.showIcon}}, {{#if detail.psUIAction.psSysImage}}{{#if detail.psUIAction.psSysImage.imagePath}} imgPath: "{{detail.psUIAction.psSysImage.imagePath}}",{{/if}}{{#if detail.psUIAction.psSysImage.cssClass}} iconClass: "{{detail.psUIAction.psSysImage.cssClass}}",{{/if}}{{/if}} },
{{/each}}
],
},
{{/if}}
{{#if item.psDEFDGroupLogics}}
groupLogics: [
{{#each item.psDEFDGroupLogics as | groupLogic |}}
{{> @macro/front-end/common/delogic.hbs logic=groupLogic}}
{{/each}}
],
{{/if}}
},
{{#if item.psDEFormDetails}}
{{#each item.psDEFormDetails as | tempDetail |}}
{{> @macro/front-end/widgets/form-detail/include-form.hbs type="FORMDETAILSMODEL" item=tempDetail}}
{{/each}}
{{/if}}
\ No newline at end of file
<AppFormDruipart
name="{{item.codeName}}"
title="{{item.caption}}"
:formSubject="state.formSubject"
:visible="state.detailsModel.{{item.codeName}}.visible"
viewCodeName="{{item.psAppView.codeName}}"
:layoutOpts="{{> @macro/front-end/common/layoutPos.hbs layout=item.psLayout layoutPos=item.psLayoutPos}}"
{{#if item.psSysCss}}
class="{{item.psSysCss.cssName}}"
{{/if}}
{{#if (or item.width item.height)}}
style="{{#if item.width}}width: {{item.width}}px;{{/if}}{{#if item.height}}height: {{item.height}}px;{{/if}}"
{{/if}}
paramItem="{{#if item.paramItem}}{{item.paramItem}}{{else}}srfkey{{/if}}"
deCodeName="{{lowerCase ctrl.psAppDataEntity.codeName}}"
{{#if item.refreshItems}}
refreshItems="{{item.refreshItems}}"
{{/if}}
:context="context"
:viewParams="viewParams"
{{#if item.psNavigateContexts}}
:localContext="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psNavigateContexts}}"
{{/if}}
{{#if item.psNavigateParams}}
:localViewParams="{{> @macro/front-end/common/navparam.hbs appNavParams=item.psNavigateParams}}"
{{/if}}
:data="state.data"
:viewSubject="state.viewSubject"
{{#or (eq item.psAppView.tempMode 0) (eq item.psAppView.tempMode 1) eq item.psAppView.tempMode 2}}
:tempMode="{{item.psAppView.tempMode}}"
{{/or}}
@componentEvent="onComponentEvent">
<template #default="druipartParams">
<{{item.psAppView.codeName}}
:class="['app-view-layout--from-druipart']"
:context="druipartParams.context"
:viewParams="druipartParams.viewParams"
:viewDefaultUsage="false"
:showCaptionBar="false"
openType="EMBED"
:viewSubject="state.viewSubject"
@viewEvent="druipartParams.viewEvent"
>
</{{item.psAppView.codeName}}>
</template>
</AppFormDruipart>
<AppFormGroup
name="{{item.codeName}}"
{{#if item.captionItemName}}
:title="state.data.{{lowerCase item.captionItemName}}"
{{else}}
title="{{item.caption}}"
{{/if}}
:visible="state.detailsModel.{{item.codeName}}.visible"
:layoutOpts="{{> @macro/front-end/common/layoutPos.hbs layout=item.psLayout layoutPos=item.psLayoutPos}}"
{{#if item.psSysCss}}
class="{{item.psSysCss.cssName}}"
{{/if}}
{{#if item.labelPSSysCss}}
titleClass="{{item.labelPSSysCss.cssName}}"
{{/if}}
{{#if (or item.width item.height)}}
style="{{#if item.width}}width: {{item.width}}px;{{/if}}{{#if item.height}}height: {{item.height}}px;{{/if}}"
{{/if}}
{{#if item.psSysImage}}
{{#if item.psSysImage.imagePath}}imgPath="{{item.psSysImage.imagePath}}"{{else if item.psSysImage.cssClass}}iconClass="{{item.psSysImage.cssClass}}"{{/if}}
{{/if}}
:infoGroupMode="{{item.infoGroupMode}}"
:titleBarCloseMode="{{item.titleBarCloseMode}}"
:showCaption="{{item.showCaption}}"
:uIActionGroup="state.detailsModel.{{item.codeName}}.uIActionGroup"
@componentEvent="onComponentEvent">
{{#each item.psDEFormDetails as | formDetail |}}
{{> @macro/front-end/widgets/form-detail/include-form.hbs type=formDetail.detailType item=formDetail}}
{{/each}}
</AppFormGroup>
<AppFormIframe
name="{{item.codeName}}"
:visible="state.detailsModel.{{item.codeName}}.visible"
:layoutOpts="{{> @macro/front-end/common/layoutPos.hbs layout=item.psLayout layoutPos=item.psLayoutPos}}"
{{#if item.psSysCss}}
class="{{item.psSysCss.cssName}}"
{{/if}}
{{#if (or item.contentHeight item.contentWidth)}}
style="{{#if item.contentHeight}}height: {{item.contentHeight}}px;{{/if}}{{#if item.contentWidth}}width: {{item.contentWidth}}px;{{/if}}"
{{/if}}
iFrameUrl="{{item.iFrameUrl}}"
/>
{{#neq item.psEditor.editorType "HIDDEN"}}
<AppFormItem
name="{{item.codeName}}"
{{#if item.captionItemName}}
:label="state.data.{{lowerCase item.captionItemName}}"
{{else}}
label="{{item.caption}}"
{{/if}}
{{#if item.labelPos}}
labelPos="{{item.labelPos}}"
{{/if}}
:labelWidth="{{item.labelWidth}}"
:showLabel="{{item.showCaption}}"
:rules="state.rules.{{item.codeName}}"
:required="state.detailsModel.{{item.codeName}}.required"
:visible="state.detailsModel.{{item.codeName}}.visible"
:layoutOpts="{{> @macro/front-end/common/layoutPos.hbs layout=item.psLayout layoutPos=item.psLayoutPos}}"
{{#if item.psSysCss}}
class="{{item.psSysCss.cssName}}"
{{/if}}
{{#if item.labelPSSysCss}}
labelClass="{{item.labelPSSysCss.cssName}}"
{{/if}}
{{#if (or item.width item.height)}}
style="{{#if item.width}}width: {{item.width}}px;{{/if}}{{#if item.height}}height: {{item.height}}px;{{/if}}"
{{/if}}
>
{{#if item.compositeItem}}
{{#if (or (eq item.psEditor.editorType 'DATERANGE') (eq item.psEditor.editorType 'DATERANGE_NOTIME'))}}
<AppDateRange
:refFormItem="
{{#if item.psDEFormItems}}
{{~#each item.psDEFormItems as | formItem | ~}}
{{#if @first}}[{{/if~}}
'{{formItem.name}}'{{#unless @last}},{{/unless}}
{{~#if @last}}]{{/if~}}
{{/each}}
{{else}}
[]
{{/if}}"
name="{{item.codeName}}"
:value="state.data.{{item.psEditor.name}}"
:activeData="state.data"
editorType="{{item.psEditor.editorType}}"
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{#if item.psEditor.editorParams.TIMEFMT}}
format="{{item.psEditor.editorParams.TIMEFMT}}"
{{/if}}
@editorEvent="onEditorEvent"
>
</AppDateRange>
{{else if (eq item.psEditor.editorType 'NUMBERRANGE')}}
<AppNumberRange
:refFormItem="
{{#if item.psDEFormItems}}
{{~#each item.psDEFormItems as | formItem | ~}}
{{#if @first}}[{{/if~}}
'{{formItem.name}}'{{#unless @last}},{{/unless}}
{{~#if @last}}]{{/if~}}
{{/each}}
{{else}}
[]
{{/if}}"
name="{{item.codeName}}"
:value="state.data.{{item.psEditor.name}}"
:activeData="state.data"
editorType="{{item.psEditor.editorType}}"
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{#if item.psEditor.editorParams.TIMEFMT}}
format="{{item.psEditor.editorParams.TIMEFMT}}"
{{/if}}
@editorEvent="onEditorEvent"
>
</AppNumberRange>
{{else}}
<AppRangeEditor
:refFormItem="
{{#if item.psDEFormItems}}
{{~#each item.psDEFormItems as | formItem | ~}}
{{#if @first}}[{{/if~}}
'{{formItem.name}}'{{#unless @last}},{{/unless}}
{{~#if @last}}]{{/if~}}
{{/each}}
{{else}}
[]
{{/if}}"
name="{{item.codeName}}"
:value="state.data.{{item.psEditor.name}}"
:activeData="state.data"
editorType="{{item.psEditor.editorType}}"
:disabled="state.detailsModel.{{item.codeName}}.disabled"
{{#if item.psEditor.editorParams.TIMEFMT}}
format="{{item.psEditor.editorParams.TIMEFMT}}"
{{/if}}
@editorEvent="onEditorEvent"
>
</AppRangeEditor>
{{/if}}
{{else}}
{{#if item.psEditor}}
<div class="form-editor-container" style="{{#if item.psEditor.editorWidth}}width: {{item.psEditor.editorWidth}}px;{{/if}}{{#if item.psEditor.editorHeight}}height: {{item.psEditor.editorHeight}}px{{/if}}">
{{> @macro/front-end/editors/include-editor.hbs type=item.psEditor.editorType item=item ctrlType="form"}}
</div>
{{/if}}
{{/if}}
</AppFormItem>
{{/neq}}
{{#neq item.psEditor.editorType "HIDDEN"}}
<AppFormItem
name="{{item.codeName}}"
{{#if item.captionItemName}}
:label="state.data.{{lowerCase item.captionItemName}}"
{{else}}
label="{{item.caption}}"
{{/if}}
{{#if item.labelPos}}
labelPos="{{item.labelPos}}"
{{/if}}
:labelWidth="{{item.labelWidth}}"
:showLabel="{{item.showCaption}}"
:rules="state.rules.{{item.codeName}}"
:required="state.detailsModel.{{item.codeName}}.required"
:visible="state.detailsModel.{{item.codeName}}.visible"
:layoutOpts="{{> @macro/front-end/common/layoutPos.hbs layout=item.psLayout layoutPos=item.psLayoutPos}}"
{{#if item.psSysCss}}
class="{{item.psSysCss.cssName}}"
{{/if}}
{{#if item.labelPSSysCss}}
labelClass="{{item.labelPSSysCss.cssName}}"
{{/if}}
{{#if (or item.width item.height)}}
style="{{#if item.width}}width: {{item.width}}px;{{/if}}{{#if item.height}}height: {{item.height}}px;{{/if}}"
{{/if}}
>
{{#if item.psEditor}}
<div class="form-editor-container" style="{{#if item.psEditor.editorWidth}}width: {{item.psEditor.editorWidth}}px;{{/if}}{{#if item.psEditor.editorHeight}}height: {{item.psEditor.editorHeight}}px{{/if}}">
{{> @macro/front-end/editors/include-editor.hbs type=item.psEditor.editorType item=item ctrlType="form"}}
</div>
{{/if}}
</AppFormItem>
{{/neq}}
<AppFormPage
name="{{item.codeName}}"
:layoutOpts="{{> @macro/front-end/common/layoutPos.hbs layout=item.psLayout layoutPos=item.psLayoutPos}}"
:visible="state.detailsModel.{{item.codeName}}.visible"
{{#if item.psSysCss}}
class="{{item.psSysCss.cssName}}"
{{/if}}
key="{{item.codeName}}"
tab="{{#if item.caption}}{{item.caption}}{{/if}}"
>
<template #tab>
<AppIconText {{#if item.labelPSSysCss}}class="{{item.labelPSSysCss.cssName}}" {{/if}}{{#if item.psSysImage}}{{#if item.psSysImage.cssClass}}iconClass="{{item.psSysImage.cssClass}}" {{/if}}{{#if item.psSysImage.imagePath}}imgPath="{{item.psSysImage.imagePath}}" {{/if}}{{/if}}text="{{item.caption}}"/>
</template>
{{#each item.psDEFormDetails as | formDetail |}}
{{> @macro/front-end/widgets/form-detail/include-form.hbs type=formDetail.detailType item=formDetail}}
{{/each}}
</AppFormPage>
<AppFormRaw
name="{{item.codeName}}"
:visible="state.detailsModel.{{item.codeName}}.visible"
{{#if item.psSysCss}}
class="{{item.psSysCss.cssName}}"
{{/if}}
{{#if item.psSysImage}}
{{#if item.psSysImage.cssClass}}
iconClass="{{item.psSysImage.cssClass}}"
{{/if}}
{{#if item.psSysImage.imagePath}}
imgPath="{{item.psSysImage.imagePath}}"
{{/if}}
{{/if}}
{{#if (and item.psLayoutPos (or item.psLayoutPos.width item.psLayoutPos.height))}}
style="{{#if item.psLayoutPos.width}}width: {{item.psLayoutPos.width}}px; {{/if}}{{#if item.psLayoutPos.height}}height: {{item.psLayoutPos.height}}px; {{/if}}"
{{/if}}
{{#if (or (gt item.rawItemWidth 0) (gt item.rawItemHeight 0))}}
rawStyle="{{#gt item.rawItemWidth 0}}width: {{item.rawItemWidth}}px; {{/gt}}{{#gt item.rawItemHeight 0}}height: {{item.rawItemHeight}}px;{{/gt}}"
{{/if}}
contentType="{{item.contentType}}"
:layoutOpts="{{> @macro/front-end/common/layoutPos.hbs layout=item.psLayout layoutPos=item.psLayoutPos}}"
{{#if (eq item.contentType 'RAW')}}
value="{{item.rawContent}}"
{{else if (eq item.contentType 'HTML')}}
:value="`{{item.htmlContent}}`"
{{/if}}
/>
<AppFormTabpage
name="{{item.codeName}}"
:visible="state.detailsModel.{{item.codeName}}.visible"
:layoutOpts="{{> @macro/front-end/common/layoutPos.hbs layout=item.psLayout layoutPos=item.psLayoutPos}}"
{{#if item.psSysCss}}
class="{{item.psSysCss.cssName}}"
{{/if}}
key="{{item.codeName}}"
caption="{{#if item.caption}}{{item.caption}}{{/if}}"
>
{{#each item.psDEFormDetails as | formDetail |}}
{{> @macro/front-end/widgets/form-detail/include-form.hbs type=formDetail.detailType item=formDetail}}
{{/each}}
</AppFormTabpage>
<AppFormTabpanel
name="{{item.codeName}}"
:visible="state.detailsModel.{{item.codeName}}.visible"
:layoutOpts="{{> @macro/front-end/common/layoutPos.hbs layout=item.psLayout layoutPos=item.psLayoutPos}}"
>
{{#each item.psDEFormPages as | formPage | }}
{{> @macro/front-end/widgets/form-detail/include-form.hbs type=formPage.detailType item=formPage}}
{{/each}}
</AppFormTabpanel>
{{#eq type "FORMPAGE"}}{{> @macro/front-end/widgets/form-detail/form-page.hbs}}{{/eq}}
{{#eq type "GROUPPANEL"}}{{> @macro/front-end/widgets/form-detail/form-group-panel.hbs}}{{/eq}}
{{#eq type "FORMITEM"}}{{> @macro/front-end/widgets/form-detail/form-item.hbs}}{{/eq}}
{{#eq type "FORMITEMEX"}}{{> @macro/front-end/widgets/form-detail/form-item-ex.hbs}}{{/eq}}
{{#eq type "TABPANEL"}}{{> @macro/front-end/widgets/form-detail/form-tabpanel.hbs}}{{/eq}}
{{#eq type "BUTTON"}}{{> @macro/front-end/widgets/form-detail/form-button.hbs}}{{/eq}}
{{#eq type "IFRAME"}}{{> @macro/front-end/widgets/form-detail/form-iframe.hbs}}{{/eq}}
{{#eq type "FORMPART"}}{{> @macro/front-end/widgets/form-detail/form-formpart.hbs}}{{/eq}}
{{#eq type "TABPAGE"}}{{> @macro/front-end/widgets/form-detail/form-tabpage.hbs}}{{/eq}}
{{#eq type "DRUIPART"}}{{> @macro/front-end/widgets/form-detail/form-druipart.hbs}}{{/eq}}
{{#eq type "RAWITEM"}}{{> @macro/front-end/widgets/form-detail/form-rawitem.hbs}}{{/eq}}
{{#eq type "FORMDETAILSMODEL"}}{{> @macro/front-end/widgets/form-detail/form-details-model.hbs}}{{/eq}}
{{#eq type "FORMACTIONMODEL"}}{{> @macro/front-end/widgets/form-detail/form-action-model.hbs}}{{/eq}}
\ No newline at end of file
<div v-if="Object.is(column.dataIndex, '{{#if item.dataItemName}}{{lowerCase item.dataItemName}}{{else}}{{item.codeName}}{{/if}}')" class="header-cell{{#if item.headerPSSysCss}} {{item.headerPSSysCss.cssName}}{{/if}}">
{{#if item.psSysImage}}
<AppIconText {{#if item.psSysImage.cssClass}}iconClass="{{item.psSysImage.cssClass}}"{{/if}} {{#if item.psSysImage.imagePath}}imgPath="{{item.psSysImage.imagePath}}"{{/if}}/>
<span class="title">\{{title}}</span>
{{else}}
<span class="title">\{{title}}</span>
{{/if}}
</div>
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册