centaline-data-driven 1.5.21 → 1.5.22

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 (35) hide show
  1. package/build/centaline/centaline.path.js +1 -0
  2. package/package.json +1 -1
  3. package/release-log.md +36 -0
  4. package/src/Form.vue +2 -2
  5. package/src/SearchList.vue +12 -2
  6. package/src/centaline/css/common.css +2 -2
  7. package/src/centaline/dynamicCb/src/dynamicCb.vue +5 -1
  8. package/src/centaline/dynamicContainer/index.js +14 -0
  9. package/src/centaline/dynamicContainer/src/dynamicContainer.vue +151 -0
  10. package/src/centaline/dynamicDetail/src/dynamicAlbums.vue +5 -5
  11. package/src/centaline/dynamicDetail/src/dynamicDetail.vue +19 -2
  12. package/src/centaline/dynamicDetail/src/dynamicEstateBuildingDetail.vue +16 -219
  13. package/src/centaline/dynamicDetail/src/dynamicEstateSimpleDetail.vue +41 -19
  14. package/src/centaline/dynamicDetail/src/dynamicPropertySimpleDetailRET.vue +30 -11
  15. package/src/centaline/dynamicForm/src/dynamicForm.vue +19 -4
  16. package/src/centaline/dynamicInputNumber/src/dynamicInputNumber.vue +5 -1
  17. package/src/centaline/dynamicLayout/src/dynamicLayout.vue +1 -2
  18. package/src/centaline/dynamicLayout/src/dynamicLayoutLabel.vue +2 -2
  19. package/src/centaline/dynamicPhotoSelect/src/dynamicPhotoSelect.vue +3 -2
  20. package/src/centaline/dynamicSearchList/src/dynamicSearchList.vue +64 -30
  21. package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +25 -13
  22. package/src/centaline/dynamicSeg/src/dynamicSeg.vue +5 -1
  23. package/src/centaline/loader/src/ctl/CellLayout.js +20 -3
  24. package/src/centaline/loader/src/ctl/Container.js +208 -0
  25. package/src/centaline/loader/src/ctl/Form.js +12 -0
  26. package/src/centaline/loader/src/ctl/FormList.js +5 -3
  27. package/src/centaline/loader/src/ctl/Router.js +3 -0
  28. package/src/centaline/loader/src/ctl/SearchTable.js +14 -6
  29. package/src/centaline/loader/src/ctl/lib/Enum.js +7 -0
  30. package/src/centaline/loader/src/ctl/lib/LibFunction.js +5 -1
  31. package/src/centaline/loader/src/ctl.js +1 -0
  32. package/src/centaline/validate/index.js +4 -2
  33. package/src/main.js +5 -5
  34. package/wwwroot/static/centaline/centaline-data-driven.js +3 -3
  35. package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
@@ -59,6 +59,7 @@ const paths = {
59
59
  "dynamicDragSort": "./src/centaline/dynamicDragSort/index.js", //上下拖拽排序组件
60
60
  "dynamicEditPictures": "./src/centaline/dynamicEditPictures/index.js", //图片编辑组件
61
61
  "dynamicMapBaidu": "./src/centaline/dynamicMapBaidu/index.js", //地图
62
+ "dynamicContainer": "./src/centaline/dynamicContainer/index.js", //容器控件
62
63
  },
