zoukankan      html  css  js  c++  java
  • vue-element-admin列表管理

    跳转按钮

    <el-button type="primary" size="medium" icon="el-icon-s-grid" @click="handleToAcreage(floorInfo)">房屋面积管理</el-button>
    

    跳转新的页面方法

    handleToAcreage(row){
          // 获取参数,并路由到指定页面
          let { id } = row;
          this.$router.push({
            path:'/floor/acreage',
            query:{ building_id:id }
          })
    }
    

    配置路由

    {
        path: '/floor',
        component: Layout,
        redirect: '/floor/index',
        name: 'floor',
        meta: {
          title: '楼栋管理',
          icon: 'el-icon-s-data'
        },
        children: [
      		...
          {
            path: 'acreage',
            component: () => import('@/views/floor/acreage'),
            name: 'FloorAcreage',
            hidden: true,
            meta: { title: '房屋面积' }
          }
        ]
      }
    

    引入需要用到的接口

    // 获取房屋,根据楼栋
    export function getHouseListByBuildingId(data) {
      return request({
        url: '/VillageBuilding/getHouseListByBuildingId',
        method: 'post',
        data
      })
    }
    // 设置房屋面积
    export function setHouseAcreage(data) {
      return request({
        url: '/VillageBuilding/setHouseAcreage',
        method: 'post',
        data
      })
    }
    

    接收参数,获取数据

    created() {
        let { building_id } = this.$route.query;
        this.listQuery.building_id = building_id;
        this.getHouseList();
     }
    

    页面完整代码

    <template>
      <div class="app-container">
        <el-card>
          <el-form :model="listQuery" class="flex-form-item" inline >
            <el-form-item label="层数">
              <el-input v-model="listQuery.floor_number"  placeholder="请输入楼层" />
            </el-form-item>
            <el-form-item label="门牌号">
              <el-input v-model="listQuery.house_name" maxlength="11" placeholder="请输入门牌号" />
            </el-form-item>
            <el-form-item label="状态">
              <el-select v-model="listQuery.status" placeholder="请选择状态" clearable class="filter-item" style=" 140px;margin-right:10px">
                <el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id" />
              </el-select>
            </el-form-item>
          </el-form>
          <el-row style="display:flex">
            <el-button type="primary" :loading="loading" @click="handleSearch">搜索</el-button>
            <el-button @click="resetFilter">清空</el-button>
          </el-row>
        </el-card>
        <el-table
            v-loading="listLoading"
            :data="list"
            border
            fit
            highlight-current-row
            style=" 100%;margin-top:15px;"
        >
          <el-table-column label="ID" prop="id"  align="center" width="80">
            <template slot-scope="{row}">
              <span>{{ row.id }}</span>
            </template>
          </el-table-column>
          <el-table-column label="楼层"  align="center" min-width="100">
            <template slot-scope="{row}">
              <span>{{ row.floor_name }}</span>
            </template>
          </el-table-column>
          <el-table-column label="门牌号"  align="center" min-width="180">
            <template slot-scope="{row}">
              <span>{{ row.name }}</span>
            </template>
          </el-table-column>
    
          <el-table-column label="房屋面积(m²)"  align="center" min-width="150">
            <template slot-scope="{row}">
              <span>{{ row.acreage }}</span>
            </template>
          </el-table-column>
          <el-table-column label="房主"  align="center" min-width="100">
            <template slot-scope="{row}">
              <span>{{ row.host_name }}</span>
            </template>
          </el-table-column>
          <el-table-column label="手机号"  align="center" min-width="180">
            <template slot-scope="{row}">
              <span>{{ row.host_phone }}</span>
            </template>
          </el-table-column>
          <el-table-column label="面积添加时间"  align="center" min-width="200px">
            <template slot-scope="{row}">
              <span>{{ row.acreage_create_time }}</span>
            </template>
          </el-table-column>
    
          <el-table-column label="状态"  align="center" min-width="100">
            <template slot-scope="{row}">
              <span>{{ row.is_set==0?'未添加':'已添加' }}</span>
            </template>
          </el-table-column>
    
          <el-table-column label="操作" align="center" min-width="200" class-name="small-padding fixed-width">
            <template slot-scope="{row}">
              <el-button v-if="row.is_set == 0" type="primary" size="mini" @click="handleUpdate(row)">添加</el-button>
            </template>
          </el-table-column>
        </el-table>
        <pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.size" @pagination="getHouseList" />
    
        <el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible" center>
          <el-form ref="acreageForm" :model="acreageForm" :rules="rules" label-position="left" label-width="100px" style=" 450px;">
            <el-form-item label="面积"  prop="phone">
              <el-input v-model="acreageForm.acreage" maxlength="11" placeholder="请输入面积" />
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button @click="dialogFormVisible = false">取消</el-button>
            <el-button type="primary" @click="updateData()">确认</el-button>
          </div>
        </el-dialog>
    
      </div>
    </template>
    
    <script>
    import {
      setHouseAcreage,
      getHouseListByBuildingId
    } from '@/api/village-api'
    export default {
      name: 'FloorAcreage',
      data() {
        return {
          dialogFormVisible: false,
          dialogTitle: '设置面积',
          loading:false,
          listQuery:{
            page:1,
            size:10,
            building_id:undefined,
            floor_number:undefined,
            house_name:undefined,
            status:undefined
          },
          listLoading:true,
          list:[],
          statusList:[
            {
              id:1,
              name:'未添加'
            },{
              id:2,
              name:'已添加'
            }
          ],
          total:0,
          acreageForm:{
            id:undefined,
            acreage:undefined,
          },
          rules:{
            acreage:[{ required: true, message: '请填写面积' , trigger: 'blur' }],
          },
          houseList:[],
        }
      },
      created() {
        let { building_id } = this.$route.query;
        this.listQuery.building_id = building_id;
        this.getHouseList();
      },
      methods: {
        getHouseList(){
          this.listLoading = true;
          getHouseListByBuildingId(this.listQuery).then(({ data })=>{
            this.list = data.content
            this.total = data.totalElements?Number(data.totalElements):0;
    
            // Just to simulate the time of the request
            setTimeout(() => {
              this.listLoading = false;
              this.loading = false;
            }, 1.5 * 1000)
          })
        },
        handleSearch(){
          this.loading = true;
          this.listQuery.page = 1;
          this.getHouseList();
        },
        resetFilter(){
          this.listQuery = {
            page:1,
            size:10,
            floor_number:undefined,
            house_name:undefined,
            status:undefined
          }
          this.getHouseList();
        },
        resetAcreageForm(){
          this.acreageForm = {
            id:undefined,
            acreage:undefined
          }
        },
        handleUpdate(row){
          this.acreageForm = Object.assign({}, row) // copy obj
          this.dialogFormVisible = true
          this.$nextTick(() => {
            this.$refs['acreageForm'].clearValidate()
          })
        },
        updateData(){
          this.$refs['acreageForm'].validate((valid)=>{
            if(valid){
              setHouseAcreage(this.acreageForm).then(()=>{
                this.getHouseList();
                this.dialogFormVisible = false
                this.$message.success('设置成功');
              })
            }
          })
        },
      },
    }
    </script>
    
    <style scoped lang=''>
    
    </style>
    
  • 相关阅读:
    myisamchk命令修复表操作
    CentOS下的yum upgrade和yum update区别
    CentOS 6.9/7通过yum安装指定版本的MySQL
    Linux下Shell去除空行的方法
    Linux下环境变量设置技巧
    交互设计师如何做运营需求-以网易严选邀请新人功能设计为例
    对应用启动时间的关注和获取
    快速发现并解决maven依赖传递冲突
    mock测试方法及实践改进
    网易杭研易盾实习心得(4)
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/14934185.html
Copyright © 2011-2022 走看看