|
@@ -40,7 +40,7 @@
|
|
|
<script>
|
|
|
|
|
|
import DynamicForm from '../treeTable/components/DynamicForm.vue';
|
|
|
-import { listTable, removeTableList } from "@/api/dragform/tableList";
|
|
|
+import { listTable } from "@/api/dragform/tableList";
|
|
|
import { addTreeTable, getTreeTable, updateTreeTable } from "@/api/treeTable/tableList";
|
|
|
import { getParticMenu, updateMenu } from "@/api/system/menu.js";
|
|
|
import { v4 as uuidv4 } from "uuid";
|
|
@@ -50,6 +50,8 @@ import {
|
|
|
getListName
|
|
|
} from "@/api/dragform/form.js";
|
|
|
// ?
|
|
|
+import { getTableInfo } from "@/api/system/table.js";
|
|
|
+
|
|
|
import { mapGetters, mapState } from "vuex";
|
|
|
export default {
|
|
|
name: "treeTableMange",
|
|
@@ -67,6 +69,8 @@ export default {
|
|
|
editor: [],
|
|
|
//查询单条的id参数
|
|
|
editorId: null,
|
|
|
+ editorTableId: null,
|
|
|
+ treeTableKey: "",
|
|
|
// 树形表单配置
|
|
|
treeFormItems: [
|
|
|
{
|
|
@@ -88,9 +92,9 @@ export default {
|
|
|
placeholder: '请输入菜单描述',
|
|
|
clearable: true,
|
|
|
},
|
|
|
- rules: [
|
|
|
- { required: true, message: '菜单描述不能为空', trigger: 'blur' }
|
|
|
- ]
|
|
|
+ // rules: [
|
|
|
+ // { required: true, message: '菜单描述不能为空', trigger: 'blur' }
|
|
|
+ // ]
|
|
|
},
|
|
|
{//routePath
|
|
|
label: '菜单路由',
|
|
@@ -306,7 +310,9 @@ export default {
|
|
|
editData: {},
|
|
|
isNeedNewMenu: false,
|
|
|
uuid: "",
|
|
|
- tableKey: "",// 表格的高度?
|
|
|
+ tableKey: "",// 表格的uuid
|
|
|
+ treeTableKey: "",//树形表格的uuid
|
|
|
+
|
|
|
menuOrderNum: 0,//?
|
|
|
// 修改表格时的menuId
|
|
|
menuId: "",
|
|
@@ -317,7 +323,6 @@ export default {
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
- // ?
|
|
|
...mapGetters(["addRoutes"]),
|
|
|
...mapState({
|
|
|
databaseName: (state) => state.user.dataSource.databaseName,
|
|
@@ -342,15 +347,13 @@ export default {
|
|
|
methods: {
|
|
|
//点击树形菜单配置的取消
|
|
|
cancelTree(payload) {
|
|
|
- console.log('[点击树形菜单配置的取消]', payload)
|
|
|
this.$refs.dynamicForm.resetQuery();
|
|
|
- this.$refs.treeTableFormItems.resetQuery();
|
|
|
+ this.$refs.treeTableFormItems.resetQuery();
|
|
|
},
|
|
|
//点击树形菜单配置的确认
|
|
|
confirmTree(payload) {
|
|
|
this.$refs.dynamicForm.$refs.queryForm.validate((valid) => {
|
|
|
if (valid) {
|
|
|
- console.log('表单校验通过,打印数据----上半部分----:', payload);
|
|
|
let formTopData = payload.data
|
|
|
// 这里可以继续处理提交逻辑
|
|
|
this.$refs.treeTableFormItems.$refs.queryForm.validate(async (valid) => {
|
|
@@ -362,10 +365,9 @@ export default {
|
|
|
} else {
|
|
|
let data = {}
|
|
|
let judgmentMenuResult = await this.judgmentMenu(this.mode);
|
|
|
- console.log('judgmentMenu的结果:', judgmentMenuResult);
|
|
|
if (judgmentMenuResult.code == 200) {
|
|
|
data = {
|
|
|
- menuId: formTopData.menuId,//菜单id
|
|
|
+ menuId: judgmentMenuResult.data,//菜单id
|
|
|
menuName: formTopData.menuName,//菜单名称
|
|
|
treeDesc: formTopData.treeDesc,//树形名称
|
|
|
treeTableName: formTopData.treeTableName,//树形绑定的表名
|
|
@@ -375,16 +377,15 @@ export default {
|
|
|
tableId: x.tableId,//关联表
|
|
|
tableNameDes: this.tableList[0].dtName,//关联表
|
|
|
treeTableJoinTable: this.tableList[0].dtTableName,//关联表表名
|
|
|
+ treeTableKey: this.treeTableKey// 树形菜单的treeTableKey
|
|
|
}
|
|
|
- console.log('data-----', data)
|
|
|
if (this.mode == 2) {
|
|
|
let res = await addTreeTable(data);
|
|
|
- console.log('res', res)
|
|
|
if (res.code == 200) {
|
|
|
this.$message.success("新增成功");
|
|
|
this.$tab.closePage();
|
|
|
this.$router.push({
|
|
|
- path: "/system/fromModel/index/treeTable",
|
|
|
+ path: "/system/fromModel/index/treeTable/index",
|
|
|
});
|
|
|
} else {
|
|
|
this.$message.warning("新增成功");
|
|
@@ -392,7 +393,7 @@ export default {
|
|
|
} else {
|
|
|
data = {
|
|
|
id: this.editorId,
|
|
|
- menuId: formTopData.menuId,//菜单id
|
|
|
+ menuId: judgmentMenuResult.data,//菜单id
|
|
|
menuName: formTopData.menuName,//菜单名称
|
|
|
treeDesc: formTopData.treeDesc,//树形名称
|
|
|
treeTableName: formTopData.treeTableName,//树形绑定的表名
|
|
@@ -402,14 +403,14 @@ export default {
|
|
|
tableId: x.tableId,//关联表
|
|
|
tableNameDes: this.tableList[0].dtName,//关联表
|
|
|
treeTableJoinTable: this.tableList[0].dtTableName,//关联表表名
|
|
|
+ treeTableKey: this.treeTableKey// 树形菜单的treeTableKey
|
|
|
}
|
|
|
let res = await updateTreeTable(data);
|
|
|
- // console.log('res', res)
|
|
|
if (res.code == 200) {
|
|
|
this.$message.success("修改成功");
|
|
|
this.$tab.closePage();
|
|
|
this.$router.push({
|
|
|
- path: "/system/fromModel/index/treeTable",
|
|
|
+ path: "/system/fromModel/index/treeTable/index",
|
|
|
});
|
|
|
} else {
|
|
|
this.$message.warning("修改失败");
|
|
@@ -418,13 +419,11 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- console.log('表单校验未通过');
|
|
|
this.$message.error("请完善表单配置信息");
|
|
|
return false; // 阻止提交
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
- console.log('表单校验未通过');
|
|
|
this.$message.error("请完善树形菜单配置信息");
|
|
|
return false; // 阻止提交
|
|
|
}
|
|
@@ -434,13 +433,14 @@ export default {
|
|
|
async judgmentMenu(mode) {
|
|
|
let result;
|
|
|
if (mode == 2) {
|
|
|
- // console.log('?????????????????????????????',this.$refs.dynamicForm.queryParams['menuName'])
|
|
|
let menuName = this.$refs.dynamicForm.queryParams['menuName']
|
|
|
let parentId = this.$refs.dynamicForm.queryParams['menuId']
|
|
|
this.uuid = uuidv4();
|
|
|
this.tableKey = uuidv4();
|
|
|
+ this.treeTableKey = uuidv4();
|
|
|
let tableKeyObj = {
|
|
|
tableKey: this.uuid,
|
|
|
+ treeTableKey: this.treeTableKey,
|
|
|
};
|
|
|
let payLoad = {
|
|
|
component: "tablelist/commonTable/listTreeInfo",
|
|
@@ -458,28 +458,52 @@ export default {
|
|
|
tenantId: this.tenantId,
|
|
|
};
|
|
|
result = await addMenu(payLoad);
|
|
|
- console.log('result', result)
|
|
|
} else {
|
|
|
- console.log('mode', mode)
|
|
|
- //原菜单存在,仅需要修改菜单数据
|
|
|
let menuName = this.$refs.dynamicForm.queryParams['menuName']
|
|
|
let menuId = this.$refs.dynamicForm.queryParams['menuId']
|
|
|
+ if (this.menuId && !this.isNeedNewMenu) {
|
|
|
+ //原菜单存在,仅需要修改菜单数据
|
|
|
+ let payLoad = {
|
|
|
+ menuId: this.menuId,
|
|
|
+ menuName: menuName,
|
|
|
+ parentId: menuId,
|
|
|
+ component: "tablelist/commonTable/listTreeInfo",
|
|
|
+ icon: "",
|
|
|
+ isCache: "0",
|
|
|
+ isFrame: "1",
|
|
|
+ menuType: "C",
|
|
|
+ orderNum: this.menuOrderNum,
|
|
|
+ status: "0",
|
|
|
+ visible: "0",
|
|
|
+ tenantId: this.tenantId,
|
|
|
+ };
|
|
|
+ result = await updateMenu(payLoad);
|
|
|
+ } else if (this.isNeedNewMenu) {
|
|
|
+ //给旧表格新增菜单
|
|
|
+ this.treeTableKey = uuidv4();
|
|
|
+ let tableKeyObj = {
|
|
|
+ tableKey: this.editData.tableKey, //取表格
|
|
|
+ treeTableKey: this.treeTableKey// 新增树形菜单路由的树形Key
|
|
|
+ };
|
|
|
+ let payLoad = {
|
|
|
+ component: "tablelist/commonTable/listTreeInfo",
|
|
|
+ icon: "",
|
|
|
+ isCache: "0",
|
|
|
+ isFrame: "1",
|
|
|
+ menuName: menuName,
|
|
|
+ menuType: "C",
|
|
|
+ orderNum: this.menuOrderNum,
|
|
|
+ // parentId: this.formData.routePath,
|
|
|
+ parentId: menuId,
|
|
|
+ path: this.uuid,
|
|
|
+ query: JSON.stringify(tableKeyObj),
|
|
|
+ status: "0",
|
|
|
+ visible: "0",
|
|
|
+ tenantId: this.tenantId,
|
|
|
+ };
|
|
|
+ result = await addMenu(payLoad);
|
|
|
+ }
|
|
|
|
|
|
- let payLoad = {
|
|
|
- menuId: menuId,
|
|
|
- menuName: menuName,
|
|
|
- parentId: this.parentId,
|
|
|
- component: "tablelist/commonTable/listTreeInfo",
|
|
|
- icon: "",
|
|
|
- isCache: "0",
|
|
|
- isFrame: "1",
|
|
|
- menuType: "C",
|
|
|
- orderNum: this.menuOrderNum,
|
|
|
- status: "0",
|
|
|
- visible: "0",
|
|
|
- tenantId: this.tenantId,
|
|
|
- };
|
|
|
- result = await updateMenu(payLoad);
|
|
|
}
|
|
|
return result; // 返回结果
|
|
|
},
|
|
@@ -488,7 +512,9 @@ export default {
|
|
|
},
|
|
|
// 监听菜单路由
|
|
|
handleMenuIdChange(value) {
|
|
|
- let targetMenu = this.getTargetMenu(this.treeFormItems[2].menus);
|
|
|
+ // let targetMenu = this.getTargetMenu(this.treeFormItems[2].menus);
|
|
|
+ let targetMenu = this.getTargetMenu(this.menus);
|
|
|
+
|
|
|
this.menuOrderNum = targetMenu.children ? targetMenu.children.length : 0;
|
|
|
},
|
|
|
// 获取目标menu
|
|
@@ -539,7 +565,6 @@ export default {
|
|
|
},
|
|
|
// 关联表选择后触发的事件
|
|
|
handleTableChange(value) {
|
|
|
- console.log('[value]', value)
|
|
|
// 1. 清除 treeTablePrimaryKey treeTableDgl
|
|
|
this.$refs.dynamicForm.queryParams.treeTablePrimaryKey = null; // 或者设置为空数组 []
|
|
|
this.$refs.dynamicForm.queryParams.treeTableDgl = null; // 或者设置为空数组 []
|
|
@@ -581,11 +606,10 @@ export default {
|
|
|
},
|
|
|
// 监听表单值发生变化queryParams
|
|
|
handleQueryParamsChange(newParams) {
|
|
|
- console.log('queryParams 发生变化:', newParams);
|
|
|
+ // console.log('queryParams 发生变化:', newParams);
|
|
|
},
|
|
|
- // 监听表单值发生变化-表单配置的上方表单
|
|
|
+ // 监听表单值发生变化-表单配置的下方表单
|
|
|
handleQueryParamsTableChange(newParams) {
|
|
|
- console.log('queryParams 表单配置的下方表单发生变化:', newParams);
|
|
|
if (newParams.tableId) {
|
|
|
this.tableLoading = true
|
|
|
this.getList(newParams.tableId)
|
|
@@ -593,42 +617,36 @@ export default {
|
|
|
},
|
|
|
/** 查询动态格列表 */
|
|
|
getList(id) {
|
|
|
- console.log('调用getList:', id);
|
|
|
-
|
|
|
let queryParams = {
|
|
|
isEnablePaging: false,
|
|
|
}
|
|
|
listTable(queryParams).then((response) => {
|
|
|
if (response.code == 200) {
|
|
|
+ this.treeTableFormItems[0].options = response.rows.map(item => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ label: item.dtName,
|
|
|
+ value: item.tId,
|
|
|
+ }
|
|
|
+ })
|
|
|
if (id) {
|
|
|
- console.log('----------------------', id)
|
|
|
+ console.log('--------newParams.tableId存在--------------', id,this.$refs.treeTableFormItems.queryParams)
|
|
|
+ // tableList是表格字段配置下面的表格
|
|
|
this.tableList = [];
|
|
|
- // 如果id存在,则找出response.rows中id等于response.rows的item.tId的一项
|
|
|
+ // 如果id存在,则找出response.rows中id等于response.rows的item.tId的一项,给表格字段配置下面的表格赋值
|
|
|
const selectedItem = response.rows.find(item => item.tId == id);
|
|
|
if (selectedItem) {
|
|
|
- console.log('selectedItem', selectedItem);
|
|
|
this.tableList = [selectedItem];
|
|
|
this.tableLoading = false
|
|
|
- this.treeTableFormItems[0].options = response.rows.map(item => {
|
|
|
- return {
|
|
|
- ...item,
|
|
|
- label: item.dtName,
|
|
|
- value: item.tId,
|
|
|
- }
|
|
|
- })
|
|
|
+ //让关联表格下拉框有值
|
|
|
+
|
|
|
} else {
|
|
|
console.error("未找到与提供的ID匹配的项");
|
|
|
this.tableList = [];
|
|
|
this.tableLoading = false
|
|
|
}
|
|
|
} else {
|
|
|
- this.treeTableFormItems[0].options = response.rows.map(item => {
|
|
|
- return {
|
|
|
- ...item,
|
|
|
- label: item.dtName,
|
|
|
- value: item.tId,
|
|
|
- }
|
|
|
- })
|
|
|
+
|
|
|
this.loading = false
|
|
|
this.tableLoading = false
|
|
|
}
|
|
@@ -639,6 +657,14 @@ export default {
|
|
|
},
|
|
|
async initTableData(editorId) {
|
|
|
let id = editorId
|
|
|
+ let tableId = Number(this.editorTableId);
|
|
|
+ let treeTableKey = this.treeTableKey;
|
|
|
+ let tableKeyData = await getTableInfo(tableId);
|
|
|
+ let tableKey;
|
|
|
+ if (tableKeyData.code === 200) {
|
|
|
+ tableKey = tableKeyData.data.tableKey
|
|
|
+ this.editData = tableKeyData.data;
|
|
|
+ }
|
|
|
let res = await getTreeTable(id);
|
|
|
if (res.code === 200) {
|
|
|
this.editor = res.data
|
|
@@ -663,55 +689,55 @@ export default {
|
|
|
treeTableCondition,
|
|
|
});
|
|
|
Object.assign(this.$refs.treeTableFormItems.queryParams, {
|
|
|
- tableId
|
|
|
+ tableId:Number(tableId),
|
|
|
+ // dtName: this.editData.dtName
|
|
|
});
|
|
|
-
|
|
|
this.$refs.dynamicForm.queryParams.menuId = this.getParentMenuId(
|
|
|
res.data.menuId,
|
|
|
this.treeFormItems[2].menus,
|
|
|
{}
|
|
|
- ).menuId;
|
|
|
- this.parentId = this.getParentMenuId(
|
|
|
- res.data.menuId,
|
|
|
- this.treeFormItems[2].menus,
|
|
|
- {}
|
|
|
- ).parentId;
|
|
|
+ );
|
|
|
+
|
|
|
if (!this.$refs.dynamicForm.queryParams.menuId) {
|
|
|
this.$message.warning("该表格菜单路由已经删除,请重新配置");
|
|
|
this.isNeedNewMenu = true;
|
|
|
}
|
|
|
- // 原来的参考页面是表格页面,有一步调用以下接口赋值menuId的操作,而menuId的值是判断菜单路由的一个条件,入参是tableKey,但是我目前不知道tableKey应该是什么值,所以也没有用这个方法
|
|
|
- //等下周问一下。
|
|
|
- // let val = await getParticMenu(res.data.tableKey);
|
|
|
- // if (val.code == 200) {
|
|
|
- // this.menuId = val.data?.menuId;
|
|
|
- // }
|
|
|
- this.menuId = res.data.menuId;
|
|
|
+
|
|
|
+ if (treeTableKey) {
|
|
|
+ let val = await getParticMenu(treeTableKey);
|
|
|
+ if (val.code == 200) {
|
|
|
+ this.menuId = res.data?.menuId;
|
|
|
+ // this.$refs.dynamicForm.queryParams['menuId'] = val.data?.menuId;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
} else {
|
|
|
this.editor = []
|
|
|
}
|
|
|
},
|
|
|
// 获取父级menuId
|
|
|
getParentMenuId(menuId, menus) {
|
|
|
- console.log('menuId----', menuId, menus)
|
|
|
let res;
|
|
|
for (let i = 0; i < menus.length; i++) {
|
|
|
let item = menus[i];
|
|
|
- if (item.menuId === menuId) {
|
|
|
- // 如果找到目标 menuId,直接返回它自己
|
|
|
- res = item;
|
|
|
+ if (item.menuId == menuId) {
|
|
|
+ res = item.parentId;
|
|
|
break;
|
|
|
} else if (item.children?.length) {
|
|
|
- // 递归查找子菜单
|
|
|
- res = this.getParentMenuId(menuId, item.children);
|
|
|
- if (res) {
|
|
|
- res = res
|
|
|
- // 如果在子菜单中找到目标 menuId,直接返回它自己
|
|
|
- break;
|
|
|
+ if (
|
|
|
+ this.getParentMenuId(
|
|
|
+ menuId,
|
|
|
+ JSON.parse(JSON.stringify(item.children))
|
|
|
+ )
|
|
|
+ ) {
|
|
|
+ res = this.getParentMenuId(
|
|
|
+ menuId,
|
|
|
+ JSON.parse(JSON.stringify(item.children))
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return res
|
|
|
+ return res;
|
|
|
},
|
|
|
},
|
|
|
created() {
|
|
@@ -724,6 +750,9 @@ export default {
|
|
|
this.mode = this.$route.query.mode
|
|
|
if (this.$route.query.editorId) {
|
|
|
this.editorId = this.$route.query.editorId
|
|
|
+ this.editorTableId = this.$route.query.editorTableId
|
|
|
+ this.treeTableKey = this.$route.query.treeTableKey
|
|
|
+
|
|
|
await this.initTableData(this.editorId);
|
|
|
}
|
|
|
|