ddc5c4ea by xukangle

fix: 分类分级目录

1 parent e7384c73
...@@ -142,7 +142,7 @@ export const getTableFieldLineage = (params) => request({ ...@@ -142,7 +142,7 @@ export const getTableFieldLineage = (params) => request({
142 142
143 /** 获取表的所有字段血缘数据 */ 143 /** 获取表的所有字段血缘数据 */
144 export const getTableAllFieldLineage = (params) => request({ 144 export const getTableAllFieldLineage = (params) => request({
145 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/lineage/lineage-query-field?databaseName=${params.databaseName}&tableName=${params.tableName}`, 145 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/lineage/lineage-query-field?databaseName=${params.databaseName}&tableName=${params.tableName}&tableGuid=${params.tableGuid}`,
146 method: 'get', 146 method: 'get',
147 }) 147 })
148 148
......
...@@ -1018,8 +1018,8 @@ const tableFieldsDataInfo = ref({ ...@@ -1018,8 +1018,8 @@ const tableFieldsDataInfo = ref({
1018 { label: "表中文名", field: "tableChName", width: 140, }, 1018 { label: "表中文名", field: "tableChName", width: 140, },
1019 { label: "数据库名称", field: "database", width: 120 }, 1019 { label: "数据库名称", field: "database", width: 120 },
1020 { label: "数据库中文名", field: "databaseChName", width: TableColumnWidth.DATETIME }, 1020 { label: "数据库中文名", field: "databaseChName", width: TableColumnWidth.DATETIME },
1021 { label: "分类", field: "classifyDetailName", width: 120, align: 'center' }, 1021 { label: "分类", field: "classifyDetailName", width: 120, align: 'left' },
1022 { label: "分级", field: "gradeDetailName", width: 120, align: 'center' }, 1022 { label: "分级", field: "gradeDetailName", width: 120, align: 'left' },
1023 // { label: "标签", field: "label", width: 120, align: 'center' }, 1023 // { label: "标签", field: "label", width: 120, align: 'center' },
1024 ], 1024 ],
1025 data: [], 1025 data: [],
......
...@@ -507,7 +507,7 @@ const cancelEdit = (row) => { ...@@ -507,7 +507,7 @@ const cancelEdit = (row) => {
507 507
508 :deep(.bottom_table) { 508 :deep(.bottom_table) {
509 margin-top: 12px; 509 margin-top: 12px;
510 height: calc(100% - 150px); 510 height: calc(100% - 115px);
511 overflow-y: auto; 511 overflow-y: auto;
512 512
513 .el-table td.el-table__cell { 513 .el-table td.el-table__cell {
......
...@@ -320,7 +320,7 @@ watch( ...@@ -320,7 +320,7 @@ watch(
320 if (val?.length && !currDatasourceSelect.value?.tableName) { 320 if (val?.length && !currDatasourceSelect.value?.tableName) {
321 currDatasourceSelect.value = val[0]; 321 currDatasourceSelect.value = val[0];
322 } 322 }
323 emits("datasourceSelectedChange", val, databaseGuid.value); 323 emits("datasourceSelectedChange", val, currDatasourceSelect.value);
324 }, 324 },
325 { 325 {
326 deep: true, 326 deep: true,
...@@ -361,9 +361,9 @@ const getTextAlign = (field) => { ...@@ -361,9 +361,9 @@ const getTextAlign = (field) => {
361 <el-table-column type="selection" :width="22" align="center" /> 361 <el-table-column type="selection" :width="22" align="center" />
362 <el-table-column prop="tableName" label="名称" width="100px" align="left" show-overflow-tooltip> 362 <el-table-column prop="tableName" label="名称" width="100px" align="left" show-overflow-tooltip>
363 </el-table-column> 363 </el-table-column>
364 <el-table-column prop="tableComment" label="表注释" width="60px" align="left" show-overflow-tooltip> 364 <el-table-column prop="tableChName" label="表中文名称" width="80px" align="left" show-overflow-tooltip>
365 <template #default="scope"> 365 <template #default="scope">
366 <span>{{ scope.row['tableComment'] ?? '--' }}</span> 366 <span>{{ scope.row['tableChName'] ?? '--' }}</span>
367 </template> 367 </template>
368 </el-table-column> 368 </el-table-column>
369 </el-table> 369 </el-table>
...@@ -497,7 +497,7 @@ const getTextAlign = (field) => { ...@@ -497,7 +497,7 @@ const getTextAlign = (field) => {
497 height: calc(100% - 80px); 497 height: calc(100% - 80px);
498 498
499 .content-left { 499 .content-left {
500 width: 200px; 500 width: 220px;
501 border-right: 1px solid #d9d9d9; 501 border-right: 1px solid #d9d9d9;
502 502
503 .title-left { 503 .title-left {
...@@ -532,7 +532,7 @@ const getTextAlign = (field) => { ...@@ -532,7 +532,7 @@ const getTextAlign = (field) => {
532 } 532 }
533 533
534 .content-right { 534 .content-right {
535 width: calc(100% - 200px); 535 width: calc(100% - 220px);
536 536
537 .title-right { 537 .title-right {
538 height: 44px; 538 height: 44px;
......
...@@ -217,10 +217,12 @@ const stepsInfo = ref({ ...@@ -217,10 +217,12 @@ const stepsInfo = ref({
217 }); 217 });
218 218
219 219
220 220 // 保存选中的库表信息
221 const selectedDatabaseTableInfo = ref<any>([]);
221 const datasourceSelectedRows: Ref<any> = ref([]); 222 const datasourceSelectedRows: Ref<any> = ref([]);
222 // 记录数据库databaseGuid 223 // 记录数据库databaseGuid
223 const handlDsSelectedChange = (v, guid) => { 224 const handlDsSelectedChange = (v, curr) => {
225 selectedDatabaseTableInfo.value = curr || '';
224 datasourceSelectedRows.value = v || []; 226 datasourceSelectedRows.value = v || [];
225 const params: any = []; 227 const params: any = [];
226 v.forEach((item) => { 228 v.forEach((item) => {
...@@ -245,6 +247,9 @@ const nextStep = async () => { ...@@ -245,6 +247,9 @@ const nextStep = async () => {
245 }); 247 });
246 return; 248 return;
247 } 249 }
250 tableDataInfo.value[0].tableName = selectedDatabaseTableInfo.value.tableName;
251 tableDataInfo.value[0].tableChName = selectedDatabaseTableInfo.value.tableChName;
252
248 getFieldTree(); 253 getFieldTree();
249 stepsInfo.value.step = 1; 254 stepsInfo.value.step = 1;
250 }; 255 };
...@@ -315,6 +320,7 @@ const editableFields = { ...@@ -315,6 +320,7 @@ const editableFields = {
315 classifyDetailGuid: true, // 分类可编辑 320 classifyDetailGuid: true, // 分类可编辑
316 fieldType: true, // 字段类型可编辑 321 fieldType: true, // 字段类型可编辑
317 fieldChName: true, // 字段中文名可编辑 322 fieldChName: true, // 字段中文名可编辑
323 sourceFieldChName: true, // 源字段中文名可编辑
318 } 324 }
319 325
320 const tableFieldsLoading = ref(false) 326 const tableFieldsLoading = ref(false)
...@@ -622,45 +628,45 @@ const submit = async () => { ...@@ -622,45 +628,45 @@ const submit = async () => {
622 console.log('提交', tableDataDetailInfo.value, tableDataInfo.value) 628 console.log('提交', tableDataDetailInfo.value, tableDataInfo.value)
623 saveBtn.value = true 629 saveBtn.value = true
624 // 校验表格数据是否填写完整 630 // 校验表格数据是否填写完整
625 if (!checkTableData(tableDataDetailInfo.value)) { 631 // if (!checkTableData(tableDataDetailInfo.value)) {
626 saveBtn.value = false 632 // saveBtn.value = false
627 return 633 // return
628 } 634 // }
629 // 如果提交时没有 guid 则为新增type 0,否则为修改 type 1, 也要传参 635 // // 如果提交时没有 guid 则为新增type 0,否则为修改 type 1, 也要传参
630 if (!editInfoData.value.guid) { 636 // if (!editInfoData.value.guid) {
631 try { 637 // try {
632 await saveOrUpdate({ 638 // await saveOrUpdate({
633 tableName: tableDataInfo.value[0].tableName, 639 // tableName: tableDataInfo.value[0].tableName,
634 tableChName: tableDataInfo.value[0].tableChName, 640 // tableChName: tableDataInfo.value[0].tableChName,
635 databaseGuid: route.query.databaseGuid || '', 641 // databaseGuid: route.query.databaseGuid || '',
636 database: route.query.database || '', 642 // database: route.query.database || '',
637 databaseChName: route.query.databaseChName || '', 643 // databaseChName: route.query.databaseChName || '',
638 foundMode: route.query.foundMode, 644 // foundMode: route.query.foundMode,
639 isDraft: 'N', 645 // isDraft: 'N',
640 }, 0) 646 // }, 0)
641 saveBtn.value = false 647 // saveBtn.value = false
642 } catch (error) { 648 // } catch (error) {
643 saveBtn.value = false 649 // saveBtn.value = false
644 } 650 // }
645 } else { 651 // } else {
646 // 修改 saveOrUpdate({}, 1) 652 // // 修改 saveOrUpdate({}, 1)
647 try { 653 // try {
648 await saveOrUpdate({ 654 // await saveOrUpdate({
649 guid: editInfoData.value.guid, 655 // guid: editInfoData.value.guid,
650 tableName: tableDataInfo.value[0].tableName, 656 // tableName: tableDataInfo.value[0].tableName,
651 tableChName: tableDataInfo.value[0].tableChName, 657 // tableChName: tableDataInfo.value[0].tableChName,
652 databaseGuid: editInfoData.value.databaseGuid || '', 658 // databaseGuid: editInfoData.value.databaseGuid || '',
653 database: editInfoData.value.database || '', 659 // database: editInfoData.value.database || '',
654 databaseChName: editInfoData.value.databaseChName || '', 660 // databaseChName: editInfoData.value.databaseChName || '',
655 foundMode: editInfoData.value.foundMode, 661 // foundMode: editInfoData.value.foundMode,
656 isDraft: 'N', 662 // isDraft: 'N',
657 tableGuid: route.query.tableGuid, 663 // tableGuid: route.query.tableGuid,
658 }, 1) 664 // }, 1)
659 saveBtn.value = false 665 // saveBtn.value = false
660 } catch (error) { 666 // } catch (error) {
661 saveBtn.value = false 667 // saveBtn.value = false
662 } 668 // }
663 } 669 // }
664 670
665 } 671 }
666 672
...@@ -951,7 +957,7 @@ onActivated(() => { ...@@ -951,7 +957,7 @@ onActivated(() => {
951 <!-- 排序列(不可编辑) --> 957 <!-- 排序列(不可编辑) -->
952 <el-table-column type="index" label="排序" width="80" align="center" /> 958 <el-table-column type="index" label="排序" width="80" align="center" />
953 <!-- 字段中文名(可编辑)fieldChName --> 959 <!-- 字段中文名(可编辑)fieldChName -->
954 <el-table-column prop="fieldChName" label="目标字段中文名" width="150"> 960 <el-table-column prop="fieldChName" label="目标字段中文名" width="150" show-overflow-tooltip>
955 <!-- 可以编辑 --> 961 <!-- 可以编辑 -->
956 <template #default="scope"> 962 <template #default="scope">
957 <span v-if="!scope.row.isEdit || !editableFields.fieldChName">{{ scope.row.fieldChName ? 963 <span v-if="!scope.row.isEdit || !editableFields.fieldChName">{{ scope.row.fieldChName ?
...@@ -962,7 +968,7 @@ onActivated(() => { ...@@ -962,7 +968,7 @@ onActivated(() => {
962 968
963 </el-table-column> 969 </el-table-column>
964 <!-- 字段英文名(可编辑) --> 970 <!-- 字段英文名(可编辑) -->
965 <el-table-column prop="fieldName" label="目标字段英文名" width="150"> 971 <el-table-column prop="fieldName" label="目标字段英文名" width="150" show-overflow-tooltip>
966 <template #default="scope"> 972 <template #default="scope">
967 <span v-if="!scope.row.isEdit || !editableFields.fieldName">{{ scope.row.fieldName ? 973 <span v-if="!scope.row.isEdit || !editableFields.fieldName">{{ scope.row.fieldName ?
968 scope.row.fieldName 974 scope.row.fieldName
...@@ -972,31 +978,31 @@ onActivated(() => { ...@@ -972,31 +978,31 @@ onActivated(() => {
972 </template> 978 </template>
973 </el-table-column> 979 </el-table-column>
974 <!-- 源数据库 --> 980 <!-- 源数据库 -->
975 <el-table-column prop="databaseChName" label="源数据库" width="150"> 981 <el-table-column prop="sourceDatabase" label="源数据库" width="150" show-overflow-tooltip>
976 <template #default="scope"> 982 <template #default="scope">
977 {{ scope.row.databaseChName ? scope.row.databaseChName : '--' }} 983 {{ scope.row.sourceDatabase ? scope.row.sourceDatabase : '--' }}
978 </template> 984 </template>
979 </el-table-column> 985 </el-table-column>
980 <!-- 源数据表 --> 986 <!-- 源数据表 -->
981 <el-table-column prop="tableName" label="源数据表" width="150"> 987 <el-table-column prop="sourceTableName" label="源数据表" width="150" show-overflow-tooltip>
982 <template #default="scope"> 988 <template #default="scope">
983 {{ scope.row.tableName ? scope.row.tableName : '--' }} 989 {{ scope.row.sourceTableName ? scope.row.sourceTableName : '--' }}
984 </template> 990 </template>
985 </el-table-column> 991 </el-table-column>
986 <!-- 源字段中文 --> 992 <!-- 源字段中文 -->
987 <el-table-column prop="fieldChName" label="源字段中文" width="150"> 993 <el-table-column prop="sourceFieldName" label="源字段中文" width="150" show-overflow-tooltip>
988 <template #default="scope"> 994 <template #default="scope">
989 {{ scope.row.fieldChName ? scope.row.fieldChName : '--' }} 995 {{ scope.row.sourceFieldName ? scope.row.sourceFieldName : '--' }}
990 </template> 996 </template>
991 </el-table-column> 997 </el-table-column>
992 <!-- 源字段英文 --> 998 <!-- 源字段英文 -->
993 <el-table-column prop="fieldName" label="源字段英文" width="150"> 999 <el-table-column prop="sourceFieldChName" label="源字段英文" width="150" show-overflow-tooltip>
994 <template #default="scope"> 1000 <template #default="scope">
995 <!-- {{ scope.row.sourceFieldName ? scope.row.sourceFieldName : '--' }} --> 1001 <!-- {{ scope.row.sourceFieldName ? scope.row.sourceFieldName : '--' }} -->
996 1002
997 <span v-if="!scope.row.isEdit || !editableFields.fieldName">{{ scope.row.fieldName ? 1003 <span v-if="!scope.row.isEdit || !editableFields.sourceFieldChName">{{ scope.row.sourceFieldChName ?
998 scope.row.fieldName : '--' }}</span> 1004 scope.row.sourceFieldChName : '--' }}</span>
999 <el-input v-else v-model="scope.row.fieldName" placeholder="请输入长度" /> 1005 <el-input v-else v-model="scope.row.sourceFieldChName" placeholder="请输入长度" />
1000 </template> 1006 </template>
1001 </el-table-column> 1007 </el-table-column>
1002 <!-- 源端字段 fieldType fieldTypeProps--> 1008 <!-- 源端字段 fieldType fieldTypeProps-->
...@@ -1016,7 +1022,7 @@ onActivated(() => { ...@@ -1016,7 +1022,7 @@ onActivated(() => {
1016 </el-table-column> 1022 </el-table-column>
1017 1023
1018 <!-- 长度(可编辑) --> 1024 <!-- 长度(可编辑) -->
1019 <el-table-column prop="fieldLength" label="长度" width="120" align="center"> 1025 <el-table-column prop="fieldLength" label="长度" width="120" align="left">
1020 <template #default="scope"> 1026 <template #default="scope">
1021 <!-- 非编辑状态 --> 1027 <!-- 非编辑状态 -->
1022 <span v-if="!scope.row.isEdit"> 1028 <span v-if="!scope.row.isEdit">
...@@ -1034,7 +1040,7 @@ onActivated(() => { ...@@ -1034,7 +1040,7 @@ onActivated(() => {
1034 </el-table-column> 1040 </el-table-column>
1035 1041
1036 <!-- 精度(可编辑) --> 1042 <!-- 精度(可编辑) -->
1037 <el-table-column prop="fieldPrecision" label="精度" width="120" align="center"> 1043 <el-table-column prop="fieldPrecision" label="精度" width="120" align="left">
1038 <template #default="scope"> 1044 <template #default="scope">
1039 <!-- 非编辑状态 --> 1045 <!-- 非编辑状态 -->
1040 <span v-if="!scope.row.isEdit"> 1046 <span v-if="!scope.row.isEdit">
...@@ -1049,7 +1055,7 @@ onActivated(() => { ...@@ -1049,7 +1055,7 @@ onActivated(() => {
1049 </template> 1055 </template>
1050 </el-table-column> 1056 </el-table-column>
1051 <!-- 关联字典(可编辑)el-tree-select 形式下拉形式 --> 1057 <!-- 关联字典(可编辑)el-tree-select 形式下拉形式 -->
1052 <el-table-column prop="dictionaryGuid" label="关联字典" width="150" align="center"> 1058 <el-table-column prop="dictionaryGuid" label="关联字典" width="150" align="left">
1053 <template #default="scope"> 1059 <template #default="scope">
1054 <span v-if="!scope.row.isEdit">{{ scope.row.dictionaryGuid 1060 <span v-if="!scope.row.isEdit">{{ scope.row.dictionaryGuid
1055 ? dictionaryList.find((item: any) => item.guid === scope.row.dictionaryGuid)?.chName : '--' }}</span> 1061 ? dictionaryList.find((item: any) => item.guid === scope.row.dictionaryGuid)?.chName : '--' }}</span>
...@@ -1061,11 +1067,11 @@ onActivated(() => { ...@@ -1061,11 +1067,11 @@ onActivated(() => {
1061 </el-table-column> 1067 </el-table-column>
1062 1068
1063 <!-- 数据是否唯一(可编辑) --> 1069 <!-- 数据是否唯一(可编辑) -->
1064 <el-table-column prop="isPrimary" label="是否主键" width="150" align="center"> 1070 <el-table-column prop="isPrimary" label="是否主键" width="150" align="left">
1065 <template #default="scope"> 1071 <template #default="scope">
1066 <span v-if="!scope.row.isEdit || !editableFields.isPrimary">{{ scope.row.isPrimary ? scope.row.isPrimary 1072 <span v-if="!scope.row.isEdit || !editableFields.isPrimary">{{ scope.row.isPrimary ?
1067 : 1073 (scope.row.isPrimary ===
1068 '--' }}</span> 1074 'Y' ? '是' : '否') : '--' }}</span>
1069 <el-select v-else v-model="scope.row.isPrimary" placeholder="请选择"> 1075 <el-select v-else v-model="scope.row.isPrimary" placeholder="请选择">
1070 <el-option label="Y" value="Y" /> 1076 <el-option label="Y" value="Y" />
1071 <el-option label="N" value="N" /> 1077 <el-option label="N" value="N" />
...@@ -1073,10 +1079,11 @@ onActivated(() => { ...@@ -1073,10 +1079,11 @@ onActivated(() => {
1073 </template> 1079 </template>
1074 </el-table-column> 1080 </el-table-column>
1075 <!-- 是否必填(可编辑) --> 1081 <!-- 是否必填(可编辑) -->
1076 <el-table-column prop="isNotNull" label="是否必填" width="120" align="center"> 1082 <el-table-column prop="notNull" label="是否必填" width="120" align="left">
1077 <template #default="scope"> 1083 <template #default="scope">
1078 <span v-if="!scope.row.isEdit">{{ scope.row.isNotNull ? scope.row.isNotNull : '--' }}</span> 1084 <span v-if="!scope.row.isEdit">{{ scope.row.notNull ? (scope.row.notNull ===
1079 <el-select v-else v-model="scope.row.isNotNull" placeholder="请选择"> 1085 'Y' ? '是' : '否') : '--' }}</span>
1086 <el-select v-else v-model="scope.row.notNull" placeholder="请选择">
1080 <el-option label="Y" value="Y" /> 1087 <el-option label="Y" value="Y" />
1081 <el-option label="N" value="N" /> 1088 <el-option label="N" value="N" />
1082 </el-select> 1089 </el-select>
...@@ -1101,7 +1108,7 @@ onActivated(() => { ...@@ -1101,7 +1108,7 @@ onActivated(() => {
1101 </template> 1108 </template>
1102 </el-table-column> 1109 </el-table-column>
1103 <!-- 分级(不可编辑) --> 1110 <!-- 分级(不可编辑) -->
1104 <el-table-column prop="gradeDetailGuid" label="分级" width="120" align="center"> 1111 <el-table-column prop="gradeDetailGuid" label="分级" width="120" align="left">
1105 <template #default="scope"> 1112 <template #default="scope">
1106 <div v-if="scope.row.isEdit"> 1113 <div v-if="scope.row.isEdit">
1107 <el-select v-model="scope.row.gradeDetailGuid" placeholder="请选择分级" clearable filterable 1114 <el-select v-model="scope.row.gradeDetailGuid" placeholder="请选择分级" clearable filterable
......
...@@ -1010,7 +1010,7 @@ const getTableFieldLineageMap = () => { ...@@ -1010,7 +1010,7 @@ const getTableFieldLineageMap = () => {
1010 const getAllTableFieldLineageMap = () => { 1010 const getAllTableFieldLineageMap = () => {
1011 lineageLoading.value = true; 1011 lineageLoading.value = true;
1012 isFieldLineage.value = true; 1012 isFieldLineage.value = true;
1013 getTableAllFieldLineage({ databaseName: lastClickNode.value.databaseName, tableName: lastClickNode.value.tableName }).then((res: any) => { 1013 getTableAllFieldLineage({ databaseName: lastClickNode.value.databaseName, tableName: lastClickNode.value.tableName, tableGuid: lastClickNode.value.guid }).then((res: any) => {
1014 if (res.code == proxy.$passCode) { 1014 if (res.code == proxy.$passCode) {
1015 let data1 = res.data || []; 1015 let data1 = res.data || [];
1016 lineageData.value = data1; 1016 lineageData.value = data1;
......
...@@ -722,7 +722,7 @@ const getTableLineageMap = () => { ...@@ -722,7 +722,7 @@ const getTableLineageMap = () => {
722 const getAllTableFieldLineageMap = () => { 722 const getAllTableFieldLineageMap = () => {
723 lineageDataLoading.value = true; 723 lineageDataLoading.value = true;
724 isFieldLineage.value = true; 724 isFieldLineage.value = true;
725 getTableAllFieldLineage({ databaseName: sheetInfo.value.databaseName, tableName: sheetInfo.value.tableName }).then((res: any) => { 725 getTableAllFieldLineage({ databaseName: sheetInfo.value.databaseName, tableName: sheetInfo.value.tableName, tableGuid: sheetInfo.value.guid }).then((res: any) => {
726 if (res.code == proxy.$passCode) { 726 if (res.code == proxy.$passCode) {
727 let data1 = res.data || []; 727 let data1 = res.data || [];
728 lineageData.value = data1; 728 lineageData.value = data1;
...@@ -802,8 +802,8 @@ const handleLineageSwitchChange = (val) => { ...@@ -802,8 +802,8 @@ const handleLineageSwitchChange = (val) => {
802 <LineageGraph ref="lineageGraph" v-if="lineageData.length" layout="vertical" :lineageData="lineageData" 802 <LineageGraph ref="lineageGraph" v-if="lineageData.length" layout="vertical" :lineageData="lineageData"
803 :is-field-lineage="isFieldLineage" :primary-table="sheetInfo.tableName" :is-detail="true" 803 :is-field-lineage="isFieldLineage" :primary-table="sheetInfo.tableName" :is-detail="true"
804 :primaryDatabase="sheetInfo.databaseName" :isEdit="true" @handleSave="handleSave" 804 :primaryDatabase="sheetInfo.databaseName" :isEdit="true" @handleSave="handleSave"
805 @tableContextMenu="handleTableContextMenu" @handleToggle="handleToggle" :isToggle="isToggle" @handleChOrEn=handleChOrEn :isCh="isCh" 805 @tableContextMenu="handleTableContextMenu" @handleToggle="handleToggle" :isToggle="isToggle"
806 @handleRefres="handleRefres" @handleEdit="handleEdit" 806 @handleChOrEn=handleChOrEn :isCh="isCh" @handleRefres="handleRefres" @handleEdit="handleEdit"
807 @handleLineageSwitchChange="handleLineageSwitchChange" /> 807 @handleLineageSwitchChange="handleLineageSwitchChange" />
808 808
809 </div> 809 </div>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!