owl-cli 6.103.0 → 6.105.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/.eslintrc.json +2 -2
  2. package/.vscode/launch.json +22 -22
  3. package/.vscode/settings.json +2 -2
  4. package/bin/createTables.js +94 -94
  5. package/bin/deploy.js +66 -66
  6. package/bin/dsl.js +223 -223
  7. package/bin/genEvents.js +188 -188
  8. package/bin/owl-init.js +50 -50
  9. package/bin/owl.js +295 -295
  10. package/bin/owlconfig.json +16 -16
  11. package/bin/table_mysql.js +189 -189
  12. package/bin/undeploy.js +56 -56
  13. package/defaultTemplate/api/build.xml +94 -94
  14. package/defaultTemplate/api/src/about.html +12 -12
  15. package/defaultTemplate/api/src/about.jsx +11 -11
  16. package/defaultTemplate/api/src/handlers/aggs.jsx +161 -161
  17. package/defaultTemplate/api/src/handlers/batchImport.jsx +68 -68
  18. package/defaultTemplate/api/src/handlers/delete.jsx +67 -67
  19. package/defaultTemplate/api/src/handlers/export.jsx +117 -117
  20. package/defaultTemplate/api/src/handlers/exportDoc.jsx +27 -27
  21. package/defaultTemplate/api/src/handlers/exportEx.jsx +77 -77
  22. package/defaultTemplate/api/src/handlers/exportWithTemplates.jsx +50 -50
  23. package/defaultTemplate/api/src/handlers/exportZip.jsx +26 -26
  24. package/defaultTemplate/api/src/handlers/get.jsx +41 -41
  25. package/defaultTemplate/api/src/handlers/getChildren.jsx +97 -97
  26. package/defaultTemplate/api/src/handlers/getExportTaskInfo.jsx +34 -34
  27. package/defaultTemplate/api/src/handlers/getSpec.jsx +40 -40
  28. package/defaultTemplate/api/src/handlers/include/checklogin.jsx +751 -751
  29. package/defaultTemplate/api/src/handlers/include/diff.jsx +315 -315
  30. package/defaultTemplate/api/src/handlers/include/util.jsx +60 -60
  31. package/defaultTemplate/api/src/handlers/list.jsx +239 -239
  32. package/defaultTemplate/api/src/handlers/reIndex.jsx +63 -63
  33. package/defaultTemplate/api/src/handlers/recovery.jsx +53 -53
  34. package/defaultTemplate/api/src/handlers/save.jsx +125 -125
  35. package/defaultTemplate/api/src/handlers/upload.jsx +72 -72
  36. package/defaultTemplate/api/src/init/indexConfigs/changeMapping.json +14 -14
  37. package/defaultTemplate/api/src/init/indexConfigs/createAliase.json +10 -10
  38. package/defaultTemplate/api/src/init/indexConfigs/createIndex.json +55 -55
  39. package/defaultTemplate/api/src/init/indexConfigs/rebuildIndex.sh +27 -27
  40. package/defaultTemplate/api/src/init/indexConfigs/reindex.json +10 -10
  41. package/defaultTemplate/api/src/init/init.jsx +25 -25
  42. package/defaultTemplate/api/src/meta.json +10 -10
  43. package/defaultTemplate/api/src/services/dblayer.jsx +251 -251
  44. package/defaultTemplate/api/src/services/modelService.jsx +1171 -1163
  45. package/defaultTemplate/api/src/services/sqlstring.jsx +240 -240
  46. package/defaultTemplate/api/src/tasks/export.jsx +355 -355
  47. package/defaultTemplate/api/src/tasks/exportDoc.jsx +87 -87
  48. package/defaultTemplate/api/src/tasks/exportExTask.jsx +325 -325
  49. package/defaultTemplate/api/src/tasks/exportWithTemplateTask.jsx +117 -117
  50. package/defaultTemplate/api/src/tasks/exportZip.jsx +49 -49
  51. package/examples/buildProperties/build.properties +2 -2
  52. package/examples/gitignore/gitignore_example.txt +1 -1
  53. package/examples/models/product.json +52 -52
  54. package/examples/models/shop.json +71 -71
  55. package/examples/models/sku.json +254 -254
  56. package/examples/models/user.json +49 -49
  57. package/examples/owlconfig.json +13 -13
  58. package/package.json +33 -33
  59. package/todo.txt +4 -4
