si@aidatagov.com 1 month ago
parent
commit
88a60a5c46
  1. 8
      vue-fastapi-backend/module_admin/controller/meta_controller.py
  2. 133
      vue-fastapi-backend/module_admin/dao/meta_dao.py
  3. 29
      vue-fastapi-backend/module_admin/entity/do/meta_do.py
  4. 117
      vue-fastapi-backend/module_admin/service/meta_service.py
  5. 9
      vue-fastapi-frontend/src/views/dataint/dataquery/index.vue
  6. 353
      vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
  7. 185
      vue-fastapi-frontend/src/views/system/flow/index.vue

8
vue-fastapi-backend/module_admin/controller/meta_controller.py

@ -47,3 +47,11 @@ async def getMetaInfoApplyBusinessDetail(request: Request,
query_db: AsyncSession = Depends(get_db)):
result = await MetaService.get_meta_apply_detail_services(query_db, businessId)
return ResponseUtil.success(data=result)
@metaController.get("/meta/getTable/{tableId}")
async def getTableByTableId(request: Request,
tableId: int,
query_db: AsyncSession = Depends(get_db)):
result = await MetaService.get_table_by_id(query_db, tableId)
return ResponseUtil.success(data=result)

133
vue-fastapi-backend/module_admin/dao/meta_dao.py

