1.0.5 • Published 1 year ago

srbt-ui v1.0.5

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

说明

将 el-table 与 el-page 封装在一起, 减少重复代码的重复使用

使用

  npm i -D srbt-ui
  import Vue from 'vue'
  import SrbtUi from 'srbt-ui'
  Vue.use(SrbtUi)
<template>
  <div class="user-container">
    <el-button type="primary" @click="openDialog">打开全屏dialog</el-button>
    <full-screen-dialog ref="userDetailDialog">
      <el-form
        ref="userAddForm"
        :model="searchForm"
        :rules="rules"
        status-icon
        label-width="150px"
      >
        <el-form-item label="工号" prop="userNo">
          <el-input v-model="searchForm.userNo" clearable />
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="ensure">确 认</el-button>
        </el-form-item>
      </el-form>
    </full-screen-dialog>
    <div>
      <el-form :model="searchForm" :inline="true">
        <el-form-item>
          <el-button type="primary" @click="doSearch">搜 索</el-button>
        </el-form-item>
      </el-form>
    </div>
    <div class="toolbars">
      <el-button type="primary" class="item" @click="handleBatchEdit">
        批量编辑
      </el-button>
    </div>
    <data-table
      ref="dataTable"
      :columns="columns"
      :query="query"
      :type="`index`"
      :check="handleDataChecked"
    >
      <template slot="userNoRender" slot-scope="{ scope }">
        <el-button type="text">{{ scope.row.userNo }}</el-button>
      </template>
      <template slot="operate" slot-scope="{ scope }">
        <el-button type="text" class="item" @click="handleEdit(scope.row.id)">
          编辑
        </el-button>
        <el-button type="text" @click="handleDelete(scope.row.id)">
          删除
        </el-button>
      </template>
    </data-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchForm: {
        userNo: '',
        userName: '',
      },
      rules: {
        userNo: [
          {
            required: true,
            message: '工号不能为空',
            trigger: 'blur',
          },
        ],
      },
      columns: [
        {
          prop: 'userNo',
          label: '工号',
          width: '160',
          template: true,
        },
        {
          prop: 'userName',
          label: '姓名',
          width: '220',
          overflow: true,
        },
      ],
      checkedKeys: [],
    }
  },
  methods: {
    handleBatchEdit() {
      alert(this.checkedKeys)
    },
    handleDataChecked(data) {
      const arr = []
      for (const item of data) {
        if (item.id) {
          arr.push(item.id)
        }
      }
      this.checkedKeys = arr
    },
    handleEdit(id) {
      alert(id)
    },
    handleDelete(id) {
      alert(id)
    },
    openDialog() {
      this.$refs.userDetailDialog.show()
    },
    doSearch() {
      this.$refs.dataTable.doSearch()
    },
    query() {
      return Promise.resolve({
        code: 0,
        msg: '',
        data: {
          list: [
            {
              id: 1,
              userNo: '123123',
              userName: '张三',
            },
            {
              id: 2,
              userNo: '123124',
              userName: '李四',
            },
          ],
          total: 100,
        },
      })
    },
    ensure() {
      const self = this
      self.$refs.userAddForm.validate((valid) => {
        if (valid) {
          self.$success(self.searchForm.userNo)
          self.$refs.userAddForm.resetFields()
          self.$refs.userDetailDialog.close()
        }
      })
    },
  },
}
</script>

<style scoped>
</style>
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