@@ -1,117 +1,117 @@
1
- //#import $@projectCode:services/modelService.jsx
2
- //#import moment.min.js
3
- //#import excel.js
4
- //#import $owl_excel_templates:services/modelService.jsx
5
- //#import $owl_task_info:services/modelService.jsx
6
- //#import file.js
7
-
8
- var formSpecs = @formSpecs;
9
-
10
- function tranverseFields(formSpec, callback, ctx){
11
- formSpec.fields.forEach( function(field){
12
- if (field[ '_ft' ] == 'field') {
13
- callback( field, ctx );
14
- }
15
- else if (field[ '_ft' ] == 'subform') {
16
- var context = { parentField: field }
17
- tranverseFields( field, callback, context );
18
- }
19
- else if (field[ '_ft' ] == 'array') {
20
- var context = { parentField: field }
21
- tranverseFields( field, callback, context )
22
- }
23
- } );
24
- }
25
-
26
- function normalizeValue(value,spec){
27
- if(value == null){
28
- return null;
29
- }
30
- switch (spec.fieldType){
31
- case 'string':
32
- return 's'+value;
33
- case 'number':
34
- return 'n' + value;
35
- case 'date':
36
- return 'd'+ moment(value).toDate().getTime();
37
- case 'choice':
38
- for(var i=0; i<spec.options.length; i++){
39
- var option = spec.options[i];
40
- if(option[0]==value){
41
- return 's'+option[1];
42
- }
43
- }
44
- return 's'+value;
45
- default:
46
- return "s"+value;
47
- }
48
- }
49
-
50
- function getExportDoc(obj){
51
- tranverseFields(formSpecs,function(f,ctx){
52
- if (ctx.parentField && ctx.parentField._ft == 'array') {
53
- var items = @projectCodeService.getValue( ctx.parentField.key, obj )
54
- if(items){
55
- for(var i=0; i<items.length; i++){
56
- var item = items[i];
57
- var value = item[f.origKey];
58
- value = normalizeValue(value,f);
59
- item[f.origKey] = value;
60
- }
61
- }
62
- }
63
- else{
64
- var value = @projectCodeService.getValue( f.key, obj );
65
- value = normalizeValue(value,f);
66
- @projectCodeService.setValue(f.key,value,obj);
67
- }
68
- },{});
69
- return obj;
70
- }
71
-
72
-
73
- (function(){
74
- var template = owl_excel_templatesService.get(templateId);
75
- if(!template || !template.template){
76
- $.log("没有配置模版,templateId=" + templateId);
77
- return null;
78
- }
79
- var taskInfo = owl_task_infoService.get(taskInfoId);
80
- taskInfo.state = "running";
81
- taskInfo.beginDate = new Date().getTime();
82
- owl_task_infoService.update(taskInfo);
83
- var doc = @projectCodeService.get(id);
84
- var exportDoc = getExportDoc(doc);
85
- // var templateExcelUrl = "@{@projectCode.xlsx}@";
86
- var templateUrl = template.template[0].url;
87
- var fileId = Excel.generateExcelFromTemplate( templateUrl, exportDoc );
88
- if(template.toField){
89
- var doc = @projectCodeService.get(id);
90
- var url = FileService.getFullPath(fileId);
91
- var docName = null;
92
- if(typeof pname === 'undefined'){
93
- docName = template.name + "_" +fileId;
94
- }
95
- else{
96
- docName = pname;
97
- }
98
- doc[template.toField] = {
99
- url: "" + url,
100
- fileId: "" + fileId,
101
- name:"" + docName
102
- }
103
- @projectCodeService.update(doc);
104
- }
105
-
106
- var taskInfo = owl_task_infoService.get(taskInfoId);
107
- taskInfo.state = "success";
108
- taskInfo.percent = 100;
109
- taskInfo.fileId = fileId;
110
- taskInfo.endDate = new Date().getTime();
111
- taskInfo.state = "succeeded";
112
- taskInfo.msg = "生成Excel文件成功";
113
- taskInfo.fileId = fileId;
114
-
115
- owl_task_infoService.update(taskInfo);
116
- })();
117
-
1
+ //#import $@projectCode:services/modelService.jsx
2
+ //#import moment.min.js
3
+ //#import excel.js
4
+ //#import $owl_excel_templates:services/modelService.jsx
5
+ //#import $owl_task_info:services/modelService.jsx
6
+ //#import file.js
7
+
8
+ var formSpecs = @formSpecs;
9
+
10
+ function tranverseFields(formSpec, callback, ctx){
11
+ formSpec.fields.forEach( function(field){
12
+ if (field[ '_ft' ] == 'field') {
13
+ callback( field, ctx );
14
+ }
15
+ else if (field[ '_ft' ] == 'subform') {
16
+ var context = { parentField: field }
17
+ tranverseFields( field, callback, context );
18
+ }
19
+ else if (field[ '_ft' ] == 'array') {
20
+ var context = { parentField: field }
21
+ tranverseFields( field, callback, context )
22
+ }
23
+ } );
24
+ }
25
+
26
+ function normalizeValue(value,spec){
27
+ if(value == null){
28
+ return null;
29
+ }
30
+ switch (spec.fieldType){
31
+ case 'string':
32
+ return 's'+value;
33
+ case 'number':
34
+ return 'n' + value;
35
+ case 'date':
36
+ return 'd'+ moment(value).toDate().getTime();
37
+ case 'choice':
38
+ for(var i=0; i<spec.options.length; i++){
39
+ var option = spec.options[i];
40
+ if(option[0]==value){
41
+ return 's'+option[1];
42
+ }
43
+ }
44
+ return 's'+value;
45
+ default:
46
+ return "s"+value;
47
+ }
48
+ }
49
+
50
+ function getExportDoc(obj){
51
+ tranverseFields(formSpecs,function(f,ctx){
52
+ if (ctx.parentField && ctx.parentField._ft == 'array') {
53
+ var items = @projectCodeService.getValue( ctx.parentField.key, obj )
54
+ if(items){
55
+ for(var i=0; i<items.length; i++){
56
+ var item = items[i];
57
+ var value = item[f.origKey];
58
+ value = normalizeValue(value,f);
59
+ item[f.origKey] = value;
60
+ }
61
+ }
62
+ }
63
+ else{
64
+ var value = @projectCodeService.getValue( f.key, obj );
65
+ value = normalizeValue(value,f);
66
+ @projectCodeService.setValue(f.key,value,obj);
67
+ }
68
+ },{});
69
+ return obj;
70
+ }
71
+
72
+
73
+ (function(){
74
+ var template = owl_excel_templatesService.get(templateId);
75
+ if(!template || !template.template){
76
+ $.log("没有配置模版,templateId=" + templateId);
77
+ return null;
78
+ }
79
+ var taskInfo = owl_task_infoService.get(taskInfoId);
80
+ taskInfo.state = "running";
81
+ taskInfo.beginDate = new Date().getTime();
82
+ owl_task_infoService.update(taskInfo);
83
+ var doc = @projectCodeService.get(id);
84
+ var exportDoc = getExportDoc(doc);
85
+ // var templateExcelUrl = "@{@projectCode.xlsx}@";
86
+ var templateUrl = template.template[0].url;
87
+ var fileId = Excel.generateExcelFromTemplate( templateUrl, exportDoc );
88
+ if(template.toField){
89
+ var doc = @projectCodeService.get(id);
90
+ var url = FileService.getFullPath(fileId);
91
+ var docName = null;
92
+ if(typeof pname === 'undefined'){
93
+ docName = template.name + "_" +fileId;
94
+ }
95
+ else{
96
+ docName = pname;
97
+ }
98
+ doc[template.toField] = {
99
+ url: "" + url,
100
+ fileId: "" + fileId,
101
+ name:"" + docName
102
+ }
103
+ @projectCodeService.update(doc);
104
+ }
105
+
106
+ var taskInfo = owl_task_infoService.get(taskInfoId);
107
+ taskInfo.state = "success";
108
+ taskInfo.percent = 100;
109
+ taskInfo.fileId = fileId;
110
+ taskInfo.endDate = new Date().getTime();
111
+ taskInfo.state = "succeeded";
112
+ taskInfo.msg = "生成Excel文件成功";
113
+ taskInfo.fileId = fileId;
114
+
115
+ owl_task_infoService.update(taskInfo);
116
+ })();
117
+
@@ -1,49 +1,49 @@
1
- //#import $@projectCode:services/modelService.jsx
2
- //#import Util.js
3
- //#import file.js
4
-
5
-
6
-
7
- var formSpecs = @formSpecs;
8
-
9
- var taskInfo = @projectCodeService.getExportTaskInfo( taskInfoId );
10
- taskInfo.total = @projectCodeService.getAllSize();
11
- taskInfo.lastTime = new Date().getTime();
12
- taskInfo.processState = "processing";
13
- taskInfo.msg = "获取导出总数成功......";
14
- taskInfo.percent = "1";
15
- taskInfo.fileUrls = [];
16
-
17
- var from = 0;
18
- while(from < taskInfo.total){
19
- var listObjs = @projectCodeService.getAllObjectsEx(from, 10000);
20
-
21
- taskInfo.lastTime = new Date().getTime();
22
- taskInfo.processState = "processing";
23
- taskInfo.msg = "导出数据成功,生成zip......";
24
- taskInfo.percent = (from + listObjs.length) * 100 / taskInfo.total;
25
-
26
- var s = JSON.stringify(listObjs);
27
- var fileId = "" + $.addAsZip(s);
28
-
29
- taskInfo.fileId = fileId;
30
- taskInfo.fileUrl = FileService.getFullPath(fileId);
31
- taskInfo.fileUrls.push(taskInfo.fileUrl);
32
- taskInfo.exportedRows = from + listObjs.length;
33
- from = from + listObjs.length;
34
- @projectCodeService.updateExportTaskInfo( taskInfoId, taskInfo );
35
- }
36
-
37
- taskInfo.processState = "success";
38
- taskInfo.percent = 100;
39
- taskInfo.msg = "导出文件成功";
40
- @projectCodeService.updateExportTaskInfo( taskInfoId, taskInfo );
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
1
+ //#import $@projectCode:services/modelService.jsx
2
+ //#import Util.js
3
+ //#import file.js
4
+
5
+
6
+
7
+ var formSpecs = @formSpecs;
8
+
9
+ var taskInfo = @projectCodeService.getExportTaskInfo( taskInfoId );
10
+ taskInfo.total = @projectCodeService.getAllSize();
11
+ taskInfo.lastTime = new Date().getTime();
12
+ taskInfo.processState = "processing";
13
+ taskInfo.msg = "获取导出总数成功......";
14
+ taskInfo.percent = "1";
15
+ taskInfo.fileUrls = [];
16
+
17
+ var from = 0;
18
+ while(from < taskInfo.total){
19
+ var listObjs = @projectCodeService.getAllObjectsEx(from, 10000);
20
+
21
+ taskInfo.lastTime = new Date().getTime();
22
+ taskInfo.processState = "processing";
23
+ taskInfo.msg = "导出数据成功,生成zip......";
24
+ taskInfo.percent = (from + listObjs.length) * 100 / taskInfo.total;
25
+
26
+ var s = JSON.stringify(listObjs);
27
+ var fileId = "" + $.addAsZip(s);
28
+
29
+ taskInfo.fileId = fileId;
30
+ taskInfo.fileUrl = FileService.getFullPath(fileId);
31
+ taskInfo.fileUrls.push(taskInfo.fileUrl);
32
+ taskInfo.exportedRows = from + listObjs.length;
33
+ from = from + listObjs.length;
34
+ @projectCodeService.updateExportTaskInfo( taskInfoId, taskInfo );
35
+ }
36
+
37
+ taskInfo.processState = "success";
38
+ taskInfo.percent = 100;
39
+ taskInfo.msg = "导出文件成功";
40
+ @projectCodeService.updateExportTaskInfo( taskInfoId, taskInfo );
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
@@ -1,3 +1,3 @@
1
- deployUrl=http://p12.local.com/appMarket/handler/deploy.jsp
2
- deployPass=123456
1
+ deployUrl=http://p12.local.com/appMarket/handler/deploy.jsp
2
+ deployPass=123456
3
3
  projectName=wushang
