From 8bb7160c9c4fd7ce5893ee673647b13cc35410ae Mon Sep 17 00:00:00 2001 From: liriming <1343021927@qq.com> Date: 星期一, 03 三月 2025 17:27:07 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/data/ind/item/index.vue | 250 +++++++++++++++++++++++++++++++------------------- 1 files changed, 155 insertions(+), 95 deletions(-) diff --git a/src/views/data/ind/item/index.vue b/src/views/data/ind/item/index.vue index b56ed54..3a3c9a9 100644 --- a/src/views/data/ind/item/index.vue +++ b/src/views/data/ind/item/index.vue @@ -1,105 +1,136 @@ <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 + link + type="primary" + @click="getCurrentData(scope.row.itemNo)"> + 当前值 + </el-button> + <el-button + link + type="primary" + @click="getHistoryData(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> + </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"/> + <IndHistoryChart ref="indHistoryChart"/> </template> <script lang="ts" setup> @@ -113,6 +144,10 @@ 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 IndHistoryChart from './IndHistoryChart.vue' + import {handleTree} from "@/utils/tree"; + defineOptions({ name: 'IndItem' }) @@ -140,10 +175,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 +224,15 @@ }else { itemTypeSel.value.open(type) } + } + const indCurrentData = ref() + const getCurrentData = (itemNo: string) => { + indCurrentData.value.open(itemNo) + } + const indHistoryChart = ref() + const getHistoryData = (raw: object) => { + indHistoryChart.value.open(raw) } /** 删除按钮操作 */ @@ -198,8 +248,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