cloud-web-corejs 1.0.54-dev.1 → 1.0.54-dev.100

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 (136) hide show
  1. package/package.json +9 -3
  2. package/src/components/VabUpload/index.vue +2 -1
  3. package/src/components/VabUpload/mixins.js +1 -1
  4. package/src/components/VabUpload/view.vue +2 -1
  5. package/src/components/excelExport/exportFieldDialog.vue +211 -0
  6. package/src/components/excelExport/index.js +6 -5
  7. package/src/components/excelExport/index.vue +8 -5
  8. package/src/components/excelExport/mixins.js +3 -1
  9. package/src/components/excelImport/index.js +13 -13
  10. package/src/components/excelImport/index.vue +9 -6
  11. package/src/components/excelImport/mixins.js +1 -1
  12. package/src/components/fileLibrary/fileObjAuthDialog.vue +125 -103
  13. package/src/components/fileLibrary/fileObjAuthEditDialog.vue +6 -1
  14. package/src/components/fileLibrary/fileObjNotifyEdit.vue +192 -0
  15. package/src/components/fileLibrary/filterDialog.vue +379 -0
  16. package/src/components/fileLibrary/index.vue +28 -17
  17. package/src/components/fileLibrary/mixins/fileObjAuthDialogMixin.js +27 -7
  18. package/src/components/fileLibrary/mixins/fileObjAuthEditDialogMixin.js +4 -1
  19. package/src/components/fileLibrary/mixins/fileObjAuthEditMixin.js +1 -1
  20. package/src/components/fileLibrary/mixins/indexMixins.js +68 -15
  21. package/src/components/fileLibrary/mixins/propertiesDialogMixins.js +2 -1
  22. package/src/components/fileLibrary/propertiesDialog.vue +4 -0
  23. package/src/components/jsonImport/mixins.js +1 -1
  24. package/src/components/onlineTalk/index.vue +327 -5
  25. package/src/components/onlineTalk/mixins.js +1 -1
  26. package/src/components/table/index.js +2 -1
  27. package/src/components/tempStorage/tempStorageDialog.vue +2 -2
  28. package/src/components/wf/wf.js +1737 -1
  29. package/src/components/wf/wfUtil.js +278 -1
  30. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +1 -0
  31. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +1 -0
  32. package/src/components/xform/form-designer/form-widget/dialog/formFieldDialog.vue +2 -2
  33. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +35 -5
  34. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +3 -1
  35. package/src/components/xform/form-designer/form-widget/dialog/preformDialog.vue +2 -2
  36. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +8 -5
  37. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +2 -2
  38. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +6 -2
  39. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +1 -0
  40. package/src/components/xform/form-designer/form-widget/field-widget/echart-bar-widget.vue +1 -1
  41. package/src/components/xform/form-designer/form-widget/field-widget/echart-category-widget.vue +1 -1
  42. package/src/components/xform/form-designer/form-widget/field-widget/echart-pie-widget.vue +1 -1
  43. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +989 -1
  44. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-bar-mixin.js +49 -8
  45. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-category-mixin.js +61 -88
  46. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-pie-mixin.js +13 -0
  47. package/src/components/xform/form-designer/form-widget/field-widget/project-tag-widget.vue +26 -2
  48. package/src/components/xform/form-designer/form-widget/field-widget/table-export-button-widget.vue +6 -1
  49. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +79 -0
  50. package/src/components/xform/form-designer/indexMixin.js +864 -1
  51. package/src/components/xform/form-designer/setting-panel/form-setting.vue +43 -3
  52. package/src/components/xform/form-designer/setting-panel/indexMixin.js +322 -1
  53. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +6 -0
  54. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/onCheckboxChange-editor.vue +1 -1
  55. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +13 -0
  56. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/eventMixin.js +2 -2
  57. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onAfterConfirmFile-editor.vue +32 -0
  58. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onClick-editor.vue +2 -2
  59. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +20 -1
  60. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultTime-editor.vue +27 -0
  61. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-bar-editor.vue +185 -69
  62. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-category-editor.vue +188 -86
  63. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-pie-editor.vue +84 -39
  64. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import-button-editor.vue +3 -0
  65. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/table-export-button-editor.vue +26 -7
  66. package/src/components/xform/form-designer/setting-panel/property-editor/placeholder-editor.vue +1 -1
  67. package/src/components/xform/form-designer/setting-panel/property-editor/project-tag-editor.vue +66 -0
  68. package/src/components/xform/form-designer/setting-panel/property-editor/showRuleFlag-editor.vue +83 -6
  69. package/src/components/xform/form-designer/setting-panel/property-editor/wfFlag-editor.vue +269 -27
  70. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +2 -0
  71. package/src/components/xform/form-designer/setting-panel/wfObjConfigDialog.vue +189 -0
  72. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +57 -7
  73. package/src/components/xform/form-render/container-item/data-table-item.vue +5 -4
  74. package/src/components/xform/form-render/container-item/data-table-mixin.js +1881 -1
  75. package/src/components/xform/form-render/indexMixin.js +1703 -1
  76. package/src/components/xform/utils/emitter.js +4 -4
  77. package/src/layout/components/Sidebar/default.vue +1234 -1222
  78. package/src/layout/components/notify_message/unreadDialog.vue +11 -5
  79. package/src/mixins/selectDialog/index.js +1 -1
  80. package/src/router/modules/customer.js +15 -0
  81. package/src/store/config/index.js +1 -1
  82. package/src/store/modules/permission.js +1 -1
  83. package/src/store/modules/user.js +302 -1
  84. package/src/utils/pddLog.js +103 -0
  85. package/src/utils/request.js +28 -28
  86. package/src/utils/vab.js +1 -1
  87. package/src/views/bd/setting/bd_attach_setting/edit.vue +1 -1
  88. package/src/views/bd/setting/bd_attach_setting/mixins/edit.js +1 -1
  89. package/src/views/bd/setting/form_script/list1.vue +1 -2
  90. package/src/views/bd/setting/form_template/batchWfObjConfigDialog.vue +105 -0
  91. package/src/views/bd/setting/form_template/edit.vue +6 -2
  92. package/src/views/bd/setting/form_template/editWfObjConfigDialog.vue +2 -2
  93. package/src/views/bd/setting/form_template/list.vue +5 -4
  94. package/src/views/bd/setting/form_template/mixins/batchWfObjConfigDialog.js +4 -0
  95. package/src/views/bd/setting/form_template/mixins/edit.js +1 -1
  96. package/src/views/bd/setting/form_template/mixins/list.js +1 -1
  97. package/src/views/bd/setting/form_template/mixins/wf_list.js +434 -0
  98. package/src/views/bd/setting/form_template/wfObjConfigDialog.vue +254 -0
  99. package/src/views/bd/setting/form_template/wf_list.vue +127 -0
  100. package/src/views/bd/setting/menu_kind/authDialog.vue +1 -1
  101. package/src/views/bd/setting/menu_kind/mixins/authDialog.js +1 -1
  102. package/src/views/bd/setting/table_model/edit.vue +1 -1
  103. package/src/views/bd/setting/table_model/list.vue +5 -4
  104. package/src/views/bd/setting/table_model/mixins/list.js +14 -14
  105. package/src/views/user/area/dialog.vue +21 -8
  106. package/src/views/user/bill_setting/edit.vue +1 -1
  107. package/src/views/user/bill_setting/list.vue +1 -1
  108. package/src/views/user/common_attribute/itemEdit.vue +2 -2
  109. package/src/views/user/common_attribute/list.vue +1 -1
  110. package/src/views/user/common_script/edit.vue +1 -1
  111. package/src/views/user/common_script/list.vue +1 -1
  112. package/src/views/user/company_info/dialog.vue +19 -9
  113. package/src/views/user/company_info/edit.vue +9 -1
  114. package/src/views/user/extend_datasource/dialog.vue +1 -0
  115. package/src/views/user/extend_datasource/edit.vue +3 -0
  116. package/src/views/user/extend_datasource/list.vue +2 -1
  117. package/src/views/user/file_type/edit.vue +30 -1
  118. package/src/views/user/file_type/list.vue +28 -0
  119. package/src/views/user/groups/edit.vue +2 -0
  120. package/src/views/user/groups/list.vue +1 -0
  121. package/src/views/user/home/dev.vue +29 -0
  122. package/src/views/user/home/index.vue +20 -8
  123. package/src/views/user/login/default.vue +4 -2
  124. package/src/views/user/outLink/form_view.vue +39 -12
  125. package/src/views/user/outLink/index.vue +17 -0
  126. package/src/views/user/outLink/view.vue +39 -13
  127. package/src/views/user/push_setting/list.vue +2 -2
  128. package/src/views/user/system_notice/infoDialog.vue +25 -1
  129. package/src/views/user/user/edit.vue +9 -9
  130. package/src/views/user/user/form_edit.vue +117 -49
  131. package/src/views/user/user/form_info.vue +210 -0
  132. package/src/views/user/user/form_list.vue +1 -0
  133. package/src/views/user/user/list.vue +563 -563
  134. package/src/views/user/wf/wf_obj_config/edit.vue +5 -1
  135. package/src/views/user/wf/wf_obj_config/list.vue +34 -3
  136. package/src/views/user/wf/wf_obj_config/wfBizDataSettingDialog.vue +292 -0
