columns.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { ref } from "vue";
  2. import { tableDataDrag } from "../data";
  3. import { clone } from "@pureadmin/utils";
  4. import { message } from "@/utils/message";
  5. import { CustomMouseMenu } from "@howdyjs/mouse-menu";
  6. export function useColumns() {
  7. const dataList = ref(clone(tableDataDrag, true));
  8. const columns: TableColumnList = [
  9. {
  10. label: "ID",
  11. prop: "id"
  12. },
  13. {
  14. label: "日期",
  15. prop: "date"
  16. },
  17. {
  18. label: "姓名",
  19. prop: "name"
  20. }
  21. ];
  22. // 配置参考:https://kongfandong.cn/howdy/mouse-menu/readme
  23. const menuOptions = {
  24. menuList: [
  25. {
  26. label: ({ id }) => `ID为:${id}`,
  27. disabled: true
  28. },
  29. {
  30. label: "修改",
  31. tips: "Edit",
  32. fn: row =>
  33. message(
  34. `您修改了第 ${
  35. dataList.value.findIndex(v => v.id === row.id) + 1
  36. } 行,数据为:${JSON.stringify(row)}`,
  37. {
  38. type: "success"
  39. }
  40. )
  41. }
  42. ]
  43. };
  44. function showMouseMenu(row, column, event) {
  45. event.preventDefault();
  46. const { x, y } = event;
  47. const ctx = CustomMouseMenu({
  48. el: event.currentTarget,
  49. params: row,
  50. // 菜单容器的CSS设置
  51. menuWrapperCss: {
  52. background: "var(--el-bg-color)"
  53. },
  54. menuItemCss: {
  55. labelColor: "var(--el-text-color)",
  56. hoverLabelColor: "var(--el-color-primary)",
  57. hoverTipsColor: "var(--el-color-primary)"
  58. },
  59. ...menuOptions
  60. });
  61. ctx.show(x, y);
  62. }
  63. return {
  64. columns,
  65. dataList,
  66. showMouseMenu
  67. };
  68. }