|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+<template>
|
|
|
2
|
+ <uni-popup ref="popup" type="center" :animation="true" :mask-click="false">
|
|
|
3
|
+ <view class="popup_data">
|
|
|
4
|
+ <view class="popup_data__headers">
|
|
|
5
|
+ <view class="popup_data__headers--title">{{ title }}</view>
|
|
|
6
|
+ <uni-icons
|
|
|
7
|
+ type="closeempty"
|
|
|
8
|
+ class="custom_icons"
|
|
|
9
|
+ size="30"
|
|
|
10
|
+ @click="handleClose"
|
|
|
11
|
+ ></uni-icons>
|
|
|
12
|
+ </view>
|
|
|
13
|
+
|
|
|
14
|
+ <view class="popup_data__content">
|
|
|
15
|
+ <view
|
|
|
16
|
+ v-for="(item, index) in selectData"
|
|
|
17
|
+ :key="index + '_index_'"
|
|
|
18
|
+ class="popup_data__content--list"
|
|
|
19
|
+ @click="handleTabs(item, index)"
|
|
|
20
|
+ >
|
|
|
21
|
+ <view class="popup_data__content--item">
|
|
|
22
|
+ <uni-icons
|
|
|
23
|
+ type="checkmarkempty"
|
|
|
24
|
+ :class="['_select_icons',(index ===selectId || selectId === item.value) ?'isActive':'']"
|
|
|
25
|
+ size="25"
|
|
|
26
|
+ ></uni-icons>
|
|
|
27
|
+ <view :class="['popup_data__content--item__title',(index === selectId || selectId === item.value) ?'isActive':'']">
|
|
|
28
|
+ {{
|
|
|
29
|
+ item.text
|
|
|
30
|
+ }}
|
|
|
31
|
+ </view>
|
|
|
32
|
+ </view>
|
|
|
33
|
+ </view>
|
|
|
34
|
+ </view>
|
|
|
35
|
+ </view>
|
|
|
36
|
+ </uni-popup>
|
|
|
37
|
+</template>
|
|
|
38
|
+
|
|
|
39
|
+<script>
|
|
|
40
|
+export default {
|
|
|
41
|
+ props: {
|
|
|
42
|
+ title: {
|
|
|
43
|
+ type: String,
|
|
|
44
|
+ default: "物流公司信息",
|
|
|
45
|
+ },
|
|
|
46
|
+ value: {
|
|
|
47
|
+ type: [String, Number],
|
|
|
48
|
+ default: "",
|
|
|
49
|
+ },
|
|
|
50
|
+ defaultProps:{
|
|
|
51
|
+ type:Object,
|
|
|
52
|
+ default:()=>{
|
|
|
53
|
+ return {
|
|
|
54
|
+ props:"text",
|
|
|
55
|
+ value:"value"
|
|
|
56
|
+ }
|
|
|
57
|
+ }
|
|
|
58
|
+ },
|
|
|
59
|
+ selectData:{
|
|
|
60
|
+ type:Array,
|
|
|
61
|
+ default:()=>{
|
|
|
62
|
+ return [
|
|
|
63
|
+ { value: 0, text: "顺丰速运", code: "SF" },
|
|
|
64
|
+ { value: 1, text: "中通快递", code: "ZTO" },
|
|
|
65
|
+ { value: 2, text: "韵达快递", code: "YUNDA" },
|
|
|
66
|
+ { value: 3, text: "申通快递", code: "STO" },
|
|
|
67
|
+ { value: 4, text: "EMS邮政", code: "EMS" },
|
|
|
68
|
+ { value: 5, text: "圆通速递", code: "YTO" },
|
|
|
69
|
+ { value: 6, text: "DHL国际", code: "DHL" },
|
|
|
70
|
+ { value: 7, text: "京东物流", code: "JD" },
|
|
|
71
|
+ { value: 8, text: "FedEx联邦", code: "FDX" },
|
|
|
72
|
+ { value: 9, text: "UPS联合包裹", code: "UPS" },
|
|
|
73
|
+ { value: 10, text: "德邦快递", code: "DEPPON" },
|
|
|
74
|
+ { value: 11, text: "百世快递", code: "BEST" },
|
|
|
75
|
+ { value: 12, text: "极兔速递", code: "J&T" },
|
|
|
76
|
+ { value: 13, text: "TNT快递", code: "TNT" },
|
|
|
77
|
+ { value: 14, text: "跨越速运", code: "KYE" }
|
|
|
78
|
+]
|
|
|
79
|
+ }
|
|
|
80
|
+ }
|
|
|
81
|
+ },
|
|
|
82
|
+ data() {
|
|
|
83
|
+ return {
|
|
|
84
|
+ selectId: ""
|
|
|
85
|
+ };
|
|
|
86
|
+ },
|
|
|
87
|
+ watch: {
|
|
|
88
|
+ value: {
|
|
|
89
|
+ handler(val) {
|
|
|
90
|
+ this.selectId = val;
|
|
|
91
|
+ },
|
|
|
92
|
+ immediate:true
|
|
|
93
|
+ },
|
|
|
94
|
+ },
|
|
|
95
|
+ mounted() {
|
|
|
96
|
+ this.selectId = this.value;
|
|
|
97
|
+ },
|
|
|
98
|
+ methods: {
|
|
|
99
|
+ handleTabs(item, index) {
|
|
|
100
|
+ const data = item.value || index
|
|
|
101
|
+ if(this.selectId === data){
|
|
|
102
|
+ this.selectId = ""
|
|
|
103
|
+ }else{
|
|
|
104
|
+ this.selectId = item.value || index
|
|
|
105
|
+ }
|
|
|
106
|
+ this.$emit("update:value",this.selectId)
|
|
|
107
|
+ console.log(this.selectId,"this.selectId")
|
|
|
108
|
+ const itemObj = this.selectId?item:{}
|
|
|
109
|
+ this.$emit("tabs",{selected:this.selectId,item:itemObj,index})
|
|
|
110
|
+ this.handleClose()
|
|
|
111
|
+
|
|
|
112
|
+ },
|
|
|
113
|
+ handleClose() {
|
|
|
114
|
+ this.close();
|
|
|
115
|
+ },
|
|
|
116
|
+ open(type = "bottom") {
|
|
|
117
|
+ this.$refs.popup.open(type);
|
|
|
118
|
+ },
|
|
|
119
|
+ close() {
|
|
|
120
|
+ this.$refs.popup.close();
|
|
|
121
|
+ },
|
|
|
122
|
+ },
|
|
|
123
|
+};
|
|
|
124
|
+</script>
|
|
|
125
|
+
|
|
|
126
|
+<style lang="scss">
|
|
|
127
|
+.popup_data {
|
|
|
128
|
+ padding: 26rpx 30rpx;
|
|
|
129
|
+ min-height: 550rpx;
|
|
|
130
|
+ max-height: 650rpx;
|
|
|
131
|
+ box-sizing: border-box;
|
|
|
132
|
+ overflow: hidden;
|
|
|
133
|
+ background: linear-gradient(180deg, #e5edff 0%, #ffffff 100%);
|
|
|
134
|
+ border-radius: 24rpx 24rpx 0 0;
|
|
|
135
|
+ &__headers {
|
|
|
136
|
+ // height: 40rpx;
|
|
|
137
|
+ display: flex;
|
|
|
138
|
+ justify-content: space-between;
|
|
|
139
|
+ align-items: center;
|
|
|
140
|
+ border-bottom: 2rpx solid #e5e5e5;
|
|
|
141
|
+ padding-bottom: 15rpx;
|
|
|
142
|
+ &--title {
|
|
|
143
|
+ flex: 1;
|
|
|
144
|
+ display: -webkit-box;
|
|
|
145
|
+ -webkit-box-orient: vertical;
|
|
|
146
|
+ -webkit-line-clamp: 1;
|
|
|
147
|
+ overflow: hidden;
|
|
|
148
|
+ justify-content: space-between;
|
|
|
149
|
+ padding-right: 60rpx;
|
|
|
150
|
+ font-size: 32rpx;
|
|
|
151
|
+ font-weight: 600;
|
|
|
152
|
+ }
|
|
|
153
|
+ .custom_icons {
|
|
|
154
|
+ flex-shrink: 0;
|
|
|
155
|
+ }
|
|
|
156
|
+ }
|
|
|
157
|
+ &__content {
|
|
|
158
|
+ max-height: 540rpx;
|
|
|
159
|
+ overflow-y: auto;
|
|
|
160
|
+ &--list {
|
|
|
161
|
+ user-select: none;
|
|
|
162
|
+ border-bottom: 2rpx solid #e5e5e5;
|
|
|
163
|
+ &:last-child{
|
|
|
164
|
+ border-bottom:none;
|
|
|
165
|
+ }
|
|
|
166
|
+ }
|
|
|
167
|
+ &--item {
|
|
|
168
|
+ display: flex;
|
|
|
169
|
+ gap: 20rpx;
|
|
|
170
|
+ padding: 20rpx 0;
|
|
|
171
|
+
|
|
|
172
|
+ ._select_icons {
|
|
|
173
|
+ color: #eee !important;
|
|
|
174
|
+ }
|
|
|
175
|
+ &__title {
|
|
|
176
|
+ }
|
|
|
177
|
+ }
|
|
|
178
|
+ .isActive {
|
|
|
179
|
+ color: #007aff !important;
|
|
|
180
|
+ }
|
|
|
181
|
+ }
|
|
|
182
|
+}
|
|
|
183
|
+</style>
|