| | |
| | | remark: '', |
| | | geom: '', |
| | | recommendDeviceIds: '', |
| | | typePinyinFirst: '', |
| | | }) |
| | | |
| | | const mapRef = ref(null) |
| | |
| | | } |
| | | ) |
| | | |
| | | // 取汉字(或英文)首字的拼音首字母,大写。如「占」→ Z |
| | | function getFirstPinyinLetter(text) { |
| | | const char = String(text ?? '').trim().charAt(0) |
| | | if (!char) return '' |
| | | // 英文/数字直接取大写 |
| | | if (/[a-zA-Z]/.test(char)) return char.toUpperCase() |
| | | // 按拼音排序的各首字母边界字,用 zh-CN 本地化比较定位所属字母 |
| | | const boundaries = [ |
| | | ['A', '啊'], ['B', '芭'], ['C', '擦'], ['D', '搭'], ['E', '蛾'], |
| | | ['F', '发'], ['G', '噶'], ['H', '哈'], ['J', '击'], ['K', '喀'], |
| | | ['L', '垃'], ['M', '妈'], ['N', '拿'], ['O', '哦'], ['P', '啪'], |
| | | ['Q', '期'], ['R', '然'], ['S', '撒'], ['T', '塌'], ['W', '挖'], |
| | | ['X', '昔'], ['Y', '压'], ['Z', '匝'], |
| | | ] |
| | | for (let i = boundaries.length - 1; i >= 0; i--) { |
| | | if (char.localeCompare(boundaries[i][1], 'zh-CN') >= 0) return boundaries[i][0] |
| | | } |
| | | return '' |
| | | } |
| | | |
| | | // 工单类型变化时,用类型名称第一个字的拼音首字母(大写)赋值给 typePinyinFirst |
| | | watch( |
| | | () => formData.value.workOrderType, |
| | | value => { |
| | | const label = getTaskTypeLabel(value, workOrderTypeXT.value) |
| | | formData.value.typePinyinFirst = getFirstPinyinLetter(label) |
| | | }, |
| | | { deep: true } |
| | | ) |
| | | |
| | | // 地图加载完毕 |
| | | function mapReady() { |
| | | dialogMode.value === 'add' && mapRef.value.flyBoundary() |