编辑商品字符长度限制

This commit is contained in:
15386982806
2024-01-16 18:09:11 +08:00
parent 7ba94c7fe1
commit 94e389ab23

View File

@@ -1197,18 +1197,10 @@ export default {
this.$Message.error("已存在相同规格项!");
return;
}
// if (this.zz(0, val) > 20) {
// this.$Message.error("规格项最多十个字符长度!");
// return;
// }
if (this.zz(0, val) > 20) {
this.$Message.error("规格值最多十个字符长度!");
// val = val.toString().slice(0, 4);
this.$forceUpdate();// 调用该方法会触发组件的重新渲染
// val = this.truncateString(val);
this.skuInfo[index].name = this.truncateString(val);
// this.$set(this.skuInfo[$index].spec_values[index], 'value', this.truncateString(val));
// this.$set(item, 'value', this.truncateString(val));
this.skuInfo[index].name = this.countCharacters(val, 10);
this.$forceUpdate();// 调用该方法会触发组件的重新渲染
// return;
}
@@ -1232,26 +1224,25 @@ export default {
}
return len;
},
truncateString(str) {
let len = str.length; // 获取原始字符串的长度
if (len <= 10 && /^[\u4e00-\u9fa5]+$/.test(str)) { // 判断字符串长度小于等于10且只包含中文时直接返回原字符串
countCharacters (defaultStr, defaultNum) {
let str = '' + defaultStr || '',
num = + defaultNum || 0,
res = '',
length = 0;
if (!str || !num) {
return str;
} else {
let count = 0; // 记录已经统计的字节数UTF-8编码
for (let i = 0; i < len; i++) {
let charCode = str.charCodeAt(i);
if ((charCode >= 0x0001 && charCode <= 0x007F) || (charCode >= 0xFF60 && charCode <= 0xFF9F)) { // ASCII字符或全角字符
count += 1;
} else {
count += 2; // UTF-8编码中非ASCII字符占两个字节
}
if (count > 10 * 2) { // 当已经统计的字节数大于10*2时说明已经达到了限制条件
// 循环字符串判断长度 最少也会返回一个字
for (const i in str) {
res += str[i];
// 测试长度
length += /[\u4e00-\u9fa5]/.test(str[i]) ? 2 : 1;
// 如果长度大于设置长度 或者 循环到最后则终止循环
if (length >= num || +i == str.length - 1) {
break;
}
}
// console.log('根据统计得到的字节数进行切片并返回结果', str, str.substr(0, Math.floor((count - 1) / 2)));
return str.substr(0, Math.floor((count + 1) / 2)); // 根据统计得到的字节数进行切片并返回结果
}
return res;
},
// 编辑规格值
skuValueChange(val, index, item, $index) {
@@ -1266,18 +1257,10 @@ export default {
if (this.zz(0, val.value) > 20) {
this.$Message.error("规格值最多十个字符长度!");
// val.value = val.value.toString().slice(0, 4);
this.$forceUpdate();// 调用该方法会触发组件的重新渲染
// val.value = this.truncateString(val.value);
this.skuInfo[$index].spec_values[index].value = this.truncateString(val.value);
// this.$set(this.skuInfo[$index].spec_values[index], 'value', this.truncateString(val.value));
// this.$set(item, 'value', this.truncateString(val.value));
this.skuInfo[$index].spec_values[index].value = this.countCharacters(val.value, 10);
this.$forceUpdate();// 调用该方法会触发组件的重新渲染
// return;
}
// console.log('编辑规格值改变', item);
let curVal = this.currentSkuVal;
this.skuTableData = this.skuTableData.map((e) => {
if (e[val.name] === curVal) {