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.
Files changed (32) hide show
  1. package/build/centaline/centaline.path.js +0 -2
  2. package/package.json +1 -1
  3. package/src/Form.vue +5 -4
  4. package/src/SearchList.vue +9 -3
  5. package/src/centaline/css/max.css +4 -1
  6. package/src/centaline/dynamicContact/src/dynamicContact.vue +5 -1
  7. package/src/centaline/dynamicDetail/src/dynamicContactList.vue +6 -1
  8. package/src/centaline/dynamicDetail/src/dynamicPropertyDetailRET.vue +5 -1
  9. package/src/centaline/dynamicDetail/src/dynamicPropertySimpleDetailRET.vue +5 -1
  10. package/src/centaline/dynamicForm/index.js +0 -4
  11. package/src/centaline/dynamicForm/src/dynamicForm.vue +12 -3
  12. package/src/centaline/dynamicForm/src/dynamicFormListTable.vue +7 -0
  13. package/src/centaline/dynamicLayout/src/dynamicLayout.vue +16 -270
  14. package/src/centaline/dynamicLayout/src/dynamicLayoutChildren.vue +6 -12
  15. package/src/centaline/dynamicLayout/src/dynamicLayoutImage.vue +55 -6
  16. package/src/centaline/dynamicLayout/src/dynamicLayoutLabel.vue +11 -7
  17. package/src/centaline/dynamicLayout/src/dynamicLayoutLine.vue +3 -1
  18. package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +206 -6
  19. package/src/centaline/loader/src/ctl/CellLayout.js +234 -115
  20. package/src/centaline/loader/src/ctl/Form.js +11 -4
  21. package/src/centaline/loader/src/ctl/FormList.js +81 -13
  22. package/src/centaline/loader/src/ctl/RichText.js +3 -0
  23. package/src/centaline/loader/src/ctl/SearchScreen.js +22 -22
  24. package/src/centaline/loader/src/ctl/SearchTable.js +215 -8
  25. package/src/centaline/loader/src/ctl/lib/LibFunction.js +6 -3
  26. package/src/main.js +6 -3
  27. package/wwwroot/static/centaline/centaline-data-driven.js +3 -3
  28. package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
  29. package/src/centaline/dynamicLabel/index.js +0 -11
  30. package/src/centaline/dynamicLabel/src/dynamicLabel.vue +0 -73
  31. package/src/centaline/dynamicLs/index.js +0 -22
  32. 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: router.flagAddRowAfterAction? rtnData.responseData.content: rtn.listData[rtn.selectIndex][self.primaryKey],
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
- response.content.rows.forEach((row) => {
610
- for (var vkey in row) {
611
- rtn.dataDictionary[row[rtn.primaryKey]][vkey] = row[vkey];
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, "&lt;");
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 = source.actionRouters.find((v1) => {
319
- return v1.key === field.fieldName1;
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
- // baseUrl: "http://10.88.22.69:8080/",
18
- // flagRouterSelf: true,
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
  },