<!-- 选择部门 -->
|
|
|
|
<template>
|
|
<el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :title="$t('form.selectMember')" :visible.sync="open" width="800px" append-to-body>
|
|
<el-row style="height: 500px;overflow-y: scroll;">
|
|
<el-col :span="12" class="select-user-left">
|
|
<el-input
|
|
:placeholder="$t('form.placeholderInput')"
|
|
v-model="filterText"
|
|
style="margin-bottom:10px">
|
|
</el-input>
|
|
|
|
<el-tree
|
|
class="filter-tree"
|
|
:data="list"
|
|
:props="defaultProps"
|
|
:default-expand-all="true"
|
|
:default-expanded-keys="selected.id=='' ? []:[selected.id]"
|
|
:filter-node-method="filterNode"
|
|
ref="tree"
|
|
node-key="id"
|
|
>
|
|
<span class="custom-tree-node" slot-scope="{ node, data }">
|
|
<!-- <el-radio :ref="'radio'+data.id" v-if="data.type===7" v-model="selected.id" :label="data.id" @change="handleChange(data)" class="select-dept-user-check-radio-box">{{ $i18n.locale === 'zh_CN'?data.name:data.nameEn }}</el-radio> -->
|
|
<el-radio :ref="'radio'+data.id" v-if="data.type===7" v-model="selected.id" :label="data.id" @change="handleChange(data)" class="select-dept-user-check-radio-box">{{data.name }}</el-radio>
|
|
<!-- <span v-else>{{ $i18n.locale === 'zh_CN'?data.name:data.nameEn }}</span> -->
|
|
<span v-else>{{ data.name }}</span>
|
|
</span>
|
|
</el-tree>
|
|
</el-col>
|
|
<el-col :span="12" class="select-user-right">
|
|
<div>已选</div>
|
|
<div class="select-user-selected" v-if="selected.id!=''">
|
|
<div class="select-user-selected-item">
|
|
<!-- <div class="select-user-selected-name">{{$i18n.locale === 'zh_CN'?selected.name:selected.nameEn}}</div> -->
|
|
<div class="select-user-selected-name">{{selected.name}}</div>
|
|
<div class="select-user-selected-del"><i class="el-icon-delete" @click="delSelected"></i></div>
|
|
</div>
|
|
</div>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button @click="open=false">{{$t('form.cancel')}}</el-button>
|
|
<el-button type="primary" @click="save">{{$t('form.saveConfirm')}}</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
</template>
|
|
|
|
<script>
|
|
import { deptUserList } from "@/api/system/user"
|
|
export default {
|
|
name: "SelectDeptUserDialog",
|
|
components: {},
|
|
props: {
|
|
},
|
|
watch: {
|
|
filterText(val) {
|
|
this.$refs.tree.filter(val);
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
open:false,
|
|
|
|
selected:{
|
|
id:'',
|
|
name:'',
|
|
nameEn:''
|
|
},
|
|
|
|
listData: [],
|
|
list: [],
|
|
filterText:'',
|
|
defaultProps: {
|
|
children: 'children',
|
|
label: 'name'
|
|
}
|
|
};
|
|
},
|
|
mounted() {
|
|
},
|
|
methods: {
|
|
show(id,name,nameEn){
|
|
this.getList()
|
|
|
|
this.selected.id = id ?((id+'').indexOf('u_')>-1? id:('u_'+id)):''
|
|
this.selected.name=name || ''
|
|
this.selected.nameEn=nameEn || ''
|
|
this.open = true
|
|
this.filterText = ''
|
|
},
|
|
filterNode(value, data) {
|
|
if (!value) return true;
|
|
// return this.$i18n.locale === 'zh_CN'?(data.name.indexOf(value) !== -1):(data.nameEn.indexOf(value) !== -1);
|
|
return data.name.indexOf(value) !== -1;
|
|
},
|
|
getList() {
|
|
this.listData = []
|
|
this.list = []
|
|
deptUserList().then(response => {
|
|
this.listData = response.data
|
|
this.list = this.handleTree(response.data, "id")
|
|
})
|
|
},
|
|
handleChange(data) {
|
|
if(data && data.type===7){
|
|
this.selected = {
|
|
id:data.id,
|
|
name:data.name,
|
|
nameEn:data.nameEn,
|
|
}
|
|
}
|
|
},
|
|
// getName(id){
|
|
// let name = ''
|
|
// let arr = _.filter(this.listData, (o)=> { return o.id===id })
|
|
// if(arr && arr.length>0){
|
|
// name = arr[0].name
|
|
// }
|
|
// return name
|
|
// },
|
|
save(){
|
|
let obj = {
|
|
id:this.selected && this.selected.id?this.selected.id.replace('u_',''):'',
|
|
name:this.selected.name,
|
|
nameEn:this.selected.nameEn,
|
|
}
|
|
this.$emit('change', obj)
|
|
this.$emit('input', obj.id)
|
|
this.open = false
|
|
},
|
|
delSelected(){
|
|
this.selected = {
|
|
id:'',
|
|
name:'',
|
|
nameEn:'',
|
|
}
|
|
}
|
|
}
|
|
};
|
|
</script>
|