scheme.md 3.94 KB

Scheme 方案

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

441f73b946ac046545f123693bf1215f48a1f5a6/examples/views/docs/component/scheme.md#">基础用法

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

::: snippet 通过list配置项目

<template>
  <z-scheme :list="list" :search-api="searchAPI" :get-api="getAPI" :submit-api="submitAPI" :delete-api="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: list,
            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>

:::

441f73b946ac046545f123693bf1215f48a1f5a6/examples/views/docs/component/scheme.md#">内置接口逻辑

如果CURD的接口都是同一路径下,可以使用内置接口逻辑快速对接

::: snippet 通过url配置接口路径,http设置Promise形式的HTTP请求库

<template>
  <z-scheme ref="scheme" :list="list" url="/customer" :http="$http" :alias="{ getUrl: '/getCustomerByCode', getKey: 'code' }" auto real-selection>
    <el-table-column type="selection" align="center" width="40"></el-table-column>
  </z-scheme>
</template>

<script>
export default {
  data() {
    return {
      activeName: 'wait',
      list: [
        { type: 'el-input', label: 'ID', key: 'id', props: { disabled: true }, include: 'form', visible: () => this.$refs.scheme.dialogType === 'edit' },
        { type: 'el-input', label: '编号', key: 'code' },
        { type: 'el-input', label: '名称', key: 'name' },
      ]
    }
  },
  methods: {
  }
}
</script>

:::

API

Attribute 属性

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