centaline-data-driven-v3 0.1.10 → 0.1.12

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "centaline-data-driven-v3",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "private": false,
5
5
  "description": "centaline-data-driven-v3",
6
6
  "main": "dist/centaline-data-driven-v3.umd.js",
@@ -9,7 +9,7 @@
9
9
  </template>
10
10
  </van-field>
11
11
  <van-field clearable :type="model.inputType" :rows="model.rows" v-bind="model.attrs" v-model="model.code1"
12
- :readonly="model.readonly" :disabled="model.locked" :maxlength="model.maxValue1"
12
+ :readonly="model.readonly" :disabled="model.locked" :maxlength="model.controlType !== Enum.ControlType.NumericTextBox ? model.maxValue1 : ''"
13
13
  :show-word-limit="model.showWordLimit" :label-align="model.inputType == 'textarea' ? 'top' : 'left'"
14
14
  @input="input()" @blur="change()" class="ct-text" autocomplete="off">
15
15
  <template #label v-if="model.showLabel && model.controlLabel">
@@ -44,6 +44,18 @@ const props = defineProps({
44
44
  source: Object,
45
45
  })
46
46
  const model = initData(props, TextBox)
47
+ model.value.selfValidExcute = () => {
48
+ model.value.valid = true;
49
+ if (model.value.controlType === Enum.ControlType.NumericTextBox) {
50
+ if (model.value.minValue1 && model.value.code1 < parseFloat(model.value.minValue1)) {
51
+ model.value.validMessage = "最小值为" + model.value.minValue1 + "";
52
+ model.value.valid = false;
53
+ return false;
54
+ }
55
+
56
+ }
57
+ return model.value.valid;
58
+ }
47
59
  //弹出选择列表
