0.0.10 • Published 2 years ago

tf-low-code-vue3-vite v0.0.10

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

版本内容

使用 element-plus 1.3.0-beta.1 以上版本

使用 vue3.2.23 以上版本

使用 vite2.7.0 以上版本 node 版本 14 以上

使用方法

安装

npm install tf-low-code-vue3-vite -S

快速运行

import { createApp } from "vue";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
import App from "./App.vue";
import LForm from "tf-low-code-vue3-vite";
import LTable from "tf-low-code-vue3-vite";

const app = createApp(App);

app.use(ElementPlus).use(LForm).use(LTable).mount("#app");

表格使用

<template>
  <!-- <LForm :form="form" :options="options" :formItems="formItems" /> -->
  <LTable
    ref="tableRef"
    :data="listData"
    :columns="columns"
    :operates="operates"
    :options="options"
    @handleSelectionChange="handleSelectionChange"
    @confirmEdit="confirmEdit"
    @sizeChange="sizeChange"
    @currentChange="currentChange"
    @prevClick="prevClick"
    @nextClick="nextClick"
  >
    <template v-slot:culumnsheader>
      <div>这是自定义叫culumnsheader的表头</div>
    </template>
    <template v-slot:culumnRender>
      <div>这是自定义叫culumnRender的列</div>
    </template>
    <template v-slot:emptySlot>
      <div>这是在options中配置的空内容,在没数据的时候显示</div>
    </template>
    <template v-slot:expendRowRender="record">
      <el-form label-position="left" class="demo-table-expand">
        <el-form-item label="名称">
          <span>{{ record.row.name }}</span>
        </el-form-item>
        <el-form-item label="日期">
          <span>{{ record.row.date }}</span>
        </el-form-item>
        <el-form-item label="地址">
          <span>{{ record.row.address }}</span>
        </el-form-item>
      </el-form>
    </template>
  </LTable>
</template>
<script setup>
import { reactive } from "vue";
const operates = reactive({
  width: "auto",
  type: "text",
  plain: false,
  fixed: false,
  label: "操作区",
  list: [
    {
      show: true,
      inlineEdit: false, //是否行内编辑
      label: "编辑", //按钮名称
      type: "primary", //按钮状态
      disabled: false, //是否可编辑
      plain: false, //是否朴素按钮
      method(key, value) {
        console.log(key);
        console.log(value);
      },
    },
  ],
});
const options = reactive({
  stripe: false, // 是否为斑马纹 table
  loading: false, // 是否添加表格loading加载动画
  highlightCurrentRow: false, // 是否支持当前行高亮显示
  mutiSelect: false, // 是否支持列表项选中功能
  border: false, // 是否显示表格竖线
  expendRowRender: true, // 是否展开行
  maxHeight: 500, //最大高度
  emptySlot: "emptySlot", //空状态时的插槽
  pagination: {
    align: "center", //配置分页对齐方式
    //表格分页配置
    layout: "prev, pager, next",
    title: 50,
    background: true,
    small: false,
    pageSize: 10,
    pageCount: 10,
    //currentPage: 1,
    pageSizes: [10, 20, 30, 40],
    disabled: false,
    sizeChange(e) {
      //分页页码大小变动时候触发的事件
      console.log(e);
    },
    currentChange(e) {
      //分页当前页变动时候触发的事件
      console.log(e);
    },
    prevClick(e) {
      //分页中用户点击上一页按钮改变当前页后触发
      console.log(e);
    },
    nextClick(e) {
      //分页中用户点击下一页按钮改变当前页后触发
      console.log(e);
    },
  },
});
const columns = reactive([
  {
    prop: "date",
    label: "日期",
    datePicker: true,
    show: true, //是否展示
    align: "center", //对齐方式,默认center
    width: "300px", //宽度
    sortable: false, //是否可排序,默认false
    //filters数据过滤的选项
    //filter-method(){}数据过滤使用的方法
    /* render: function (value, value2) {
      //重新自定义表格内的数据属性
      value2.row.date = "1";
      return;
    }, */
    /* scopedSlots: {
      customHeader: "culumnsheader", //自定义表头的插槽名
      customRender: "culumnRender", //自定义列的插槽名优先级高于render
    }, */
  },
  {
    prop: "name",
    label: "姓名",
  },
  {
    prop: "address",
    label: "地址",
    selectData: {
      value: "value",
      label: "label",
      list: [
        {
          value: 1,
          label: "1",
        },
        {
          value: 2,
          label: "2",
        },
        {
          value: 3,
          label: "3",
        },
      ],
    },
  },
]);
const listData = reactive([
  {
    date: "2016-05-02",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1518 弄",
  },
  {
    date: "2016-05-04",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1517 弄",
  },
  {
    date: "2016-05-01",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1519 弄",
  },
  {
    date: "2016-05-03",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1516 弄",
    // table_edit: true,
  },
]);
//多行选中
const handleSelectionChange = (val) => {
  console.log(val);
};
const sizeChange = (val) => {
  //分页页码大小变动时候触发的事件
  console.log(val);
};
const currentChange = (val) => {
  //分页当前页变动时候触发的事件
  console.log(val);
};
const prevClick = (val) => {
  //分页中用户点击上一页按钮改变当前页后触发
  console.log(val);
};
const nextClick = (val) => {
  //分页中用户点击下一页按钮改变当前页后触发
  console.log(val);
};
const confirmEdit = (val) => {
  //保存编辑的回调 val.row为保存的当前数据
  console.log(val.row);
};
</script>