63
64
  "plugs": {
64
65
  "api": "./src/centaline/api/index.js", //调用API插件
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "centaline-data-driven",
3
- "version": "1.5.21",
3
+ "version": "1.5.22",
4
4
  "description": "ccai",
5
5
  "author": "hjc <3226136347@qq.com>",
6
6
  "private": false,
package/release-log.md CHANGED
@@ -1,3 +1,39 @@
1
+ ## v1.5.22
2
+ 2023-06-05
3
+
4
+ 优化
5
+
6
+ 容器控件
7
+
8
+ 右侧表单
9
+
10
+ 右侧列表
11
+
12
+ 右侧楼盘详情页
13
+
14
+ 弹层列表修改标题
15
+
16
+ 新增浏览器存取表格列宽
17
+
18
+ 文本框标题实现可换行效果以及checkbox 点击文字可以选择和取消
19
+
20
+ Layout组件优化
21
+
22
+ 优化盘源和楼盘列表页抽屉组件样式
23
+
24
+ 优化盘源和楼盘列表页右边栏按钮的布局和逻辑以及更多的逻辑展示
25
+
26
+ 表单列表弹层新增时,可以取到表单的关联值
27
+
28
+ bug修复
29
+
30
+ BUG修复图片选择 无标签时,设置默认项消失
31
+
32
+ 统计切换没有刷新右侧处理
33
+
34
+ 重置弹层引用列表样式居上高度
35
+
36
+
1
37
  ## v1.5.21
2
38
  2023-05-25
3
39
 
package/src/Form.vue CHANGED
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div id="form-app" class="data-driven" style="width:100%;height:100%;overflow:auto">
3
3
  <!-- <ct-form :source="formdata.content" :apiParam="apiParam"></ct-form> -->
4
- <ct-form :api="'/PropertyTranToActive/getLayoutOfNew'" :apiParam="apiParam" :topHeight="topHeight"></ct-form>
4
+ <ct-form :api="'/api/third-dept-tran/transaction/edit'" :apiParam="apiParam" :topHeight="topHeight"></ct-form>
5
5
  <ct-dialog-list></ct-dialog-list>
6
6
  </div>
7
7
  </template>
@@ -12,7 +12,7 @@
12
12
  data() {
13
13
  return {
14
14
  apiParam:{
15
- "chanceID":"10155931","actionType":2
15
+ "originalTraId":"1663810304614531074","actionType":"3","pageStyle":"2","pageTitle":"修改成交单","pageOnly":"true"
16
16
  },
17
17
  topHeight:10,
18
18
  }
@@ -50,9 +50,19 @@
50
50
  :searchStatsApi="'/PropertyOFIList/getListStats'">
51
51
  </ct-searchlist> -->
52
52
 
53
- <ct-searchlist :searchConditionApi="'/EstateList/getLayoutOfSearch'"
53
+ <!-- <ct-searchlist :searchConditionApi="'/EstateList/getLayoutOfSearch'"
54
54
  :searchDataApi="'/EstateList/getListOfSearchModel'">
55
- </ct-searchlist>
55
+ </ct-searchlist> -->
56
+
57
+ <!-- <ct-searchlist :searchConditionApi="'/EstateBuildingList/getLayoutOfSearch'"
58
+ :searchDataApi="'/EstateBuildingList/getListOfSearchModel'">
59
+ </ct-searchlist> -->
60
+
61
+ <!-- <ct-searchlist :searchConditionApi="'/DistrictList/getLayoutOfSearch'"
62
+ :searchDataApi="'/DistrictList/getListOfSearchModel'">
63
+ </ct-searchlist> -->
64
+
65
+ <ct-searchlist :searchConditionApi="'/RoleList/getLayoutOfSearch'" :searchStatsApi="'/RoleList/getListStats'" :searchDataApi="'/RoleList/getListOfSearchModel'"></ct-searchlist>
56
66
 
57
67
  <ct-dialog-list></ct-dialog-list>
58
68
  </div>
@@ -600,7 +600,7 @@ html {
600
600
 
601
601
  .ct-searchtable{
602
602
  margin-top: 10px;
603
- padding: 20px 10px 0 10px;
603
+ padding: 10px 10px 0 10px;
604
604
  background: #fff;
605
605
  -webkit-box-sizing: border-box;
606
606
  border-radius:6px;
@@ -811,7 +811,7 @@ color: var(--centalinePlaceholder);
811
811
  }
812
812
  /* 重置弹层引用列表样式居上高度 */
813
813
  .ct-dialog_content .ct-searchtable{
814
- margin-top: 0px!important;
814
+ /* margin-top: 0px!important; */
815
815
  }
816
816
  .ct-table-content .checkbox-td .el-checkbox{
817
817
  min-width: initial;
@@ -2,7 +2,7 @@
2
2
  <div class="field-top">
3
3
  <div v-if="model !== null" class="ct-checkbox checkboxHeight">
4
4
  <div :class="[model.showLabel?'el-input-group el-input-group--prepend':'',!valid?'inputError':'']">
5
- <div v-if="model.showLabel && model.label" class="el-input-group__prepend line-feed" :class="[model.labelClass]">
5
+ <div v-if="model.showLabel && model.label" class="el-input-group__prepend line-feed" :class="[model.labelClass]" @click="toggleCheckbox">
6
6
  {{model.label}}
7
7
  </div>
8
8
  <div class="ct-radios">
@@ -51,6 +51,9 @@
51
51
  load(data) {
52
52
  this.model = data;
53
53
  },
54
+ toggleCheckbox() {
55
+ this.model.value = !this.model.value;
56
+ },
54
57
  changeCheckBoxHandler: function (event) {
55
58
  this.changeHandler();
56
59
  if(this.model.autoSearch) this.$emit('click');
@@ -73,6 +76,7 @@
73
76
  }
74
77
  .ct-form .line-feed {
75
78
  white-space: normal;
79
+ cursor: pointer;
76
80
  }
77
81
  .ct-checkbox .ct-radios .el-checkbox {
78
82
  min-width: 0px;
@@ -0,0 +1,14 @@
1
+ import dynamicContainer from './src/dynamicContainer'
2
+ import api from '../api/index'
3
+
4
+ dynamicContainer.install = function (Vue) {
5
+ Vue.component(dynamicContainer.name, dynamicContainer);
6
+
7
+ Vue.use(api);
8
+ }
9
+
10
+ if (typeof window !== 'undefined' && window.Vue) {
11
+ window.Vue.use(dynamicContainer);
12
+ }
13
+
14
+ export default dynamicContainer;
@@ -0,0 +1,151 @@
1
+ <template>
2
+ <el-container v-if="model.fields.length > 0" class="ct-container">
3
+ <el-aside class="lable" width="160px"><span v-html="model.label"></span></el-aside>
4
+ <el-main class="main">
5
+ <el-row>
6
+ <el-col v-for="(col, index) in model.fields" :key="index" v-if="col.show !== false"
7
+ :class="[index>0&&(col.label==''||col.is=='ct-btn')?'complex-left-10':'','containerCol']"
8
+ :style="{'width':(col.width!='0'?col.width+'px':'100%'),'flex':(col.width!='0'?'0 0 '+col.width+'px':'100%')}">
9
+ <component ref="Fields" :is="col.is" :vmodel="col" :api="model.OptApi" v-bind="col.bindPara"
10
+ @click="fieldClickHandler(col,$event)" @change="changeHandler(col,$event)" @enter="enterHandler(col,$event)"
11
+ @input="inputHandler(col,$event)"></component>
12
+ </el-col>
13
+ </el-row>
14
+ </el-main>
15
+ </el-container>
16
+ </template>
17
+
18
+ <script>
19
+ export default {
20
+ name: 'ct-container',
21
+ components: {
22
+ },
23
+ props: {
24
+ vmodel: Object,
25
+ api: String,
26
+ parentModel: Object,
27
+ },
28
+ data() {
29
+ return {
30
+ model: null,
31
+ foucus: false,
32
+ itemKey: Math.random(),
33
+ validMessage:'',
34
+ }
35
+ },
36
+ created() {
37
+ this.model = this.vmodel;
38
+ this.model.OptApi = this.api;
39
+ },
40
+ methods: {
41
+ fieldsValidExcute() {
42
+ var self = this;
43
+ var rtnBool = true;
44
+ if (typeof self.$refs.Fields !== 'undefined') {
45
+ self.$refs.Fields.forEach((f) => {
46
+ if (typeof f.validExcute !== 'undefined') {
47
+ if (!f.validExcute()) {
48
+ rtnBool = false;
49
+ if(self.validMessage=='')self.validMessage='【' + f.model.label + '】' +f.validMessage;
50
+ }
51
+ }
52
+ });
53
+ }
54
+ return rtnBool;
55
+ },
56
+ validExcute() {
57
+ var self = this;
58
+ var rtnBool = true;
59
+ if (!self.fieldsValidExcute()) {
60
+ rtnBool = false;
61
+ }
62
+ return rtnBool;
63
+ },
64
+ changeHandler(field) {
65
+ var self = this;
66
+
67
+ self.model.isChanged = true;
68
+ self.model.hiddenHandle(field);
69
+ self.model.requiredHandle(field);
70
+ //self.model.validMrf(field);
71
+
72
+ if (field.onAfterChanged) {
73
+ var router = self.model.actionRouters.find((v) => {
74
+ return v.id === field.onAfterChanged;
75
+ });
76
+ self.$parent.$parent.$parent.$parent.clickHandler(router);
77
+ }
78
+
79
+ self.$forceUpdate();
80
+ },
81
+ enterHandler(field) {
82
+ var self = this;
83
+
84
+ self.model.isChanged = true;
85
+ self.model.hiddenHandle(field);
86
+ self.model.requiredHandle(field);
87
+ //self.model.validMrf(field);
88
+
89
+ if (field.routerKeyForEnterKey) {
90
+ var router = self.model.actionRouters.find((v) => {
91
+ return v.id === field.routerKeyForEnterKey;
92
+ });
93
+ self.$parent.$parent.$parent.$parent.clickHandler(router);
94
+ }
95
+
96
+ self.$forceUpdate();
97
+ },
98
+ inputHandler(field) {
99
+ var self = this;
100
+ this.model.input = field.input;//当前小组件事件作为大组件事件
101
+ self.$emit('input');
102
+
103
+ },
104
+ fieldClickHandler(field) {
105
+ let submitData = null;
106
+ var router = this.model.buttons.find((v) => {
107
+ return v.id === field.id;
108
+ });
109
+ if (router == undefined) {
110
+ router = this.model.links.find((v) => {
111
+ return v.id === field.id;
112
+ });
113
+ }
114
+ if (router == undefined) {
115
+ router = this.model.actionRouters.find((v) => {
116
+ return v.id === field.id;
117
+ });
118
+ }
119
+ if (router && field.isSubmitDataFromSelf) {
120
+ submitData = {};
121
+ router.submitFormField.forEach((v) => {
122
+ submitData[v] = field.list[field.listIndex].code;
123
+ });
124
+ }
125
+ this.$parent.$parent.$parent.$parent.clickHandler(router, submitData);
126
+ },
127
+ }
128
+ }
129
+ </script>
130
+ <style>
131
+ .complex-left-10 {
132
+ padding-left: 10px;
133
+ }
134
+ .ct-container{
135
+ border: 1px solid #e0e0e0;
136
+ }
137
+ .ct-container main{
138
+ padding: 6px 0;
139
+ }
140
+ .containerCol{
141
+ padding: 5px;
142
+ }
143
+ .ct-container .lable{
144
+ display: flex;
145
+ justify-content: flex-start;
146
+ align-items: center;
147
+ flex-wrap: wrap;
148
+ background: #f3f3f3;
149
+ padding-left: 16px;
150
+ }
151
+ </style>
@@ -5,10 +5,10 @@
5
5
  <template v-if="carouselMediaAlbums.length > 0">
6
6
  <el-carousel
7
7
  arrow="hover"
8
- height="199px"
8
+ :height="imgHeight+'px'"
9
9
  :autoplay="false"
10
10
  indicator-position="none"
11
- :initial-index="getinitialIndex(carouselMediaAlbums)" @change="changeAlbumsIndex" ref="mediaAlbumsCarousel"
11
+ :initial-index="getinitialIndex(carouselMediaAlbums)" @change="changeAlbumsIndex" ref="mediaAlbumsCarousel" style="border-radius: 4px;"
12
12
  >
13
13
  <template v-for="(item, index) in carouselMediaAlbums">
14
14
  <el-carousel-item :key="index">
@@ -27,7 +27,7 @@
27
27
  <div class="page">{{page}}</div>
28
28
  <div
29
29
  class="hous-img"
30
- style="position: absolute; bottom: 0; z-index: 9"
30
+ style="position: absolute; bottom: 4px; z-index: 9"
31
31
  v-if="newMediaAlbums.length > 1"
32
32
  >
33
33
  <div class="img-i">
@@ -184,7 +184,7 @@ export default {
184
184
  }
185
185
  .page{
186
186
  position: absolute;
187
- bottom: 20px;
187
+ bottom: 7px;
188
188
  text-align: right;
189
189
  right: 0px;
190
190
  background-color: rgb(14 12 24 / 38%);
@@ -199,7 +199,7 @@ export default {
199
199
  overflow-x: hidden;
200
200
  overflow-y: hidden;
201
201
  white-space: nowrap;
202
- background-color: rgb(255 255 255);
202
+ // background-color: rgb(255 255 255);
203
203
  opacity: 0.8;
204
204
  .img-i {
205
205
  width: auto;
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div>
2
+ <div :style="{position:pageType=='Form'?'relative':''}">
3
3
  <ct-PropertyDetailOFI v-if="pageType=='PropertyDetailOFI'" :api="api" :apiParam="apiParam" :parentModel="parentModel" :top="top" class="ct-PropertyDetailOFI"
4
4
  @loaded="loaded" @scrollHandle="scrollHandle" ></ct-PropertyDetailOFI>
5
5
 
@@ -11,13 +11,22 @@
11
11
  @loaded="loaded" @clickNextHandler="clickNextHandler" @clickPrevHandler="clickPrevHandler" @simpleRouterclickHandler="simpleRouterclickHandler"
12
12
  @closeSideHandler="closeSideHandler" :drowerClose="drowerClose"></ct-PropertySimpleDetailRET>
13
13
 
14
- <ct-EstateSimpleDetail v-if="pageType=='EstateSimpleDetail'" :api="api" :apiParam="apiParam" :selectIndex="selectIndex" :rowCount="rowCount" class="ct-EstateSimpleDetail"
14
+ <ct-EstateSimpleDetail v-if="pageType=='EstateSimpleDetail' || pageType=='EstateBuildingSimpleDetail'" :api="api" :apiParam="apiParam" :selectIndex="selectIndex" :rowCount="rowCount" class="ct-EstateSimpleDetail"
15
15
  @loaded="loaded" @clickNextHandler="clickNextHandler" @clickPrevHandler="clickPrevHandler" @simpleRouterclickHandler="simpleRouterclickHandler"
16
16
  @closeSideHandler="closeSideHandler" :drowerClose="drowerClose"></ct-EstateSimpleDetail>
17
17
 
18
18
  <ct-EstateBuildingDetail v-if="pageType=='EstateBuildingDetail'" :api="api" :apiParam="apiParam" :parentModel="parentModel" :top="top" class="ct-EstateBuildingDetail"
19
19
  @loaded="loaded" @scrollHandle="scrollHandle" ></ct-EstateBuildingDetail>
20
20
 
21
+ <ct-SearchList v-if="pageType=='SearchList'" :searchConditionApi="searchConditionApi" :searchStatsApi="searchStatsApi" :searchDataApi="searchDataApi"
22
+ :apiParam="apiParam" :pageHeight="listHeight+'px'" @tableLoaded="loaded">
23
+ </ct-SearchList>
24
+
25
+ <div v-if="pageType=='Form'" style="overflow: auto;" :style="{height:listHeight+'px'}">
26
+ <ct-form :api="api" :apiParam="apiParam" @loaded="loaded">
27
+ </ct-form>
28
+ </div>
29
+
21
30
  </div>
22
31
  </template>
23
32
 
@@ -27,6 +36,8 @@
27
36
  import dynamicPropertySimpleDetailRET from './dynamicPropertySimpleDetailRET'
28
37
  import dynamicEstateSimpleDetail from './dynamicEstateSimpleDetail'
29
38
  import dynamicEstateBuildingDetail from './dynamicEstateBuildingDetail'
39
+ import dynamicSearchList from '../../dynamicSearchList/src/dynamicSearchList.vue';
40
+ import dynamicForm from '../../dynamicForm/src/dynamicForm.vue';
30
41
  export default {
31
42
  name: 'ct-Detail',
32
43
  components: {
@@ -35,6 +46,8 @@
35
46
  'ct-PropertySimpleDetailRET': dynamicPropertySimpleDetailRET,
36
47
  'ct-EstateSimpleDetail': dynamicEstateSimpleDetail,
37
48
  'ct-EstateBuildingDetail': dynamicEstateBuildingDetail,
49
+ 'ct-SearchList': dynamicSearchList,
50
+ 'ct-form': dynamicForm,
38
51
  },
39
52
  props: {
40
53
  vmodel: Object,
@@ -46,6 +59,10 @@
46
59
  rowCount:Number,
47
60
  top:Number,
48
61
  drowerClose:String,
62
+ searchConditionApi: String,
63
+ searchStatsApi: String,
64
+ searchDataApi: String,
65
+ listHeight:Number,
49
66
  },
50
67
  data() {
51
68
  return {