自己配置订阅消息模板,如果参数格式不正确,会导致订阅消息发不出去,所以在创建模板的时候需要校验参数格式
订阅通知参数值内容限制说明:微信官方文档
创建模板:
代码:
<script>
const validateRules = {
letter: /^[a-zA-Z]+$/,
symbol: /^[ '.,:;*?~`!@#$%^&_+=)(<>{}\-\][/\\\\"|]+$/,
character: /^[a-zA-Z0-9 '.,:;*?~`!@#$%^&_+=)(<>{}\-\][/\\\\"|]+$/,
/* eslint-disable max-len */
datetime: /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d$/,
/* eslint-disable max-len */
date: /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/,
time: /^(20|21|22|23|[0-1]?\d):[0-5]?\d$/,
amount: /^(¥|¥|\$|€|R\$|лв|£|\S\$|ARS\$|₫){1}(\d+(\.\d+)?)+$/,
mobile: /^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/,
/* eslint-disable max-len */
tel: /^((\+\d{2}-)|(\d{2}-))?((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$/,
carNumber: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{5}[A-Z0-9挂学警港澳]{1}$/,
number: /\d/,
chinaAndEng: /^[a-zA-Z\u4e00-\u9fa5]+$/,
phrase: /^[\u4e00-\u9fa5]+$/,
};
methods: {
validateFormat(key, value, cb) {
let fieldVal = value;
if (!fieldVal) {
cb('此项必填');
return;
}
let isValid = false;
switch (key) {
case 'thing':
isValid = fieldVal.length <= 20;
break;
case 'number':
isValid = Number(fieldVal) && fieldVal.length <= 32;
break;
case 'letter':
isValid = validateRules.letter.test(fieldVal) && fieldVal.length <= 32;
break;
case 'symbol':
isValid = validateRules.symbol.test(fieldVal) && fieldVal.length <= 5;
break;
case 'character_string':
isValid = validateRules.character.test(fieldVal) && fieldVal.length <= 32;
break;
case 'time':
case 'date':
fieldVal = fieldVal.split('~');
for (let val of fieldVal) {
val = val.replaceAll('年', '-')
.replaceAll('月', '-')
.replaceAll('日', '');
if ((key === 'date' && !(validateRules.date.test(val) || validateRules.datetime.test(val)))
|| (key === 'time' && !(validateRules.time.test(val) || validateRules.datetime.test(val)))) {
cb('请按照要求输入');
return;
}
}
isValid = true;
break;
case 'amount':
fieldVal = fieldVal.replace('元', '');
isValid = validateRules.amount.test(fieldVal) && fieldVal.length <= 10;
break;
case 'phone_number':
isValid = (validateRules.mobile.test(fieldVal) || validateRules.tel.test(fieldVal)) && fieldVal.length <= 17;
break;
case 'car_number':
isValid = validateRules.carNumber.test(fieldVal) && fieldVal.length <= 8;
break;
case 'name':
isValid = !validateRules.number.test(fieldVal)
&& ((validateRules.phrase.test(fieldVal) && fieldVal.length <= 10)
|| (validateRules.letter.test(fieldVal) && fieldVal.length <= 20)
|| (validateRules.chinaAndEng.test(fieldVal) && fieldVal.length <= 10));
break;
case 'phrase':
isValid = validateRules.phrase.test(fieldVal) && fieldVal.length <= 5;
break;
default:
break;
}
if (!isValid) {
cb('请按照要求输入');
return;
}
cb();
},
},
</script>