简介

  对于vue初学者,这个有一定程度上的帮助,逻辑比较简单,所以没什么注释,新增和编辑用的是页面路由跳转,this.$router.push,有问题可以私信我,共同进步。

开始吧

<template>
<a-card>

<div :class="advanced ? 'search' : null">
  <a-form-model layout="horizontal" :model="form" ref="ruleForm">
    <div :class="advanced ? null : 'fold'">
      <a-row>
        <a-col :md="8" :sm="24">
          <a-form-model-item
            label="字典编号"
            v-model="form.id"
            :labelCol="{ span: 5 }"
            :wrapperCol="{ span: 18, offset: 1 }"
            prop="id"
          >
            <a-input placeholder="请输入" v-model="form.id" />
          </a-form-model-item>
        </a-col>
        <a-col :md="8" :sm="24">
          <a-form-model-item
            label="字典名称"
            v-model="form.dictName"
            :labelCol="{ span: 5 }"
            :wrapperCol="{ span: 18, offset: 1 }"
            prop="dictName"
          >
            <a-input placeholder="请输入" v-model="form.dictName" />
          </a-form-model-item>
        </a-col>
        <a-col :md="8" :sm="24">
          <a-form-model-item
            label="字典类型"
            :labelCol="{ span: 5 }"
            :wrapperCol="{ span: 18, offset: 1 }"
            prop="dictType"
          >
            <a-input
              style="width: 100%"
              placeholder="请输入"
              v-model="form.dictType"
            />
          </a-form-model-item>
        </a-col>
      </a-row>
      <a-row v-if="advanced">
        <a-col :md="8" :sm="24">
          <a-form-model-item
            label="创建时间"
            :labelCol="{ span: 5 }"
            :wrapperCol="{ span: 18, offset: 1 }"
            prop="createTime"
          >
            <a-range-picker v-model="form.createTime" style="width:100%">
            </a-range-picker>
          </a-form-model-item>
        </a-col>
        <a-col :md="8" :sm="24">
          <a-form-model-item
            label="字典状态"
            :labelCol="{ span: 5 }"
            :wrapperCol="{ span: 18, offset: 1 }"
            prop="status"
          >
            <a-select v-model="form.status" placeholder="请选择">
              <a-select-option value="1">
                正常
              </a-select-option>
              <a-select-option value="0">
                停用
              </a-select-option>
            </a-select>
          </a-form-model-item>
        </a-col>
      </a-row>
    </div>
    <span style="float: right; margin-top: 3px;">
      <a-button type="primary" @click="query()">查询</a-button>
      <a-button
        style="margin-left: 8px"
        @click="reset"
        class="btn btn-default"
        type="default"
        >重置</a-button
      >
    </span>
  </a-form-model>
</div>
<div>
  <a-space class="operator">
    <a-button @click="addNew" type="primary">新建</a-button>
  </a-space>
  <standard-table
    :pagination="{ total: totalCount, pageSize: 20,}"
    :columns="columns"
    :dataSource="dataSource"
    :rowKey="(record) => record.id"
    @change="pageNumberChange"
  >
    <div slot="action" slot-scope="{ record }">
      <a style="margin-right: 8px" @click="register(record.id)">
        <a-icon type="edit" />编辑
      </a>
      <a @click="deleteRecord(record.id)"> <a-icon type="delete" />删除 </a>
    </div>
    <template slot="statusTitle" slot-scope="{ text }">
      {{ text | changestatus }}
    </template>
  </standard-table>
</div>

</a-card>
</template>
<script>
import StandardTable from '@/components/table/StandardTable'
import axios from 'axios'
import moment from 'moment'
const columns = [
{

title: '字典编号',
dataIndex: 'id',
key: 'id',

},
{

title: '字典名称',
dataIndex: 'dictName',
scopedSlots: { customRender: 'dictName' },
key: 'dictName',

},
{

title: '字典类型',
dataIndex: 'dictType',
key: 'dictType',

},
{

title: '状态',
dataIndex: 'status',
needTotal: true,
scopedSlots: { customRender: 'statusTitle' },
key: 'status',

},
{

title: '创建时间',
dataIndex: 'createTime',
key: 'createTime',
// defaultSortOrder: 'descend',
sorter: (a, b) => { return a.createTime> b.createTime? 1 : -1 },

},
{

title: '备注',
dataIndex: 'remark',
key: 'remark',

},
{

title: '操作',
scopedSlots: { customRender: 'action' },

},
]
export default {
name: 'QueryList',
components: { StandardTable },
filters: {

changestatus(status){
  if(status == '1'){
     status = '正常'
  } else {
    status = '停用'
  }
  return status
}

},
mounted() {

this.init()

},
data() {

return {
  form: {},
  advanced: true,
  columns: columns,
  dataSource: [],
  expandedRowKeys: [],
  totalCount: 0, //总数居
  dafaultcurrent: 1, //当前页
  pages: '',
  pageSize: 20,
}

},
methods: {

pageNumberChange(page) {
  this.getPageList({page: page.current, size: page.pageSize})
},
getPageList(params){
  let that = this
  axios
    .get('/api/admin/dict_type/list/page', {
      params:params,
    })
    .then(function(response) {
      that.dataSource = response.data.data.list
      that.totalCount = response.data.data.totalCount
    })
    .catch(function(error) {
      console.log(error)
    })
},
init() {
  this.getPageList()
},
query() {
  let searchlist = { ...this.form }
  if (searchlist.createTime && searchlist.createTime.length > 0) {
    let createTime1 = moment(searchlist.createTime[0]).valueOf()
    let createTime2 = moment(searchlist.createTime[1]).valueOf()
    searchlist.createTime = [createTime1,createTime2].join(',')
  }
  this.getPageList(searchlist)
},
reset() {
  this.$refs.ruleForm.resetFields()
  this.init()
},
register(id) {
  this.$router.push({
    name: '新增数据',
    query: {
      id: id,
    },
  })
},
deleteRecord(id) {
  let ids = [id].join(',')
  let that = this
  that.$confirm({
    title: '提示:确定要删除该数据嘛',
    content: '删除后不可恢复aaa',
    okText: '确定',
    okType: 'danger',
    cancelText: '取消',
    onOk() {
      axios
        .delete('/api/admin/dict_type/delete', { params: { ids } })
        .then(function() {
          that.init()
        })
        .catch(function(error) {
          console.log(error)
        })
    },
    onCancel() {
      //关闭提示
    },
  })
},
addNew() {
  this.$router.push('/add')
},

},
}
</script>

结束

就是很简单,在这做一个记录吧,从零开始学做出第一个vue项目,还有有点成就感的,小白一个,不要喷







03-05 16:29