water-ldht/src/views/iot/product/index.vue

292 lines
7.2 KiB
Vue

<template>
<div class="manage-container">
<div class="manage-wrap">
<div class="manage-input">
<el-form ref="queryForm" :model="queryForm" label-width="80px">
<vab-query-form>
<el-form-item width="100" prop="name" label="产品名称">
<el-input
v-model="queryForm.name"
size="small"
placeholder="请输入产品名称"
></el-input>
</el-form-item>
</vab-query-form>
</el-form>
</div>
<div class="manage-button">
<el-button size="small" @click="resetForm()">重置</el-button>
<el-button type="primary" size="small" @click="search">查询</el-button>
<el-button type="primary" size="small" @click="deletes">
批量删除
</el-button>
<el-button type="primary" size="small" @click="handleAdd">
添加产品
</el-button>
</div>
</div>
<el-table
v-loading="listLoading"
:data="groupData"
border
stripe
style="width: 100%"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column
prop="id"
label="ID"
width="60"
align="center"
></el-table-column>
<el-table-column
prop="name"
label="产品名称"
width="300"
align="center"
></el-table-column>
<el-table-column
prop="materialCode"
label="金蝶物料编号"
width="250"
align="center"
></el-table-column>
<el-table-column
prop="remark"
label="备注"
width="250"
align="center"
></el-table-column>
<el-table-column fixed="right" label="操作" align="center">
<template #default="{ row }">
<el-button type="text" @click="handleEdit(row)">编辑</el-button>
<el-button type="text" @click="addProject(row)">产品参数</el-button>
<el-button type="text" @click="handleDelete(row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:background="background"
:current-page="queryForm.page"
:layout="layout"
:page-size="queryForm.size"
:total="total"
style="text-align: right"
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
></el-pagination>
<group-edit ref="edit"></group-edit>
<attribute-edit ref="attribute"></attribute-edit>
</div>
</template>
<script>
import {
delectData,
getList,
addAttribute,
updateData,
getAttribute,
} from '@/api/product';
import groupEdit from './groupEdit';
import attributeEdit from './attributeEdit';
import { baseURL } from '@/config';
import { imgReplacePath } from '@/utils/img';
export default {
name: 'Index',
components: { groupEdit, attributeEdit },
data() {
return {
groupData: [],
lazy: true,
layout: 'total, sizes, prev, pager, next, jumper',
total: 0,
background: true,
listLoading: true,
elementLoadingText: '正在加载...',
ids: [],
queryForm: {
page: 1,
size: 20,
name: '',
},
};
},
computed: {
height() {
return 500;
},
},
created() {
this.fetchData();
},
methods: {
async fetchData() {
this.listLoading = true;
const { data } = await getList(this.queryForm);
this.groupData = data.items.map(item => {
item.nameplate &&
(item.nameplate = baseURL + '/static/img/' + item.nameplate);
return item;
});
console.log(this.groupData);
this.total = data.total;
setTimeout(() => {
this.listLoading = false;
}, 500);
},
search() {
this.fetchData();
},
addProject(row) {
getAttribute(row.id).then(res => {
let attribute = res.data;
attribute.sort((a, b) => a.orderNum - b.orderNum);
this.$refs['attribute'].showEdit(attribute, row.id);
});
},
handleAdd() {
this.$refs['edit'].showEdit();
},
handleEdit(row) {
this.$refs['edit'].showEdit(row);
},
resetForm() {
this.$refs.queryForm.resetFields();
},
handleQuery() {
this.queryForm.page = 1;
this.fetchData();
},
handleSizeChange(val) {
this.queryForm.size = val;
this.fetchData();
},
handleCurrentChange(val) {
this.queryForm.page = val;
this.fetchData();
},
deletes() {
const ids = this.ids;
const that = this;
if (ids.length == 0) {
this.$message({
type: 'info',
message: '没有选中任何项',
});
return false;
}
this.$confirm('你确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const { msg } = delectData(ids);
this.$message({
type: 'success',
message: msg == undefined ? '删除成功' : msg,
});
setTimeout(function () {
that.fetchData();
}, 1000);
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除',
});
});
},
handleSelectionChange(val) {
const ids = [];
val.forEach(row => {
ids.push(row.id);
});
this.ids = ids;
},
handleDelete(row) {
var that = this;
if (row.id) {
this.$confirm('你确定要删除当前项吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const { msg } = delectData([row.id]);
this.$message({
type: 'success',
message: msg == undefined ? '删除成功' : msg,
});
setTimeout(function () {
that.fetchData();
}, 1000);
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除',
});
});
}
},
},
};
</script>
<style lang="scss" scoped>
.manage-wrap {
display: flex;
justify-content: space-between;
align-items: flex-start;
.el-input {
width: 200px !important;
}
.el-select {
width: 200px !important;
}
.manage-button {
padding-left: 12px;
margin-bottom: 30px;
}
}
</style>
<style lang="scss">
.el-submenu__title:hover {
background-color: rgba(#1890ff, 0.085) !important;
color: hsla(208, 100%, 55%, 0.95) !important;
}
.el-dialog {
.el-dialog__header {
background-color: #1890ff !important;
padding: 15px 20px;
text-align: left !important;
.el-dialog__title {
color: #e8f4ff !important;
}
.el-dialog__headerbtn .el-dialog__close {
color: #e8f4ff !important;
}
}
.el-dialog__body {
padding: 20px !important;
.el-form-item {
margin-bottom: 10px !important;
.el-input {
width: 100% !important;
}
.el-select {
width: 100% !important;
}
}
.el-form-item:last-child {
margin-bottom: 20px !important;
}
}
}
</style>