记录一个简单的vue页面实现

<template>
  <div class="userView">
    <!-- 页眉颜色统一 -->
    <div class="buttonTop"></div>
    <div class="main">
      <!--工具栏-->
      <div class="center" style="overflow: hidden;">
        <el-button @click="updateOrderInvoiceBatch" type="success">批量设置拣货中</el-button>
        <div class="input" style="float:right">
          <span>发货单状态:</span>
          <el-select clearable style="100px;" v-model="data.sts" placeholder="发货单状态" size="small">
            <el-option label="取消" value="0"></el-option>
            <el-option label="未支付" value="1"></el-option>
            <el-option label="已支付" value="2"></el-option>
            <el-option label="拣货中" value="3"></el-option>
            <el-option label="已发货" value="4"></el-option>
          </el-select>
          <el-input placeholder="请输入名称" v-model="data.name" clearable size="small"></el-input>
          <el-button @click="select" type="success">检索</el-button>
          <el-button @click="emptyData"  type="info">清空</el-button>
        </div>
      </div>

      <!--列表table展示-->
      <el-table
        :data="orderInvoiceList.rows"
        @selection-change="changeTable"
        border
        style=" 100%; margin-top: 10px">
        <el-table-column type="selection" min-width="35"></el-table-column>
        <el-table-column prop="price" label="货价" min-width="50"></el-table-column>
        <el-table-column prop="postFee" label="运费"  min-width="50"></el-table-column>
        <el-table-column prop="totalPrice" label="总价"  min-width="50"></el-table-column>
        <el-table-column prop="isCanceled" label="是否取消"  min-width="60" :formatter="booleanMsgFun"></el-table-column>
        <el-table-column prop="isSettled" label="费用是否结清"  min-width="80" :formatter="booleanMsgFun"></el-table-column>
        <el-table-column prop="isSettledFee" label="运费是否结清"  min-width="80" :formatter="booleanMsgFun"></el-table-column>
        <el-table-column prop="isPost" label="是否发货"  min-width="60" :formatter="booleanMsgFun"></el-table-column>
        <el-table-column prop="customerAddress" label="地址"  min-width="220"></el-table-column>
        <el-table-column prop="customerPhone" label="电话"  min-width="85"></el-table-column>
        <el-table-column prop="customerName" label="名称"  min-width="60"></el-table-column>
        <el-table-column prop="waybillNo" label="运单号"  min-width="110"></el-table-column>
        <el-table-column prop="carrier" label="承运人"  min-width="60"></el-table-column>
        <el-table-column prop="startPickTime" label="开始拣货时间"  min-width="100"></el-table-column>
        <el-table-column prop="postTime" label="发货时间"  min-width="100"></el-table-column>
        <el-table-column label="操作"  min-width="60">
          <template slot-scope="scope">
            <el-button size="mini" @click.native="editOrderInvoice(scope.$index, scope.row)">发货</el-button>
            <el-button
              size="mini"
              type="danger"
              @click="updateOrderInvoice(scope.$index,scope.row)">拣货中</el-button>
          </template>
        </el-table-column>
      </el-table>

      <!-- 分页 -->
      <div class="page">
        <el-pagination
          :background="true"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="page"
          :page-sizes="[10, 20, 30, 40 , 50, 100]"
          :page-size="rows"
          layout="total, sizes, prev, pager, next, jumper"
          :total="orderInvoiceList.total">
        </el-pagination>
      </div>

      <!-- 编辑dialog对象 -->
      <el-dialog  :visible.sync="dialogVisible" :close-on-click-modal="false" size="tiny">
            <span slot="title"  class="el-dialog__title">
                  {{'发货'}}
            </span>
        <el-form ref="dialogData" :model="dialogData" label-width="150px">
         <!-- <el-form-item label="地址">
              <el-input v-model="dialogData.customerAddress"></el-input>
          </el-form-item>
          <el-form-item label="电话" >
            <el-input v-model="dialogData.customerPhone"></el-input>
          </el-form-item>
          <el-form-item label="姓名">
            <el-input v-model="dialogData.customerName"></el-input>
          </el-form-item>-->
          <el-form-item label="运单号">
            <el-input v-model="dialogData.waybillNo"></el-input>
          </el-form-item>
          <el-form-item label="承运人">
            <el-input v-model="dialogData.carrier"></el-input>
          </el-form-item>
          <!--<el-form-item label="开始拣货时间" >
            <el-col :span="10">
              <el-date-picker type="datetime" placeholder="选择时间" v-model="dialogData.startPickTime" style=" 100%;"></el-date-picker>
            </el-col>
          </el-form-item>
          <el-form-item label="发货时间" >
            <el-col :span="10">
              <el-date-picker type="datetime" placeholder="选择时间" v-model="dialogData.postTime" style=" 100%;"></el-date-picker>
            </el-col>
          </el-form-item>
          <el-form-item label="是否取消" label-width="150px">
            <el-col :span="4">
              <el-switch
                v-model="canceled"
                on-color="#13ce66"
                on-text="是"
                off-text="否"
                off-color="#666666"
                @change='changeIsCanceledStatus($event)'>
              </el-switch>
            </el-col>
          </el-form-item>
          <el-form-item label="费用是否结清" label-width="150px">
            <el-col :span="4">
              <el-switch
                v-model="settled"
                on-color="#13ce66"
                on-text="是"
                off-text="否"
                off-color="#666666"
                @change='changeIsSettledStatus($event)'>
              </el-switch>
            </el-col>
          </el-form-item>
          <el-form-item label="运费是否结清" label-width="150px">
            <el-col :span="4">
              <el-switch
                v-model="settledFee"
                on-color="#13ce66"
                on-text="是"
                off-text="否"
                off-color="#666666"
                @change='changeIsSettledFeeStatus($event)'>
              </el-switch>
            </el-col>
          </el-form-item>
          <el-form-item label="是否发货" label-width="150px">
            <el-col :span="4">
              <el-switch
                v-model="post"
                on-color="#13ce66"
                on-text="是"
                off-text="否"
                off-color="#666666"
                @change='changeIsPostStatus($event)'>
              </el-switch>
            </el-col>
          </el-form-item>-->
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button @click.native="editOrderInvoiceSubmit">保存并关闭</el-button>
          <el-button @click.native="dialogVisible = false">取消</el-button>
        </div>
      </el-dialog>

    </div>
  </div>