@ -2,20 +2,78 @@ from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select, text, cast, Integer, and_, or_, outerjoin, func, join, update, desc
from module_admin.entity.vo.meta_vo import MetaPageObject, MetaColObject
from module_admin.entity.do.meta_do import MetadataExtractInfo, MetadataSuppInfo, MetadataFldTabExtractInfo, \
MetadataFldSuppInfo, MetadataClas, MetadataSuppInfoVett, MetadataFldSuppInfoVett
import json
import re
from utils.time_format_util import object_format_datetime, list_format_datetime, format_datetime_dict_list
from datetime import datetime, time
from typing import Union, List
from utils.log_util import logger
MetadataFldSuppInfo, MetadataClas, MetadataSuppInfoVett, MetadataFldSuppInfoVett, MetaBatchTabClas, MetaBatchFldClas
from utils.common_util import CamelCaseUtil
import uuid
import datetime
from utils.page_util import PageUtil
class MetaDao:
@classmethod
async def get_meta_tab_clas(cls, db: AsyncSession, sysCode: str, mdlName: str, tabName: str):
query_result = (
(
await db.execute(
select(
MetaBatchTabClas.onum,
MetaBatchTabClas.ssys_cd,
MetaBatchTabClas.data_whs_name,
MetaBatchTabClas.mdl_name,
MetaBatchTabClas.tab_no,
MetaBatchTabClas.tab_eng_name,
MetaBatchTabClas.clas_onum,
MetaBatchTabClas.clas_value,
MetadataClas.clas_pri_clas,
MetadataClas.clas_scd_clas,
MetadataClas.clas_thre_clas,
MetadataClas.clas_eff_flag,
MetadataClas.rec_subm_prsn,
MetadataClas.clas_name
).join(
MetadataClas, MetaBatchTabClas.clas_onum == MetadataClas.clas_onum
)
.where(MetaBatchTabClas.ssys_cd == sysCode,
MetaBatchTabClas.mdl_name == mdlName,
MetaBatchTabClas.tab_eng_name == tabName).distinct()
)
).fetchall()
)
return query_result
@classmethod
async def get_meta_fld_clas(cls, db: AsyncSession, sysCode: str, mdlName: str, tabName: str, fldName: str):
query_result = (
(
await db.execute(
select(
MetaBatchFldClas.onum,
MetaBatchFldClas.ssys_cd,
MetaBatchFldClas.data_whs_name,
MetaBatchFldClas.mdl_name,
MetaBatchFldClas.tab_no,
MetaBatchFldClas.tab_eng_name,
MetaBatchFldClas.fld_eng_name,
MetaBatchFldClas.clas_onum,
MetaBatchFldClas.clas_value,
MetadataClas.clas_pri_clas,
MetadataClas.clas_scd_clas,
MetadataClas.clas_thre_clas,
MetadataClas.clas_eff_flag,
MetadataClas.rec_subm_prsn,
MetadataClas.clas_name
).join(
MetadataClas, MetaBatchFldClas.clas_onum == MetadataClas.clas_onum
)
.where(MetaBatchFldClas.ssys_cd == sysCode,
MetaBatchFldClas.mdl_name == mdlName,
MetaBatchFldClas.tab_eng_name == tabName,
MetaBatchFldClas.fld_eng_name == fldName).distinct()
)
).fetchall()
)
return query_result
@classmethod
async def get_meta_rel_list(cls, db: AsyncSession, query_object: MetaPageObject):
"""
@ -45,7 +103,7 @@ class MetaDao:
MetadataSuppInfo.rec_stat.label('supp_rec_stat'),
MetadataSuppInfo.tab_clas,
MetadataSuppInfo.rec_subm_prsn,
MetadataSuppInfo.upd_time.label('supp_upd_time')
MetadataSuppInfo.upd_time.label('supp_upd_time'),
).join(MetadataSuppInfo,
and_(
MetadataExtractInfo.ssys_cd == MetadataSuppInfo.ssys_cd,
@ -379,3 +437,60 @@ class MetaDao:
)
return query_result
@classmethod
async def get_meta_table_by_id(cls, tableId: int, db: AsyncSession):
"""
根据查询参数获取用户列表信息
"""
# 主查询
result = (await db.execute(
select(
MetadataExtractInfo.onum.label('extract_onum'),
MetadataExtractInfo.extract_ver_num,
MetadataExtractInfo.ver_desc.label('extract_ver_desc'),
MetadataExtractInfo.ssys_cd,
MetadataExtractInfo.data_whs_name,
MetadataExtractInfo.mdl_name,
MetadataExtractInfo.tab_no,
MetadataExtractInfo.tab_type,
MetadataExtractInfo.tab_eng_name,
MetadataExtractInfo.tab_cn_name,
MetadataExtractInfo.tab_rec_num,
MetadataExtractInfo.upd_time.label('extract_upd_time'),
MetadataSuppInfo.onum.label('supp_onum'),
MetadataSuppInfo.crrct_ver_num.label('supp_crrct_ver_num'),
MetadataSuppInfo.tab_crrct_name,
MetadataSuppInfo.tab_desc,
MetadataSuppInfo.pic,
MetadataSuppInfo.gov_flag,
MetadataSuppInfo.rec_stat.label('supp_rec_stat'),
MetadataSuppInfo.tab_clas,
MetadataSuppInfo.rec_subm_prsn,
MetadataSuppInfo.upd_time.label('supp_upd_time'),
).join(MetadataSuppInfo,
and_(
MetadataExtractInfo.ssys_cd == MetadataSuppInfo.ssys_cd,
MetadataExtractInfo.mdl_name == MetadataSuppInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataSuppInfo.tab_eng_name
), isouter=True)
.join(
MetadataFldTabExtractInfo,
and_(
MetadataExtractInfo.ssys_cd == MetadataFldTabExtractInfo.ssys_cd,
MetadataExtractInfo.mdl_name == MetadataFldTabExtractInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataFldTabExtractInfo.tab_eng_name
), isouter=True)
.join(
MetadataFldSuppInfo,
and_(
MetadataExtractInfo.ssys_cd == MetadataFldSuppInfo.ssys_cd,
MetadataExtractInfo.mdl_name == MetadataFldSuppInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name
), isouter=True)
.where(
MetadataExtractInfo.onum == tableId
).distinct()
)).first()
return CamelCaseUtil.transform_result(result)

29
vue-fastapi-backend/module_admin/entity/do/meta_do.py

@ -156,3 +156,32 @@ class MetadataFldSuppInfoVett(Base):
apply_time = Column(String(255, collation='utf8_general_ci'), comment='申请时间')
apply_status = Column(String(255, collation='utf8_general_ci'), comment='申请状态')
oldColumnData = Column(Text, comment='修改前字段信息')
class MetaBatchTabClas(Base):
"""表格标签表"""
__tablename__ = 't_batch_tab_clas'
onum = Column(Integer, primary_key=True, comment='序号(主键自增)')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='源系统代码')
data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='数据库名称')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模式名称')
tab_no = Column(Integer, comment='表编号')
tab_eng_name = Column(String(200, collation='utf8_general_ci'), comment='表英文名称')
clas_onum = Column(String(200, collation='utf8_general_ci'), comment='标签序号')
clas_value = Column(String(200, collation='utf8_general_ci'), comment='标签值')
class MetaBatchFldClas(Base):
"""字段标签表"""
__tablename__ = 't_batch_fld_clas'
onum = Column(Integer, primary_key=True, comment='序号(主键自增)')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='源系统代码')
data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='数据库名称')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模式名称')
tab_no = Column(Integer, comment='表编号')
tab_eng_name = Column(String(200, collation='utf8_general_ci'), comment='表英文名称')
fld_eng_name = Column(String(200, collation='utf8_general_ci'), comment='字段英文名称')
clas_onum = Column(String(200, collation='utf8_general_ci'), comment='标签序号')
clas_value = Column(String(200, collation='utf8_general_ci'), comment='标签值')

117
vue-fastapi-backend/module_admin/service/meta_service.py

@ -37,6 +37,11 @@ class MetaService:
# 0,正常,1已发布,2审核中,3已审核,4已作废
if 'admin' in current_user.roles:
meta_rel_list = await MetaDao.get_meta_rel_list(result_db, query_object)
if meta_rel_list and len(meta_rel_list.rows) > 0:
for table in meta_rel_list.rows:
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysCd'], table['mdlName'],
table['tabEngName'])
table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
return meta_rel_list
else:
# meta_rel_list = MetaDao.get_meta_rel_list(result_db, query_object, data_scope_sql)
@ -45,7 +50,12 @@ class MetaService:
@classmethod
async def get_meta_col_list_services(cls, result_db: AsyncSession, query_object: MetaColObject):
meta_result = await MetaDao.get_meta_col_list(result_db, query_object)
return cls.convert_json_keys(meta_result)
result = CamelCaseUtil.transform_result(meta_result)
for column in result:
fld_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysCd'], column['mdlName'],
column['tabEngName'], column['fldEngName'])
column['batchFldClas'] = CamelCaseUtil.transform_result(fld_list)
return result
@classmethod
async def get_meta_clas_list_services(cls, result_db: AsyncSession):
@ -117,76 +127,83 @@ class MetaService:
@classmethod
def castToTableStr(cls, table: MetadataSuppInfo, tableInfo: MetadataExtractInfo):
tableDict = dict(
onum=table.onum,
crrctVerNum=table.crrct_ver_num,
ssysCd=table.ssys_cd,
mdlName=table.mdl_name,
tabEngName=table.tab_eng_name,
onum=tableInfo.onum,
crrctVerNum=table.crrct_ver_num if table else None,
ssysCd=tableInfo.ssys_cd,
mdlName=tableInfo.mdl_name,
tabEngName=tableInfo.tab_eng_name,
tabCnName=tableInfo.tab_cn_name,
tabType=tableInfo.tab_type,
tabRecNum=tableInfo.tab_rec_num,
tabCrrctName=table.tab_crrct_name,
tabDesc=table.tab_desc,
pic=table.pic,
govFlag=table.gov_flag,
recStat=table.rec_stat,
tabClas=table.tab_clas,
recSubmPrsn=table.rec_subm_prsn,
updTime=table.upd_time
tabCrrctName=table.tab_crrct_name if table else None,
tabDesc=table.tab_desc if table else None,
pic=table.pic if table else None,
govFlag=table.gov_flag if table else None,
recStat=table.rec_stat if table else None,
tabClas=table.tab_clas if table else None,
recSubmPrsn=table.rec_subm_prsn if table else None,
updTime=table.upd_time if table else None
)
return json.dumps(tableDict)
@classmethod
def castToColumnStr(cls, column: MetadataFldSuppInfo, columnInfo: MetadataFldTabExtractInfo):
columnDict = dict(
onum=column.onum,
crrctVerNum=column.crrct_ver_num,
ssysCd=column.ssys_cd,
mdlName=column.mdl_name,
tabEngName=column.tab_eng_name,
fldEngName=column.fld_eng_name,
onum=columnInfo.onum,
crrctVerNum=column.crrct_ver_num if column else None,
ssysCd=columnInfo.ssys_cd,
mdlName=columnInfo.mdl_name,
tabEngName=columnInfo.tab_eng_name,
fldEngName=columnInfo.fld_eng_name,
fldCnName=columnInfo.fld_cn_name,
fldType=columnInfo.fld_type,
pkFlag=columnInfo.pk_flag,
requireFlag=columnInfo.require_flag,
idxFlag=columnInfo.idx_flag,
fldCrrctName=column.fld_crrct_name,
crrctPkFlag=column.crrct_pk_flag,
fldDesc=column.fld_desc,
pic=column.pic,
fldClas=column.fld_clas,
fldNullRate=column.fld_null_rate,
recStat=column.rec_stat,
updTime=column.upd_time
fldCrrctName=column.fld_crrct_name if column else None,
crrctPkFlag=column.crrct_pk_flag if column else None,
fldDesc=column.fld_desc if column else None,
pic=column.pic if column else None,
fldClas=column.fld_clas if column else None,
fldNullRate=column.fld_null_rate if column else None,
recStat=column.rec_stat if column else None,
updTime=column.upd_time if column else None
)
return json.dumps(columnDict)
@classmethod
def snake_to_camel(cls, snake_str: str):
# 将字符串按下划线分割成列表
components = snake_str.split('_')
# 第一个单词保持小写,后续单词首字母大写
camel_str = components[0] + ''.join(word.capitalize() for word in components[1:])
return camel_str
@classmethod
def convert_json_keys(cls, data):
if isinstance(data, dict):
# 如果数据是字典,则转换键名并递归处理值
return {cls.snake_to_camel(k): cls.convert_json_keys(v) for k, v in data.items()}
elif isinstance(data, list):
# 如果数据是列表,则递归处理列表中的每个元素
return [cls.convert_json_keys(element) for element in data]
else:
# 如果数据不是字典或列表,则直接返回(即基本数据类型,如字符串、数字等)
return data
@classmethod
async def get_meta_apply_detail_services(cls, result_db: AsyncSession, businessId: str):
tableData = await MetaDao.get_supp_table_vett_by_id(businessId, result_db)
table = CamelCaseUtil.transform_result(tableData)
clas_list = await MetaDao.get_meta_tab_clas(result_db, tableData.ssys_cd, tableData.mdl_name,
tableData.tab_eng_name)
table['batchTabClas'] = CamelCaseUtil.transform_result(clas_list)
columnData = await MetaDao.get_supp_column_vett_by_tableInfo(result_db, tableData)
column_list = CamelCaseUtil.transform_result(columnData)
for column in column_list:
col_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysCd'], column['mdlName'],
column['tabEngName'], column['fldEngName'])
column['batchColClas'] = CamelCaseUtil.transform_result(col_list)
result = dict(
table=tableData,
column=columnData
table=table,
column=column_list
)
return result
@classmethod
async def get_table_by_id(cls, result_db: AsyncSession, tableId: int):
table = await MetaDao.get_meta_table_by_id(tableId, result_db)
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysCd'], table['mdlName'],
table['tabEngName'])
table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
colQuery = MetaColObject()
colQuery.ssys_cd = table['ssysCd']
colQuery.mdl_name = table['mdlName']
colQuery.tab_name = table['tabEngName']
columnList = await MetaDao.get_meta_col_list(result_db, colQuery)
for column in columnList:
col_list = await MetaDao.get_meta_fld_clas(result_db, column['ssys_cd'], column['mdl_name'],
column['tab_eng_name'], column['fld_eng_name'])
column['batchColClas'] = CamelCaseUtil.transform_result(col_list)
table['columnList'] = CamelCaseUtil.transform_result(columnList)
return table

9
vue-fastapi-frontend/src/views/dataint/dataquery/index.vue

@ -0,0 +1,9 @@
<template>
<div>数据问答</div>
</template>
<script setup>
</script>
<style scoped lang="scss">
</style>

353
vue-fastapi-frontend/src/views/meta/metaInfo/index.vue

@ -101,7 +101,18 @@
</template>
</el-table-column>
<el-table-column label="对象中文名" width="100" align="center" prop="tabCnName"></el-table-column>
<el-table-column label="对象标签" width="250" align="center" prop="clasNames"></el-table-column>
<el-table-column label="对象标签" width="200" align="center" prop="batchTabClas">
<template #default="scope">
<el-popover v-for="item in scope.row.tempTabClas" placement="right" width="auto" trigger="hover">
<template #reference>
<el-tag v-if="item.clasEffFlag && item.clasEffFlag === '1'">{{item.clasName}}</el-tag>
</template>
<div>
<div style="margin: 5px" v-for="item in scope.row.showTabClas"><el-tag v-if="item.clasEffFlag && item.clasEffFlag === '1'">{{item.clasName + ":" + item.clasValue}}</el-tag></div>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="记录数" width="80" align="center" prop="tabRecNum"></el-table-column>
<el-table-column label="补录对象名称" width="150" align="center" prop="tabCrrctName"></el-table-column>
<el-table-column label="补录对象描述" width="150" align="center" prop="tabDesc"></el-table-column>
@ -203,9 +214,13 @@
<el-divider content-position="left">对象标签集合
<el-button icon="Plus" type="primary" text @click="openTableTagsDialog">新增</el-button>
</el-divider>
<el-tag style="margin-left: 10px;margin-top: 10px" v-for="tag in currentMetaData.tags" :key="tag.tagName +'-'+tag.tagValue" size="large" closable type="primary" @close="handleTableTagClose(tag)">
{{ tag.tagName }}
</el-tag>
<template v-for="(tag,index) in currentMetaData.tags">
<el-tag style="margin-left: 10px;margin-top: 10px" :key="tag.clasName +'-'+tag.clasValue"
v-if="tag.clasEffFlag && tag.clasEffFlag === '1'"
size="large" closable type="primary" @close="handleTableTagClose(index)">
{{ tag.clasName}}
</el-tag>
</template>
</el-col>
</el-row>
<el-row :gutter="20">
@ -242,45 +257,44 @@
</el-table-column>
<el-table-column label="字段补录名" width="150" align="center" prop="fldCrrctName">
<template #default="scope">
<span v-if="oldColumnsData[scope.$index].fldCrrctName" style="color:#67C23A">{{scope.row.fldCrrctName}}</span>
<span v-else>{{scope.row.fldCrrctName}}</span>
<span>{{scope.row.fldCrrctName}}</span>
</template>
</el-table-column>
<el-table-column label="补录主键" align="center" prop="crrctPkFlag">
<template #default="scope">
<span v-if="oldColumnsData[scope.$index].crrctPkFlag" style="color:#67C23A">{{scope.row.crrctPkFlag}}</span>
<span v-else>{{scope.row.crrctPkFlag}}</span>
<span>{{scope.row.crrctPkFlag}}</span>
</template>
</el-table-column>
<el-table-column label="补录字段描述" align="center" prop="fldDesc">
<template #default="scope">
<span v-if="oldColumnsData[scope.$index].fldDesc" style="color:#67C23A">{{scope.row.fldDesc}}</span>
<span v-else>{{scope.row.fldDesc}}</span>
<span>{{scope.row.fldDesc}}</span>
</template>
</el-table-column>
<!-- <el-table-column label="状态" width="120" align="center" prop="suppRecStat">-->
<!-- <template #default="scope">-->
<!-- <span v-if="oldColumnsData[scope.$index].suppRecStat" style="color:#67C23A">{{scope.row.suppRecStat}}</span>-->
<!-- <span v-else>{{scope.row.suppRecStat}}</span>-->
<!-- <span>{{scope.row.suppRecStat}}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="负责人" align="center" prop="pic">
<template #default="scope">
<span v-if="oldColumnsData[scope.$index].pic" style="color:#67C23A">{{scope.row.pic}}</span>
<span v-else>{{scope.row.pic}}</span>
<span>{{scope.row.pic}}</span>
</template>
</el-table-column>
<el-table-column label="字段标签" width="150" align="center" prop="fldClas">
<template #default="scope">
<template v-if="scope.row.fldClas && scope.row.fldClas !== ''">
<el-tag v-for="item in JSON.parse(scope.row.fldClas)">{{item.tagName}}</el-tag>
</template>
<el-popover v-for="item in scope.row.tempFldClas" placement="right" width="auto" trigger="hover">
<template #reference>
<el-tag v-if="item.clasEffFlag === '1'">{{item.clasName}}</el-tag>
</template>
<div>
<div style="margin: 5px" v-for="item in scope.row.showFldClas"><el-tag v-if="item.clasEffFlag === '1'">{{item.clasName + ":" + item.clasValue}}</el-tag></div>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="字段空值率" align="center" prop="fldNullRate">
<template #default="scope">
<span v-if="oldColumnsData[scope.$index].fldNullRate" style="color:#67C23A">{{scope.row.fldNullRate}}</span>
<span v-else>{{scope.row.fldNullRate}}</span>
<span>{{scope.row.fldNullRate}}</span>
</template>
</el-table-column>
<el-table-column label="引用字典/标准" align="center"></el-table-column>
@ -294,8 +308,8 @@
</el-table>
</div>
</el-tab-pane>
<el-tab-pane label="业务关系" name="businessRelation">Config</el-tab-pane>
<el-tab-pane label="血缘关系" name="bloodRelation">Role</el-tab-pane>
<el-tab-pane label="业务关系" name="businessRelation">业务关系</el-tab-pane>
<el-tab-pane label="血缘关系" name="bloodRelation">血缘关系</el-tab-pane>
<el-tab-pane label="存储过程" name="proc">
<SQLCodeMirror :data="procStr"></SQLCodeMirror>
</el-tab-pane>
@ -346,29 +360,35 @@
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="tableTags">
<el-table-column label="标签编号" width="80" align="center" prop="tagOnum"></el-table-column>
<el-table-column label="标签名称" width="120" align="center" prop="tagName"></el-table-column>
<el-table-column label="标签值" width="170" align="center" prop="tagValue" >
<el-table-column label="标签编号" width="80" align="center" prop="onum"></el-table-column>
<el-table-column label="标签名称" width="120" align="center" prop="clasName"></el-table-column>
<el-table-column label="标签值" width="170" align="center" prop="clasValue" >
<template #default="scope">
<el-input v-model="scope.row.tagValue"></el-input>
<el-input @input="changeTagValue(scope.row)" v-model="scope.row.clasValue" :disabled="scope.row.clasEffFlag !== '1'"></el-input>
</template>
</el-table-column>
<el-table-column label="标签值说明" width="170" align="center" prop="tagRemark">
<template #default="scope">
<el-input v-model="scope.row.tagRemark"></el-input>
<el-input @input="changeTagValue(scope.row)" v-model="scope.row.tagRemark" :disabled="scope.row.clasEffFlag !== '1'"></el-input>
</template>
</el-table-column>
<el-table-column label="标签状态" align="center" prop="clasEffFlag">
<template #default="scope">
<span v-if="scope.row.clasEffFlag === '1'" style="color:#67C23A;">{{'有效'}}</span>
<span v-else style="color: #F56C6C">{{'已删除'}}</span>
</template>
</el-table-column>
<el-table-column label="标签状态" align="center" prop="tagStatus">
<el-table-column label="设置方式" width="80" align="center" prop="tagSource">
<template #default="scope">
<el-input v-model="scope.row.tagStatus"></el-input>
<span>{{scope.row.tagSource ? scope.row.tagSource:'自动'}}</span>
</template>
</el-table-column>
<el-table-column label="设置方式" width="80" align="center" prop="tagSource"></el-table-column>
<el-table-column label="设置对象" width="80" align="center" prop="setUser"></el-table-column>
<el-table-column label="设置时间" width="150" align="center" prop="setTime"></el-table-column>
<el-table-column label="操作" align="center" width="80">
<template #default="scope">
<el-button link type="primary" icon="Delete" @click.prevent="deleteTableTag(scope.$index)">删除</el-button>
<el-button v-if="scope.row.clasEffFlag === '1'" link type="danger" icon="Delete" @click.prevent="deleteTag(scope.row)">删除</el-button>
<el-button v-if="scope.row.clasEffFlag === '0'" link type="success" icon="RefreshLeft" @click.prevent="revertTag(scope.row)">恢复</el-button>
</template>
</el-table-column>
</el-table>
@ -475,30 +495,35 @@
<el-button type="primary" icon="Plus" @click="addColumnTag">新增</el-button>
</el-form-item>
</el-form>
<el-table :data="currentColumnData.fldClas">
<el-table-column label="标签编号" width="80" align="center" prop="tagOnum"></el-table-column>
<el-table-column label="标签名称" width="120" align="center" prop="tagName"></el-table-column>
<el-table-column label="标签值" width="170" align="center" prop="tagValue" >
<el-table :data="currentColumnData.showFldClas">
<el-table-column label="标签编号" width="80" align="center" prop="onum"></el-table-column>
<el-table-column label="标签名称" width="120" align="center" prop="clasName"></el-table-column>
<el-table-column label="标签值" width="170" align="center" prop="clasValue" >
<template #default="scope">
<el-input v-model="scope.row.tagValue"></el-input>
<el-input :disabled="scope.row.clasEffFlag === '0'" @input="changeTagValue(scope.row)" v-model="scope.row.clasValue"></el-input>
</template>
</el-table-column>
<el-table-column label="标签值说明" width="170" align="center" prop="tagRemark">
<template #default="scope">
<el-input v-model="scope.row.tagRemark"></el-input>
<el-input :disabled="scope.row.clasEffFlag === '0'" @input="changeTagValue(scope.row)" v-model="scope.row.tagRemark"></el-input>
</template>
</el-table-column>
<el-table-column label="标签状态" align="center" prop="tagStatus">
<el-table-column label="标签状态" align="center" prop="clasEffFlag">
<template #default="scope">
<el-input v-model="scope.row.tagStatus"></el-input>
<span>{{ (scope.row.clasEffFlag === '1')?'有效':'无效' }}</span>
</template>
</el-table-column>
<el-table-column label="设置方式" width="80" align="center" prop="tagSource">
<template #default="scope">
<span>{{scope.row.tagSource?scope.row.tagSource:'自动'}}</span>
</template>
</el-table-column>
<el-table-column label="设置方式" width="80" align="center" prop="tagSource"></el-table-column>
<el-table-column label="设置对象" width="80" align="center" prop="setUser"></el-table-column>
<el-table-column label="设置时间" width="150" align="center" prop="setTime"></el-table-column>
<el-table-column label="操作" align="center" width="80">
<template #default="scope">
<el-button link type="primary" icon="Delete" @click.prevent="deleteColumnTag(scope.$index)">删除</el-button>
<el-button v-if="scope.row.clasEffFlag === '1'" link type="danger" icon="Delete" @click.prevent="deleteTag(scope.row)">删除</el-button>
<el-button v-if="scope.row.clasEffFlag === '0'" link type="success" icon="RefreshLeft" @click.prevent="revertTag(scope.row)">恢复</el-button>
</template>
</el-table-column>
</el-table>
@ -554,7 +579,6 @@
const metaClasList = ref([]);
const columnInfoDialog = ref(false);
const currentColumnData = ref({});
const oldColumnsData = ref([]);
const currentTableTag = ref({
"clasThreClas": "",
"clasOnum": null,
@ -595,57 +619,116 @@
tableTagDialog.value = false
}
function confirmColumn(){
let changed = false
for (let i = 0; i < columnList.value.length; i++) {
if (columnList.value[i].fldEngName === currentColumnData.value.fldEngName){
if (columnList.value[i].fldCrrctName !== currentColumnData.value.fldCrrctName){
columnList.value[i].fldCrrctName = currentColumnData.value.fldCrrctName
oldColumnsData.value[i].fldCrrctName = true
changed = true
}
if (columnList.value[i].fldDesc !== currentColumnData.value.fldDesc){
columnList.value[i].fldDesc = currentColumnData.value.fldDesc
oldColumnsData.value[i].fldDesc = true
changed = true
}
if (columnList.value[i].crrctPkFlag !== currentColumnData.value.crrctPkFlag){
columnList.value[i].crrctPkFlag = currentColumnData.value.crrctPkFlag
oldColumnsData.value[i].crrctPkFlag = true
changed = true
}
// if (columnList.value[i].suppRecStat !== currentColumnData.value.suppRecStat){
// columnList.value[i].suppRecStat = currentColumnData.value.suppRecStat
// oldColumnsData.value[i].suppRecStat = true
// }
if (columnList.value[i].pic !== currentColumnData.value.pic){
columnList.value[i].pic = currentColumnData.value.pic
oldColumnsData.value[i].pic = true
changed = true
}
if (columnList.value[i].fldNullRate !== currentColumnData.value.fldNullRate){
columnList.value[i].fldNullRate = currentColumnData.value.fldNullRate
oldColumnsData.value[i].fldNullRate = true
changed = true
}
if (columnList.value[i].fldClas !== null && columnList.value[i].fldClas !== ''){
if (JSON.parse(columnList.value[i].fldClas) !== currentColumnData.value.fldClas){
columnList.value[i].fldClas = JSON.stringify(currentColumnData.value.fldClas)
oldColumnsData.value[i].fldClas = true
if (currentColumnData.value.showFldClas && currentColumnData.value.showFldClas.length > 0){
let showFldClas = currentColumnData.value.showFldClas
let fldClas = []
for (let j = 0; j < showFldClas.length; j++) {
let col = showFldClas[j]
if (col.clasEffFlag === '0'){ //
fldClas.push(col)
}else{ //
if (col.tagSource === '手动'){
fldClas.push(col)
}
}
}
if (columnList.value[i].fldClas && columnList.value[i].fldClas !== '[]'){
if (JSON.stringify(fldClas) !== columnList.value[i].fldClas){
columnList.value[i].fldClas = JSON.stringify(fldClas)
changed = true
}
}else {
if (fldClas.length !== 0){
columnList.value[i].fldClas = JSON.stringify(fldClas)
changed = true
}
}
}else {
if (currentColumnData.value.fldClas.length > 0){
columnList.value[i].fldClas = JSON.stringify(currentColumnData.value.fldClas)
oldColumnsData.value[i].fldClas = true
let batchFldClas = columnList.value[i].batchFldClas
if (fldClas.length > 0){
for (let j = 0; j < fldClas.length; j++) {
for (let k = 0; k < batchFldClas.length; k++) {
if (batchFldClas[k].clasPriClas === fldClas[j].clasPriClas
&& batchFldClas[k].clasScdClas === fldClas[j].clasScdClas
&& batchFldClas[k].clasThreClas === fldClas[j].clasThreClas
&& batchFldClas[k].clasName === fldClas[j].clasName
){
batchFldClas[k] = fldClas[j]
}
}
}
}
let tempFldClas = []
if (batchFldClas && batchFldClas.length>0){
for (let j = 0; j < batchFldClas.length; j++) {
if (tempFldClas.length > 0){
let hasClas = false
for (let k = 0; k < tempFldClas.length; k++) {
if (tempFldClas[k].clasPriClas === batchFldClas[j].clasPriClas
&& tempFldClas[k].clasScdClas === batchFldClas[j].clasScdClas
&& tempFldClas[k].clasThreClas === batchFldClas[j].clasThreClas
){
hasClas = true
}
}
if (hasClas){
break
}else {
if (batchFldClas[j].clasEffFlag === '1'){
tempFldClas.push(batchFldClas[j])
}
}
}else {
if (batchFldClas[j].clasEffFlag === '1'){
tempFldClas.push(batchFldClas[j])
}
}
}
}
columnList.value[i].showFldClas = batchFldClas
columnList.value[i].tempFldClas = tempFldClas
}
}
}
columnInfoDialog.value = false
changedColumns.value.push(currentColumnData.value)
if (changed){
changedColumns.value.push(currentColumnData.value)
}
}
function addTableTag(){
let json = JSON.parse(JSON.stringify(currentTableTag.value))
if (json.clasOnum !== null){
tableTags.value.push({
tagOnum: json.clasOnum,
tagName: json.clasName,
tagValue: '',
onum: json.clasOnum,
clasName: json.clasName,
clasValue: '',
tagRemark:'',
tagStatus:'',
clasEffFlag:'1',
tagSource:'手工',
setUser: cache.local.get("username"),
setTime: getNowDateTime()
@ -658,12 +741,12 @@
function addColumnTag(){
let json = JSON.parse(JSON.stringify(currentColumnTag.value))
if (json.clasOnum !== null){
currentColumnData.value.fldClas.push({
tagOnum: json.clasOnum,
tagName: json.clasName,
tagValue: '',
currentColumnData.value.showFldClas.push({
onum: json.clasOnum,
clasName: json.clasName,
clasValue: '',
tagRemark:'',
tagStatus:'',
clasEffFlag:'1',
tagSource:'手工',
setUser: cache.local.get("username"),
setTime: getNowDateTime()
@ -684,11 +767,17 @@
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
function deleteTableTag(index){
tableTags.value.splice(index,1)
function deleteTag(row){
row.clasEffFlag = '0'
row.tagSource = '手动'
}
function deleteColumnTag(index){
currentColumnData.value.fldClas.splice(index,1)
function revertTag(row){
row.clasEffFlag = '1'
row.tagSource = '手动'
}
function changeTagValue(row){
row.tagSource = '手动'
}
function changeTableTag(){
if (typeof currentTableTag.value.clasOnum !== null){
@ -710,12 +799,13 @@
}
}
}
function handleTableTagClose(tag){
for (let i = 0; i < currentMetaData.value.tags.length; i++) {
if (tag.tagName === currentMetaData.value.tags[i].tagName && tag.tagValue === currentMetaData.value.tags[i].tagValue){
currentMetaData.value.tags.splice(i, 1);
}
}
function handleTableTagClose(index){
currentMetaData.value.tags[index].clasEffFlag = '0'
// for (let i = 0; i < currentMetaData.value.tags.length; i++) {
// if (tag.tagName === currentMetaData.value.tags[i].tagName && tag.tagValue === currentMetaData.value.tags[i].tagValue){
// currentMetaData.value.tags.splice(i, 1);
// }
// }
}
function openTableTagsDialog(){
tableTagDialog.value = true
@ -743,7 +833,7 @@
"clasPriClas": "",
"clasScdClas": ""
}
currentColumnData.value.fldClas = (row.fldClas === null || row.fldClas === '')?[]:JSON.parse(row.fldClas)
currentColumnData.value.showFldClas = JSON.parse(JSON.stringify(row.showFldClas))
getMetaClasList().then(res=>{
metaClasList.value = res.data
})
@ -759,7 +849,7 @@
tabDesc:tableData.tabDesc,
govFlag:tableData.govFlag,
pic:tableData.pic,
tags: tableData.tabClas? JSON.parse(tableData.tabClas):[]
tags: tableData.showTabClas
}
let columnData = {
tabName: row.tabEngName,
@ -768,14 +858,55 @@
}
getColumnList(columnData).then(res=>{
columnList.value = res.data
oldColumnsData.value = []
for (let i = 0; i < columnList.value.length; i++) {
oldColumnsData.value.push({
fldCrrctName:false,
crrctPkFlag:false,
fldDesc:false,
pic:false,
})
if (columnList.value.length>0){
for (let i = 0; i < columnList.value.length; i++) {
let batchFldClas = columnList.value[i].batchFldClas
let fldClas =[]
if (columnList.value[i].fldClas && columnList.value[i].fldClas !== '[]'){
fldClas = JSON.parse(columnList.value[i].fldClas)
}
if (fldClas.length > 0){
for (let j = 0; j < fldClas.length; j++) {
for (let k = 0; k < batchFldClas.length; k++) {
if (batchFldClas[k].clasPriClas === fldClas[j].clasPriClas
&& batchFldClas[k].clasScdClas === fldClas[j].clasScdClas
&& batchFldClas[k].clasThreClas === fldClas[j].clasThreClas
&& batchFldClas[k].clasName === fldClas[j].clasName
){
batchFldClas[k] = fldClas[j]
}
}
}
}
let tempFldClas = []
if (batchFldClas && batchFldClas.length>0){
for (let j = 0; j < batchFldClas.length; j++) {
if (tempFldClas.length > 0){
let hasClas = false
for (let k = 0; k < tempFldClas.length; k++) {
if (tempFldClas[k].clasPriClas === batchFldClas[j].clasPriClas
&& tempFldClas[k].clasScdClas === batchFldClas[j].clasScdClas
&& tempFldClas[k].clasThreClas === batchFldClas[j].clasThreClas){
hasClas = true
}
}
if (hasClas){
break
}else {
if (batchFldClas[j].clasEffFlag === '1'){
tempFldClas.push(batchFldClas[j])
}
}
}else {
if (batchFldClas[j].clasEffFlag === '1') {
tempFldClas.push(batchFldClas[j])
}
}
}
}
columnList.value[i].showFldClas = batchFldClas
columnList.value[i].tempFldClas = tempFldClas
}
}
})
drawer.value = true
@ -818,6 +949,56 @@
function getList(){
getMetaDataList(queryParams.value).then(res=>{
dataList.value = res.data.rows
if (dataList.value.length>0){
for (let i = 0; i < dataList.value.length; i++) {
let batchTabClas = dataList.value[i].batchTabClas
let tabClas =[]
if (dataList.value[i].tabClas && dataList.value[i].tabClas !== '[]'){
tabClas = JSON.parse(dataList.value[i].tabClas)
}
if (tabClas.length > 0){
for (let j = 0; j < tabClas.length; j++) {
for (let k = 0; k < batchTabClas.length; k++) {
if (batchTabClas[k].clasPriClas === tabClas[j].clasPriClas
&& batchTabClas[k].clasScdClas === tabClas[j].clasScdClas
&& batchTabClas[k].clasThreClas === tabClas[j].clasThreClas
&& batchTabClas[k].clasName === tabClas[j].clasName
){
batchTabClas[k] = tabClas[j]
}
}
}
}
let tempTabClas = []
if (batchTabClas && batchTabClas.length>0){
for (let j = 0; j < batchTabClas.length; j++) {
if (tempTabClas.length > 0){
let hasClas = false
for (let k = 0; k < tempTabClas.length; k++) {
if (tempTabClas[k].clasPriClas === batchTabClas[j].clasPriClas
&& tempTabClas[k].clasScdClas === batchTabClas[j].clasScdClas
&& tempTabClas[k].clasThreClas === batchTabClas[j].clasThreClas){
hasClas = true
}
}
if (hasClas){
break
}else {
if (batchTabClas[j].clasEffFlag === '1'){
tempTabClas.push(batchTabClas[j])
}
}
}else {
if (batchTabClas[j].clasEffFlag === '1') {
tempTabClas.push(batchTabClas[j])
}
}
}
}
dataList.value[i].showTabClas = batchTabClas
dataList.value[i].tempTabClas = tempTabClas
}
}
loading.value = false
total.value = res.data.total
})
@ -858,7 +1039,7 @@
crrctPkFlag: column.crrctPkFlag,
fldDesc: column.fldDesc,
pic: column.pic,
fldClas: JSON.stringify(column.fldClas),
fldClas: JSON.stringify(column.showFldClas),
fldNullRate: column.fldNullRate,
recStat: column.recStat
})

185
vue-fastapi-frontend/src/views/system/flow/index.vue

@ -254,8 +254,11 @@
对象标签
</div>
</template>
<template v-if="oldTableInfo.tabClas && oldTableInfo.tabClas !==''">
<el-tag style="margin:5px" v-for="item in JSON.parse(oldTableInfo.tabClas)">{{item.tagName}}</el-tag>
<template v-if="oldTableInfo.showTabClas && oldTableInfo.showTabClas.length > 0">
<template v-for="item in oldTableInfo.showTabClas">
<el-tag style="margin:5px" v-if="item.clasEffFlag && item.clasEffFlag === '1'">{{item.clasName}}</el-tag>
<el-tag style="margin:5px" type="danger" v-if="item.clasEffFlag === '0'">{{item.clasName}}</el-tag>
</template>
</template>
</el-descriptions-item>
<el-descriptions-item>
@ -321,8 +324,11 @@
</el-table-column>
<el-table-column label="字段标签" width="150" align="center" prop="fldClas">
<template #default="scope">
<template v-if="scope.row.fldClas && scope.row.fldClas !== ''">
<el-tag v-for="item in JSON.parse(scope.row.fldClas)">{{item.tagName}}</el-tag>
<template v-if="scope.row.showColClas && scope.row.showColClas.length > 0">
<div v-for="item in scope.row.showColClas">
<el-tag v-if="item.clasEffFlag === '1'">{{item.clasName}}</el-tag>
<el-tag type="danger" v-if="item.clasEffFlag === '0'">{{item.clasName}}</el-tag>
</div>
</template>
</template>
</el-table-column>
@ -423,8 +429,11 @@
对象标签
</div>
</template>
<template v-if="newTableInfo.tabClas && newTableInfo.tabClas !==''">
<el-tag style="margin:5px" v-for="item in JSON.parse(newTableInfo.tabClas)">{{item.tagName}}</el-tag>
<template v-if="newTableInfo.showTabClas && newTableInfo.showTabClas.length > 0">
<template v-for="item in newTableInfo.showTabClas">
<el-tag style="margin:5px" v-if="item.clasEffFlag === '1'">{{item.clasName}}</el-tag>
<el-tag style="margin:5px" type="danger" v-if="item.clasEffFlag === '0'">{{item.clasName}}</el-tag>
</template>
</template>
</el-descriptions-item>
<el-descriptions-item>
@ -490,8 +499,11 @@
</el-table-column>
<el-table-column label="字段标签" width="150" align="center" prop="fldClas">
<template #default="scope">
<template v-if="scope.row.fldClas && scope.row.fldClas !== ''">
<el-tag v-for="item in JSON.parse(scope.row.fldClas)">{{item.tagName}}</el-tag>
<template v-if="scope.row.showColClas && scope.row.showColClas.length>0">
<div v-for="item in scope.row.showColClas">
<el-tag v-if="item.clasEffFlag === '1'">{{item.clasName}}</el-tag>
<el-tag type="danger" v-if="item.clasEffFlag === '0'">{{item.clasName}}</el-tag>
</div>
</template>
</template>
</el-table-column>
@ -800,55 +812,142 @@ function showBusinessDataDialog(row){
businessId: row.businessId
}
getMetaInfoApplyBusinessDetail(param).then(res=>{
let table = JSON.parse(res.data.table.oldTableData)
let data = JSON.parse(JSON.stringify(res.data))
let table = JSON.parse(data.table.oldTableData)
let batchTabClas = data.table.batchTabClas
let showOldTabClas = []
if (batchTabClas && batchTabClas.length>0){
showOldTabClas = JSON.parse(JSON.stringify(batchTabClas))
if (table.tabClas && table.tabClas !== '[]' && table.tabClas !== 'null'){
let oldTabClas = JSON.parse(table.tabClas)
for (let i = 0; i < oldTabClas.length; i++) {
for (let j = 0; j < showOldTabClas.length; j++) {
if (showOldTabClas[j].clasPriClas === oldTabClas[i].clasPriClas
&& showOldTabClas[j].clasScdClas === oldTabClas[i].clasScdClas
&& showOldTabClas[j].clasThreClas === oldTabClas[i].clasThreClas
&& showOldTabClas[j].clasName === oldTabClas[i].clasName
){
showOldTabClas[j] = oldTabClas[i]
}
}
}
}
}else {
showOldTabClas = JSON.parse(table.tabClas)
}
table.showTabClas = showOldTabClas
oldTableInfo.value = JSON.parse(JSON.stringify(table))
newTableInfo.value = {
applyStatus:res.data.table.apply_status,
applyTime:res.data.table.apply_time,
crrctVerNum:res.data.table.crrct_ver_num,
govFlag:res.data.table.gov_flag,
mdlName:res.data.table.mdl_name,
onum:res.data.table.onum,
pic:res.data.table.pic,
recStat:res.data.table.rec_stat,
recSubmPrsn:res.data.table.rec_subm_prsn,
ssysCd:res.data.table.ssys_cd,
tabClas:res.data.table.tab_clas,
tabCrrctName:res.data.table.tab_crrct_name,
tabDesc:res.data.table.tab_desc,
tabEngName:res.data.table.tab_eng_name,
updTime:res.data.table.upd_time,
applyStatus:data.table.applyStatus,
applyTime:data.table.applyTime,
crrctVerNum:data.table.crrctVerNum,
govFlag:data.table.govFlag,
mdlName:data.table.mdlName,
onum:data.table.onum,
pic:data.table.pic,
recStat:data.table.recStat,
recSubmPrsn:data.table.recSubmPrsn,
ssysCd:data.table.ssysCd,
tabClas:data.table.tabClas,
tabCrrctName:data.table.tabCrrctName,
tabDesc:data.table.tabDesc,
tabEngName:data.table.tabEngName,
updTime:data.table.updTime,
tabCnName:table.tabCnName,
tabRecNum:table.tabRecNum,
tabType:table.tabType,
}
let showNewTabClas = []
if (batchTabClas && batchTabClas.length>0){
showNewTabClas = JSON.parse(JSON.stringify(batchTabClas))
if (newTableInfo.value.tabClas && newTableInfo.value.tabClas !== '[]' && newTableInfo.value.tabClas !== 'null'){
let newTabClas = JSON.parse(newTableInfo.value.tabClas)
for (let i = 0; i < newTabClas.length; i++) {
for (let j = 0; j < showNewTabClas.length; j++) {
if (showNewTabClas[j].clasPriClas === newTabClas[i].clasPriClas
&& showNewTabClas[j].clasScdClas === newTabClas[i].clasScdClas
&& showNewTabClas[j].clasThreClas === newTabClas[i].clasThreClas
&& showNewTabClas[j].clasName === newTabClas[i].clasName
){
showNewTabClas[j] = newTabClas[i]
}
}
}
}
}else {
showNewTabClas = JSON.parse(data.table.tabClas)
}
newTableInfo.value.showTabClas = showNewTabClas
newColumnList.value = []
oldColumnList.value = []
oldTableInfo.value = table
if (res.data.column && res.data.column.length > 0){
for (let i = 0; i < res.data.column.length; i++) {
let col = res.data.column[i]
if (data.column && data.column.length > 0){
for (let i = 0; i < data.column.length; i++) {
let col = data.column[i]
let column = JSON.parse(col.oldColumnData)
let batchColClas = col.batchColClas
let showOldColClas = []
if (batchColClas && batchColClas.length>0){
showOldColClas = JSON.parse(JSON.stringify(batchColClas))
if (column.fldClas && column.fldClas !== '[]' && column.fldClas !== 'null'){
let oldColClas = JSON.parse(column.fldClas)
for (let i = 0; i < oldColClas.length; i++) {
for (let j = 0; j < showOldColClas.length; j++) {
if (showOldColClas[j].clasPriClas === oldColClas[i].clasPriClas
&& showOldColClas[j].clasScdClas === oldColClas[i].clasScdClas
&& showOldColClas[j].clasThreClas === oldColClas[i].clasThreClas
&& showOldColClas[j].clasName === oldColClas[i].clasName
){
showOldColClas[j] = oldColClas[i]
}
}
}
}
}else {
showOldColClas = JSON.parse(column.fldClas)
}
column.showColClas = showOldColClas
oldColumnList.value.push(column)
let showNewColClas = []
if (batchColClas && batchColClas.length>0){
showNewColClas = batchColClas
if (col.fldClas && col.fldClas !== '[]' && col.fldClas !== 'null'){
let newColClas = JSON.parse(col.fldClas)
for (let i = 0; i < newColClas.length; i++) {
for (let j = 0; j < showNewColClas.length; j++) {
if (showNewColClas[j].clasPriClas === newColClas[i].clasPriClas
&& showNewColClas[j].clasScdClas === newColClas[i].clasScdClas
&& showNewColClas[j].clasThreClas === newColClas[i].clasThreClas
&& showNewColClas[j].clasName === newColClas[i].clasName
){
showNewColClas[j] = newColClas[i]
}
}
}
}
}else {
showNewColClas = JSON.parse(col.fldClas)
}
newColumnList.value.push({
applyStatus:col.apply_status,
applyTime:col.apply_time,
crrctPkFlag:col.crrct_pk_flag,
crrctVerNum:col.crrct_ver_num,
fldClas:col.fld_clas,
fldCrrctName:col.fld_crrct_name,
fldDesc:col.fld_desc,
fldEngName:col.fld_eng_name,
fldNullRate:col.fld_null_rate,
mdlName:col.mdl_name,
applyStatus:col.applyStatus,
applyTime:col.applyTime,
crrctPkFlag:col.crrctPkFlag,
crrctVerNum:col.crrctVerNum,
fldClas:col.fldClas,
fldCrrctName:col.fldCrrctName,
fldDesc:col.fldDesc,
fldEngName:col.fldEngName,
fldNullRate:col.fldNullRate,
mdlName:col.mdlName,
onum:col.onum,
pic:col.pic,
recStat:col.rec_stat,
recSubmPrsn:col.rec_subm_prsn,
ssysCd:col.ssys_cd,
tabEngName:col.tab_eng_name,
updTime:col.upd_time,
recStat:col.recStat,
recSubmPrsn:col.recSubmPrsn,
ssysCd:col.ssysCd,
tabEngName:col.tabEngName,
updTime:col.updTime,
fldCnName:column.fldCnName,
fldType:column.fldType,
showColClas: showNewColClas
})
}
}

Loading…
Cancel
Save