3c2a1245 by xukangle

fix: 修改分类分级

1 parent ec743969
......@@ -756,7 +756,13 @@ export const updateDbDirTable = (data) => request({
export const createTableSql = (data) => request({
url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/table/create-table-sql`,
method: 'post',
data
data,
responseType: 'blob',
})
/**删除新建表 */
export const deleteDbDirTable = (params) => request({
url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/table/del?tableGuid=${params.tableGuid}`,
method: 'get',
})
/**
......
......@@ -1138,7 +1138,8 @@ const panelChange = (scope, row) => {
:value="child.props?.value ? opts[child.props.value] : opts.value" :disabled="opts.disabled" />
</el-select>
<el-input v-else v-model.trim="formInline[child.field]" :placeholder="child.placeholder"
:clearable="child.clearable" :maxlength="child.maxlength ?? ''" />
:clearable="child.clearable" :maxlength="child.maxlength ?? ''"
@change="(val) => inputChange(val, child)" @input="(val) => inputEventChange(val, child)" />
</el-form-item>
</template>
</div>
......
......@@ -26,12 +26,13 @@ import {
getDbDirFieldSelectList,
updateDataAsset,
getDictionaryAll,
getNewDataTypeList
getNewDataTypeList,
deleteDbDirTable
} from '@/api/modules/dataInventory';
import { TableColumnWidth } from "@/utils/enum";
import router from "@/router";
import { download } from "@/utils/common";
import { vi } from "element-plus/es/locale";
const currentPath = ref<string[]>([]);
const currentDatabasePath = ref<string[]>([]);
const { proxy } = getCurrentInstance() as any;
......@@ -105,7 +106,7 @@ const getDictionaryList = () => {
dictionaryList.value = [];
if (res.code == proxy.$passCode) {
dictionaryList.value = res.data || [];
classEditFormItems.value[4].options = res.data || [];
classEditFormItems.value[5].options = res.data || [];
} else {
proxy.$ElMessage.error(res.msg);
}
......@@ -544,11 +545,13 @@ const batchControlRules = () => {
// 如果全都是单文本框或者全都是双文本框,则继续后续操作
if (isSingleInputField) {
classEditFormItems.value[5].visible = true;
classEditFormItems.value[6].visible = false;
} else if (isDoubleInputField) {
classEditFormItems.value[5].visible = false;
classEditFormItems.value[4].visible = false;
classEditFormItems.value[6].visible = true;
classEditFormItems.value[7].visible = false;
} else if (isDoubleInputField) {
classEditFormItems.value[4].visible = true;
classEditFormItems.value[6].visible = false;
classEditFormItems.value[7].visible = true;
}
classEditFormItems.value[0].default = selectedRulesData.value.rulesName;
drawerInfo.value.visible = true;
......@@ -607,7 +610,7 @@ const dataBaseTableInfo = ref({
}
},
{
label: "状态", field: "state", type: 'tag', width: 120, getName: (scope) => {
label: "状态", field: "state", type: 'tag', width: 120, align: "center", getName: (scope) => {
let status = scope.row.state;
// 0 草稿中 1 已建表 2 已有默认表
return status == 0 ? '草稿中' : status == 1 ? '已建表' : '已有默认表';
......@@ -615,7 +618,7 @@ const dataBaseTableInfo = ref({
},
{ label: "修改人", field: "taskUpdateUserName", width: 100 },
{ label: "修改时间", field: "updateTime", width: TableColumnWidth.DATETIME },
{ label: "描述", field: "description", width: 120, align: 'center' },
{ label: "描述", field: "description", width: 120, align: 'left' },
{ label: "规划数据资产", field: "isDataAsset", type: 'switch', activeText: '是', inactiveText: '否', activeValue: 'Y', inactiveValue: 'N', switchWidth: 56, width: 120, align: 'center' },
],
......@@ -628,7 +631,7 @@ const dataBaseTableInfo = ref({
actionInfo: {
label: "操作",
type: "btn",
width: 200,
width: 240,
fixed: 'right',
btns: (scope) => {
return [
......@@ -668,6 +671,7 @@ const dataBaseTableInfo = ref({
database: scope.row.database,
databaseChName: scope.row.databaseChName,
databaseGuid: scope.row.databaseGuid,
state: scope.row.state,
}
});
} else {
......@@ -682,11 +686,43 @@ const dataBaseTableInfo = ref({
database: scope.row.database,
databaseChName: scope.row.databaseChName,
databaseGuid: scope.row.databaseGuid,
state: scope.row.state,
}
});
}
},
disabled: scope.row.state !== 2 ? false : true
},
{
//删除
label: "删除", value: "delete", click: (scope) => {
console.log('删除', scope);
proxy.$confirm('此操作将永久删除该表, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
const res: any = await deleteDbDirTable({ tableGuid: scope.row.tableGuid });
if (res.code == proxy.$passCode) {
proxy.$ElMessage.success('删除成功');
dataBaseTableInfo.value.loading = true;
await getDataBaseTableData({
pageIndex: dataBasePage.value.curr,
pageSize: dataBasePage.value.limit
});
dataBaseTableInfo.value.loading = false;
} else {
proxy.$ElMessage.error(res.msg);
}
}).catch(() => {
proxy.$ElMessage({
type: 'info',
message: '已取消删除'
});
});
},
disabled: scope.row.state == 2 ? true : false
}
]
}
......@@ -770,6 +806,7 @@ const classEditFormItems = ref<any>([{
placeholder: '请选择',
field: 'orderNumLength',
options: selectLength.value,
default: '',
required: false,
clearable: true,
},
......@@ -783,37 +820,41 @@ const classEditFormItems = ref<any>([{
required: false,
clearable: true,
col: 'numberClass',
visable: true,
visible: true,
},
// {
// label: '',
// type: 'input-group',
// placeholder: '请输入',
// field: 'orderNum1',
// default: '',
// children: [
// {
// type: 'input',
// placeholder: '请输入',
// field: 'startNumber',
// default: '',
// clearable: true,
// required: false,
{
label: '',
type: 'input-group',
placeholder: '请输入',
field: 'orderNum1',
default: '',
children: [
{
type: 'input',
placeholder: '请输入',
field: 'startNumber',
default: '',
maxlength: 6,
regexp: /\D/g,
clearable: true,
required: false,
// },
// {
// type: 'input',
// placeholder: '请输入',
// field: 'endNumber',
// default: '',
// clearable: true,
// required: false,
// },
// ],
// col: 'col2',
// clearable: true,
// visable: false,
// },
},
{
type: 'input',
placeholder: '请输入',
field: 'endNumber',
default: '',
maxlength: 6,
regexp: /\D/g,
clearable: true,
required: false,
},
],
col: 'numberClass',
clearable: true,
visible: false,
},
{
label: '精度',
type: 'input',
......@@ -824,6 +865,7 @@ const classEditFormItems = ref<any>([{
required: false,
clearable: true,
block: true,
visible: true,
}, {
label: '关联字典',
field: 'dictionaryGuid',
......@@ -849,35 +891,34 @@ const classEditFormItems = ref<any>([{
clearable: true,
block: false,
disabled: false,
visable: true,
visible: false,
},
{
label: '字段取值范围',
type: 'input-group',
placeholder: '请输入',
field: 'fieldValueRange',
default: '',
children: [
{
type: 'input',
placeholder: '请输入',
field: 'startValue',
default: '',
clearable: true,
required: true,
required: false,
regexp: /\D/g,
},
{
type: 'input',
placeholder: '请输入',
field: 'endValue',
default: '',
clearable: true,
required: true,
required: false,
regexp: /\D/g,
},
],
col: 'col2',
clearable: true,
visable: true,
visible: true,
},
// 替换为下拉
{
......@@ -885,7 +926,7 @@ const classEditFormItems = ref<any>([{
type: "select",
field: "isUnique",
disabled: false,
default: 'N',
default: '',
options: [
{ label: "是", value: "Y", disabled: false },
{ label: "否", value: "N", disabled: false },
......@@ -909,7 +950,7 @@ const classEditFormItems = ref<any>([{
type: "select",
field: "isNotNull",
disabled: false,
default: 'N',
default: '',
options: [
{ label: "是", value: "Y", disabled: false },
{ label: "否", value: "N", disabled: false },
......@@ -973,8 +1014,18 @@ const drawerBtnClick = async (btn, info) => {
} else {
btn.loading = true;
console.log('drawerBtnClick', info);
const { orderNumLength, orderNum, fieldValueRange, startValue, endValue, fieldPrecision, dictionaryGuid, isUnique, isNotNull } = info;
const { orderNumLength, orderNum, startNumber, endNumber, fieldValueRange, startValue, endValue, fieldPrecision, dictionaryGuid, isUnique, isNotNull } = info;
// 判断长度orderNumLength,orderNum 要么都有值,要么都没有值,不能只有一个有值,一个没有值精确提醒
let fieldLengthCondition: any = '';
if ((orderNumLength === 'between' && !startNumber) || (orderNumLength === 'between' && !endNumber)) {
proxy.$ElMessage.error('请选择长度边界范围');
btn.loading = false;
return;
} else {
fieldLengthCondition = orderNumLength + '#' + startNumber + '#' + endNumber;
}
if (orderNumLength !== 'between') {
if (orderNumLength && !orderNum) {
proxy.$ElMessage.error('请填写长度');
btn.loading = false;
......@@ -985,13 +1036,14 @@ const drawerBtnClick = async (btn, info) => {
btn.loading = false;
return;
}
let fieldLengthCondition: any = '';
if (!orderNumLength && !orderNum) {
fieldLengthCondition = '';
}
if (orderNumLength && orderNum) {
fieldLengthCondition = orderNumLength + '#' + orderNum;
}
}
const params: any = [];
selectedRulesData.value.guids.forEach((item: any) => {
......@@ -1037,8 +1089,6 @@ const drawerBtnClick = async (btn, info) => {
btn.loading = false;
proxy.$ElMessage.error(res.msg);
}
}
}
......@@ -1047,10 +1097,13 @@ const drawerSelectChange = (val, row, info) => {
if (val === 'between') {
classEditFormItems.value.forEach(item => {
if (item.field === 'orderNum') {
item.visable = false;
item.visible = false;
}
if (item.field === 'orderNum1') {
item.visable = true;
item.visible = true;
}
if (item.field === 'orderNumLength') {
item.default = val;
}
});
}
......@@ -1657,18 +1710,9 @@ const selectChange = (val, row, info) => {
// 这里应该是onActivated 钩子,路由从configure-路由从configure-rules跳转过来要重新请求数据、
onActivated(async () => {
if (localStorage.getItem('shouldReloadData') === 'true') {
await getExecGuid();
activeName.value = 'second';
await getDataBaseTreeData();
await getDataBaseTableData({
exexGuid: execGuidInfo.value.execGuid
});
getDataBaseFieldData(
{
exexGuid: execGuidInfo.value.execGuid
}
);
getDbDirTableSelectData(1, {});
localStorage.removeItem('shouldReloadData');
}
});
......
......@@ -520,8 +520,10 @@ const validatePositiveInteger = (row: any, field: string) => {
<el-table-column prop="fieldPrecision" label="精度" width="120" align="center">
<template #default="scope">
<span v-if="!scope.row.isEdit || !editableFields.fieldPrecision">{{
scope.row.fieldPrecision ? scope.row.fieldPrecision : '--' }}</span>
<!-- 判断是否是浮点型,并且当前行是否可编辑 -->
<span v-if="!scope.row.isEdit || !editableFields.fieldPrecision || scope.row.fieldType !== 'float'">
{{ scope.row.fieldPrecision ? scope.row.fieldPrecision : '--' }}
</span>
<el-input v-else v-model="scope.row.fieldPrecision" placeholder="请输入精度" clearable />
</template>
</el-table-column>
......
......@@ -21,6 +21,7 @@ import {
} from "@/api/modules/dataInventory";
import existingTableSelect from "./existingTableSelect.vue";
import useUserStore from "@/store/modules/user";
import { download } from "@/utils/common";
/** 草稿中未建表时就可以编辑表相关信息。如果建表之后就只能编辑字段。 不能修改字段英文名称,数据库修改英文名就相当于删除再添加。都可以直接跳转到*/
......@@ -228,6 +229,7 @@ const selectedDatabaseTableInfo = ref<any>([]);
const datasourceSelectedRows: Ref<any> = ref([]);
// 记录数据库databaseGuid
const handlDsSelectedChange = (v, curr) => {
tableDataInfo.value[0].description = curr.description || '';
selectedDatabaseTableInfo.value = curr || '';
datasourceSelectedRows.value = v || [];
const params: any = [];
......@@ -374,7 +376,7 @@ const editableFields = {
classifyDetailGuid: true, // 分类可编辑
fieldType: true, // 字段类型可编辑
fieldChName: true, // 字段中文名可编辑
sourceFieldChName: true, // 源字段中文名可编辑
}
const tableFieldsLoading = ref(false)
......@@ -802,6 +804,7 @@ const saveOrUpdate = async (params: any = {}, type) => {
if (res1.code === proxy.$passCode) {
proxy.$ElMessage.success('编辑成功!');
userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath));
localStorage.setItem('shouldReloadData', 'true');
router.push({ name: 'classifyGradeCatalogue' });
} else {
saveBtn.value = false
......@@ -810,12 +813,12 @@ const saveOrUpdate = async (params: any = {}, type) => {
break;
case 2:
// 生成建表语句
const res2: any = await createTableSql(finalParams);
if (res2.code === proxy.$passCode) {
proxy.$ElMessage.success('建表sql生成成功!');
} else {
proxy.$ElMessage.error(res2.msg);
}
createTableSql(finalParams).then((res: any) => {
download(res, '分类分级目录数据.xlsx', 'excel')
});
break;
default:
break;
......@@ -975,7 +978,7 @@ onActivated(() => {
<span style="color:red;margin-left: 2px;">*</span>
</template>
<template #default="scope">
<el-input v-model="scope.row.tableName" placeholder="请输入表名称" />
<el-input v-model="scope.row.tableName" placeholder="请输入表名称" :disabled="route.query.state === '1'" />
</template>
</el-table-column>
......@@ -1019,7 +1022,9 @@ onActivated(() => {
<el-table-column prop="fieldChName" label="目标字段中文名" width="150" show-overflow-tooltip>
<!-- 可以编辑 -->
<template #default="scope">
<span v-if="!scope.row.isEdit || !editableFields.fieldChName">{{ scope.row.fieldChName ?
<span
v-if="!scope.row.isEdit || !editableFields.fieldChName || (scope.row.isPrimary === 'Y' && route.query.editOpt === '1')">{{
scope.row.fieldChName ?
scope.row.fieldChName
: '--' }}</span>
<el-input v-else v-model="scope.row.fieldChName" placeholder="请输入" />
......@@ -1029,7 +1034,9 @@ onActivated(() => {
<!-- 字段英文名(可编辑) -->
<el-table-column prop="fieldName" label="目标字段英文名" width="150" show-overflow-tooltip>
<template #default="scope">
<span v-if="!scope.row.isEdit || !editableFields.fieldName">{{ scope.row.fieldName ?
<span
v-if="!scope.row.isEdit || !editableFields.fieldName || (scope.row.isPrimary === 'Y' && route.query.editOpt === '1')">{{
scope.row.fieldName ?
scope.row.fieldName
: '--' }}</span>
<el-input v-else v-model="scope.row.fieldName" placeholder="必填"
......@@ -1037,25 +1044,29 @@ onActivated(() => {
</template>
</el-table-column>
<!-- 源数据库 -->
<el-table-column prop="sourceDatabase" label="源数据库" width="150" show-overflow-tooltip>
<el-table-column prop="sourceDatabase" label="源数据库" width="150" show-overflow-tooltip
v-if="route.query.foundMode == '1'">
<template #default="scope">
{{ scope.row.sourceDatabase ? scope.row.sourceDatabase : '--' }}
</template>
</el-table-column>
<!-- 源数据表 -->
<el-table-column prop="sourceTableName" label="源数据表" width="150" show-overflow-tooltip>
<el-table-column prop="sourceTableName" label="源数据表" width="150" show-overflow-tooltip
v-if="route.query.foundMode === '1'">
<template #default="scope">
{{ scope.row.sourceTableName ? scope.row.sourceTableName : '--' }}
</template>
</el-table-column>
<!-- 源字段中文 -->
<el-table-column prop="sourceFieldName" label="源字段中文" width="150" show-overflow-tooltip>
<el-table-column prop="sourceFieldName" label="源字段中文" width="150" show-overflow-tooltip
v-if="route.query.foundMode === '1'">
<template #default="scope">
{{ scope.row.sourceFieldName ? scope.row.sourceFieldName : '--' }}
</template>
</el-table-column>
<!-- 源字段英文 -->
<el-table-column prop="sourceFieldChName" label="源字段英文" width="120" show-overflow-tooltip>
<el-table-column prop="sourceFieldChName" label="源字段英文" width="120" show-overflow-tooltip
v-if="route.query.foundMode === '1'">
<template #default="scope">
<!-- {{ scope.row.sourceFieldName ? scope.row.sourceFieldName : '--' }} -->
......@@ -1067,7 +1078,7 @@ onActivated(() => {
<!-- 源端字段 fieldType fieldTypeProps-->
<el-table-column prop="fieldType" label="源端字段类型" width="120">
<template #default="scope">
<div v-if="scope.row.isEdit">
<div v-if="scope.row.isEdit && !(scope.row.isPrimary === 'Y' && $route.query.editOpt === '1')">
<el-select v-model="scope.row.fieldType" placeholder="选择类型" clearable filterable
:props="fieldTypeProps">
<el-option v-for="(item, index) in fieldData" :key="index" :label="item.label"
......@@ -1084,7 +1095,7 @@ onActivated(() => {
<el-table-column prop="fieldLength" label="长度" width="100" align="left">
<template #default="scope">
<!-- 非编辑状态 -->
<span v-if="!scope.row.isEdit">
<span v-if="!scope.row.isEdit || (scope.row.isPrimary === 'Y' && route.query.editOpt === '1')">
{{ ['varchar', 'decimal', 'char'].includes(scope.row.fieldType) ? scope.row.fieldLength || '--' : '--'
}}
</span>
......@@ -1128,9 +1139,9 @@ onActivated(() => {
<!-- 数据是否唯一(可编辑) -->
<el-table-column prop="isPrimary" label="是否主键" width="100" align="left">
<template #default="scope">
<span v-if="!scope.row.isEdit || !editableFields.isPrimary">{{ scope.row.isPrimary ?
(scope.row.isPrimary ===
'Y' ? '是' : '否') : '--' }}</span>
<span
v-if="!scope.row.isEdit || !editableFields.isPrimary || (scope.row.isPrimary === 'Y' && route.query.editOpt === '1')">{{
scope.row.isPrimary || '--' }}</span>
<el-select v-else v-model="scope.row.isPrimary" placeholder="请选择">
<el-option label="Y" value="Y" />
<el-option label="N" value="N" />
......@@ -1140,8 +1151,8 @@ onActivated(() => {
<!-- 是否必填(可编辑) -->
<el-table-column prop="notNull" label="是否必填" width="100" align="left">
<template #default="scope">
<span v-if="!scope.row.isEdit">{{ scope.row.notNull ? (scope.row.notNull ===
'Y' ? '是' : '否') : '--' }}</span>
<span v-if="!scope.row.isEdit || (scope.row.isPrimary === 'Y' && route.query.editOpt === '1')">{{
scope.row.notNull || '--' }}</span>
<el-select v-else v-model="scope.row.notNull" placeholder="请选择">
<el-option label="Y" value="Y" />
<el-option label="N" value="N" />
......@@ -1188,8 +1199,8 @@ onActivated(() => {
<template #default="scope">
<span class="text_btn" v-if="!scope.row.isEdit" @click="editRow(scope.row)">编辑</span>
<span class="text_btn" v-else @click="saveRow(scope.row)">保存</span>
<el-divider direction="vertical" />
<span class="text_btn" @click="deleteRow(scope.$index)">删除</span>
<el-divider direction="vertical" v-if="scope.row.isPrimary != 'Y'" />
<span class="text_btn" @click="deleteRow(scope.$index)" v-if="scope.row.isPrimary != 'Y'">删除</span>
</template>
</el-table-column>
</el-table>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!