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.
160 lines
3.8 KiB
160 lines
3.8 KiB
import util from "../js/util.js"
|
|
|
|
export const MdpFieldMixin = {
|
|
|
|
computed: {
|
|
avaterCpd(){
|
|
var isEmpty=this.isEmpty(this.myVal)
|
|
var obj={isNull:isEmpty,icon:this.icon?this.icon:'el-icon-full-screen',color:this.color?this.color:'#E4E7ED',innerText:''}
|
|
if(isEmpty){
|
|
return obj;
|
|
}else{
|
|
if(this.color){
|
|
obj.color=this.color
|
|
}else{
|
|
obj.color= util.getColorById(this.myVal)
|
|
}
|
|
|
|
if(this.icon){
|
|
obj.icon=this.icon
|
|
}else{
|
|
obj.icon=''
|
|
}
|
|
obj.innerText=this.myVal
|
|
}
|
|
return obj;
|
|
},
|
|
},
|
|
data(){
|
|
return {
|
|
myVal:null,
|
|
}
|
|
},
|
|
watch:{
|
|
showAvater:{
|
|
type:Boolean,
|
|
default:true,
|
|
},
|
|
value(val){
|
|
if(val==this.myVal){
|
|
return;
|
|
}
|
|
this.myVal=val
|
|
},
|
|
myVal(val){
|
|
if(val==this.value){
|
|
return;
|
|
}
|
|
this.$emit('input',this.myVal)
|
|
}
|
|
},
|
|
props: {
|
|
disabled:{
|
|
type:Boolean,
|
|
default:false,
|
|
},
|
|
closable:{
|
|
type:Boolean,
|
|
default:false,
|
|
},
|
|
effect:{
|
|
type:String,
|
|
default:'dark'//dark / light / plain
|
|
},
|
|
value: {
|
|
type:[String,Number],
|
|
default:''
|
|
},
|
|
clearable:{
|
|
type:Boolean,
|
|
default:true,
|
|
},
|
|
styleObj:{
|
|
type:Object,
|
|
default:function(){return { marginTop:'5px' }}
|
|
},
|
|
/**
|
|
* 输入域的名字
|
|
*/
|
|
label: {
|
|
type: String,
|
|
default: "",
|
|
},
|
|
/**
|
|
* 空值时显示的内容
|
|
*/
|
|
placeholder:{
|
|
type: String,
|
|
default:''
|
|
},
|
|
/**
|
|
* 直接指定颜色
|
|
*/
|
|
color:String,
|
|
/**
|
|
* 直接指定图标
|
|
*/
|
|
icon:String,
|
|
|
|
/**
|
|
* 控制组件的布局
|
|
* origin 原始方式,保持element-ui原组件样式
|
|
* tag 未编辑前以tag显示,鼠标放入后显示原生组件模样
|
|
* x 综合布局,适合于表单追求美观的样式,将颜色+图标+布局进行柔和组成新的组件
|
|
*/
|
|
showStyle:{
|
|
type:String,
|
|
default:'origin'
|
|
},
|
|
|
|
/**输入框尺寸
|
|
* medium/small/mini
|
|
*/
|
|
size:{
|
|
type: String,
|
|
default:'small'
|
|
}
|
|
|
|
},
|
|
methods: {
|
|
showSelect(){
|
|
if(this.disabled){
|
|
return;
|
|
}
|
|
if(this.$refs["operRef"]){
|
|
if(this.$refs["operRef"].onFieldClick){
|
|
this.$refs["operRef"].onFieldClick();
|
|
}
|
|
}
|
|
},
|
|
initData(){
|
|
|
|
if(this.value==this.myVal){
|
|
return;
|
|
}
|
|
this.myVal=this.value
|
|
},
|
|
onChange(currentVal,oldVal){
|
|
this.$emit('change',currentVal,oldVal)
|
|
},
|
|
isEmpty(v) {
|
|
switch (typeof v) {
|
|
case 'undefined':
|
|
return true;
|
|
case 'string':
|
|
if(v.length == 0) return true;
|
|
break;
|
|
case 'object':
|
|
if (null === v || v.length === 0) return true;
|
|
for (var i in v) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
},
|
|
mounted(){
|
|
this.initData();
|
|
}
|
|
}
|