diff --git a/src/views/cartoon/index.vue b/src/views/cartoon/index.vue index cb33b2b..22ef22e 100644 --- a/src/views/cartoon/index.vue +++ b/src/views/cartoon/index.vue @@ -100,12 +100,12 @@ -
+
{{ toValueWithout("相框标题") }}
- +
*{{ toValueWithout("相框标题将用于生成图片,请输入简洁明了的相框标题") }}
@@ -155,52 +155,22 @@
-
+
{{ toValueWithout("场景道具") }}
- - - {{ toValueWithout(item.name) }} - -
- - + - - - -
@@ -365,10 +335,26 @@ const kindChange = (item: any) => { count_prop.value = item.count_prop } -// 限制最多 8 个字符,空格和特殊字符均计入,不做过滤 +// 计算字符单位:中文占2个,英文/数字/空格/符号占1个 +const getCharUnits = (str: string) => { + let units = 0 + for (const char of str) { + units += /[\u4e00-\u9fff\u3400-\u4dbf]/.test(char) ? 2 : 1 + } + return units +} + +// 限制最多 12 个字符单位:中文占2个,英文/数字/空格/符号占1个 const scenePropInputText = (val: string) => { - if (val.length > 8) { - val = val.slice(0, 8) + if (getCharUnits(val) > 12) { + let units = 0 + let i = 0 + for (; i < val.length; i++) { + const add = /[\u4e00-\u9fff\u3400-\u4dbf]/.test(val[i]) ? 2 : 1 + if (units + add > 12) break + units += add + } + val = val.slice(0, i) } scene_prop.value = val } @@ -412,51 +398,11 @@ const rideChange = (item: any) => { mountsId.value = item.id } -// 场景道具相关 -const method = ref(1) // 1: 智能生成, 2: 自定义 -const scenePropsList = ref([ - { id: 1, name: '智能生成' }, - { id: 2, name: '自定义' } -]) -const scenePropsInputs = ref(['']) // 初始显示一个输入框 const scene_prop = ref('') // 最终存储的字符串,用逗号连接 -// 处理场景道具选择变化 -const handleScenePropsChange = (val: number) => { - method.value = val - if (val === 1) { - // 选择不使用场景道具时,清空输入和结果 - scenePropsInputs.value = [''] - scene_prop.value = '' - } else if (val === 2) { - // 选择自定义场景道具时,确保至少有一个输入框 - if (scenePropsInputs.value.length === 0) { - scenePropsInputs.value = [''] - } - updateSceneProp() - } -} - -// 添加输入框 -const addScenePropsInput = () => { - if (scenePropsInputs.value.length < 4) { - scenePropsInputs.value.push('') - } -} - -// 删除输入框 -const removeScenePropsInput = (index: number) => { - if (scenePropsInputs.value.length > 1) { - scenePropsInputs.value.splice(index, 1) - updateSceneProp() - } -} - // 更新场景道具字符串 -const updateSceneProp = () => { - // 过滤空值,然后用逗号连接 - const validInputs = scenePropsInputs.value.filter(input => input && input.trim() !== '') - scene_prop.value = validInputs.join(',') +const updateSceneProp = (value: string) => { + scene_prop.value = value } const isLoading = ref(false)