scheme.md 3.11 KB

Scheme 方案

根据JSON Scheme配置自动生成一个包含搜索条件、表格、编辑表单、详情表单的页面

4f38f3a4834286a3f21560f8f60783af936c9cb3/examples/views/docs/component/scheme.md#">基础用法

通过配置JSON Scheme快速生成CURD逻辑

::: snippet 通过list配置项目

<template>
  <z-scheme :list="list" :searchAPI="searchAPI" :getAPI="getAPI" :submitAPI="submitAPI" :deleteAPI="deleteAPI" auto real-selection>
    <el-table-column type="selection" align="center" width="40"></el-table-column>
    <template #header>
      <el-tabs v-model="activeName">
        <el-tab-pane label="待执行" name="wait"></el-tab-pane>
        <el-tab-pane label="已执行" name="done"></el-tab-pane>
      </el-tabs>
    </template>
    <template #button="{ size, openDialog }">
      <el-button :size="size" plain>删除</el-button>
      <el-button :size="size" plain @click="openDialog('other', '追加')">追加操作</el-button>
    </template>
    <template #dialog-other="{ model, closeDialog }">
      <el-tag type="success">其它页面</el-tag>
      <el-input
        type="textarea"
        :rows="2"
        placeholder="请输入内容"
        v-model="model.name">
      </el-input>
      <el-button @click="closeDialog">关闭弹出框</el-button>
    </template>
  </z-scheme>
</template>

<script>
export default {
  data() {
    return {
      activeName: 'wait',
      list: [
        { type: 'el-input', label: '姓名', key: 'name', rules: [{ required: true, message: '请输入', trigger: 'change' }] },
        { type: 'el-input', label: '年龄', key: 'age' },
      ]
    }
  },
  methods: {
    searchAPI(params) {
      console.log(params);
      return new Promise(resolve => {
        setTimeout(() => {
          const list = [
            { id: '0', name: '李饼', age: 32, location: { lat: 0, lng: 0 } },
            { id: '1', name: '陈拾', age: 20 },
            { id: '2', name: '阿里巴巴', age: 24 },
            { id: '3', name: '王七', age: 26 },
            { id: '4', name: '崔倍', age: 27 },
            { id: '5', name: '孙豹', age: 38 },
            { id: '6', name: '庞柏', age: 42 },
            { id: '7', name: '蔡疏', age: 60 },
            { id: '8', name: '卢纳', age: 55 },
          ]
          resolve({
            result: params.currentPage === 1 ? list.slice(0, 5) : list.slice(5),
            totalCount: list.length
          });
        }, 1500);
      });
    },
    getAPI(row) {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve({ ...row, name: `[${row.name}]` });
        }, 1500);
      });
    },
    submitAPI(model, config) {
      console.log(JSON.parse(JSON.stringify(model)));
      console.log(config);
      console.log('start');
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          console.log('done');
          reject();
        }, 1500);
      });
    },
    deleteAPI() {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve();
        }, 1500);
      });
    }
  }
}
</script>

:::

API

Attribute 属性

参数|说明|类型|可选值|默认值 -|-|-|-|- list | JSON Scheme配置项列表 | Array | - | []