bri-components 1.1.3 → 1.1.5

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 (124) hide show
  1. package/lib/0.bri-components.min.js +1 -1
  2. package/lib/1.bri-components.min.js +1 -1
  3. package/lib/2.bri-components.min.js +1 -1
  4. package/lib/3.bri-components.min.js +1 -1
  5. package/lib/4.bri-components.min.js +1 -1
  6. package/lib/5.bri-components.min.js +1 -1
  7. package/lib/6.bri-components.min.js +1 -1
  8. package/lib/7.bri-components.min.js +1 -1
  9. package/lib/bri-components.min.js +6 -6
  10. package/lib/styles/bri-components.css +1 -1
  11. package/package.json +1 -1
  12. package/src/abolish/DshCascaders.less +11 -0
  13. package/src/{components/controls/base/DshCascaderMultiple.vue → abolish/DshCascaders.vue} +4 -23
  14. package/src/{components/list → abolish}/DshFlatTable.vue +1 -1
  15. package/src/abolish/DshTexts.less +13 -0
  16. package/src/{components/controls/base/textMultiple/DshTextMultiple.vue → abolish/DshTexts.vue} +4 -20
  17. package/src/components/controls/base/{textMultiple/MultipleInput.vue → BriInputs.vue} +13 -12
  18. package/src/components/controls/base/{ZUpload/YUploadImage.vue → BriUpload/BriUploadImage.vue} +56 -15
  19. package/src/components/controls/base/{ZUpload → BriUpload}/index.vue +11 -12
  20. package/src/components/controls/base/{ZUpload → BriUpload}/uploadMixin.js +2 -2
  21. package/src/components/controls/base/DshCascader/DshCascader.vue +393 -0
  22. package/src/components/{other → controls/base/DshCascader}/InfoCascader.vue +11 -9
  23. package/src/components/controls/base/DshCheckbox.vue +1 -1
  24. package/src/components/controls/base/DshCoordinates.vue +146 -135
  25. package/src/components/controls/base/DshEditor.vue +1 -1
  26. package/src/components/controls/base/DshInput.vue +9 -4
  27. package/src/components/controls/base/DshNumber/DshNumber.vue +2 -0
  28. package/src/components/controls/base/DshSelect.vue +1 -1
  29. package/src/components/controls/controlMap.js +6 -7
  30. package/src/components/controls/controlMixin.js +31 -10
  31. package/src/components/list/BriTable.vue +0 -1
  32. package/src/components/list/DshBox/DshBox.vue +7 -24
  33. package/src/components/list/DshBox/DshCard.vue +13 -72
  34. package/src/components/list/DshBox/DshList.vue +8 -136
  35. package/src/components/list/DshBox/DshPanel.vue +0 -110
  36. package/src/components/list/DshBox/DshTable.vue +1 -4
  37. package/src/components/list/ZTree.vue +0 -58
  38. package/src/components/other/BriSvg.vue +28 -0
  39. package/src/components/other/DshEditPanel.vue +33 -11
  40. package/src/components/other/ZIframe.vue +5 -0
  41. package/src/components/other/ZLoading.vue +24 -12
  42. package/src/components/small/DshPage.vue +1 -0
  43. package/src/index.js +17 -28
  44. package/src/styles/common/control.less +16 -17
  45. package/src/styles/components/controls/{MultipleInput.less → BriInputs.less} +1 -1
  46. package/src/styles/components/controls/{ZUpload.less → BriUpload.less} +4 -4
  47. package/src/styles/components/controls/DshCascader.less +66 -50
  48. package/src/styles/components/controls/DshCoordinates.less +53 -43
  49. package/src/styles/components/controls/DshNumber.less +18 -0
  50. package/src/styles/components/index.less +22 -17
  51. package/src/styles/components/list/DshBox/DshBox.less +20 -0
  52. package/src/styles/components/list/DshBox/DshCard.less +59 -0
  53. package/src/styles/components/list/DshBox/DshList.less +142 -0
  54. package/src/styles/components/list/DshBox/DshPanel.less +107 -0
  55. package/src/styles/components/list/DshBox/DshTable.less +4 -0
  56. package/src/styles/components/list/ZTree.less +52 -0
  57. package/src/styles/components/other/ZLoading.less +5 -7
  58. package/src/styles/components/small/DshDropdown.less +1 -7
  59. package/src/styles/components/small/DshModal.less +1 -1
  60. package/src/styles/variables.less +1 -0
  61. package/src/utils/table.js +3 -2
  62. package/src/components/controls/base/DshCascader.vue +0 -350
  63. package/src/components/controls/base/YSerialNumber.vue +0 -43
  64. package/src/components/list/easyTable/index.js +0 -23
  65. package/src/components/list/easyTable/src/directives/clickoutside.js +0 -32
  66. package/src/components/list/easyTable/src/mixins/layerAdjustment.js +0 -62
  67. package/src/components/list/easyTable/src/settings/settings.js +0 -11
  68. package/src/components/list/easyTable/src/utils/deepClone.js +0 -256
  69. package/src/components/list/easyTable/src/utils/dom.js +0 -41
  70. package/src/components/list/easyTable/src/utils/utils.js +0 -190
  71. package/src/components/list/easyTable/v-checkbox/index.js +0 -7
  72. package/src/components/list/easyTable/v-checkbox/src/checkbox.vue +0 -127
  73. package/src/components/list/easyTable/v-checkbox-group/index.js +0 -7
  74. package/src/components/list/easyTable/v-checkbox-group/src/checkbox-group.vue +0 -68
  75. package/src/components/list/easyTable/v-dropdown/index.js +0 -7
  76. package/src/components/list/easyTable/v-dropdown/src/dropdown.vue +0 -337
  77. package/src/components/list/easyTable/v-table/index.js +0 -7
  78. package/src/components/list/easyTable/v-table/src/body-cell-merge-mixin.js +0 -141
  79. package/src/components/list/easyTable/v-table/src/cell-edit-mixin.js +0 -102
  80. package/src/components/list/easyTable/v-table/src/checkbox-selection-mixin.js +0 -189
  81. package/src/components/list/easyTable/v-table/src/classes-mixin.js +0 -56
  82. package/src/components/list/easyTable/v-table/src/drag-width-mixin.js +0 -202
  83. package/src/components/list/easyTable/v-table/src/export-csv.js +0 -74
  84. package/src/components/list/easyTable/v-table/src/frozen-columns-mixin.js +0 -134
  85. package/src/components/list/easyTable/v-table/src/loading.vue +0 -49
  86. package/src/components/list/easyTable/v-table/src/scroll-bar-control-mixin.js +0 -21
  87. package/src/components/list/easyTable/v-table/src/scroll-control-mixin.js +0 -92
  88. package/src/components/list/easyTable/v-table/src/sort-control-mixin.js +0 -108
  89. package/src/components/list/easyTable/v-table/src/table-empty-mixin.js +0 -73
  90. package/src/components/list/easyTable/v-table/src/table-empty.vue +0 -66
  91. package/src/components/list/easyTable/v-table/src/table-filters-mixin.js +0 -126
  92. package/src/components/list/easyTable/v-table/src/table-footer-mixin.js +0 -122
  93. package/src/components/list/easyTable/v-table/src/table-resize-mixin.js +0 -279
  94. package/src/components/list/easyTable/v-table/src/table-row-mouse-events-mixin.js +0 -123
  95. package/src/components/list/easyTable/v-table/src/table.vue +0 -1565
  96. package/src/components/list/easyTable/v-table/src/title-cell-merge-mixin.js +0 -115
  97. package/src/components/list/evTable/EvTable.vue +0 -321
  98. package/src/components/list/evTable/EvTableMixin.js +0 -26
  99. package/src/components/small/DshControlDefine.vue +0 -111
  100. package/src/styles/components/list/evTable.less +0 -79
  101. package/src/styles/components/list/evtable/animation.less +0 -141
  102. package/src/styles/components/list/evtable/font/fontello.eot +0 -0
  103. package/src/styles/components/list/evtable/font/fontello.svg +0 -32
  104. package/src/styles/components/list/evtable/font/fontello.ttf +0 -0
  105. package/src/styles/components/list/evtable/font/fontello.woff +0 -0
  106. package/src/styles/components/list/evtable/font/fontello.woff2 +0 -0
  107. package/src/styles/components/list/evtable/fontello.less +0 -68
  108. package/src/styles/components/list/evtable/index.less +0 -5
  109. package/src/styles/components/list/evtable/v-checkbox.less +0 -167
  110. package/src/styles/components/list/evtable/v-dropdown.less +0 -235
  111. package/src/styles/components/list/evtable/v-table.less +0 -334
  112. package/src/styles/components/list/ivu_reset.less +0 -49
  113. package/src/styles/components/small/DshControlDefine.less +0 -40
  114. /package/src/{styles/components/list → abolish}/DshFlatTable.less +0 -0
  115. /package/src/components/{pages/Error → Error}/Error403.vue +0 -0
  116. /package/src/components/{pages/Error → Error}/Error404.vue +0 -0
  117. /package/src/components/{pages/Error → Error}/Error500.vue +0 -0
  118. /package/src/components/{pages/Error → Error}/error.less +0 -0
  119. /package/src/components/{pages/Error → Error}/errorBack.vue +0 -0
  120. /package/src/components/controls/base/{ZUpload → BriUpload}/upload-list.vue +0 -0
  121. /package/src/components/controls/base/{ZUpload → BriUpload}/upload-listItem.vue +0 -0
  122. /package/src/styles/components/{other → controls}/InfoCascader.less +0 -0
  123. /package/src/styles/components/list/{DshCrossTable.less → DshBox/DshCrossTable.less} +0 -0
  124. /package/src/styles/components/list/{DshSingleData.less → DshBox/DshSingleData.less} +0 -0
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="MutipleInput">
2
+ <div class="BriInputs">
3
3
  <Input
