Browse Source

数据标准优化

master
siyaqi 4 weeks ago
parent
commit
abbfb0c9b5
  1. 4
      vue-fastapi-backend/module_admin/controller/datastd_controller.py
  2. 6
      vue-fastapi-backend/module_admin/dao/datastd_dao.py
  3. 10
      vue-fastapi-backend/module_admin/service/datastd_service.py
  4. 8
      vue-fastapi-frontend/src/api/datastd/std.js
  5. 17
      vue-fastapi-frontend/src/views/datastd/main/components/AddEditForm.vue
  6. 20
      vue-fastapi-frontend/src/views/datastd/main/index.vue
  7. 26
      vue-fastapi-frontend/src/views/datastd/stdcode/codeItem.vue
  8. 17
      vue-fastapi-frontend/src/views/datastd/stddict/AddEditForm.vue
  9. 48
      vue-fastapi-frontend/src/views/datastd/stddict/index.vue

4
vue-fastapi-backend/module_admin/controller/datastd_controller.py

@ -398,12 +398,12 @@ async def get_std_main_list(
) )
async def get_std_main_select_list( async def get_std_main_select_list(
request: Request, request: Request,
main_page_query: DataStdMainPageQueryModel = Depends(DataStdMainPageQueryModel.as_query), main_page_query: DataStdMainModel= Depends(DataStdMainModel),
query_db: AsyncSession = Depends(get_db), query_db: AsyncSession = Depends(get_db),
): ):
main_query_result = await DataStdService.get_std_main_list_all(query_db, main_page_query) main_query_result = await DataStdService.get_std_main_list_all(query_db, main_page_query)
logger.info('获取数据标准列表成功') logger.info('获取数据标准列表成功')
return ResponseUtil.success(model_content=main_query_result) return ResponseUtil.success(data=main_query_result)
@datastdController.get( @datastdController.get(
'/stdmain/main/{id}', response_model=DataStdMainModel, dependencies=[Depends(CheckUserInterfaceAuth('datastd:stdmain:main:list'))] '/stdmain/main/{id}', response_model=DataStdMainModel, dependencies=[Depends(CheckUserInterfaceAuth('datastd:stdmain:main:list'))]

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

@ -669,6 +669,8 @@ class DataStdDao:
filters.append(DataStdMain.std_type == query_object.std_type) filters.append(DataStdMain.std_type == query_object.std_type)
if query_object.std_status: if query_object.std_status:
filters.append(DataStdMain.std_status == query_object.std_status) filters.append(DataStdMain.std_status == query_object.std_status)
if query_object.content_onum:
filters.append(DataStdMain.content_onum == query_object.content_onum)
query = select(DataStdMain).where(*filters).order_by(desc(DataStdMain.create_time)) query = select(DataStdMain).where(*filters).order_by(desc(DataStdMain.create_time))
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
@ -686,10 +688,8 @@ class DataStdDao:
filters.append(DataStdMain.std_type == query_object.std_type) filters.append(DataStdMain.std_type == query_object.std_type)
if query_object.std_status: if query_object.std_status:
filters.append(DataStdMain.std_status == query_object.std_status) filters.append(DataStdMain.std_status == query_object.std_status)
query = select(DataStdMain).where(*filters).order_by(desc(DataStdMain.create_time)) query = select(DataStdMain).where(*filters).order_by(desc(DataStdMain.create_time))
result = await db.execute(query) return await PageUtil.paginate(db, query, 0, 0, False)
return result.scalars().all()
@classmethod @classmethod
async def add_std_main(cls, db: AsyncSession, model: DataStdMainModel): async def add_std_main(cls, db: AsyncSession, model: DataStdMainModel):
col = DataStdMain(**model.model_dump()) col = DataStdMain(**model.model_dump())

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

@ -75,7 +75,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="1" new_page_object.code_status="9"
# 调用 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='新增标准代码成功')
@ -163,6 +163,7 @@ class DataStdService:
else: else:
# 保存标准代码 # 保存标准代码
code.id=str(uuid.uuid4()) code.id=str(uuid.uuid4())
await cls.add_std_code_services(request, query_db, code) await cls.add_std_code_services(request, query_db, code)
# 为每个代码项设置parent_id,并进行校验 # 为每个代码项设置parent_id,并进行校验
@ -300,7 +301,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="1" new_page_object.dict_status="9"
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)
@ -767,7 +768,8 @@ class DataStdService:
return await DataStdDao.get_std_main_list(query_db, query_object, is_page) return await DataStdDao.get_std_main_list(query_db, query_object, is_page)
@classmethod @classmethod
async def get_std_main_list_all(cls, query_db: AsyncSession, query_object: DataStdMainModel): async def get_std_main_list_all(cls, query_db: AsyncSession, query_object: DataStdMainModel):
return await DataStdDao.get_std_main_list_all(query_db, query_object) main_query_result= await DataStdDao.get_std_main_list_all(query_db, query_object)
return main_query_result
@classmethod @classmethod
async def get_std_main_by_id(cls, query_db: AsyncSession, id: str): async def get_std_main_by_id(cls, query_db: AsyncSession, id: str):
@ -782,6 +784,8 @@ class DataStdService:
if not await cls.check_std_num_unique(query_db, model): if not await cls.check_std_num_unique(query_db, model):
raise ServiceException(message=f"标准编号 {model.std_num} 已存在") raise ServiceException(message=f"标准编号 {model.std_num} 已存在")
model.id=str(uuid.uuid4()) model.id=str(uuid.uuid4())
model.std_status="9"
model.content_onum=2
await DataStdDao.add_std_main(query_db, model) await DataStdDao.add_std_main(query_db, model)
return CrudResponseModel(is_success=True, message='新增标准成功') return CrudResponseModel(is_success=True, message='新增标准成功')

8
vue-fastapi-frontend/src/api/datastd/std.js

@ -182,6 +182,14 @@ export function listStdMain(query) {
params: query params: query
}) })
} }
// 查询数据标准列表
export function listStdMainSelect(query) {
return request({
url: '/default-api/datastd/stdmain/main/selectlist',
method: 'get',
params: query
})
}

