doway-coms 1.5.7 → 1.5.9

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 (74) hide show
  1. package/.browserslistrc +2 -2
  2. package/README.md +28 -28
  3. package/dist/css/chunk-vendors.7f83d8f9.css +8 -0
  4. package/dist/css/index.7946d50b.css +1 -0
  5. package/dist/favicon.ico +0 -0
  6. package/dist/js/chunk-vendors.28fda91d.js +340 -0
  7. package/dist/js/index.49bc6add.js +2 -0
  8. package/lib/doway-coms.common.js +120397 -0
  9. package/lib/doway-coms.css +1 -0
  10. package/lib/doway-coms.umd.js +120407 -0
  11. package/lib/doway-coms.umd.min.js +328 -0
  12. package/package.json +52 -52
  13. package/packages/BaseButton/index.js +7 -7
  14. package/packages/BaseButton/src/index.vue +241 -241
  15. package/packages/BaseCheckbox/index.js +7 -7
  16. package/packages/BaseCheckbox/src/index.vue +134 -134
  17. package/packages/BaseDate/index.js +7 -7
  18. package/packages/BaseDate/src/index.vue +197 -197
  19. package/packages/BaseDateWeek/index.js +7 -7
  20. package/packages/BaseDateWeek/src/index.vue +163 -163
  21. package/packages/BaseDatetime/index.js +7 -7
  22. package/packages/BaseDatetime/src/index.vue +196 -196
  23. package/packages/BaseForm/index.js +7 -7
  24. package/packages/BaseForm/src/index.vue +664 -664
  25. package/packages/BaseGantt/index.js +9 -9
  26. package/packages/BaseGantt/src/index.vue +604 -604
  27. package/packages/BaseGrid/index.js +9 -9
  28. package/packages/BaseGrid/src/index.vue +2700 -2690
  29. package/packages/BaseGridAdjust/index.js +9 -9
  30. package/packages/BaseGridAdjust/src/index.vue +455 -455
  31. package/packages/BaseInput/index.js +7 -7
  32. package/packages/BaseInput/src/index.vue +164 -164
  33. package/packages/BaseIntervalInput/index.js +7 -7
  34. package/packages/BaseIntervalInput/src/index.vue +310 -310
  35. package/packages/BaseKanbanEmpty/index.js +7 -7
  36. package/packages/BaseKanbanEmpty/src/index.vue +176 -176
  37. package/packages/BaseNumberInput/index.js +7 -7
  38. package/packages/BaseNumberInput/src/index.vue +229 -229
  39. package/packages/BasePagination/index.js +7 -7
  40. package/packages/BasePagination/src/index.vue +91 -91
  41. package/packages/BasePictureCard/index.js +7 -7
  42. package/packages/BasePictureCard/src/index.vue +561 -561
  43. package/packages/BasePrintPreview/index.js +7 -7
  44. package/packages/BasePrintPreview/src/index.vue +117 -117
  45. package/packages/BasePulldown/index.js +7 -7
  46. package/packages/BasePulldown/src/index.vue +867 -867
  47. package/packages/BaseSearch/index.js +7 -7
  48. package/packages/BaseSearch/src/index.vue +935 -935
  49. package/packages/BaseSelect/index.js +7 -7
  50. package/packages/BaseSelect/src/index.vue +153 -153
  51. package/packages/BaseSelectMulti/index.js +7 -7
  52. package/packages/BaseSelectMulti/src/index.vue +148 -148
  53. package/packages/BaseTextArea/index.js +7 -7
  54. package/packages/BaseTextArea/src/index.vue +178 -178
  55. package/packages/BaseTime/index.js +7 -7
  56. package/packages/BaseTime/src/index.vue +166 -166
  57. package/packages/BaseTool/index.js +7 -7
  58. package/packages/BaseTool/src/index.vue +349 -349
  59. package/packages/BaseToolStatus/index.js +7 -7
  60. package/packages/BaseToolStatus/src/index.vue +383 -383
  61. package/packages/index.js +165 -165
  62. package/packages/styles/default.less +80 -80
  63. package/packages/utils/api.js +45 -45
  64. package/packages/utils/auth.js +38 -38
  65. package/packages/utils/common.js +583 -583
  66. package/packages/utils/dom.js +181 -181
  67. package/packages/utils/enum.js +83 -83
  68. package/packages/utils/filters.js +458 -458
  69. package/packages/utils/gridFormat.js +52 -52
  70. package/packages/utils/msg.js +16 -16
  71. package/packages/utils/patchFiles.js +44 -44
  72. package/packages/utils/request.js +169 -169
  73. package/packages/utils/store.js +254 -257
  74. package/vue.config.js +59 -59
