109 lines
2.1 KiB
JavaScript
109 lines
2.1 KiB
JavaScript
import validator from '../behaviors/validator';
|
|
|
|
Component({
|
|
/**
|
|
* 组件的属性列表
|
|
*/
|
|
externalClasses: ['l-deleted-class', 'l-unit-class', 'l-value-class', 'l-class', 'l-decimal-class', 'l-dot-class'],
|
|
behaviors: [validator],
|
|
properties: {
|
|
unit: {
|
|
type: String,
|
|
value: '¥'
|
|
},
|
|
size: {
|
|
type: String,
|
|
value: '28'
|
|
},
|
|
color: {
|
|
type: String,
|
|
value: '#3963BC'
|
|
},
|
|
bold: {
|
|
type: String,
|
|
value: '500'
|
|
},
|
|
unitColor: String,
|
|
unitSize: String,
|
|
unitBold: String,
|
|
value: {
|
|
type: String,
|
|
value: '0.00'
|
|
},
|
|
mode: {
|
|
type: String,
|
|
value: 'number',
|
|
options: ['number', 'text']
|
|
},
|
|
valueColor: String,
|
|
valueSize: String,
|
|
valueBold: String,
|
|
deleted: Boolean,
|
|
delColor: String,
|
|
reserveDigit: {
|
|
type: Number,
|
|
value: 2
|
|
},
|
|
autofix: Boolean
|
|
},
|
|
|
|
/**
|
|
* 组件的初始数据
|
|
*/
|
|
data: {
|
|
// 价格整数部分
|
|
priceInteger: {
|
|
type: String,
|
|
value: '0'
|
|
},
|
|
// 价格小数部分
|
|
priceDecimal: {
|
|
type: String,
|
|
value: '00'
|
|
}
|
|
},
|
|
|
|
observers: {
|
|
'value': function () {
|
|
this.reserveNumber();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 组件的方法列表
|
|
*/
|
|
methods: {
|
|
reserveNumber() {
|
|
this.setData({
|
|
priceInteger: null,
|
|
priceDecimal: null
|
|
});
|
|
const countToNumber = Number(this.data.value);
|
|
const isText = isNaN(Number(countToNumber)) || (this.data.mode === 'text');
|
|
if (!isText && this.data.autofix) {
|
|
const result = countToNumber.toFixed(this.data.reserveDigit);
|
|
const price = result.toString().split('.');
|
|
this._setPrice(price);
|
|
} else {
|
|
const price = this.data.value.split('.');
|
|
this._setPrice(price);
|
|
}
|
|
},
|
|
|
|
_setPrice(price) {
|
|
if (price.length === 1) {
|
|
this.setData({
|
|
priceInteger: price[0]
|
|
});
|
|
}else if(price.length === 2){
|
|
this.setData({
|
|
priceInteger: price[0],
|
|
priceDecimal: price[1]
|
|
});
|
|
}else{
|
|
throw 'price 格式有误,请仔细检查!';
|
|
}
|
|
}
|
|
}
|
|
});
|