<!--SN码列表--> <template> <div class="product_container"> <div class="productFun"> <div class="productInput"> SN码 <div class="inputBox" style="width: 350px"> <el-input v-model="selectInfo.keyword" placeholder="请输入SN码固定标识/起始序列号/终止序列号" clearable class="product-input" /> </div> 设备型号 <div class="inputBox" style="width: 200px"> <el-input v-model="selectInfo.productCode" placeholder="请输入设备型号" clearable class="product-input" /> </div> </div> <div class="productBtn"> <el-button type="primary" icon="el-icon-search" class="btnItem" @click="selectData" > 查询 </el-button> <el-button type="primary" icon="el-icon-refresh-right" class="btnItem" @click="reset" > 重置 </el-button> <el-button type="success" icon="el-icon-circle-plus-outline" class="btnItem bggreen" @click="addCategory" > 新增 </el-button> <el-button type="danger" icon="el-icon-delete-solid" class="btnItem bgred" @click="BatchDelete" > 删除 </el-button> <el-button type="primary" icon="el-icon-folder-opened" class="btnItem" @click="exportToExcel" > 导出 </el-button> </div> </div> <el-table ref="multipleTable" v-loading="loading" :data="tableData.rows" :row-class-name="tableRowClassName" :header-cell-style="{ 'text-align': 'center', background: ' #2483b3', color: 'white', }" :row-style="{ 'text-align': 'center' }" style="width: 100%" > <el-table-column type="selection" width="55" /> <!-- <el-table-column prop="index" label="序号" />--> <el-table-column type="index" label="序号"> <template slot-scope="scope"> {{ (offset - 1) * limit + scope.$index + 1 }} </template> </el-table-column> <el-table-column prop="snFixedCode" label="SN码(固定标识)" /> <el-table-column prop="snFixedIllustration" label="SN码(固定标识)说明" /> <el-table-column prop="snStartCode" label="SN码(起始序列号)" /> <el-table-column prop="snEndCode" label="SN码(终止序列号)" /> <el-table-column prop="snSegmentNum" label="码段个数" /> <el-table-column prop="productCode" label="设备型号" /> <el-table-column label="生产日期"> <template slot-scope="scope"> {{scope.row.productDate.split(' ') [0]}} </template> </el-table-column> <el-table-column prop="hardwareVersion" label="硬件版本" /> <el-table-column prop="softwareVersion" label="软件版本" /> <el-table-column label="操作"> <template slot-scope="scope"> <el-button type="text" size="small" @click="showInfo(scope.row)"> 详情 </el-button> <el-button type="text" size="small" @click="Bdelete(scope.row)"> 删除 </el-button> <!-- <el-button type="text" size="small">编辑</el-button> --> </template> </el-table-column> </el-table> <!-- 分页组件 --> <group-page v-model="isFristPage" :limit="limit" :total="total" :offset="offset" :count="tableData.total" @setOffset="setOffset" @setLimit="setLimit" /> <!-- 新增弹框 --> <sn-code-field-dialog :is-show-add="isShowAdd" @close="closeAdd" /> <sn-field-info-dialog :is-show-info="isShowInfo" :data-info="rowInfo" @close="closeInfo" /> </div> </template> <script> // 组件 import SnCodeFieldDialog from "../../components/mycomponent/dialog/snCodeFieldDialog.vue"; import GroupPage from "../../components/mycomponent/groupPage.vue"; import SnFieldInfoDialog from "../../components/mycomponent/dialog/snFieldInfoDialog.vue"; // 逻辑 import { tableRowClassName } from "../../utils/myUtils/changeTableTr"; import { listMixin, elDataDialog } from "../../utils/myUtils/mixins/listPage"; import { SN_listPage, SN_batchDelete, SN_delete, SN_listExport, } from "../../api/product/snCodeField"; import { exportFile } from "@/utils/exportutils"; export default { components: { SnCodeFieldDialog, GroupPage, SnFieldInfoDialog, }, mixins: [listMixin, elDataDialog], data() { return { isShowAdd: false, // 显示新增功能 selectInfo: { // 搜索框中的数据的数据 keyword: "", productCode: "", }, }; }, methods: { tableRowClassName: tableRowClassName, closeAdd() { this.isShowAdd = false; this.refresh(); }, addCategory() { this.isShowAdd = true; }, // 获取指定页面 getListPage(limit, offset) { this.loading = true; SN_listPage(`limit=${limit}&offset=${offset}`, this.selectInfo) .then((res) => { this.loading = false; // 得到相关数据 res.rows.forEach((item, index) => { item.index = index + 1 + (offset - 1) * 10; }); this.tableData = res; }) .catch((_) => { this.loading = false; }); }, reset() { this.selectInfo = { keyword: "", productCode: "", }; this.limit = 10; this.offset = 1; this.refresh(); }, exportToExcel() { // 全屏加载动画 const loading = this.$loading({ lock: true, text: "下载中,请稍后...", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", }); SN_listExport(this.selectInfo).then((res) => { console.log(); loading.close(); // 关闭加载动画 console.log("download===", res); const blob = new Blob([res.data]); let fileName = "设备sn码列表.xlsx"; fileName = fileName.replace(/-|:| /g, ""); exportFile(blob, fileName); }); }, // 批量删除 BatchDelete() { if (this.$refs.multipleTable.selection.length) { this.$confirm(`确认删除选中的这些数据吗?`, "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning", }).then(() => { // 得到选中行 const ids = this.$refs.multipleTable.selection.map((item) => item.id); SN_batchDelete({ ids: ids }).then((res) => { this.$message({ message: "删除成功", type: "success", }); this.refresh(); }); }); } else { this.$message.warning("请先选择需要删除的数据"); } }, // 删除 Bdelete(row) { this.$confirm(`确认删除选中的这些数据吗?`, "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning", }).then(() => { const id = row.id; SN_delete({ id: id }).then((res) => { // 删除成功跟新数据 this.$message({ message: "删除成功", type: "success", }); this.refresh(); }); }); }, }, }; </script> <style lang="scss" scoped> .product_container { position: relative; width: 100%; min-height: 700px; height: 823px; overflow: auto; .productData { width: 100%; display: flex; justify-content: center; .middle { margin: 0 30px; } } .productFun { margin: 0px 0px 30px; display: flex; justify-content: space-between; .productInput { display: flex; align-items: center; .inputBox { margin: 0 50px 0 10px; } } .productBtn { .btnItem { margin-right: 10px; border-radius: 5px; // height: 32px; // width: 84px; font-size: 16px; } } } .footer { display: flex; justify-content: space-between; color: #6666; margin: 30px 10px; } } </style>