centaline-data-driven 1.2.38 → 1.2.39
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 +1 -1
- package/src/Detail.vue +1 -1
- package/src/Form.vue +2 -2
- package/src/centaline/dynamicBtn/src/dynamicBtn.vue +19 -10
- package/src/centaline/dynamicCheckbox/src/dynamicCheckbox.vue +0 -1
- package/src/centaline/dynamicDetail/src/dynamicContactList.vue +1 -1
- package/src/centaline/dynamicDetail/src/dynamicPropertyDetailRET.vue +1 -1
- package/src/centaline/dynamicForm/src/dynamicForm.vue +3 -2
- package/src/centaline/dynamicInputNumber/src/dynamicInputNumber.vue +8 -6
- package/src/centaline/dynamicRepeat/src/dynamicRepeat.vue +29 -48
- package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +5 -2
- package/src/centaline/dynamicSearchList/src/dynamicTableStats.vue +40 -10
- package/src/centaline/dynamicSeg/src/dynamicSeg.vue +1 -0
- package/src/centaline/dynamicT/src/dynamicT.vue +11 -8
- package/src/centaline/loader/src/ctl/Router.js +6 -0
- package/src/centaline/loader/src/ctl/SearchTable.js +4 -1
- package/wwwroot/static/centaline/centaline-data-driven.js +3 -3
- package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
package/package.json
CHANGED
package/src/Detail.vue
CHANGED
package/src/Form.vue
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div id="app-form" class="data-driven" style="width:100%;height:100%;overflow:auto">
|
|
3
3
|
<!-- <ct-form :api="'/api/third-dept-tran/profit-return/applyUI'" :apiParam="apiParam"></ct-form> -->
|
|
4
|
-
<ct-form :api="'/
|
|
4
|
+
<ct-form :api="'/Flow/readDetail'" :apiParam="apiParam"></ct-form>
|
|
5
5
|
<!-- <ct-form :source="formdata.content" :apiParam="apiParam"></ct-form> -->
|
|
6
6
|
<!--<ct-form :api="'/api/form/formdata/contractDetail'" :apiParam="apiParam"></ct-form>-->
|
|
7
7
|
<!--<ct-form :api="'api/Form/formdata'"></ct-form>-->
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
// apiParam: {profitReturnId: "1504359257134055426", actionType: 1, pageStyle: 2, pageTitle: "查看返利", pageOnly: true} ,
|
|
18
18
|
// apiParam: {headerParam: {}, urlParam: {contractID: "06cad32e-4d0d-4b6f-bd24-16a28629a550", actionType: "0"}}
|
|
19
19
|
// apiParam: {originalTraId: "1475658732246241281", actionType: 2, chanceID: "1"} ,
|
|
20
|
-
apiParam: {actionType: "2",
|
|
20
|
+
apiParam: {actionType: "2",jsonData: {}},
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
methods: {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
placement="bottom"
|
|
6
6
|
@click.native="dropClick"
|
|
7
7
|
@command="commandClick"
|
|
8
|
-
:disabled="model.disabled">
|
|
8
|
+
:disabled="model.disabled || model.locked">
|
|
9
9
|
<el-button type="primary">
|
|
10
10
|
{{model.label}}<i class="el-icon-arrow-down el-icon--right"></i>
|
|
11
11
|
</el-button>
|
|
@@ -13,15 +13,7 @@
|
|
|
13
13
|
<el-dropdown-item v-for="item in model.elementOptions" :key="item.code" :command="item.code">{{item.name}}</el-dropdown-item>
|
|
14
14
|
</el-dropdown-menu>
|
|
15
15
|
</el-dropdown>
|
|
16
|
-
<el-
|
|
17
|
-
:type="model.isHyperLink ? 'text' : 'primary'"
|
|
18
|
-
v-bind="model.attrs" @click="$emit('click',model)"
|
|
19
|
-
:style="{color:model.textColor,backgroundColor:model.bgColor,borderColor:model.borderColor}"
|
|
20
|
-
:icon="model.icon"
|
|
21
|
-
:disabled="model.disabled">
|
|
22
|
-
<!-- <i v-if="model.isShowIocn" :class="model.iconClass"></i> -->
|
|
23
|
-
{{model.label}}</el-button>
|
|
24
|
-
<el-upload v-else
|
|
16
|
+
<el-upload v-else-if="model.isImport"
|
|
25
17
|
:action="model.action"
|
|
26
18
|
v-bind="model.attrs"
|
|
27
19
|
size="mini"
|
|
@@ -33,6 +25,23 @@
|
|
|
33
25
|
:on-error="handleAvatarError">
|
|
34
26
|
<el-button size="mini" type="primary">{{model.label}}</el-button>
|
|
35
27
|
</el-upload>
|
|
28
|
+
<el-button v-else-if="model.subText" style="height: 100%;padding: 5px 0;"
|
|
29
|
+
:type="model.isHyperLink ? 'text' : 'primary'"
|
|
30
|
+
v-bind="model.attrs" @click="$emit('click',model)"
|
|
31
|
+
:style="{color:model.textColor,backgroundColor:model.bgColor,borderColor:model.borderColor}"
|
|
32
|
+
:icon="model.icon"
|
|
33
|
+
:disabled="model.disabled || model.locked">
|
|
34
|
+
<div>{{model.label}}</div>
|
|
35
|
+
<div style="color:red;font-weight:700;">{{model.subText}}</div>
|
|
36
|
+
</el-button>
|
|
37
|
+
<el-button v-else
|
|
38
|
+
:type="model.isHyperLink ? 'text' : 'primary'"
|
|
39
|
+
v-bind="model.attrs" @click="$emit('click',model)"
|
|
40
|
+
:style="{color:model.textColor,backgroundColor:model.bgColor,borderColor:model.borderColor}"
|
|
41
|
+
:icon="model.icon"
|
|
42
|
+
:disabled="model.disabled || model.locked">
|
|
43
|
+
{{model.label}}
|
|
44
|
+
</el-button>
|
|
36
45
|
</template>
|
|
37
46
|
<script>
|
|
38
47
|
import dynamicElement from '../../mixins/dynamicElement'
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
<span class="i">{{col.operationName}}</span>
|
|
179
179
|
</div>
|
|
180
180
|
<div class="t-item"><span class="i" :class="'operation'+col.flagKey">{{col.desc}}</span></div>
|
|
181
|
-
<div class="t-item" style="height: 50px;">
|
|
181
|
+
<div class="t-item" style="min-height: 50px;">
|
|
182
182
|
<component class="el-button t-but el-button--info max-info" v-if="col.router && col.router.show" :is="col.router.is" :vmodel="col.router" :api="model.optionApi" @click="fieldClickHandler(col.router,$event)"></component>
|
|
183
183
|
</div>
|
|
184
184
|
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div v-loading="loading" style="width:100%">
|
|
2
|
+
<div v-loading="loading" :style="{width:pageWidth?pageWidth+'px':'100%',margin:'auto'}">
|
|
3
3
|
<div v-if="model !== null && !loading" class="ct-form" :class="{'domDisabled':model.pageDisabled}">
|
|
4
4
|
<!--可根据场景判断显示el-card还是el-main-->
|
|
5
5
|
<component :is="model.showTitle?'el-main':'el-card'">
|
|
@@ -95,6 +95,7 @@
|
|
|
95
95
|
source: Object,
|
|
96
96
|
apiParam: Object,
|
|
97
97
|
parentModel: Object,
|
|
98
|
+
pageWidth: Number,
|
|
98
99
|
showTitle: {
|
|
99
100
|
type: Boolean,
|
|
100
101
|
default: false
|
|
@@ -380,7 +381,7 @@
|
|
|
380
381
|
}
|
|
381
382
|
else if (field.isFormPageInTab || field.isSearchPageInTab) {// 外部框架tab页打开
|
|
382
383
|
submitData = field.getActionPara(submitData).para;
|
|
383
|
-
self.$common.getDataDrivenOpts().handler.openTab(field.action, submitData, field.pageTitle);
|
|
384
|
+
self.$common.getDataDrivenOpts().handler.openTab(field.action, submitData, field.pageTitle,self.model,field.dialogWidth);
|
|
384
385
|
}
|
|
385
386
|
else if (field.isBrowserNewTab) {// 浏览器打开
|
|
386
387
|
submitData = field.getActionPara(submitData).para;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="field-top">
|
|
3
|
-
<div style="width:100;"
|
|
3
|
+
<div style="width:100%;display:flex;">
|
|
4
|
+
<div style="flex:1;" v-if="model !== null" class="ct-inputNumber" :class="[model.attrs.size?'ct-font-size-'+model.attrs.size:'',model.lock ? 'ct-inputNumber-lock' : ''
|
|
4
5
|
]" @mouseover="mouseOverHandle" @mouseout="mouseOutHandle">
|
|
5
6
|
<div class="ct-flex-div" :class="[model.showLabel?'el-input-group el-input-group--prepend':'',!valid?'inputError':'']">
|
|
6
7
|
<div v-if="model.showLabel && model.label" class="el-input-group__prepend field-label-div" :class="[model.labelClass]">
|
|
@@ -23,13 +24,14 @@
|
|
|
23
24
|
<span v-if="model.unitName" class="ct-unitname el-input__suffix el-input__suffix-inner" :class="showClear?'unitName-20':'unitName-0'">{{model.unitName}}</span>
|
|
24
25
|
</div>
|
|
25
26
|
<span v-if="model.sufLabel" class="spanMessage ct-flex-div-span">{{model.sufLabel}}</span>
|
|
26
|
-
<transition name="el-fade-in ct-flex-div-span">
|
|
27
|
-
<span v-show="!valid" class="errorMessage">
|
|
28
|
-
{{validMessage}}
|
|
29
|
-
</span>
|
|
30
|
-
</transition>
|
|
31
27
|
</div>
|
|
32
28
|
</div>
|
|
29
|
+
<transition name="el-fade-in ct-flex-div-span">
|
|
30
|
+
<span v-show="!valid" class="errorMessage">
|
|
31
|
+
{{validMessage}}
|
|
32
|
+
</span>
|
|
33
|
+
</transition>
|
|
34
|
+
</div>
|
|
33
35
|
</div>
|
|
34
36
|
</template>
|
|
35
37
|
<script>
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="ct-form-
|
|
2
|
+
<div class="ct-form-repeat" v-focus="foucus" :class="{'tableDisabled':model.tableDisabled}">
|
|
3
3
|
<div class="list-button">
|
|
4
4
|
<el-button v-if="model.create" type="success" class=" max-btn-add" size="mini" icon="el-icon-circle-plus-outline" @click="addRow">
|
|
5
5
|
新增
|
|
6
6
|
</el-button>
|
|
7
7
|
</div>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
</div>
|
|
8
|
+
<div class="list-title">
|
|
9
|
+
<h5>{{model.title}}</h5>
|
|
10
|
+
</div>
|
|
11
|
+
<div class="el-col el-col-24 ct-form-repeat-el-col" v-for="(v, i) in model.tableData" :key="v.guid" v-if="!v.deleted">
|
|
13
12
|
<el-row v-if="v.field.length > 0">
|
|
14
13
|
<el-col v-for="(col, index) in v.field" :key="col.guid" v-if="col.show !== false" :span="col.colspan" style="padding:5px">
|
|
15
14
|
<component ref="Fields" :is="col.is" :vmodel="col" :api="model.OptApi" v-bind="col.bindPara"
|
|
@@ -18,7 +17,7 @@
|
|
|
18
17
|
</el-col>
|
|
19
18
|
</el-row>
|
|
20
19
|
<div class="list-button" v-if="i>0">
|
|
21
|
-
<el-button v-if="v.delete" type="success" class=" max-btn-add" size="mini" icon="el-icon-
|
|
20
|
+
<el-button v-if="v.delete" type="success" class=" max-btn-add" size="mini" icon="el-icon-delete" @click="deleteRow(i)">
|
|
22
21
|
删除
|
|
23
22
|
</el-button>
|
|
24
23
|
</div>
|
|
@@ -137,50 +136,32 @@
|
|
|
137
136
|
}
|
|
138
137
|
</script>
|
|
139
138
|
<style>
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
border-radius: 3px;
|
|
146
|
-
cursor: pointer;
|
|
147
|
-
justify-content: center;
|
|
148
|
-
display: flex;
|
|
149
|
-
line-height: 34px;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.ct-form-list .list-title {
|
|
153
|
-
padding-bottom: 5px;
|
|
154
|
-
text-align: left;
|
|
155
|
-
display: inline-table;
|
|
156
|
-
width: 45%;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
.ct-form-list .list-button {
|
|
160
|
-
padding-bottom: 5px;
|
|
161
|
-
text-align: right;
|
|
162
|
-
display: inline-table;
|
|
163
|
-
float: right;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
.ct-table-inputnumber {
|
|
167
|
-
text-align: right;
|
|
139
|
+
|
|
140
|
+
.ct-form-repeat {
|
|
141
|
+
display: table;
|
|
142
|
+
background: aliceblue;
|
|
143
|
+
padding:10px;
|
|
168
144
|
}
|
|
169
145
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
146
|
+
.ct-form-repeat .list-title {
|
|
147
|
+
padding-bottom: 5px;
|
|
148
|
+
text-align: left;
|
|
149
|
+
display: inline-table;
|
|
150
|
+
width: 45%;
|
|
151
|
+
}
|
|
173
152
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
153
|
+
.ct-form-repeat .list-button {
|
|
154
|
+
padding-bottom: 5px;
|
|
155
|
+
text-align: right;
|
|
156
|
+
display: inline-table;
|
|
157
|
+
float: right;
|
|
158
|
+
}
|
|
159
|
+
.ct-form-repeat .ct-form-repeat-el-col {
|
|
160
|
+
border-bottom: 1px dashed #f1706b;
|
|
161
|
+
}
|
|
162
|
+
.ct-form-repeat .ct-form-repeat-el-col:last-child {
|
|
163
|
+
border-bottom: none;
|
|
164
|
+
}
|
|
177
165
|
|
|
178
|
-
.ct-table-required {
|
|
179
|
-
color: red;
|
|
180
|
-
}
|
|
181
166
|
|
|
182
|
-
.tableDisabled {
|
|
183
|
-
pointer-events: none;
|
|
184
|
-
opacity: 0.4;
|
|
185
|
-
}
|
|
186
167
|
</style>
|
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
</ct-tablecurrency>
|
|
100
100
|
|
|
101
101
|
<!--正常的列-->
|
|
102
|
+
<div v-else-if="column.flagHtml" v-html="row[column.id]" :class="column.autoRowHeight ? 'lineFeedCell':'cell'" :style="column.style ? column.style:''">
|
|
103
|
+
</div>
|
|
102
104
|
<div v-else-if="typeof column.template === 'undefined'" :class="column.autoRowHeight ? 'lineFeedCell':'cell'" :style="column.style ? column.style:''">
|
|
103
105
|
{{row[column.id]}}
|
|
104
106
|
</div>
|
|
@@ -677,7 +679,7 @@
|
|
|
677
679
|
if (field.pageStyle) {
|
|
678
680
|
submitData.pageStyle = field.pageStyle;
|
|
679
681
|
}
|
|
680
|
-
self.$common.getDataDrivenOpts().handler.openTab(action, submitData, field.pageTitle, self.model);
|
|
682
|
+
self.$common.getDataDrivenOpts().handler.openTab(action, submitData, field.pageTitle, self.model,field.dialogWidth);
|
|
681
683
|
}
|
|
682
684
|
else if (field.isBrowserNewTab) {// 浏览器打开
|
|
683
685
|
submitData = field.getActionPara(submitData).para;
|
|
@@ -903,11 +905,12 @@
|
|
|
903
905
|
border-bottom: 1px solid #ebeef5;
|
|
904
906
|
width: 100%;
|
|
905
907
|
outline: 0;
|
|
908
|
+
border-top: 1px solid #fff;
|
|
906
909
|
}
|
|
907
910
|
|
|
908
911
|
.ct-searchtable .ct-table {
|
|
909
912
|
min-width: 100%;
|
|
910
|
-
border-collapse:
|
|
913
|
+
border-collapse: collapse;
|
|
911
914
|
}
|
|
912
915
|
|
|
913
916
|
.ct-searchtable .ct-table th {
|
|
@@ -30,17 +30,18 @@
|
|
|
30
30
|
</li>
|
|
31
31
|
</ul>
|
|
32
32
|
</div>
|
|
33
|
-
<el-popover :append-to-table="option.appendId?option.appendId:''" class="Stats-popover"
|
|
33
|
+
<el-popover :append-to-table="option.appendId?option.appendId:''" class="Stats-popover" popper-class="el-popover1"
|
|
34
34
|
:placement="option.placement?option.placement:'left'"
|
|
35
35
|
:trigger="option.trigger?option.trigger:''">
|
|
36
36
|
<div v-if="FlagStatistics" class="tab-list" style="border-bottom:none">
|
|
37
|
-
<div class="
|
|
38
|
-
<ul class="
|
|
37
|
+
<div class="popovertablf" v-for="(item, index) in showData[1]" @click="handleClick($event,item)">
|
|
38
|
+
<ul class="popoverbtnTab" style="padding:0px">
|
|
39
39
|
<li :class="[selectStats==item.code1+'*'+item.controlLabel?'activecolor':'']">{{item.controlLabel}}</li>
|
|
40
40
|
<li class="tdcenter">
|
|
41
41
|
<span :class="[selectStats==item.code1+'*'+item.controlLabel?'active':'']"></span>
|
|
42
42
|
</li>
|
|
43
43
|
</ul>
|
|
44
|
+
<br />
|
|
44
45
|
</div>
|
|
45
46
|
</div>
|
|
46
47
|
<sapn slot="reference" class="icon-more">⋮</sapn>
|
|
@@ -176,8 +177,8 @@
|
|
|
176
177
|
|
|
177
178
|
<style>
|
|
178
179
|
.tab-list {
|
|
179
|
-
|
|
180
|
-
margin-bottom: 10px;
|
|
180
|
+
position: relative;
|
|
181
|
+
margin-bottom: 10px;
|
|
181
182
|
height: 30px;
|
|
182
183
|
}
|
|
183
184
|
|
|
@@ -194,6 +195,10 @@
|
|
|
194
195
|
color: #ee5d56;
|
|
195
196
|
}
|
|
196
197
|
|
|
198
|
+
.tab-list .popoverbtnTab:hover, .tab-list .popovertablf:hover {
|
|
199
|
+
color: #ee5d56;
|
|
200
|
+
}
|
|
201
|
+
|
|
197
202
|
.tab-list .tabl-el {
|
|
198
203
|
max-width: 150px;
|
|
199
204
|
box-shadow: 0 6px 12px rgb(0 0 0 / 18%);
|
|
@@ -207,6 +212,23 @@
|
|
|
207
212
|
display: block;
|
|
208
213
|
}
|
|
209
214
|
|
|
215
|
+
.tab-list .popovertablf {
|
|
216
|
+
font-size: 14px !important;
|
|
217
|
+
font-weight: bold;
|
|
218
|
+
text-align: center;
|
|
219
|
+
display: block;
|
|
220
|
+
padding: 5px 8px;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.tab-list .popoverbtnTab {
|
|
224
|
+
font-size: 14px !important;
|
|
225
|
+
font-weight: bold;
|
|
226
|
+
cursor: pointer;
|
|
227
|
+
float: left;
|
|
228
|
+
list-style-type: none;
|
|
229
|
+
padding: 0px 20px 0px 20px;
|
|
230
|
+
}
|
|
231
|
+
|
|
210
232
|
.tab-list .tdcenter {
|
|
211
233
|
line-height: 1px;
|
|
212
234
|
height: 1px;
|
|
@@ -218,18 +240,21 @@
|
|
|
218
240
|
/* border-bottom-right-radius: 12px !important; */
|
|
219
241
|
/* border-top-right-radius: 11px; */
|
|
220
242
|
width: 20px;
|
|
221
|
-
border-bottom: #ee5d56 solid 3px;
|
|
243
|
+
border-bottom: #ee5d56 solid 3px;
|
|
222
244
|
}
|
|
223
245
|
|
|
246
|
+
|
|
247
|
+
|
|
224
248
|
.tab-list .activecolor {
|
|
225
249
|
color: #ee5d56 !important;
|
|
226
250
|
}
|
|
227
251
|
|
|
228
|
-
|
|
229
|
-
.tab-list .btnTab span {
|
|
252
|
+
.tab-list .btnTab span, .tab-list .popovertablf span {
|
|
230
253
|
display: inline-block;
|
|
231
254
|
}
|
|
232
255
|
|
|
256
|
+
|
|
257
|
+
|
|
233
258
|
.tab-list .icon-more {
|
|
234
259
|
color: #ee5d56;
|
|
235
260
|
font-size: 20px;
|
|
@@ -241,7 +266,12 @@
|
|
|
241
266
|
}
|
|
242
267
|
|
|
243
268
|
.Stats-popover {
|
|
244
|
-
|
|
245
|
-
|
|
269
|
+
position: absolute;
|
|
270
|
+
right: 5px;
|
|
271
|
+
}
|
|
272
|
+
</style>
|
|
273
|
+
<style>
|
|
274
|
+
.el-popover1 {
|
|
275
|
+
min-width: inherit !important;
|
|
246
276
|
}
|
|
247
277
|
</style>
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="field-top">
|
|
3
|
-
<div
|
|
4
|
-
|
|
3
|
+
<div style="width:100%;display:flex;">
|
|
4
|
+
<div v-if="model !== null" class="ct-text ct-flex-div max-flex-div" style="flex:1;"
|
|
5
|
+
:class="[model.showLabel?'el-input-group el-input-group--prepend':'',!valid?'inputError':'',model.attrs.size?'ct-font-size-'+model.attrs.size:'']"
|
|
6
|
+
@mouseover="mouseOverHandle" @mouseout="mouseOutHandle">
|
|
5
7
|
<div v-if="model.showLabel && model.label" class="el-input-group__prepend field-label-div max-input-group" :class="[model.labelClass]">
|
|
6
8
|
<span>{{model.label}}</span>
|
|
7
9
|
</div>
|
|
@@ -19,13 +21,14 @@
|
|
|
19
21
|
</el-input>
|
|
20
22
|
|
|
21
23
|
<span v-if="model.sufLabel" class="spanMessage ct-flex-div-span">{{model.sufLabel}}</span>
|
|
22
|
-
<transition name="el-fade-in" class="ct-flex-div-span">
|
|
23
|
-
<span v-show="!valid" class="errorMessage ">
|
|
24
|
-
{{validMessage}}
|
|
25
|
-
</span>
|
|
26
|
-
</transition>
|
|
27
24
|
<ctQuickInputSos v-if="!model.lock && model.paramName" class="ct-flex-div-span" :pn="model.paramName" :action="api" @click="model.value=$event"></ctQuickInputSos>
|
|
28
25
|
</div>
|
|
26
|
+
<transition name="el-fade-in" class="ct-flex-div-span">
|
|
27
|
+
<span v-show="!valid" class="errorMessage ">
|
|
28
|
+
{{validMessage}}
|
|
29
|
+
</span>
|
|
30
|
+
</transition>
|
|
31
|
+
</div>
|
|
29
32
|
</div>
|
|
30
33
|
</template>
|
|
31
34
|
<script>
|
|
@@ -34,7 +37,7 @@
|
|
|
34
37
|
export default {
|
|
35
38
|
name: 'ct-text',
|
|
36
39
|
mixins: [dynamicElement],
|
|
37
|
-
|
|
40
|
+
components: {
|
|
38
41
|
'ctQuickInputSos': ctQuickInputSos,
|
|
39
42
|
},
|
|
40
43
|
props: {
|