Commit 8d08d5939fd18fcab76ab2c49934a87581ccd12d

Authored by JeromeSoar
1 parent cc6c3d27

品牌 crud

yudao-ui-admin/src/views/mall/product/brand/index.vue
@@ -3,9 +3,6 @@ @@ -3,9 +3,6 @@
3 3
4 <!-- 搜索工作栏 --> 4 <!-- 搜索工作栏 -->
5 <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> 5 <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
6 - <el-form-item label="分类编号" prop="categoryId">  
7 - <el-input v-model="queryParams.categoryId" placeholder="请输入分类编号" clearable @keyup.enter.native="handleQuery"/>  
8 - </el-form-item>  
9 <el-form-item label="品牌名称" prop="name"> 6 <el-form-item label="品牌名称" prop="name">
10 <el-input v-model="queryParams.name" placeholder="请输入品牌名称" clearable @keyup.enter.native="handleQuery"/> 7 <el-input v-model="queryParams.name" placeholder="请输入品牌名称" clearable @keyup.enter.native="handleQuery"/>
11 </el-form-item> 8 </el-form-item>
@@ -43,10 +40,13 @@ @@ -43,10 +40,13 @@
43 40
44 <!-- 列表 --> 41 <!-- 列表 -->
45 <el-table v-loading="loading" :data="list"> 42 <el-table v-loading="loading" :data="list">
46 - <el-table-column label="品牌编号" align="center" prop="id"/>  
47 - <el-table-column label="分类编号" align="center" prop="categoryId"/> 43 + <el-table-column label="商品分类" align="center" prop="categoryId"/>
48 <el-table-column label="品牌名称" align="center" prop="name"/> 44 <el-table-column label="品牌名称" align="center" prop="name"/>
49 - <el-table-column label="品牌图片" align="center" prop="bannerUrl"/> 45 + <el-table-column label="品牌图片" align="center" prop="bannerUrl">
  46 + <template slot-scope="scope">
  47 + <img v-if="scope.row.bannerUrl" :src="scope.row.bannerUrl" alt="分类图片" class="img-height"/>
  48 + </template>
  49 + </el-table-column>
50 <el-table-column label="品牌排序" align="center" prop="sort"/> 50 <el-table-column label="品牌排序" align="center" prop="sort"/>
51 <el-table-column label="品牌描述" align="center" prop="description"/> 51 <el-table-column label="品牌描述" align="center" prop="description"/>
52 <el-table-column label="状态" align="center" prop="status"> 52 <el-table-column label="状态" align="center" prop="status">
@@ -77,8 +77,9 @@ @@ -77,8 +77,9 @@
77 <!-- 对话框(添加 / 修改) --> 77 <!-- 对话框(添加 / 修改) -->
78 <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> 78 <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
79 <el-form ref="form" :model="form" :rules="rules" label-width="80px"> 79 <el-form ref="form" :model="form" :rules="rules" label-width="80px">
80 - <el-form-item label="分类编号" prop="categoryId">  
81 - <el-input v-model="form.categoryId" placeholder="请输入分类编号"/> 80 + <el-form-item label="商品分类" prop="categoryId">
  81 + <Treeselect v-model="form.categoryId" :options="categoryOptions" :normalizer="normalizer" :show-count="true"
  82 + placeholder="请选择商品分类"/>
82 </el-form-item> 83 </el-form-item>
83 <el-form-item label="品牌名称" prop="name"> 84 <el-form-item label="品牌名称" prop="name">
84 <el-input v-model="form.name" placeholder="请输入品牌名称"/> 85 <el-input v-model="form.name" placeholder="请输入品牌名称"/>
@@ -93,10 +94,11 @@ @@ -93,10 +94,11 @@
93 <el-input v-model="form.description" type="textarea" placeholder="请输入内容"/> 94 <el-input v-model="form.description" type="textarea" placeholder="请输入内容"/>
94 </el-form-item> 95 </el-form-item>
95 <el-form-item label="状态" prop="status"> 96 <el-form-item label="状态" prop="status">
96 - <el-select v-model="form.status" placeholder="请选择状态">  
97 - <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"  
98 - :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"/>  
99 - </el-select> 97 + <el-radio-group v-model="form.status">
  98 + <el-radio v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
  99 + :key="dict.value" :label="parseInt(dict.value)">{{ dict.label }}
  100 + </el-radio>
  101 + </el-radio-group>
