first
This commit is contained in:
235
node_modules/vant/lib/sku/components/SkuMessages.js
generated
vendored
Normal file
235
node_modules/vant/lib/sku/components/SkuMessages.js
generated
vendored
Normal file
@ -0,0 +1,235 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.default = void 0;
|
||||
|
||||
var _utils = require("../../utils");
|
||||
|
||||
var _email = require("../../utils/validate/email");
|
||||
|
||||
var _number = require("../../utils/validate/number");
|
||||
|
||||
var _cell = _interopRequireDefault(require("../../cell"));
|
||||
|
||||
var _field = _interopRequireDefault(require("../../field"));
|
||||
|
||||
var _SkuImgUploader = _interopRequireDefault(require("./SkuImgUploader"));
|
||||
|
||||
var _SkuDateTimeField = _interopRequireDefault(require("./SkuDateTimeField"));
|
||||
|
||||
// Utils
|
||||
// Components
|
||||
var _createNamespace = (0, _utils.createNamespace)('sku-messages'),
|
||||
createComponent = _createNamespace[0],
|
||||
bem = _createNamespace[1],
|
||||
t = _createNamespace[2];
|
||||
|
||||
var _default2 = createComponent({
|
||||
props: {
|
||||
messageConfig: Object,
|
||||
goodsId: [Number, String],
|
||||
messages: {
|
||||
type: Array,
|
||||
default: function _default() {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
},
|
||||
data: function data() {
|
||||
return {
|
||||
messageValues: this.resetMessageValues(this.messages)
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
messages: function messages(val) {
|
||||
this.messageValues = this.resetMessageValues(val);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
resetMessageValues: function resetMessageValues(messages) {
|
||||
var messageConfig = this.messageConfig;
|
||||
var _messageConfig$initia = messageConfig.initialMessages,
|
||||
initialMessages = _messageConfig$initia === void 0 ? {} : _messageConfig$initia;
|
||||
return (messages || []).map(function (message) {
|
||||
return {
|
||||
value: initialMessages[message.name] || ''
|
||||
};
|
||||
});
|
||||
},
|
||||
getType: function getType(message) {
|
||||
if (+message.multiple === 1) {
|
||||
return 'textarea';
|
||||
}
|
||||
|
||||
if (message.type === 'id_no') {
|
||||
return 'text';
|
||||
}
|
||||
|
||||
return message.datetime > 0 ? 'datetime' : message.type;
|
||||
},
|
||||
getMessages: function getMessages() {
|
||||
var messages = {};
|
||||
this.messageValues.forEach(function (item, index) {
|
||||
messages["message_" + index] = item.value;
|
||||
});
|
||||
return messages;
|
||||
},
|
||||
getCartMessages: function getCartMessages() {
|
||||
var _this = this;
|
||||
|
||||
var messages = {};
|
||||
this.messageValues.forEach(function (item, index) {
|
||||
var message = _this.messages[index];
|
||||
messages[message.name] = item.value;
|
||||
});
|
||||
return messages;
|
||||
},
|
||||
getPlaceholder: function getPlaceholder(message) {
|
||||
var type = +message.multiple === 1 ? 'textarea' : message.type;
|
||||
var map = this.messageConfig.placeholderMap || {};
|
||||
return message.placeholder || map[type] || t("placeholder." + type);
|
||||
},
|
||||
validateMessages: function validateMessages() {
|
||||
var values = this.messageValues;
|
||||
|
||||
for (var i = 0; i < values.length; i++) {
|
||||
var value = values[i].value;
|
||||
var message = this.messages[i];
|
||||
|
||||
if (value === '') {
|
||||
// 必填字段的校验
|
||||
if (String(message.required) === '1') {
|
||||
var textType = t(message.type === 'image' ? 'upload' : 'fill');
|
||||
return textType + message.name;
|
||||
}
|
||||
} else {
|
||||
if (message.type === 'tel' && !(0, _number.isNumeric)(value)) {
|
||||
return t('invalid.tel');
|
||||
}
|
||||
|
||||
if (message.type === 'mobile' && !/^\d{6,20}$/.test(value)) {
|
||||
return t('invalid.mobile');
|
||||
}
|
||||
|
||||
if (message.type === 'email' && !(0, _email.isEmail)(value)) {
|
||||
return t('invalid.email');
|
||||
}
|
||||
|
||||
if (message.type === 'id_no' && (value.length < 15 || value.length > 18)) {
|
||||
return t('invalid.id_no');
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* The phone number copied from IOS mobile phone address book
|
||||
* will add spaces and invisible Unicode characters
|
||||
* which cannot pass the /^\d+$/ verification
|
||||
* so keep numbers and dots
|
||||
*/
|
||||
getFormatter: function getFormatter(message) {
|
||||
return function formatter(value) {
|
||||
if (message.type === 'mobile' || message.type === 'tel') {
|
||||
return value.replace(/[^\d.]/g, '');
|
||||
}
|
||||
|
||||
return value;
|
||||
};
|
||||
},
|
||||
getExtraDesc: function getExtraDesc(message) {
|
||||
var h = this.$createElement;
|
||||
var extraDesc = message.extraDesc;
|
||||
|
||||
if (extraDesc) {
|
||||
return h("div", {
|
||||
"class": bem('extra-message')
|
||||
}, [extraDesc]);
|
||||
}
|
||||
},
|
||||
genMessage: function genMessage(message, index) {
|
||||
var _this2 = this;
|
||||
|
||||
var h = this.$createElement;
|
||||
|
||||
if (message.type === 'image') {
|
||||
return h(_cell.default, {
|
||||
"key": this.goodsId + "-" + index,
|
||||
"attrs": {
|
||||
"title": message.name,
|
||||
"required": String(message.required) === '1',
|
||||
"valueClass": bem('image-cell-value')
|
||||
},
|
||||
"class": bem('image-cell')
|
||||
}, [h(_SkuImgUploader.default, {
|
||||
"attrs": {
|
||||
"maxSize": this.messageConfig.uploadMaxSize,
|
||||
"uploadImg": this.messageConfig.uploadImg,
|
||||
"customUpload": this.messageConfig.customUpload
|
||||
},
|
||||
"model": {
|
||||
value: _this2.messageValues[index].value,
|
||||
callback: function callback($$v) {
|
||||
_this2.$set(_this2.messageValues[index], "value", $$v);
|
||||
}
|
||||
}
|
||||
}), h("div", {
|
||||
"class": bem('image-cell-label')
|
||||
}, [t('imageLabel')])]);
|
||||
} // 时间和日期使用的vant选择器
|
||||
|
||||
|
||||
var isDateOrTime = ['date', 'time'].indexOf(message.type) > -1;
|
||||
|
||||
if (isDateOrTime) {
|
||||
return h(_SkuDateTimeField.default, {
|
||||
"attrs": {
|
||||
"label": message.name,
|
||||
"required": String(message.required) === '1',
|
||||
"placeholder": this.getPlaceholder(message),
|
||||
"type": this.getType(message)
|
||||
},
|
||||
"key": this.goodsId + "-" + index,
|
||||
"model": {
|
||||
value: _this2.messageValues[index].value,
|
||||
callback: function callback($$v) {
|
||||
_this2.$set(_this2.messageValues[index], "value", $$v);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return h("div", {
|
||||
"class": bem('cell-block')
|
||||
}, [h(_field.default, {
|
||||
"attrs": {
|
||||
"maxlength": "200",
|
||||
"center": !message.multiple,
|
||||
"label": message.name,
|
||||
"required": String(message.required) === '1',
|
||||
"placeholder": this.getPlaceholder(message),
|
||||
"type": this.getType(message),
|
||||
"formatter": this.getFormatter(message),
|
||||
"border": false
|
||||
},
|
||||
"key": this.goodsId + "-" + index,
|
||||
"model": {
|
||||
value: _this2.messageValues[index].value,
|
||||
callback: function callback($$v) {
|
||||
_this2.$set(_this2.messageValues[index], "value", $$v);
|
||||
}
|
||||
}
|
||||
}), this.getExtraDesc(message)]);
|
||||
}
|
||||
},
|
||||
render: function render() {
|
||||
var h = arguments[0];
|
||||
return h("div", {
|
||||
"class": bem()
|
||||
}, [this.messages.map(this.genMessage)]);
|
||||
}
|
||||
});
|
||||
|
||||
exports.default = _default2;
|
Reference in New Issue
Block a user