"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _utils = require("../../utils"); var _cell = _interopRequireDefault(require("../../cell")); var _cellGroup = _interopRequireDefault(require("../../cell-group")); var _field = _interopRequireDefault(require("../../field")); var _email = require("../../utils/validate/email"); var _number = require("../../utils/validate/number"); var _SkuImgUploader = _interopRequireDefault(require("./SkuImgUploader")); var _use = (0, _utils.use)('sku-messages'), sfc = _use[0], bem = _use[1]; var PLACEHOLDER = { id_no: '输入身份证号码', text: '输入文本', tel: '输入数字', email: '输入邮箱', date: '点击选择日期', time: '点击选择时间', textarea: '点击填写段落文本', mobile: '输入手机号码' }; var _default = sfc({ props: { messages: Array, messageConfig: Object, goodsId: [Number, String] }, data: function data() { return { messageValues: this.resetMessageValues(this.messages) }; }, watch: { messages: function messages(val) { this.messageValues = this.resetMessageValues(val); } }, methods: { resetMessageValues: function resetMessageValues(messages) { return (messages || []).map(function () { return { value: '' }; }); }, getType: function getType(message) { if (+message.multiple === 1) { return 'textarea'; } if (message.type === 'id_no') { return 'text'; } return message.datetime > 0 ? 'datetime-local' : message.type; }, getMessages: function getMessages() { var _this = this; var messages = {}; this.messageValues.forEach(function (item, index) { var value = item.value; if (_this.messages[index].datetime > 0) { value = value.replace(/T/g, ' '); } messages["message_" + index] = value; }); return messages; }, getCartMessages: function getCartMessages() { var _this2 = this; var messages = {}; this.messageValues.forEach(function (item, index) { var value = item.value; var message = _this2.messages[index]; if (message.datetime > 0) { value = value.replace(/T/g, ' '); } messages[message.name] = value; }); return messages; }, getPlaceholder: function getPlaceholder(message) { var type = +message.multiple === 1 ? 'textarea' : message.type; var map = this.messageConfig.placeholderMap || {}; return map[type] || 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') { // eslint-disable-line var textType = message.type === 'image' ? '请上传' : '请填写'; return textType + message.name; } } else { if (message.type === 'tel' && !(0, _number.isNumber)(value)) { return '请填写正确的数字格式留言'; } if (message.type === 'mobile' && !/^\d{6,20}$/.test(value)) { return '手机号长度为6-20位数字'; } if (message.type === 'email' && !(0, _email.isEmail)(value)) { return '请填写正确的邮箱'; } if (message.type === 'id_no' && (value.length < 15 || value.length > 18)) { return '请填写正确的身份证号码'; } } } } }, render: function render(h) { var _this3 = this; return h(_cellGroup["default"], { "class": bem() }, [this.messages.map(function (message, index) { return message.type === 'image' ? h(_cell["default"], { "class": bem('image-cell'), "attrs": { "label": "仅限一张", "title": message.name, "required": String(message.required) === '1' }, "key": _this3.goodsId + "-" + index }, [h(_SkuImgUploader["default"], { "attrs": { "uploadImg": _this3.messageConfig.uploadImg, "maxSize": _this3.messageConfig.uploadMaxSize }, "model": { value: _this3.messageValues[index].value, callback: function callback($$v) { _this3.messageValues[index].value = $$v; } } })]) : h(_field["default"], { "attrs": { "maxlength": "200", "label": message.name, "required": String(message.required) === '1', "placeholder": _this3.getPlaceholder(message), "type": _this3.getType(message) }, "key": _this3.goodsId + "-" + index, "model": { value: _this3.messageValues[index].value, callback: function callback($$v) { _this3.messageValues[index].value = $$v; } } }); })]); } }); exports["default"] = _default;