centaline-data-driven-v3 0.0.56 → 0.0.58
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/dist/centaline-data-driven-v3.umd.js +78 -78
- package/package.json +1 -1
- package/src/assets/commonWeb.css +1 -1
- package/src/components/Layout/Layout.vue +7 -2
- package/src/components/Layout/LayoutField.vue +1 -1
- package/src/components/app/SearchList/SearchTable.vue +18 -7
- package/src/components/web/Button.vue +3 -3
- package/src/components/web/Form.vue +40 -7
- package/src/components/web/FormList.vue +28 -8
- package/src/components/web/GroupList.vue +36 -0
- package/src/components/web/NumberWithPlusAndMinus.vue +110 -0
- package/src/components/web/PopupGroupList.vue +6 -0
- package/src/components/web/SearchList/SearchTable.vue +138 -43
- package/src/components/web/SearchList.vue +7 -2
- package/src/components/web/Steps.vue +3 -1
- package/src/components/web/other/PopupSearchListTable.vue +8 -2
- package/src/loader/src/DatePicker.js +17 -4
- package/src/loader/src/Field.js +43 -17
- package/src/loader/src/Form.js +85 -1
- package/src/loader/src/FormList.js +30 -1
- package/src/loader/src/GroupList.js +14 -0
- package/src/loader/src/LibFunction.js +19 -6
- package/src/loader/src/NumberWithPlusAndMinus.js +35 -0
- package/src/loader/src/Router.js +15 -1
- package/src/loader/src/SearchScreen.js +1 -0
- package/src/loader/src/SearchTable.js +10 -4
- package/src/main.js +3 -3
- package/src/utils/Enum.js +778 -756
- package/src/utils/mixins.js +61 -12
- package/src/utils/validate.js +1 -0
|
@@ -61,7 +61,8 @@
|
|
|
61
61
|
<template v-for="(row, rowindex) in model.listData" :key="rowindex">
|
|
62
62
|
<tr v-if="from == 'form' || pageRowMin <= rowindex && rowindex <= pageRowMax"
|
|
63
63
|
:ref="el => getRowsRef(el, rowindex)" @click="rowClickHandle($event, rowindex)"
|
|
64
|
-
class="ct-tr" :style="row.rowStyle"
|
|
64
|
+
class="ct-tr" :style="row.rowStyle" :draggable="row.flagDrag == '1' ? true : false"
|
|
65
|
+
@dragstart="onDragStart($event, row, null, 'table')">
|
|
65
66
|
|
|
66
67
|
<td v-if="model.isMulti" class="ct-td tdFiexd left-fixation checkbox-td"
|
|
67
68
|
:class="[model.tdClass, rowindex === model.selectIndex ? 'select' : null,]"
|
|
@@ -85,9 +86,10 @@
|
|
|
85
86
|
column.fixed === 'left' ? 'left-fixation' : null,
|
|
86
87
|
column.width === undefined ? 'ct-table-auto' : null,
|
|
87
88
|
column.fixed === 'right' ? 'right-fixation' : null,
|
|
88
|
-
]" v-bind="column.attrs"
|
|
89
|
-
@
|
|
90
|
-
@
|
|
89
|
+
]" v-bind="column.attrs" :draggable="column.paramName == 'drop' ? true : false"
|
|
90
|
+
@drop="drop($event, row, column, 'table')" @dragover.prevent
|
|
91
|
+
@dragenter="dragenter($event, column, 'table')"
|
|
92
|
+
@dragleave="dragleave($event, column, 'table')">
|
|
91
93
|
<!--操作列-->
|
|
92
94
|
<div v-if="column.id === 'operation'" class="div_allinline"
|
|
93
95
|
:class="column.autoRowHeight ? 'lineFeedCell' : 'cell'"
|
|
@@ -217,7 +219,7 @@
|
|
|
217
219
|
style="margin-top: 10px;width: 100%;display: inline-block;height: 30px;margin-bottom: 10px;">
|
|
218
220
|
<el-button size="mini" @click="popupClickHandler()" class="max-search-btn" style="float:right;"
|
|
219
221
|
type="primary">
|
|
220
|
-
|
|
222
|
+
{{ common.LocalizedString('确认', '確認') }}
|
|
221
223
|
</el-button>
|
|
222
224
|
</div>
|
|
223
225
|
<div v-if="isLoading" v-loading="isLoading" style="top: 30px"></div>
|
|
@@ -237,7 +239,7 @@ import Tablecurrency from './Tablecurrency.vue';
|
|
|
237
239
|
import SearchTable from '../../../loader/src/SearchTable'
|
|
238
240
|
import { RouterClickHandler, RouterMouseenterHandler } from '../../../utils/mixins';
|
|
239
241
|
import { ElMessage } from 'element-plus'
|
|
240
|
-
const emit = defineEmits(['rowClickHandle', 'searchComplate', 'refreshRowHandle', 'simpleRouterRefreshHandler', 'loaded', 'scrollHandle', 'closeSideBar', 'refreshParent', 'popupClickHandler', '
|
|
242
|
+
const emit = defineEmits(['rowClickHandle', 'searchComplate', 'refreshRowHandle', 'simpleRouterRefreshHandler', 'loaded', 'scrollHandle', 'closeSideBar', 'refreshParent', 'popupClickHandler', 'drag'])
|
|
241
243
|
const props = defineProps({
|
|
242
244
|
vmodel: Object,
|
|
243
245
|
api: String,
|
|
@@ -372,6 +374,7 @@ function searchComplate(m, defaultSearch) {
|
|
|
372
374
|
function load(data) {
|
|
373
375
|
model.value = data;
|
|
374
376
|
model.value.$vue = { searchStrat, searchEnd, downloadUrl, loadStats, setTableHeight, updateCurrentRow, doAction, itemKey, refreshTableColumns, calculatingRowHeight, emit, operationLoading, getPage };
|
|
377
|
+
model.value.isIframe = props.isIframe
|
|
375
378
|
//自动查询 调用合并列
|
|
376
379
|
if (model.value.listData.length > 0) {
|
|
377
380
|
if (model.value.rowMergedColumns.length > 0) {
|
|
@@ -456,41 +459,126 @@ function toolbarClickHandler(field) {
|
|
|
456
459
|
}
|
|
457
460
|
//导入
|
|
458
461
|
function importComplete(res, field) {
|
|
462
|
+
if (res && res.rtnCode && res.rtnCode === 201) {
|
|
463
|
+
if (res.rtnMsg) {
|
|
464
|
+
ElMessage({
|
|
465
|
+
message: res.rtnMsg,
|
|
466
|
+
type: 'warning',
|
|
467
|
+
showClose: true,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
else if (res && res.rtnCode && res.rtnCode === 202 && res.rtnMsg) {
|
|
473
|
+
common.confirm(res.rtnMsg, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => {
|
|
474
|
+
|
|
475
|
+
})
|
|
476
|
+
.catch(() => {
|
|
477
|
+
});
|
|
478
|
+
}
|
|
459
479
|
if (field.flagAsync) {
|
|
460
|
-
if (res.
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
480
|
+
if (res.rtnCode && res.rtnCode === 202 && res.rtnMsg) {
|
|
481
|
+
common.confirm(res.rtnMsg, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => {
|
|
482
|
+
if (res.content && res.content.action) {
|
|
483
|
+
var dialogOption = {
|
|
484
|
+
title: field.pageTitle || field.label,
|
|
485
|
+
content: [{
|
|
486
|
+
component: 'ct-progress',
|
|
487
|
+
width: '350px',
|
|
488
|
+
height: '165px',
|
|
489
|
+
attrs: {
|
|
490
|
+
progressAction: res.content.action,
|
|
491
|
+
progressKey: res.content.key,
|
|
492
|
+
progressType: 'import',
|
|
493
|
+
onFinished(data) {
|
|
494
|
+
common.closeDialog(dialogOption);
|
|
495
|
+
if (field.isExport) {
|
|
496
|
+
if (data.content.indexOf(".zip") > -1) {
|
|
497
|
+
window.location.href = encodeURI(data.content);
|
|
498
|
+
}
|
|
499
|
+
else {
|
|
500
|
+
if (data.content.indexOf("?") > -1) {
|
|
501
|
+
downloadUrl.value = data.content + "&" + Math.random();
|
|
502
|
+
}
|
|
503
|
+
else {
|
|
504
|
+
downloadUrl.value = data.content + "?" + Math.random();
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
if (data.rtnMsg) {
|
|
509
|
+
ElMessage({
|
|
510
|
+
message: data.rtnMsg,
|
|
511
|
+
type: 'success',
|
|
512
|
+
showClose: true,
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
getPage(1, false);
|
|
516
|
+
},
|
|
517
|
+
onError(data) {
|
|
518
|
+
common.closeDialog(dialogOption);
|
|
519
|
+
ElMessage({
|
|
520
|
+
message: data.rtnMsg,
|
|
521
|
+
type: 'warning',
|
|
522
|
+
showClose: true,
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
},
|
|
526
|
+
}]
|
|
527
|
+
};
|
|
528
|
+
common.openDialog(dialogOption);
|
|
529
|
+
}
|
|
530
|
+
})
|
|
531
|
+
.catch(() => { });
|
|
532
|
+
}
|
|
533
|
+
else {
|
|
534
|
+
if (res.content && res.content.action) {
|
|
535
|
+
var dialogOption = {
|
|
536
|
+
title: field.pageTitle || field.label,
|
|
537
|
+
content: [{
|
|
538
|
+
component: 'ct-progress',
|
|
539
|
+
width: '350px',
|
|
540
|
+
height: '165px',
|
|
541
|
+
attrs: {
|
|
542
|
+
progressAction: res.content.action,
|
|
543
|
+
progressKey: res.content.key,
|
|
544
|
+
progressType: 'import',
|
|
545
|
+
onFinished(data) {
|
|
546
|
+
common.closeDialog(dialogOption);
|
|
547
|
+
if (field.isExport) {
|
|
548
|
+
if (data.content.indexOf(".zip") > -1) {
|
|
549
|
+
window.location.href = encodeURI(data.content);
|
|
550
|
+
}
|
|
551
|
+
else {
|
|
552
|
+
if (data.content.indexOf("?") > -1) {
|
|
553
|
+
downloadUrl.value = data.content + "&" + Math.random();
|
|
554
|
+
}
|
|
555
|
+
else {
|
|
556
|
+
downloadUrl.value = data.content + "?" + Math.random();
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
if (data.rtnMsg) {
|
|
561
|
+
ElMessage({
|
|
562
|
+
message: data.rtnMsg,
|
|
563
|
+
type: 'success',
|
|
564
|
+
showClose: true,
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
getPage(1, false);
|
|
568
|
+
},
|
|
569
|
+
onError(data) {
|
|
570
|
+
common.closeDialog(dialogOption);
|
|
474
571
|
ElMessage({
|
|
475
572
|
message: data.rtnMsg,
|
|
476
|
-
type: '
|
|
573
|
+
type: 'warning',
|
|
477
574
|
showClose: true,
|
|
478
575
|
});
|
|
479
576
|
}
|
|
480
|
-
getPage(1, false);
|
|
481
577
|
},
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
type: 'warning',
|
|
487
|
-
showClose: true,
|
|
488
|
-
});
|
|
489
|
-
}
|
|
490
|
-
},
|
|
491
|
-
}]
|
|
492
|
-
};
|
|
493
|
-
common.openDialog(dialogOption);
|
|
578
|
+
}]
|
|
579
|
+
};
|
|
580
|
+
common.openDialog(dialogOption);
|
|
581
|
+
}
|
|
494
582
|
}
|
|
495
583
|
}
|
|
496
584
|
else {
|
|
@@ -1048,6 +1136,7 @@ function updateCurrentRow(router, data, flagSimple) {
|
|
|
1048
1136
|
SearchTable.getCurrentRowApiData(model.value,
|
|
1049
1137
|
function () {
|
|
1050
1138
|
itemKey.value = Math.random()
|
|
1139
|
+
model.value.selectAll = false
|
|
1051
1140
|
emit("searchComplate");
|
|
1052
1141
|
if (data && !flagSimple) {
|
|
1053
1142
|
emit("simpleRouterRefreshHandler");
|
|
@@ -1145,11 +1234,11 @@ function refreshTableColumns(data) {
|
|
|
1145
1234
|
load(SearchTable.loadSearchTableModel(data, model.value.searchModel, false, props.api));
|
|
1146
1235
|
}
|
|
1147
1236
|
else {
|
|
1148
|
-
if (refTableStats.value){
|
|
1237
|
+
if (refTableStats.value) {
|
|
1149
1238
|
disabledStats.value = true;
|
|
1150
1239
|
getPage(1, true);
|
|
1151
1240
|
}
|
|
1152
|
-
else{
|
|
1241
|
+
else {
|
|
1153
1242
|
SearchTable.loadSearchTableApi(props.api, load, searchModel, true);
|
|
1154
1243
|
}
|
|
1155
1244
|
}
|
|
@@ -1238,10 +1327,17 @@ function fiexdHead() {
|
|
|
1238
1327
|
}
|
|
1239
1328
|
});
|
|
1240
1329
|
}
|
|
1330
|
+
// 拖拽开始事件
|
|
1331
|
+
function onDragStart(event, row, column, name) {
|
|
1332
|
+
if (name == "table" && row.flagDrag == "1") {
|
|
1333
|
+
emit("drag", row, column, 'drag');
|
|
1334
|
+
}
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1241
1337
|
function drop(e, row, column, name) {
|
|
1242
1338
|
let routerKey = "edit";
|
|
1243
1339
|
let submitData = {};
|
|
1244
|
-
if (props.dragStartName == "top" && name == "
|
|
1340
|
+
if (props.dragStartName == "top" && name == "table" && column.paramName == "drop") {
|
|
1245
1341
|
var actionRouter = model.value.actionRouter;
|
|
1246
1342
|
let field = actionRouter.find((b) => {
|
|
1247
1343
|
return b.key === routerKey;
|
|
@@ -1276,18 +1372,17 @@ function drop(e, row, column, name) {
|
|
|
1276
1372
|
}
|
|
1277
1373
|
});
|
|
1278
1374
|
|
|
1279
|
-
if (name === "
|
|
1375
|
+
if (name === "table") {
|
|
1280
1376
|
let el = e.target.nodeName.toLowerCase() == "td" ? e.target : getTDOfParents(e.target);
|
|
1281
1377
|
removeClass(el, "dragEnterHover");
|
|
1282
1378
|
}
|
|
1283
1379
|
}
|
|
1284
|
-
|
|
1285
|
-
emit("drop", row, column);
|
|
1286
|
-
|
|
1380
|
+
emit("drag", row, column, 'drop');
|
|
1287
1381
|
}
|
|
1382
|
+
|
|
1288
1383
|
function dragenter(e, column, name) {
|
|
1289
1384
|
let el = e.target.nodeName.toLowerCase() == "td" ? e.target : getTDOfParents(e.target);
|
|
1290
|
-
if (name === "
|
|
1385
|
+
if (name === "table" && column.paramName == "drop") {
|
|
1291
1386
|
addClass(el, "dragEnterHover");
|
|
1292
1387
|
}
|
|
1293
1388
|
dragenterEl.value = el;
|
|
@@ -1296,7 +1391,7 @@ function dragenter(e, column, name) {
|
|
|
1296
1391
|
function dragleave(e, column, name) {
|
|
1297
1392
|
let el = e.target.nodeName.toLowerCase() == "td" ? e.target : getTDOfParents(e.target);
|
|
1298
1393
|
// 目标节点的背景色恢复原样
|
|
1299
|
-
if (name === "
|
|
1394
|
+
if (name === "table" && dragenterEl.value != el) {
|
|
1300
1395
|
removeClass(el, "dragEnterHover");
|
|
1301
1396
|
}
|
|
1302
1397
|
|
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
@refreshParent="refreshParentHandler" @simpleRouterRefreshHandler="simpleRouterRefreshHandler"
|
|
21
21
|
@closeSideBar="closeSideBar" @popupClickHandler="popupClickHandler" :dragStartItem="dragStartItem"
|
|
22
22
|
:dragStartName="dragStartName"
|
|
23
|
-
@flagNotificationParentAfterContentChanged="flagNotificationParentAfterContentChanged"
|
|
23
|
+
@flagNotificationParentAfterContentChanged="flagNotificationParentAfterContentChanged"
|
|
24
|
+
@drag="drag"
|
|
25
|
+
>
|
|
24
26
|
</searchTable>
|
|
25
27
|
</div>
|
|
26
28
|
<div ref="refSidebar" v-if="flagSideBar && flagSideBarOfData"
|
|
@@ -43,7 +45,7 @@ import SearchCategory from './SearchList/SearchCategory.vue';
|
|
|
43
45
|
import SearchSideMenu from './SearchList/SearchSideMenu.vue';
|
|
44
46
|
import SearchSideRight from './SearchList/SearchSideRight.vue';
|
|
45
47
|
import { ref, nextTick, onMounted, watch, onActivated } from 'vue'
|
|
46
|
-
const emit = defineEmits(['loaded', 'failLoad', 'tableLoaded', 'scrollHandle', 'rowClickHandle', 'refreshParent', 'submit', 'flagNotificationParentAfterContentChanged'])
|
|
48
|
+
const emit = defineEmits(['loaded', 'failLoad', 'tableLoaded', 'scrollHandle', 'rowClickHandle', 'refreshParent', 'submit', 'flagNotificationParentAfterContentChanged','drag'])
|
|
47
49
|
const props = defineProps({
|
|
48
50
|
vmodel: Object,
|
|
49
51
|
parameterAction: String,
|
|
@@ -451,6 +453,9 @@ function popupClickHandler(tempListData) {
|
|
|
451
453
|
function flagNotificationParentAfterContentChanged() {
|
|
452
454
|
emit('flagNotificationParentAfterContentChanged');
|
|
453
455
|
}
|
|
456
|
+
function drag(row, column,type) {
|
|
457
|
+
emit('drag',row,column,type);
|
|
458
|
+
}
|
|
454
459
|
watch(() => props.pageHeight, (value) => {
|
|
455
460
|
if (props.pageHeight) {
|
|
456
461
|
pageHeightReal.value = props.pageHeight;
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<ct-field :vmodel="model">
|
|
3
3
|
<template #Control>
|
|
4
|
+
<div style="width: 100%;">
|
|
4
5
|
<el-steps :space="model.code2.space" :direction="model.code2.direction" :active="model.code2.active"
|
|
5
6
|
:simple="model.code2.simple" :process-status="model.code2.processStatus"
|
|
6
7
|
:finish-status="model.code2.finishStatus" :align-center="model.code2.alignCenter">
|
|
7
|
-
<el-step v-for="(step, index) in model.code1" :key="index" :title="step.title" :icon="step.icon">
|
|
8
|
+
<el-step v-for="(step, index) in model.code1" :key="index" :title="step.title" :icon="step.icon" :status="step.status">
|
|
8
9
|
<template #description>
|
|
9
10
|
<div v-html="step.description">
|
|
10
11
|
</div>
|
|
11
12
|
</template>
|
|
12
13
|
</el-step>
|
|
13
14
|
</el-steps>
|
|
15
|
+
</div>
|
|
14
16
|
</template>
|
|
15
17
|
</ct-field>
|
|
16
18
|
</template>
|
|
@@ -28,9 +28,15 @@
|
|
|
28
28
|
</template>
|
|
29
29
|
</template>
|
|
30
30
|
</el-table-column>
|
|
31
|
-
<template v-else>
|
|
32
|
-
<el-table-column v-if="col.
|
|
31
|
+
<template v-else-if="col.show">
|
|
32
|
+
<el-table-column v-if="col.flagHtml" :prop="col.id" :label="col.name" :min-width="col.width">
|
|
33
|
+
<template #default="scope">
|
|
34
|
+
<span v-html="scope.row[col.id]"></span>
|
|
35
|
+
</template>
|
|
36
|
+
</el-table-column>
|
|
37
|
+
<el-table-column v-else :prop="col.id" :label="col.name" :min-width="col.width">
|
|
33
38
|
</el-table-column>
|
|
39
|
+
|
|
34
40
|
</template>
|
|
35
41
|
</template>
|
|
36
42
|
</el-table>
|
|
@@ -9,11 +9,19 @@ const DatePicker = function (source) {
|
|
|
9
9
|
if (source.controlType == Enum.ControlType.DateTime || source.controlType == Enum.ControlType.DateTimeRange || this.flagtime) {
|
|
10
10
|
return 'yyyy-MM-dd HH:mm:ss'
|
|
11
11
|
}
|
|
12
|
+
else if(source.controlType == Enum.ControlType.DateYearMonth
|
|
13
|
+
|| source.controlType == Enum.ControlType.MonthRange){
|
|
14
|
+
return 'yyyy-MM'
|
|
15
|
+
}
|
|
12
16
|
return 'yyyy-MM-dd'
|
|
13
17
|
},
|
|
14
18
|
//APP格式
|
|
15
19
|
get valueFormatAPP() {
|
|
16
|
-
|
|
20
|
+
if(source.controlType == Enum.ControlType.DateYearMonth
|
|
21
|
+
|| source.controlType == Enum.ControlType.MonthRange){
|
|
22
|
+
return ['year', 'month']
|
|
23
|
+
}
|
|
24
|
+
return ['year', 'month', 'day']
|
|
17
25
|
},
|
|
18
26
|
//是否时间
|
|
19
27
|
get flagtime() {
|
|
@@ -24,20 +32,25 @@ const DatePicker = function (source) {
|
|
|
24
32
|
},
|
|
25
33
|
//是否区间
|
|
26
34
|
get flagrange() {
|
|
27
|
-
if (source.controlType == Enum.ControlType.DateRange
|
|
35
|
+
if (source.controlType == Enum.ControlType.DateRange
|
|
36
|
+
|| source.controlType == Enum.ControlType.DateTimeRange
|
|
37
|
+
|| source.controlType == Enum.ControlType.MonthRange
|
|
38
|
+
|| source.controlType == Enum.ControlType.TimeRange) {
|
|
28
39
|
return true
|
|
29
40
|
}
|
|
30
41
|
return false
|
|
31
42
|
},
|
|
32
43
|
//控件类型
|
|
33
44
|
get dateType() {
|
|
34
|
-
if (source.controlType == Enum.ControlType.DateTime
|
|
45
|
+
if (source.controlType == Enum.ControlType.DateTime
|
|
46
|
+
|| source.controlType == Enum.ControlType.DateTimeRange) {
|
|
35
47
|
return 'datetime'
|
|
36
48
|
}
|
|
37
49
|
else if (this.flagtime) {
|
|
38
50
|
return 'time'
|
|
39
51
|
}
|
|
40
|
-
else if (source.controlType == Enum.ControlType.DateYearMonth
|
|
52
|
+
else if (source.controlType == Enum.ControlType.DateYearMonth
|
|
53
|
+
|| source.controlType == Enum.ControlType.MonthRange) {
|
|
41
54
|
return 'month'
|
|
42
55
|
}
|
|
43
56
|
return 'date'
|
package/src/loader/src/Field.js
CHANGED
|
@@ -26,8 +26,8 @@ const Base = function (source, moreActionRouter) {
|
|
|
26
26
|
if (source.labelDelimiter) {
|
|
27
27
|
l = l + source.labelDelimiter;
|
|
28
28
|
}
|
|
29
|
-
if(common.flagApp()){
|
|
30
|
-
l=l.trim();
|
|
29
|
+
if (common.flagApp()) {
|
|
30
|
+
l = l.trim();
|
|
31
31
|
}
|
|
32
32
|
return l;
|
|
33
33
|
},
|
|
@@ -235,7 +235,7 @@ const Base = function (source, moreActionRouter) {
|
|
|
235
235
|
},
|
|
236
236
|
//允许的文件类型(针对上传控件)
|
|
237
237
|
get fileAccept1() {
|
|
238
|
-
return source.fileAccept1||'';
|
|
238
|
+
return source.fileAccept1 || '';
|
|
239
239
|
},
|
|
240
240
|
set fileAccept1(v) {
|
|
241
241
|
source.fileAccept1 = v;
|
|
@@ -724,8 +724,8 @@ const Base = function (source, moreActionRouter) {
|
|
|
724
724
|
set lineFeed(v) {
|
|
725
725
|
source.lineFeed = v;
|
|
726
726
|
},
|
|
727
|
-
|
|
728
|
-
|
|
727
|
+
// 主要给 表单分组控件使用 控制分组里面的内容是否使用 懒加载
|
|
728
|
+
get lazyLoad() {
|
|
729
729
|
if (typeof source.lazyLoad !== "undefined") {
|
|
730
730
|
return source.lazyLoad;
|
|
731
731
|
}
|
|
@@ -734,6 +734,13 @@ const Base = function (source, moreActionRouter) {
|
|
|
734
734
|
set lazyLoad(v) {
|
|
735
735
|
source.lazyLoad = v;
|
|
736
736
|
},
|
|
737
|
+
// 控件类型为 VueCustomizedComponent 时 对应的 前端vue的组件名称
|
|
738
|
+
get vueComponentName() {
|
|
739
|
+
return source.vueComponentName;
|
|
740
|
+
},
|
|
741
|
+
set vueComponentName(v) {
|
|
742
|
+
source.vueComponentName = v;
|
|
743
|
+
},
|
|
737
744
|
//Field结束
|
|
738
745
|
|
|
739
746
|
collapseName: -1,//所属分组
|
|
@@ -831,28 +838,30 @@ const Base = function (source, moreActionRouter) {
|
|
|
831
838
|
}
|
|
832
839
|
|
|
833
840
|
}
|
|
834
|
-
this.code1 = this.defaultCode1;
|
|
835
|
-
this.code2 = this.defaultCode2;
|
|
836
|
-
this.name1 = this.defaultName1;
|
|
841
|
+
this.code1 = this.defaultCode1 || '';
|
|
842
|
+
this.code2 = this.defaultCode2 || '';
|
|
843
|
+
this.name1 = this.defaultName1 || '';
|
|
837
844
|
|
|
838
845
|
}
|
|
839
846
|
else {
|
|
840
|
-
if (this.controlType === Enum.ControlType.DateRange
|
|
847
|
+
if (this.controlType === Enum.ControlType.DateRange
|
|
848
|
+
|| this.controlType === Enum.ControlType.DateTimeRange
|
|
849
|
+
|| this.controlType === Enum.ControlType.MonthRange) {
|
|
841
850
|
this.code1 = '';
|
|
842
851
|
this.code2 = '';
|
|
843
852
|
}
|
|
844
853
|
else if (this.controlType === Enum.ControlType.CheckBoxList) {
|
|
845
854
|
this.value = [];
|
|
846
855
|
}
|
|
847
|
-
else if (this.controlType === Enum.ControlType.SearchListBox
|
|
848
|
-
|| this.controlType === Enum.ControlType.ComboBox
|
|
849
|
-
|| this.controlType === Enum.ControlType.MultiSelectNoSearch
|
|
850
|
-
|| this.controlType === Enum.ControlType.MultiSelectWithSearch
|
|
856
|
+
else if (this.controlType === Enum.ControlType.SearchListBox
|
|
857
|
+
|| this.controlType === Enum.ControlType.ComboBox
|
|
858
|
+
|| this.controlType === Enum.ControlType.MultiSelectNoSearch
|
|
859
|
+
|| this.controlType === Enum.ControlType.MultiSelectWithSearch
|
|
851
860
|
|| this.controlType === Enum.ControlType.PhoneNumberText) {
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
861
|
+
this.code1 = '';
|
|
862
|
+
this.code2 = '';
|
|
863
|
+
this.name1 = '';
|
|
864
|
+
this.value = '';
|
|
856
865
|
}
|
|
857
866
|
else {
|
|
858
867
|
this.code1 = '';
|
|
@@ -910,6 +919,23 @@ const Base = function (source, moreActionRouter) {
|
|
|
910
919
|
configurable: true
|
|
911
920
|
});
|
|
912
921
|
}
|
|
922
|
+
else if (source.controlType == Enum.ControlType.NumberWithPlusAndMinus) {
|
|
923
|
+
Object.defineProperty(rtnFormObj, source.fieldName1, {
|
|
924
|
+
get: function () {
|
|
925
|
+
if (source.code1) {
|
|
926
|
+
let val = source.code1
|
|
927
|
+
if (typeof source.code1 === 'string') {
|
|
928
|
+
val = JSON.parse(source.code1)
|
|
929
|
+
}
|
|
930
|
+
return val
|
|
931
|
+
}
|
|
932
|
+
return []
|
|
933
|
+
|
|
934
|
+
},
|
|
935
|
+
enumerable: true,
|
|
936
|
+
configurable: true
|
|
937
|
+
});
|
|
938
|
+
}
|
|
913
939
|
return rtnFormObj;
|
|
914
940
|
},
|
|
915
941
|
|
package/src/loader/src/Form.js
CHANGED
|
@@ -973,6 +973,80 @@ function popupSearchListHandler(singleSelectio, field, router, model, Fields, pr
|
|
|
973
973
|
}
|
|
974
974
|
common.openDialog(dialogOption);
|
|
975
975
|
}
|
|
976
|
+
//弹出分组搜索列表
|
|
977
|
+
function popupGroupListHandler(field, router, model, Fields, props, callBack) {
|
|
978
|
+
let submitData = {};
|
|
979
|
+
let verified = true;
|
|
980
|
+
let flagSearchlist = false;
|
|
981
|
+
let tempFormData = model.getFormObj();
|
|
982
|
+
|
|
983
|
+
let check = true;
|
|
984
|
+
let checkMsg;
|
|
985
|
+
router.submitFormField.forEach((v) => {
|
|
986
|
+
Fields.forEach((f) => {
|
|
987
|
+
if (f.model && f.model.fieldName1 === v) {
|
|
988
|
+
if (typeof f.model.validExcute !== 'undefined') {
|
|
989
|
+
if (!f.model.validExcute()) {
|
|
990
|
+
common.message(f.model.displayValidMessage)
|
|
991
|
+
verified = false;
|
|
992
|
+
return;
|
|
993
|
+
}
|
|
994
|
+
}
|
|
995
|
+
}
|
|
996
|
+
});
|
|
997
|
+
if (!verified) {
|
|
998
|
+
return;
|
|
999
|
+
}
|
|
1000
|
+
submitData[v] = common.getDataOfUpperLower(tempFormData, v);
|
|
1001
|
+
if (!submitData[v]) {
|
|
1002
|
+
if (model.fieldsDic[v]) {
|
|
1003
|
+
if (model.fieldsDic[v].required) {
|
|
1004
|
+
checkMsg = "请先录入" + model.fieldsDic[v].controlLabel;
|
|
1005
|
+
check = false;
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
else {
|
|
1009
|
+
checkMsg = "未读取到表单项(" + v + ")的值";
|
|
1010
|
+
check = false;
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
});
|
|
1014
|
+
|
|
1015
|
+
if (!verified) {
|
|
1016
|
+
return;
|
|
1017
|
+
}
|
|
1018
|
+
if (!check) {
|
|
1019
|
+
common.message(checkMsg, 'warning')
|
|
1020
|
+
return;
|
|
1021
|
+
}
|
|
1022
|
+
submitData = router.getActionPara(submitData).para;
|
|
1023
|
+
var dialogOption = {
|
|
1024
|
+
title: router.pageTitle,
|
|
1025
|
+
pane: common.getParentPane(),
|
|
1026
|
+
content: [{
|
|
1027
|
+
component: 'ct-popupgrouplist',
|
|
1028
|
+
width: router.pageWidth + 'px',
|
|
1029
|
+
height: (router.pageHeight || 500) + 'px',
|
|
1030
|
+
documentHeight: props.documentHeight,
|
|
1031
|
+
documentWidth: props.documentWidth,
|
|
1032
|
+
attrs: {
|
|
1033
|
+
searchConditionApi: router.actionForSearchLayout,
|
|
1034
|
+
searchFormApi: router.actionForSearchLayout,
|
|
1035
|
+
searchDataApi: router.actionForSearch,
|
|
1036
|
+
apiParam: submitData,
|
|
1037
|
+
flagPopupSearchlist: flagSearchlist,
|
|
1038
|
+
onSubmit: (option) => {
|
|
1039
|
+
if (typeof callBack === "function" && !router.callBackFunName) {
|
|
1040
|
+
callBack(option);
|
|
1041
|
+
}
|
|
1042
|
+
model.$vue.changeCallBackHandler(field, router.callBackFunName, option);
|
|
1043
|
+
common.closeDialog(dialogOption);
|
|
1044
|
+
}
|
|
1045
|
+
},
|
|
1046
|
+
}]
|
|
1047
|
+
};
|
|
1048
|
+
common.openDialog(dialogOption);
|
|
1049
|
+
}
|
|
976
1050
|
function getFileData(field, model) {
|
|
977
1051
|
var submitData = {};
|
|
978
1052
|
var tempFormData = model.getFormObj();
|
|
@@ -1008,7 +1082,16 @@ function changeHandler(field, model) {
|
|
|
1008
1082
|
var router = model.actionRouters.find((v) => {
|
|
1009
1083
|
return v.id === field.onAfterChanged;
|
|
1010
1084
|
});
|
|
1011
|
-
|
|
1085
|
+
if(router){
|
|
1086
|
+
clickHandler(router);
|
|
1087
|
+
}
|
|
1088
|
+
else{
|
|
1089
|
+
if (model.scripts) {
|
|
1090
|
+
model.scripts.formData.setExcuteListData(model.fields);
|
|
1091
|
+
}
|
|
1092
|
+
model.scripts.$fd = field.id;
|
|
1093
|
+
common.excute.call(model.scripts, field.onAfterChanged);
|
|
1094
|
+
}
|
|
1012
1095
|
}
|
|
1013
1096
|
}
|
|
1014
1097
|
function getRouterAndSubmitData(field, model) {
|
|
@@ -1067,6 +1150,7 @@ const Form = {
|
|
|
1067
1150
|
clearRelatedHandle,
|
|
1068
1151
|
doAction,
|
|
1069
1152
|
popupSearchListHandler,
|
|
1153
|
+
popupGroupListHandler,
|
|
1070
1154
|
getFileData,
|
|
1071
1155
|
changeHandler,
|
|
1072
1156
|
getRouterAndSubmitData,
|