100 </el-form-item> 102 </el-form-item>
101 </el-form> 103 </el-form>
102 <div slot="footer" class="dialog-footer"> 104 <div slot="footer" class="dialog-footer">
@@ -116,12 +118,15 @@ import { @@ -116,12 +118,15 @@ import {
116 getBrandPage, 118 getBrandPage,
117 updateBrand 119 updateBrand
118 } from "@/api/mall/product/brand"; 120 } from "@/api/mall/product/brand";
  121 +import {listCategory} from "@/api/mall/product/category";
119 import ImageUpload from '@/components/ImageUpload'; 122 import ImageUpload from '@/components/ImageUpload';
  123 +import Treeselect from "@riophae/vue-treeselect";
  124 +import "@riophae/vue-treeselect/dist/vue-treeselect.css";
120 125
121 export default { 126 export default {
122 name: "Brand", 127 name: "Brand",
123 components: { 128 components: {
124 - ImageUpload, 129 + ImageUpload, Treeselect,
125 }, 130 },
126 data() { 131 data() {
127 return { 132 return {
@@ -148,6 +153,8 @@ export default { @@ -148,6 +153,8 @@ export default {
148 name: null, 153 name: null,
149 status: null, 154 status: null,
150 }, 155 },
  156 + // 商品分类树选项
  157 + categoryOptions: [],
151 // 表单参数 158 // 表单参数
152 form: {}, 159 form: {},
153 // 表单校验 160 // 表单校验
@@ -160,6 +167,7 @@ export default { @@ -160,6 +167,7 @@ export default {
160 }; 167 };
161 }, 168 },
162 created() { 169 created() {
  170 + this.getTreeselect();
163 this.getList(); 171 this.getList();
164 }, 172 },
165 methods: { 173 methods: {
@@ -176,6 +184,26 @@ export default { @@ -176,6 +184,26 @@ export default {
176 this.loading = false; 184 this.loading = false;
177 }); 185 });
178 }, 186 },
  187 + /** 转换菜单数据结构 */
  188 + normalizer(node) {
  189 + if (node.children && !node.children.length) {
  190 + delete node.children;
  191 + }
  192 + return {
  193 + id: node.id,
  194 + label: node.name,
  195 + children: node.children
  196 + };
  197 + },
  198 + /** 查询分类下拉树结构 */
  199 + getTreeselect() {
  200 + listCategory().then(response => {
  201 + this.categoryOptions = [];
  202 + const menu = {id: 0, name: '商品分类', children: []};
  203 + menu.children = this.handleTree(response.data, "id", "pid");
  204 + this.categoryOptions.push(menu);
  205 + });
  206 + },
179 /** 取消按钮 */ 207 /** 取消按钮 */
180 cancel() { 208 cancel() {
181 this.open = false; 209 this.open = false;
@@ -208,12 +236,14 @@ export default { @@ -208,12 +236,14 @@ export default {
208 /** 新增按钮操作 */ 236 /** 新增按钮操作 */
209 handleAdd() { 237 handleAdd() {
210 this.reset(); 238 this.reset();
  239 + this.getTreeselect();
211 this.open = true; 240 this.open = true;
212 this.title = "添加品牌"; 241 this.title = "添加品牌";
213 }, 242 },
214 /** 修改按钮操作 */ 243 /** 修改按钮操作 */
215 handleUpdate(row) { 244 handleUpdate(row) {
216 this.reset(); 245 this.reset();
  246 + this.getTreeselect();
217 const id = row.id; 247 const id = row.id;
218 getBrand(id).then(response => { 248 getBrand(id).then(response => {
219 this.form = response.data; 249 this.form = response.data;
@@ -275,3 +305,10 @@ export default { @@ -275,3 +305,10 @@ export default {
275 } 305 }
276 }; 306 };
277 </script> 307 </script>
  308 +
  309 +<style scoped lang="scss">
  310 +//
  311 +.img-height {
  312 + height: 150px;
  313 +}
  314 +</style>