1.0.24 • Published 12 months ago

@slacking/table v1.0.24

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

@slacking/table

表格

Example

import { defineComponent, inject, ref, set } from "vue";
import {
  useTable,
  defineTableColumns,
  defineTableSchema,
} from "@slacking/table";
import { TableColumn, Form, FormItem, Button } from "element-ui";
// element-ui 多级表头固定列bug,未修复前,需要保证子表头的width之和等于父表头的宽度
const _columns = defineTableColumns([
  {
    props: {
      type: "selection",
    },
    // selectable(row, index) {
    //   return index === 2;
    // },
    renderHeader() {
      return 222;
    },
  },
  {
    label: "姓名",
    fixed: true,
    sortable: true,
    width: 400,
    required: true,
    hideLabelText: false,
    subHeaders: [
      // {
      //   type: "expand",
      //   scopedSlots: {
      //     default() {
      //       return "someExpandSlot";
      //     },
      //   },
      // },
      {
        prop: "name-0",
        label: "姓名0",
        width: 200,
        required: true,
        type: "Select",
        options: [
          { value: "1", label: "吃" },
          { value: "2", label: "喝" },
          { value: "3", label: "玩" },
          { value: "4", label: "乐" },
        ],
      },
      {
        prop: "name-1",
        label: "姓名-1",
        required: true,
        dependOn: {
          "name-0"({ val, updateValue }) {
            updateValue(val);
          },
        },
        width: 200,
      },
    ],
  },
  {
    prop: "age2",
    label: "年龄2",
    type: "Select",
    width: 200,
    options: [
      { value: "1", label: "吃" },
      { value: "2", label: "喝" },
      { value: "3", label: "玩" },
      { value: "4", label: "乐" },
    ],
  },
  {
    label: "爱好3",
    width: 500,
    type: "Mix",
    list: [
      { label: "第一个爱好", prop: "lovers-1" },
      { label: "第二个爱好", prop: "lovers-2" },
    ],
  },
  {
    label: "爱好4",
    width: 500,
    prop: "lover4",
    type: "Mix",
    list: [
      { label: "第一个爱好", prop: "lovers-4-1" },
      { label: "第二个爱好", prop: "lovers-4-2" },
    ],
  },
  {
    prop: "lover5",
    label: "爱好5",
    width: 500,
  },
  {
    prop: "lover6",
    label: "爱好6",
    width: 500,
  },
  {
    prop: "lover7",
    label: "爱好7",
    width: 500,
  },
  {
    prop: "lover8",
    label: "爱好8",
    minWidth: 200,
    required: true,
    // scopedSlots: {
    //   default(item) {
    //     return <div>xxxx</div>;
    //   },
    // },
  },
]);
const _data = [{ id: 1 }, { id: 2 }];
//element tree型表格多选存在bug暂未修复
const _treeData = [
  {
    id: "0",
    age2: "1",
    children: [
      {
        id: "sub0-0",
      },
      {
        id: "sub0-1",
      },
    ],
  },

  {
    id: 2,
    children: [
      {
        id: "sub-2-1",
      },
      {
        id: "sub-2-2",
      },
    ],
  },
  {
    id: 3,
    children: [
      {
        id: "sub-3-1",
      },
      {
        id: "sub-3-2",
      },
    ],
  },
  {
    id: 4,
    children: [
      {
        id: "sub-4-1",
      },
      {
        id: "sub-4-2",
      },
    ],
  },
];
export default defineComponent({
  components: { TableColumn, Form, FormItem },
  setup() {
    const model = ref(_data);
    const { formModel = { value: {} } } = inject("TEST_FORM") as any;
    const { Table, formRef, defineDependOn } = useTable();
    const selectModel = ref({});
    //非同一行dependOn配置
    //例子:第一行的age2依赖于第二行的age2
    defineDependOn({
      "0.age2": {
        "1.age2"({ val, updateValue }) {
          updateValue(val);
        },
      },
    });
    const schema = ref(
      defineTableSchema({
        readonly: false,
        list: _columns,
        rowKey: "id",
        showOverflowTooltip: true,
        hideRequiredAsterisk: true,
        hideLabelText: true,
      })
    );
    const click = () => {
      formRef.value.validate();
    };
    const singleSelectValue = ref("0");
    const multiSelectValue = ref([]);
    return () => (
      <div>
        <Table
          value={multiSelectValue.value}
          multiple={true}
          props={{
            model: model.value,
          }}
          schema={schema.value}
          on={{
            input: (val) => {
              console.log(val);
              multiSelectValue.value = val;
            },
            "row-click"(args) {
              console.log("row-click", args);
            },
            "selection-change"(args) {
              console.log("selection-change", args);
            },
            "current-change": (args) => {
              console.log("current-change1", args);
            },
          }}
        ></Table>
        <Button onClick={click} type="primary">
          提交
        </Button>
      </div>
    );
  },
});
1.0.19

12 months ago

1.0.18

12 months ago

1.0.17

12 months ago

1.0.16

12 months ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.22

12 months ago

1.0.21

12 months ago

1.0.20

12 months ago

1.0.24

12 months ago

1.0.23

12 months ago

1.0.11

12 months ago

1.0.10

12 months ago

1.0.15

12 months ago

1.0.14

12 months ago

1.0.13

12 months ago

1.0.12

12 months ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago