吉安感知网项目-前端
shuishen
2026-07-23 6e88705bd5b443a259b24c17c8a299765d059d96
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -299,6 +299,7 @@
   remark: '',
   geom: '',
   recommendDeviceIds: '',
   typePinyinFirst: '',
})
const mapRef = ref(null)
@@ -686,6 +687,36 @@
   }
)
// 取汉字(或英文)首字的拼音首字母,大写。如「占」→ 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()