<template> <div class="mod-config"> <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form-item> <el-input v-model="dataForm.key" placeholder="参数名" clearable></el-input> </el-form-item> <el-form-item> <el-button @click="getDataList()">查询</el-button> <el-button v-if="$hasPermission('monitoring:productarrt:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button> </el-form-item> </el-form> <base-table :data="dataList" :table-head-configs="tableConfigs" :max-height="calcMaxHeight(8)" @operate-event="handleOperations" @refreshDataList="getDataList" /> <el-pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" :current-page="pageIndex" :page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="totalPage" layout="total, sizes, prev, pager, next, jumper" > </el-pagination> <!-- 弹窗, 新增 / 修改 --> <add-or-update v-if="addOrUpdateVisible" :configs="addOrUpdateConfigs" ref="addOrUpdate" @refreshDataList="getDataList" @destroy-dialog="addOrUpdateVisible = false" /> </div> </template> <script> import { calcMaxHeight } from '@/utils' import { timeFilter } from '@/utils/filters' // import AddOrUpdate from './productArrt-add-or-update' import AddOrUpdate from '@/components/base-dialog/addOrUpdate' import BaseTable from '@/components/base-table' import TableOperateComponent from '@/components/base-table/components/operationComponent' // import TableTextComponent from '@/components/base-table/components/detailComponent' const tableConfigs = [ { prop: 'createTime', name: '添加时间', filter: timeFilter }, { prop: 'name', name: '属性名称' }, { prop: 'code', name: '属性编码' }, { prop: 'productId', name: '产品id' }, { prop: 'value', name: '属性值' }, { prop: 'description', name: '描述' }, { prop: 'operations', name: '操作', fixed: 'right', width: 180, subcomponent: TableOperateComponent, options: ['edit', 'delete'] } ] const addOrUpdateConfigs = { type: 'dialog', infoUrl: '/monitoring/productArrt', fields: [ { name: 'name', label: '属性名称', placeholder: '请输入属性名称' }, { name: 'code', label: '属性编码', placeholder: '请输入属性编码' }, { name: 'productId', label: '关联产品', type: 'select', options: [] }, { name: 'value', label: '属性值', placeholder: '请输入属性值' }, { name: 'description', label: '描述', placeholder: '请输入描述' } ], operations: [ { name: 'cancel', showAlways: true }, { name: 'save', url: '/monitoring/productArrt', permission: 'monitoring:productarrt:save', showOnEdit: false }, { name: 'update', url: '/monitoring/productArrt', permission: 'monitoring:productarrt:update', showOnEdit: true } ] } export default { data() { return { calcMaxHeight, addOrUpdateConfigs, tableConfigs, dataForm: { key: '' }, dataList: [], pageIndex: 1, pageSize: 10, totalPage: 0, dataListLoading: false, dataListSelections: [], addOrUpdateVisible: false } }, components: { AddOrUpdate, BaseTable }, activated() { this.getProductList() this.getDataList() }, methods: { // 获取产品列表 getProductList() { this.$http({ url: this.$http.adornUrl('/monitoring/product/page'), method: 'get', params: this.$http.adornParams({ limit: 999, page: 1 }) }).then(({ data: res }) => { if (res && res.code === 0) { this.addOrUpdateConfigs.fields.forEach(item => { if (item.name === 'productId') item.options = res.data.list.map(item => ({ label: item.name, value: item.id })) }) } else { this.addOrUpdateConfigs.fields.forEach(item => { if (item.name === 'productId') item.options.splice(0) }) // this.plList.splice(0) } }) }, // 获取数据列表 getDataList() { this.dataListLoading = true this.$http({ url: this.$http.adornUrl('/monitoring/productArrt/page'), method: 'get', params: this.$http.adornParams({ page: this.pageIndex, limit: this.pageSize, key: this.dataForm.key }) }).then(({ data }) => { if (data && data.code === 0) { this.dataList = data.data.list this.totalPage = data.data.total } else { this.dataList = [] this.totalPage = 0 } this.dataListLoading = false }) }, // 每页数 sizeChangeHandle(val) { this.pageSize = val this.pageIndex = 1 this.getDataList() }, // 当前页 currentChangeHandle(val) { this.pageIndex = val this.getDataList() }, // 多选 selectionChangeHandle(val) { this.dataListSelections = val }, handleOperations({ type, data: id }) { switch (type) { case 'edit': return this.addOrUpdateHandle(id) case 'delete': return this.deleteHandle(id) } }, // 新增 / 修改 addOrUpdateHandle(id) { this.addOrUpdateVisible = true this.$nextTick(() => { this.$refs.addOrUpdate.init(id) }) }, // 删除 deleteHandle(id) { var ids = id ? [id] : this.dataListSelections.map(item => { return item.id }) this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.$http({ url: this.$http.adornUrl('/monitoring/productArrt'), method: 'delete', data: this.$http.adornData(ids, false, 'raw') }).then(({ data }) => { if (data && data.code === 0) { this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { this.getDataList() } }) } else { this.$message.error(data.msg) } }) }) } } } </script>