4
4
  v-show="status === 'edit'"
5
5
  v-model="curInputVal"
@@ -10,25 +10,25 @@
10
10
  ></Input>
11
11
  <div
12
12
  v-show="status === 'show'"
13
- class="MutipleInput-show"
13
+ class="BriInputs-show"
14
14
  >
15
15
  <span
16
- class="MutipleInput-show-content"
16
+ class="BriInputs-show-content"
17
17
  @click="clickAdd"
18
18
  >
19
19
  <span
20
20
  v-for="(val,index) in value[controlKey]"
21
- class="MutipleInput-show-content-item"
21
+ class="BriInputs-show-content-item"
22
22
  :key="index"
23
23
  >
24
24
  <span
25
- class="MutipleInput-show-content-item-content"
25
+ class="BriInputs-show-content-item-content"
26
26
  @click.stop="clickEdit(val,index)"
27
27
  >
28
28
  {{val}}
29
29
  </span>
30
30
  <Icon
31
- class="MutipleInput-show-content-item-del"
31
+ class="BriInputs-show-content-item-del"
32
32
  type="ios-close"
33
33
  size="20"
34
34
  @click.stop="clickDelete(val)"
@@ -36,7 +36,7 @@
36
36
  </span>
37
37
  </span>
38
38
  <Icon
