doway-coms 1.6.42 → 1.6.43

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