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.
- package/lib/0.bri-components.min.js +1 -1
- package/lib/1.bri-components.min.js +1 -1
- package/lib/2.bri-components.min.js +1 -1
- package/lib/3.bri-components.min.js +1 -1
- package/lib/4.bri-components.min.js +1 -1
- package/lib/5.bri-components.min.js +1 -1
- package/lib/6.bri-components.min.js +1 -1
- package/lib/7.bri-components.min.js +1 -1
- package/lib/bri-components.min.js +6 -6
- package/lib/styles/bri-components.css +1 -1
- package/package.json +1 -1
- package/src/abolish/DshCascaders.less +11 -0
- package/src/{components/controls/base/DshCascaderMultiple.vue → abolish/DshCascaders.vue} +4 -23
- package/src/{components/list → abolish}/DshFlatTable.vue +1 -1
- package/src/abolish/DshTexts.less +13 -0
- package/src/{components/controls/base/textMultiple/DshTextMultiple.vue → abolish/DshTexts.vue} +4 -20
- package/src/components/controls/base/{textMultiple/MultipleInput.vue → BriInputs.vue} +13 -12
- package/src/components/controls/base/{ZUpload/YUploadImage.vue → BriUpload/BriUploadImage.vue} +56 -15
- package/src/components/controls/base/{ZUpload → BriUpload}/index.vue +11 -12
- package/src/components/controls/base/{ZUpload → BriUpload}/uploadMixin.js +2 -2
- package/src/components/controls/base/DshCascader/DshCascader.vue +393 -0
- package/src/components/{other → controls/base/DshCascader}/InfoCascader.vue +11 -9
- package/src/components/controls/base/DshCheckbox.vue +1 -1
- package/src/components/controls/base/DshCoordinates.vue +146 -135
- package/src/components/controls/base/DshEditor.vue +1 -1
- package/src/components/controls/base/DshInput.vue +9 -4
- package/src/components/controls/base/DshNumber/DshNumber.vue +2 -0
- package/src/components/controls/base/DshSelect.vue +1 -1
- package/src/components/controls/controlMap.js +6 -7
- package/src/components/controls/controlMixin.js +31 -10
- package/src/components/list/BriTable.vue +0 -1
- package/src/components/list/DshBox/DshBox.vue +7 -24
- package/src/components/list/DshBox/DshCard.vue +13 -72
- package/src/components/list/DshBox/DshList.vue +8 -136
- package/src/components/list/DshBox/DshPanel.vue +0 -110
- package/src/components/list/DshBox/DshTable.vue +1 -4
- package/src/components/list/ZTree.vue +0 -58
- package/src/components/other/BriSvg.vue +28 -0
- package/src/components/other/DshEditPanel.vue +33 -11
- package/src/components/other/ZIframe.vue +5 -0
- package/src/components/other/ZLoading.vue +24 -12
- package/src/components/small/DshPage.vue +1 -0
- package/src/index.js +17 -28
- package/src/styles/common/control.less +16 -17
- package/src/styles/components/controls/{MultipleInput.less → BriInputs.less} +1 -1
- package/src/styles/components/controls/{ZUpload.less → BriUpload.less} +4 -4
- package/src/styles/components/controls/DshCascader.less +66 -50
- package/src/styles/components/controls/DshCoordinates.less +53 -43
- package/src/styles/components/controls/DshNumber.less +18 -0
- package/src/styles/components/index.less +22 -17
- package/src/styles/components/list/DshBox/DshBox.less +20 -0
- package/src/styles/components/list/DshBox/DshCard.less +59 -0
- package/src/styles/components/list/DshBox/DshList.less +142 -0
- package/src/styles/components/list/DshBox/DshPanel.less +107 -0
- package/src/styles/components/list/DshBox/DshTable.less +4 -0
- package/src/styles/components/list/ZTree.less +52 -0
- package/src/styles/components/other/ZLoading.less +5 -7
- package/src/styles/components/small/DshDropdown.less +1 -7
- package/src/styles/components/small/DshModal.less +1 -1
- package/src/styles/variables.less +1 -0
- package/src/utils/table.js +3 -2
- package/src/components/controls/base/DshCascader.vue +0 -350
- package/src/components/controls/base/YSerialNumber.vue +0 -43
- package/src/components/list/easyTable/index.js +0 -23
- package/src/components/list/easyTable/src/directives/clickoutside.js +0 -32
- package/src/components/list/easyTable/src/mixins/layerAdjustment.js +0 -62
- package/src/components/list/easyTable/src/settings/settings.js +0 -11
- package/src/components/list/easyTable/src/utils/deepClone.js +0 -256
- package/src/components/list/easyTable/src/utils/dom.js +0 -41
- package/src/components/list/easyTable/src/utils/utils.js +0 -190
- package/src/components/list/easyTable/v-checkbox/index.js +0 -7
- package/src/components/list/easyTable/v-checkbox/src/checkbox.vue +0 -127
- package/src/components/list/easyTable/v-checkbox-group/index.js +0 -7
- package/src/components/list/easyTable/v-checkbox-group/src/checkbox-group.vue +0 -68
- package/src/components/list/easyTable/v-dropdown/index.js +0 -7
- package/src/components/list/easyTable/v-dropdown/src/dropdown.vue +0 -337
- package/src/components/list/easyTable/v-table/index.js +0 -7
- package/src/components/list/easyTable/v-table/src/body-cell-merge-mixin.js +0 -141
- package/src/components/list/easyTable/v-table/src/cell-edit-mixin.js +0 -102
- package/src/components/list/easyTable/v-table/src/checkbox-selection-mixin.js +0 -189
- package/src/components/list/easyTable/v-table/src/classes-mixin.js +0 -56
- package/src/components/list/easyTable/v-table/src/drag-width-mixin.js +0 -202
- package/src/components/list/easyTable/v-table/src/export-csv.js +0 -74
- package/src/components/list/easyTable/v-table/src/frozen-columns-mixin.js +0 -134
- package/src/components/list/easyTable/v-table/src/loading.vue +0 -49
- package/src/components/list/easyTable/v-table/src/scroll-bar-control-mixin.js +0 -21
- package/src/components/list/easyTable/v-table/src/scroll-control-mixin.js +0 -92
- package/src/components/list/easyTable/v-table/src/sort-control-mixin.js +0 -108
- package/src/components/list/easyTable/v-table/src/table-empty-mixin.js +0 -73
- package/src/components/list/easyTable/v-table/src/table-empty.vue +0 -66
- package/src/components/list/easyTable/v-table/src/table-filters-mixin.js +0 -126
- package/src/components/list/easyTable/v-table/src/table-footer-mixin.js +0 -122
- package/src/components/list/easyTable/v-table/src/table-resize-mixin.js +0 -279
- package/src/components/list/easyTable/v-table/src/table-row-mouse-events-mixin.js +0 -123
- package/src/components/list/easyTable/v-table/src/table.vue +0 -1565
- package/src/components/list/easyTable/v-table/src/title-cell-merge-mixin.js +0 -115
- package/src/components/list/evTable/EvTable.vue +0 -321
- package/src/components/list/evTable/EvTableMixin.js +0 -26
- package/src/components/small/DshControlDefine.vue +0 -111
- package/src/styles/components/list/evTable.less +0 -79
- package/src/styles/components/list/evtable/animation.less +0 -141
- package/src/styles/components/list/evtable/font/fontello.eot +0 -0
- package/src/styles/components/list/evtable/font/fontello.svg +0 -32
- package/src/styles/components/list/evtable/font/fontello.ttf +0 -0
- package/src/styles/components/list/evtable/font/fontello.woff +0 -0
- package/src/styles/components/list/evtable/font/fontello.woff2 +0 -0
- package/src/styles/components/list/evtable/fontello.less +0 -68
- package/src/styles/components/list/evtable/index.less +0 -5
- package/src/styles/components/list/evtable/v-checkbox.less +0 -167
- package/src/styles/components/list/evtable/v-dropdown.less +0 -235
- package/src/styles/components/list/evtable/v-table.less +0 -334
- package/src/styles/components/list/ivu_reset.less +0 -49
- package/src/styles/components/small/DshControlDefine.less +0 -40
- /package/src/{styles/components/list → abolish}/DshFlatTable.less +0 -0
- /package/src/components/{pages/Error → Error}/Error403.vue +0 -0
- /package/src/components/{pages/Error → Error}/Error404.vue +0 -0
- /package/src/components/{pages/Error → Error}/Error500.vue +0 -0
- /package/src/components/{pages/Error → Error}/error.less +0 -0
- /package/src/components/{pages/Error → Error}/errorBack.vue +0 -0
- /package/src/components/controls/base/{ZUpload → BriUpload}/upload-list.vue +0 -0
- /package/src/components/controls/base/{ZUpload → BriUpload}/upload-listItem.vue +0 -0
- /package/src/styles/components/{other → controls}/InfoCascader.less +0 -0
- /package/src/styles/components/list/{DshCrossTable.less → DshBox/DshCrossTable.less} +0 -0
- /package/src/styles/components/list/{DshSingleData.less → DshBox/DshSingleData.less} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="
|
|
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="
|
|
13
|
+
class="BriInputs-show"
|
|
14
14
|
>
|
|
15
15
|
<span
|
|
16
|
-
class="
|
|
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="
|
|
21
|
+
class="BriInputs-show-content-item"
|
|
22
22
|
:key="index"
|
|
23
23
|
>
|
|
24
24
|
<span
|
|
25
|
-
class="
|
|
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="
|
|
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="
|
|
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 "
|
|
48
|
+
import controlMixin from "../controlMixin.js";
|
|
49
49
|
|
|
50
50
|
export default {
|
|
51
|
-
name: "
|
|
52
|
-
mixins: [
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
name: "BriInputs",
|
|
52
|
+
mixins: [
|
|
53
|
+
controlMixin
|
|
54
|
+
],
|
|
55
|
+
props: {},
|
|
55
56
|
data () {
|
|
56
57
|
return {
|
|
57
58
|
status: "edit", // show
|
package/src/components/controls/base/{ZUpload/YUploadImage.vue → BriUpload/BriUploadImage.vue}
RENAMED
|
@@ -1,35 +1,68 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="
|
|
3
|
-
<div
|
|
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="['
|
|
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
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
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
|
|
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
|
|
32
|
-
|
|
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
|
|
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
|
|
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: "
|
|
70
|
-
mixins: [
|
|
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
|
-
<
|
|
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
|
-
></
|
|
7
|
+
></bri-upload-image>
|
|
9
8
|
|
|
10
9
|
<div
|
|
11
10
|
v-else
|
|
12
11
|
:class="[
|
|
13
12
|
prefixCls,
|
|
14
|
-
'
|
|
15
|
-
`
|
|
13
|
+
'BriUpload',
|
|
14
|
+
`BriUpload-${showType}`,
|
|
16
15
|
{
|
|
17
|
-
'
|
|
18
|
-
'
|
|
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="`
|
|
42
|
+
<div :class="`BriUpload-${showType}-imageadd`">
|
|
44
43
|
|
|
45
44
|
<i-circle
|
|
46
45
|
v-if="percent"
|
|
47
|
-
:class="`
|
|
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
|
|
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
|
-
|
|
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
|
-
[`
|
|
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>
|