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.
 
 
 
 
 
 

233 lines
5.5 KiB

<template>
<el-popover
v-model="showPopover"
:disabled="disabled"
placement="bottom"
width="700"
popper-class="no-padding-popover"
trigger="click">
<crm-relative
v-if="!disabled&&showSelectView"
ref="crmrelative"
:crm-type="relationType"
:action="relationAction"
@close="showPopover=false"
@changeCheckout="checkInfos"/>
<flexbox
slot="reference"
:class="[disabled ? 'is_disabled' : 'is_valid']"
wrap="wrap"
class="user-container"
@click.native="contentClick">
<div
v-for="(aitem, aindex) in dataValue"
:key="aindex"
class="user-item"
@click.stop="deleteinfo(aindex)">{{ getShowName(aitem) }}
<i class="delete-icon el-icon-close"/>
</div>
<div
v-if="dataValue.length == 0"
class="add-item">+添加</div>
</flexbox>
</el-popover>
</template>
<script type="text/javascript">
import CrmRelative from './CrmRelative'
import arrayMixin from './arrayMixin'
import Lockr from 'lockr'
export default {
name: 'CrmRelativeCell', // 相关模块CRMCell
components: {
CrmRelative
},
mixins: [arrayMixin],
props: {
relation: {
// 相关ID
type: Object,
default: () => {
return {}
}
}
},
data() {
return {
showPopover: false, // 展示popover
showSelectView: false, // 内容
radio: true, // 是否单选
relationAction: { type: 'default' },
relationType:''
}
},
computed: {
// 如果有相关ID 展示相关效果 例如客户下的商机和合同
isRelationShow() {
return this.item && this.item.data && this.item.data.relation_id
}
},
watch: {
relation: function(val) {
if(val.type!="")
{
if(this.relation.type!=null)
{
this.relationType=this.relation.type;
}
else
{
this.relationType=this.item.data.formType;
}
if (val.moduleType) {
this.relationAction = { type: 'condition', data: val }
} else {
this.relationAction = { type: 'default' }
}
}
}
},
mounted() {
if(this.relation.type!=null )
{
this.relationType=this.relation.type;
}
else
{
this.relationType=this.item.data.formType;
}
if (this.relation && this.relation.moduleType) {
this.relationAction = { type: 'condition', data: this.relation }
} else {
this.relationAction = { type: 'default' }
}
},
methods: {
/** 选中 */
checkInfos(data) {
this.dataValue = data.data ? data.data : []
this.$emit('value-change', {
index: this.index,
value: data.data,
type:this.relationType
})
},
/** 删除 */
deleteinfo(index) {
if (this.disabled) return
if (this.radio && this.$refs.crmrelative) {
// 如果单选告知删除
this.$refs.crmrelative.clearAll()
}
if (this.dataValue.length === 1) {
this.dataValue = []
} else {
this.dataValue.splice(index, 1)
}
this.$emit('value-change', {
index: this.index,
value: this.dataValue
})
},
contentClick() {
this.showSelectView = true
},
getShowName(data) {
if (this.relationType === 'receivables') {
return data.number
} else if (this.relationType === 'customer') {
return data.Name
} else if (this.relationType === 'strategy'
|| this.relationType === 'rule'
||this.relationType ==='uom'
||this.relationType ==='uomGroup'
||this.relationType ==='slg'
||this.relationType === 'verification'
||this.relationType === 'stage'
||this.relationType === 'area'
||this.relationType === 'purchaseUomConversion'
||this.relationType === 'stockUomConversion'
||this.relationType === 'productionUomConversion'
||this.relationType === 'sellUomConversion'
||this.relationType === 'inventoryRoute'
) {
return data.Name
} else if (this.relationType === 'org') {
return data.branchName
}
// else if (this.relationType === 'item'
// || this.relationType === 'area'
// ) {
// return data.OrgID
// }
else if (this.relationType === 'item') {
return data.Code // 返回 Code
// return data.Description1 // 返回描述
}
else if (this.relationType === 'contract') {
return data.contractNum || data.num
} else {
console.log('this.relationType : ' + this.relationType)
return data.Name
}
},
deleteValue()
{
this.$message.error('子组件删除方法');
}
}
}
</script>
<style lang="scss" scoped>
.user-container {
min-height: 34px;
position: relative;
border-radius: 3px;
font-size: 12px;
border: 1px solid #ddd;
color: #333333;
padding: 5px;
line-height: 15px;
.user-item {
padding: 5px;
background-color: #e2ebf9;
border-radius: 3px;
margin: 3px;
cursor: pointer;
}
.add-item {
padding: 5px;
color: #3e84e9;
cursor: pointer;
}
.delete-icon {
color: #999;
cursor: pointer;
}
}
.user-container.is_disabled {
background-color: #f5f7fa;
border-color: #e4e7ed;
cursor: not-allowed;
.user-item {
background-color: #f0f4f8ea;
color: #c0c4cc;
cursor: not-allowed;
}
.delete-icon {
color: #c0c4cc;
cursor: not-allowed;
}
.add-item {
color: #c0c4cc;
cursor: not-allowed;
}
}
.user-container.is_valid:hover {
border-color: #c0c4cc;
}
</style>