Browse Source

标准代码提交

master
si@aidatagov.com 1 month ago
parent
commit
201879c389
  1. 12
      vue-fastapi-backend/module_admin/controller/datastd_controller.py
  2. 54
      vue-fastapi-backend/module_admin/dao/datastd_dao.py
  3. 7
      vue-fastapi-backend/module_admin/entity/do/datastd_do.py
  4. 4
      vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py
  5. 16
      vue-fastapi-backend/module_admin/service/datastd_service.py
  6. 15
      vue-fastapi-frontend/src/api/datastd/stdcode.js
  7. 177
      vue-fastapi-frontend/src/views/datastd/stdcode/codeItem.vue
  8. 222
      vue-fastapi-frontend/src/views/datastd/stdcode/codeItemCommon.vue
  9. 269
      vue-fastapi-frontend/src/views/datastd/stdcode/codeMap.vue
  10. 37
      vue-fastapi-frontend/src/views/datastd/stdcode/index.vue

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

@ -30,6 +30,18 @@ async def get_std_code_list(
logger.info('获取列配置列表成功')
return ResponseUtil.success(model_content=code_page_query_result)
@datastdController.get(
'/stdcode/code/maplist', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('datastd:stdcode:code:list'))]
)
async def get_std_code_map_list(
request: Request,
code_page_query: DataStdCodePageQueryModel = Depends(DataStdCodePageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
):
code_page_query_result = await DataStdService.get_std_code_map_list_services(query_db, code_page_query, is_page=True)
logger.info('获取列配置列表成功')
return ResponseUtil.success(model_content=code_page_query_result)
@datastdController.get(
'/stdcode/code/{id}', response_model=DataStdCodeModel, dependencies=[Depends(CheckUserInterfaceAuth('datastd:stdcode:code:list'))]
)

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

@ -1,8 +1,9 @@
from sqlalchemy import delete, select, update, desc
from sqlalchemy import delete, select, update, desc,or_
from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.do.datastd_do import DataStdCode
from module_admin.entity.vo.datastd_vo import DataStdCodeModel
from utils.page_util import PageUtil
from sqlalchemy.orm import aliased
class DataStdDao:
@ -23,6 +24,11 @@ class DataStdDao:
filters = []
if query_object.code_name:
filters.append(DataStdCode.code_name.like(f"%{query_object.code_name}%"))
if query_object.code_num:
filters.append( or_(
DataStdCode.code_name.like(f"%{query_object.code_num}%"),
DataStdCode.code_num.like(f"%{query_object.code_num}%")
))
if query_object.code_status:
filters.append(DataStdCode.code_status==query_object.code_status)
if query_object.sys_id:
@ -48,9 +54,49 @@ class DataStdDao:
db, query, query_object.page_num, query_object.page_size, is_page
)
return col_list
@classmethod
async def get_std_code_map_list(cls, db: AsyncSession, query_object: DataStdCodeModel, is_page: bool = False):
# 构建查询条件
filters = []
# 系统级代码
c1 = aliased(DataStdCode) # 当前 codeItem 表(c1)
c2 = aliased(DataStdCode) # 别名 c2 表示父级(parent)
c3 = aliased(DataStdCode) # 别名 c3 表示映射的代码
c4 = aliased(DataStdCode) # 别名 c4 表示映射父级代码
if query_object.parent_id:
if query_object.code_type =='sys':
filters.append(c1.parent_id == query_object.parent_id)
else:
filters.append(c3.parent_id == query_object.parent_id)
# 公司级代码
# 2. 创建别名并进行连接
filters.append(c1.class_id == 'codeItem') # class_id 为 'codeItem'
# 3. 构建基础查询,使用连接和别名
query = (
select(
c2.sys_id.label("target_sys_id"), # 父级系统编号
c2.sys_name.label("target_sys_name"), # 父级系统名称
c2.code_num.label("target_code_num"), # 父级代码编号
c2.code_name.label("target_code_name"), # 父级代码名称
c1.code_num.label("target_code_num_item"), # 当前 codeItem 的编号
c1.code_name.label("target_code_name_item"), # 当前 codeItem 的名称
c4.code_num.label("resource_code_num"), # 映射的父级代码编号
c4.code_name.label("resource_code_name"), # 映射的父级代码名称
c3.code_num.label("resource_code_num_item"), # 映射的父级代码编号
c3.code_name.label("resource_code_name_item") # 映射的父级代码名称
)
.select_from(c1) # 从 c1 开始查询
.join(c2, c1.parent_id == c2.id, isouter=True) # 连接 c2
.join(c3, c1.code_map_id == c3.id, isouter=True) # 连接 c3
.join(c4, c3.parent_id == c4.id, isouter=True) # 连接 c4
.where(*filters) # 使用所有过滤条件
.order_by(desc(c1.create_time)) # 按照创建时间降序排列
)
# 4. 分页逻辑
col_list = await PageUtil.paginate(
db, query, query_object.page_num, query_object.page_size, is_page
)
return col_list
@classmethod
async def get_data_code_list_by_info(cls, db: AsyncSession, query_object: DataStdCodeModel):
List = (

7
vue-fastapi-backend/module_admin/entity/do/datastd_do.py

@ -15,12 +15,13 @@ class DataStdCode(Base):
update_by = Column(String(20), default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
code_num = Column(String(50), default=None, comment='标准代码编号')
code_name = Column(String(50), default=None, comment='标准代码值')
code_name = Column(String(200), default=None, comment='标准代码值')
code_type = Column(String(10), default=None, comment='标准代码类型(sys:系统级 company:公司级)')
code_status = Column(String(1), default=None, comment='代码状态(0:有效 1:无效)')
sys_name = Column(String(50), default=None, comment='归属系统')
sys_id = Column(Integer, default=None, comment='归属系统Id')
class_id = Column(String(10), default=None, comment='代码类型(code:代码 codeItem:代码项)')
parent_id = Column(String(50), default=None, comment='父id')
code_map_id = Column(String(50), default=None,comment='标准代码Id')
code_map_num = Column(String(50), default=None, comment='标准代码编号')
code_map_name = Column(String(200), default=None, comment='标准代码值')

4
vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py

@ -31,7 +31,9 @@ class DataStdCodeModel(BaseModel):
create_time: Optional[datetime] = Field(default=None, description='创建时间')
update_by: Optional[str] = Field(default=None, description='更新者')
update_time: Optional[datetime] = Field(default=None, description='更新时间')
code_map_id: Optional[str] = Field(default=None, description='标准代码主键(映射)')
code_map_num: Optional[str] = Field(default=None, description='标准代码编号(映射)')
code_map_name: Optional[str] = Field(default=None, description='标准代码名称(映射)')

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

@ -28,7 +28,20 @@ class DataStdService:
col_list_result = await DataStdDao.get_std_code_list(query_db, query_object, is_page)
return col_list_result
@classmethod
async def get_std_code_map_list_services(
cls, query_db: AsyncSession, query_object: DataStdCodeModel, is_page: bool = False
):
"""
获取列配置列表信息service
:param query_db: orm对象
:param query_object: 查询参数对象
:param is_page: 是否开启分页
:return: 列配置列表信息对象
"""
col_list_result = await DataStdDao.get_std_code_map_list(query_db, query_object, is_page)
return col_list_result
@classmethod
async def get_std_code_by_id_services(cls, query_db: AsyncSession, id: str):
"""
@ -199,8 +212,7 @@ class DataStdService:
else: # 如果code_item的id不为0,表示是修改操作
# 校验同一个父级下,code_num是否已存在
existing_code_item = await cls.check_code_unique_services(query_db,code_item)
if existing_code_item:
if not await cls.check_code_unique_services(query_db, code_item):
raise ServiceException(message=f"父级代码{code.code_num}下的代码项{code_item.code_num}已存在")
# 生成新的UUID,并新增代码项
code_item.id = str(uuid.uuid4()) # 新生成的UUID

15
vue-fastapi-frontend/src/api/datastd/stdcode.js

@ -9,7 +9,20 @@ export function listStdCode(query) {
params: query
})
}
export function listStdCodeCompany() {
return request({
url: '/default-api/datastd/stdcode/code/list',
method: 'get',
params: {classId:'code',codeType:"company"}
})
}
export function listStdCodemap(query) {
return request({
url: '/default-api/datastd/stdcode/code/maplist',
method: 'get',
params: query
})
}
// 查询标准代码项列表
export function listStdCodeItem(query) {
return request({

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

@ -3,14 +3,14 @@
<div class="form-container">
<el-row :gutter="20">
<!-- 标准代码编号 -->
<el-col :span="12">
<el-col :span="8">
<el-form-item label="标准代码编号" prop="codeNum">
<el-input v-model="form.codeNum" placeholder="请输入标准代码编号" />
</el-form-item>
</el-col>
<!-- 标准代码名称 -->
<el-col :span="12">
<el-col :span="8">
<el-form-item label="标准代码名称" prop="codeName">
<el-input v-model="form.codeName" placeholder="请输入标准代码名称" />
</el-form-item>
@ -19,7 +19,7 @@
<el-row :gutter="20">
<!-- 标准代码类型 -->
<el-col :span="12">
<el-col :span="8">
<el-form-item label="标准代码类型" prop="codeType">
<el-select
v-model="form.codeType"
@ -38,7 +38,7 @@
</el-col>
<!-- 归属系统 -->
<el-col :span="12" v-show="showSys">
<el-col :span="8" v-show="showSys">
<el-form-item label="归属系统" prop="sysId">
<el-select
v-model="form.sysId"
@ -55,6 +55,24 @@
</el-select>
</el-form-item>
</el-col>
<!-- 代码映射 -->
<el-col :span="8" v-show="showSys">
<el-form-item label="代码映射" prop="codeMapId">
<el-select
v-model="form.codeMapId"
placeholder="请选择代码映射"
maxlength="30"
@change="mapChange"
>
<el-option
v-for="dict in companyist"
:key="dict.id"
:label="dict.codeName"
:value="dict.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</div>
@ -131,7 +149,7 @@
</el-table-column>
<el-table-column
label="代码名称"
label="代码含义"
align="center"
prop="codeName"
:editable="true"
@ -141,7 +159,7 @@
v-if="scope.row.isEditing"
v-model="scope.row.codeName"
size="small"
placeholder="请输入代码名称"
placeholder="请输入代码含义"
@blur="handleBlur(scope.row)"
/>
<span v-else>{{ scope.row.codeName }}</span>
@ -149,26 +167,38 @@
</el-table-column>
<el-table-column
label="代码关系"
label="代码映射"
align="center"
prop="代码映射"
>
<template #default="scope">
<el-link
type="primary"
:underline="true"
@click="handleCodeClick(scope.row)"
@click="handleCodeClick(scope.row, scope.$index)"
style="cursor: pointer"
>
查看关系
<span v-if="!scope.row.codeMapName">代码映射</span>
<span v-else>{{ scope.row.codeMapName }}</span>
</el-link>
</template>
</el-table-column>
</el-table>
<el-dialog title="代码映射" v-model="mapVisible" width="1000px">
<!-- 引入第二个页面组件 -->
<code-item-common ref="showCodeDialog" v-if="mapVisible" :codeId="form.codeMapId"/>
<template #footer>
<el-button @click="handleCancel2">取消</el-button>
<el-button type="primary" @click="handleSave2">确定</el-button>
</template>
</el-dialog>
</template>
<script setup>
import { ref, reactive, onMounted, toRefs } from 'vue';
import { listStdCode,addStdCode,updateStdCode } from "@/api/datastd/stdcode"; //
import { listStdCode,listStdCodeCompany,addStdCode,updateStdCode } from "@/api/datastd/stdcode"; //
import codeItemCommon from './codeItemCommon.vue'; //
const { proxy } = getCurrentInstance();
const { std_code_status } = proxy.useDict("std_code_status");
@ -204,12 +234,20 @@ const form = ref({
codeStatus: '',
sysName: '',
classId: 'code',
codeMapId: '',
codeMapName: '',
codeMapNum: '',
sysId: undefined
});
const handleCancel2 = () => {
mapVisible.value = false;
};
const tableData = ref([]);
const companyist = ref([]);
const loading = ref(false);
const showSys = ref(false);
const mapVisible = ref(false);
const multiple = ref(false);
function dataChange(data) {
// dbResourceOldList name
@ -222,6 +260,20 @@ function dataChange(data) {
form.value.sysName = '';
}
}
function mapChange(data) {
const selectedItem = companyist.value.find(item => item.id === data);
console.log("selectmap",selectedItem,data)
if (selectedItem) {
// name form.value.dbRName
form.value.codeMapName = selectedItem.codeName;
form.value.codeMapNum = selectedItem.codeNum;
} else {
// form.value.codeMapName
form.value.codeMapName = '';
}
}
//
if (props.rowData.id) {
form.value = { ...props.rowData };
if (form.value.codeType == "sys") {
@ -235,6 +287,8 @@ if (props.rowData.id) {
const handleRowDblClick = (row) => {
row.isEditing = true;
};
const selectedRow = ref(null); // codeItem
const selectedRowIndex = ref(null); // codeItem
//
const handleBlur = (row) => {
@ -251,54 +305,49 @@ const getList = async () => {
tableData.value = response.rows.map(item => ({ ...item, isEditing: false }));
loading.value = false;
};
const getcompanyList = async () => {
const response = await listStdCodeCompany();
companyist.value = response.rows;
console.log(companyist.value,"companyCodeList")
};
const formRules = reactive({
codeNum: [{ required: true, message: "请输入标准代码编号", trigger: "blur" }],
codeName: [{ required: true, message: "请输入标准代码名称", trigger: "blur" }]
});
const handleCodeClick = (row) => {
console.log('点击了标准代码名称', row);
const handleCodeClick = (row,index) => {
selectedRow.value=row
selectedRowIndex.value=index
if(form.value.codeMapId){
mapVisible.value=true
}else {
proxy.$modal.msgWarning("请选择关联代码!");
}
console.log(index,'点击了标准代码名称', row);
};
const handleSave2 =async () => {
const child = proxy.$refs.showCodeDialog;
console.log(child.selections,"父组件获取")
const mapList=child.selections
if(mapList.length!=1){
proxy.$modal.msgWarning("请选择一条代码进行映射");
}else{
const mapCodeItem=child.selections[0]
if (selectedRow.value) {
tableData.value[selectedRowIndex.value].codeMapId = mapCodeItem.id;
tableData.value[selectedRowIndex.value].codeMapName = mapCodeItem.codeName;
tableData.value[selectedRowIndex.value].codeMapNum = mapCodeItem.codeNum;
tableData.value = [...tableData.value]; // This ensures reactivity is triggered
mapVisible.value = false;
proxy.$modal.msgSuccess("码值映射成功");
}}
};
// const handleSave = async () => {
// // ID
// const params = { code: form.value, code_item_list: tableData.value };
// try {
// let response;
// if (props.rowData.id) {
// // ID updateStdCode
// response = await updateStdCode(params);
// if(response.success){
// proxy.$modal.msgSuccess(response.msg);
// }else{
// proxy.$modal.msgError(response.msg);
// }
// } else {
// // ID addStdCode
// response = await addStdCode(params);
// if(response.success){
// proxy.$modal.msgSuccess(response.msg);
// }else{
// proxy.$modal.msgError(response.msg);
// }
// }
// //
// if (response.success) {
// //
// console.log('');
// } else {
// console.error('');
// }
// } catch (error) {
// console.error(':', error);
// //
// }
// };
const handleSave = async () => {
// ID
const params = { code: form.value, code_item_list: tableData.value };
@ -326,11 +375,9 @@ const handleSave = async () => {
// response.success true false
if (response.success) {
//
console.log('操作成功11111');
return true;
} else {
//
console.error('操作失败22222222');
return false;
}
@ -345,21 +392,8 @@ const handleSelectionChange = (selection) => {
multiple.value = selection.length > 0;
};
//
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
};
//
const resetQuery = () => {
queryParams.value = {
codeNum: '',
pageNum: 1,
pageSize: 100
};
getList();
};
function changeCodeType(data) {
if (data != "company") {
showSys.value = true;
@ -373,7 +407,9 @@ function changeCodeType(data) {
}
//
const handleAdd = () => {
const newRow = {id:'',classId: 'codeItem',parentId: props.rowData.id,codeNum: '', codeName: '', isEditing: true };
const newRow = {id:'',classId: 'codeItem',parentId: props.rowData.id,codeNum: '', codeName: '', codeMapId: '',
codeMapName: '',
codeMapNum: '', isEditing: true };
tableData.value.push(newRow);
};
@ -387,6 +423,7 @@ defineExpose({
});
onMounted(() => {
getList();
getcompanyList()
});
</script>

222
vue-fastapi-frontend/src/views/datastd/stdcode/codeItemCommon.vue

@ -0,0 +1,222 @@
<template>
<el-form :model="form" ref="formRef" label-width="120px" >
<div class="form-container">
<el-row :gutter="20">
<!-- 代码归属 -->
<el-col :span="8">
<span class="info-text">代码归属: {{ form.sysName || '暂无代码归属' }}</span>
</el-col>
<!-- 代码编号 -->
<el-col :span="8">
<span class="info-text">代码编号: {{ form.codeNum || '暂无代码编号' }}</span>
</el-col>
<!-- 代码名称 -->
<el-col :span="8">
<span class="info-text">代码名称: {{ form.codeName || '暂无代码名称' }}</span>
</el-col>
</el-row>
</div>
<!-- 查询表单 -->
<div class="query-form-container">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="代码值/名称" prop="codeNum">
<el-input
v-model="queryParams.codeNum"
placeholder="请输入标准代码编号"
clearable
style="width: 220px"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
</el-form>
<!-- 表格展示 -->
<el-table
v-loading="loading"
:data="tableData"
@selection-change="handleSelectionChange"
border
style="width: 100%"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="代码值"
align="center"
prop="codeNum"
:editable="true"
>
</el-table-column>
<el-table-column
label="代码含义"
align="center"
prop="codeName"
:editable="true"
>
</el-table-column>
</el-table>
</template>
<script setup>
import { ref, reactive, onMounted, toRefs } from 'vue';
import { listStdCode,getStdCode} from "@/api/datastd/stdcode"; //
const { proxy } = getCurrentInstance();
const { std_code_status } = proxy.useDict("std_code_status");
const props = defineProps({
codeId: {
type: Object,
required: false
},
});
const queryParams = ref({
codeNum: '',
parentId: props.codeId,
codeName: '',
codeType: '',
sysName: '',
classId: 'codeItem',
sysId: '',
pageNum: 1,
pageSize: 100
});
const form = ref({
id: "",
codeNum: '',
codeName: '',
codeType: 'company',
codeStatus: '',
sysName: '',
classId: 'code',
codeMapId: '',
codeMapName: '',
codeMapNum: '',
sysId: undefined
});
const tableData = ref([]);
const selections = ref([]);
const loading = ref(false);
const showSys = ref(false);
const multiple = ref(false);
//
if (props.codeId) {
form.value = { ...props.rowData };
if (form.value.codeType == "sys") {
showSys.value = true;
} else {
showSys.value = false;
}
}
//
const getList = async () => {
loading.value = true;
console.log(queryParams.value,"queryParams.value")
const response = await listStdCode(queryParams.value);
tableData.value = response.rows.map(item => ({ ...item}));
loading.value = false;
};
const handleCodeClick = (row) => {
console.log('点击了标准代码名称', row);
};
const handleSelectionChange = (selection) => {
multiple.value = selection.length > 0;
selections.value = selection; //
console.log(selections.value,"子页面选中")
};
//
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
};
//
const resetQuery = () => {
queryParams.value = {
parentId:props.codeId,
pageNum: 1,
pageSize: 100
};
};
defineExpose({
selections
});
onMounted(() => {
getStdCode(props.codeId).then(response => {
form.value = response.data;
});
getList();
// getcompanyList()
});
</script>
<style scoped>
.app-container {
padding: 20px;
}
.query-form-container {
margin-bottom: 20px;
}
.el-table .el-input {
width: 100%;
}
.form-container {
margin-bottom: 20px;
}
.info-text {
font-size: 18px; /* 调整字体大小 */
line-height: 1.6; /* 行高,使文字更易于阅读 */
color: #333; /* 字体颜色 */
font-weight: 500; /* 设置字体加粗 */
display: inline-block;
width: 100%;
}
</style>

269
vue-fastapi-frontend/src/views/datastd/stdcode/codeMap.vue

@ -0,0 +1,269 @@
<template>
<el-form :model="form" ref="formRef" label-width="120px" >
<div class="form-container">
<el-row :gutter="20">
<!-- 代码归属 -->
<el-col :span="8">
<span class="info-text">代码归属: {{ form.sysName || '暂无代码归属' }}</span>
</el-col>
<!-- 代码编号 -->
<el-col :span="8">
<span class="info-text">代码编号: {{ form.codeNum || '暂无代码编号' }}</span>
</el-col>
<!-- 代码名称 -->
<el-col :span="8">
<span class="info-text">代码名称: {{ form.codeName || '暂无代码名称' }}</span>
</el-col>
</el-row>
</div>
<!-- 查询表单 -->
<!-- <div class="query-form-container">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="代码值/名称" prop="codeNum">
<el-input
v-model="queryParams.codeNum"
placeholder="请输入标准代码编号"
clearable
style="width: 220px"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div> -->
</el-form>
<!-- 表格展示 -->
<el-table
v-loading="loading"
:data="tableData"
@selection-change="handleSelectionChange"
border
style="width: 100%"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="源系统"
align="center"
prop="targetSysName"
>
</el-table-column>
<el-table-column
label="系统级代码编号"
align="center"
prop="targetCodeNum"
>
</el-table-column>
<el-table-column
label="系统级代码名称"
align="center"
prop="targetCodeName"
>
</el-table-column>
<el-table-column
label="系统级代码"
align="center"
prop="targetCodeNumItem"
>
</el-table-column>
<el-table-column
label="系统级代码含义"
align="center"
prop="targetCodeNameItem"
>
</el-table-column>
<el-table-column
label="公司级代码名称"
align="center"
prop="resourceCodeNum"
>
</el-table-column>
<el-table-column
label="公司级代码编号"
align="center"
prop="resourceCodeName"
>
</el-table-column>
<el-table-column
label="公司级代码"
align="center"
prop="resourceCodeNumItem"
>
</el-table-column>
<el-table-column
label="公司级代码含义"
align="center"
prop="resourceCodeNameItem"
>
</el-table-column>
</el-table>
</template>
<script setup>
import { ref, reactive, onMounted, toRefs } from 'vue';
import { listStdCodemap,getStdCode} from "@/api/datastd/stdcode"; //
const { proxy } = getCurrentInstance();
const { std_code_status } = proxy.useDict("std_code_status");
const props = defineProps({
codeId: {
type: Object,
required: false
},
});
const queryParams = ref({
codeNum: '',
parentId: props.codeId,
codeName: '',
codeType: '',
sysName: '',
classId: 'codeItem',
sysId: '',
pageNum: 1,
pageSize: 100
});
const form = ref({
id: "",
codeNum: '',
codeName: '',
codeType: 'company',
codeStatus: '',
sysName: '',
classId: 'code',
codeMapId: '',
codeMapName: '',
codeMapNum: '',
sysId: undefined
});
const tableData = ref([]);
const selections = ref([]);
const loading = ref(false);
const showSys = ref(false);
const multiple = ref(false);
//
if (props.codeId) {
form.value = { ...props.rowData };
if (form.value.codeType == "sys") {
showSys.value = true;
} else {
showSys.value = false;
}
}
//
const getList = async () => {
loading.value = true;
console.log(queryParams.value,"queryParams.value")
const response = await listStdCodemap(queryParams.value);
tableData.value = response.rows.map(item => ({ ...item}));
loading.value = false;
};
const handleCodeClick = (row) => {
console.log('点击了标准代码名称', row);
};
const handleSelectionChange = (selection) => {
multiple.value = selection.length > 0;
selections.value = selection; //
console.log(selections.value,"子页面选中")
};
//
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
};
//
const resetQuery = () => {
queryParams.value = {
parentId:props.codeId,
pageNum: 1,
pageSize: 100
};
};
defineExpose({
selections
});
onMounted(() => {
getStdCode(props.codeId).then(response => {
form.value = response.data;
queryParams.value.codeType=form.value.codeType
getList();
});
// getcompanyList()
});
</script>
<style scoped>
.app-container {
padding: 20px;
}
.query-form-container {
margin-bottom: 20px;
}
.el-table .el-input {
width: 100%;
}
.form-container {
margin-bottom: 20px;
}
.info-text {
font-size: 18px; /* 调整字体大小 */
line-height: 1.6; /* 行高,使文字更易于阅读 */
color: #333; /* 字体颜色 */
font-weight: 500; /* 设置字体加粗 */
display: inline-block;
width: 100%;
}
</style>

37
vue-fastapi-frontend/src/views/datastd/stdcode/index.vue

@ -119,13 +119,15 @@
</el-table-column>
<el-table-column label="代码关系" align="center" >
<template #default="scope">
<el-link
type="primary"
:underline="true"
@click="handleCodeClick(scope.row)"
@click="handleMapCodeClick(scope.row)"
style="cursor: pointer"
>
查看关系
<span v-if="!scope.row.codeMapName||scope.row.codeType=='company'">代码映射</span>
<span v-else>{{ scope.row.codeMapName }}</span>
</el-link>
</template>
</el-table-column>
@ -152,6 +154,16 @@
<el-button type="primary" @click="handleSave2">确定</el-button>
</template>
</el-dialog>
<el-dialog v-model="codeVisible" width="1000px">
<!-- 引入第二个页面组件 -->
<code-item-common ref="showCodeDialog" v-if="codeVisible" :codeId="codeMapId"/>
</el-dialog>
<el-dialog v-model="mapVisible" width="1200px">
<!-- 引入第三个页面组件 -->
<code-map ref="showMapCodeDialog" v-if="mapVisible" :codeId="codeMapId"/>
</el-dialog>
</div>
</template>
@ -161,6 +173,8 @@ import { listStdCode, addStdCode, getStdCode, updateStdCode, deleteStdCode } fro
import { datasourcetree } from "@/api/meta/metatask";
import { ElLink } from 'element-plus';
import CodeItem from './codeItem.vue'; //
import codeItemCommon from './codeItemCommon.vue'; //
import codeMap from './codeMap'; //
const { proxy } = getCurrentInstance();
@ -229,13 +243,23 @@ const getList = async () => {
total.value = response.total;
loading.value = false;
};
const codeVisible = ref(false);
const mapVisible = ref(false);
const codeMapId = ref(null);
//
const handleCodeClick = (row) => {
selectedRow.value = row; //
formData.value = { ...row }; //
dialogVisible2.value = true; //
codeMapId.value=row.id
console.log(codeMapId.value,"ddddddd")
codeVisible.value = true;
};
const handleMapCodeClick = (row) => {
codeMapId.value=row.id
console.log(codeMapId.value,"ddddddd2222")
mapVisible.value = true;
};
function handleSelectionChange(selection) {
ids.value = selection.map(item => item.id);
codeNums.value = selection.map(item => item.codeNum);
@ -300,9 +324,8 @@ const handleRemove = (row) => {
const handleSave2 =async () => {
const child = proxy.$refs.editCodeDialog;
console.log(Object.getOwnPropertyNames(child)); //
let isSuccess= await child.handleSave()
console.log(isSuccess,"ssssssssssss")
if(isSuccess){
dialogVisible2.value = false;

Loading…
Cancel
Save