@@ -88,6 +88,10 @@
88
88
  clearable></el-input>
89
89
  </td>
90
90
  </tr>
91
+ <tr>
92
+ <th>{{ $t1('是否表单') }}</th>
93
+ <td>{{ wfObjConfig.forms ? $t1('是') : $t1('否') }}</td>
94
+ </tr>
91
95
  <tr>
92
96
  <th>{{ $t1('创建人') }}</th>
93
97
  <td>{{ wfObjConfig.createBy }}</td>
@@ -122,7 +126,7 @@ export default {
122
126
  tabIndex: 0,
123
127
  isEdit: false,
124
128
  dataId: '',
125
- wfObjConfig: {serviceId: null},
129
+ wfObjConfig: {serviceId: null, forms: false},
126
130
  showCompanyDialog: false,
127
131
  m1Option: {},
128
132
  serviceIds: []
@@ -110,6 +110,9 @@
110
110
  <positionDialog v-if="showPositionDialog" :visiable.sync="showPositionDialog" @confirm="confirmPosition"/>
111
111
  <scriptDescriptionDialog path="static/readme/Wf.txt" v-if="showScriptDescriptionDialog"
112
112
  :visiable.sync="showScriptDescriptionDialog"></scriptDescriptionDialog>
113
+ <wfBizDataSettingDialog v-if="showWfBizDataSettingDialog" :visiable.sync="showWfBizDataSettingDialog"
114
+ @confirm="confirmWfBizDataSettingDialog"
115
+ :objConfigItem="objConfigItem" :serviceId="currentRow.serviceId"></wfBizDataSettingDialog>
113
116
  </div>
114
117
  </template>
115
118
  <script>
@@ -123,6 +126,8 @@ import positionDialog from '../../../../views/user/position/dialog.vue';
123
126
  import wfParamEdit from '../../../../views/user/wf/wf_param/edit'
124
127
  import scriptDescriptionDialog from '@base/components/scriptDescription/dialog'
125
128
  import wfDiyAttributeEdit from '../../../../views/user/wf/wf_diy_attribute/edit'
129
+ import wfBizDataSettingDialog from "./wfBizDataSettingDialog";
130
+
126
131
 
127
132
  export default {
128
133
  name: 'wf_obj_config:list',
@@ -133,7 +138,8 @@ export default {
133
138
  userDialog,
134
139
  positionDialog,
135
140
  scriptDescriptionDialog,
136
- wfDiyAttributeEdit
141
+ wfDiyAttributeEdit,
142
+ wfBizDataSettingDialog
137
143
  },
138
144
  created() {
139
145
  },
@@ -180,7 +186,10 @@ export default {
180
186
  wfAssignFormTemplateCallback: null,
181
187
 
182
188
  showScriptDescriptionDialog: false,
183
- showWfDiyAttributeEdit: false
189
+ showWfDiyAttributeEdit: false,
190
+
191
+ objConfigItem: null,
192
+ showWfBizDataSettingDialog: false
184
193
  };
185
194
  },
186
195
  watch: {
@@ -284,6 +293,21 @@ export default {
284
293
  title: this.$t1('备注'),
285
294
  width: 150
286
295
  },
296
+
297
+ {
298
+ field: 'forms',
299
+ title: this.$t1('是否表单'),
300
+ width: 150,
301
+ slots: {
302
+ default: ({row}) => {
303
+ if (row.forms) {
304
+ return [<div class="txt-status">{this.$t1('是')}</div>];
305
+ } else {
306
+ return [<div class="txt-status s-3">{this.$t1('否')}</div>];
307
+ }
308
+ }
309
+ }
310
+ },
287
311
  {
288
312
  field: 'createDate',
289
313
  title: this.$t1('创建时间'),
@@ -443,7 +467,7 @@ export default {
443
467
  width: 200
444
468
  },
445
469
  {
446
- width: 150,
470
+ width: 100,
447
471
  fixed: 'right',
448
472
  sortable: false,
449
473
  title: '',
@@ -593,6 +617,13 @@ export default {
593
617
  this.showScriptDescriptionDialog = true;
594
618
  };
595
619
  },
620
+ openWfBizDataSettingDialog(row) {
621
+ this.objConfigItem = row;
622
+ this.showWfBizDataSettingDialog = true
623
+ },
624
+ confirmWfBizDataSettingDialog(rows) {
625
+
626
+ }
596
627
  }
597
628
  };
598
629
  </script>
@@ -0,0 +1,292 @@
1
+ <template>
2
+ <div>
3
+ <el-dialog
4
+ :title="$t1('过程更改业务数据')"
5
+ :append-to-body="true"
6
+ :modal-append-to-body="true"
7
+ :close-on-click-modal="false"
8
+ :visible.sync="showDialog"
9
+ :modal="false"
10
+ custom-class="dialog-style list-dialog dialog-checkbox pd_0"
11
+ width="1200px"
12
+ @close="dialogClose"
13
+ v-el-drag-dialog
14
+ v-el-dialog-center
15
+ >
16
+ <div class="cont">
17
+ <div class="grid-height" style="height: 500px">
18
+ <vxe-grid
19
+ class="is-pointer"
20
+ ref="table-m1"
21
+ :data="tableData"
22
+ v-bind="vxeOption"
23
+ @resizable-change="$vxeTableUtil.onColumnWitchChange"
24
+ @custom="$vxeTableUtil.customHandle"
25
+ >
26
+ <template #form>
27
+ <div class="clearfix screen-btns">
28
+ <div class="fl">
29
+ <vxe-button status="primary" class="button-sty" icon="el-icon-plus" @click="addItem">
30
+ {{ $t1('新增') }}
31
+ </vxe-button>
32
+ </div>
33
+ <div class="fl screen-breadcrumb" style="margin-left: 30px;">
34
+ <span style="font-size: 12px;">{{ $t1('流程模板名称') }}:</span>
35
+ {{ objConfigItem.modelName }}
36
+ </div>
37
+ </div>
38
+ </template>
39
+ <template #user="{row,rowIndex}">
40
+ <el-input
41
+ class="search-input"
42
+ v-model="row.nickName"
43
+ clearable
44
+ @clear="
45
+ row.userId = null;
46
+ "
47
+ v-if="!row._isParent"
48
+ v-el-readonly
49
+ >
50
+ <i slot="suffix" class="el-input__icon el-icon-search" @click="openUserRowDialog(row,rowIndex)"></i>
51
+ </el-input>
52
+ <template v-else>{{ row.nickName }}</template>
53
+ </template>
54
+ <template #switch="{row,column,rowIndex}">
55
+ <el-switch v-model="row[column.field]" :key="column.field+rowIndex" :active-value="1"
56
+ :inactive-value="0" :disabled="column.params.disabled"></el-switch>
57
+ </template>
58
+ </vxe-grid>
59
+ </div>
60
+ </div>
61
+ <span slot="footer" class="dialog-footer">
62
+ <el-button type="primary" plain class="button-sty" @click="dialogClose">
63
+ <i class="el-icon-close el-icon"></i>
64
+ {{ $t1('取 消') }}
65
+ </el-button>
66
+ <el-button type="primary" @click="saveData" class="button-sty">
67
+ <i class="el-icon-check el-icon"></i>
68
+ {{ $t1('确 定') }}
69
+ </el-button>
70
+ </span>
71
+ </el-dialog>
72
+ </div>
73
+ </template>
74
+
75
+ <script>
76
+
77
+ export default {
78
+ props: {
79
+ objConfigItem: Object,
80
+ serviceId: String
81
+ },
82
+ components: {},
83
+ computed: {
84
+ current_prefix() {
85
+ return '/' + this.serviceId;
86
+ }
87
+ },
88
+ async mounted() {
89
+ this.initTableList();
90
+ },
91
+ data() {
92
+ let that = this;
93
+ return {
94
+ showDialog: true,
95
+ activeName: 'second',
96
+ value10: '',
97
+ dataId: '',
98
+ showEdit: false,
99
+ formData: {
100
+ nickName: null,
101
+ },
102
+ vxeOption: {},
103
+ showUserDialog: false,
104
+ showPositionDialog: false,
105
+ showSaleOrgDialog: false,
106
+ operateIndex: 0,
107
+ showViewDialog: false,
108
+
109
+ tableData: [],
110
+ showUserRowDialog: false,
111
+ showUserAddDialog: false,
112
+ currentRow: null,
113
+ isDev: true
114
+
115
+ };
116
+ },
117
+ methods: {
118
+ searchEvent() {
119
+ this.$refs['table-m1'].commitProxy('reload');
120
+ },
121
+ resetEvent() {
122
+ this.formData = {};
123
+ this.$refs['table-m1'].commitProxy('reload');
124
+ },
125
+ initTableList() {
126
+ let that = this;
127
+ let tableOption = {
128
+ vue: this,
129
+ tableRef: 'table-m1',
130
+ tableName: 'user_wf-objConfig-wfBizDataSetting-m1',
131
+ config: {
132
+ height: "auto"
133
+ },
134
+ columns: [
135
+ {type: 'checkbox', width: 48, resizable: false, fixed: 'left'},
136
+ {
137
+ title: this.$t1('流程动作'),
138
+ field: 'action',
139
+ width: 150,
140
+ slots: {
141
+ default: ({row}) => {
142
+ return [
143
+ <el-select v-model={row.action} clearable>
144
+ <el-option label="流程启动" value="start"></el-option>
145
+ <el-option label="流程中断" value="interrupt"></el-option>
146
+ <el-option label="流程完成" value="end"></el-option>
147
+ </el-select>
148
+ ];
149
+ }
150
+ }
151
+ },
152
+ {
153
+ title: this.$t1('数据库表名'),
154
+ field: 'tableName',
155
+ width: 250,
156
+ slots: {
157
+ default: ({row}) => {
158
+ return [
159
+ <el-input v-model={row.tableName} clearable></el-input>
160
+ ];
161
+ }
162
+ }
163
+ },
164
+ {
165
+ title: this.$t1('数据库字段名'),
166
+ field: 'tableField',
167
+ width: 250,
168
+ slots: {
169
+ default: ({row}) => {
170
+ return [
171
+ <el-input v-model={row.tableField} clearable></el-input>
172
+ ];
173
+ }
174
+ }
175
+ },
176
+ {
177
+ title: this.$t1('设置的值'),
178
+ field: 'toValue',
179
+ width: 250,
180
+ slots: {
181
+ default: ({row}) => {
182
+ return [
183
+ <el-input v-model={row.toValue} clearable></el-input>
184
+ ];
185
+ }
186
+ }
187
+ },
188
+ {
189
+ width: 100,
190
+ fixed: 'right',
191
+ title: '',
192
+ sortable: false,
193
+ slots: {
194
+ default: ({row, rowIndex, $table}) => {
195
+ return [
196
+ <a
197
+ href="javascript:void(0);"
198
+ class="a-link"
199
+ onClick={() => {
200
+ this.tableData.splice(rowIndex, 1)
201
+ }}
202
+ >
203
+ <el-tooltip enterable={false} effect="dark" content={this.$t1('删除')} placement="top"
204
+ popper-class="tooltip-skin">
205
+ <i class="el-icon-delete"/>
206
+ </el-tooltip>
207
+ </a>
208
+ ]
209
+ }
210
+ }
211
+ }
212
+ ]
213
+ };
214
+ this.$vxeTableUtil.initVxeTable(tableOption).then(opts => {
215
+ this.vxeOption = opts;
216
+ });
217
+ this.initData();
218
+ },
219
+ initData() {
220
+ this.$http({
221
+ // aes: true,
222
+ url: this.current_prefix + '/wf_biz_data_setting/list',
223
+ method: `post`,
224
+ data: {
225
+ objConfigItemId: this.objConfigItem.id,
226
+ modelId: this.objConfigItem.modelId,
227
+ },
228
+ isLoading: true,
229
+ modalStrictly: true,
230
+ success: res1 => {
231
+ let tableData = res1.objx || [];
232
+ this.tableData = tableData;
233
+
234
+ }
235
+ });
236
+ },
237
+ dialogClose() {
238
+ this.showDialog = false
239
+ this.$emit('update:visiable', false)
240
+ },
241
+ dialogConfirm() {
242
+ this.$emit('confirm');
243
+ this.$emit('update:visiable', false);
244
+ },
245
+ addItem() {
246
+ let row = this.createRow();
247
+ this.tableData.push(row)
248
+ },
249
+ saveData() {
250
+ this.$baseConfirm(this.$t1('您确定要保存吗?')).then(() => {
251
+ var url = this.current_prefix + `/wf_biz_data_setting/saveUpdates`;
252
+ this.$http({
253
+ aes: true,
254
+ url: url,
255
+ method: `post`,
256
+ data: {
257
+ objConfigItemId: this.objConfigItem.id,
258
+ modelId: this.objConfigItem.modelId,
259
+ wfBizDataSettingDTOs: this.tableData
260
+ },
261
+ isLoading: true,
262
+ success: res => {
263
+ this.$message({
264
+ message: res.content,
265
+ type: 'success',
266
+ duration: 500,
267
+ onClose: t => {
268
+ this.dialogConfirm()
269
+ }
270
+ });
271
+ }
272
+ });
273
+ });
274
+ },
275
+ createRow() {
276
+ let row = {
277
+ objConfigItemId: this.objConfigItem.id,
278
+ modelId: this.objConfigItem.modelId,
279
+ action: 'start',
280
+ tableName: null,
281
+ tableField: null,
282
+ toValue: null
283
+ }
284
+ return row;
285
+ }
286
+ }
287
+ }
288
+ </script>
289
+
290
+ <style scoped>
291
+
292
+ </style>