@@ -1,2 +1,2 @@
1
- node_modules
1
+ node_modules
2
2
  generatedApps
@@ -1,53 +1,53 @@
1
- {
2
- "id": "string(32),listSize:16,tab:a1,disabled:true,hidden:false;商品Id",
3
- "name": "string(64),listSize:16,tab:a2;名称",
4
- "skus": [{
5
- "#meta": {
6
- "fieldLabel": "子商品",
7
- "tab": "f",
8
- "addSingle":true,
9
- "position": "card"
10
- },
11
- "spec": "string(32),listSize:14,help:规格尺码等,tab:f1;规格",
12
- "buyUnit": "string(6),inputType:letterChina,required:true,listSize:8,tab:f2;采购单位",
13
- "buyUnitCount": "number(4),listSize:8,help:每采购单位包含的单品数量,tab:f3;采购单位数量"
14
-
15
- }],
16
- "_t": "product",
17
- "#meta": {
18
- "rem": "商品",
19
- "parent": [
20
- "sku"
21
- ],
22
- "projectName": "商品",
23
-
24
- "visitType": [
25
- "shop",
26
- "warehouse",
27
- "platform"
28
- ],
29
- "pos": -1,
30
- "group": {
31
- "id": "mainData",
32
- "name": "主数据",
33
- "pos": 1
34
- },
35
- "project": "example",
36
- "export":[
37
- {
38
- "label":"导出完整单据",
39
- "mainTitleFormat":{"background":"#474747","color":"#cccccc"},
40
- "subTitleFormat":{"background":"#777777","color":"#ffffff"},
41
- "subRecordFormat":{"background":"#ffffff","color":"#000000"},
42
- "mainRecordFormat":{"background":"#555555","color":"#FFFFFF"},
43
- "key":"completeDoc",
44
- "fields":["*"],
45
- "items":{
46
- "name":"items",
47
- "itemFields":["*"]
48
- },
49
- "subTitleInterval":20
50
- }
51
- ]
52
- }
1
+ {
2
+ "id": "string(32),listSize:16,tab:a1,disabled:true,hidden:false;商品Id",
3
+ "name": "string(64),listSize:16,tab:a2;名称",
4
+ "skus": [{
5
+ "#meta": {
6
+ "fieldLabel": "子商品",
7
+ "tab": "f",
8
+ "addSingle":true,
9
+ "position": "card"
10
+ },
11
+ "spec": "string(32),listSize:14,help:规格尺码等,tab:f1;规格",
12
+ "buyUnit": "string(6),inputType:letterChina,required:true,listSize:8,tab:f2;采购单位",
13
+ "buyUnitCount": "number(4),listSize:8,help:每采购单位包含的单品数量,tab:f3;采购单位数量"
14
+
15
+ }],
16
+ "_t": "product",
17
+ "#meta": {
18
+ "rem": "商品",
19
+ "parent": [
20
+ "sku"
21
+ ],
22
+ "projectName": "商品",
23
+
24
+ "visitType": [
25
+ "shop",
26
+ "warehouse",
27
+ "platform"
28
+ ],
29
+ "pos": -1,
30
+ "group": {
31
+ "id": "mainData",
32
+ "name": "主数据",
33
+ "pos": 1
34
+ },
35
+ "project": "example",
36
+ "export":[
37
+ {
38
+ "label":"导出完整单据",
39
+ "mainTitleFormat":{"background":"#474747","color":"#cccccc"},
40
+ "subTitleFormat":{"background":"#777777","color":"#ffffff"},
41
+ "subRecordFormat":{"background":"#ffffff","color":"#000000"},
42
+ "mainRecordFormat":{"background":"#555555","color":"#FFFFFF"},
43
+ "key":"completeDoc",
44
+ "fields":["*"],
45
+ "items":{
46
+ "name":"items",
47
+ "itemFields":["*"]
48
+ },
49
+ "subTitleInterval":20
50
+ }
51
+ ]
52
+ }
53
53
  }
@@ -1,72 +1,72 @@
1
- {
2
- "id":"string(32),tab:01,disabled:true;店铺Id",
3
- "name":"string(16),tab:02,searchable:true;店铺名称;",
4
- "mobile":"string(16),inputType:mobile,tab:03;手机",
5
- "logo":"imgfileId,tab:04;店铺logo",
6
- "ownerName":"string(16),tab:09,searchable:true;店主",
7
- "ownerUserId":"string(16),tab:09,searchable:true;店主Id",
8
- "area": "tree,tab:11,dataSource:/owlApi/region/getArea.jsx; 地区",
9
- "address":"string(24),tab:10;详细地址",
10
- "type":"choice,values:1_商品销售/2_工业生产/3_服务销售,listSize:14,tab:06,listTab:09;店铺类型",
11
- "bankInfo":{
12
- "#meta":{
13
- "fieldLabel":"银行资料",
14
- "tab":"11"
15
- },
16
- "account":"string(19),inputType:number,tab:1101;账号",
17
- "bank":"string(10),tab:1102;开户行",
18
- "branch":"string(10),tab:1103;支行"
19
- },
20
- "registrationInfo":{
21
- "#meta":{
22
- "fieldLabel":"工商资料",
23
- "tab":"12"
24
- },
25
- "address":"string(32),inputType:numberLetter,tab:1201;注册地址",
26
- "registrationNumber":"string(19),tab:1202;工商登记号",
27
- "businessRange":"string(128),tab:1203;营业范围"
28
- },
29
- "admins": [
30
- {
31
- "#meta": {
32
- "fieldLabel":"管理员",
33
- "tab": "11",
34
- "addMulti":{
35
- "linkId":"userId",
36
- "from":"id",
37
- "label":"选择用户...",
38
- "dataSource":"/owlApi/user/search.jsx",
39
- "fields":["id","loginId","realName","nickName"],
40
- "toFields":["userId","loginId","realName","nickName"],
41
- "fieldLabels":["id","loginId","真实姓名","昵称"],
42
- "fieldWidths":[100,120,120,120]
43
- }
44
- },
45
- "userId": "linkId,dataSource:/owlApi/user/search.jsx,unique:true,fields:id/realName/nickName,toFields:userId/realName/nickName,displayField:id,fieldsWidth:100/120/120,tab:13;用户Id",
46
- "loginId":"string(16),disabled:true,inputType:numberLetter,tab:14;loginId",
47
- "realName":"string(16),disabled:true,tab:14;姓名",
48
- "nickName":"string(16),tab:15;昵称"
49
- }
50
- ],
51
- "_t":"shop",
52
- "#meta":{
53
- "rem":"店铺",
54
- "parent":["subplatform"],
55
- "visitType": [
56
- "platform"
57
- ],
58
- "projectName":"店铺",
59
- "project":"example",
60
- "export":[
61
- {
62
- "label":"导出完整",
63
- "mainTitleFormat":{"background":"#474747","color":"#cccccc"},
64
- "subTitleFormat":{"background":"#777777","color":"#ffffff"},
65
- "subRecordFormat":{"background":"#ffffff","color":"#000000"},
66
- "mainRecordFormat":{"background":"#555555","color":"#FFFFFF"},
67
- "key":"completeDoc",
68
- "fields":["*"]
69
- }
70
- ]
71
- }
1
+ {
2
+ "id":"string(32),tab:01,disabled:true;店铺Id",
3
+ "name":"string(16),tab:02,searchable:true;店铺名称;",
4
+ "mobile":"string(16),inputType:mobile,tab:03;手机",
5
+ "logo":"imgfileId,tab:04;店铺logo",
6
+ "ownerName":"string(16),tab:09,searchable:true;店主",
7
+ "ownerUserId":"string(16),tab:09,searchable:true;店主Id",
8
+ "area": "tree,tab:11,dataSource:/owlApi/region/getArea.jsx; 地区",
9
+ "address":"string(24),tab:10;详细地址",
10
+ "type":"choice,values:1_商品销售/2_工业生产/3_服务销售,listSize:14,tab:06,listTab:09;店铺类型",
11
+ "bankInfo":{
12
+ "#meta":{
13
+ "fieldLabel":"银行资料",
14
+ "tab":"11"
15
+ },
16
+ "account":"string(19),inputType:number,tab:1101;账号",
17
+ "bank":"string(10),tab:1102;开户行",
18
+ "branch":"string(10),tab:1103;支行"
19
+ },
20
+ "registrationInfo":{
21
+ "#meta":{
22
+ "fieldLabel":"工商资料",
23
+ "tab":"12"
24
+ },
25
+ "address":"string(32),inputType:numberLetter,tab:1201;注册地址",
26
+ "registrationNumber":"string(19),tab:1202;工商登记号",
27
+ "businessRange":"string(128),tab:1203;营业范围"
28
+ },
29
+ "admins": [
30
+ {
31
+ "#meta": {
32
+ "fieldLabel":"管理员",
33
+ "tab": "11",
34
+ "addMulti":{
35
+ "linkId":"userId",
36
+ "from":"id",
37
+ "label":"选择用户...",
38
+ "dataSource":"/owlApi/user/search.jsx",
39
+ "fields":["id","loginId","realName","nickName"],
40
+ "toFields":["userId","loginId","realName","nickName"],
41
+ "fieldLabels":["id","loginId","真实姓名","昵称"],
42
+ "fieldWidths":[100,120,120,120]
43
+ }
44
+ },
45
+ "userId": "linkId,dataSource:/owlApi/user/search.jsx,unique:true,fields:id/realName/nickName,toFields:userId/realName/nickName,displayField:id,fieldsWidth:100/120/120,tab:13;用户Id",
46
+ "loginId":"string(16),disabled:true,inputType:numberLetter,tab:14;loginId",
47
+ "realName":"string(16),disabled:true,tab:14;姓名",
48
+ "nickName":"string(16),tab:15;昵称"
49
+ }
50
+ ],
51
+ "_t":"shop",
52
+ "#meta":{
53
+ "rem":"店铺",
54
+ "parent":["subplatform"],
55
+ "visitType": [
56
+ "platform"
57
+ ],
58
+ "projectName":"店铺",
59
+ "project":"example",
60
+ "export":[
61
+ {
62
+ "label":"导出完整",
63
+ "mainTitleFormat":{"background":"#474747","color":"#cccccc"},
64
+ "subTitleFormat":{"background":"#777777","color":"#ffffff"},
65
+ "subRecordFormat":{"background":"#ffffff","color":"#000000"},
66
+ "mainRecordFormat":{"background":"#555555","color":"#FFFFFF"},
67
+ "key":"completeDoc",
68
+ "fields":["*"]
69
+ }
70
+ ]
71
+ }
72
72
  }