服装智能制造软件平台V3.0
http://182.92.169.222/hhxy/#/user/login
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
4.5 KiB
159 lines
4.5 KiB
2 years ago
|
<template>
|
||
|
<div class="components-input-demo-presuffix">
|
||
|
<!---->
|
||
|
<a-input @click="openModal" placeholder="请点击选择部门" v-model="departNames" readOnly :disabled="disabled">
|
||
|
<a-icon slot="prefix" type="cluster" title="部门选择控件"/>
|
||
|
<a-icon v-if="departIds" slot="suffix" type="close-circle" @click="handleEmpty" title="清空"/>
|
||
|
</a-input>
|
||
|
|
||
|
<j-select-depart-modal1
|
||
|
ref="innerDepartSelectModal"
|
||
|
:modal-width="modalWidth"
|
||
|
:multi="multi"
|
||
|
:rootOpened="rootOpened"
|
||
|
:depart-id="departIds"
|
||
|
@ok="handleOK"
|
||
|
@initComp="initComp"/>
|
||
|
</div>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import JSelectDepartModal1 from './modal/JSelectDepartModal1'
|
||
|
export default {
|
||
|
name: 'JSelectDepart1',
|
||
|
components:{
|
||
|
JSelectDepartModal1
|
||
|
},
|
||
|
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: 'id'
|
||
|
},
|
||
|
backDepart: {
|
||
|
type: Boolean,
|
||
|
default: false,
|
||
|
required: false
|
||
|
}
|
||
|
},
|
||
|
data(){
|
||
|
return {
|
||
|
visible:false,
|
||
|
confirmLoading:false,
|
||
|
departNames:"",
|
||
|
departIds:''
|
||
|
}
|
||
|
},
|
||
|
mounted(){
|
||
|
this.departIds = this.value
|
||
|
},
|
||
|
watch:{
|
||
|
value(val){
|
||
|
//update-begin-author:wangshuai date:20201124 for:组件 JSelectDepart.vue不是默认id时新内容编辑问题 gitee I247X2
|
||
|
// if (this.customReturnField === 'id') {
|
||
|
this.departIds = val
|
||
|
// }
|
||
|
//update-end-author:wangshuai date:20201124 for:组件 JSelectDepart.vue不是默认id时新内容编辑问题 gitee I247X2
|
||
|
}
|
||
|
},
|
||
|
methods:{
|
||
|
initComp(departNames){
|
||
|
this.departNames = departNames
|
||
|
//update-begin-author:lvdandan date:20200513 for:TESTA-438 部门选择组件自定义返回值,数据无法回填
|
||
|
//TODO 当返回字段为部门名称时会有问题,因为部门名称不唯一
|
||
|
//返回字段不为id时,根据返回字段获取id
|
||
|
if(this.customReturnField !== 'id' && this.value){
|
||
|
const dataList = this.$refs.innerDepartSelectModal.dataList;
|
||
|
console.log('this.value',this.value)
|
||
|
this.departIds = this.value.split(',').map(item => {
|
||
|
const data = dataList.filter(d=>d[this.customReturnField] === item)
|
||
|
return data.length > 0 ? data[0].id : ''
|
||
|
}).join(',')
|
||
|
}
|
||
|
//update-end-author:lvdandan date:20200513 for:TESTA-438 部门选择组件自定义返回值,数据无法回填
|
||
|
},
|
||
|
//返回选中的部门信息
|
||
|
backDeparInfo(){
|
||
|
if(this.backDepart===true){
|
||
|
if(this.departIds && this.departIds.length>0){
|
||
|
let arr1 = this.departIds.split(',')
|
||
|
let arr2 = this.departNames.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, idstr) {
|
||
|
let value = ''
|
||
|
if (!rows && rows.length <= 0) {
|
||
|
this.departNames = ''
|
||
|
this.departIds = ''
|
||
|
} else {
|
||
|
value = rows.map(row => row[this.customReturnField]).join(',')
|
||
|
this.departNames = rows.map(row => row['departName']).join(',')
|
||
|
this.departIds = idstr
|
||
|
}
|
||
|
this.$emit("change", value)
|
||
|
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>
|