表单使用

<template>
    <LForm :form="form" :formItems="formItems" :options="options2">
    <template v-slot:slotF>
      <div>这是自定义插槽</div>
    </template>
    <!-- <template v-slot:footButton>
      <el-button>创建</el-button>
    </template> -->
  </LForm>
</template>
<script setup>
import { reactive } from "vue";
const formItems = reactive([
  {
    label: "活动名称",
    prop: "name",
    placeholder: "请输入活动名称",
  },
  {
    label: "活动区域",
    prop: "region",
    type: "select",
    placeholder: "请输入活动区域",
    data: [
      {
        label: "区域一",
        value: "shanghai",
      },
      {
        label: "区域二",
        value: "beijing",
      },
    ], //select的时候需要输入data
  },
  {
    label: "即时配送",
    prop: "delivery",
    type: "switch",
  },
  {
    label: "活动性质",
    prop: "type",
    type: "checkboxGroup",
    data: [
      {
        label: "hahhaha",
        type: "type",
      },
      {
        label: "1122212",
        type: "type",
      },
    ], //checkboxGroup的时候需要输入data
  },
  {
    label: "特殊资源",
    prop: "resource",
    type: "radioGroup",
    data: [
      {
        label: "lx",
      },
      {
        label: "lx2",
      },
    ], //radioGroup的时候需要输入data
  },
  {
    label: "活动形式",
    prop: "desc",
    type: "textarea",
  },
]);
const options2 = reactive({
  //和element-ui上的属性基本保持一致
  inline: false,
  labelPosition: "right",
  labelWidth: "80px",
  labelSuffix: ":",
  hideRequiredAsterisk: false,
  showMessage: true,
  inlineMessage: false,
  statusIcon: false,
  validateOnRuleChange: true,
  size: "small",
  disabled: false,
  // button: "footButton", //自定义按钮名
  emptySlot: "slotF", //自定义插槽名
  emptySlotShow: false, //是否只显示自定义插槽
  method(value) {
    //默认立即创建按钮的回调
    console.log(value);
  },
});
const form = reactive({
  name: "",
  region: "",
  delivery: false,
  type: ["lx"],
  resource: "lx",
  desc: "",
});
</script>
0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago

0.0.0

2 years ago