潘志宝
2025-02-07 76016162483baa727455e324f57e01898bfe39ca
src/views/data/ind/item/index.vue
@@ -1,4 +1,18 @@
<template>
  <el-row :gutter="20">
    <el-col :span="3" :xs="24">
      <ContentWrap class="h-1/1">
        <el-tree
          style="max-width: 600px"
          :data="dataCategoryList"
          :props="treeProps"
          default-expand-all
          highlight-current
          @node-click="handleNodeClick"
        />
      </ContentWrap>
    </el-col>
    <el-col :span="21" :xs="24">
  <!-- 搜索工作栏 -->
  <ContentWrap>
    <el-form ref="queryFormRef" :inline="true" :model="queryParams" class="-mb-15px"
@@ -46,17 +60,17 @@
  <!-- 列表 -->
  <ContentWrap>
    <el-table v-loading="loading" :data="list">
      <el-table-column prop="itemNo" label="指标编码" header-align="center" align="center" min-width="80"/>
      <el-table-column prop="itemName" label="指标名称" header-align="center" align="center" min-width="120"/>
      <el-table-column prop="itemCategoryName" label="指标分类" header-align="center" align="center" min-width="100"/>
          <el-table-column prop="itemNo" label="指标编码" header-align="center" align="center" min-width="70"/>
          <el-table-column prop="itemName" label="指标名称" header-align="center" align="center" min-width="150"/>
          <el-table-column prop="itemCategoryName" label="指标分类" header-align="center" align="center" min-width="80"/>
      <el-table-column prop="itemType" label="指标类型" header-align="center" align="center" min-width="60">
        <template #default="scope">
          <dict-tag :type="DICT_TYPE.IND_ITEM_TYPE" :value="scope.row.itemType" />
        </template>
      </el-table-column>
      <el-table-column prop="coefficient" label="系数" header-align="center" align="center" min-width="60"/>
      <el-table-column prop="precision" label="指标精度" header-align="center" align="center" min-width="60"/>
      <el-table-column prop="timeGranularity" label="时间粒度" header-align="center" align="center" min-width="40">
          <el-table-column prop="coefficient" label="系数" header-align="center" align="center" min-width="50"/>
          <el-table-column prop="precision" label="指标精度" header-align="center" align="center" min-width="50"/>
          <el-table-column prop="timeGranularity" label="时间粒度" header-align="center" align="center" min-width="50">
        <template #default="scope">
          <dict-tag :type="DICT_TYPE.TIME_GRANULARITY" :value="scope.row.timeGranularity" />
        </template>
@@ -66,7 +80,7 @@
        align="center"
        label="创建时间"
        prop="createTime"
        width="180"/>
            width="200"/>
      <el-table-column align="center" label="操作">
        <template #default="scope">
          <el-button
@@ -75,6 +89,13 @@
            type="primary"
            @click="openForm('update', scope.row)">
            修改
              </el-button>
              <el-button
                v-hasPermi="['data:ind-item:update']"
                link
                type="primary"
                @click="getCurrentData(scope.row.itemNo)">
                当前值
          </el-button>
          <el-button
            v-hasPermi="['data:ind-item:delete']"
@@ -94,12 +115,16 @@
      @pagination="getList"
    />
  </ContentWrap>
    </el-col>
  </el-row>
  <!-- 表单弹窗:添加/修改 -->
  <AtomIndDefineForm ref="atomFormRef" @success="getList" />
  <DerIndDefineForm ref="derFormRef" @success="getList" />
  <CalIndDefineForm ref="calFormRef" @success="getList" />
  <SelectItemType ref="itemTypeSel"/>
  <IndCurrentData ref="indCurrentData" />
</template>
<script lang="ts" setup>
@@ -113,6 +138,9 @@
  import download from '@/utils/download'
  import * as ItemApi from '@/api/data/ind/item/item'
  import * as CategoryApi from "@/api/data/ind/category";
  import IndCurrentData from './IndCurrentData.vue'
  import {handleTree} from "@/utils/tree";
  defineOptions({ name: 'IndItem' })
@@ -140,10 +168,17 @@
      const data = await ItemApi.getItemPage(queryParams)
      list.value = data.list
      total.value = data.total
      dataCategoryList.value = await CategoryApi.getCategoryListAllSimple()
    } finally {
      loading.value = false
    }
  }
  const getCategoryTree = async () => {
    dataCategoryList.value = []
    const res = await CategoryApi.getCategoryListAllSimple()
    let category: Tree = {id: 0, label: '主类目', children: []}
    category.children = handleTree(res, 'id', 'pid')
    dataCategoryList.value.push(category)
  }
  /** 搜索按钮操作 */
@@ -182,7 +217,11 @@
    }else {
      itemTypeSel.value.open(type)
    }
  }
  const indCurrentData = ref()
  const getCurrentData = (itemNo: string) => {
    indCurrentData.value.open(itemNo)
  }
  /** 删除按钮操作 */
@@ -198,8 +237,18 @@
    } catch {}
  }
  const handleNodeClick = (data: Tree) => {
    if( data.id !== 0 ){
      queryParams.itemCategory = String(data.id)
    }else {
      queryParams.itemCategory = ''
    }
    getList()
  }
  /** 初始化 **/
  onMounted(() => {
    getList()
    getCategoryTree()
  })
</script>