123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- <template>
- <div class="components-input-demo-presuffix">
- <!---->
- <a-input @click="openModal" placeholder="请点击选择部门" v-model="textVals" readOnly :disabled="disabled">
- <a-icon slot="prefix" type="cluster" title="部门选择控件"/>
- <a-icon v-if="storeVals" slot="suffix" type="close-circle" @click="handleEmpty" title="清空"/>
- </a-input>
- <j-select-depart-modal
- ref="innerDepartSelectModal"
- :modal-width="modalWidth"
- :multi="multi"
- :rootOpened="rootOpened"
- :depart-id="value"
- :store="storeField"
- :text="textField"
- :treeOpera="treeOpera"
- @ok="handleOK"
- @initComp="initComp"/>
- </div>
- </template>
- <script>
- import JSelectDepartModal from './modal/JSelectDepartModal'
- import { underLinetoHump } from '@/components/_util/StringUtil'
- export default {
- name: 'JSelectDepart',
- components:{
- JSelectDepartModal
- },
- props:{
- modalWidth:{
- type:Number,
- default:500,
- required:false
- },
- multi:{
- type:Boolean,
- default:false,
- required:false
- },
- rootOpened:{
- type:Boolean,
- default:true,
- required:false
- },
- value:{
- type:String,
- required:false
- },
- disabled:{
- type: Boolean,
- required: false,
- default: false
- },
- // 自定义返回字段,默认返回 id
- customReturnField: {
- type: String,
- default: ''
- },
- backDepart: {
- type: Boolean,
- default: false,
- required: false
- },
- // 存储字段 [key field]
- store: {
- type: String,
- default: 'id',
- required: false
- },
- // 显示字段 [label field]
- text: {
- type: String,
- default: 'departName',
- required: false
- },
- treeOpera: {
- type: Boolean,
- default: false,
- required: false
- }
-
- },
- data(){
- return {
- visible:false,
- confirmLoading:false,
- storeVals: '', //[key values]
- textVals: '' //[label values]
- }
- },
- computed:{
- storeField(){
- let field = this.customReturnField
- if(!field){
- field = this.store;
- }
- return underLinetoHump(field)
- },
- textField(){
- return underLinetoHump(this.text)
- }
- },
- mounted(){
- this.storeVals = this.value
- },
- watch:{
- value(val){
- this.storeVals = val
- }
- },
- methods:{
- initComp(textVals){
- this.textVals = textVals
- },
- //返回选中的部门信息
- backDeparInfo(){
- if(this.backDepart===true){
- if(this.departIds && this.departIds.length>0){
- let arr1 = this.storeVals.split(',')
- let arr2 = this.textVals.split(',')
- let info = []
- for(let i=0;i<arr1.length;i++){
- info.push({
- value: arr1[i],
- text: arr2[i]
- })
- }
- this.$emit('back', info)
- }
- }
- },
- openModal(){
- this.$refs.innerDepartSelectModal.show()
- },
- handleOK(rows) {
- if (!rows && rows.length <= 0) {
- this.textVals = ''
- this.storeVals = ''
- } else {
- let arr1 = []
- let arr2 = []
- for(let dep of rows){
- arr1.push(dep[this.storeField])
- arr2.push(dep[this.textField])
- }
- this.storeVals = arr1.join(',')
- this.textVals = arr2.join(',')
- }
- this.$emit("change", this.storeVals)
- this.backDeparInfo()
- },
- getDepartNames(){
- return this.departNames
- },
- handleEmpty(){
- this.handleOK('')
- }
- },
- model: {
- prop: 'value',
- event: 'change'
- }
- }
- </script>
- <style scoped>
- .components-input-demo-presuffix .anticon-close-circle {
- cursor: pointer;
- color: #ccc;
- transition: color 0.3s;
- font-size: 12px;
- }
- .components-input-demo-presuffix .anticon-close-circle:hover {
- color: #f5222d;
- }
- .components-input-demo-presuffix .anticon-close-circle:active {
- color: #666;
- }
- </style>
|