Houjie
2025-04-11 1bf977929dd324f3ac64b70debd8a79443c54392
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<template>
    <view class="cu-form-group" style="z-index:10">
        <view class="flex align-center">
            <view class="title">
                <text class="text-red" v-if="required">*</text>
                <text space="ensp">{{label}}</text>
            </view>
            <picker
                 @change="pickerChange"
                 :range="selections"
                 :value="valueIndex"
                 :disabled="disabled">
                <input
                   :placeholder="placeholder"
                   name="input"
                   v-model="selected"
                   :disabled="true"
                ></input>
            </picker>
        </view>
    </view>
</template>
 
<script>
 
    export default {
        name: "AppSecelt",
        behaviors: ['uni://form-field'],
        props:{
            display:{
                type:String,
                default:'inline-block',
                required:false
            },
            placeholder:{
                type:String,
                default:'请选择',
                required:false
            },
            label:{
                type:String,
                default:'',
                required:false
            },
            value:{
                type:String,
                required:false
            },
            border:{
                type:Boolean,
                default:false,
                required:false
            },
            dict:{
                type:Array,
                default:()=>[],
                required:true
            },
            name:{
                type:String,
                default:'',
                required:false
            },
            required:{
                type:Boolean,
                default:false,
                required:false
            },
            disabled:{
                type:Boolean,
                default:false,
                required:false
            },
            space:{
                type:Boolean,
                default:false,
                required:false
            }
        },
        data(){
            return {
                show:false,
                selected:'',
                valueIndex:0,
                selections:[]
            }
        },
        watch:{
            value:{
                immediate:true,
                handler(val){
                  if(!val){
                    this.selected = ''
                    this.valueIndex = 0
                }else{
                  this.dict.map((item,index)=>{
                     if(item.value == val){
                      this.selected = item.text;
                      this.valueIndex = index
                    }
                  })
                }
              }
            },
            dict(){
                this.initSelections();
            }
        },
        created(){
            this.initSelections();
        },
        methods:{
            initSelections(){
                let arr = [];
                this.dict.map(item=>{
                    arr.push(item.text)
                });
                this.selections = arr
            },
            pickerChange(e){
                console.log("appselect::pickerChange",e.detail.value)
                let backString = '';
                let obj=this.dict[e.detail.value];
                this.selected=obj.text;
                backString=obj.value;
                console.log("backString",backString)
                console.log("this.selected",this.selected)
                
                this.$emit('input',backString);
                // #ifndef MP-WEIXIN
                this.$emit('change',backString);
                // #endif
            }
        },
        model: {
            prop: 'value',
            event:'change'
        }
    }
</script>
 
<style scoped>
    .cu-form-group uni-picker::after {
        font-family: cuIcon;
        display: block;
        content: "\e6a3";
        position: absolute;
        font-size: 14px;
        color: #FFFFFF;
        line-height: 42px;
        width: 25px;
        text-align: center;
        top: 0;
        bottom: 0;
        right: -8px;
        margin: auto;
    }
</style>