@@ -1,665 +1,665 @@
1
- <template>
2
- <div class="d-form-items">
3
- <div
4
- class="d-form-item"
5
- v-for="col in internalComputedHiddenCols"
6
- :key="col.field"
7
- >
8
- <!-- 文本框输入控件 -->
9
- <BaseInput
10
- v-if="
11
- col.controlType === 'text' &&
12
- (col.isButtonShow == false || col.isButtonShow == undefined)
13
- "
14
- :label="col.title"
15
- v-model="row[col.field]"
16
- :edit="col.edit"
17
- :tooltip="col.tooltip"
18
- :rules="col.rules"
19
- @change="
20
- () => {
21
- inputChange(col);
22
- }
23
- "
24
- @blur="
25
- () => {
26
- blurChange(col);
27
- }
28
- "
29
- />
30
- <!-- 按钮弹出框输入控件 -->
31
- <!-- isButtonShow字段是额外添加字段,用于控制区分输入框控件 -->
32
- <BaseButton
33
- v-if="col.isButtonShow == true"
34
- v-model="row[col.field]"
35
- :colInfo="col"
36
- :row="row"
37
- :formRow="formRow"
38
- @preSearch="preSearch"
39
- @handleOk="
40
- (value) => {
41
- buttonHandleOk(col, value);
42
- }
43
- "
44
- />
45
- <!-- 文本框输入控件 -->
46
- <BaseTextArea
47
- v-if="
48
- col.controlType === 'textarea' &&
49
- (col.isButtonShow == false || col.isButtonShow == undefined)
50
- "
51
- :label="col.title"
52
- v-model="row[col.field]"
53
- :edit="col.edit"
54
- :tooltip="col.tooltip"
55
- :rules="col.rules"
56
- @change="
57
- () => {
58
- inputChange(col);
59
- }
60
- "
61
- />
62
- <!-- 数字输入 -->
63
- <BaseNumberInput
64
- v-if="
65
- col.controlType === 'number' &&
66
- (col.isButtonShow == false || col.isButtonShow == undefined)
67
- "
68
- :label="col.title"
69
- v-model="row[col.field]"
70
- :edit="col.edit"
71
- :rules="col.rules"
72
- :min="col.min"
73
- :tooltip="col.tooltip"
74
- :max="col.max"
75
- :precision="col.precision"
76
- @change="
77
- () => {
78
- numberChange(col);
79
- }
80
- "
81
- @blur="
82
- () => {
83
- blurChange(col);
84
- }
85
- "
86
- />
87
- <BaseIntervalInput
88
- v-if="
89
- col.controlType === 'interval' &&
90
- (col.isButtonShow == false || col.isButtonShow == undefined)
91
- "
92
- :label="col.title"
93
- v-model="row[col.field]"
94
- :edit="col.edit"
95
- :rules="col.rules"
96
- :tooltip="col.tooltip"
97
- :displayType="col.displayType"
98
- :valueType="col.valueType"
99
- @change="
100
- () => {
101
- numberChange(col);
102
- }
103
- "
104
- />
105
- <!-- 日期选择控件 -->
106
- <BaseDate
107
- v-if="
108
- col.controlType === 'date' &&
109
- (col.isButtonShow == false || col.isButtonShow == undefined)
110
- "
111
- :label="col.title"
112
- v-model="row[col.field]"
113
- :edit="col.edit"
114
- :tooltip="col.tooltip"
115
- :pastDate="col.pastDate"
116
- :rules="col.rules"
117
- :disabledDateValue="col.disabledDateValue"
118
- @change="
119
- () => {
120
- inputChange(col);
121
- }
122
- "
123
- />
124
- <!-- 日期时间控件 -->
125
- <BaseDatetime
126
- v-if="
127
- col.controlType === 'datetime' &&
128
- (col.isButtonShow == false || col.isButtonShow == undefined)
129
- "
130
- :label="col.title"
131
- v-model="row[col.field]"
132
- :pastDate="col.pastDate"
133
- :tooltip="col.tooltip"
134
- :edit="col.edit"
135
- :rules="col.rules"
136
- :disabledDateValue="col.disabledDateValue"
137
- @change="
138
- () => {
139
- inputChange(col);
140
- }
141
- "
142
- />
143
- <!-- 单选框 -->
144
- <BaseCheckbox
145
- v-if="
146
- col.controlType === 'checkbox' &&
147
- (col.isButtonShow == false || col.isButtonShow == undefined)
148
- "
149
- :label="col.title"
150
- v-model="row[col.field]"
151
- :edit="col.edit"
152
- :tooltip="col.tooltip"
153
- :rules="col.rules"
154
- @change="
155
- (rowInfo) => {
156
- checkboxChange(col);
157
- }
158
- "
159
- />
160
- <BaseTime
161
- v-if="
162
- col.controlType === 'time' &&
163
- (col.isButtonShow == false || col.isButtonShow == undefined)
164
- "
165
- :label="col.title"
166
- v-model="row[col.field]"
167
- :tooltip="col.tooltip"
168
- :edit="col.edit"
169
- :rules="col.rules"
170
- @change="
171
- () => {
172
- inputChange(col);
173
- }
174
- "
175
- />
176
- <BaseDateWeek
177
- v-if="
178
- col.controlType === 'dateweek' &&
179
- (col.isButtonShow == false || col.isButtonShow == undefined)
180
- "
181
- :label="col.title"
182
- v-model="row[col.field]"
183
- :edit="col.edit"
184
- :tooltip="col.tooltip"
185
- :rules="col.rules"
186
- @change="
187
- () => {
188
- inputChange(col);
189
- }
190
- "
191
- />
192
- <BaseSelect
193
- v-if="
194
- col.controlType === 'select' &&
195
- (col.isButtonShow == false || col.isButtonShow == undefined)
196
- "
197
- :label="col.title"
198
- v-model="row[col.field]"
199
- :edit="col.edit"
200
- :rules="col.rules"
201
- :tooltip="col.tooltip"
202
- :dataSource="col.dataSource"
203
- @change="
204
- (rowInfo) => {
205
- selectChange(col);
206
- }
207
- "
208
- />
209
- <BaseSelectMulti
210
- v-if="
211
- col.controlType === 'dropmulti' &&
212
- (col.isButtonShow == false || col.isButtonShow == undefined)
213
- "
214
- :label="col.title"
215
- v-model="row[col.field]"
216
- :edit="col.edit"
217
- :tooltip="col.tooltip"
218
- :rules="col.rules"
219
- @change="
220
- (rowInfo) => {
221
- selectMultiChange(col);
222
- }
223
- "
224
- :dataSource="col.dataSource"
225
- />
226
- <BasePulldown
227
- v-if="
228
- col.controlType === 'pulldown' &&
229
- (col.isButtonShow == false || col.isButtonShow == undefined)
230
- "
231
- :formRow="formRow"
232
- :isOld="isOld"
233
- :edit="col.edit"
234
- :defaultExpression="col.defaultExpression"
235
- :row="row"
236
- :api="col.api"
237
- :tooltip="col.tooltip"
238
- :optBtns="col.optBtns"
239
- :popupAddName="col.popupAddName"
240
- :popupAddPath="col.popupAddPath"
241
- @pulldownBtnClick="pulldownBtnClick"
242
- :label="col.title"
243
- :rules="col.rules"
244
- :route="col.route"
245
- v-model="row[col.field]"
246
- :field="col.field"
247
- :columns="col.columns"
248
- :pageSize="col.pageSize"
249
- :immediate="col.immediate"
250
- @preSearch="preSearch"
251
- @selectChanged="
252
- (rowInfo) => {
253
- pullDownChange(col, rowInfo);
254
- }
255
- "
256
- />
257
- </div>
258
- <div class="d-form-item-ghost"></div>
259
- <div class="d-form-item-ghost"></div>
260
- <div class="d-form-item-ghost"></div>
261
- <div class="d-form-item-ghost"></div>
262
- </div>
263
- </template>
264
-
265
- <script>
266
- import { sysFormState, sysRowState } from "../../utils/enum";
267
- import BaseInput from "../../BaseInput/index";
268
- import BaseCheckbox from "../../BaseCheckbox/index";
269
- import BaseDate from "../../BaseDate/index";
270
- import BaseDatetime from "../../BaseDatetime/index";
271
- import BaseDateWeek from "../../BaseDateWeek/index";
272
- import BaseTextArea from "../../BaseTextArea/index";
273
- import BaseButton from "../../BaseButton/index";
274
- import BaseSelect from "../../BaseSelect/index";
275
- import BaseSelectMulti from "../../BaseSelectMulti/index";
276
- import BaseTime from "../../BaseTime/index";
277
- import BasePulldown from "../../BasePulldown/index";
278
- import BaseIntervalInput from "../../BaseIntervalInput/index";
279
- import BaseNumberInput from "../../BaseNumberInput/index";
280
-
281
- import moment from "moment";
282
- export default {
283
- components: {
284
- BaseInput,
285
- BaseCheckbox,
286
- BaseDate,
287
- BaseDatetime,
288
- BaseDateWeek,
289
- BaseTextArea,
290
- BaseButton,
291
- BaseSelect,
292
- BaseSelectMulti,
293
- BaseTime,
294
- BasePulldown,
295
- BaseIntervalInput,
296
- BaseNumberInput,
297
- },
298
- name: "BaseForm",
299
- props: {
300
- updateDatas: {
301
- // 更新的数据
302
- type: Object,
303
- default: function () {
304
- return {};
305
- },
306
- },
307
- showLoading: {
308
- // 是否显示加载信息
309
- type: Boolean,
310
- default: false,
311
- },
312
- isOld: {
313
- // 是否老系统
314
- type: Boolean,
315
- default: false,
316
- },
317
- valueState: {
318
- type: Object,
319
- default: function () {
320
- return {};
321
- },
322
- },
323
- formState: {
324
- type: String,
325
- default: sysFormState.view,
326
- },
327
- formRow: {
328
- // 当前页面数据集
329
- type: Object,
330
- default: () => {
331
- return {};
332
- },
333
- },
334
- row: {
335
- // 当前行,如果是表单的话当前行和当前页面数据集是一样的
336
- type: Object,
337
- default: () => {
338
- return {};
339
- },
340
- },
341
- columns: {
342
- // 表格列信息
343
- type: Array,
344
- default: function () {
345
- return [];
346
- },
347
- },
348
- dataName: {
349
- type: String,
350
- default: function () {
351
- return "";
352
- },
353
- },
354
- },
355
- computed: {
356
- internalComputedHiddenCols: function () {
357
- let vm = this;
358
- return this.columns.filter((item) => {
359
- // if (item.isTitle === true) {
360
- // // vm.titleCol = item
361
- // return false
362
- // }
363
- // if (item.controlType === controlType.image) {
364
- // vm.logoCol = item
365
- // return false
366
- // }
367
- return item.visible === true;
368
- });
369
- },
370
- },
371
- filters: {},
372
- data() {
373
- return {
374
- moment,
375
- editFormName: "",
376
- internalEdit: false,
377
- internalCols: [],
378
- internalValueState: {},
379
- internalFormState: sysFormState.view,
380
- rules: {},
381
- titleCols: [],
382
- logoCol: null,
383
- isShowEditForm: false,
384
- ref: "",
385
- };
386
- },
387
- watch: {
388
- // row: {
389
- // handler: function (newVal) {
390
- // },
391
- // deep: true
392
- // },
393
- // cols: {
394
- // handler: function (newVal) {
395
- // this.internalCols = newVal
396
- // },
397
- // deep: true
398
- // },
399
- // valueState: { // 表单值状态,更新,还是插入
400
- // handler: function (newVal) {
401
- // this.internalValueState = newVal
402
- // },
403
- // deep: true
404
- // },
405
- // formState: {
406
- // handler: function (newVal) {
407
- // this.internalFormState = newVal
408
- // this.setColState()
409
- // },
410
- // deep: true
411
- // }
412
- },
413
- created() {
414
- for (let i = 0; i < this.columns.length; i++) {
415
- // if (this.columns[i].isLogo === true) {
416
- // this.logoCol = this.columns[i]
417
- // continue
418
- // }
419
- // if (this.columns[i].isTitle === true) {
420
- // this.titleCols.push(this.columns[i])
421
- // continue
422
- // }
423
- if (this.columns[i].controlType === "popup") {
424
- let formUrl =
425
- process.env[
426
- "VUE_APP_" +
427
- this.columns[i].linkModuleData.objectService.toUpperCase() +
428
- "_SERVICE_URL"
429
- ] +
430
- "/" +
431
- this.columns[i].linkModuleData.objectApiVersion +
432
- "/" +
433
- this.columns[i].linkModuleData.objectName +
434
- "/";
435
- this.columns[i]["api"] = this.columns[i].linkModuleData.objectApiRoute
436
- ? formUrl + this.columns[i].linkModuleData.objectApiRoute
437
- : formUrl + "Search";
438
-
439
- this.columns[i]["columns"] = {};
440
-
441
- for (
442
- let x = 0;
443
- x < this.columns[i].linkModuleData.moduleFields.length;
444
- x++
445
- ) {
446
- let tempField = this.columns[i].linkModuleData.moduleFields[x];
447
- this.columns[i]["columns"][tempField.field] = {
448
- title: tempField.caption,
449
- width: tempField.width,
450
- visible: tempField.visible,
451
- linkField: tempField.linkValueField,
452
- filter: tempField.isFilter,
453
- };
454
- if (tempField.field === this.columns[i].linkCaptionField) {
455
- this.columns[i]["columns"][tempField.field].linkField =
456
- this.columns[i].field;
457
- this.columns[i]["columns"][tempField.field].filter = true;
458
- }
459
- }
460
- }
461
-
462
- // this.columns[i]['rules'] = {}
463
- // if (this.columns[i].isRequire === true) {
464
- // this.columns[i].rules['required'] = true
465
- // }
466
- // if (this.columns[i].maxLength) {
467
- // this.columns[i].rules['length'] = [0, this.columns[i].maxLength]
468
- // }
469
- }
470
- },
471
-
472
- mounted() {
473
- //let letterLength = this.$refs.content.value
474
- //letterLength = this.$refs['content'].innerText.substr(0, 6) + '...'
475
- window.addEventListener("beforeunload", (e) => this.beforeunloadHandler(e));
476
- },
477
- destroyed() {
478
- window.removeEventListener("beforeunload", (e) =>
479
- this.beforeunloadHandler(e)
480
- );
481
- },
482
- activated() {},
483
- methods: {
484
- preSearch(searchInfo, repeatRowInfo) {
485
- this.$emit("preSearch", searchInfo, repeatRowInfo);
486
- },
487
- beforeunloadHandler(e) {
488
- if (this.formState !== "view") {
489
- e = e || window.event;
490
- e.returnValue = "提示";
491
- return confirm("确认退出");
492
- } else {
493
- return;
494
- }
495
- },
496
- pulldownBtnClick(btnInfo) {
497
- this.$emit("pulldownBtnClick", btnInfo);
498
- },
499
- showToolTip() {},
500
- fieldCaptionClick(col) {
501
- // 下拉框
502
- if (
503
- col.linkModuleData &&
504
- col.linkModuleData.linkModuleId &&
505
- col.linkModuleData.linkModuleOperate.indexOf(sysFormState.view) >= 0
506
- ) {
507
- // 查找模块信息
508
- let linkModule = this.$store.getters.addRouters.filter((filterItem) => {
509
- return (
510
- filterItem.meta &&
511
- filterItem.meta.moduleId === col.linkModuleData.linkModuleId
512
- );
513
- });
514
- if (linkModule.length > 0) {
515
- this.$router.pushRoute({
516
- name: linkModule[0].name,
517
- query: { id: this.row[col.field] },
518
- });
519
- }
520
- }
521
- },
522
- // selectChange(col) {
523
- // if (col.field.indexOf('.') < 0) {
524
- // this.updateDatas[col.field] = this.row[col.field]
525
- // }
526
- // if (
527
- // this.row['sysRowState'] === sysRowState.add ||
528
- // this.row['sysRowState'] === sysRowState.update
529
- // ) {
530
- // return
531
- // }
532
- // this.row['sysRowState'] = sysRowState.update
533
- // },
534
- pullDownChange(colInfo, row) {
535
- this.$emit("change", colInfo);
536
- },
537
- selectMultiChange(colInfo, row) {
538
- this.$emit("change", colInfo);
539
- },
540
- selectChange(colInfo) {
541
- this.$emit("change", colInfo);
542
- },
543
- checkboxChange(colInfo) {
544
- this.$emit("change", colInfo);
545
- },
546
- checkBoxChange(col) {
547
- if (col.field.indexOf(".") < 0) {
548
- this.updateDatas[col.field] = this.row[col.field];
549
- }
550
- this.$emit("change", col);
551
- if (
552
- this.row["sysRowState"] === sysRowState.add ||
553
- this.row["sysRowState"] === sysRowState.update
554
- ) {
555
- return;
556
- }
557
- this.row["sysRowState"] = sysRowState.update;
558
- },
559
- dateChange(col) {
560
- if (col.field.indexOf(".") < 0) {
561
- this.updateDatas[col.field] = this.row[col.field];
562
- }
563
- this.$emit("change", col);
564
- if (
565
- this.row["sysRowState"] === sysRowState.add ||
566
- this.row["sysRowState"] === sysRowState.update
567
- ) {
568
- return;
569
- }
570
- this.row["sysRowState"] = sysRowState.update;
571
- },
572
- inputChange(colInfo) {
573
- // 输入框改变
574
- this.$emit("change", colInfo);
575
- },
576
- // 按钮弹出组件返回输入的值
577
- buttonHandleOk(colInfo, value) {
578
- // 按钮弹出确定改变内容改变
579
- this.$emit("buttonHandleOk", colInfo, value);
580
- },
581
- blurChange(colInfo) {
582
- // 输入框失去焦点
583
- this.$emit("blur", colInfo);
584
- },
585
- numberChange(colInfo) {
586
- // 输入框改变
587
- this.$emit("change", colInfo);
588
- },
589
- longtimeChange(data, col) {
590
- this.row[col.field] = data;
591
- this.$emit("change", col);
592
- if (
593
- this.row["sysRowState"] === sysRowState.add ||
594
- this.row["sysRowState"] === sysRowState.update
595
- ) {
596
- return;
597
- }
598
- this.row["sysRowState"] = sysRowState.update;
599
- },
600
- },
601
- };
602
- </script>
603
-
604
- <style lang="less" scoped>
605
- .form-head {
606
- display: flex;
607
- flex-flow: row wrap;
608
- margin-bottom: 10px;
609
- .form-title {
610
- margin-left: 10px;
611
- }
612
- }
613
- .input-span {
614
- // line-height: 33px;
615
- color: #0b0b0b;
616
- font-size: 12px;
617
- font-weight: normal;
618
- overflow: hidden;
619
- text-overflow: ellipsis;
620
- -o-text-overflow: ellipsis;
621
- display: inline-block;
622
- width: 100%;
623
- height: 32.8px;
624
- white-space: nowrap;
625
- // font-family: "Arial", "Microsoft YaHei";
626
- }
627
- .title-first-input {
628
- width: 200px;
629
- height: 25px;
630
- font-size: 15px;
631
- margin-left: 10px;
632
- font-weight: 500;
633
- }
634
- .title-second-input {
635
- width: 200px;
636
- height: 25px;
637
- font-size: 15px;
638
- margin-left: 10px;
639
- font-weight: 500;
640
- }
641
- .title-first-value {
642
- width: 200px;
643
- height: 40px;
644
- font-size: 24px;
645
- margin-left: 10px;
646
- font-weight: 700;
647
- }
648
- .title-second-value {
649
- width: 200px;
650
- height: 26px;
651
- font-size: 18px;
652
- margin-left: 10px;
653
- font-weight: 600;
654
- }
655
- .option:hover {
656
- background-color: #219bff;
657
- }
658
- .form {
659
- margin-left: 30px;
660
- }
661
- </style>
662
- <style lang="less">
663
- @import "../../styles/default.less";
664
- </style>
1
+ <template>
2
+ <div class="d-form-items">
3
+ <div
4
+ class="d-form-item"
5
+ v-for="col in internalComputedHiddenCols"
6
+ :key="col.field"
7
+ >
8
+ <!-- 文本框输入控件 -->
9
+ <BaseInput
10
+ v-if="
11
+ col.controlType === 'text' &&
12
+ (col.isButtonShow == false || col.isButtonShow == undefined)
13
+ "
14
+ :label="col.title"
15
+ v-model="row[col.field]"
16
+ :edit="col.edit"
17
+ :tooltip="col.tooltip"
18
+ :rules="col.rules"
19
+ @change="
20
+ () => {
21
+ inputChange(col);
22
+ }
23
+ "
24
+ @blur="
25
+ () => {
26
+ blurChange(col);
27
+ }
28
+ "
29
+ />
30
+ <!-- 按钮弹出框输入控件 -->
31
+ <!-- isButtonShow字段是额外添加字段,用于控制区分输入框控件 -->
32
+ <BaseButton
33
+ v-if="col.isButtonShow == true"
34
+ v-model="row[col.field]"
35
+ :colInfo="col"
36
+ :row="row"
37
+ :formRow="formRow"
38
+ @preSearch="preSearch"
39
+ @handleOk="
40
+ (value) => {
41
+ buttonHandleOk(col, value);
42
+ }
43
+ "
44
+ />
45
+ <!-- 文本框输入控件 -->
46
+ <BaseTextArea
47
+ v-if="
48
+ col.controlType === 'textarea' &&
49
+ (col.isButtonShow == false || col.isButtonShow == undefined)
50
+ "
51
+ :label="col.title"
52
+ v-model="row[col.field]"
53
+ :edit="col.edit"
54
+ :tooltip="col.tooltip"
55
+ :rules="col.rules"
56
+ @change="
57
+ () => {
58
+ inputChange(col);
59
+ }
60
+ "
61
+ />
62
+ <!-- 数字输入 -->
63
+ <BaseNumberInput
64
+ v-if="
65
+ col.controlType === 'number' &&
66
+ (col.isButtonShow == false || col.isButtonShow == undefined)
67
+ "
68
+ :label="col.title"
69
+ v-model="row[col.field]"
70
+ :edit="col.edit"
71
+ :rules="col.rules"
72
+ :min="col.min"
73
+ :tooltip="col.tooltip"
74
+ :max="col.max"
75
+ :precision="col.precision"
76
+ @change="
77
+ () => {
78
+ numberChange(col);
79
+ }
80
+ "
81
+ @blur="
82
+ () => {
83
+ blurChange(col);
84
+ }
85
+ "
86
+ />
87
+ <BaseIntervalInput
88
+ v-if="
89
+ col.controlType === 'interval' &&
90
+ (col.isButtonShow == false || col.isButtonShow == undefined)
91
+ "
92
+ :label="col.title"
93
+ v-model="row[col.field]"
94
+ :edit="col.edit"
95
+ :rules="col.rules"
96
+ :tooltip="col.tooltip"
97
+ :displayType="col.displayType"
98
+ :valueType="col.valueType"
99
+ @change="
100
+ () => {
101
+ numberChange(col);
102
+ }
103
+ "
104
+ />
105
+ <!-- 日期选择控件 -->
106
+ <BaseDate
107
+ v-if="
108
+ col.controlType === 'date' &&
109
+ (col.isButtonShow == false || col.isButtonShow == undefined)
110
+ "
111
+ :label="col.title"
112
+ v-model="row[col.field]"
113
+ :edit="col.edit"
114
+ :tooltip="col.tooltip"
115
+ :pastDate="col.pastDate"
116
+ :rules="col.rules"
117
+ :disabledDateValue="col.disabledDateValue"
118
+ @change="
119
+ () => {
120
+ inputChange(col);
121
+ }
122
+ "
123
+ />
124
+ <!-- 日期时间控件 -->
125
+ <BaseDatetime
126
+ v-if="
127
+ col.controlType === 'datetime' &&
128
+ (col.isButtonShow == false || col.isButtonShow == undefined)
129
+ "
130
+ :label="col.title"
131
+ v-model="row[col.field]"
132
+ :pastDate="col.pastDate"
133
+ :tooltip="col.tooltip"
134
+ :edit="col.edit"
135
+ :rules="col.rules"
136
+ :disabledDateValue="col.disabledDateValue"
137
+ @change="
138
+ () => {
139
+ inputChange(col);
140
+ }
141
+ "
142
+ />
143
+ <!-- 单选框 -->
144
+ <BaseCheckbox
145
+ v-if="
146
+ col.controlType === 'checkbox' &&
147
+ (col.isButtonShow == false || col.isButtonShow == undefined)
148
+ "
149
+ :label="col.title"
150
+ v-model="row[col.field]"
151
+ :edit="col.edit"
152
+ :tooltip="col.tooltip"
153
+ :rules="col.rules"
154
+ @change="
155
+ (rowInfo) => {
156
+ checkboxChange(col);
157
+ }
158
+ "
159
+ />
160
+ <BaseTime
161
+ v-if="
162
+ col.controlType === 'time' &&
163
+ (col.isButtonShow == false || col.isButtonShow == undefined)
164
+ "
165
+ :label="col.title"
166
+ v-model="row[col.field]"
167
+ :tooltip="col.tooltip"
168
+ :edit="col.edit"
169
+ :rules="col.rules"
170
+ @change="
171
+ () => {
172
+ inputChange(col);
173
+ }
174
+ "
175
+ />
176
+ <BaseDateWeek
177
+ v-if="
178
+ col.controlType === 'dateweek' &&
179
+ (col.isButtonShow == false || col.isButtonShow == undefined)
180
+ "
181
+ :label="col.title"
182
+ v-model="row[col.field]"
183
+ :edit="col.edit"
184
+ :tooltip="col.tooltip"
185
+ :rules="col.rules"
186
+ @change="
187
+ () => {
188
+ inputChange(col);
189
+ }
190
+ "
191
+ />
192
+ <BaseSelect
193
+ v-if="
194
+ col.controlType === 'select' &&
195
+ (col.isButtonShow == false || col.isButtonShow == undefined)
196
+ "
197
+ :label="col.title"
198
+ v-model="row[col.field]"
199
+ :edit="col.edit"
200
+ :rules="col.rules"
201
+ :tooltip="col.tooltip"
202
+ :dataSource="col.dataSource"
203
+ @change="
204
+ (rowInfo) => {
205
+ selectChange(col);
206
+ }
207
+ "
208
+ />
209
+ <BaseSelectMulti
210
+ v-if="
211
+ col.controlType === 'dropmulti' &&
212
+ (col.isButtonShow == false || col.isButtonShow == undefined)
213
+ "
214
+ :label="col.title"
215
+ v-model="row[col.field]"
216
+ :edit="col.edit"
217
+ :tooltip="col.tooltip"
218
+ :rules="col.rules"
219
+ @change="
220
+ (rowInfo) => {
221
+ selectMultiChange(col);
222
+ }
223
+ "
224
+ :dataSource="col.dataSource"
225
+ />
226
+ <BasePulldown
227
+ v-if="
228
+ col.controlType === 'pulldown' &&
229
+ (col.isButtonShow == false || col.isButtonShow == undefined)
230
+ "
231
+ :formRow="formRow"
232
+ :isOld="isOld"
233
+ :edit="col.edit"
234
+ :defaultExpression="col.defaultExpression"
235
+ :row="row"
236
+ :api="col.api"
237
+ :tooltip="col.tooltip"
238
+ :optBtns="col.optBtns"
239
+ :popupAddName="col.popupAddName"
240
+ :popupAddPath="col.popupAddPath"
241
+ @pulldownBtnClick="pulldownBtnClick"
242
+ :label="col.title"
243
+ :rules="col.rules"
244
+ :route="col.route"
245
+ v-model="row[col.field]"
246
+ :field="col.field"
247
+ :columns="col.columns"
248
+ :pageSize="col.pageSize"
249
+ :immediate="col.immediate"
250
+ @preSearch="preSearch"
251
+ @selectChanged="
252
+ (rowInfo) => {
253
+ pullDownChange(col, rowInfo);
254
+ }
255
+ "
256
+ />
257
+ </div>
258
+ <div class="d-form-item-ghost"></div>
259
+ <div class="d-form-item-ghost"></div>
260
+ <div class="d-form-item-ghost"></div>
261
+ <div class="d-form-item-ghost"></div>
262
+ </div>
263
+ </template>
264
+
265
+ <script>
266
+ import { sysFormState, sysRowState } from "../../utils/enum";
267
+ import BaseInput from "../../BaseInput/index";
268
+ import BaseCheckbox from "../../BaseCheckbox/index";
269
+ import BaseDate from "../../BaseDate/index";
270
+ import BaseDatetime from "../../BaseDatetime/index";
271
+ import BaseDateWeek from "../../BaseDateWeek/index";
272
+ import BaseTextArea from "../../BaseTextArea/index";
273
+ import BaseButton from "../../BaseButton/index";
274
+ import BaseSelect from "../../BaseSelect/index";
275
+ import BaseSelectMulti from "../../BaseSelectMulti/index";
276
+ import BaseTime from "../../BaseTime/index";
277
+ import BasePulldown from "../../BasePulldown/index";
278
+ import BaseIntervalInput from "../../BaseIntervalInput/index";
279
+ import BaseNumberInput from "../../BaseNumberInput/index";
280
+
281
+ import moment from "moment";
282
+ export default {
283
+ components: {
284
+ BaseInput,
285
+ BaseCheckbox,
286
+ BaseDate,
287
+ BaseDatetime,
288
+ BaseDateWeek,
289
+ BaseTextArea,
290
+ BaseButton,
291
+ BaseSelect,
292
+ BaseSelectMulti,
293
+ BaseTime,
294
+ BasePulldown,
295
+ BaseIntervalInput,
296
+ BaseNumberInput,
297
+ },
298
+ name: "BaseForm",
299
+ props: {
300
+ updateDatas: {
301
+ // 更新的数据
302
+ type: Object,
303
+ default: function () {
304
+ return {};
305
+ },
306
+ },
307
+ showLoading: {
308
+ // 是否显示加载信息
309
+ type: Boolean,
310
+ default: false,
311
+ },
312
+ isOld: {
313
+ // 是否老系统
314
+ type: Boolean,
315
+ default: false,
316
+ },
317
+ valueState: {
318
+ type: Object,
319
+ default: function () {
320
+ return {};
321
+ },
322
+ },
323
+ formState: {
324
+ type: String,
325
+ default: sysFormState.view,
326
+ },
327
+ formRow: {
328
+ // 当前页面数据集
329
+ type: Object,
330
+ default: () => {
331
+ return {};
332
+ },
333
+ },
334
+ row: {
335
+ // 当前行,如果是表单的话当前行和当前页面数据集是一样的
336
+ type: Object,
337
+ default: () => {
338
+ return {};
339
+ },
340
+ },
341
+ columns: {
342
+ // 表格列信息
343
+ type: Array,
344
+ default: function () {
345
+ return [];
346
+ },
347
+ },
348
+ dataName: {
349
+ type: String,
350
+ default: function () {
351
+ return "";
352
+ },
353
+ },
354
+ },
355
+ computed: {
356
+ internalComputedHiddenCols: function () {
357
+ let vm = this;
358
+ return this.columns.filter((item) => {
359
+ // if (item.isTitle === true) {
360
+ // // vm.titleCol = item
361
+ // return false
362
+ // }
363
+ // if (item.controlType === controlType.image) {
364
+ // vm.logoCol = item
365
+ // return false
366
+ // }
367
+ return item.visible === true;
368
+ });
369
+ },
370
+ },
371
+ filters: {},
372
+ data() {
373
+ return {
374
+ moment,
375
+ editFormName: "",
376
+ internalEdit: false,
377
+ internalCols: [],
378
+ internalValueState: {},
379
+ internalFormState: sysFormState.view,
380
+ rules: {},
381
+ titleCols: [],
382
+ logoCol: null,
383
+ isShowEditForm: false,
384
+ ref: "",
385
+ };
386
+ },
387
+ watch: {
388
+ // row: {
389
+ // handler: function (newVal) {
390
+ // },
391
+ // deep: true
392
+ // },
393
+ // cols: {
394
+ // handler: function (newVal) {
395
+ // this.internalCols = newVal
396
+ // },
397
+ // deep: true
398
+ // },
399
+ // valueState: { // 表单值状态,更新,还是插入
400
+ // handler: function (newVal) {
401
+ // this.internalValueState = newVal
402
+ // },
403
+ // deep: true
404
+ // },
405
+ // formState: {
406
+ // handler: function (newVal) {
407
+ // this.internalFormState = newVal
408
+ // this.setColState()
409
+ // },
410
+ // deep: true
411
+ // }
412
+ },
413
+ created() {
414
+ for (let i = 0; i < this.columns.length; i++) {
415
+ // if (this.columns[i].isLogo === true) {
416
+ // this.logoCol = this.columns[i]
417
+ // continue
418
+ // }
419
+ // if (this.columns[i].isTitle === true) {
420
+ // this.titleCols.push(this.columns[i])
421
+ // continue
422
+ // }
423
+ if (this.columns[i].controlType === "popup") {
424
+ let formUrl =
425
+ process.env[
426
+ "VUE_APP_" +
427
+ this.columns[i].linkModuleData.objectService.toUpperCase() +
428
+ "_SERVICE_URL"
429
+ ] +
430
+ "/" +
431
+ this.columns[i].linkModuleData.objectApiVersion +
432
+ "/" +
433
+ this.columns[i].linkModuleData.objectName +
434
+ "/";
435
+ this.columns[i]["api"] = this.columns[i].linkModuleData.objectApiRoute
436
+ ? formUrl + this.columns[i].linkModuleData.objectApiRoute
437
+ : formUrl + "Search";
438
+
439
+ this.columns[i]["columns"] = {};
440
+
441
+ for (
442
+ let x = 0;
443
+ x < this.columns[i].linkModuleData.moduleFields.length;
444
+ x++
445
+ ) {
446
+ let tempField = this.columns[i].linkModuleData.moduleFields[x];
447
+ this.columns[i]["columns"][tempField.field] = {
448
+ title: tempField.caption,
449
+ width: tempField.width,
450
+ visible: tempField.visible,
451
+ linkField: tempField.linkValueField,
452
+ filter: tempField.isFilter,
453
+ };
454
+ if (tempField.field === this.columns[i].linkCaptionField) {
455
+ this.columns[i]["columns"][tempField.field].linkField =
456
+ this.columns[i].field;
457
+ this.columns[i]["columns"][tempField.field].filter = true;
458
+ }
459
+ }
460
+ }
461
+
462
+ // this.columns[i]['rules'] = {}
463
+ // if (this.columns[i].isRequire === true) {
464
+ // this.columns[i].rules['required'] = true
465
+ // }
466
+ // if (this.columns[i].maxLength) {
467
+ // this.columns[i].rules['length'] = [0, this.columns[i].maxLength]
468
+ // }
469
+ }
470
+ },
471
+
472
+ mounted() {
473
+ //let letterLength = this.$refs.content.value
474
+ //letterLength = this.$refs['content'].innerText.substr(0, 6) + '...'
475
+ window.addEventListener("beforeunload", (e) => this.beforeunloadHandler(e));
476
+ },
477
+ destroyed() {
478
+ window.removeEventListener("beforeunload", (e) =>
479
+ this.beforeunloadHandler(e)
480
+ );
481
+ },
482
+ activated() {},
483
+ methods: {
484
+ preSearch(searchInfo, repeatRowInfo) {
485
+ this.$emit("preSearch", searchInfo, repeatRowInfo);
486
+ },
487
+ beforeunloadHandler(e) {
488
+ if (this.formState !== "view") {
489
+ e = e || window.event;
490
+ e.returnValue = "提示";
491
+ return confirm("确认退出");
492
+ } else {
493
+ return;
494
+ }
495
+ },
496
+ pulldownBtnClick(btnInfo) {
497
+ this.$emit("pulldownBtnClick", btnInfo);
498
+ },
499
+ showToolTip() {},
500
+ fieldCaptionClick(col) {
501
+ // 下拉框
502
+ if (
503
+ col.linkModuleData &&
504
+ col.linkModuleData.linkModuleId &&
505
+ col.linkModuleData.linkModuleOperate.indexOf(sysFormState.view) >= 0
506
+ ) {
507
+ // 查找模块信息
508
+ let linkModule = this.$store.getters.addRouters.filter((filterItem) => {
509
+ return (
510
+ filterItem.meta &&
511
+ filterItem.meta.moduleId === col.linkModuleData.linkModuleId
512
+ );
513
+ });
514
+ if (linkModule.length > 0) {
515
+ this.$router.pushRoute({
516
+ name: linkModule[0].name,
517
+ query: { id: this.row[col.field] },
518
+ });
519
+ }
520
+ }
521
+ },
522
+ // selectChange(col) {
523
+ // if (col.field.indexOf('.') < 0) {
524
+ // this.updateDatas[col.field] = this.row[col.field]
525
+ // }
526
+ // if (
527
+ // this.row['sysRowState'] === sysRowState.add ||
528
+ // this.row['sysRowState'] === sysRowState.update
529
+ // ) {
530
+ // return
531
+ // }
532
+ // this.row['sysRowState'] = sysRowState.update
533
+ // },
534
+ pullDownChange(colInfo, row) {
535
+ this.$emit("change", colInfo);
536
+ },
537
+ selectMultiChange(colInfo, row) {
538
+ this.$emit("change", colInfo);
539
+ },
540
+ selectChange(colInfo) {
541
+ this.$emit("change", colInfo);
542
+ },
543
+ checkboxChange(colInfo) {
544
+ this.$emit("change", colInfo);
545
+ },
546
+ checkBoxChange(col) {
547
+ if (col.field.indexOf(".") < 0) {
548
+ this.updateDatas[col.field] = this.row[col.field];
549
+ }
550
+ this.$emit("change", col);
551
+ if (
552
+ this.row["sysRowState"] === sysRowState.add ||
553
+ this.row["sysRowState"] === sysRowState.update
554
+ ) {
555
+ return;
556
+ }
557
+ this.row["sysRowState"] = sysRowState.update;
558
+ },
559
+ dateChange(col) {
560
+ if (col.field.indexOf(".") < 0) {
561
+ this.updateDatas[col.field] = this.row[col.field];
562
+ }
563
+ this.$emit("change", col);
564
+ if (
565
+ this.row["sysRowState"] === sysRowState.add ||
566
+ this.row["sysRowState"] === sysRowState.update
567
+ ) {
568
+ return;
569
+ }
570
+ this.row["sysRowState"] = sysRowState.update;
571
+ },
572
+ inputChange(colInfo) {
573
+ // 输入框改变
574
+ this.$emit("change", colInfo);
575
+ },
576
+ // 按钮弹出组件返回输入的值
577
+ buttonHandleOk(colInfo, value) {
578
+ // 按钮弹出确定改变内容改变
579
+ this.$emit("buttonHandleOk", colInfo, value);
580
+ },
581
+ blurChange(colInfo) {
582
+ // 输入框失去焦点
583
+ this.$emit("blur", colInfo);
584
+ },
585
+ numberChange(colInfo) {
586
+ // 输入框改变
587
+ this.$emit("change", colInfo);
588
+ },
589
+ longtimeChange(data, col) {
590
+ this.row[col.field] = data;
591
+ this.$emit("change", col);
592
+ if (
593
+ this.row["sysRowState"] === sysRowState.add ||
594
+ this.row["sysRowState"] === sysRowState.update
595
+ ) {
596
+ return;
597
+ }
598
+ this.row["sysRowState"] = sysRowState.update;
599
+ },
600
+ },
601
+ };
602
+ </script>
603
+
604
+ <style lang="less" scoped>
605
+ .form-head {
606
+ display: flex;
607
+ flex-flow: row wrap;
608
+ margin-bottom: 10px;
609
+ .form-title {
610
+ margin-left: 10px;
611
+ }
612
+ }
613
+ .input-span {
614
+ // line-height: 33px;
615
+ color: #0b0b0b;
616
+ font-size: 12px;
617
+ font-weight: normal;
618
+ overflow: hidden;
619
+ text-overflow: ellipsis;
620
+ -o-text-overflow: ellipsis;
621
+ display: inline-block;
622
+ width: 100%;
623
+ height: 32.8px;
624
+ white-space: nowrap;
625
+ // font-family: "Arial", "Microsoft YaHei";
626
+ }
627
+ .title-first-input {
628
+ width: 200px;
629
+ height: 25px;
630
+ font-size: 15px;
631
+ margin-left: 10px;
632
+ font-weight: 500;
633
+ }
634
+ .title-second-input {
635
+ width: 200px;
636
+ height: 25px;
637
+ font-size: 15px;
638
+ margin-left: 10px;
639
+ font-weight: 500;
640
+ }
641
+ .title-first-value {
642
+ width: 200px;
643
+ height: 40px;
644
+ font-size: 24px;
645
+ margin-left: 10px;
646
+ font-weight: 700;
647
+ }
648
+ .title-second-value {
649
+ width: 200px;
650
+ height: 26px;
651
+ font-size: 18px;
652
+ margin-left: 10px;
653
+ font-weight: 600;
654
+ }
655
+ .option:hover {
656
+ background-color: #219bff;
657
+ }
658
+ .form {
659
+ margin-left: 30px;
660
+ }
661
+ </style>
662
+ <style lang="less">
663
+ @import "../../styles/default.less";
664
+ </style>
665
665