Browse Source

数据词典优化

master
si@aidatagov.com 1 month ago
parent
commit
4be859d7dc
  1. 30
      vue-fastapi-backend/module_admin/dao/datastd_dao.py
  2. 4
      vue-fastapi-backend/module_admin/service/datastd_service.py
  3. 6
      vue-fastapi-frontend/src/views/datastd/stddict/AddEditForm.vue
  4. 31
      vue-fastapi-frontend/src/views/datastd/stddict/index.vue

30
vue-fastapi-backend/module_admin/dao/datastd_dao.py

@ -2,6 +2,7 @@ from sqlalchemy import delete, select, update, desc,or_
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.do.datastd_do import DataStdCode,DataStdDict from module_admin.entity.do.datastd_do import DataStdCode,DataStdDict
from module_admin.entity.vo.datastd_vo import DataStdCodeModel,DataStdDictModel from module_admin.entity.vo.datastd_vo import DataStdCodeModel,DataStdDictModel
from module_admin.entity.do.dept_do import SysDept
from utils.page_util import PageUtil from utils.page_util import PageUtil
from sqlalchemy.orm import aliased from sqlalchemy.orm import aliased
@ -200,10 +201,35 @@ class DataStdDao:
filters.append(DataStdDict.dict_type == query_object.dict_type) filters.append(DataStdDict.dict_type == query_object.dict_type)
if query_object.dict_status: if query_object.dict_status:
filters.append(DataStdDict.dict_status == query_object.dict_status) filters.append(DataStdDict.dict_status == query_object.dict_status)
c1 = aliased(SysDept) # 技术部门
c2 = aliased(SysDept) # 业务部门
# 构建查询语句 # 构建查询语句
query = ( query = (
select(DataStdDict) select(DataStdDict.id,
DataStdDict.create_by,
DataStdDict.create_time,
DataStdDict.update_by,
DataStdDict.update_time,
DataStdDict.dict_num,
DataStdDict.dict_code,
DataStdDict.dict_name,
DataStdDict.dict_level,
DataStdDict.dict_type,
DataStdDict.sys_name,
DataStdDict.sys_id,
DataStdDict.dict_menu,
DataStdDict.data_type,
DataStdDict.std_code,
DataStdDict.std_name,
DataStdDict.dict_status,
DataStdDict.buss_dept_id,
DataStdDict.tech_dept_id,
DataStdDict.buss_user,
DataStdDict.tech_user,
c1.dept_name.label("tech_dept_name"),
c2.dept_name.label("buss_dept_name")).select_from(DataStdDict)
.join(c1,c1.dept_id ==DataStdDict.tech_dept_id, isouter=True)
.join(c2,c2.dept_id ==DataStdDict.buss_dept_id, isouter=True)
.where(*filters) .where(*filters)
.order_by(desc(DataStdDict.create_time)) # 按创建时间降序排序 .order_by(desc(DataStdDict.create_time)) # 按创建时间降序排序
) )

4
vue-fastapi-backend/module_admin/service/datastd_service.py

@ -72,7 +72,7 @@ class DataStdService:
try: try:
# 创建新的 page_object 实例,避免修改原始对象 # 创建新的 page_object 实例,避免修改原始对象
new_page_object = DataStdCodeModel(**page_object.model_dump(by_alias=True)) new_page_object = DataStdCodeModel(**page_object.model_dump(by_alias=True))
new_page_object.code_status="0" new_page_object.code_status="1"
# 调用 DAO 方法插入数据 # 调用 DAO 方法插入数据
await DataStdDao.add_std_code(query_db, new_page_object) await DataStdDao.add_std_code(query_db, new_page_object)
return CrudResponseModel(is_success=True, message='新增标准代码成功') return CrudResponseModel(is_success=True, message='新增标准代码成功')
@ -297,7 +297,7 @@ class DataStdService:
raise ServiceException(message=f"数据字典{page_object.dict_num}已存在") raise ServiceException(message=f"数据字典{page_object.dict_num}已存在")
# 创建新的 page_object 实例,避免修改原始对象 # 创建新的 page_object 实例,避免修改原始对象
new_page_object = DataStdDictModel(**page_object.model_dump(by_alias=True)) new_page_object = DataStdDictModel(**page_object.model_dump(by_alias=True))
new_page_object.dict_status="0" new_page_object.dict_status="1"
new_page_object.id=str(uuid.uuid4()) new_page_object.id=str(uuid.uuid4())
# 调用 DAO 方法插入数据 # 调用 DAO 方法插入数据
await DataStdDao.add_std_dict(query_db, new_page_object) await DataStdDao.add_std_dict(query_db, new_page_object)

6
vue-fastapi-frontend/src/views/datastd/stddict/AddEditForm.vue

