Skip to content

前端示例-开发-列表

1. 模板结构规范

  • 使用 通用布局类
    html
    <template>
      <div class="JNPF-common-layout">
        <div class="JNPF-common-layout-center">
          <div class="JNPF-common-layout-main JNPF-flex-main">
            <el-row class="JNPF-common-search-box" :gutter="16">
              <el-form @submit.native.prevent>
                <el-col :span="6">
                  <el-form-item label="名称">
                    <el-input
                      v-model="query.$LK$NAME"
                      placeholder="请输入名称"
                      clearable
                    />
                  </el-form-item>
                </el-col>
                <el-col :span="6">
                  <el-form-item label="相关部门">
                    <el-input
                      v-model="query.$LK$DEPTNAME"
                      placeholder="请输入相关部门"
                      clearable
                    />
                  </el-form-item>
                </el-col>
                <el-col :span="6">
                  <el-form-item label="专业">
                    <el-input
                      v-model="query.$LK$MAJOR"
                      placeholder="请输入专业"
                      clearable
                    />
                  </el-form-item>
                </el-col>
                <el-col :span="6">
                  <el-form-item>
                    <el-button
                      type="primary"
                      icon="el-icon-search"
                      @click="search()"
                    >
                      {{ $t("common.search") }}
                    </el-button>
                    <el-button icon="el-icon-refresh-right" @click="reset()">
                      {{ $t("common.reset") }}
                    </el-button>
                  </el-form-item>
                </el-col>
              </el-form>
            </el-row>
            <div class="JNPF-common-head">
              <el-button type="primary" icon="el-icon-plus" @click="openPage">
                新增
              </el-button>
              <div class="JNPF-common-head-right">
                <el-input
                  v-model="quickQuery.value"
                  :placeholder="'请输入名称或地址'"
                  clearable
                  style="width: 300px"
                >
                  <i
                    class="el-icon-search el-input__icon"
                    slot="suffix"
                    @click="search"
                  ></i>
                </el-input>
                <el-tooltip
                  effect="dark"
                  :content="$t('common.refresh')"
                  placement="top"
                >
                  <el-link
                    icon="icon-ym icon-ym-Refresh JNPF-common-head-icon"
                    :underline="false"
                    @click="initData()"
                  />
                </el-tooltip>
              </div>
            </div>
            <JNPF-table :data="list" row-key="ID">
              <el-table-column
                prop="NAME"
                label="名称"
                min-width="150"
                :show-overflow-tooltip="true"
              ></el-table-column>
              <el-table-column
                prop="DEPTNAME"
                label="相关部门"
                min-width="150"
                width="150"
                align="center"
                :show-overflow-tooltip="true"
              ></el-table-column>
              <el-table-column
                prop="STARTDATE"
                label="启动日期"
                align="center"
                width="120"
                :dateFormat="'yyyy-MM-dd'"
                :formatter="formatter"
              ></el-table-column>
              <el-table-column
                prop="MAJOR"
                label="专业"
                align="center"
                width="120"
                :formatter="formatter"
                :enumFormat="'Major'"
              ></el-table-column>
              <el-table-column
                label="操作"
                width="120"
                align="center"
                fixed="right"
              >
                <template slot-scope="scope">
                  <el-button
                    type="text"
                    @click="openPage({ defVal: { ID: scope.row.ID } })"
                  >
                    编辑
                  </el-button>
                  <el-button
                    type="text"
                    @click="deleteRow(scope.row.ID)"
                    class="JNPF-table-delBtn"
                  >
                    删除
                  </el-button>
                </template>
              </el-table-column>
            </JNPF-table>
            <pagination
              :total="total"
              :page.sync="listQuery.currentPage"
              :limit.sync="listQuery.pageSize"
              @pagination="InitPage"
            />
          </div>
        </div>
        <form v-if="formVisible" ref="Form" @refresh="refresh" />
      </div>
    </template>

2. 数据管理规范

  • data 中定义数据结构:

    js
    import listMixin from "@/mixins/basics/list.js"; // 引入列表混入
    import Form from "./form.vue"; // 引入表单组件
    import ExportBox from "@/components/JPW-excelExport"; //导出Excel组件
    import { getPageList, getPageListQuery } from "@/api/basic"; // 引入列表获取数据接口
    
    export default {
      mixins: [listMixin],
      components: { Form, ExportBox }, // 引入表单组件和导出Excel组件
      data() {
        return {
          list: [], // 表格数据
          enumCode: "MAJOR", // 枚举code,逗号分隔,和enumFormat配合使用
          apiUrl: "", // 接口地址,指向后端接口地址,举例officeAuto/infoRelease/FriendLink
          query: {
            // 详细查询条件
            $LK$NAME: "",
            $LK$DEPTNAME: "",
            $LK$MAJOR: "",
          },
          listQuery: {
            // 分页参数
            currentPage: 1,
            pageSize: 20,
            sort: "desc",
            sidx: "SORTCODE",
          },
          quickQuery: {
            // 快速查询条件
            field: "NAME,DEPTNAME",
            value: "",
          },
          loadListMethod: getPageList, // 列表获取数据方法(getPageList,getPageListQuery)
        };
      },
    };