|
@@ -208,36 +208,19 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
+ v-show="isShowExcuteCol"
|
|
|
label="操作"
|
|
|
align="center"
|
|
|
class-name="small-padding fixed-width"
|
|
|
>
|
|
|
<template slot-scope="scope">
|
|
|
- <el-dropdown>
|
|
|
- <el-button type="warning" plain size="small">
|
|
|
- 处理<i class="el-icon-arrow-down el-icon--right"></i>
|
|
|
- </el-button>
|
|
|
- <el-dropdown-menu slot="dropdown">
|
|
|
- <el-dropdown-item>
|
|
|
- <el-button
|
|
|
- size="mini"
|
|
|
- type="text"
|
|
|
- icon="el-icon-edit"
|
|
|
- @click="handleUpdate(scope.row)"
|
|
|
- >修改
|
|
|
- </el-button>
|
|
|
- </el-dropdown-item>
|
|
|
- <el-dropdown-item>
|
|
|
- <el-button
|
|
|
- size="mini"
|
|
|
- type="text"
|
|
|
- icon="el-icon-delete"
|
|
|
- @click="handleDelete(scope.row)"
|
|
|
- >删除
|
|
|
- </el-button>
|
|
|
- </el-dropdown-item>
|
|
|
- </el-dropdown-menu>
|
|
|
- </el-dropdown>
|
|
|
+ <Menu
|
|
|
+ :row="scope.row"
|
|
|
+ v-for="btnObj in excuteBtnArr"
|
|
|
+ :key="btnObj.id"
|
|
|
+ :listAll="btnObj"
|
|
|
+ @excuteHandler="excuteHandler"
|
|
|
+ ></Menu>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -288,10 +271,11 @@ import { getToken } from "@/utils/auth";
|
|
|
import Queryfrom from "@/views/tablelist/commonTable/queryfrom.vue";
|
|
|
import { camelCase } from "@/utils";
|
|
|
import { inputDisableComplete } from "@/utils/other";
|
|
|
+import Menu from "./BtnMenu.vue";
|
|
|
|
|
|
export default {
|
|
|
name: "listInfo",
|
|
|
- components: { Queryfrom },
|
|
|
+ components: { Queryfrom, Menu },
|
|
|
data() {
|
|
|
return {
|
|
|
// 遮罩层
|
|
@@ -376,6 +360,8 @@ export default {
|
|
|
styleList: [],
|
|
|
// 字典样式对象
|
|
|
dictStyleObj: {},
|
|
|
+ // 操作列 按钮数据
|
|
|
+ excuteBtnArr: [],
|
|
|
};
|
|
|
},
|
|
|
|
|
@@ -391,6 +377,12 @@ export default {
|
|
|
deep: true,
|
|
|
},
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ isShowExcuteCol() {
|
|
|
+ // return true;
|
|
|
+ return !this.excuteBtnArr?.every((arr) => arr.children.length == 0);
|
|
|
+ },
|
|
|
+ },
|
|
|
methods: {
|
|
|
/** 查询列表 */
|
|
|
getList(queryParams) {
|
|
@@ -409,6 +401,8 @@ export default {
|
|
|
);
|
|
|
return item;
|
|
|
});
|
|
|
+ // 获取操作列的按钮数据
|
|
|
+ this.excuteBtnArr = res.data.resultMap.button;
|
|
|
// console.log('res', this.templateInfo)
|
|
|
this.queryParams.orderByColumn =
|
|
|
res.data.resultMap.querySql.orderByColumn;
|
|
@@ -576,13 +570,38 @@ export default {
|
|
|
});
|
|
|
});
|
|
|
},
|
|
|
+ longestCommonSubstring(strs) {
|
|
|
+ if (!strs || strs.includes("")) return "";
|
|
|
+ let str1_Length = strs[0].length;
|
|
|
+ let str_Nums = strs.length;
|
|
|
+ let flag = 0;
|
|
|
+ for (let i = 0; i < str1_Length && flag == 0; i++) {
|
|
|
+ let char = strs[0][i];
|
|
|
+ for (var j = 1; j < str_Nums; j++) {
|
|
|
+ if (char !== strs[j][i] || i == strs[j].length) {
|
|
|
+ return strs[1].substring(0, i);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return strs[0];
|
|
|
+ },
|
|
|
+
|
|
|
/** 修改按钮操作 */
|
|
|
handleUpdate(row) {
|
|
|
+ console.log(row);
|
|
|
getInfoBySqlKey(this.templateInfo.template.sqlKey).then(({ data }) => {
|
|
|
if (!data || !data.dfVueTemplate) {
|
|
|
this.$message.error("当前表格未绑定表单!");
|
|
|
return;
|
|
|
}
|
|
|
+ // let fieldList = Object.keys(row);
|
|
|
+ // let tableName = this.longestCommonSubstring(fieldList);
|
|
|
+ // fieldList.forEach((field) => {
|
|
|
+ // let realField = field.replace(tableName, "");
|
|
|
+ // realField = realField[0].toLocaleLowerCase() + realField.substring(1);
|
|
|
+ // row[realField] = row[field];
|
|
|
+ // });
|
|
|
+ this.addRealFieldName(row);
|
|
|
Object.assign(this.defaultValue, row);
|
|
|
this.jsonData = JSON.parse(data.dfVueTemplate);
|
|
|
this.open = true;
|
|
@@ -606,6 +625,16 @@ export default {
|
|
|
this.form.password = "";
|
|
|
});
|
|
|
},
|
|
|
+ // 添加真正的字段名
|
|
|
+ addRealFieldName(row) {
|
|
|
+ let fieldList = Object.keys(row);
|
|
|
+ let tableName = this.longestCommonSubstring(fieldList);
|
|
|
+ fieldList.forEach((field) => {
|
|
|
+ let realField = field.replace(tableName, "");
|
|
|
+ realField = realField[0].toLocaleLowerCase() + realField.substring(1);
|
|
|
+ row[realField] = row[field];
|
|
|
+ });
|
|
|
+ },
|
|
|
|
|
|
/** 提交按钮 */
|
|
|
submitForm: function () {
|
|
@@ -634,6 +663,7 @@ export default {
|
|
|
handleDelete(row) {
|
|
|
let delIds = this.ids;
|
|
|
let primary = camelCase(this.templateInfo.template?.primaryKey);
|
|
|
+ this.addRealFieldName(row);
|
|
|
if (row[primary] != undefined && row[primary] != null) {
|
|
|
delIds = [];
|
|
|
delIds.push(row[primary]);
|
|
@@ -909,6 +939,40 @@ export default {
|
|
|
});
|
|
|
});
|
|
|
},
|
|
|
+
|
|
|
+ // 内链页面跳转
|
|
|
+ routerHandler(link, type) {
|
|
|
+ console.log(link);
|
|
|
+ if (type == "3") {
|
|
|
+ this.$router.push(link);
|
|
|
+ } else {
|
|
|
+ window.open("http://" + link, "_blank");
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 操作列回调
|
|
|
+ excuteHandler(btnData, row) {
|
|
|
+ console.log(btnData, row);
|
|
|
+ let { btnType, btnParams } = btnData;
|
|
|
+ switch (
|
|
|
+ btnType //3:内链 6:目录 7:外链 8:修改 9:删除
|
|
|
+ ) {
|
|
|
+ case "3":
|
|
|
+ this.routerHandler(btnParams, btnType);
|
|
|
+ break;
|
|
|
+ case "7":
|
|
|
+ this.routerHandler(btnParams, btnType);
|
|
|
+ break;
|
|
|
+ case "8":
|
|
|
+ this.handleUpdate(row);
|
|
|
+ break;
|
|
|
+ case "9":
|
|
|
+ this.handleDelete(row);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ },
|
|
|
},
|
|
|
};
|
|
|
</script>
|