From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目

---
 src/views/system/area/index.vue |   79 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 79 insertions(+), 0 deletions(-)

diff --git a/src/views/system/area/index.vue b/src/views/system/area/index.vue
new file mode 100644
index 0000000..339ecef
--- /dev/null
+++ b/src/views/system/area/index.vue
@@ -0,0 +1,79 @@
+<template>
+  <doc-alert title="鍦板尯 & IP" url="https://doc.iocoder.cn/area-and-ip/" />
+
+  <!-- 鎿嶄綔鏍� -->
+  <ContentWrap>
+    <el-button type="primary" plain @click="openForm()">
+      <Icon icon="ep:plus" class="mr-5px" /> IP 鏌ヨ
+    </el-button>
+  </ContentWrap>
+
+  <!-- 鍒楄〃 -->
+  <ContentWrap>
+    <div style="width: 100%; height: 700px">
+      <!-- AutoResizer 鑷姩璋冭妭澶у皬 -->
+      <el-auto-resizer>
+        <template #default="{ height, width }">
+          <!-- Virtualized Table 铏氭嫙鍖栬〃鏍硷細楂樻�ц兘锛岃В鍐宠〃鏍煎湪澶ф暟鎹噺涓嬬殑鍗¢】闂 -->
+          <el-table-v2
+            v-loading="loading"
+            :columns="columns"
+            :data="list"
+            :width="width"
+            :height="height"
+            expand-column-key="id"
+          />
+        </template>
+      </el-auto-resizer>
+    </div>
+  </ContentWrap>
+
+  <!-- 琛ㄥ崟寮圭獥锛氭坊鍔�/淇敼 -->
+  <AreaForm ref="formRef" />
+</template>
+<script setup lang="tsx">
+import { Column } from 'element-plus'
+import AreaForm from './AreaForm.vue'
+import * as AreaApi from '@/api/system/area'
+
+defineOptions({ name: 'SystemArea' })
+
+// 琛ㄦ牸鐨� column 瀛楁
+const columns: Column[] = [
+  {
+    dataKey: 'id', // 闇�瑕佹覆鏌撳綋鍓嶅垪鐨勬暟鎹瓧娈�
+    title: '缂栧彿', // 鏄剧ず鍦ㄥ崟鍏冩牸琛ㄥご鐨勬枃鏈�
+    width: 400, // 褰撳墠鍒楃殑瀹藉害锛屽繀椤昏缃�
+    fixed: true, // 鏄惁鍥哄畾鍒�
+    key: 'id' // 鏍戝舰灞曞紑瀵瑰簲鐨� key
+  },
+  {
+    dataKey: 'name',
+    title: '鍦板悕',
+    width: 200
+  }
+]
+const loading = ref(true) // 鍒楄〃鐨勫姞杞戒腑
+const list = ref([]) // 琛ㄦ牸鐨勬暟鎹�
+
+/** 鑾峰緱鏁版嵁鍒楄〃 */
+const getList = async () => {
+  loading.value = true
+  try {
+    list.value = await AreaApi.getAreaTree()
+  } finally {
+    loading.value = false
+  }
+}
+
+/** 娣诲姞/淇敼鎿嶄綔 */
+const formRef = ref()
+const openForm = () => {
+  formRef.value.open()
+}
+
+/** 鍒濆鍖� **/
+onMounted(() => {
+  getList()
+})
+</script>

--
Gitblit v1.8.0