From 76016162483baa727455e324f57e01898bfe39ca Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期五, 07 二月 2025 17:05:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/api/data/ind/item/item.ts              |    4 
 src/views/data/ind/item/index.vue          |  239 ++++++++++++++++++++++++++++-------------------
 src/views/data/ind/item/IndCurrentData.vue |   45 +++++++++
 3 files changed, 193 insertions(+), 95 deletions(-)

diff --git a/src/api/data/ind/item/item.ts b/src/api/data/ind/item/item.ts
index cd9d04e..ed09f65 100644
--- a/src/api/data/ind/item/item.ts
+++ b/src/api/data/ind/item/item.ts
@@ -64,3 +64,7 @@
     callback(new Error('请输入数字!'));
   }
 }
+
+export const getItemCurrentData = (itemNo: string) => {
+  return request.get({ url: '/data/api/query-ind/default-value?itemNo=' + itemNo})
+}
diff --git a/src/views/data/ind/item/IndCurrentData.vue b/src/views/data/ind/item/IndCurrentData.vue
new file mode 100644
index 0000000..88e9585
--- /dev/null
+++ b/src/views/data/ind/item/IndCurrentData.vue
@@ -0,0 +1,45 @@
+<template>
+  <el-dialog
+    title="指标当前值"
+    :close-on-click-modal="false"
+    width="30%"
+    v-model="visible"
+  >
+    <el-form
+      :inline="true"
+      :model="dataForm"
+    >
+      <el-form-item>
+        <el-button @click="getData()">查询</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-input v-model="dataForm.itemCurrentData" type="textarea" :rows="15" style="width: 550px" disabled/>
+      </el-form-item>
+    </el-form>
+  </el-dialog>
+</template>
+
+<script lang="ts" setup>
+import {ref} from 'vue';
+import * as ItemApi from '@/api/data/ind/item/item'
+
+const message = useMessage() // 消息弹窗
+const visible = ref(false);
+const dataForm = ref({
+  itemNo: "",
+  itemCurrentData: "",
+});
+
+/** 打开弹窗 */
+const open = async (itemNo: string) => {
+  visible.value = true
+  dataForm.value.itemNo = itemNo
+  dataForm.value.itemCurrentData = await ItemApi.getItemCurrentData(itemNo);
+}
+
+defineExpose({open}) // 提供 open 方法,用于打开弹窗
+
+const getData = async() =>{
+  dataForm.value.itemCurrentData = await ItemApi.getItemCurrentData(dataForm.value.itemNo);
+}
+</script>
diff --git a/src/views/data/ind/item/index.vue b/src/views/data/ind/item/index.vue
index b56ed54..f677122 100644
--- a/src/views/data/ind/item/index.vue
+++ b/src/views/data/ind/item/index.vue
@@ -1,105 +1,130 @@
 <template>
-  <!-- 搜索工作栏 -->
-  <ContentWrap>
-    <el-form ref="queryFormRef" :inline="true" :model="queryParams" class="-mb-15px"
-             label-width="68px">
-      <el-form-item label="指标编码" prop="itemNo">
-        <el-input v-model="queryParams.itemNo" class="!w-200px" clearable placeholder="请输入指标编码"
-                  @keyup.enter="handleQuery"/>
-      </el-form-item>
-      <el-form-item label="指标名称" prop="itemName">
-        <el-input v-model="queryParams.itemName" class="!w-200px" clearable placeholder="请输入指标名称"
-                  @keyup.enter="handleQuery"/>
-      </el-form-item>
-      <el-form-item label="指标类型" prop="itemType">
-        <el-select v-model="queryParams.itemType"  class="!w-200px" clearable placeholder="请选择指标类型">
-          <el-option
-            v-for="dict in getStrDictOptions(DICT_TYPE.IND_ITEM_TYPE)"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-button @click="handleQuery">
-          <Icon class="mr-5px" icon="ep:search"/>
-          搜索
-        </el-button>
-        <el-button @click="resetQuery">
-          <Icon class="mr-5px" icon="ep:refresh"/>
-          重置
-        </el-button>
-        <el-button
-          v-hasPermi="['data:ind-item:create']"
-          plain
-          type="primary"
-          @click="openForm('create')"
-        >
-          <Icon class="mr-5px" icon="ep:plus"/>
-          新增
-        </el-button>
-      </el-form-item>
-    </el-form>
-  </ContentWrap>
+  <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"
+                 label-width="68px">
+          <el-form-item label="指标编码" prop="itemNo">
+            <el-input v-model="queryParams.itemNo" class="!w-200px" clearable placeholder="请输入指标编码"
+                      @keyup.enter="handleQuery"/>
+          </el-form-item>
+          <el-form-item label="指标名称" prop="itemName">
+            <el-input v-model="queryParams.itemName" class="!w-200px" clearable placeholder="请输入指标名称"
+                      @keyup.enter="handleQuery"/>
+          </el-form-item>
+          <el-form-item label="指标类型" prop="itemType">
+            <el-select v-model="queryParams.itemType"  class="!w-200px" clearable placeholder="请选择指标类型">
+              <el-option
+                v-for="dict in getStrDictOptions(DICT_TYPE.IND_ITEM_TYPE)"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <el-button @click="handleQuery">
+              <Icon class="mr-5px" icon="ep:search"/>
+              搜索
+            </el-button>
+            <el-button @click="resetQuery">
+              <Icon class="mr-5px" icon="ep:refresh"/>
+              重置
+            </el-button>
+            <el-button
+              v-hasPermi="['data:ind-item:create']"
+              plain
+              type="primary"
+              @click="openForm('create')"
+            >
+              <Icon class="mr-5px" icon="ep:plus"/>
+              新增
+            </el-button>
+          </el-form-item>
+        </el-form>
+      </ContentWrap>
 
-  <!-- 列表 -->
-  <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="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">
-        <template #default="scope">
-          <dict-tag :type="DICT_TYPE.TIME_GRANULARITY" :value="scope.row.timeGranularity" />
-        </template>
-      </el-table-column>
-      <el-table-column
-        :formatter="dateFormatter"
-        align="center"
-        label="创建时间"
-        prop="createTime"
-        width="180"/>
-      <el-table-column align="center" label="操作">
-        <template #default="scope">
-          <el-button
-            v-hasPermi="['data:ind-item:update']"
-            link
-            type="primary"
-            @click="openForm('update', scope.row)">
-            修改
-          </el-button>
-          <el-button
-            v-hasPermi="['data:ind-item:delete']"
-            link
-            type="danger"
-            @click="handleDelete(scope.row.id)">
-            删除
-          </el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <!-- 分页 -->
-    <Pagination
-      v-model:limit="queryParams.pageSize"
-      v-model:page="queryParams.pageNo"
-      :total="total"
-      @pagination="getList"
-    />
-  </ContentWrap>
+      <!-- 列表 -->
+      <ContentWrap>
+        <el-table v-loading="loading" :data="list">
+          <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="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>
+          </el-table-column>
+          <el-table-column
+            :formatter="dateFormatter"
+            align="center"
+            label="创建时间"
+            prop="createTime"
+            width="200"/>
+          <el-table-column align="center" label="操作">
+            <template #default="scope">
+              <el-button
+                v-hasPermi="['data:ind-item:update']"
+                link
+                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']"
+                link
+                type="danger"
+                @click="handleDelete(scope.row.id)">
+                删除
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <!-- 分页 -->
+        <Pagination
+          v-model:limit="queryParams.pageSize"
+          v-model:page="queryParams.pageNo"
+          :total="total"
+          @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>

--
Gitblit v1.9.3