centaline-data-driven 1.2.78 → 1.2.81
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.
- package/build/centaline/centaline.path.js +0 -2
- package/package.json +1 -1
- package/src/Form.vue +5 -4
- package/src/SearchList.vue +9 -3
- package/src/centaline/css/max.css +4 -1
- package/src/centaline/dynamicContact/src/dynamicContact.vue +5 -1
- package/src/centaline/dynamicDetail/src/dynamicContactList.vue +6 -1
- package/src/centaline/dynamicDetail/src/dynamicPropertyDetailRET.vue +5 -1
- package/src/centaline/dynamicDetail/src/dynamicPropertySimpleDetailRET.vue +5 -1
- package/src/centaline/dynamicForm/index.js +0 -4
- package/src/centaline/dynamicForm/src/dynamicForm.vue +12 -3
- package/src/centaline/dynamicForm/src/dynamicFormListTable.vue +7 -0
- package/src/centaline/dynamicLayout/src/dynamicLayout.vue +16 -270
- package/src/centaline/dynamicLayout/src/dynamicLayoutChildren.vue +6 -12
- package/src/centaline/dynamicLayout/src/dynamicLayoutImage.vue +55 -6
- package/src/centaline/dynamicLayout/src/dynamicLayoutLabel.vue +11 -7
- package/src/centaline/dynamicLayout/src/dynamicLayoutLine.vue +3 -1
- package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +206 -6
- package/src/centaline/loader/src/ctl/CellLayout.js +234 -115
- package/src/centaline/loader/src/ctl/Form.js +11 -4
- package/src/centaline/loader/src/ctl/FormList.js +81 -13
- package/src/centaline/loader/src/ctl/RichText.js +3 -0
- package/src/centaline/loader/src/ctl/SearchScreen.js +22 -22
- package/src/centaline/loader/src/ctl/SearchTable.js +215 -8
- package/src/centaline/loader/src/ctl/lib/LibFunction.js +6 -3
- package/src/main.js +6 -3
- package/wwwroot/static/centaline/centaline-data-driven.js +3 -3
- package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
- package/src/centaline/dynamicLabel/index.js +0 -11
- package/src/centaline/dynamicLabel/src/dynamicLabel.vue +0 -73
- package/src/centaline/dynamicLs/index.js +0 -22
- package/src/centaline/dynamicLs/src/dynamicLs.vue +0 -233
|
@@ -236,6 +236,24 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
|
|
|
236
236
|
set listData(v) {
|
|
237
237
|
source.content.rows = v;
|
|
238
238
|
},
|
|
239
|
+
_LayoutData: null,
|
|
240
|
+
get layoutData() {
|
|
241
|
+
var cellLayout = source.content.cellLayout;
|
|
242
|
+
if (rtn._LayoutData !== null) {
|
|
243
|
+
return rtn._LayoutData;
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
rtn._LayoutData = [];
|
|
247
|
+
if (cellLayout!='') {
|
|
248
|
+
source.content.rows.forEach((data) => {
|
|
249
|
+
var Layout = rtn.xmlToJsonCell(data,cellLayout);
|
|
250
|
+
rtn._LayoutData.push(Layout);
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
return rtn._LayoutData;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
},
|
|
239
257
|
get isMulti() {//是否多选
|
|
240
258
|
if (this.isMergeTitle) {
|
|
241
259
|
return false;//合并表头暂不支持多选
|
|
@@ -572,16 +590,17 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
|
|
|
572
590
|
console.error(error);
|
|
573
591
|
});
|
|
574
592
|
},
|
|
575
|
-
getCurrentRowApiData(callback,rtnData,router) {
|
|
593
|
+
getCurrentRowApiData(callback, rtnData, router) {
|
|
576
594
|
var self = this;
|
|
577
595
|
var searchFields = this.searchModel ? this.searchModel.searchData : { fields: [] };
|
|
596
|
+
var searchValue1 = router.flagAddRowAfterAction ? rtnData.responseData.content : rtn.listData[rtn.selectIndex][self.primaryKey];
|
|
578
597
|
if (self.primaryKey) {
|
|
579
598
|
searchFields.fields.push({
|
|
580
599
|
fieldName1: self.primaryFieldMappingDBName ? self.primaryFieldMappingDBName : self.primaryKey,
|
|
581
600
|
groupName: self.primaryKey,
|
|
582
601
|
operation: 2,
|
|
583
602
|
searchDataType: 3,
|
|
584
|
-
searchValue1:
|
|
603
|
+
searchValue1: searchValue1,
|
|
585
604
|
});
|
|
586
605
|
}
|
|
587
606
|
Vue.prototype.$api.postHandler(common.globalUri(), {
|
|
@@ -605,12 +624,17 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
|
|
|
605
624
|
source.page.rows = source.page.rows + response.content.rows.length;
|
|
606
625
|
rtn.$vue.calculatingRowHeight()
|
|
607
626
|
}
|
|
608
|
-
else{
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
627
|
+
else {
|
|
628
|
+
if (rtn.cellLayout != "") {
|
|
629
|
+
rtn.doUpdateCell(response.content, searchValue1);
|
|
630
|
+
}
|
|
631
|
+
else {
|
|
632
|
+
response.content.rows.forEach((row) => {
|
|
633
|
+
for (var vkey in row) {
|
|
634
|
+
rtn.dataDictionary[row[rtn.primaryKey]][vkey] = row[vkey];
|
|
635
|
+
}
|
|
636
|
+
});
|
|
637
|
+
}
|
|
614
638
|
}
|
|
615
639
|
}
|
|
616
640
|
|
|
@@ -778,6 +802,7 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
|
|
|
778
802
|
break;
|
|
779
803
|
case Enum.ActionType.Update://修改
|
|
780
804
|
case Enum.ActionType.CloseTabThenUpdate://修改
|
|
805
|
+
debugger
|
|
781
806
|
response.content.forEach((row) => {
|
|
782
807
|
for (var vkey in row) {
|
|
783
808
|
rtn.dataDictionary[row[rtn.primaryKey]][vkey] = row[vkey];
|
|
@@ -868,12 +893,194 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
|
|
|
868
893
|
get sideBarWidth() {
|
|
869
894
|
return source.content.sideBarWidth || 360;
|
|
870
895
|
},
|
|
896
|
+
getValue(data, val) {
|
|
897
|
+
return val.split('.').reduce((data, currentVal) => {
|
|
898
|
+
var rtn = data[currentVal];
|
|
899
|
+
if (typeof rtn !== 'undefined') {
|
|
900
|
+
rtn = rtn.toString().replace(/"/g, "'");
|
|
901
|
+
rtn = rtn.replace(/>/g, ">");
|
|
902
|
+
rtn = rtn.replace(/</g, "<");
|
|
903
|
+
}
|
|
904
|
+
else {
|
|
905
|
+
rtn = "";
|
|
906
|
+
}
|
|
907
|
+
return rtn
|
|
908
|
+
}, data)
|
|
909
|
+
},
|
|
910
|
+
loadXML(xmlString) {
|
|
911
|
+
xmlString = xmlString.replace(/\n/g, '').trim()
|
|
912
|
+
let replacer = function (match, p1, p2, p3, offset) {
|
|
913
|
+
return p1 + p3
|
|
914
|
+
}
|
|
915
|
+
xmlString = xmlString.replace(/(>)(\s*)(<)/g, replacer)
|
|
916
|
+
if (document.all) {
|
|
917
|
+
var xmlDom = new ActiveXObject("Microsoft.XMLDOM");
|
|
918
|
+
xmlDom.loadXML(xmlString)
|
|
919
|
+
return xmlDom
|
|
920
|
+
}
|
|
921
|
+
else {
|
|
922
|
+
return new DOMParser().parseFromString(xmlString, "text/xml");
|
|
923
|
+
}
|
|
924
|
+
},
|
|
925
|
+
xmlToString(xmlObj) {
|
|
926
|
+
if (document.all) //IE浏览器
|
|
927
|
+
{
|
|
928
|
+
return xmlObj.xml;
|
|
929
|
+
}
|
|
930
|
+
else //其他浏览器
|
|
931
|
+
{
|
|
932
|
+
return (new XMLSerializer()).serializeToString(xmlObj);
|
|
933
|
+
}
|
|
934
|
+
},
|
|
935
|
+
getxmlForStr(xml) {
|
|
936
|
+
if (xml.nodeType == 1) { // element
|
|
937
|
+
// do attributes
|
|
938
|
+
if (xml.attributes.length > 0) {
|
|
939
|
+
for (var j = 0; j < xml.attributes.length; j++) {
|
|
940
|
+
var attribute = xml.attributes.item(j);
|
|
941
|
+
if (attribute.nodeName.toLowerCase() == "for".toLowerCase()) {
|
|
942
|
+
return xml
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
if (xml.hasChildNodes()) {
|
|
948
|
+
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
949
|
+
var item = xml.childNodes.item(i);
|
|
950
|
+
var result = rtn.getxmlForStr(item);
|
|
951
|
+
if (result) {
|
|
952
|
+
return result;
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
},
|
|
957
|
+
|
|
958
|
+
xmlToJson(xml) {
|
|
959
|
+
var self = this;
|
|
960
|
+
// Create the return object
|
|
961
|
+
var obj = {};
|
|
962
|
+
if (xml.nodeName.toLowerCase() == "Layout".toLowerCase() || xml.nodeName.toLowerCase() == "StackLayout".toLowerCase()) {
|
|
963
|
+
obj["is"] = "ct-layout";
|
|
964
|
+
}
|
|
965
|
+
else if (xml.nodeName.toLowerCase() == "Label".toLowerCase()) {
|
|
966
|
+
obj["is"] = "ct-layoutlabel";
|
|
967
|
+
}
|
|
968
|
+
else if (xml.nodeName.toLowerCase() == "Line".toLowerCase()) {
|
|
969
|
+
obj["is"] = "ct-layoutline";
|
|
970
|
+
}
|
|
971
|
+
else if (xml.nodeName.toLowerCase() == "Image".toLowerCase()) {
|
|
972
|
+
obj["is"] = "ct-layoutimage";
|
|
973
|
+
}
|
|
974
|
+
if (xml.nodeType == 1) { // element
|
|
975
|
+
// do attributes
|
|
976
|
+
if (xml.attributes.length > 0) {
|
|
977
|
+
for (var j = 0; j < xml.attributes.length; j++) {
|
|
978
|
+
var attribute = xml.attributes.item(j);
|
|
979
|
+
obj[attribute.nodeName] = attribute.nodeValue;
|
|
980
|
+
if (attribute.nodeName.toLowerCase() == "for".toLowerCase()) {
|
|
981
|
+
obj["is"] = "ct-layoutchildren";
|
|
982
|
+
}
|
|
983
|
+
if (attribute.nodeName.toLowerCase() == "routerKey".toLowerCase()) {
|
|
984
|
+
var actionRouter = self.actionRouter;
|
|
985
|
+
let field = actionRouter.find(b => {
|
|
986
|
+
return b.id === attribute.nodeValue;
|
|
987
|
+
});
|
|
988
|
+
if (typeof field !== "undefined") {
|
|
989
|
+
if (!field.rightField || self.listData[field.rightField] == 1) {
|
|
990
|
+
obj["rightRouter"] = true;
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
}
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
// do children
|
|
999
|
+
if (xml.hasChildNodes()) {
|
|
1000
|
+
for (var i = 0; i < xml.childNodes.length; i++) {
|
|
1001
|
+
var item = xml.childNodes.item(i);
|
|
1002
|
+
if (typeof (obj["fields"]) == "undefined") {
|
|
1003
|
+
obj["fields"] = [];
|
|
1004
|
+
obj["fields"].push(this.xmlToJson(item));
|
|
1005
|
+
} else {
|
|
1006
|
+
if (typeof (obj["fields"].push) == "undefined") {
|
|
1007
|
+
var old = obj["fields"];
|
|
1008
|
+
obj["fields"] = [];
|
|
1009
|
+
obj["fields"].push(old);
|
|
1010
|
+
}
|
|
1011
|
+
obj["fields"].push(rtn.xmlToJson(item));
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
return obj;
|
|
1016
|
+
},
|
|
1017
|
+
xmlToJsonCell(data,cellLayout) {
|
|
1018
|
+
var str = '';
|
|
1019
|
+
var cellLayoutNew = cellLayout;
|
|
1020
|
+
if (cellLayoutNew.indexOf("for=") != -1) {
|
|
1021
|
+
var cellxmlDOM = rtn.loadXML(cellLayoutNew);
|
|
1022
|
+
var listxml = rtn.getxmlForStr(cellxmlDOM);
|
|
1023
|
+
|
|
1024
|
+
if (typeof listxml !== 'undefined') {
|
|
1025
|
+
for (var j = 0; j < listxml.attributes.length; j++) {
|
|
1026
|
+
var attribute = listxml.attributes.item(j);
|
|
1027
|
+
if (attribute.nodeName.toLowerCase() == "for".toLowerCase()) {
|
|
1028
|
+
var liststr = "";
|
|
1029
|
+
var celllist = rtn.xmlToString(listxml)
|
|
1030
|
+
|
|
1031
|
+
var celllistNew = rtn.loadXML(celllist);
|
|
1032
|
+
var newAtt = celllistNew.createAttribute("forrowindex");
|
|
1033
|
+
newAtt.nodeValue = "{{forrowindex}}";
|
|
1034
|
+
var x = celllistNew.getElementsByTagName("Layout");
|
|
1035
|
+
x[0].setAttributeNode(newAtt);
|
|
1036
|
+
var cellstr = rtn.xmlToString(celllistNew)
|
|
1037
|
+
var list = data[attribute.nodeValue];
|
|
1038
|
+
if (typeof list !== 'undefined') {
|
|
1039
|
+
for (var i = 0; i < list.length; i++) {
|
|
1040
|
+
list[i].forrowindex = i;
|
|
1041
|
+
liststr += cellstr.replace(/\{\{(.+?)\}\}/g, (...args) => {
|
|
1042
|
+
return rtn.getValue(list[i], args[1])
|
|
1043
|
+
});
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
cellLayoutNew = cellLayoutNew.replace(/\n/g, '').trim() //去除换行 和头尾空格
|
|
1047
|
+
let replacer = function (match, p1, p2, p3, offset) {
|
|
1048
|
+
return p1 + p3
|
|
1049
|
+
}
|
|
1050
|
+
cellLayoutNew = cellLayoutNew.replace(/(>)(\s*)(<)/g, replacer) //把 > 和 < 之间的空格去除
|
|
1051
|
+
cellLayoutNew = cellLayoutNew.replace(/ +/g, ' ')
|
|
1052
|
+
cellLayoutNew = cellLayoutNew.replace(celllist, liststr)
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
if (typeof data !== 'undefined') {
|
|
1058
|
+
str = cellLayoutNew.replace(/\{\{(.+?)\}\}/g, (...args) => {
|
|
1059
|
+
return rtn.getValue(data, args[1])
|
|
1060
|
+
});
|
|
1061
|
+
}
|
|
1062
|
+
var xmlDOM = rtn.loadXML(str);
|
|
1063
|
+
return rtn.xmlToJson(xmlDOM);
|
|
1064
|
+
},
|
|
1065
|
+
doUpdateCell(data, searchValue1) {
|
|
1066
|
+
var self = this;
|
|
1067
|
+
var rowindex = 0;
|
|
1068
|
+
rtn.listData.forEach((v) => {
|
|
1069
|
+
if (v[rtn.primaryKey] == searchValue1) {
|
|
1070
|
+
return
|
|
1071
|
+
}
|
|
1072
|
+
rowindex++
|
|
1073
|
+
});
|
|
1074
|
+
rtn.layoutData[rowindex] = rtn.xmlToJsonCell(data.rows[0], data.cellLayout);
|
|
1075
|
+
|
|
1076
|
+
},
|
|
871
1077
|
};
|
|
872
1078
|
if (rtn.template) {
|
|
873
1079
|
var tempLoader = template.loader(rtn.template).default;
|
|
874
1080
|
tempLoader.init(rtn);
|
|
875
1081
|
}
|
|
876
1082
|
rtn.dataDictionary = rtn.listData;
|
|
1083
|
+
|
|
877
1084
|
return rtn;
|
|
878
1085
|
};
|
|
879
1086
|
if (typeof data === 'string') {
|
|
@@ -315,9 +315,12 @@ const LibFunction = {
|
|
|
315
315
|
item.is = 'ct-text';
|
|
316
316
|
break;
|
|
317
317
|
case Enum.ControlType.RichText://富文本框
|
|
318
|
-
var router =
|
|
319
|
-
|
|
320
|
-
|
|
318
|
+
var router ={};
|
|
319
|
+
if(source.actionRouters){
|
|
320
|
+
router = source.actionRouters.find((v1) => {
|
|
321
|
+
return v1.key === field.fieldName1;
|
|
322
|
+
});
|
|
323
|
+
}
|
|
321
324
|
item = RichText(field, router);
|
|
322
325
|
item.is = 'ct-rich-text';
|
|
323
326
|
break;
|
package/src/main.js
CHANGED
|
@@ -12,10 +12,10 @@ Vue.use(ElementUI, { size: 'mini'});
|
|
|
12
12
|
// 关闭生产模式下给出的提示
|
|
13
13
|
Vue.config.productionTip = false;
|
|
14
14
|
Vue.use(centaline, {
|
|
15
|
-
baseUrl: "http://10.88.22.13:7070/v1/form/router",
|
|
15
|
+
// baseUrl: "http://10.88.22.13:7070/v1/form/router",
|
|
16
16
|
// baseUrl: "http://10.88.23.22:9999/v1/form/router",
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
baseUrl: "http://10.88.22.69:8080/",
|
|
18
|
+
flagRouterSelf: true,
|
|
19
19
|
zindex: 999,
|
|
20
20
|
showRequestErrorMessage: true,
|
|
21
21
|
handler: {
|
|
@@ -23,6 +23,9 @@ Vue.use(centaline, {
|
|
|
23
23
|
openTab: function (action) {
|
|
24
24
|
alert("打开tab页:" + action)
|
|
25
25
|
},
|
|
26
|
+
openTabSearch: function (field, submitData) {
|
|
27
|
+
alert("打开tab页Search:" + field.action)
|
|
28
|
+
},
|
|
26
29
|
openDetail: function (action) {
|
|
27
30
|
alert("打开tab页:" + action)
|
|
28
31
|
},
|