This commit is contained in:
Leo_Ding 2025-10-20 13:40:16 +08:00
parent c17f6794a4
commit fffa4c28d7
4 changed files with 599 additions and 592 deletions

View File

@ -1,23 +1,12 @@
<!-- AreaCascader.vue --> <!-- AreaCascader.vue -->
<template> <template>
<a-cascader <a-cascader v-model:value="modelValue" :options="options" :load-data="loadData" :placeholder="placeholder"
v-model:value="modelValue" :style="style" :disabled="disabled" :show-search="showSearch" :allow-clear="allowClear"
:options="options" :change-on-select="changeOnSelect" :field-names="fieldNames" @change="handleChange" ref="cascaderRef" />
:load-data="loadData"
:placeholder="placeholder"
:style="style"
:disabled="disabled"
:show-search="showSearch"
:allow-clear="allowClear"
:change-on-select="changeOnSelect"
:field-names="fieldNames"
@change="handleChange"
ref="cascaderRef"
/>
</template> </template>
<script setup> <script setup>
import { ref, watch, nextTick, defineModel, onMounted } from 'vue'; import { ref, watch, nextTick, defineModel, onMounted,defineExpose } from 'vue';
import apis from '@/apis'; import apis from '@/apis';
import { useDicsStore } from '@/store'; import { useDicsStore } from '@/store';
@ -54,20 +43,23 @@ watch(
{ immediate: true } { immediate: true }
); );
// 🔁 modelValue
watch(
() => modelValue?.value,
async (val) => {
if (!val || !Array.isArray(val) || val.length <= 1) return;
//
await nextTick();
// 🔍
function findNodeInOptions(options, code) {
for (const opt of options) {
if (opt.code === code) return opt;
if (opt.children) {
const found = findNodeInOptions(opt.children, code);
if (found) return found;
}
}
return null;
}
async function initData(codes){
// //
for (let i = 1; i < val.length; i++) { for (let i = 1; i < codes.length; i++) {
const parentCode = val[i - 1]; const parentCode = codes[i - 1];
const currentCode = val[i]; // const currentCode = val[i];
// //
let targetNode; let targetNode;
if (i === 1) { if (i === 1) {
@ -86,22 +78,7 @@ watch(
// //
await nextTick(); await nextTick();
} }
},
{ immediate: true } // 🔥
);
// 🔍
function findNodeInOptions(options, code) {
for (const opt of options) {
if (opt.code === code) return opt;
if (opt.children) {
const found = findNodeInOptions(opt.children, code);
if (found) return found;
} }
}
return null;
}
// 🌐 // 🌐
const loadData = async (selectedOptions) => { const loadData = async (selectedOptions) => {
const targetOption = selectedOptions[selectedOptions.length - 1]; const targetOption = selectedOptions[selectedOptions.length - 1];
@ -143,4 +120,5 @@ const loadData = async (selectedOptions) => {
const handleChange = (value, selectedOptions) => { const handleChange = (value, selectedOptions) => {
emit('change', value, selectedOptions?.map(opt => opt.label) || []); emit('change', value, selectedOptions?.map(opt => opt.label) || []);
}; };
defineExpose({initData})
</script> </script>

View File

@ -33,7 +33,7 @@
</span> </span>
</div> </div>
<div class="paltform_list"> <div class="paltform_list">
<div value="CALL_CENTER" class="paltform_icon"> <div value="CALL_CENTER" class="paltform_icon" @click="handleSelect('hujiao')">
<div class="paltform_icon_1"> <div class="paltform_icon_1">
<img :src="tel" alt="" srcset="" width="76" height="76" class="img"> <img :src="tel" alt="" srcset="" width="76" height="76" class="img">
</div> </div>
@ -45,7 +45,7 @@
</div> </div>
<p>监管平台</p> <p>监管平台</p>
</div> </div>
<div value="HOME_BED" class="paltform_icon"> <div value="HOME_BED" class="paltform_icon" @click="handleSelect('yunying')">
<div class="paltform_icon_1"> <div class="paltform_icon_1">
<img :src="yunying" alt="" srcset="" width="76" height="76"> <img :src="yunying" alt="" srcset="" width="76" height="76">
</div> </div>

View File

@ -1,6 +1,8 @@
<template> <template>
<a-modal :open="modal.open" :title="modal.title" :width="800" :confirm-loading="modal.confirmLoading" <a-modal :open="modal.open" :title="modal.title" :width="800" :confirm-loading="modal.confirmLoading"
:after-close="onAfterClose" :cancel-text="cancelText" @ok="handleOk" @cancel="handleCancel"> :after-close="onAfterClose" :cancel-text="cancelText" @ok="handleOk" @cancel="handleCancel">
<a-spin tip="Loading..." :spinning="spining">
<a-card>
<a-form ref="formRef" :model="formData" :rules="formRules"> <a-form ref="formRef" :model="formData" :rules="formRules">
<a-tabs v-model:activeKey="activeKey"> <a-tabs v-model:activeKey="activeKey">
<!-- 基本信息 --> <!-- 基本信息 -->
@ -34,8 +36,8 @@
{{ item.introduction }} {{ item.introduction }}
</a-select-option> </a-select-option>
</a-select> </a-select>
<a-input v-model:value="formData.identityNo" placeholder="请输入证件号码" style="flex: 1;" <a-input v-model:value="formData.identityNo" placeholder="请输入证件号码"
@change="extractBirthDateFromIdCard" /> style="flex: 1;" @change="extractBirthDateFromIdCard" />
</span> </span>
</a-form-item> </a-form-item>
</a-col> </a-col>
@ -144,8 +146,8 @@
<a-form-item label="护理等级" name="archive.nursingLevel"> <a-form-item label="护理等级" name="archive.nursingLevel">
<a-select v-model:value="formData.archive.nursingLevel" placeholder="请选择护理等级" <a-select v-model:value="formData.archive.nursingLevel" placeholder="请选择护理等级"
allow-clear> allow-clear>
<a-select-option v-for="item in dicsStore.dictOptions.Care_Level" :key="item.dval" <a-select-option v-for="item in dicsStore.dictOptions.Care_Level"
:value="item.dval"> :key="item.dval" :value="item.dval">
{{ item.introduction }} {{ item.introduction }}
</a-select-option> </a-select-option>
</a-select> </a-select>
@ -154,7 +156,8 @@
<!-- 家庭地址 --> <!-- 家庭地址 -->
<a-col :span="12"> <a-col :span="12">
<a-form-item label="家庭地址" :name="['archive', 'homeAreaCodes']"> <a-form-item label="家庭地址" :name="['archive', 'homeAreaCodes']">
<AreaCascader v-model:value="formData.archive.homeAreaCodes" @change="onAreaChange" /> <AreaCascader v-model:value="formData.archive.homeAreaCodes" @change="onAreaChange"
ref="areaCascaderRef" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
@ -172,14 +175,16 @@
<!-- 经度 --> <!-- 经度 -->
<a-col :span="12"> <a-col :span="12">
<a-form-item label="经度" name="lat"> <a-form-item label="经度" name="lat">
<a-input-number v-model:value="formData.archive.lat" placeholder="请输入经度" style="width: 100%;"/> <a-input-number v-model:value="formData.archive.lat" placeholder="请输入经度"
style="width: 100%;" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<!-- 纬度 --> <!-- 纬度 -->
<a-col :span="12"> <a-col :span="12">
<a-form-item label="纬度" name="lag"> <a-form-item label="纬度" name="lag">
<a-input-number v-model:value="formData.archive.lag" placeholder="请输入纬度" style="width: 100%;"/> <a-input-number v-model:value="formData.archive.lag" placeholder="请输入纬度"
style="width: 100%;" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<gx-map @handleGetLng="handleGetLng" /> <gx-map @handleGetLng="handleGetLng" />
@ -221,7 +226,8 @@
<a-form-item label="统计分类" name="statisticsCategory"> <a-form-item label="统计分类" name="statisticsCategory">
<a-select v-model:value="formData.archive.statisticsCategory" placeholder="请选择统计分类" <a-select v-model:value="formData.archive.statisticsCategory" placeholder="请选择统计分类"
allow-clear> allow-clear>
<a-select-option v-for="item in dicsStore.dictOptions.Statistical_Classification" <a-select-option
v-for="item in dicsStore.dictOptions.Statistical_Classification"
:key="item.dval" :value="item.dval"> :key="item.dval" :value="item.dval">
{{ item.introduction }} {{ item.introduction }}
</a-select-option> </a-select-option>
@ -232,8 +238,8 @@
<!-- 智力情况 --> <!-- 智力情况 -->
<a-col :span="8"> <a-col :span="8">
<a-form-item label="智力情况" name="intellectualSituation"> <a-form-item label="智力情况" name="intellectualSituation">
<a-select v-model:value="formData.archive.intellectualSituation" placeholder="请选择智力情况" <a-select v-model:value="formData.archive.intellectualSituation"
allow-clear> placeholder="请选择智力情况" allow-clear>
<a-select-option v-for="item in dicsStore.dictOptions.Intellectual_Condition" <a-select-option v-for="item in dicsStore.dictOptions.Intellectual_Condition"
:key="item.dval" :value="item.dval"> :key="item.dval" :value="item.dval">
{{ item.introduction }} {{ item.introduction }}
@ -258,8 +264,8 @@
<!-- 老人子女探望情况 --> <!-- 老人子女探望情况 -->
<a-col :span="8"> <a-col :span="8">
<a-form-item label="老人子女探望情况" name="childrenVisitStatus"> <a-form-item label="老人子女探望情况" name="childrenVisitStatus">
<a-select v-model:value="formData.archive.childrenVisitStatus" placeholder="请选择老人子女探望情况" <a-select v-model:value="formData.archive.childrenVisitStatus"
allow-clear> placeholder="请选择老人子女探望情况" allow-clear>
<a-select-option v-for="item in dicsStore.dictOptions.Frequency_Visits" <a-select-option v-for="item in dicsStore.dictOptions.Frequency_Visits"
:key="item.dval" :value="item.dval"> :key="item.dval" :value="item.dval">
{{ item.introduction }} {{ item.introduction }}
@ -273,8 +279,8 @@
<a-form-item label="是否人户分离" name="householdResidenceSeparation"> <a-form-item label="是否人户分离" name="householdResidenceSeparation">
<a-select v-model:value="formData.archive.householdResidenceSeparation" <a-select v-model:value="formData.archive.householdResidenceSeparation"
placeholder="请选择是否人户分离" allow-clear> placeholder="请选择是否人户分离" allow-clear>
<a-select-option v-for="item in dicsStore.dictOptions.Separation" :key="item.dval" <a-select-option v-for="item in dicsStore.dictOptions.Separation"
:value="item.dval"> :key="item.dval" :value="item.dval">
{{ item.introduction }} {{ item.introduction }}
</a-select-option> </a-select-option>
</a-select> </a-select>
@ -284,9 +290,10 @@
<!-- 民族 --> <!-- 民族 -->
<a-col :span="8"> <a-col :span="8">
<a-form-item label="民族" name="ethnicity"> <a-form-item label="民族" name="ethnicity">
<a-select v-model:value="formData.archive.ethnicity" placeholder="请选择民族" allow-clear> <a-select v-model:value="formData.archive.ethnicity" placeholder="请选择民族"
<a-select-option v-for="item in dicsStore.dictOptions.Ethnicity" :key="item.dval" allow-clear>
:value="item.dval"> <a-select-option v-for="item in dicsStore.dictOptions.Ethnicity"
:key="item.dval" :value="item.dval">
{{ item.introduction }} {{ item.introduction }}
</a-select-option> </a-select-option>
</a-select> </a-select>
@ -348,7 +355,8 @@
<!-- 宗教信仰 --> <!-- 宗教信仰 -->
<a-col :span="8"> <a-col :span="8">
<a-form-item label="宗教信仰" name="religion"> <a-form-item label="宗教信仰" name="religion">
<a-select v-model:value="formData.archive.religion" placeholder="请选择宗教信仰" allow-clear> <a-select v-model:value="formData.archive.religion" placeholder="请选择宗教信仰"
allow-clear>
<a-select-option v-for="item in dicsStore.dictOptions.Religious_belief" <a-select-option v-for="item in dicsStore.dictOptions.Religious_belief"
:key="item.dval" :value="item.dval"> :key="item.dval" :value="item.dval">
{{ item.introduction }} {{ item.introduction }}
@ -360,7 +368,8 @@
<!-- 职业情况 --> <!-- 职业情况 -->
<a-col :span="8"> <a-col :span="8">
<a-form-item label="职业情况" name="occupation"> <a-form-item label="职业情况" name="occupation">
<a-select v-model:value="formData.archive.occupation" placeholder="请选择职业情况" allow-clear> <a-select v-model:value="formData.archive.occupation" placeholder="请选择职业情况"
allow-clear>
<a-select-option v-for="item in dicsStore.dictOptions.Employment_Status" <a-select-option v-for="item in dicsStore.dictOptions.Employment_Status"
:key="item.dval" :value="item.dval"> :key="item.dval" :value="item.dval">
{{ item.introduction }} {{ item.introduction }}
@ -372,8 +381,8 @@
<!-- 政治面貌 --> <!-- 政治面貌 -->
<a-col :span="8"> <a-col :span="8">
<a-form-item label="政治面貌" name="politicalAffiliation"> <a-form-item label="政治面貌" name="politicalAffiliation">
<a-select v-model:value="formData.archive.politicalAffiliation" placeholder="请选择政治面貌" <a-select v-model:value="formData.archive.politicalAffiliation"
allow-clear> placeholder="请选择政治面貌" allow-clear>
<a-select-option v-for="item in dicsStore.dictOptions.Political_affiliation" <a-select-option v-for="item in dicsStore.dictOptions.Political_affiliation"
:key="item.dval" :value="item.dval"> :key="item.dval" :value="item.dval">
{{ item.introduction }} {{ item.introduction }}
@ -397,7 +406,8 @@
<a-col :span='8'> <a-col :span='8'>
<a-form-item label="分类标签" name="labelsCode"> <a-form-item label="分类标签" name="labelsCode">
<a-select v-model:value="formData.labelsCode" allowClear mode="multiple"> <a-select v-model:value="formData.labelsCode" allowClear mode="multiple">
<a-select-option v-for="item in dicsStore.dictOptions.Service_Recipient_Category2" <a-select-option
v-for="item in dicsStore.dictOptions.Service_Recipient_Category2"
:key="item.dval" :value="item.dval">{{ :key="item.dval" :value="item.dval">{{
item.introduction }}</a-select-option> item.introduction }}</a-select-option>
</a-select> </a-select>
@ -436,23 +446,25 @@
<!-- 上传资料 --> <!-- 上传资料 -->
<a-col :span="12"> <a-col :span="12">
<a-form-item label="上传资料" name="uploadedDocuments"> <a-form-item label="上传资料" name="uploadedDocuments">
<gx-upload v-model="formData.archive.idCardPhotos" accept-types=".jpg,.png,.webp,.xlsx,.docx,.doc" <gx-upload v-model="formData.archive.idCardPhotos"
:fileNumber="10" /> accept-types=".jpg,.png,.webp,.xlsx,.docx,.doc" :fileNumber="10" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>
</a-form> </a-form>
</a-card>
</a-spin>
</a-modal> </a-modal>
</template> </template>
<script setup> <script setup>
import { cloneDeep } from 'lodash-es' import { cloneDeep } from 'lodash-es'
import { ref, defineProps } from 'vue' import { ref, defineProps, nextTick } from 'vue'
import { config } from '@/config' import { config } from '@/config'
import apis from '@/apis' import apis from '@/apis'
import { useForm, useModal } from '@/hooks' import { useForm, useModal,useSpining } from '@/hooks'
import { useDicsStore } from '@/store' import { useDicsStore } from '@/store'
import AreaCascader from '@/components/AreaCascader/index.vue' import AreaCascader from '@/components/AreaCascader/index.vue'
import { validatePhone, validateEmail, validateIdCard } from '@/utils/validate' import { validatePhone, validateEmail, validateIdCard } from '@/utils/validate'
@ -460,11 +472,14 @@ import { getBirthDate, spliceUrl } from '@/utils/util'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { FastBackwardFilled } from '@ant-design/icons-vue'
const emit = defineEmits(['ok']) const emit = defineEmits(['ok'])
const activeKey = ref('1') const activeKey = ref('1')
const { modal, showModal, hideModal, showLoading, hideLoading } = useModal() const { modal, showModal, hideModal, showLoading, hideLoading } = useModal()
const { formRecord, formData, formRef, formRules, resetForm } = useForm() const { formRecord, formData, formRef, formRules, resetForm } = useForm()
const areaCascaderRef = ref()
const cancelText = ref('取消') const cancelText = ref('取消')
const spining=ref(false)
formRules.value = { formRules.value = {
name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
identityType: [{ required: true, message: '请选择证件类型', trigger: 'change' }], identityType: [{ required: true, message: '请选择证件类型', trigger: 'change' }],
@ -504,8 +519,11 @@ async function handleEdit(record = {}) {
type: 'edit', type: 'edit',
title: '编辑对象' title: '编辑对象'
}) })
try {
spining.value=true
const { data, success } = await apis.serverObj.getItem(record.id).catch() const { data, success } = await apis.serverObj.getItem(record.id).catch()
if (!success) { if (!success) {
spining.value=false
hideModal() hideModal()
return return
} }
@ -514,6 +532,15 @@ async function handleEdit(record = {}) {
formData.value.archive.idCardPhotos = data.archive.idCardPhotos ? data.archive.idCardPhotos.map(item => config('http.apiBasic') + item) : [] formData.value.archive.idCardPhotos = data.archive.idCardPhotos ? data.archive.idCardPhotos.map(item => config('http.apiBasic') + item) : []
formData.value.archive.uploadedDocuments = data.archive.uploadedDocuments ? data.archive.uploadedDocuments.map(item => config('http.apiBasic') + item) : [] formData.value.archive.uploadedDocuments = data.archive.uploadedDocuments ? data.archive.uploadedDocuments.map(item => config('http.apiBasic') + item) : []
formData.value.governmentPurchasedServiceStartDate = [dayjs(formData.value.starGovernmentService), dayjs(formData.value.endGovernmentService)] formData.value.governmentPurchasedServiceStartDate = [dayjs(formData.value.starGovernmentService), dayjs(formData.value.endGovernmentService)]
nextTick(() => {
areaCascaderRef.value.initData(data.archive.homeAreaCodes)
})
spining.value=false
} catch (error) {
console.log(error.message)
spining.value=false
}
} }
// utils/idCard.js // utils/idCard.js
function isValidIdCard(value) { function isValidIdCard(value) {
@ -640,23 +667,9 @@ function onAreaHoldChange(value, labels) {
formData.value.archive.houseAreaLabels = [...labels] formData.value.archive.houseAreaLabels = [...labels]
} }
function handleGetLng(obj) { function handleGetLng(obj) {
formData.value.lat = obj.lat formData.value.archive.lat = obj.lat
formData.value.lag = obj.lng formData.value.archive.lag = obj.lng
} }
//
const handleCustomRequest = async (options) => {
const { file, onProgress, onSuccess, onError } = options;
try {
const formData = new FormData();
formData.append('file', file);
const { data } = await apis.common.uploadFile(formData);
const fullUrl = config('http.apiBasic') + data;
console.log(fullUrl)
} catch (err) {
message.error('上传失败');
}
};
/** /**
* 取消 * 取消
*/ */

View File

@ -2,6 +2,7 @@
<a-modal :open="modal.open" :title="modal.title" :width="800" :confirm-loading="modal.confirmLoading" <a-modal :open="modal.open" :title="modal.title" :width="800" :confirm-loading="modal.confirmLoading"
:after-close="onAfterClose" :cancel-text="cancelText" @ok="handleOk" @cancel="handleCancel"> :after-close="onAfterClose" :cancel-text="cancelText" @ok="handleOk" @cancel="handleCancel">
<a-card> <a-card>
<a-spin tip="Loading..." :spinning="spining">
<a-form ref="formRef" :model="formData" :rules="formRules"> <a-form ref="formRef" :model="formData" :rules="formRules">
<a-row :gutter="24"> <a-row :gutter="24">
<!-- 姓名 --> <!-- 姓名 -->
@ -25,7 +26,8 @@
<div style="margin-bottom: 20px;"> <div style="margin-bottom: 20px;">
<span style="margin-right: 10px;"><span style="color: red;">*</span> 服务项目:</span> <span style="margin-right: 10px;"><span style="color: red;">*</span> 服务项目:</span>
<!-- 显示已选项目 --> <!-- 显示已选项目 -->
<a-tag v-for="item in selectedServices" :key="item.id" closable @close="handleRemove(item)"> <a-tag v-for="item in selectedServices" :key="item.id" closable
@close="handleRemove(item)">
{{ item.name }} {{ item.name }}
</a-tag> </a-tag>
<a-tag @click="showModal2" color="#108ee9" style="cursor: pointer;"> <a-tag @click="showModal2" color="#108ee9" style="cursor: pointer;">
@ -44,7 +46,8 @@
<a-col :span="12"> <a-col :span="12">
<a-form-item label="服务人员" name="servicePersonId"> <a-form-item label="服务人员" name="servicePersonId">
<a-select v-model:value="formData.servicePersonId"> <a-select v-model:value="formData.servicePersonId">
<a-select-option v-for="item in servicePersonList" :key="item.id" :value="item.id"> <a-select-option v-for="item in servicePersonList" :key="item.id"
:value="item.id">
{{ item.name }} {{ item.name }}
</a-select-option> </a-select-option>
</a-select> </a-select>
@ -70,7 +73,7 @@
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-form-item label="服务地址(如修改服务地址,请务必更新地图定位地址)" name="areaCodes"> <a-form-item label="服务地址(如修改服务地址,请务必更新地图定位地址)" name="areaCodes">
<AreaCascader v-model:value="formData.areaCodes" @change="onAreaChange" /> <AreaCascader v-model:value="formData.areaCodes" @change="onAreaChange" ref="areaCascaderRef"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
@ -95,6 +98,8 @@
</a-col> </a-col>
</a-row> </a-row>
</a-form> </a-form>
</a-spin>
</a-card> </a-card>
</a-modal> </a-modal>
<a-modal v-model:open="modalVisible" title="选择服务项目" @ok="handleConfirm" @cancel="handleCancel2" okText="确认" <a-modal v-model:open="modalVisible" title="选择服务项目" @ok="handleConfirm" @cancel="handleCancel2" okText="确认"
@ -139,6 +144,8 @@ const servicePersonList = ref([])
const gps = ref('') const gps = ref('')
const mapVisible = ref(false) const mapVisible = ref(false)
const stationList = ref([]) const stationList = ref([])
const spining = ref(false)
const areaCascaderRef=ref()
formRules.value = { formRules.value = {
name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
identityType: [{ required: true, message: '请选择证件类型', trigger: 'change' }], identityType: [{ required: true, message: '请选择证件类型', trigger: 'change' }],
@ -282,13 +289,17 @@ async function handleEdit(record = {}, type) {
type: 'edit', type: 'edit',
title: '编辑对象' title: '编辑对象'
}) })
try {
spining.value = true
formData.value.orderType = type, //线2 线1] formData.value.orderType = type, //线2 线1]
formData.value.customerId = record.id formData.value.customerId = record.id
formData.value.name = record.name formData.value.name = record.name
formData.value.areaCodes = record.archive.homeAreaCodes formData.value.areaCodes = [...record.archive.homeAreaCodes]
formData.value.areaLabels = record.archive.homeAreaLabels formData.value.areaLabels = record.archive.homeAreaLabels
nextTick(() => {
areaCascaderRef.value.initData(record.archive.homeAreaCodes)
})
if (type == '2') { if (type == '2') {
formData.value.detailAddress = record.archive.homeDetailAddress formData.value.detailAddress = record.archive.homeDetailAddress
gps.value = record.region.join('') + record.archive.homeDetailAddress gps.value = record.region.join('') + record.archive.homeDetailAddress
formData.value.lat = record.archive.lag formData.value.lat = record.archive.lag
@ -296,6 +307,11 @@ async function handleEdit(record = {}, type) {
} }
getServiceStation() getServiceStation()
spining.value = false
} catch (error) {
spining.value = false
}
} }
async function getServiceStation() { async function getServiceStation() {
try { try {