Browse Source

数据标准优化

master
siyaqi 3 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(
request: Request,
main_page_query: DataStdMainPageQueryModel = Depends(DataStdMainPageQueryModel.as_query),
main_page_query: DataStdMainModel= Depends(DataStdMainModel),
query_db: AsyncSession = Depends(get_db),
):
main_query_result = await DataStdService.get_std_main_list_all(query_db, main_page_query)
logger.info('获取数据标准列表成功')
return ResponseUtil.success(model_content=main_query_result)
return ResponseUtil.success(data=main_query_result)
@datastdController.get(
'/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)
if 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))
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)
if query_object.std_status:
filters.append(DataStdMain.std_status == query_object.std_status)
query = select(DataStdMain).where(*filters).order_by(desc(DataStdMain.create_time))
result = await db.execute(query)
return result.scalars().all()
return await PageUtil.paginate(db, query, 0, 0, False)
@classmethod
async def add_std_main(cls, db: AsyncSession, model: DataStdMainModel):
col = DataStdMain(**model.model_dump())

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

@ -75,7 +75,7 @@ class DataStdService:
try:
# 创建新的 page_object 实例,避免修改原始对象
new_page_object = DataStdCodeModel(**page_object.model_dump(by_alias=True))
new_page_object.code_status="1"
new_page_object.code_status="9"
# 调用 DAO 方法插入数据
await DataStdDao.add_std_code(query_db, new_page_object)
return CrudResponseModel(is_success=True, message='新增标准代码成功')
@ -163,6 +163,7 @@ class DataStdService:
else:
# 保存标准代码
code.id=str(uuid.uuid4())
await cls.add_std_code_services(request, query_db, code)
# 为每个代码项设置parent_id,并进行校验
@ -300,7 +301,7 @@ class DataStdService:
raise ServiceException(message=f"数据字典{page_object.dict_num}已存在")
# 创建新的 page_object 实例,避免修改原始对象
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())
# 调用 DAO 方法插入数据
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)
@classmethod
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
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):
raise ServiceException(message=f"标准编号 {model.std_num} 已存在")
model.id=str(uuid.uuid4())
model.std_status="9"
model.content_onum=2
await DataStdDao.add_std_main(query_db, model)
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
})
}
// 查询数据标准列表
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>
<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">
@ -96,7 +96,7 @@
</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-button @click="handleClose" style="width: 100%" plain>取消</el-button>
</el-col>
@ -110,9 +110,11 @@
<el-dialog title="选择代码" v-model="codeVisible" width="1000px">
<!-- 引入第二个页面组件 -->
<code-components ref="showCodeDialog" v-if="codeVisible" />
<template #footer>
<el-button @click="codeCancel">取消</el-button>
<el-button type="primary" @click="codeSave">确定</el-button>
<template #footer >
<el-button
@click="codeCancel">取消</el-button>
<el-button
type="primary" @click="codeSave">确定</el-button>
</template>
</el-dialog>
</el-dialog>
@ -135,6 +137,10 @@ const props = defineProps({
isEdit: {
type: Boolean,
},
isShow: {
type: Boolean,
default:false
},
dbResourceOldList: {
type: Object,
},
@ -195,6 +201,7 @@ function dataChange(data) {
}
// props.visible local visible
watch(() => props.visible, (newVal) => {
console.log(props.isShow,"aaaaaaaaaaa")
visible.value = newVal;
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="stdName" 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="stdSrc" width="150"></el-table-column>
<el-table-column label="类型" prop="stdType" width="150">
<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="codeNum" width="150">
<template #default="scope">
@ -349,6 +354,7 @@ const directoryTableData = ref([])
const queryParams = ref({
stdNum: '',
stdMenu: '',
contentOnum:null,
pageNum: 1,
pageSize: 10,
});
@ -521,9 +527,15 @@ const isAsset = (data) => {
const activeName = ref('1')
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">
<div class="form-container">
<el-row :gutter="20">
<!-- 标准代码编号 -->
<!-- 代码编号 -->
<el-col :span="8">
<el-form-item label="标准代码编号" prop="codeNum">
<el-input v-model="form.codeNum" placeholder="请输入标准代码编号" />
<el-form-item label="代码编号" prop="codeNum">
<el-input v-model="form.codeNum" placeholder="请输入代码编号" />
</el-form-item>
</el-col>
<!-- 标准代码名称 -->
<!-- 代码名称 -->
<el-col :span="8">
<el-form-item label="标准代码名称" prop="codeName">
<el-input v-model="form.codeName" placeholder="请输入标准代码名称" />
<el-form-item label="代码名称" prop="codeName">
<el-input v-model="form.codeName" placeholder="请输入代码名称" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<!-- 标准代码类型 -->
<!-- 代码类型 -->
<el-col :span="8">
<el-form-item label="标准代码类型" prop="codeType">
<el-form-item label="代码类型" prop="codeType">
<el-select
v-model="form.codeType"
placeholder="请选择标准代码类型"
placeholder="请选择代码类型"
maxlength="30"
@change="changeCodeType"
>
@ -82,7 +82,7 @@
<el-form-item label="代码值/名称" prop="codeNum">
<el-input
v-model="queryParams.codeNum"
placeholder="请输入标准代码编号"
placeholder="请输入代码编号"
clearable
style="width: 220px"
/>
@ -311,8 +311,8 @@ const getcompanyList = async () => {
companyist.value = response.rows;
};
const formRules = reactive({
codeNum: [{ required: true, message: "请输入标准代码编号", trigger: "blur" }],
codeName: [{ required: true, message: "请输入标准代码名称", trigger: "blur" }]
codeNum: [{ required: true, message: "请输入代码编号", trigger: "blur" }],
codeName: [{ required: true, message: "请输入代码名称", trigger: "blur" }]
});
const handleCodeClick = (row,index) => {
selectedRow.value=row
@ -323,7 +323,7 @@ const handleCodeClick = (row,index) => {
proxy.$modal.msgWarning("请选择关联代码!");
}
console.log(index,'点击了标准代码名称', row);
console.log(index,'点击了代码名称', row);
};
const handleSave2 =async () => {
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-form-item>
<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 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 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 label="业务认责部门" prop="bussDeptId">
<el-tree-select
@ -121,6 +128,10 @@ const props = defineProps({
type: Object,
required: false,
},
stdList: {
type: Object,
required: false,
},
isEdit: {
type: Boolean,
},

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

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

Loading…
Cancel
Save