From 0231109223d2ab5995d0d6e721ef4ea1ad8cccfd Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 14 二月 2025 09:13:57 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp

---
 packages/components/src/Input/ChooseLocationInput.vue |  103 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 103 insertions(+), 0 deletions(-)

diff --git a/packages/components/src/Input/ChooseLocationInput.vue b/packages/components/src/Input/ChooseLocationInput.vue
new file mode 100644
index 0000000..d576d5e
--- /dev/null
+++ b/packages/components/src/Input/ChooseLocationInput.vue
@@ -0,0 +1,103 @@
+<template>
+  <nut-input
+    class="nut-input-text bole-input-text"
+    type="text"
+    input-align="right"
+    readonly
+    @click="handleChooseLocation"
+    :modelValue="props.modelValue.address"
+    alwaysEmbed
+  >
+    <template #clear>
+      <slot name="clear"></slot>
+    </template>
+    <template #left>
+      <slot name="left"></slot>
+    </template>
+    <template #right>
+      <slot name="right">
+        <img :src="IconLocation" class="choose-location-input-icon" />
+      </slot>
+    </template>
+  </nut-input>
+</template>
+
+<script setup lang="ts">
+import Taro from '@tarojs/taro';
+import IconLocation from '../../assets/components/icon-location.png';
+import { computed } from 'vue';
+import { useAllAreaList } from '@12333/hooks';
+
+defineOptions({
+  name: 'ChooseLocationInput',
+});
+
+type Props = {
+  modelValue: WeMapModel;
+};
+
+const props = defineProps<Props>();
+
+const emit = defineEmits<{
+  (e: 'update:modelValue', value: Props['modelValue']): void;
+}>();
+
+const { findAreaCodeFromName } = useAllAreaList();
+
+const innerModelValue = computed({
+  get() {
+    return props.modelValue;
+  },
+  set(val) {
+    emit('update:modelValue', val);
+  },
+});
+
+function handleChooseLocation() {
+  Taro.chooseLocation({
+    success: function (res) {
+      console.log('res: ', res);
+      const latitude = res.latitude as unknown as number;
+      const longitude = res.longitude as unknown as number;
+      let provinceName = '';
+      let cityName = '';
+      let countyName = '';
+      let nameList = res.address.match(
+        /.+?(鐪亅琛屾斂鍖簗甯倈鑷不鍖簗鑷不宸瀨琛屾斂鍗曚綅|鐩焲甯傝緰鍖簗鏃梶娴峰煙|宀泑鍘縷鍖�)/g
+      );
+      if (nameList) {
+        if (nameList?.length === 2) {
+          provinceName = nameList[0];
+          cityName = nameList[0];
+          countyName = nameList[1];
+        } else {
+          provinceName = nameList[0];
+          cityName = nameList[1];
+          countyName = nameList[2];
+        }
+      }
+      emit('update:modelValue', {
+        latitude,
+        longitude,
+        provinceName,
+        cityName,
+        countyName,
+        provinceCode: findAreaCodeFromName(provinceName),
+        cityCode: findAreaCodeFromName(cityName),
+        countyCode: findAreaCodeFromName(countyName),
+        address: res.address,
+      });
+    },
+  });
+}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.choose-location-input-icon {
+  width: 19px;
+  height: 25px;
+  margin-left: 10px;
+}
+</style>

--
Gitblit v1.9.1