48
60
  function popupSearchListHandle() {
49
61
  let isSingle = model.value.moreActionRouter.isSingle
@@ -1,11 +1,12 @@
1
1
  <template>
2
2
  <ct-field :vmodel="model">
3
3
  <template #Control>
4
- <el-select-v2 ref="refselect" :key="model.itemKey" v-model="model.value" :options="model.options" :no-data-text="nodatatext"
5
- :props="model.optionAttrs" v-bind="model.attrs" :disabled="model.locked" clearable @change="change"
6
- :placeholder="model.placeholder" @visible-change="visibleChange" @clear="clear"
7
- :filterable="model.filterable" :multiple="model.multiple" class="fieldControl" :height="300"
8
- @click="clickHandler" :class="[model.moreActionRouter ? 'selectmore' : '', open ? 'open' : '']"
4
+ <el-select-v2 ref="refselect" :key="model.itemKey" v-model="model.value" :options="model.options"
5
+ :no-data-text="nodatatext" :props="model.optionAttrs" v-bind="model.attrs" :disabled="model.locked"
6
+ clearable @change="change" :placeholder="model.placeholder" @visible-change="visibleChange"
7
+ @clear="clear" :filterable="model.filterable" :multiple="model.multiple" class="fieldControl"
8
+ :height="300" @click="clickHandler"
9
+ :class="[model.moreActionRouter ? 'selectmore' : '', open ? 'open' : '']"
9
10
  :filter-method="debouncedRemoteMethod" @compositionstart="handleCompositionStart"
10
11
  @compositionend="handleCompositionEnd">
11
12
  <template #default="{ item }">
@@ -27,9 +28,8 @@
27
28
  </el-select-v2>
28
29
  <template v-if="model.flagaFterText">
29
30
  <el-input type="text" v-model="model.code2" v-bind="model.attrs" @change="changeHandler(model, emit)"
30
- :disabled="model.locked" :rows="model.rows" :readonly="model.readonly"
31
- :maxlength="model.maxValue1" :show-word-limit="model.showWordLimit" clearable
32
- class="fieldControl ml10">
31
+ :disabled="model.locked" :rows="model.rows" :readonly="model.readonly" :maxlength="model.maxValue1"
32
+ :show-word-limit="model.showWordLimit" clearable class="fieldControl ml10">
33
33
  </el-input>
34
34
  </template>
35
35
  </template>
@@ -61,17 +61,17 @@ const refselect = ref()
61
61
  const open = ref(false)
62
62
  const isComposing = ref(false);
63
63
  const nodatatext = ref(' ')
64
- model.value.itemKey=Math.random();
64
+ model.value.itemKey = Math.random();
65
65
  let cancelTokenSource = null; // 用于存储取消令牌
66
66
 
67
- const qrtimer=ref(null)
68
- onBeforeUnmount(()=>{
69
- model.value=null
70
- refselect.value=null
71
- if (qrtimer.value) {
72
- clearTimeout(qrtimer.value);
73
- qrtimer.value = null;
74
- }
67
+ const qrtimer = ref(null)
68
+ onBeforeUnmount(() => {
69
+ model.value = null
70
+ refselect.value = null
71
+ if (qrtimer.value) {
72
+ clearTimeout(qrtimer.value);
73
+ qrtimer.value = null;
74
+ }
75
75
  })
76
76
 
77
77
  //下拉框出现/隐藏时触发
@@ -97,55 +97,55 @@ function visibleChange(visible) {
97
97
  //获取数据列表
98
98
  function getOptions(key) {
99
99
  if (cancelTokenSource) {
100
- // 取消上一次未完成的请求
101
- cancelTokenSource.cancel('取消上一次请求');
100
+ // 取消上一次未完成的请求
101
+ cancelTokenSource.cancel('取消上一次请求');
102
102
  }
103
103
 
104
104
  // 创建新的取消令牌
105
105
  cancelTokenSource = Axios.CancelToken.source();
106
- if (!isComposing.value &&!model.value.moreActionRouter) {
107
- model.value.getOptions(props.parameterAction, key,cancelTokenSource, function (data) {
108
- if(data){
109
- data.forEach((v) => {
110
- let item = model.value.globalOptions.find((v1) => {
111
- return v1.code === v.code && v1.locked;
106
+ if (!isComposing.value && !model.value.moreActionRouter) {
107
+ model.value.getOptions(props.parameterAction, key, cancelTokenSource, function (data) {
108
+ if (data) {
109
+ data.forEach((v) => {
110
+ let item = model.value.globalOptions.find((v1) => {
111
+ return v1.code === v.code && v1.locked;
112
+ });
113
+ if (item) {
114
+ v.locked = true
115
+ }
116
+ v.label = v.displayName || v.name
117
+ v.value = v.code
118
+ v.disabled = v.locked
119
+ if (v.options) {
120
+ let data1 = v.options;
121
+ data1.forEach((v2) => {
122
+ let item1 = model.value.globalOptions.find((v3) => {
123
+ return v3.code === v2.code && v3.locked;
124
+ });
125
+ if (item1) {
126
+ v2.locked = true
127
+ }
128
+ v2.label = v2.displayName || v2.name
129
+ v2.value = v2.code
130
+ v2.disabled = v2.locked
131
+ });
132
+ }
112
133
  });
113
- if (item) {
114
- v.locked = true
134
+ if (JSON.stringify(model.value.options) != JSON.stringify(data)) {
135
+ model.value.options = data;
115
136
  }
116
- v.label = v.displayName || v.name
117
- v.value = v.code
118
- v.disabled = v.locked
119
- if (v.options) {
120
- let data1 = v.options;
121
- data1.forEach((v2) => {
122
- let item1 = model.value.globalOptions.find((v3) => {
123
- return v3.code === v2.code && v3.locked;
124
- });
125
- if (item1) {
126
- v2.locked = true
127
- }
128
- v2.label = v2.displayName || v2.name
129
- v2.value = v2.code
130
- v2.disabled = v2.locked
131
- });
137
+
138
+ if (data.length == 0) {
139
+ nodatatext.value = common.LocalizedString('无数据', '無數據');
132
140
  }
133
- });
134
- if (JSON.stringify(model.value.options) != JSON.stringify(data)) {
135
- model.value.options = data;
136
- }
137
141
 
138
- if(data.length==0){
139
- nodatatext.value = common.LocalizedString('无数据', '無數據');
142
+ nextTick(function () {
143
+ setminWidth()
144
+ });
145
+ }
146
+ else {
147
+ nodatatext.value = common.LocalizedString('无数据', '無數據');
140
148
  }
141
-
142
- nextTick(function () {
143
- setminWidth()
144
- });
145
- }
146
- else{
147
- nodatatext.value = common.LocalizedString('无数据', '無數據');
148
- }
149
149
  })
150
150
  }
151
151
 
@@ -155,7 +155,7 @@ function debounce(func, delay) {
155
155
  return function () {
156
156
  const context = this;
157
157
  const args = arguments;
158
- if(qrtimer.value)clearTimeout(qrtimer.value);
158
+ if (qrtimer.value) clearTimeout(qrtimer.value);
159
159
  qrtimer.value = setTimeout(() => {
160
160
  func.apply(context, args);
161
161
  }, delay);
@@ -171,6 +171,9 @@ function change(val) {
171
171
  model.value.value = val
172
172
  model.value.itemKey = Math.random()
173
173
  }
174
+ else {
175
+ val = ''
176
+ }
174
177
  }
175
178
  model.value.setcode(val)
176
179
  changeHandler(model.value, emit)
@@ -227,13 +230,13 @@ function setminWidth() {
227
230
  let maxLength = -1;
228
231
  let text;
229
232
  for (let item of model.value.options) {
230
- if (item.name) {
231
- if (item.name.length > maxLength) {
232
- maxLength = item.name.length;
233
- text = item.name;
233
+ if (item.name) {
234
+ if (item.name.length > maxLength) {
235
+ maxLength = item.name.length;
236
+ text = item.name;
237
+ }
234
238
  }
235
- }
236
- }
239
+ }
237
240
 
238
241
  let span = document.createElement('span');
239
242
  span.innerText = text;
@@ -241,12 +244,12 @@ function setminWidth() {
241
244
  span.style.width = 'auto';
242
245
  span.style.fontSize = '17px';
243
246
  document.body.appendChild(span);
244
-
247
+
245
248
  if ((span.getBoundingClientRect().width + 40) <= refselect.value.selectRef.offsetWidth) {
246
- refselect.value.popperSize = refselect.value.selectRef.offsetWidth;
249
+ refselect.value.popperSize = refselect.value.selectRef.offsetWidth;
247
250
  }
248
- else{
249
- refselect.value.popperSize = span.getBoundingClientRect().width + 40;
251
+ else {
252
+ refselect.value.popperSize = span.getBoundingClientRect().width + 40;
250
253
  }
251
254
 
252
255
  document.body.removeChild(span);
@@ -45,8 +45,8 @@ defineExpose({
45
45
  </script>
46
46
  <style scoped>
47
47
  .el-date-editor {
48
- height: 24px;
49
- line-height: 24px;
48
+ height: 26px;
49
+ line-height: 26px;
50
50
  }
51
51
 
52
52
  .el-range-input {
@@ -91,117 +91,121 @@
91
91
  @drop="drop($event, row, column, 'table')" @dragover.prevent
92
92
  @dragenter="dragenter($event, column, 'table')"
93
93
  @dragleave="dragleave($event, column, 'table')">
94
- <!--操作列-->
95
- <div v-if="column.id === 'operation'" class="div_allinline"
96
- :class="column.autoRowHeight ? 'lineFeedCell' : 'cell'"
97
- style="float: left;">
98
- <template v-for="(router, rowRouterIndex) in getRowRouterShow(row)">
99
- <template v-if="router.isCallTel">
100
- <component
101
- v-if="!router.rightField || !row[router.rightField] || row[router.rightField] == 1"
102
- :key="rowRouterIndex"
103
- :ref="el => getRowsRouterRef(el, 'router' + router.key + rowindex)"
104
- :rowData="row" :rowindex="rowindex" :is="router.is"
105
- :vmodel="router" :api="model.parameterAction"
106
- @click="rolRouterClickHandler">
107
- </component>
108
- </template>
109
- <template v-else>
110
- <Tablecurrency
111
- v-if="!router.rightField || row[router.rightField] == 1"
112
- :key="rowRouterIndex" :rowData="row" :rowindex="rowindex"
113
- :isOperationalColumn="true" :router="router"
114
- :colValue="router.controlLabel" @click="rolRouterClickHandler">
115
- </Tablecurrency>
94
+ <div class="card__delete-wrapper">
95
+ <!--操作列-->
96
+ <div v-if="column.id === 'operation'" class="div_allinline"
97
+ :class="column.autoRowHeight ? 'lineFeedCell' : 'cell'"
98
+ style="float: left;">
99
+ <template v-for="(router, rowRouterIndex) in getRowRouterShow(row)">
100
+ <template v-if="router.isCallTel">
101
+ <component
102
+ v-if="!router.rightField || !row[router.rightField] || row[router.rightField] == 1"
103
+ :key="rowRouterIndex"
104
+ :ref="el => getRowsRouterRef(el, 'router' + router.key + rowindex)"
105
+ :rowData="row" :rowindex="rowindex" :is="router.is"
106
+ :vmodel="router" :api="model.parameterAction"
107
+ @click="rolRouterClickHandler">
108
+ </component>
109
+ </template>
110
+ <template v-else>
111
+ <Tablecurrency
112
+ v-if="!router.rightField || row[router.rightField] == 1"
113
+ :key="rowRouterIndex" :rowData="row" :rowindex="rowindex"
114
+ :isOperationalColumn="true" :router="router"
115
+ :colValue="router.controlLabel"
116
+ @click="rolRouterClickHandler">
117
+ </Tablecurrency>
118
+ </template>
116
119
  </template>
117
- </template>
118
- <el-popover v-if="getRowRouterDisplay(row).length > 0"
119
- :ref="el => getRowsPopoverRef(el, rowindex)"
120
- :append-to-table="option.appendId ? option.appendId : ''"
121
- :placement="option.placement ? option.placement : 'left'"
122
- :trigger="option.trigger ? option.trigger : ''">
123
- <div class="tab-list" style="border-bottom: none">
124
- <template
125
- v-for="(router, rowRouterIndex) in getRowRouterDisplay(row)">
126
- <template v-if="router.isCallTel">
127
- <component
128
- v-if="!router.rightField || !row[router.rightField] || row[router.rightField] == 1"
129
- :key="rowRouterIndex"
130
- :ref="el => getRowsRouterRef(el, 'router' + router.key + rowindex)"
131
- :rowData="row" :rowindex="rowindex" :is="router.is"
132
- :vmodel="router" :api="model.parameterAction"
133
- @click="rolRouterClickHandler">
134
- </component>
135
- </template>
136
- <template v-else>
137
- <Tablecurrency
138
- v-if="!router.rightField || row[router.rightField] == 1"
139
- :key="rowRouterIndex" :rowData="row"
140
- :rowindex="rowindex" :isOperationalColumn="true"
141
- :router="router" :colValue="router.label"
142
- :isShowImg="false" @click="rolRouterClickHandler">
143
- </Tablecurrency>
120
+ <el-popover v-if="getRowRouterDisplay(row).length > 0"
121
+ :ref="el => getRowsPopoverRef(el, rowindex)"
122
+ :append-to-table="option.appendId ? option.appendId : ''"
123
+ :placement="option.placement ? option.placement : 'left'"
124
+ :trigger="option.trigger ? option.trigger : ''">
125
+ <div class="tab-list" style="border-bottom: none">
126
+ <template
127
+ v-for="(router, rowRouterIndex) in getRowRouterDisplay(row)">
128
+ <template v-if="router.isCallTel">
129
+ <component
130
+ v-if="!router.rightField || !row[router.rightField] || row[router.rightField] == 1"
131
+ :key="rowRouterIndex"
132
+ :ref="el => getRowsRouterRef(el, 'router' + router.key + rowindex)"
133
+ :rowData="row" :rowindex="rowindex" :is="router.is"
134
+ :vmodel="router" :api="model.parameterAction"
135
+ @click="rolRouterClickHandler">
136
+ </component>
137
+ </template>
138
+ <template v-else>
139
+ <Tablecurrency
140
+ v-if="!router.rightField || row[router.rightField] == 1"
141
+ :key="rowRouterIndex" :rowData="row"
142
+ :rowindex="rowindex" :isOperationalColumn="true"
143
+ :router="router" :colValue="router.label"
144
+ :isShowImg="false" @click="rolRouterClickHandler">
145
+ </Tablecurrency>
146
+ </template>
144
147
  </template>
148
+ </div>
149
+ <template #reference>
150
+ <span class="icon-more Stats-popover"></span>
145
151
  </template>
146
- </div>
147
- <template #reference>
148
- <span class="icon-more Stats-popover"></span>
149
- </template>
150
152
 
151
- </el-popover>
153
+ </el-popover>
152
154
 
153
155
 
154
156
 
155
- </div>
156
-
157
- <template v-else-if="column.id === 'linksCol'">
158
- <div v-if="row[column.id]">
159
- <template v-for="(r, linksColIndex) in JSON.parse(row[column.id])">
160
- <a v-if="r.routerKey" style="padding-right: 10px;"
161
- class="ct-tablecurrencyItem" :key="linksColIndex"
162
- @click="linksColClickHandler(r)" v-html="r.name"
163
- href="javascript:void(0);">
164
- </a>
165
- <span v-else v-html="r.name" style="padding-right: 10px;"></span>
166
- </template>
167
157
  </div>
168
- </template>
169
-
170
- <Tablecurrency v-else-if="column.id === 'voice'" :isShowVoice="true"
171
- :router="column.router" :colValue="column.router.label" :rowindex="rowindex"
172
- :rowData="row" @click="rolRouterClickHandler"
173
- :class="column.autoRowHeight ? 'lineFeedCell' : 'cell'">
174
- </Tablecurrency>
175
-
176
- <!--可点击的列-->
177
- <template v-else-if="column.router">
178
- <div v-if="column.router.rightField && row[column.router.rightField] == 0"
179
- v-html="row[column.id]"></div>
180
- <Tablecurrency v-else :rowindex="rowindex" :align="column.attrs.align"
181
- :class="column.autoRowHeight ? 'lineFeedCell' : 'cell'"
182
- :columnName="column.id" :router="column.router"
183
- :colValue="row[column.id]" :rowData="row"
184
- :eventTriggerType="column.eventTriggerType"
185
- @click="rolRouterClickHandler" @mouseenter="rolRouterMouseenterHandler">
158
+
159
+ <template v-else-if="column.id === 'linksCol'">
160
+ <div v-if="row[column.id]">
161
+ <template v-for="(r, linksColIndex) in JSON.parse(row[column.id])">
162
+ <a v-if="r.routerKey" style="padding-right: 10px;"
163
+ class="ct-tablecurrencyItem" :key="linksColIndex"
164
+ @click="linksColClickHandler(r)" v-html="r.name"
165
+ href="javascript:void(0);">
166
+ </a>
167
+ <span v-else v-html="r.name"
168
+ style="padding-right: 10px;"></span>
169
+ </template>
170
+ </div>
171
+ </template>
172
+
173
+ <Tablecurrency v-else-if="column.id === 'voice'" :isShowVoice="true"
174
+ :router="column.router" :colValue="column.router.label"
175
+ :rowindex="rowindex" :rowData="row" @click="rolRouterClickHandler"
176
+ :class="column.autoRowHeight ? 'lineFeedCell' : 'cell'">
186
177
  </Tablecurrency>
187
- </template>
188
178
 
189
- <!--正常的列-->
190
- <div v-else-if="column.flagHtml" v-html="row[column.id]"
191
- :class="column.autoRowHeight ? 'lineFeedCell' : 'cell'"
192
- :style="column.style ? column.style : ''">
193
- </div>
179
+ <!--可点击的列-->
180
+ <template v-else-if="column.router">
181
+ <div v-if="column.router.rightField && row[column.router.rightField] == 0"
182
+ v-html="row[column.id]"></div>
183
+ <Tablecurrency v-else :rowindex="rowindex" :align="column.attrs.align"
184
+ :class="column.autoRowHeight ? 'lineFeedCell' : 'cell'"
185
+ :columnName="column.id" :router="column.router"
186
+ :colValue="row[column.id]" :rowData="row"
187
+ :eventTriggerType="column.eventTriggerType"
188
+ @click="rolRouterClickHandler"
189
+ @mouseenter="rolRouterMouseenterHandler">
190
+ </Tablecurrency>
191
+ </template>
194
192
 
195
- <div v-else-if="typeof column.template === 'undefined'"
196
- :class="column.autoRowHeight ? 'lineFeedCell' : 'cell'"
197
- :style="column.style ? column.style : ''">
198
- {{ common.getDataOfUpperLower(row, column.id) }}
199
- </div>
200
- <el-icon v-if="showDelete(row, column)" class="el-icon-close card__delete"
201
- @click="deleteColumn(row, column)">
202
- <CircleClose />
203
- </el-icon>
193
+ <!--正常的列-->
194
+ <div v-else-if="column.flagHtml" v-html="row[column.id]"
195
+ :class="column.autoRowHeight ? 'lineFeedCell' : 'cell'"
196
+ :style="column.style ? column.style : ''">
197
+ </div>
204
198
 
199
+ <div v-else-if="typeof column.template === 'undefined'"
200
+ :class="column.autoRowHeight ? 'lineFeedCell' : 'cell'"
201
+ :style="column.style ? column.style : ''">
202
+ {{ common.getDataOfUpperLower(row, column.id) }}
203
+ </div>
204
+ <el-icon v-if="showDelete(row, column)" class="el-icon-close card__delete"
205
+ @click.stop="deleteColumn(row, column)">
206
+ <CircleClose />
207
+ </el-icon>
208
+ </div>
205
209
  </td>
206
210
  </template>
207
211
 
@@ -1394,13 +1398,13 @@ function onDragStartColumn(event, row, column, name) {
1394
1398
 
1395
1399
 
1396
1400
  function drop(e, row, column, name) {
1397
- if (( props.dragStartName == "top" || dragStartName.value == "table") && name == "table" && column.paramName == "drop") {
1401
+ if ((props.dragStartName == "top" || dragStartName.value == "table") && name == "table" && column.paramName == "drop") {
1398
1402
 
1399
1403
 
1400
1404
  if (dragStartName.value == "table") {
1401
1405
  exchangeRequest(row, column, dragStartItem.value, dragStartColumn.value);
1402
1406
  }
1403
- else if ( props.dragStartName == "top") {
1407
+ else if (props.dragStartName == "top") {
1404
1408
  dropRequest(row, column, props.dragStartItem);
1405
1409
  }
1406
1410
  if (name === "table") {
@@ -1597,7 +1601,7 @@ function addClass(el, className) {
1597
1601
  newClassName.push(className);
1598
1602
  el.className = newClassName.join(" ");
1599
1603
  }
1600
-
1604
+
1601
1605
  defineExpose({
1602
1606
  model,
1603
1607
  searchComplate,
@@ -1609,15 +1613,22 @@ defineExpose({
1609
1613
  })
1610
1614
  </script>
1611
1615
  <style lang="css" scoped>
1612
- .ct-td {
1616
+ .card__delete-wrapper {
1617
+ width: 100%;
1618
+ height: 100%;
1619
+ }
1620
+
1621
+ /* 鼠标移上去才变成 relative */
1622
+ .card__delete-wrapper:hover {
1613
1623
  position: relative;
1624
+
1614
1625
  }
1615
1626
 
1616
1627
  /* 右上角删除图标,默认隐藏 */
1617
1628
  .card__delete {
1618
1629
  position: absolute;
1619
- top: 6px;
1620
- right: 6px;
1630
+ top: 1px;
1631
+ right: -5px;
1621
1632
  font-size: 14px;
1622
1633
  color: #909399;
1623
1634
  cursor: pointer;
@@ -1628,7 +1639,7 @@ defineExpose({
1628
1639
  }
1629
1640
 
1630
1641
  /* 鼠标悬停卡片时让图标出现,并恢复点击事件 */
1631
- .ct-td:hover .card__delete {
1642
+ .card__delete-wrapper:hover .card__delete {
1632
1643
  opacity: 1;
1633
1644
  pointer-events: auto;
1634
1645
  }
@@ -176,6 +176,7 @@ function searchHandler(field) {
176
176
  model.value.reset();
177
177
  model.value.screen.forEach((v) => {
178
178
  SearchScreen.hiddenHandle(v, model.value);
179
+ SearchScreen.displayHandle(v, model.value);
179
180
  })
180
181
  if (validExcute()) {
181
182
  emit('resetSearch', model.value);