<template> <div class="brandClassification"> <template v-if="!isShowAdd"> <div class="head-title"> 分类管理 <el-button style="float: right; margin-top: -5px" size="small" type="primary" @click="(isShowAdd = true), clearMsg()"> 新增</el-button> </div> <div class="content" v-loading="loading"> <el-tabs v-model="activeType.Id" @tab-click="changeTypeHandler"> <el-tab-pane v-for="(x, i) in tradeTypes" :label="x.Name" :name="x.Id.toString()" :key="i"></el-tab-pane> </el-tabs> <div> <div class="searchInput" style="width: 250px"> <el-input @keyup.enter.native="(msg.pageIndex = 1), getList()" @clear="(msg.pageIndex = 1), getList()" style="display: inline-block; width: 225px; height: 30px" :placeholder="`请输入${activeType.Name}分类名称`" v-model="msg.ClassName" size="small" clearable> </el-input> <span @click="(msg.pageIndex = 1), getList()" class="el-icon-search" style=" color: #979dad; font-size: 14px; position: relative; top: 1px; "></span> </div> </div> <el-table :data="tableData" v-loading="loading" border style="width: 100%; margin: 20px 0"> <el-table-column prop="ID" label="编号" width="100"> </el-table-column> <el-table-column prop="ClassName" label="分类名称"> </el-table-column> <el-table-column prop="Logo" width="150" label="封面图"> <template slot-scope="scope"> <!-- <div class="app-image" :style="{ backgroundImage: 'url(' + scope.row.Logo + ')', backgroundSize: 'cover', }"></div> --> <img :src="scope.row.Logo" style="object-fit: cover; max-width: 60px; max-height: 40px;"> </template> </el-table-column> <el-table-column prop="CreateDate" width="200" label="创建时间"> </el-table-column> <el-table-column prop="address" width="200" label="操作"> <template slot-scope="scope"> <el-tooltip class="item" effect="dark" content="编辑" placement="top"> <img @click="editNews(scope.row)" style="width: 32px; height: 32px" src="../../assets/img/userman/edit.png" alt="" /> </el-tooltip> <el-tooltip class="item" effect="dark" content="删除" placement="top-start"> <img @click="delNews(scope.row)" style="width: 32px; height: 32px; margin: 0 10px" src="../../assets/img/userman/del.png" alt="" /> </el-tooltip> </template> </el-table-column> </el-table> <el-pagination style="text-align: right" background @current-change="handleCurrentChange" :page-size="msg.pageSize" :current-page.sync="msg.pageIndex" layout="total,prev, pager, next" :total="total"> </el-pagination> </div> </template> <template v-else> <div class="head-title"> <span @click="isShowAdd = false" style="color: rgb(64, 158, 255); cursor: pointer">分类管理</span><span style="margin: 0 9px; color: #c0c4cc">/</span><span>分类信息</span> </div> <div class="content"> <el-form label-width="120px" :model="addMsg" :rules="rules" ref="addMsg"> <el-form-item label="所属大类" class="is-required" prop="ClassName"> <el-select v-model="addMsg.BrandCategory" > <el-option v-for="(x,i) in tradeTypes" :key="i" :label="x.Name" :value="x.Id"></el-option> </el-select> </el-form-item> <el-form-item label="分类名称" class="is-required" prop="ClassName"> <el-input type="text" class="w400" v-model="addMsg.ClassName" size="small" placeholder="分类名称" maxlength="100"> </el-input> </el-form-item> <el-form-item label="Logo" size="small" class="is-required" prop="Logo"> <el-button @click="isShowImage = true" size="small">选择文件</el-button> <div class="app-gallery-item" style=" position: relative; width: 100px; margin-top: 10px; border: none; "> <img v-if="!addMsg.Logo || addMsg.Logo == ''" src="../../assets/img/default.png" style="width: 80px; height: 80px" alt="" /> <img v-else style="width: 80px; height: 80px" :src="addMsg.Logo" alt="" /> </div> </el-form-item> </el-form> </div> <el-button size="small" style="margin-top: 20px; padding: 9px 25px" type="primary" @click="submitform('addMsg')">保存 </el-button> </template> <!-- 选择文件 --> <el-dialog title="选择文件" :visible.sync="isShowImage" width="1240px"> <ChooseImg @SelectId="SelectId"></ChooseImg> </el-dialog> </div> </template> <script> import ChooseImg from "@/components/global/ChooseImg.vue"; import UE from "@/components/global/UE.vue"; export default { components: { ChooseImg, UE, }, data() { return { defaultMsg: "", config: { initialFrameWidth: null, initialFrameHeight: 350, }, msg: { pageIndex: 1, pageSize: 10, ClassName: "", }, total: 0, tableData: [], //数据列表 isShowImage: false, //是否显示选择图片弹窗 isShowAdd: false, //是否显示新增 addMsg: { ID: 0, //主键编号 BrandCategory:1, Logo: "", //封面图 ClassName: "", //品牌分类标题 }, rules: { ClassName: [ { required: true, message: "请输入品牌分类名称", trigger: "blur", }, ], Logo: [ { required: true, message: "请输入品牌Logo", trigger: "blur", }, ], }, activeType: { Id:'1', Name:'' }, tradeTypes: [], loading: false }; }, created() { this.loading = true this.initBrandCategory() }, methods: { changeTypeHandler(e) { this.activeType.Name = e.label this.getList() }, initBrandCategory() { this.apipost("/api/Trade/GetBrandCategory", this.msg, res => { if (res.data.resultCode == 1) { this.tradeTypes = res.data.data this.activeType.Id = this.tradeTypes[0].Id.toString() this.activeType.Name = this.tradeTypes[0].Name this.getList() }else{ this.loading = false; } }) }, SelectId(msg) { let url = this.getIconLink(msg.url); this.addMsg.Logo = url; this.isShowImage = false; }, clearMsg() { this.addMsg.BrandCategory = parseInt(this.activeType.Id) this.addMsg.ID = 0; this.addMsg.Logo = ""; this.addMsg.ClassName = ""; }, getList() { this.loading = true; this.msg.BrandCategory = this.activeType.Id this.apipost("/api/Trade/GetBrandClassPageList", this.msg, (res) => { if (res.data.resultCode == 1) { this.total = res.data.data.count; let pageData = res.data.data.pageData; this.tableData = pageData; } this.loading = false; }); }, handleCurrentChange(val) { this.msg.pageIndex = val; this.getList(); }, //删除品牌分类 delNews(item) { let that = this; that.Confirm("是否删除?", function () { that.apipost( "/api/Trade/RemoveBrandClass", { Id: item.ID, Status: 1, }, (res) => { if (res.data.resultCode == 1) { that.Success(res.data.message); that.getList(); } else { that.Error(res.data.message); } } ); }); }, //修改品牌分类 editNews(item) { this.apipost( "/api/Trade/GetBrandClassDetails", { ID: item.ID, }, (res) => { if (res.data.resultCode == 1) { this.isShowAdd = true; var tempData = res.data.data; this.addMsg.ID = tempData.ID; this.addMsg.BrandCategory = tempData.BrandCategory this.addMsg.Logo = tempData.Logo; this.addMsg.ClassName = tempData.ClassName; } else { this.Error(res.data.message); } } ); }, //新增修改 submitform(formName) { this.$refs[formName].validate((valid) => { if (valid) { this.apipost("/api/Trade/GetSetBrandClass", this.addMsg, (res) => { if (res.data.resultCode == 1) { this.isShowAdd = false; this.getList(); this.clearMsg(); this.Success(res.data.message); } else { this.Error(res.data.message); } }); } else { return false; } }); }, }, mounted() { }, }; </script> <style> .brandClassification .remark_name { color: #888888; font-size: 12px; margin-left: 10px; float: right; } .brandClassification .app-image { background-position: center center; width: 50px; height: 50px; border-radius: 0%; float: left; margin-right: 8px; } .brandClassification .blue { color: #409eff; } .brandClassification .content .searchInput { border: 1px solid #dcdfe6; border-radius: 4px; } .brandClassification .content .searchInput .el-input__inner { border: none; outline: none; height: 30px; line-height: 30px; } .brandClassification .content .searchInput { line-height: normal; display: inline-table; width: 100%; border-collapse: separate; border-spacing: 0; width: 250px; margin-right: 20px; } .brandClassification .content { background: #fff; margin-top: 10px; padding: 20px; box-sizing: border-box; } .brandClassification .el-form-item__content { line-height: 0; } </style>