17
vue-fastapi-frontend/src/views/datastd/main/components/AddEditForm.vue

@ -1,5 +1,5 @@
<template> <template>
<el-dialog width="500px" append-to-body :title="isEdit ? '修改数据标准' : '新增数据标准'" v-model="visible" @close="handleClose"> <el-dialog width="500px" append-to-body :title="isShow?'查看数据标准':isEdit ? '修改数据标准' : '新增数据标准'" v-model="visible" @close="handleClose">
<el-form :model="formData" ref="formRef" label-width="120px" :rules="formRules"> <el-form :model="formData" ref="formRef" label-width="120px" :rules="formRules">
@ -96,7 +96,7 @@
</el-form-item> </el-form-item>
<!-- 底部按钮区域 --> <!-- 底部按钮区域 -->
<el-row justify="center" style="margin-top: 20px;"> <el-row justify="center" style="margin-top: 20px;" v-if="!isShow">
<el-col :span="4" style="padding-right: 10px;"> <el-col :span="4" style="padding-right: 10px;">
<el-button @click="handleClose" style="width: 100%" plain>取消</el-button> <el-button @click="handleClose" style="width: 100%" plain>取消</el-button>
</el-col> </el-col>
@ -110,9 +110,11 @@
<el-dialog title="选择代码" v-model="codeVisible" width="1000px"> <el-dialog title="选择代码" v-model="codeVisible" width="1000px">
<!-- 引入第二个页面组件 --> <!-- 引入第二个页面组件 -->
<code-components ref="showCodeDialog" v-if="codeVisible" /> <code-components ref="showCodeDialog" v-if="codeVisible" />
<template #footer> <template #footer >
<el-button @click="codeCancel">取消</el-button> <el-button
<el-button type="primary" @click="codeSave">确定</el-button> @click="codeCancel">取消</el-button>
<el-button
type="primary" @click="codeSave">确定</el-button>
</template> </template>
</el-dialog> </el-dialog>
</el-dialog> </el-dialog>
@ -135,6 +137,10 @@ const props = defineProps({
isEdit: { isEdit: {
type: Boolean, type: Boolean,
}, },
isShow: {
type: Boolean,
default:false
},
dbResourceOldList: { dbResourceOldList: {
type: Object, type: Object,
}, },
@ -195,6 +201,7 @@ function dataChange(data) {
} }
// props.visible local visible // props.visible local visible
watch(() => props.visible, (newVal) => { watch(() => props.visible, (newVal) => {
console.log(props.isShow,"aaaaaaaaaaa")
visible.value = newVal; visible.value = newVal;
formData.value = { ...props.data } formData.value = { ...props.data }
}); });

20
vue-fastapi-frontend/src/views/datastd/main/index.vue

@ -228,8 +228,13 @@
<el-table-column label="标准英文名" prop="stdCode" width="150"></el-table-column> <el-table-column label="标准英文名" prop="stdCode" width="150"></el-table-column>
<el-table-column label="标准中文名" prop="stdName" width="150"></el-table-column> <el-table-column label="标准中文名" prop="stdName" width="150"></el-table-column>
<el-table-column label="标准业务定义" prop="stdMenu" width="150"></el-table-column> <el-table-column label="标准业务定义" prop="stdMenu" width="150"></el-table-column>
<el-table-column label="类型" prop="stdType" width="150"></el-table-column> <el-table-column label="类型" prop="stdType" width="150">
<el-table-column label="标准来源" prop="stdSrc" width="150"></el-table-column> <template #default="scope">
<!-- 根据 dataClas 的值来显示不同颜色的标签 -->
<el-tag v-if="scope.row.stdType =='0'" type="primary">基础数据</el-tag>
<el-tag v-else type="warning">指标数据</el-tag>
</template>
</el-table-column><el-table-column label="" prop="stdSrc" width="150"></el-table-column>
<el-table-column label="数据类别" prop="dataClas" width="150"></el-table-column> <el-table-column label="数据类别" prop="dataClas" width="150"></el-table-column>
<el-table-column label="代码编号" prop="codeNum" width="150"> <el-table-column label="代码编号" prop="codeNum" width="150">
<template #default="scope"> <template #default="scope">
@ -349,6 +354,7 @@ const directoryTableData = ref([])
const queryParams = ref({ const queryParams = ref({
stdNum: '', stdNum: '',
stdMenu: '', stdMenu: '',
contentOnum:null,
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
}); });
@ -521,9 +527,15 @@ const isAsset = (data) => {
const activeName = ref('1') const activeName = ref('1')
const handleNodeClick = async (data) => { const handleNodeClick = async (data) => {
if (isCollectionDirectory(data)) {
return if(data.contentOnum==1){
queryParams.value.contentOnum=null
}else{
queryParams.value.contentOnum=data.contentOnum
} }
handleQuery();
} }

26
vue-fastapi-frontend/src/views/datastd/stdcode/codeItem.vue

@ -2,28 +2,28 @@
<el-form :model="form" ref="formRef" label-width="120px" :rules="formRules"> <el-form :model="form" ref="formRef" label-width="120px" :rules="formRules">
<div class="form-container"> <div class="form-container">
<el-row :gutter="20"> <el-row :gutter="20">
<!-- 标准代码编号 --> <!-- 代码编号 -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="标准代码编号" prop="codeNum"> <el-form-item label="代码编号" prop="codeNum">
<el-input v-model="form.codeNum" placeholder="请输入标准代码编号" /> <el-input v-model="form.codeNum" placeholder="请输入代码编号" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- 标准代码名称 --> <!-- 代码名称 -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="标准代码名称" prop="codeName"> <el-form-item label="代码名称" prop="codeName">
<el-input v-model="form.codeName" placeholder="请输入标准代码名称" /> <el-input v-model="form.codeName" placeholder="请输入代码名称" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<!-- 标准代码类型 --> <!-- 代码类型 -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="标准代码类型" prop="codeType"> <el-form-item label="代码类型" prop="codeType">
<el-select <el-select
v-model="form.codeType" v-model="form.codeType"
placeholder="请选择标准代码类型" placeholder="请选择代码类型"
maxlength="30" maxlength="30"
@change="changeCodeType" @change="changeCodeType"
> >
@ -82,7 +82,7 @@
<el-form-item label="代码值/名称" prop="codeNum"> <el-form-item label="代码值/名称" prop="codeNum">
<el-input <el-input
v-model="queryParams.codeNum" v-model="queryParams.codeNum"
placeholder="请输入标准代码编号" placeholder="请输入代码编号"
clearable clearable
style="width: 220px" style="width: 220px"
/> />
@ -311,8 +311,8 @@ const getcompanyList = async () => {
companyist.value = response.rows; companyist.value = response.rows;
}; };
const formRules = reactive({ const formRules = reactive({
codeNum: [{ required: true, message: "请输入标准代码编号", trigger: "blur" }], codeNum: [{ required: true, message: "请输入代码编号", trigger: "blur" }],
codeName: [{ required: true, message: "请输入标准代码名称", trigger: "blur" }] codeName: [{ required: true, message: "请输入代码名称", trigger: "blur" }]
}); });
const handleCodeClick = (row,index) => { const handleCodeClick = (row,index) => {
selectedRow.value=row selectedRow.value=row
@ -323,7 +323,7 @@ const handleCodeClick = (row,index) => {
proxy.$modal.msgWarning("请选择关联代码!"); proxy.$modal.msgWarning("请选择关联代码!");
} }
console.log(index,'点击了标准代码名称', row); console.log(index,'点击了代码名称', row);
}; };
const handleSave2 =async () => { const handleSave2 =async () => {
const child = proxy.$refs.showCodeDialog; const child = proxy.$refs.showCodeDialog;

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

@ -47,13 +47,20 @@
<el-input v-model="formData.dictName" placeholder="请输入字典中文名" clearable /> <el-input v-model="formData.dictName" placeholder="请输入字典中文名" clearable />
</el-form-item> </el-form-item>
<el-form-item label="字典业务定义" prop="dictMenu"> <el-form-item label="字典业务定义" prop="dictMenu">
<el-input v-model="formData.dictMenu" placeholder="请输入字典中文名" clearable /> <el-input v-model="formData.dictMenu" placeholder="请输入业务定义" clearable />
</el-form-item> </el-form-item>
<el-form-item label="数据类型" prop="dataType"> <el-form-item label="数据类型" prop="dataType">
<el-input v-model="formData.dataType" placeholder="请输入字典中文名" clearable /> <el-input v-model="formData.dataType" placeholder="请输入数据类型" clearable />
</el-form-item> </el-form-item>
<el-form-item label="数据标准" prop="stdCode"> <el-form-item label="数据标准" prop="stdCode">
<el-input v-model="formData.stdCode" placeholder="请输入字典中文名" clearable /> <el-select v-model="formData.stdCode" placeholder="数据标准">
<el-option
v-for="dict in stdList"
:key="dict.id"
:label="dict.stdNum+'-'+dict.stdCode"
:value="dict.id"
></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="业务认责部门" prop="bussDeptId"> <el-form-item label="业务认责部门" prop="bussDeptId">
<el-tree-select <el-tree-select
@ -121,6 +128,10 @@ const props = defineProps({
type: Object, type: Object,
required: false, required: false,
}, },
stdList: {
type: Object,
required: false,
},
isEdit: { isEdit: {
type: Boolean, type: Boolean,
}, },

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

@ -132,7 +132,18 @@
prop="dictMenu" 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" >
<template #default="{ row }">
<el-link
type="primary"
:underline="true"
@click="handleStdClick(row.stdCode)"
style="cursor: pointer"
>
<span >{{transIdtoCode(row.stdCode)}}</span>
</el-link>
</template>
</el-table-column>
<el-table-column label="字典状态" align="center" prop="dictStatus"> <el-table-column label="字典状态" align="center" prop="dictStatus">
<template #default="scope"> <template #default="scope">
<dict-tag <dict-tag
@ -206,10 +217,19 @@
<AddEditForm <AddEditForm
:data="selectedRow" :data="selectedRow"
:isEdit="isEdit" :isEdit="isEdit"
:stdList="stdList"
:dbResourceOldList="dbResourceOldList" :dbResourceOldList="dbResourceOldList"
v-model:visible="dialogVisible" v-model:visible="dialogVisible"
@refresh="getList" @refresh="getList"
/> />
<AddEditStdForm
:data="stdRow"
:isEdit=true
:isShow=true
:dbResourceOldList="dbResourceOldList"
v-model:visible="stdVisible"
@refresh="getList"
/>
</div> </div>
</template> </template>
@ -221,9 +241,12 @@ import {
getStdDict, getStdDict,
updateStdDict, updateStdDict,
deleteStdDict, deleteStdDict,
getStdMain,
listStdMainSelect
} from "@/api/datastd/std"; // } from "@/api/datastd/std"; //
import { datasourcetree } from "@/api/meta/metatask"; import { datasourcetree } from "@/api/meta/metatask";
import AddEditForm from "./AddEditForm.vue"; import AddEditForm from "./AddEditForm.vue";
import AddEditStdForm from "../main/components/AddEditForm.vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { std_code_status, std_code_appr } = proxy.useDict( const { std_code_status, std_code_appr } = proxy.useDict(
"std_code_status", "std_code_status",
@ -240,27 +263,42 @@ const queryParams = ref({
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
}); });
const queryStd = ref({
stdNum: "",
});
const single = ref(true); const single = ref(true);
const multiple = ref(true); const multiple = ref(true);
const dbResoursName = ref(undefined); const dbResoursName = ref(undefined);
const defaultProps = { children: "children", label: "name" }; const defaultProps = { children: "children", label: "name" };
const dialogVisible = ref(false); const dialogVisible = ref(false);
const selectedRow = ref(null); const selectedRow = ref(null);
const stdRow = ref(null);
const isEdit = ref(false); const isEdit = ref(false);
const tableData = ref([]); const tableData = ref([]);
const stdList = ref([]);
const total = ref(0); const total = ref(0);
const loading = ref(false); const loading = ref(false);
const stdVisible = ref(false);
const ids = ref([]); const ids = ref([]);
const codeNums = ref([]); const codeNums = ref([]);
const dbResourceOptions = ref([]); const dbResourceOptions = ref([]);
const handleStdClick = (id) => {
getStdMain(id).then((response) => {
stdRow.value = response.data;
stdVisible.value = true;
});
};
const handlePagination = (pageNum, pageSize) => { const handlePagination = (pageNum, pageSize) => {
queryParams.value.pageNum = pageNum; queryParams.value.pageNum = pageNum;
queryParams.value.pageSize = pageSize; queryParams.value.pageSize = pageSize;
handleQuery(); handleQuery();
}; };
const transIdtoCode = (stdCode) => {
const match = stdList.value.find(item => item.id === stdCode);
return match ? match.stdNum : '';
};
const filterNode = (value, data) => { const filterNode = (value, data) => {
if (!value) return true; if (!value) return true;
return data.name.indexOf(value) !== -1; return data.name.indexOf(value) !== -1;
@ -285,6 +323,11 @@ const getList = async () => {
total.value = response.total; total.value = response.total;
loading.value = false; loading.value = false;
}; };
const getStdMainSelect = async () => {
const response = await listStdMainSelect(queryStd);
stdList.value = response.data;
};
const handleQuery = () => { const handleQuery = () => {
queryParams.value.pageNum = 1; queryParams.value.pageNum = 1;
@ -372,6 +415,7 @@ onMounted(() => {
]; ];
}); });
getList(); getList();
getStdMainSelect();
}); });
</script> </script>

Loading…
Cancel
Save