You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

0 lines
11 KiB

1 month ago
  1. {"ast":null,"code":"import { ref, reactive } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { getLocations, createLocation } from '@/api/order';\nexport default {\n __name: 'LocationManagement',\n setup(__props, {\n expose: __expose\n }) {\n __expose();\n const loading = ref(false);\n const submitting = ref(false);\n const dialogVisible = ref(false);\n const locationList = ref([]);\n const formRef = ref(null);\n\n // 表单数据\n const form = reactive({\n province: '',\n city: '',\n address: '',\n contactPhone: ''\n });\n\n // 表单验证规则\n const rules = {\n province: [{\n required: true,\n message: '请输入省份',\n trigger: 'blur'\n }],\n city: [{\n required: true,\n message: '请输入城市',\n trigger: 'blur'\n }],\n address: [{\n required: true,\n message: '请输入详细地址',\n trigger: 'blur'\n }],\n contactPhone: [{\n required: true,\n message: '请输入联系电话',\n trigger: 'blur'\n }, {\n pattern: /^1[3-9]\\d{9}$/,\n message: '请输入正确的手机号',\n trigger: 'blur'\n }]\n };\n\n // 加载中转点列表\n const loadLocations = async () => {\n loading.value = true;\n try {\n const res = await getLocations();\n if (res.code === 200) {\n locationList.value = res.data;\n }\n } catch (error) {\n console.error('加载中转点失败:', error);\n ElMessage.error(error.message || '加载中转点失败');\n } finally {\n loading.value = false;\n }\n };\n\n // 处理新增\n const handleAdd = () => {\n form.province = '';\n form.city = '';\n form.address = '';\n form.contactPhone = '';\n dialogVisible.value = true;\n };\n\n // 提交表单\n const submitForm = async () => {\n if (!formRef.value) return;\n try {\n await formRef.value.validate();\n submitting.value = true;\n const res = await createLocation(form);\n if (res.code === 200) {\n ElMessage.success('中转点创建成功');\n dialogVisible.value = false;\n loadLocations(); // 重新加载列表\n }\n } catch (error) {\n console.error('创建中转点失败:', error);\n ElMessage.error(error.message || '创建中转点失败');\n } finally {\n submitting.value = false;\n }\n };\n\n // 初始加载\n loadLocations();\n const __returned__ = {\n loading,\n submitting,\n dialogVisible,\n locationList,\n formRef,\n form,\n rules,\n loadLocations,\n handleAdd,\n submitForm,\n ref,\n reactive,\n get ElMessage() {\n return ElMessage;\n },\n get getLocations() {\n return getLocations;\n },\n get createLocation() {\n return createLocation;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n};","map":{"version":3,"names":["ref","reactive","ElMessage","getLocations","createLocation","loading","submitting","dialogVisible","locationList","formRef","form","province","city","address","contactPhone","rules","required","message","trigger","pattern","loadLocations","value","res","code","data","error","console","handleAdd","submitForm","validate","success"],"sources":["D:/IDEAproject/Front-end logistics/src/views/admin/LocationManagement.vue"],"sourcesContent":["<template>\r\n <div class=\"location-management\">\r\n <el-card>\r\n <template #header>\r\n <div class=\"card-header\">\r\n <span class=\"title\">中转点管理</span>\r\n <el-button type=\"primary\" @click=\"handleAdd\">新增中转点</el-button>\r\n </div>\r\n </template>\r\n \r\n <el-table\r\n v-loading=\"loading\"\r\n :data=\"locationList