<template>
|
<GlobalWindow title="楼层管理" @close="close" :showConfirm="false" :visible.sync="visible" width="800px">
|
<div class="head">
|
<div class="title">楼层列表</div>
|
<el-button type="primary" @click="editClick()">新建楼层</el-button>
|
</div>
|
<el-table :data="list" stripe>
|
<el-table-column prop="code" label="楼层编码" min-width="100px"></el-table-column>
|
<el-table-column prop="name" label="楼层名称" min-width="100px"></el-table-column>
|
<el-table-column label="操作" min-width="100px">
|
<template slot-scope="{row}">
|
<el-button type="text" @click="editClick(row)" icon="el-icon-edit"
|
v-permissions="['business:ywbuilding:update']">编辑</el-button>
|
<el-button type="text" @click="handleDel(row)" icon="el-icon-delete"
|
v-permissions="['business:ywbuilding:delete']">删除</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
<div class="mt20">
|
<Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
|
</div>
|
|
<!-- -->
|
<el-dialog :title="title" :visible.sync="showModal" :append-to-body="true" width="500px">
|
<el-form :model="param" ref="form" :rules="rules">
|
<el-form-item label="楼层编码" prop="code">
|
<el-input v-model="param.code" placeholder="请输入楼层编码" v-trim />
|
</el-form-item>
|
<el-form-item label="楼层名称" prop="name">
|
<el-input v-model="param.name" placeholder="请输入楼层名称" v-trim />
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="showModal = false">取 消</el-button>
|
<el-button type="primary" :loading="subLoading" @click="onSubmit">确 定</el-button>
|
</span>
|
</el-dialog>
|
</GlobalWindow>
|
</template>
|
|
<script>
|
import BaseOpera from '@/components/base/BaseOpera'
|
import GlobalWindow from '@/components/common/GlobalWindow'
|
import { fetchList, detailById, deleteById, create, updateById } from '@/api/project/yeFloor'
|
import Pagination from '@/components/common/Pagination'
|
import { Message } from 'element-ui'
|
export default {
|
extends: BaseOpera,
|
components: { GlobalWindow, Pagination },
|
data() {
|
return {
|
// 表单数据
|
info: {},
|
id: '',
|
visible: false,
|
showModal: false,
|
subLoading: false,
|
list: [],
|
pagination: {
|
pageSize: 10,
|
page: 1,
|
total: 0
|
},
|
|
title: '新建楼层',
|
param: {},
|
rules: {
|
name: [{ required: true, message: '请输入楼层名称' }],
|
code: [{ required: true, message: '请输入楼层编码' }],
|
},
|
}
|
},
|
created() {
|
},
|
methods: {
|
onSubmit() {
|
this.$refs['form'].validate((valid) => {
|
if (valid) {
|
const { param, id } = this
|
this.subLoading = true
|
let fn = param.id ? updateById : create
|
fn({ ...param, buildingId: id }).then(res => {
|
this.showModal = false
|
this.subLoading = false
|
Message.success('提交成功')
|
this.getList()
|
}, () => {
|
this.subLoading = false
|
})
|
}
|
})
|
},
|
getList(buildingId) {
|
const { pagination, id } = this
|
// this.buildingId =
|
let capacity = pagination.pageSize
|
let page = pagination.page
|
fetchList({ capacity, page, model: { buildingId: id } }).then(res => {
|
this.list = res.records
|
this.pagination.total = res.total
|
})
|
},
|
editClick(row) {
|
if (row && row.id) {
|
this.title = '编辑楼层'
|
this.param = { ...row }
|
} else {
|
this.title = '新建楼层'
|
this.param = {}
|
}
|
this.showModal = true
|
},
|
handleDel(row) {
|
this.$confirm('确定删除该楼层, 是否继续?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
deleteById(row.id).then(res => {
|
Message.success('删除成功')
|
this.getList()
|
})
|
})
|
},
|
close() {
|
this.$emit('success')
|
},
|
handleSizeChange(capacity) {
|
this.pagination.pageSize = capacity
|
}
|
}
|
}
|
</script>
|
<style lang="scss" scoped>
|
.head {
|
width: 100%;
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
margin-bottom: 12px;
|
|
.title {
|
font-size: 16px;
|
font-weight: 500;
|
}
|
}
|
</style>
|