index.vue 4.04 KB
<template>
  <div class="app-container">
    <el-card>
      <el-form v-show="showSearch" ref="queryRef" :model="queryParams" :inline="true" label-width="68px">
        <el-form-item label="区域名称" prop="cityName">
          <el-input
            v-model="queryParams.cityName"
            placeholder="请输入区域名称"
            clearable
            @keyup.enter="handleQuery"
          />
        </el-form-item>
        <el-form-item>
          <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
          <el-button icon="Refresh" @click="resetQuery">重置</el-button>
        </el-form-item>
      </el-form>

      <!--      <el-row :gutter="10" class="mb8">-->
      <!--        <right-toolbar v-model:showSearch="showSearch" @queryTable="getList" />-->
      <!--      </el-row>-->

      <el-table
        v-loading="loading" border :data="regionList" lazy
        :load="getChildren" row-key="id"
      >
        <!-- <el-table-column type="index" width="55" align="center" label="序号" /> -->
        <el-table-column label="区域名称" align="center" prop="cityName" />
        <el-table-column label="行政编码" align="center" prop="id" />
        <el-table-column label="区域码" align="center" prop="areaCode">
          <template #default="scope">
            <el-row v-if="scope.row.isEdit">
              <el-col :span="18">
                <el-input v-model="scope.row.areaCode" />
              </el-col>
              <el-col :span="6">
                <el-button link type="primary" @click="handleSubmit(scope.row)">确定</el-button>
              </el-col>
            </el-row>
            <div v-else>
              {{ scope.row.areaCode }}
            </div>
          </template>
        </el-table-column>
        <el-table-column label="创建时间" align="center" prop="updateTime" />
        <el-table-column label="操作" align="center">
          <template #default="scope">
            <el-button v-hasPermi="['common:region:*']" type="primary" @click="handleUpdate(scope.row)">修改</el-button>
            <el-button
              v-show="scope.row.areaCode" v-hasPermi="['common:region:*']" type="danger"
              @click="handleDelete(scope.row)"
            >删除</el-button>
          </template>
        </el-table-column>
      </el-table>
    </el-card>
  </div>
</template>

<script setup name="Region">
import { listRegion, delRegion, editAreaCode } from '@/api/system/region'
import { getCurrentInstance, ref, toRefs } from 'vue'
import { reactive } from '@vue/runtime-core'


const { proxy } = getCurrentInstance()

const regionList = ref([])
const loading = ref(true)
const showSearch = ref(true)

const data = reactive({
  queryParams: {
    parentId: 0,
    cityName: undefined
  }
})

const { queryParams } = toRefs(data)

/** 查询地区列表 */
function getList() {
  loading.value = true

  if (queryParams.value.cityName) {
    queryParams.value.parentId = undefined
  } else {
    queryParams.value.parentId = 0
  }

  listRegion(queryParams.value).then(response => {
    regionList.value = response.data
    loading.value = false
  })
}

function getChildren(row, treeNode, resolve) {
  listRegion({
    parentId: row.id
  }).then(res => {
    resolve(res.data)
  })
}

/** 搜索按钮操作 */
function handleQuery() {
  queryParams.value.pageNum = 1
  getList()
}

/** 重置按钮操作 */
function resetQuery() {
  proxy.resetForm('queryRef')
  handleQuery()
}

/** 修改按钮操作 */
function handleUpdate(row) {
  row.isEdit = true
}

function handleDelete(row) {
  proxy.$modal.confirm('是否确认删除 "' + row.cityName + '" 的区域码?').then(function() {
    return delRegion(row.id)
  }).then(() => {
    row.areaCode = ''
    row.updateTime = ''
  })
}

function handleSubmit(row) {
  if (!row.areaCode) {
    proxy.$modal.msgError('区域码不能为空')
    return
  }

  editAreaCode({
    id: row.id,
    areaCode: row.areaCode
  }).then((res) => {
    proxy.$modal.msgSuccess('修改成功')
    row.isEdit = false
    row.updateTime = res.data.updateTime
  })
}

getList()
</script>