</template>

<script>
  import util from '../../common/js/util'
  import NProgress from 'nprogress'
  import http from '../../api/http'

  export default {
    data(){
      return{
        page:1,
        rows:10,
        data:{
          id:"",
          name:"",
          sts:null
        },
        // 弹出框的数据
        dialogData:{
          id:'',
          /*customerAddress:'',
          customerPhone:'',
          customerName:'',*/
          waybillNo:'',
          carrier:'',
         /* startPickTime:"",
          postTime:"",
          canceled:false,
          settled:false,
          settledFee:false,
          post:false*/
        },
        multipleSelection:[],
        orderInvoiceList:{},
        /*canceled:false,
        settled:false,
        settledFee:false,
        post:false,*/
        dialogVisible: false
      }
    },
    methods:{
      loadOrderInvoiceList(){
        let obj = {
          page : this.page,
          rows : this.rows,
          name : this.data.name,
          sts : this.data.sts
        }
        this.apiPost('/order/invoiceList',obj).then(res=>{
          this.handelResponse(res, (data) => {
            this.orderInvoiceList = data
          })
        })
      },
      handleSizeChange(val) {
        this.rows = val
        this.loadOrderInvoiceList();
      },
      handleCurrentChange(val) {
        this.page = val;
        this.loadOrderInvoiceList();
      },
      clearable(){
        this.data.name = '';
        this.data.sts = null;
        this.loadOrderInvoiceList();
      },
      changeTable(val){
        this.multipleSelection = val;
      },
      // 检索
      select(){
        this.loadOrderInvoiceList()
      },
      //清空按钮操作
      emptyData(){
        this.data.name = "";
        this.data.sts = null;
        this.select()
      },
      //布尔类型数据格式化显示
      booleanMsgFun(row, column,value){
          if(value){
              return "";
          }else{
              return "";
          }
      },
      //主要功能打开编辑页面,回显当前行信息,包括图片
      editOrderInvoice(index,row) {
        this.apiPost('/order/orderInvoice/'+row.id+'/get',{}).then((res) => {
          this.handelResponse(res, (data) => {
            this.dialogData=data
            /*if(data.startPickTime){
              this.dialogData.startPickTime=new Date(data.startPickTime);
            }else{
              this.dialogData.startPickTime=null;
            }
            if(data.postTime){
              this.dialogData.postTime=new Date(data.postTime);
            }else{
              this.dialogData.postTime=null;
            }
            this.canceled=data.isCanceled;
            this.settled=data.isSettled;
            this.settledFee=data.isSettledFee;
            this.post=data.isPost;*/
            this.dialogVisible=true;
          })
        });
      },
      //发货单编辑页面的保存方法
      editOrderInvoiceSubmit() {
        /*this.dialogData.canceled=this.canceled;
        this.dialogData.settled=this.settled;
        this.dialogData.settledFee=this.settledFee;
        this.dialogData.post=this.post;*/
        this.apiPost('/order/orderInvoice/'+this.dialogData.id+'/updateIsPost',this.dialogData).then((res) => {
          this.handelResponse(res, (data) => {
            this.dialogVisible=false;
            _g.toastMsg('success','提交成功');
            this.loadOrderInvoiceList();
          })
        });
      },
      //清空表单的回显值问题
      newData(){
        this.dialogData.id="",
        /*this.dialogData.customerAddress="",
        this.dialogData.customerPhone="",
        this.dialogData.customerName="",*/
        this.dialogData.waybillNo="",
        this.dialogData.carrier=""
        /*this.dialogData.startPickTime=null,
        this.dialogData.postTime=null,
        this.dialogData.canceled=false,
        this.dialogData.settled=false,
        this.dialogData.settledFee=false,
        this.dialogData.post=false*/
      },
      /*changeIsCanceledStatus($event){
        this.canceled=$event;
      },
      changeIsSettledStatus($event){
        this.settled=$event;
      },
      changeIsSettledFeeStatus($event){
        this.settledFee=$event;
      },
      changeIsPostStatus($event){
        this.post=$event;
      }*/
      //修改当前记录状态为拣货中
      updateOrderInvoice(index,row) {
        this.$confirm('确认修改当前选中记录状态为拣货中吗?', '提示', {
          type: 'warning'
        }).then(() => {
          this.apiPost('/order/orderInvoice/'+row.id+'/updateStartPick',{}).then((res) => {
            this.handelResponse(res, (data) => {
              _g.toastMsg('success','修改成功');
              this.loadOrderInvoiceList();
            })
          });
        }).catch(() => {
        });
      },
      //批量修改当前记录状态为拣货中
      updateOrderInvoiceBatch(){
        if(this.multipleSelection.length == 0){
          this.$message.error('请至少选中一行数据');
          return
        }
        let id = []
        for(let i = 0;i < this.multipleSelection.length;i ++){
          id[i] = this.multipleSelection[i].id
        }
        let obj = {
          ids : id
        }
        console.log("aaabbb:"+JSON.stringify(obj));
        this.$confirm('确认修改当前选中记录状态为拣货中吗?', '提示', {
          type: 'warning'
        }).then(() => {
          this.apiPost('/order/orderInvoice/updateStartPickBatch',obj).then(res=>{
            this.handelResponse(res, (data) => {
              _g.toastMsg('success','修改成功');
              this.loadOrderInvoiceList();
            })
          });
        }).catch(() => {
        });
      },
    },
    mounted(){
      this.loadOrderInvoiceList();
    },
    mixins: [http],
  }
</script>

<style lang="scss" scoped>
  .userView{
    .buttonTop{
      padding: 6px 10px 0;
      background: #545c64;
      height: 56px;
      overflow: hidden;
      border-bottom: 1px solid rgb(255, 208, 75);
      color: #fff;
    }
    .main{
      padding: 0 15px;
    .center{
      margin-top: 10px;
      margin-bottom: 20px;
    }
    }
    .input{
      float: left;
      margin: 8px 0;
      margin-right: 32px;
    }
  }
  .page {
    /*  600px; */
    margin: 10px auto 10px;
  }
</style>
原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/8861995.html