bri-components 1.2.14 → 1.2.16

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 (41) hide show
  1. package/lib/0.bri-components.min.js +1 -1
  2. package/lib/1.bri-components.min.js +1 -1
  3. package/lib/2.bri-components.min.js +1 -1
  4. package/lib/3.bri-components.min.js +1 -1
  5. package/lib/4.bri-components.min.js +1 -1
  6. package/lib/5.bri-components.min.js +1 -1
  7. package/lib/6.bri-components.min.js +1 -1
  8. package/lib/bri-components.min.js +11 -11
  9. package/package.json +1 -1
  10. package/src/{components/other → abolish}/DshEditPanel.vue +1 -1
  11. package/src/components/controls/base/DshCheckbox.vue +0 -1
  12. package/src/components/controls/base/DshSelect.vue +0 -1
  13. package/src/components/controls/senior/cascaderTable.vue +6 -1
  14. package/src/components/controls/senior/flatTable.vue +17 -12
  15. package/src/components/controls/senior/selectDepartments.vue +8 -44
  16. package/src/components/controls/senior/selectUsers/selectUsers.vue +7 -7
  17. package/src/components/list/BriTable.vue +5 -7
  18. package/src/components/list/BriTree.vue +1 -1
  19. package/src/components/list/DshBox/DshTable.vue +5 -4
  20. package/src/components/small/DshModal.vue +4 -2
  21. package/src/index.js +20 -34
  22. package/src/styles/common/text.less +1 -2
  23. package/src/styles/components/controls/base/DshCheckbox.less +43 -43
  24. package/src/styles/components/controls/base/DshSelect.less +35 -35
  25. package/src/styles/components/controls/senior/selectDepartments.less +7 -40
  26. package/src/styles/components/controls/senior/selectUsers/selectUsers.less +26 -30
  27. package/src/styles/components/index.less +12 -13
  28. package/src/styles/components/list/BriTable.less +10 -4
  29. package/src/styles/components/list/DshBox/DshTable.less +9 -1
  30. package/src/styles/components/small/DshButtons.less +2 -9
  31. package/src/styles/components/small/DshModal.less +137 -92
  32. package/src/utils/table.js +4 -3
  33. /package/src/{styles/components/small → abolish}/DshCrumbItem.less +0 -0
  34. /package/src/{styles/components/small → abolish}/DshCrumbs.less +0 -0
  35. /package/src/{components/small → abolish}/DshCrumbs.vue +0 -0
  36. /package/src/{components/small → abolish}/DshCrumbsItem.vue +0 -0
  37. /package/src/{styles/components/other → abolish}/DshEditPanel.less +0 -0
  38. /package/src/{styles/components/other → abolish}/DshMenu.less +0 -0
  39. /package/src/{components/other → abolish}/DshMenu.vue +0 -0
  40. /package/src/components/{other → small}/DshBtnModal.vue +0 -0
  41. /package/src/styles/components/{other → small}/DshBtnModal.less +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bri-components",
3
- "version": "1.2.14",
3
+ "version": "1.2.16",
4
4
  "author": "dengshanghui",
5
5
  "description": "a component lib for vue project",
6
6
  "main": "src/index.js",
@@ -66,7 +66,7 @@
66
66
 
67
67
  <!-- 操作按钮 -->
68
68
  <dsh-buttons
69
- class="bri-footer"
69
+ class="bri-modal-footer"
70
70
  :list="$getOperationList(['canCancel', 'canConfirm'])"
71
71
  @click="$dispatchEvent($event)"
72
72
  ></dsh-buttons>
@@ -43,7 +43,6 @@
43
43
  <div
44
44
  v-else
45
45
  class="dsh-subtip"
46
- style="backgroundColor: #f3f3f3;"
47
46
  >-- 无选择项 --</div>
48
47
  </CheckboxGroup>
49
48
  </template>
@@ -33,7 +33,6 @@
33
33
  <div
34
34
  v-else
35
35
  class="dsh-subtip"
36
- style="backgroundColor: #f3f3f3;"
37
36
  >-- 无选择项 --</div>
38
37
  </RadioGroup>
39
38
 
@@ -68,13 +68,18 @@
68
68
 
69
69
  <script>
70
70
  import controlMixin from "../controlMixin.js";