39
- class="MutipleInput-show-add"
39
+ class="BriInputs-show-add"
40
40
  type="md-create"
41
41
  @click="clickAdd"
42
42
  />
@@ -45,13 +45,14 @@
45
45
  </template>
46
46
 
47
47
  <script>
48
- import controlMixin from "../../controlMixin.js";
48
+ import controlMixin from "../controlMixin.js";
49
49
 
50
50
  export default {
51
- name: "MutipleInput",
52
- mixins: [controlMixin],
53
- props: {
54
- },
51
+ name: "BriInputs",
52
+ mixins: [
53
+ controlMixin
54
+ ],
55
+ props: {},
55
56
  data () {
56
57
  return {
57
58
  status: "edit", // show
@@ -1,35 +1,68 @@
1
1
  <template>
2
- <div class="YUploadImage">
3
- <div class="YUploadImage-set" ref="viewerImage">
2
+ <div class="BriUploadImage">
3
+ <div
4
+ class="BriUploadImage-set"
5
+ ref="viewerImage"
6
+ >
4
7
  <div
5
8
  v-if="value[propsObj._key] || propsObj._default || percent"
6
- :class="['YUploadImage-set-img', isAvatar ? 'YUploadImage-set-avatar' : '']"
9
+ :class="['BriUploadImage-set-img', isAvatar ? 'BriUploadImage-set-avatar' : '']"
7
10
  :style="{
8
11
  backgroundImage: `url(${$imageResize(value[propsObj._key] || propsObj._default, imageResizeConfig)})`,
9
12
  borderRadius: propsObj.radius ? '50%' : ''
10
13
  }"
11
14
  >
12
- <img :data-original="value[propsObj._key]" style="display:none">
13
- <div v-if="value[propsObj._key] && propsObj._canAction" class="YUploadImage-set-action">
14
- <Icon class="YUploadImage-set-img-action" type="ios-eye-outline" size="16" @click.native="handlePreview"></Icon>
15
- <Icon class="YUploadImage-set-img-action" type="ios-trash-outline" size="16" @click.native="handleRemove"></Icon>
15
+ <img
16
+ :data-original="value[propsObj._key]"
17
+ style="display:none"
18
+ >
19
+ <div
20
+ v-if="value[propsObj._key] && propsObj._canAction"
21
+ class="BriUploadImage-set-action"
22
+ >
23
+ <Icon
24
+ class="BriUploadImage-set-img-action"
25
+ type="ios-eye-outline"
26
+ size="16"
27
+ @click.native="handlePreview"
28
+ ></Icon>
29
+ <Icon
30
+ class="BriUploadImage-set-img-action"
31
+ type="ios-trash-outline"
32
+ size="16"
33
+ @click.native="handleRemove"
34
+ ></Icon>
16
35
  </div>
17
36
  <!-- 上传进度 -->
18
- <div v-if="percent" class="YUploadImage-set-img-circle">
37
+ <div
38
+ v-if="percent"
39
+ class="BriUploadImage-set-img-circle"
40
+ >
19
41
  <i-circle
20
42
  class="circle"
21
43
  :percent="percent"
22
44
  :stroke-color="percentColor"
23
45
  >
24
- <Icon v-if="percent == 100" type="ios-checkmark"></Icon>
46
+ <Icon
47
+ v-if="percent == 100"
48
+ type="ios-checkmark"
49
+ ></Icon>
25
50
  <span v-else>{{ percent }}%</span>
26
51
  </i-circle>
27
52
  </div>
28
53
 
29
54
  </div>
30
55
  <div class="wrap">
31
- <Button type="default" class="btn-cancel-outline z-default">点击上传</Button>
32
- <input id="fileupload" class="file" :type="inputType" @change="setImage" />
56
+ <Button
57
+ type="default"
58
+ class="btn-cancel-outline z-default"
59
+ >点击上传</Button>
60
+ <input
61
+ id="fileupload"
62
+ class="file"
63
+ :type="inputType"
64
+ @change="setImage"
65
+ />
33
66
  </div>
34
67
  </div>
35
68
 
@@ -43,7 +76,10 @@
43
76
  :footer-hide="true"
44
77
  @on-visible-change="visibleChange"
45
78
  >
46
- <div class="avatar-modal" style="width:400px;margin: 0 auto;">
79
+ <div
80
+ class="avatar-modal"
81
+ style="width:400px;margin: 0 auto;"
82
+ >
47
83
  <dsh-cropper
48
84
  style="width: 400px;height: 400px;"
49
85
  ref="cropper"
@@ -54,7 +90,10 @@
54
90
  </dsh-cropper>
55
91
  <div class="avatar-modal-footer bri-footer">
56
92
  <Button @click="cancelAvatarModal()">取消</Button>
57
- <Button type="primary" @click="photoSubmit()">保存</Button>
93
+ <Button
94
+ type="primary"
95
+ @click="photoSubmit()"
96
+ >保存</Button>
58
97
  </div>
59
98
  </div>
60
99
  </Modal>
@@ -66,8 +105,10 @@
66
105
  import Viewer from "viewerjs";
67
106
 
68
107
  export default {
69
- name: "YUploadImage",
70
- mixins: [uploadMixin],
108
+ name: "BriUploadImage",
109
+ mixins: [
110
+ uploadMixin
111
+ ],
71
112
  components: {},
72
113
  props: {
73
114
  value: Object,
@@ -1,21 +1,20 @@
1
1
  <template>
2
- <y-upload-image
2
+ <bri-upload-image
3
3
  v-if="propsObj._kind === 'uploadImage'"
4
4
  :value="value"
5
- ossType="putUpload"
6
5
  :propsObj="propsObj"
7
6
  @change="change"
8
- ></y-upload-image>
7
+ ></bri-upload-image>
9
8
 
10
9
  <div
11
10
  v-else
12
11
  :class="[
13
12
  prefixCls,
14
- 'ZUpload',
15
- `ZUpload-${showType}`,
13
+ 'BriUpload',
14
+ `BriUpload-${showType}`,
16
15
  {
17
- 'ZUpload-readonly': !canEdit,
18
- 'ZUpload-disabled': !finalCanEdit
16
+ 'BriUpload-readonly': !canEdit,
17
+ 'BriUpload-disabled': !finalCanEdit
19
18
  }
20
19
  ]"
21
20
  >
@@ -40,11 +39,11 @@
40
39
  :disabled="!canClickUpload"
41
40
  >
42
41
  <slot>
43
- <div :class="`ZUpload-${showType}-imageadd`">
42
+ <div :class="`BriUpload-${showType}-imageadd`">
44
43
 
45
44
  <i-circle
46
45
  v-if="percent"
47
- :class="`ZUpload-${showType}-circle`"
46
+ :class="`BriUpload-${showType}-circle`"
48
47
  :percent="percent"
49
48
  :stroke-color="percentColor"
50
49
  >
@@ -84,7 +83,7 @@
84
83
  <script>
85
84
  import controlMixin from "../../controlMixin.js";
86
85
  import uploadMixin from "./uploadMixin.js";
87
- import YUploadImage from "./YUploadImage.vue";
86
+ import BriUploadImage from "./BriUploadImage.vue";
88
87
  import uploadList from "./upload-list.vue";
89
88
 
90
89
  const prefixCls = "ivu-upload";
@@ -95,7 +94,7 @@
95
94
  uploadMixin
96
95
  ],
97
96
  components: {
98
- YUploadImage,
97
+ BriUploadImage,
99
98
  uploadList
100
99
  },
101
100
  props: {
@@ -232,7 +231,7 @@
232
231
  [`${prefixCls}-select`]: this.type === "select",
233
232
  [`${prefixCls}-drag`]: this.type === "drag",
234
233
  [`${prefixCls}-dragOver`]: this.type === "drag" && this.dragOver,
235
- [`ZUpload-${this.showType}-wrapper`]: true
234
+ [`BriUpload-${this.showType}-wrapper`]: true
236
235
  }
237
236
  ];
238
237
  }
