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.

1 lines
11 KiB

{"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:/language/VScode/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\"\r\n style=\"width: 100%\"\r\n >\r\n <el-table-column prop=\"id\" label=\"ID\" width=\"80\" />\r\n <el-table-column prop=\"fullAddress\" label=\"完整地址\" />\r\n <el-table-column prop=\"contactPhone\" label=\"联系电话\" width=\"150\" />\r\n <el-table-column prop=\"status\" label=\"状态\" width=\"100\">\r\n <template #default=\"{ row }\">\r\n <el-tag :type=\"row.status === 1 ? 'success' : 'danger'\">\r\n {{ row.status === 1 ? '正常' : '停用' }}\r\n </el-tag>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </el-card>\r\n\r\n <!-- 新增中转点对话框 -->\r\n <el-dialog\r\n v-model=\"dialogVisible\"\r\n title=\"新增中转点\"\r\n width=\"500px\"\r\n >\r\n <el-form\r\n ref=\"formRef\"\r\n :model=\"form\"\r\n :rules=\"rules\"\r\n label-width=\"100px\"\r\n >\r\n <el-form-item label=\"省份\" prop=\"province\">\r\n <el-input v-model=\"form.province\" placeholder=\"请输入省份\" />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"城市\" prop=\"city\">\r\n <el-input v-model=\"form.city\" placeholder=\"请输入城市\" />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"详细地址\" prop=\"address\">\r\n <el-input v-model=\"form.address\" placeholder=\"请输入详细地址\" />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"联系电话\" prop=\"contactPhone\">\r\n <el-input v-model=\"form.contactPhone\" placeholder=\"请输入11位手机号\" />\r\n </el-form-item>\r\n </el-form>\r\n \r\n <template #footer>\r\n <span class=\"dialog-footer\">\r\n <el-button @click=\"dialogVisible = false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"submitForm\" :loading=\"submitting\">\r\n 确认\r\n </el-button>\r\n </span>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref, reactive } from 'vue'\r\nimport { ElMessage } from 'element-plus'\r\nimport { getLocations, createLocation } from '@/api/order'\r\n\r\nconst loading = ref(false)\r\nconst submitting = ref(false)\r\nconst dialogVisible = ref(false)\r\nconst locationList = ref([])\r\nconst formRef = ref(null)\r\n\r\n// 表单数据\r\nconst form = reactive({\r\n province: '',\r\n city: '',\r\n address: '',\r\n contactPhone: ''\r\n})\r\n\r\n// 表单验证规则\r\nconst rules = {\r\n province: [\r\n { required: true, message: '请输入省份', trigger: 'blur' }\r\n ],\r\n city: [\r\n { required: true, message: '请输入城市', trigger: 'blur' }\r\n ],\r\n address: [\r\n { required: true, message: '请输入详细地址', trigger: 'blur' }\r\n ],\r\n contactPhone: [\r\n { required: true, message: '请输入联系电话', trigger: 'blur' },\r\n { pattern: /^1[3-9]\\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }\r\n ]\r\n}\r\n\r\n// 加载中转点列表\r\nconst loadLocations = async () => {\r\n loading.value = true\r\n try {\r\n const res = await getLocations()\r\n if (res.code === 200) {\r\n locationList.value = res.data\r\n }\r\n } catch (error) {\r\n console.error('加载中转点失败:', error)\r\n ElMessage.error(error.message || '加载中转点失败')\r\n } finally {\r\n loading.value = false\r\n }\r\n}\r\n\r\n// 处理新增\r\nconst handleAdd = () => {\r\n form.province = ''\r\n form.city = ''\r\n form.address = ''\r\n form.contactPhone = ''\r\n dialogVisible.value = true\r\n}\r\n\r\n// 提交表单\r\nconst submitForm = async () => {\r\n if (!formRef.value) return\r\n \r\n try {\r\n await formRef.value.validate()\r\n submitting.value = true\r\n \r\n const res = await createLocation(form)\r\n if (res.code === 200) {\r\n ElMessage.success('中转点创建成功')\r\n dialogVisible.value = false\r\n loadLocations() // 重新加载列表\r\n }\r\n } catch (error) {\r\n console.error('创建中转点失败:', error)\r\n ElMessage.error(error.message || '创建中转点失败')\r\n } finally {\r\n submitting.value = false\r\n }\r\n}\r\n\r\n// 初始加载\r\nloadLocations()\r\n</script>\r\n\r\n<style scoped>\r\n.location-management {\r\n min-height: 100%;\r\n}\r\n\r\n.card-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.title {\r\n font-size: 18px;\r\n font-weight: bold;\r\n}\r\n\r\n.dialog-footer {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 10px;\r\n}\r\n</style> "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}