doway-coms 1.6.62 → 1.6.64

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 (69) 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/BaseDateMonth/index.js +8 -0
  11. package/packages/BaseDateMonth/src/index.vue +164 -0
  12. package/packages/BaseDateWeek/index.js +7 -7
  13. package/packages/BaseDateWeek/src/index.vue +163 -163
  14. package/packages/BaseDatetime/index.js +7 -7
  15. package/packages/BaseDatetime/src/index.vue +196 -196
  16. package/packages/BaseForm/index.js +7 -7
  17. package/packages/BaseForm/src/index.vue +686 -666
  18. package/packages/BaseGantt/index.js +9 -9
  19. package/packages/BaseGantt/src/index.vue +608 -608
  20. package/packages/BaseGrid/index.js +9 -9
  21. package/packages/BaseGrid/src/index.vue +2735 -2735
  22. package/packages/BaseGridAdjust/index.js +9 -9
  23. package/packages/BaseGridAdjust/src/index.vue +482 -482
  24. package/packages/BaseInput/index.js +7 -7
  25. package/packages/BaseInput/src/index.vue +164 -164
  26. package/packages/BaseIntervalInput/index.js +7 -7
  27. package/packages/BaseIntervalInput/src/index.vue +310 -310
  28. package/packages/BaseKanbanEmpty/index.js +7 -7
  29. package/packages/BaseKanbanEmpty/src/index.vue +176 -176
  30. package/packages/BaseNumberInput/index.js +7 -7
  31. package/packages/BaseNumberInput/src/index.vue +229 -229
  32. package/packages/BasePagination/index.js +7 -7
  33. package/packages/BasePagination/src/index.vue +91 -91
  34. package/packages/BasePictureCard/index.js +7 -7
  35. package/packages/BasePictureCard/src/index.vue +580 -580
  36. package/packages/BasePrintPreview/index.js +7 -7
  37. package/packages/BasePrintPreview/src/index.vue +117 -117
  38. package/packages/BasePulldown/index.js +7 -7
  39. package/packages/BasePulldown/src/index.vue +1136 -1136
  40. package/packages/BaseSearch/index.js +7 -7
  41. package/packages/BaseSearch/src/index.vue +935 -935
  42. package/packages/BaseSelect/index.js +7 -7
  43. package/packages/BaseSelect/src/index.vue +155 -155
  44. package/packages/BaseSelectMulti/index.js +7 -7
  45. package/packages/BaseSelectMulti/src/index.vue +148 -148
  46. package/packages/BaseTextArea/index.js +7 -7
  47. package/packages/BaseTextArea/src/index.vue +178 -178
  48. package/packages/BaseTime/index.js +7 -7
  49. package/packages/BaseTime/src/index.vue +166 -166
  50. package/packages/BaseTool/index.js +7 -7
  51. package/packages/BaseTool/src/index.vue +349 -349
  52. package/packages/BaseToolStatus/index.js +7 -7
  53. package/packages/BaseToolStatus/src/index.vue +388 -388
  54. package/packages/LeaveAMessage/index.js +7 -7
  55. package/packages/LeaveAMessage/src/index.vue +568 -571
  56. package/packages/index.js +167 -167
  57. package/packages/styles/default.less +80 -80
  58. package/packages/utils/api.js +88 -88
  59. package/packages/utils/auth.js +38 -38
  60. package/packages/utils/common.js +595 -595
  61. package/packages/utils/dom.js +181 -181
  62. package/packages/utils/enum.js +83 -83
  63. package/packages/utils/filters.js +458 -458
  64. package/packages/utils/gridFormat.js +60 -60
  65. package/packages/utils/msg.js +16 -16
  66. package/packages/utils/patchFiles.js +44 -44
  67. package/packages/utils/request.js +169 -169
  68. package/packages/utils/store.js +261 -261
  69. package/vue.config.js +59 -59
@@ -1,667 +1,687 @@
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
+ <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>
667
687