| @ -0,0 +1,116 @@ | |||
| <template> | |||
| <el-select style="width:100%" v-model="selected" :placeholder="$t('form.placeholderSelect')" clearable :disabled="readonly" :multiple="multiple" @change="handleChange" filterable> | |||
| <el-option v-for="item in list" :key="item.id" :label="item.name" :value="item.id" /> | |||
| </el-select> | |||
| </template> | |||
| <script> | |||
| import { studyUser } from "@/api/system/user"; | |||
| export default { | |||
| name: "SelectStudyUser", | |||
| components: {}, | |||
| props: { | |||
| value: { | |||
| type: [Number, String , Array], | |||
| default: '', | |||
| }, | |||
| readonly: { | |||
| type: Boolean, | |||
| default: false | |||
| }, | |||
| multiple: { | |||
| type: Boolean, | |||
| default: false | |||
| }, | |||
| placeholder:{ | |||
| type:String, | |||
| default:'' | |||
| }, | |||
| query: { | |||
| type: Object, | |||
| default:()=>{ | |||
| return { | |||
| studyId:'', | |||
| studySubject:'', | |||
| permit:'' | |||
| } | |||
| } | |||
| }, | |||
| }, | |||
| watch: { | |||
| value: { | |||
| immediate: true, | |||
| handler(v) { | |||
| if(!this.multiple){ | |||
| this.selected = v ? (v+'') : '' | |||
| }else{ | |||
| if(v){ | |||
| //默认传的,分割的字符串,有传数组再改造 | |||
| let arr = v.split(',') | |||
| let s = [] | |||
| _.forEach(arr,a=>{ | |||
| s.push(a) | |||
| }) | |||
| this.selected = s | |||
| }else{ | |||
| this.selected = [] | |||
| } | |||
| } | |||
| } | |||
| }, | |||
| // query:{ | |||
| // handler(v) { | |||
| // this.getList() | |||
| // } | |||
| // } | |||
| }, | |||
| data() { | |||
| return { | |||
| selected: '', | |||
| list: [] | |||
| }; | |||
| }, | |||
| mounted() { | |||
| this.getList() | |||
| }, | |||
| methods: { | |||
| getList() { | |||
| this.list = [] | |||
| studyUser(this.query).then(response => { | |||
| this.list = response.data || [] | |||
| }) | |||
| }, | |||
| handleChange(val) { | |||
| //默认传的,分割的字符串,有传数组再改造 | |||
| this.$emit('input', this.multiple ? (val && val.length>0 ? val.join(','): ''):(val || '')) | |||
| if(this.multiple){ | |||
| debugger | |||
| let arr = [] | |||
| if(val && val.length>0){ | |||
| for(let i=0;i<val.length;i++){ | |||
| for(let j=0;j<this.list.length;j++){ | |||
| if(val[i]===this.list[j].id){ | |||
| arr.push(this.list[j]) | |||
| break | |||
| } | |||
| } | |||
| } | |||
| } | |||
| this.$emit('change',arr) | |||
| }else{ | |||
| let obj = {} | |||
| if(val){ | |||
| for(let j=0;j<this.list.length;j++){ | |||
| if(val===this.list[j].id){ | |||
| obj = this.list[j] | |||
| break | |||
| } | |||
| } | |||
| } | |||
| this.$emit('change', obj) | |||
| } | |||
| }, | |||
| } | |||
| }; | |||
| </script> | |||