@ -135,7 +135,11 @@ const props = defineProps({
const formRules = ref({ const formRules = ref({
dictLevel: [{ required: true, message: '请选择字典归属', trigger: 'blur' }], dictLevel: [{ required: true, message: '请选择字典归属', trigger: 'blur' }],
dictType: [{ required: true, message: '请选择数据字典类型', trigger: 'blur' }], dictType: [{ required: true, message: '请选择数据字典类型', trigger: 'blur' }],
dictNum: [{ required: true, message: '请输入数据字典编号', trigger: 'blur' }] bussDeptId: [{ required: true, message: '请选择业务认责部门', trigger: 'blur' }],
techDeptId: [{ required: true, message: '请选择技术认责部门', trigger: 'blur' }],
dictNum: [{ required: true, message: '请输入数据字典编号', trigger: 'blur' }],
bussUser: [{ required: true, message: '请输入业务认责人', trigger: 'blur' }],
techUser: [{ required: true, message: '请输入技术认责人', trigger: 'blur' }],
}); });
const showSys = ref(false); const showSys = ref(false);
const emit = defineEmits(['update:visible', 'refresh']); const emit = defineEmits(['update:visible', 'refresh']);

31
vue-fastapi-frontend/src/views/datastd/stddict/index.vue

@ -80,19 +80,34 @@
<!-- 表格展示 --> <!-- 表格展示 -->
<el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="归属" align="center" prop="dictLevel" /> <el-table-column label="归属" align="center" width="200">
<el-table-column label="类型" align="center" prop="dictType" /> <template #default="{ row }">
<el-table-column label="来源系统" width="150" align="center" prop="sysName" /> {{ row.dictLevel === 'company' ? '公司级' : '系统级('+row.sysName+')' }}
</template>
</el-table-column>
<el-table-column label="类型" align="center">
<template #default="{ row }">
{{ row.dictType == 0 ? '基础数据' : '指标数据' }}
</template>
</el-table-column>
<!-- <el-table-column label="来源系统" width="150" align="center" prop="sysName" /> -->
<el-table-column label="字典编号" width="150" align="center" prop="dictNum" /> <el-table-column label="字典编号" width="150" align="center" prop="dictNum" />
<el-table-column label="字典英文名" width="120" align="center" prop="dictCode" /> <el-table-column label="字典英文名" width="120" align="center" prop="dictCode" />
<el-table-column label="字典中文名" width="120" align="center" prop="dictName" /> <el-table-column label="字典中文名" width="120" align="center" prop="dictName" />
<el-table-column label="字典业务定义" width="120" align="center" prop="dictMenu" /> <el-table-column label="字典业务定义" width="120" align="center" prop="dictMenu" />
<el-table-column label="数据类型" align="center" prop="dataType" /> <el-table-column label="数据类型" align="center" prop="dataType" />
<el-table-column label="数据标准" align="center" prop="stdCode" /> <el-table-column label="数据标准" align="center" prop="stdCode" />
<el-table-column label="字典状态" align="center" prop="dictStatus" /> <el-table-column label="字典状态" align="center" prop="dictStatus">
<el-table-column label="业务认责部门" width="120" align="center" prop="bussDeptId" /> <template #default="scope">
<dict-tag
:options="std_code_appr"
:value="scope.row.dictStatus"
/>
</template>
</el-table-column>
<el-table-column label="业务认责部门" width="120" align="center" prop="bussDeptName" />
<el-table-column label="业务认责人员" width="120" align="center" prop="bussUser" /> <el-table-column label="业务认责人员" width="120" align="center" prop="bussUser" />
<el-table-column label="技术认责部门" width="120" align="center" prop="techDeptId" /> <el-table-column label="技术认责部门" width="120" align="center" prop="techDeptName" />
<el-table-column label="技术认责人员" width="120" align="center" prop="techUser" /> <el-table-column label="技术认责人员" width="120" align="center" prop="techUser" />
<el-table-column label="更新者" width="120" align="center" prop="updateBy" /> <el-table-column label="更新者" width="120" align="center" prop="updateBy" />
<el-table-column label="更新时间" width="120" align="center" prop="updateTime" /> <el-table-column label="更新时间" width="120" align="center" prop="updateTime" />
@ -125,6 +140,7 @@ import { listStdDict, addStdDict, getStdDict, updateStdDict, deleteStdDict } fro
import { datasourcetree } from "@/api/meta/metatask"; import { datasourcetree } from "@/api/meta/metatask";
import AddEditForm from './AddEditForm.vue'; import AddEditForm from './AddEditForm.vue';
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { std_code_status,std_code_appr } = proxy.useDict("std_code_status","std_code_appr");
const queryParams = ref({ const queryParams = ref({
dictNum: '', dictNum: '',
@ -218,7 +234,8 @@ const handleAdd = () => {
isEdit.value = false; isEdit.value = false;
selectedRow.value={ selectedRow.value={
dictLevel: 'company', dictLevel: 'company',
sysId: undefined, sysId: 10000,
sysName: "公司级",
dictType: '', dictType: '',
dictNum: '', dictNum: '',
dictCode: '', dictCode: '',

Loading…
Cancel
Save