doway-coms 1.6.65 → 1.6.68

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 (67) 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 +688 -686
  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 +2735 -2735
  20. package/packages/BaseGridAdjust/index.js +9 -9
  21. package/packages/BaseGridAdjust/src/index.vue +482 -482
  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/LeaveAMessage/index.js +7 -7
  53. package/packages/LeaveAMessage/src/index.vue +573 -568
  54. package/packages/index.js +167 -167
  55. package/packages/styles/default.less +80 -80
  56. package/packages/utils/api.js +88 -88
  57. package/packages/utils/auth.js +38 -38
  58. package/packages/utils/common.js +595 -595
  59. package/packages/utils/dom.js +181 -181
  60. package/packages/utils/enum.js +84 -84
  61. package/packages/utils/filters.js +458 -458
  62. package/packages/utils/gridFormat.js +60 -60
  63. package/packages/utils/msg.js +16 -16
  64. package/packages/utils/patchFiles.js +44 -44
  65. package/packages/utils/request.js +169 -169
  66. package/packages/utils/store.js +261 -261
  67. package/vue.config.js +59 -59
@@ -1,687 +1,689 @@
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
- <BaseDateMonth
194
- v-if="
195
- col.controlType === 'datemonth' &&
196
- (col.isButtonShow == false || col.isButtonShow == undefined)
197
- "
198
- :label="col.title"
199
- v-model="row[col.field]"
200
- :edit="col.edit"
201
- :tooltip="col.tooltip"
202
- :rules="col.rules"
203
- @change="
204
- () => {
205
- inputChange(col);
206
- }
207
- "
208
- />
209
- <BaseSelect
210
- v-if="
211
- col.controlType === 'select' &&
212
- (col.isButtonShow == false || col.isButtonShow == undefined)
213
- "
214
- :label="col.title"
215
- v-model="row[col.field]"
216
- :edit="col.edit"
217
- :rules="col.rules"
218
- :tooltip="col.tooltip"
219
- :dataSource="col.dataSource"
220
- @change="
221
- (rowInfo) => {
222
- selectChange(col);
223
- }
224
- "
225
- />
226
- <BaseSelectMulti
227
- v-if="
228
- col.controlType === 'dropmulti' &&
229
- (col.isButtonShow == false || col.isButtonShow == undefined)
230
- "
231
- :label="col.title"
232
- v-model="row[col.field]"
233
- :edit="col.edit"
234
- :tooltip="col.tooltip"
235
- :rules="col.rules"
236
- @change="
237
- (rowInfo) => {
238
- selectMultiChange(col);
239
- }
240
- "
241
- :dataSource="col.dataSource"
242
- />
243
- <BasePulldown
244
- v-if="
245
- col.controlType === 'pulldown' &&
246
- (col.isButtonShow == false || col.isButtonShow == undefined)
247
- "
248
- :formRow="formRow"
249
- :isOld="isOld"
250
- :edit="col.edit"
251
- :defaultExpression="col.defaultExpression"
252
- :row="row"
253
- :api="col.api"
254
- :tooltip="col.tooltip"
255
- :optBtns="col.optBtns"
256
- :popupAddName="col.popupAddName"
257
- :popupAddPath="col.popupAddPath"
258
- @pulldownBtnClick="pulldownBtnClick"
259
- :label="col.title"
260
- :rules="col.rules"
261
- :route="col.route"
262
- v-model="row[col.field]"
263
- :field="col.field"
264
- :columns="col.columns"
265
- :pageSize="col.pageSize"
266
- :immediate="col.immediate"
267
- @preSearch="preSearch"
268
- @selectChanged="
269
- (rowInfo) => {
270
- pullDownChange(col, rowInfo);
271
- }
272
- "
273
- />
274
- </div>
275
- <div class="d-form-item-ghost"></div>
276
- <div class="d-form-item-ghost"></div>
277
- <div class="d-form-item-ghost"></div>
278
- <div class="d-form-item-ghost"></div>
279
- </div>
280
- </template>
281
-
282
- <script>
283
- import { sysFormState, sysRowState } from "../../utils/enum";
284
- import BaseInput from "../../BaseInput/index";
285
- import BaseCheckbox from "../../BaseCheckbox/index";
286
- import BaseDate from "../../BaseDate/index";
287
- import BaseDatetime from "../../BaseDatetime/index";
288
- import BaseDateWeek from "../../BaseDateWeek/index";
289
- import BaseTextArea from "../../BaseTextArea/index";
290
- import BaseButton from "../../BaseButton/index";
291
- import BaseSelect from "../../BaseSelect/index";
292
- import BaseSelectMulti from "../../BaseSelectMulti/index";
293
- import BaseTime from "../../BaseTime/index";
294
- import BasePulldown from "../../BasePulldown/index";
295
- import BaseIntervalInput from "../../BaseIntervalInput/index";
296
- import BaseNumberInput from "../../BaseNumberInput/index";
297
-
298
- import moment from "moment";
299
- export default {
300
- components: {
301
- BaseInput,
302
- BaseCheckbox,
303
- BaseDate,
304
- BaseDatetime,
305
- BaseDateWeek,
306
- BaseTextArea,
307
- BaseButton,
308
- BaseSelect,
309
- BaseSelectMulti,
310
- BaseTime,
311
- BasePulldown,
312
- BaseIntervalInput,
313
- BaseNumberInput,
314
- },
315
- name: "BaseForm",
316
- props: {
317
- updateDatas: {
318
- // 更新的数据
319
- type: Object,
320
- default: function () {
321
- return {};
322
- },
323
- },
324
- showLoading: {
325
- // 是否显示加载信息
326
- type: Boolean,
327
- default: false,
328
- },
329
- isOld: {
330
- // 是否老系统
331
- type: Boolean,
332
- default: false,
333
- },
334
- valueState: {
335
- type: Object,
336
- default: function () {
337
- return {};
338
- },
339
- },
340
- formState: {
341
- type: String,
342
- default: sysFormState.view,
343
- },
344
- formRow: {
345
- // 当前页面数据集
346
- type: Object,
347
- default: () => {
348
- return {};
349
- },
350
- },
351
- row: {
352
- // 当前行,如果是表单的话当前行和当前页面数据集是一样的
353
- type: Object,
354
- default: () => {
355
- return {};
356
- },
357
- },
358
- columns: {
359
- // 表格列信息
360
- type: Array,
361
- default: function () {
362
- return [];
363
- },
364
- },
365
- dataName: {
366
- type: String,
367
- default: function () {
368
- return "";
369
- },
370
- },
371
- },
372
- computed: {
373
- internalComputedHiddenCols: function () {
374
- let vm = this;
375
- return this.columns.filter((item) => {
376
- // if (item.isTitle === true) {
377
- // // vm.titleCol = item
378
- // return false
379
- // }
380
- // if (item.controlType === controlType.image) {
381
- // vm.logoCol = item
382
- // return false
383
- // }
384
- return item.visible === true;
385
- });
386
- },
387
- },
388
- filters: {},
389
- data() {
390
- return {
391
- hiddenDetail:false,
392
- moment,
393
- editFormName: "",
394
- internalEdit: false,
395
- internalCols: [],
396
- internalValueState: {},
397
- internalFormState: sysFormState.view,
398
- rules: {},
399
- titleCols: [],
400
- logoCol: null,
401
- isShowEditForm: false,
402
- ref: "",
403
- };
404
- },
405
- watch: {
406
- // row: {
407
- // handler: function (newVal) {
408
- // },
409
- // deep: true
410
- // },
411
- // cols: {
412
- // handler: function (newVal) {
413
- // this.internalCols = newVal
414
- // },
415
- // deep: true
416
- // },
417
- // valueState: { // 表单值状态,更新,还是插入
418
- // handler: function (newVal) {
419
- // this.internalValueState = newVal
420
- // },
421
- // deep: true
422
- // },
423
- // formState: {
424
- // handler: function (newVal) {
425
- // this.internalFormState = newVal
426
- // this.setColState()
427
- // },
428
- // deep: true
429
- // }
430
- },
431
- created() {
432
- for (let i = 0; i < this.columns.length; i++) {
433
- // if (this.columns[i].isLogo === true) {
434
- // this.logoCol = this.columns[i]
435
- // continue
436
- // }
437
- // if (this.columns[i].isTitle === true) {
438
- // this.titleCols.push(this.columns[i])
439
- // continue
440
- // }
441
- if (this.columns[i].controlType === "popup") {
442
- let formUrl =
443
- process.env[
444
- "VUE_APP_" +
445
- this.columns[i].linkModuleData.objectService.toUpperCase() +
446
- "_SERVICE_URL"
447
- ] +
448
- "/" +
449
- this.columns[i].linkModuleData.objectApiVersion +
450
- "/" +
451
- this.columns[i].linkModuleData.objectName +
452
- "/";
453
- this.columns[i]["api"] = this.columns[i].linkModuleData.objectApiRoute
454
- ? formUrl + this.columns[i].linkModuleData.objectApiRoute
455
- : formUrl + "Search";
456
-
457
- this.columns[i]["columns"] = {};
458
-
459
- for (
460
- let x = 0;
461
- x < this.columns[i].linkModuleData.moduleFields.length;
462
- x++
463
- ) {
464
- let tempField = this.columns[i].linkModuleData.moduleFields[x];
465
- this.columns[i]["columns"][tempField.field] = {
466
- title: tempField.caption,
467
- width: tempField.width,
468
- visible: tempField.visible,
469
- linkField: tempField.linkValueField,
470
- filter: tempField.isFilter,
471
- };
472
- if (tempField.field === this.columns[i].linkCaptionField) {
473
- this.columns[i]["columns"][tempField.field].linkField =
474
- this.columns[i].field;
475
- this.columns[i]["columns"][tempField.field].filter = true;
476
- }
477
- }
478
- }
479
-
480
- // this.columns[i]['rules'] = {}
481
- // if (this.columns[i].isRequire === true) {
482
- // this.columns[i].rules['required'] = true
483
- // }
484
- // if (this.columns[i].maxLength) {
485
- // this.columns[i].rules['length'] = [0, this.columns[i].maxLength]
486
- // }
487
- }
488
- },
489
-
490
- mounted() {
491
- //let letterLength = this.$refs.content.value
492
- //letterLength = this.$refs['content'].innerText.substr(0, 6) + '...'
493
- window.addEventListener("beforeunload", (e) => this.beforeunloadHandler(e));
494
- },
495
- destroyed() {
496
- window.removeEventListener("beforeunload", (e) =>
497
- this.beforeunloadHandler(e)
498
- );
499
- },
500
- activated() {},
501
- methods: {
502
- preSearch(searchInfo, repeatRowInfo) {
503
- this.$emit("preSearch", searchInfo, repeatRowInfo);
504
- },
505
- beforeunloadHandler(e) {
506
- if (this.formState !== "view") {
507
- e = e || window.event;
508
- e.returnValue = "提示";
509
- return confirm("确认退出");
510
- } else {
511
- return;
512
- }
513
- },
514
- pulldownBtnClick(btnInfo) {
515
- this.$emit("pulldownBtnClick", btnInfo);
516
- },
517
- showToolTip() {},
518
- fieldCaptionClick(col) {
519
- // 下拉框
520
- if (
521
- col.linkModuleData &&
522
- col.linkModuleData.linkModuleId &&
523
- col.linkModuleData.linkModuleOperate.indexOf(sysFormState.view) >= 0
524
- ) {
525
- // 查找模块信息
526
- let linkModule = this.$store.getters.addRouters.filter((filterItem) => {
527
- return (
528
- filterItem.meta &&
529
- filterItem.meta.moduleId === col.linkModuleData.linkModuleId
530
- );
531
- });
532
- if (linkModule.length > 0) {
533
- this.$router.pushRoute({
534
- name: linkModule[0].name,
535
- query: { id: this.row[col.field] },
536
- });
537
- }
538
- }
539
- },
540
- // selectChange(col) {
541
- // if (col.field.indexOf('.') < 0) {
542
- // this.updateDatas[col.field] = this.row[col.field]
543
- // }
544
- // if (
545
- // this.row['sysRowState'] === sysRowState.add ||
546
- // this.row['sysRowState'] === sysRowState.update
547
- // ) {
548
- // return
549
- // }
550
- // this.row['sysRowState'] = sysRowState.update
551
- // },
552
- pullDownChange(colInfo, row) {
553
- this.$emit("change", colInfo);
554
- },
555
- selectMultiChange(colInfo, row) {
556
- this.$emit("change", colInfo);
557
- },
558
- selectChange(colInfo) {
559
- this.$emit("change", colInfo);
560
- },
561
- checkboxChange(colInfo) {
562
- this.$emit("change", colInfo);
563
- },
564
- checkBoxChange(col) {
565
- if (col.field.indexOf(".") < 0) {
566
- this.updateDatas[col.field] = this.row[col.field];
567
- }
568
- this.$emit("change", col);
569
- if (
570
- this.row["sysRowState"] === sysRowState.add ||
571
- this.row["sysRowState"] === sysRowState.update
572
- ) {
573
- return;
574
- }
575
- this.row["sysRowState"] = sysRowState.update;
576
- },
577
- dateChange(col) {
578
- if (col.field.indexOf(".") < 0) {
579
- this.updateDatas[col.field] = this.row[col.field];
580
- }
581
- this.$emit("change", col);
582
- if (
583
- this.row["sysRowState"] === sysRowState.add ||
584
- this.row["sysRowState"] === sysRowState.update
585
- ) {
586
- return;
587
- }
588
- this.row["sysRowState"] = sysRowState.update;
589
- },
590
- inputChange(colInfo) {
591
- // 输入框改变
592
- this.$emit("change", colInfo);
593
- },
594
- // 按钮弹出组件返回输入的值
595
- buttonHandleOk(colInfo, value) {
596
- // 按钮弹出确定改变内容改变
597
- this.$emit("buttonHandleOk", colInfo, value);
598
- },
599
- blurChange(colInfo) {
600
- // 输入框失去焦点
601
- this.$emit("blur", colInfo);
602
- },
603
- numberChange(colInfo) {
604
- // 输入框改变
605
- this.$emit("change", colInfo);
606
- },
607
- longtimeChange(data, col) {
608
- this.row[col.field] = data;
609
- this.$emit("change", col);
610
- if (
611
- this.row["sysRowState"] === sysRowState.add ||
612
- this.row["sysRowState"] === sysRowState.update
613
- ) {
614
- return;
615
- }
616
- this.row["sysRowState"] = sysRowState.update;
617
- },
618
- changeControlType(field, controlType) {
619
- let col = this.internalComputedHiddenCols.find(col => col.field === field)
620
- col.controlType = controlType
621
- }
622
- },
623
- };
624
- </script>
625
-
626
- <style lang="less" scoped>
627
- .form-head {
628
- display: flex;
629
- flex-flow: row wrap;
630
- margin-bottom: 10px;
631
- .form-title {
632
- margin-left: 10px;
633
- }
634
- }
635
- .input-span {
636
- // line-height: 33px;
637
- color: #0b0b0b;
638
- font-size: 12px;
639
- font-weight: normal;
640
- overflow: hidden;
641
- text-overflow: ellipsis;
642
- -o-text-overflow: ellipsis;
643
- display: inline-block;
644
- width: 100%;
645
- height: 32.8px;
646
- white-space: nowrap;
647
- // font-family: "Arial", "Microsoft YaHei";
648
- }
649
- .title-first-input {
650
- width: 200px;
651
- height: 25px;
652
- font-size: 15px;
653
- margin-left: 10px;
654
- font-weight: 500;
655
- }
656
- .title-second-input {
657
- width: 200px;
658
- height: 25px;
659
- font-size: 15px;
660
- margin-left: 10px;
661
- font-weight: 500;
662
- }
663
- .title-first-value {
664
- width: 200px;
665
- height: 40px;
666
- font-size: 24px;
667
- margin-left: 10px;
668
- font-weight: 700;
669
- }
670
- .title-second-value {
671
- width: 200px;
672
- height: 26px;
673
- font-size: 18px;
674
- margin-left: 10px;
675
- font-weight: 600;
676
- }
677
- .option:hover {
678
- background-color: #219bff;
679
- }
680
- .form {
681
- margin-left: 30px;
682
- }
683
- </style>
684
- <style lang="less">
685
- @import "../../styles/default.less";
686
- </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
+ <BaseDateMonth
194
+ v-if="
195
+ col.controlType === 'datemonth' &&
196
+ (col.isButtonShow == false || col.isButtonShow == undefined)
197
+ "
198
+ :label="col.title"
199
+ v-model="row[col.field]"
200
+ :edit="col.edit"
201
+ :tooltip="col.tooltip"
202
+ :rules="col.rules"
203
+ @change="
204
+ () => {
205
+ inputChange(col);
206
+ }
207
+ "
208
+ />
209
+ <BaseSelect
210
+ v-if="
211
+ col.controlType === 'select' &&
212
+ (col.isButtonShow == false || col.isButtonShow == undefined)
213
+ "
214
+ :label="col.title"
215
+ v-model="row[col.field]"
216
+ :edit="col.edit"
217
+ :rules="col.rules"
218
+ :tooltip="col.tooltip"
219
+ :dataSource="col.dataSource"
220
+ @change="
221
+ (rowInfo) => {
222
+ selectChange(col);
223
+ }
224
+ "
225
+ />
226
+ <BaseSelectMulti
227
+ v-if="
228
+ col.controlType === 'dropmulti' &&
229
+ (col.isButtonShow == false || col.isButtonShow == undefined)
230
+ "
231
+ :label="col.title"
232
+ v-model="row[col.field]"
233
+ :edit="col.edit"
234
+ :tooltip="col.tooltip"
235
+ :rules="col.rules"
236
+ @change="
237
+ (rowInfo) => {
238
+ selectMultiChange(col);
239
+ }
240
+ "
241
+ :dataSource="col.dataSource"
242
+ />
243
+ <BasePulldown
244
+ v-if="
245
+ col.controlType === 'pulldown' &&
246
+ (col.isButtonShow == false || col.isButtonShow == undefined)
247
+ "
248
+ :formRow="formRow"
249
+ :isOld="isOld"
250
+ :edit="col.edit"
251
+ :defaultExpression="col.defaultExpression"
252
+ :row="row"
253
+ :api="col.api"
254
+ :tooltip="col.tooltip"
255
+ :optBtns="col.optBtns"
256
+ :popupAddName="col.popupAddName"
257
+ :popupAddPath="col.popupAddPath"
258
+ @pulldownBtnClick="pulldownBtnClick"
259
+ :label="col.title"
260
+ :rules="col.rules"
261
+ :route="col.route"
262
+ v-model="row[col.field]"
263
+ :field="col.field"
264
+ :columns="col.columns"
265
+ :pageSize="col.pageSize"
266
+ :immediate="col.immediate"
267
+ @preSearch="preSearch"
268
+ @selectChanged="
269
+ (rowInfo) => {
270
+ pullDownChange(col, rowInfo);
271
+ }
272
+ "
273
+ />
274
+ </div>
275
+ <div class="d-form-item-ghost"></div>
276
+ <div class="d-form-item-ghost"></div>
277
+ <div class="d-form-item-ghost"></div>
278
+ <div class="d-form-item-ghost"></div>
279
+ </div>
280
+ </template>
281
+
282
+ <script>
283
+ import { sysFormState, sysRowState } from "../../utils/enum";
284
+ import BaseInput from "../../BaseInput/index";
285
+ import BaseCheckbox from "../../BaseCheckbox/index";
286
+ import BaseDate from "../../BaseDate/index";
287
+ import BaseDatetime from "../../BaseDatetime/index";
288
+ import BaseDateWeek from "../../BaseDateWeek/index";
289
+ import BaseTextArea from "../../BaseTextArea/index";
290
+ import BaseButton from "../../BaseButton/index";
291
+ import BaseSelect from "../../BaseSelect/index";
292
+ import BaseSelectMulti from "../../BaseSelectMulti/index";
293
+ import BaseTime from "../../BaseTime/index";
294
+ import BasePulldown from "../../BasePulldown/index";
295
+ import BaseIntervalInput from "../../BaseIntervalInput/index";
296
+ import BaseNumberInput from "../../BaseNumberInput/index";
297
+
298
+ import moment from "moment";
299
+ import BaseDateMonth from "../../BaseDateMonth";
300
+ export default {
301
+ components: {
302
+ BaseInput,
303
+ BaseCheckbox,
304
+ BaseDate,
305
+ BaseDatetime,
306
+ BaseDateWeek,
307
+ BaseDateMonth,
308
+ BaseTextArea,
309
+ BaseButton,
310
+ BaseSelect,
311
+ BaseSelectMulti,
312
+ BaseTime,
313
+ BasePulldown,
314
+ BaseIntervalInput,
315
+ BaseNumberInput,
316
+ },
317
+ name: "BaseForm",
318
+ props: {
319
+ updateDatas: {
320
+ // 更新的数据
321
+ type: Object,
322
+ default: function () {
323
+ return {};
324
+ },
325
+ },
326
+ showLoading: {
327
+ // 是否显示加载信息
328
+ type: Boolean,
329
+ default: false,
330
+ },
331
+ isOld: {
332
+ // 是否老系统
333
+ type: Boolean,
334
+ default: false,
335
+ },
336
+ valueState: {
337
+ type: Object,
338
+ default: function () {
339
+ return {};
340
+ },
341
+ },
342
+ formState: {
343
+ type: String,
344
+ default: sysFormState.view,
345
+ },
346
+ formRow: {
347
+ // 当前页面数据集
348
+ type: Object,
349
+ default: () => {
350
+ return {};
351
+ },
352
+ },
353
+ row: {
354
+ // 当前行,如果是表单的话当前行和当前页面数据集是一样的
355
+ type: Object,
356
+ default: () => {
357
+ return {};
358
+ },
359
+ },
360
+ columns: {
361
+ // 表格列信息
362
+ type: Array,
363
+ default: function () {
364
+ return [];
365
+ },
366
+ },
367
+ dataName: {
368
+ type: String,
369
+ default: function () {
370
+ return "";
371
+ },
372
+ },
373
+ },
374
+ computed: {
375
+ internalComputedHiddenCols: function () {
376
+ let vm = this;
377
+ return this.columns.filter((item) => {
378
+ // if (item.isTitle === true) {
379
+ // // vm.titleCol = item
380
+ // return false
381
+ // }
382
+ // if (item.controlType === controlType.image) {
383
+ // vm.logoCol = item
384
+ // return false
385
+ // }
386
+ return item.visible === true;
387
+ });
388
+ },
389
+ },
390
+ filters: {},
391
+ data() {
392
+ return {
393
+ hiddenDetail:false,
394
+ moment,
395
+ editFormName: "",
396
+ internalEdit: false,
397
+ internalCols: [],
398
+ internalValueState: {},
399
+ internalFormState: sysFormState.view,
400
+ rules: {},
401
+ titleCols: [],
402
+ logoCol: null,
403
+ isShowEditForm: false,
404
+ ref: "",
405
+ };
406
+ },
407
+ watch: {
408
+ // row: {
409
+ // handler: function (newVal) {
410
+ // },
411
+ // deep: true
412
+ // },
413
+ // cols: {
414
+ // handler: function (newVal) {
415
+ // this.internalCols = newVal
416
+ // },
417
+ // deep: true
418
+ // },
419
+ // valueState: { // 表单值状态,更新,还是插入
420
+ // handler: function (newVal) {
421
+ // this.internalValueState = newVal
422
+ // },
423
+ // deep: true
424
+ // },
425
+ // formState: {
426
+ // handler: function (newVal) {
427
+ // this.internalFormState = newVal
428
+ // this.setColState()
429
+ // },
430
+ // deep: true
431
+ // }
432
+ },
433
+ created() {
434
+ for (let i = 0; i < this.columns.length; i++) {
435
+ // if (this.columns[i].isLogo === true) {
436
+ // this.logoCol = this.columns[i]
437
+ // continue
438
+ // }
439
+ // if (this.columns[i].isTitle === true) {
440
+ // this.titleCols.push(this.columns[i])
441
+ // continue
442
+ // }
443
+ if (this.columns[i].controlType === "popup") {
444
+ let formUrl =
445
+ process.env[
446
+ "VUE_APP_" +
447
+ this.columns[i].linkModuleData.objectService.toUpperCase() +
448
+ "_SERVICE_URL"
449
+ ] +
450
+ "/" +
451
+ this.columns[i].linkModuleData.objectApiVersion +
452
+ "/" +
453
+ this.columns[i].linkModuleData.objectName +
454
+ "/";
455
+ this.columns[i]["api"] = this.columns[i].linkModuleData.objectApiRoute
456
+ ? formUrl + this.columns[i].linkModuleData.objectApiRoute
457
+ : formUrl + "Search";
458
+
459
+ this.columns[i]["columns"] = {};
460
+
461
+ for (
462
+ let x = 0;
463
+ x < this.columns[i].linkModuleData.moduleFields.length;
464
+ x++
465
+ ) {
466
+ let tempField = this.columns[i].linkModuleData.moduleFields[x];
467
+ this.columns[i]["columns"][tempField.field] = {
468
+ title: tempField.caption,
469
+ width: tempField.width,
470
+ visible: tempField.visible,
471
+ linkField: tempField.linkValueField,
472
+ filter: tempField.isFilter,
473
+ };
474
+ if (tempField.field === this.columns[i].linkCaptionField) {
475
+ this.columns[i]["columns"][tempField.field].linkField =
476
+ this.columns[i].field;
477
+ this.columns[i]["columns"][tempField.field].filter = true;
478
+ }
479
+ }
480
+ }
481
+
482
+ // this.columns[i]['rules'] = {}
483
+ // if (this.columns[i].isRequire === true) {
484
+ // this.columns[i].rules['required'] = true
485
+ // }
486
+ // if (this.columns[i].maxLength) {
487
+ // this.columns[i].rules['length'] = [0, this.columns[i].maxLength]
488
+ // }
489
+ }
490
+ },
491
+
492
+ mounted() {
493
+ //let letterLength = this.$refs.content.value
494
+ //letterLength = this.$refs['content'].innerText.substr(0, 6) + '...'
495
+ window.addEventListener("beforeunload", (e) => this.beforeunloadHandler(e));
496
+ },
497
+ destroyed() {
498
+ window.removeEventListener("beforeunload", (e) =>
499
+ this.beforeunloadHandler(e)
500
+ );
501
+ },
502
+ activated() {},
503
+ methods: {
504
+ preSearch(searchInfo, repeatRowInfo) {
505
+ this.$emit("preSearch", searchInfo, repeatRowInfo);
506
+ },
507
+ beforeunloadHandler(e) {
508
+ if (this.formState !== "view") {
509
+ e = e || window.event;
510
+ e.returnValue = "提示";
511
+ return confirm("确认退出");
512
+ } else {
513
+ return;
514
+ }
515
+ },
516
+ pulldownBtnClick(btnInfo) {
517
+ this.$emit("pulldownBtnClick", btnInfo);
518
+ },
519
+ showToolTip() {},
520
+ fieldCaptionClick(col) {
521
+ // 下拉框
522
+ if (
523
+ col.linkModuleData &&
524
+ col.linkModuleData.linkModuleId &&
525
+ col.linkModuleData.linkModuleOperate.indexOf(sysFormState.view) >= 0
526
+ ) {
527
+ // 查找模块信息
528
+ let linkModule = this.$store.getters.addRouters.filter((filterItem) => {
529
+ return (
530
+ filterItem.meta &&
531
+ filterItem.meta.moduleId === col.linkModuleData.linkModuleId
532
+ );
533
+ });
534
+ if (linkModule.length > 0) {
535
+ this.$router.pushRoute({
536
+ name: linkModule[0].name,
537
+ query: { id: this.row[col.field] },
538
+ });
539
+ }
540
+ }
541
+ },
542
+ // selectChange(col) {
543
+ // if (col.field.indexOf('.') < 0) {
544
+ // this.updateDatas[col.field] = this.row[col.field]
545
+ // }
546
+ // if (
547
+ // this.row['sysRowState'] === sysRowState.add ||
548
+ // this.row['sysRowState'] === sysRowState.update
549
+ // ) {
550
+ // return
551
+ // }
552
+ // this.row['sysRowState'] = sysRowState.update
553
+ // },
554
+ pullDownChange(colInfo, row) {
555
+ this.$emit("change", colInfo);
556
+ },
557
+ selectMultiChange(colInfo, row) {
558
+ this.$emit("change", colInfo);
559
+ },
560
+ selectChange(colInfo) {
561
+ this.$emit("change", colInfo);
562
+ },
563
+ checkboxChange(colInfo) {
564
+ this.$emit("change", colInfo);
565
+ },
566
+ checkBoxChange(col) {
567
+ if (col.field.indexOf(".") < 0) {
568
+ this.updateDatas[col.field] = this.row[col.field];
569
+ }
570
+ this.$emit("change", col);
571
+ if (
572
+ this.row["sysRowState"] === sysRowState.add ||
573
+ this.row["sysRowState"] === sysRowState.update
574
+ ) {
575
+ return;
576
+ }
577
+ this.row["sysRowState"] = sysRowState.update;
578
+ },
579
+ dateChange(col) {
580
+ if (col.field.indexOf(".") < 0) {
581
+ this.updateDatas[col.field] = this.row[col.field];
582
+ }
583
+ this.$emit("change", col);
584
+ if (
585
+ this.row["sysRowState"] === sysRowState.add ||
586
+ this.row["sysRowState"] === sysRowState.update
587
+ ) {
588
+ return;
589
+ }
590
+ this.row["sysRowState"] = sysRowState.update;
591
+ },
592
+ inputChange(colInfo) {
593
+ // 输入框改变
594
+ this.$emit("change", colInfo);
595
+ },
596
+ // 按钮弹出组件返回输入的值
597
+ buttonHandleOk(colInfo, value) {
598
+ // 按钮弹出确定改变内容改变
599
+ this.$emit("buttonHandleOk", colInfo, value);
600
+ },
601
+ blurChange(colInfo) {
602
+ // 输入框失去焦点
603
+ this.$emit("blur", colInfo);
604
+ },
605
+ numberChange(colInfo) {
606
+ // 输入框改变
607
+ this.$emit("change", colInfo);
608
+ },
609
+ longtimeChange(data, col) {
610
+ this.row[col.field] = data;
611
+ this.$emit("change", col);
612
+ if (
613
+ this.row["sysRowState"] === sysRowState.add ||
614
+ this.row["sysRowState"] === sysRowState.update
615
+ ) {
616
+ return;
617
+ }
618
+ this.row["sysRowState"] = sysRowState.update;
619
+ },
620
+ changeControlType(field, controlType) {
621
+ let col = this.internalComputedHiddenCols.find(col => col.field === field)
622
+ col.controlType = controlType
623
+ }
624
+ },
625
+ };
626
+ </script>
627
+
628
+ <style lang="less" scoped>
629
+ .form-head {
630
+ display: flex;
631
+ flex-flow: row wrap;
632
+ margin-bottom: 10px;
633
+ .form-title {
634
+ margin-left: 10px;
635
+ }
636
+ }
637
+ .input-span {
638
+ // line-height: 33px;
639
+ color: #0b0b0b;
640
+ font-size: 12px;
641
+ font-weight: normal;
642
+ overflow: hidden;
643
+ text-overflow: ellipsis;
644
+ -o-text-overflow: ellipsis;
645
+ display: inline-block;
646
+ width: 100%;
647
+ height: 32.8px;
648
+ white-space: nowrap;
649
+ // font-family: "Arial", "Microsoft YaHei";
650
+ }
651
+ .title-first-input {
652
+ width: 200px;
653
+ height: 25px;
654
+ font-size: 15px;
655
+ margin-left: 10px;
656
+ font-weight: 500;
657
+ }
658
+ .title-second-input {
659
+ width: 200px;
660
+ height: 25px;
661
+ font-size: 15px;
662
+ margin-left: 10px;
663
+ font-weight: 500;
664
+ }
665
+ .title-first-value {
666
+ width: 200px;
667
+ height: 40px;
668
+ font-size: 24px;
669
+ margin-left: 10px;
670
+ font-weight: 700;
671
+ }
672
+ .title-second-value {
673
+ width: 200px;
674
+ height: 26px;
675
+ font-size: 18px;
676
+ margin-left: 10px;
677
+ font-weight: 600;
678
+ }
679
+ .option:hover {
680
+ background-color: #219bff;
681
+ }
682
+ .form {
683
+ margin-left: 30px;
684
+ }
685
+ </style>
686
+ <style lang="less">
687
+ @import "../../styles/default.less";
688
+ </style>
687
689