71
+ import DshBtnModal from "../../small/DshBtnModal.vue";
72
+ import DshCascaderTable from "../../list/DshCascaderTable.vue";
71
73
 
72
74
  export default {
73
75
  name: "cascaderTable",
74
76
  mixins: [
75
77
  controlMixin
76
78
  ],
77
- components: {},
79
+ components: {
80
+ DshBtnModal,
81
+ DshCascaderTable
82
+ },
78
83
  props: {},
79
84
  data () {
80
85
  return {
@@ -9,7 +9,7 @@
9
9
  customIcon: 'bico-internaltable'
10
10
  }]"></dsh-icons>
11
11
  <span class="flatTable-unit-text">
12
- {{ val.list.length }}行
12
+ {{ curVal.list.length }}行
13
13
  </span>
14
14
  </span>
15
15
 
@@ -19,8 +19,8 @@
19
19
  <bri-flat-table
20
20
  :canEdit="finalCanEdit"
21
21
  :columns="columns"
22
- :data="val.list"
23
- :rowDefault="val.rowDefault"
22
+ :data="curVal.list"
23
+ :rowDefault="curVal.rowDefault"
24
24
  :outObj="value"
25
25
  :propsObj="propsObj"
26
26
  @change="change"
@@ -41,9 +41,9 @@
41
41
  ref="dshFatTable"
42
42
  :canEdit="finalCanEdit"
43
43
  :columns="columns"
44
- :data="val.list"
45
- :oldData="val.oldList"
46
- :rowDefault="val.rowDefault"
44
+ :data="curVal.list"
45
+ :oldData="curVal.oldList"
46
+ :rowDefault="curVal.rowDefault"
47
47
  :outObj="value"
48
48
  :propsObj="propsObj"
49
49
  @change="change"
@@ -56,12 +56,12 @@
56
56
  :propsObj="modalPropsObj"
57
57
  >
58
58
  <bri-flat-table
59
- v-if="value[controlKey] && isEnlarge"
59
+ v-if="isEnlarge"
60
60
  :canEdit="finalCanEdit"
61
61
  :columns="columns"
62
- :data="val.list"
63
- :oldData="val.oldList"
64
- :rowDefault="val.rowDefault"
62
+ :data="curVal.list"
63
+ :oldData="curVal.oldList"
64
+ :rowDefault="curVal.rowDefault"
65
65
  :outObj="value"
66
66
  :propsObj="propsObj"
67
67
  @change="change"
@@ -74,13 +74,18 @@
74
74
 
75
75
  <script>
76
76
  import controlMixin from "../controlMixin.js";
77
+ import DshBtnModal from "../../small/DshBtnModal.vue";
78
+ import BriFlatTable from "../../list/BriFlatTable.vue";
77
79
 
78
80
  export default {
79
81
  name: "flatTable",
80
82
  mixins: [
81
83
  controlMixin
82
84
  ],
83
- components: {},
85
+ components: {
86
+ DshBtnModal,
87
+ BriFlatTable
88
+ },
84
89
  props: {},
85
90
  data () {
86
91
  return {
@@ -99,7 +104,7 @@
99
104
  };
100
105
  },
101
106
  computed: {
102
- val () {
107
+ curVal () {
103
108
  // TODO: 待定处理
104
109
  return this.value[this.controlKey] || {
105
110
  list: [],
@@ -96,7 +96,6 @@
96
96
  <template v-else>
97
97
  <!-- 树形形式 -->
98
98
  <div
99
- v-if="isCascader"
100
99
  class="list-center-tree"
101
100
  >
102
101
  <template v-if="allDepartmentList.length">
@@ -116,43 +115,14 @@
116
115
  暂无数据……
117
116
  </div>
118
117
  </div>
119
-
120
- <!-- 卡片形式 -->
121
- <div
122
- v-else
123
- class="list-center-card"
124
- >
125
- <bri-card
126
- :data="departmentList"
127
- :changeOnSelect="changeOnSelect"
128
- :multiple="multiple"
129
- @on-change="changeSelect"
130
- ></bri-card>
131
-
132
- <div
133
- v-if="highSearch"
134
- class="card-high"
135
- >
136
- <p class="card-high-title">高级选项</p>
137
- <bri-card
138
- :data="highDepartmentList"
139
- :changeOnSelect="changeOnSelect"
140
- :multiple="multiple"
141
- @on-change="changeSelect"
142
- ></bri-card>
143
- </div>
144
- </div>
145
118
  </template>
146
119
  </div>
147
-
148
- <!-- 底 按钮 -->
149
- <div class="list-footer">
150
- <dsh-buttons
151
- :list="$getOperationList(['canCancel', 'canConfirm'])"
152
- @click="$dispatchEvent($event)"
153
- ></dsh-buttons>
154
- </div>
155
120
  </div>
121
+ <dsh-buttons
122
+ class="bri-modal-footer"
123
+ :list="$getOperationList(['canCancel', 'canConfirm'])"
124
+ @click="$dispatchEvent($event)"
125
+ ></dsh-buttons>
156
126
  </dsh-modal>
157
127
  </div>
158
128
  </template>
@@ -207,10 +177,8 @@
207
177
  return {
208
178
  _multiple: false,
209
179
  _highSearch: false,
210
- _isCascader: true,
211
180
  _changeOnSelect: true,
212
181
  _searchString: "",
213
-
214
182
  ...this.propsObj,
215
183
  ...this.commonDealPropsObj
216
184
  };
@@ -224,11 +192,6 @@
224
192
  inputIcon () {
225
193
  return this.multiple ? "ios-people" : "ios-person";
226
194
  },
227
-
228
- // 暂时没配置
229
- isCascader () {
230
- return this.selfPropsObj._isCascader;
231
- },
232
195
  changeOnSelect () {
233
196
  return this.selfPropsObj._changeOnSelect;
234
197
  },
@@ -239,7 +202,8 @@
239
202
  modalPropsObj () {
240
203
  return {
241
204
  title: "选择部门",
242
- class: `z-modal ${this.isCascader ? "selectDepartments-cascaderModal" : "selectDepartments-modal"}`,
205
+ class: "bri-modal-center",
206
+ width: 600,
243
207
  showSlotClose: false,
244
208
  closable: true
245
209
  };
@@ -335,7 +299,7 @@
335
299
  this.$https({
336
300
  url: {
337
301
  module: "company",
338
- name: this.isCascader ? "compDepartCascaderAll" : "compDepartIndex"
302
+ name: "compDepartCascaderAll"
339
303
  },
340
304
  params: {
341
305
  search: this.searchName
@@ -167,12 +167,11 @@
167
167
  </div>
168
168
 
169
169
  <!-- footer -->
170
- <div class="selectUsers-modal-wrap-footer">
171
- <dsh-buttons
172
- :list="$getOperationList(['canCancel', 'canConfirm'])"
173
- @click="$dispatchEvent($event)"
174
- ></dsh-buttons>
175
- </div>
170
+ <dsh-buttons
171
+ class="bri-modal-footer"
172
+ :list="$getOperationList(['canCancel', 'canConfirm'])"
173
+ @click="$dispatchEvent($event)"
174
+ ></dsh-buttons>
176
175
  </dsh-modal>
177
176
  </div>
178
177
  </template>
@@ -198,7 +197,8 @@
198
197
  modalPropsObj: {
199
198
  title: "选择成员",
200
199
  showSlotClose: false,
201
- closable: true
200
+ closable: true,
201
+ class: "bri-modal-center"
202
202
  },
203
203
  // 筛选
204
204
  searchData: {
@@ -34,14 +34,11 @@
34
34
  ></ve-table>
35
35
 
36
36
  <!-- loading -->
37
- <bri-loading v-if="isLoading" />
38
- <!-- empty -->
39
- <div
40
- v-else-if="!data.length"
37
+ <bri-loading
41
38
  class="bri-table-empty"
42
- >
43
- <slot name="empty">{{ noDataText }}</slot>
44
- </div>
39
+ :value="isLoading ? 1 : data.length? 0 : 2"
40
+ :noText="noDataText"
41
+ />
45
42
  </div>
46
43
  </template>
47
44
 
@@ -75,6 +72,7 @@
75
72
  rowKeyFieldName: "_id",
76
73
  scrollWidth: "0",
77
74
  borderY: true,
75
+ fixedHeader: true,
78
76
  cellSelectionOption: {
79
77
  enable: false
80
78
  },
@@ -134,7 +134,7 @@
134
134
  treeFormShow: false,
135
135
  treeFormPropsObj: {
136
136
  title: "添加节点",
137
- class: "z-modal"
137
+ class: "bri-modal-center"
138
138
  },
139
139
  treeFormData: {
140
140
  _key: "",
@@ -66,8 +66,8 @@
66
66
  .split("/")
67
67
  .map(item => item.length * (operationItem.size === "small" ? 12 : 14))
68
68
  ) + (
69
- operationItem.icon || operationItem.customIcon ? 20 : 0) + (
70
- operationItem.size === "small" ? 8 : 16); // 按钮的padding,故意多了2px保留余地
69
+ operationItem.icon || operationItem.customIcon ? 25 : 0
70
+ );
71
71
  };
72
72
 
73
73
  return this.operationList.map(operationItem => {
@@ -126,8 +126,8 @@
126
126
  // 漏在外部按钮的宽度
127
127
  this.selfOperationList
128
128
  .slice(0, this.selfOperationList.length > maxBtnNum ? maxBtnNum - 1 : this.selfOperationList.length)
129
- .reduce((total, operationItem) => total + operationItem.width, 0) +
130
- (this.selfOperationList.length > maxBtnNum ? 70 : 0) + // 出现更多按钮的宽度
129
+ .reduce((total, operationItem) => total + operationItem.width + 16, 0) +
130
+ (this.selfOperationList.length > maxBtnNum ? 69 : 0) + // 出现更多按钮的宽度
131
131
  (this.selfOperationList.length > 0 ? 40 : 0) + // 操作列的padding
132
132
  4 // 留出4px空间,避免麻烦问题
133
133
  , 80
@@ -147,6 +147,7 @@
147
147
  // TODO: 注意此处totalOperationList用的一定是表格行显示最多的操作按钮数组,有改动注意看此备注!!!
148
148
  return h("dsh-buttons", {
149
149
  props: {
150
+ class: "table-operation",
150
151
  list: totalOperationList,
151
152
  maxFlatNum: maxBtnNum - 1,
152
153
  itemClass: "table-operation-btn"
@@ -39,7 +39,7 @@
39
39
 
40
40
  <!-- 删除按钮 -->
41
41
  <Icon
42
- v-if="selfPropsObj.showSlotClose !== false"
42
+ v-if="selfPropsObj.showSlotClose"
43
43
  class="DshModal-close"
44
44
  type="md-close"
45
45
  size="20"
@@ -97,6 +97,8 @@
97
97
  // stickyDistance: 30, // 拖拽时,自动吸附屏幕边缘的临界距离
98
98
  // resetDragPosition: false, // Modal 再次打开时,是否重置拖拽的位置
99
99
  transfer: true,
100
+ showSlotClose: true, // 显示删除
101
+
100
102
  ...this.propsObj,
101
103
  class: [
102
104
  "DshModal",
@@ -114,7 +116,7 @@
114
116
  const widthOBj = {
115
117
  default: "750",
116
118
  small: "500",
117
- middle: "1000px",
119
+ middle: "60%",
118
120
  large: this.propsObj.draggable ? "100%" : "80%",
119
121
  auto: "auto"
120
122
  };
package/src/index.js CHANGED
@@ -11,11 +11,10 @@ import CN from "vue-easytable/libs/locale/lang/zh-CN.js";
11
11
  import DshBox from "./components/list/DshBox/DshBox.vue";
12
12
  import DshTable from "./components/list/DshBox/DshTable.vue";
13
13
  import DshList from "./components/list/DshBox/DshList.vue";
14
-
15
- import BriFlatTable from "./components/list/BriFlatTable.vue";
16
14
  import BriTable from "./components/list/BriTable.vue";
17
- import DshCascaderTable from "./components/list/DshCascaderTable.vue";
18
15
  import DshPage from "./components/list/DshPage.vue";
16
+ import BriFlatTable from "./components/list/BriFlatTable.vue";
17
+ // import DshCascaderTable from "./components/list/DshCascaderTable.vue";
19
18
 
20
19
  // form
21
20
  import DshForm from "./components/form/DshForm.vue";
@@ -34,22 +33,15 @@ import DshCheckbox from "./components/controls/base/DshCheckbox.vue";
34
33
  import DshCascader from "./components/controls/base/DshCascader/DshCascader.vue";
35
34
 
36
35
  // other
37
- import BriCode from "./components/other/BriCode.vue";
38
36
  import BriLoading from "./components/other/BriLoading.vue";
37
+ import BriSvg from "./components/other/BriSvg.vue";
39
38
  import DshAvatar from "./components/other/DshAvatar.vue";
40
- import DshBtnModal from "./components/other/DshBtnModal.vue";
41
- import DshColorPanel from "./components/other/DshColorPanel.vue";
42
- import DshEditPanel from "./components/other/DshEditPanel.vue";
43
- import DshMenu from "./components/other/DshMenu.vue";
44
- import DshMenuNav from "./components/other/DshMenuNav.vue";
45
39
 
46
40
  // small
47
41
  import BriButton from "./components/small/BriButton.vue";
48
42
  import BriDrawer from "./components/small/BriDrawer.vue";
49
43
  import BriTooltip from "./components/small/BriTooltip.vue";
50
44
  import DshButtons from "./components/small/DshButtons.vue";
51
- import DshCrumbs from "./components/small/DshCrumbs.vue";
52
- import DshCrumbsItem from "./components/small/DshCrumbsItem.vue";
53
45
  import DshDropdown from "./components/small/DshDropdown.vue";
54
46
  import DshIcons from "./components/small/DshIcons.vue";
55
47
  import DshModal from "./components/small/DshModal.vue";
@@ -91,9 +83,15 @@ import DshBack from "./components/controls/special/DshBack.vue";
91
83
  import DshUndeveloped from "./components/controls/special/DshUndeveloped.vue";
92
84
 
93
85
  // other
86
+ import DshMenuNav from "./components/other/DshMenuNav.vue";
87
+ import BriCode from "./components/other/BriCode.vue";
94
88
  import BriCollapseTree from "./components/other/BriCollapseTree.vue";
95
89
  import BriGantt from "./components/other/BriGantt.vue";
96
90
  import BriIframe from "./components/other/BriIframe.vue";
91
+ import DshColorPanel from "./components/other/DshColorPanel.vue";
92
+
93
+ // small
94
+ import DshBtnModal from "./components/small/DshBtnModal.vue";
97
95
 
98
96
  // !!!!!!挂载全局的组件,不是别写在这
99
97
  const map = {
@@ -104,10 +102,7 @@ const map = {
104
102
  DshBox,
105
103
  DshTable,
106
104
  DshList,
107
-
108
- BriFlatTable, // 可取消全局
109
105
  BriTable,
110
- DshCascaderTable, // 可取消全局
111
106
  DshPage,
112
107
 
113
108
  // form
@@ -129,19 +124,12 @@ const map = {
129
124
  // other
130
125
  BriLoading,
131
126
  DshAvatar,
132
- DshBtnModal,
133
- DshEditPanel,
134
- DshColorPanel,
135
- DshMenu,
136
- DshMenuNav,
137
127
 
138
128
  // small
139
129
  BriButton,
140
130
  BriDrawer,
141
131
  BriTooltip,
142
132
  DshButtons,
143
- DshCrumbs,
144
- DshCrumbsItem,
145
133
  DshDropdown,
146
134
  DshIcons,
147
135
  DshModal,
@@ -193,14 +181,14 @@ export {
193
181
  DshBox,
194
182
  DshTable,
195
183
  DshList,
184
+ BriTable,
185
+ DshPage,
186
+ BriFlatTable,
187
+ // DshCascaderTable,
196
188
 
197
189
  BriCard,
198
- BriFlatTable,
199
- BriTable,
200
190
  BriTree,
201
191
  BriTreeItem,
202
- DshCascaderTable,
203
- DshPage,
204
192
 
205
193
  // form
206
194
  DshForm,
@@ -234,26 +222,22 @@ export {
234
222
  selectDepartments,
235
223
 
236
224
  // other
237
- BriCode,
238
225
  BriLoading,
226
+ BriSvg,
239
227
  DshAvatar,
240
- DshBtnModal,
241
- DshColorPanel,
242
- DshEditPanel,
243
- DshMenu,
244
- DshMenuNav,
245
228
 
229
+ DshMenuNav,
230
+ BriCode,
246
231
  BriCollapseTree,
247
232
  BriGantt,
248
233
  BriIframe,
234
+ DshColorPanel,
249
235
 
250
236
  // small
251
237
  BriButton,
252
238
  BriDrawer,
253
239
  DshButtons,
254
240
  BriTooltip,
255
- DshCrumbs,
256
- DshCrumbsItem,
257
241
  DshDropdown,
258
242
  DshIcons,
259
243
  DshModal,
@@ -262,5 +246,7 @@ export {
262
246
  DshTags,
263
247
  DshTitle,
264
248
  DshRender,
265
- DshTdRender
249
+ DshTdRender,
250
+
251
+ DshBtnModal
266
252
  };
@@ -18,11 +18,10 @@
18
18
  }
19
19
  .dsh-subtip {
20
20
  width: 100%;
21
- // padding: 10px 5px;
22
21
  text-align: center;
23
22
  font-size: 12px;
24
23
  font-weight: 500;
25
- color: @textColor;
24
+ color: @placeholderColor;
26
25
  // background-color: #f3f3f3;
27
26
  }
28
27
  // 出现三个点
@@ -49,67 +49,67 @@
49
49
  }
50
50
  }
51
51
  });
52
- }
52
+ }
53
53
 
54
- &-disabled {
55
- .ivu-checkbox-disabled+span {
56
- color: #515a6e;
54
+ &-disabled {
55
+ .ivu-checkbox-disabled+span {
56
+ color: #515a6e;
57
+ }
57
58
  }
58
- }
59
59
 
60
- &-scroll {
61
- overflow-x: auto;
62
- overflow-y: hidden;
63
- white-space: nowrap;
60
+ &-scroll {
61
+ overflow-x: auto;
62
+ overflow-y: hidden;
63
+ white-space: nowrap;
64
64
 
65
- &::-webkit-scrollbar {
66
- height: 6px;
67
- }
65
+ &::-webkit-scrollbar {
66
+ height: 6px;
67
+ }
68
68
 
69
- &:-webkit-scrollbar-thumb {
70
- border-radius: 3px;
71
- background: rgba(51, 51, 51, .1);
72
- background-clip: border-box;
69
+ &:-webkit-scrollbar-thumb {
70
+ border-radius: 3px;
71
+ background: rgba(51, 51, 51, .1);
72
+ background-clip: border-box;
73
+ }
73
74
  }
74
75
  }
75
- }
76
76
 
77
- &-item {}
77
+ &-item {}
78
78
 
79
- &-show {}
79
+ &-show {}
80
80
 
81
- .ivu-select-multiple {
82
- .ivu-select-selection {
83
- height: 32px;
84
- .dsh-flex-row-between-center();
81
+ .ivu-select-multiple {
82
+ .ivu-select-selection {
83
+ height: 32px;
84
+ .dsh-flex-row-between-center();
85
85
 
86
- &>div {
87
- width: 100%;
88
- height: 100%;
89
- word-break: keep-all;
90
- white-space: nowrap;
91
- overflow: auto;
92
- .bri-scrollbar3();
86
+ & > div {
87
+ width: 100%;
88
+ height: 100%;
89
+ word-break: keep-all;
90
+ white-space: nowrap;
91
+ overflow: auto;
92
+ .bri-scrollbar3();
93
93
 
94
- .ivu-tag {
95
- margin: 2px 4px 0px 0px;
96
- background-color: @borderColor;
94
+ .ivu-tag {
95
+ margin: 2px 4px 0px 0px;
96
+ background-color: @borderColor;
97
+ }
97
98
  }
98
99
  }
99
- }
100
100
 
101
- &.ivu-select-disabled {
102
- .ivu-select-selection {
103
- &>div {
104
- .ivu-tag {
105
- background-color: @border-disabled;
101
+ &.ivu-select-disabled {
102
+ .ivu-select-selection {
103
+ & > div {
104
+ .ivu-tag {
105
+ background-color: @border-disabled;
106
+ }
106
107
  }
107
108
  }
108
109
  }
109
- }
110
110
 
111
- .ivu-select-item-selected:after {
112
- content: none;
111
+ .ivu-select-item-selected:after {
112
+ content: none;
113
+ }
113
114
  }
114
- }
115
115
  }