@@ -1,4 +1,5 @@
1
1
  import axios from "axios";
2
+
2
3
  const minio = require("minio");
3
4
  const stream = require("stream");
4
5
  export default {
@@ -25,8 +26,7 @@ export default {
25
26
  percent: 0
26
27
  };
27
28
  },
28
- created () {
29
- },
29
+ created () {},
30
30
  computed: {
31
31
  computedGroupKey () {
32
32
  return this.propsObj.groupKey || this.groupKey;
@@ -0,0 +1,393 @@
1
+ <template>
2
+ <div class="DshCascader">
3
+ <!-- 编辑 -->
4
+ <template v-if="canEdit">
5
+ <!-- 多选 多选的filterable必须是false,不然出bug -->
6
+ <template v-if="useMultiple === true">
7
+ <Cascader
8
+ class="DshCascader-multiple"
9
+ :value="multipleSelectVal"
10
+ :data="renderCascaderData"
11
+ :disabled="!finalCanEdit"
12
+ :change-on-select="selfPropsObj._changeOnSelect"
13
+ :clearable="selfPropsObj._clearable"
14
+ :size="selfPropsObj._size"
15
+ :filterable="false"
16
+ :transfer="selfPropsObj._transfer"
17
+ :transfer-class-name="selfPropsObj._transferClassName"
18
+ :load-data="loadData"
19
+ @on-visible-change="multipleVisibleChange"
20
+ @on-change="createItem"
21
+ >
22
+ <div
23
+ :class="{
24
+ ...commonClass,
25
+ 'DshCascader-multiple-input': true,
26
+ 'DshCascader-multiplerow': isSelfRow,
27
+ }"
28
+ @click="clickInput"
29
+ >
30
+ <!-- 有值 -->
31
+ <div
32
+ v-if="!$isEmptyData(curVal)"
33
+ class="hasdata"
34
+ >
35
+ <dsh-tags
36
+ :list="curValNameList"
37
+ :propsObj="{
38
+ closable: canEdit,
39
+ size: isSelfRow ? 'medium' : 'default'
40
+ }"
41
+ @delete="deleteItem"
42
+ ></dsh-tags>
43
+ </div>
44
+
45
+ <!-- 无值 -->
46
+ <span
47
+ v-else
48
+ class="nodata"
49
+ >
50
+ {{ emptyShowVal }}
51
+ </span>
52
+ </div>
53
+ </Cascader>
54
+ </template>
55
+
56
+ <!-- 单选 -->
57
+ <template v-else>
58
+ <!-- 弹框方式 -->
59
+ <template v-if="showMode === 'custom'">
60
+ <div
61
+ :class="{
62
+ ...commonClass,
63
+ 'DshCascader-custom-input': true
64
+ }"
65
+ @click="openModal"
66
+ >
67
+ <!-- 有值 -->
68
+ <div
69
+ v-if="!$isEmptyData(curValList)"
70
+ class="hasdata"
71
+ @mouseenter="isHover = true"
72
+ @mouseleave="isHover = false"
73
+ >
74
+ <span class="hasdata-text">
75
+ {{ curValNameStr }}
76
+ </span>
77
+
78
+ <Icon
79
+ v-if="selfPropsObj._clearable && isHover"
80
+ class="hasdata-clear"
81
+ type="md-close"
82
+ @click.stop="clickClear"
83
+ />
84
+ <Icon
85
+ v-else
86
+ class="hasdata-clear"
87
+ type="ios-arrow-down"
88
+ />
89
+ </div>
90
+
91
+ <!-- 无值 -->
92
+ <span
93
+ v-else
94
+ class="nodata"
95
+ >
96
+ {{ emptyShowVal }}
97
+ </span>
98
+ </div>
99
+
100
+ <!-- 内容弹框 -->
101
+ <info-cascader
102
+ v-if="showModal"
103
+ :showModal="showModal"
104
+ v-model="curValList"
105
+ :data="cascaderData"
106
+ :propsObj="selfPropsObj"
107
+ @change="change"
108
+ @changeShowModal="changeShowModal"
109
+ ></info-cascader>
110
+ </template>
111
+
112
+ <!-- 输入框方式 -->
113
+ <template v-else>
114
+ <Cascader
115
+ class="DshCascader-single"
116
+ :value="curValList"
117
+ :data="renderCascaderData"
118
+ :placeholder="selfPropsObj._placeholder"
119
+ :disabled="!finalCanEdit"
120
+ :change-on-select="selfPropsObj._changeOnSelect"
121
+ :clearable="selfPropsObj._clearable"
122
+ :size="selfPropsObj._size"
123
+ :filterable="selfPropsObj._filterable"
124
+ :transfer="selfPropsObj._transfer"
125
+ :transfer-class-name="selfPropsObj._transferClassName"
126
+ :load-data="loadData"
127
+ @on-visible-change="visibleChange"
128
+ @on-change="changeVal"
129
+ @click.stop="clickCascader"
130
+ ></Cascader>
131
+ </template>
132
+ </template>
133
+ </template>
134
+
135
+ <!-- 查看 -->
136
+ <template v-else>
137
+ <div :class="{
138
+ ...commonClass,
139
+ 'DshCascader-show': true,
140
+ 'DshCascader-multiplerow': isSelfRow,
141
+ }">
142
+ <!-- 有值 -->
143
+ <div
144
+ v-if="!$isEmptyData(curVal)"
145
+ class="hasdata"
146
+ >
147
+ <!-- 多选 -->
148
+ <dsh-tags
149
+ v-if="useMultiple"
150
+ class="hasdata-multiple"
151
+ :list="curValNameList"
152
+ :propsObj="{
153
+ size: isSelfRow ? 'medium' : 'default'
154
+ }"
155
+ ></dsh-tags>
156
+
157
+ <!-- 单选 -->
158
+ <Ctooltip
159
+ v-else
160
+ :content="curValNameStr"
161
+ placement="top"
162
+ maxWidth="200"
163
+ :transfer="true"
164
+ >
165
+ <div class="hasdata-single">
166
+ {{ curValNameStr }}
167
+ </div>
168
+ </Ctooltip>
169
+ </div>
170
+
171
+ <!-- 无值 -->
172
+ <span
173
+ v-else
174
+ class="nodata"
175
+ >
176
+ {{ emptyShowVal }}
177
+ </span>
178
+ </div>
179
+ </template>
180
+ </div>
181
+ </template>
182
+
183
+ <script>
184
+ import { regionData } from "bri-datas";
185
+ import controlMixin from "../../controlMixin.js";
186
+ import InfoCascader from "./InfoCascader.vue";
187
+
188
+ const loop = function (data = [], level, parentCode, filterVals = []) {
189
+ if (data && filterVals.length) {
190
+ data = data.filter(item => filterVals.includes(item._key));
191
+ }
192
+ return data
193
+ ? data.reduce((arr, item) => {
194
+ const newItem = {
195
+ ...item,
196
+ value: item._key,
197
+ label: item.name,
198
+ codeArr: [ ...(parentCode || []), item._key ]
199
+ };
200
+ if (!level || level > item.level) {
201
+ newItem.children = loop(item.children, level, newItem.codeArr);
202
+ newItem.children.length && (newItem.loading = false); // 此代码为了所请求的级出现继续加载的箭头图标
203
+ } else {
204
+ newItem.children = [];
205
+ }
206
+ arr.push(newItem);
207
+
208
+ return arr;
209
+ }, [])
210
+ : [];
211
+ };
212
+
213
+ export default {
214
+ name: "DshCascader",
215
+ mixins: [
216
+ controlMixin
217
+ ],
218
+ components: {
219
+ InfoCascader
220
+ },
221
+ props: {},
222
+ data () {
223
+ return {
224
+ renderDataFlag: true,
225
+ clickInputFlag: true,
226
+ isVisible: false,
227
+ multipleSelectVal: [], // 必须要,每次选完之后再选,需清空上次选的
228
+ selectVal: [],
229
+
230
+ isHover: false,
231
+ showModal: false,
232
+ modalVallist: []
233
+ };
234
+ },
235
+ computed: {
236
+ // 是否多选模式
237
+ useMultiple () {
238
+ return ["regions", "cascaders"].includes(this.propsObj._type);
239
+ },
240
+ selfPropsObj () {
241
+ return {
242
+ _filterable: true,
243
+ _showMode: false,
244
+ _transfer: true,
245
+ ...this.propsObj,
246
+ ...this.commonDealPropsObj
247
+ };
248
+ },
249
+ cascaderData: {
250
+ get () {
251
+ return loop(
252
+ ["region", "regions"].includes(this.propsObj._type) ? regionData : this.selfPropsObj._data,
253
+ this.selfPropsObj._cascaderLevel,
254
+ undefined,
255
+ this.selfPropsObj._cascaderFilterVals
256
+ );
257
+ },
258
+ set () {}
259
+ },
260
+ renderCascaderData () {
261
+ return this.renderDataFlag
262
+ ? this.cascaderData.map(item => {
263
+ return {
264
+ ...item,
265
+ children: []
266
+ };
267
+ })
268
+ : this.cascaderData;
269
+ },
270
+
271
+ showMode () {
272
+ return this.selfPropsObj._showMode;
273
+ },
274
+ isSelfRow () {
275
+ return this.selfPropsObj._span === 24 || !this.selfPropsObj._span;
276
+ },
277
+
278
+ // 单选用的展示文字
279
+ curValNameStr () {
280
+ return this.$getTreeLinealDatas(this.curValList, this.cascaderData, "name").join("/");
281
+ },
282
+ // 多选用的展示文字
283
+ curValNameList () {
284
+ return this.curValList.map(item =>
285
+ this.$getTreeLinealDatas(item, this.cascaderData, "name").join("/")
286
+ );
287
+ }
288
+ },
289
+ created () {},
290
+ methods: {
291
+ // 动态加载数据
292
+ loadData (treeItem, cb) {
293
+ let list = this.$getTreeLinealDatas(treeItem.codeArr, this.cascaderData);
294
+ treeItem.children = list[list.length - 1].children.map(item => ({ ...item, children: [] }));
295
+
296
+ cb();
297
+ },
298
+
299
+ /* --------- 多选使用 -------- */
300
+ clickInput (e) {
301
+ if (!this.finalCanEdit) {
302
+ e.stopPropagation();
303
+ }
304
+ },
305
+ // 展开和关闭弹窗时触发
306
+ multipleVisibleChange (bool) {
307
+ this.isVisible = bool;
308
+
309
+ if (bool === false) {
310
+ if (this.selectVal.length) {
311
+ if (this.curValList.some(item => JSON.stringify(item) == JSON.stringify(this.selectVal))) {
312
+ this.$Message.error({
313
+ content: `"${this.$getTreeLinealDatas(this.selectVal, this.cascaderData, "name").join("/")}"已选择,请勿重复选择!`,
314
+ duration: 5
315
+ });
316
+ } else {
317
+ this.curValList = [...this.curValList, this.selectVal];
318
+ }
319
+ }
320
+
321
+ this.selectVal = [];
322
+ this.multipleSelectVal = [];
323
+ }
324
+ },
325
+ // 添加
326
+ createItem (selectVal, ...params) {
327
+ if (this.isVisible) {
328
+ this.selectVal = selectVal;
329
+ }
330
+ },
331
+ // 删除
332
+ deleteItem (item, index) {
333
+ this.curValList.splice(index, 1);
334
+ this.curValList = [...this.curValList];
335
+ },
336
+
337
+ /* -------- 单选使用 ------- */
338
+ // 弹窗方式的 -打开模态框
339
+ openModal () {
340
+ if (this.finalCanEdit) {
341
+ this.modalVallist = this.curValList;
342
+ this.showModal = true;
343
+ }
344
+ },
345
+ // 弹窗方式的 -关闭模态框
346
+ changeShowModal (bool) {
347
+ this.showModal = bool;
348
+ },
349
+ // 弹窗方式的 -点击清除
350
+ clickClear () {
351
+ this.curValList = [];
352
+ },
353
+
354
+ // 默认方式的
355
+ clickCascader () {
356
+ if (this.finalCanEdit) {
357
+ if (
358
+ ["cascader"].includes(this.selfPropsObj._type) &&
359
+ this.selfPropsObj._filterable === true &&
360
+ this.renderDataFlag === true &&
361
+ this.clickInputFlag === true
362
+ ) {
363
+ this.clickInputFlag = false; // 这个处理其实觉大概率没必要,有没有不受影响
364
+ setTimeout(() => {
365
+ this.renderDataFlag = false;
366
+ }, 0);
367
+ }
368
+ }
369
+ },
370
+ // 默认方式的 -展开和关闭弹窗时触发
371
+ visibleChange (bool) {
372
+ if (bool) {
373
+ this.isVisible = bool;
374
+ } else {
375
+ setTimeout(() => {
376
+ this.isVisible = bool;
377
+ }, 0);
378
+ }
379
+ },
380
+ // 默认方式的 -值改变
381
+ changeVal (val, ...params) {
382
+ if (this.isVisible || !val.length) {
383
+ this.curValList = val;
384
+ }
385
+ }
386
+ },
387
+ watch: {
388
+ "propsObj._cascaderLevel" () {
389
+ this.value[this.controlKey] = [];
390
+ }
391
+ }
392
+ };
393
+ </script>