当前位置:网站首页>8. Commodity management - commodity classification
8. Commodity management - commodity classification
2022-07-05 02:26:00 【chnyi6_ ya】
1. Overview of commodity classification
Commodity classification is used when shopping , Quickly find what you want to buy , You can see it intuitively through the homepage of the e-commerce platform .
2. List of commodity categories
- Realize the basic layout
- Realize classification list data loading
// Get commodity classification data
async getCateList () {
const { data: res } = await this.$http.get('categories', { params: this.queryInfo })
if (res.meta.status !== 200) {
return this.$message(' Failed to get product classification !')
}
console.log(res.data)
// Assign the data list to cateList
this.cateList = res.data.result
// Assign a value to the total number of data pieces
this.total = res.data.total
}
3. The tree form
1. Basic use of third-party tree tables
import TreeTable from 'vue-table-with-tree-grid'
Vue.component('tree-table', TreeTable)
2. Implement classification tree list
4. Paging function
1. Achieve paging component effect
<!-- Paging area -->
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryInfo.pagenum" :page-sizes="[3,5,10,15]" :page-size="queryInfo.pagesize" layout="total, sizes, prev, pager, next, jumper" :total="total">
</el-pagination>
2. Paging component data processing
// monitor pagesize Changing events
handleSizeChange (newSize) {
this.queryInfo.pagesize = newSize
this.getCateList()
},
// monitor pagenum Changes
handleCurrentChange (newPage) {
this.queryInfo.pagenum = newPage
this.getCateList()
}
5. Add categories
1. Implement classification tree list
<!-- Add classification dialog box -->
<el-dialog
title=" Add categories "
:visible.sync="addCateDialogVisible"
width="50%">
<!-- Add a classified form -->
<el-form :model="addCateForm" :rules="addCateFormRules"
ref="addCateFormRef" label-width="100px">
<el-form-item label=" Category name " prop="cat_name">
<el-input v-model="addCateForm.cat_name"></el-input>
</el-form-item>
<el-form-item label=" Parent classification ">
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addCateDialogVisible = false"> take eliminate </el-button>
<el-button type="primary" @click="addCateDialogVisible = false"> indeed set </el-button>
</span>
</el-dialog>
2. Achieve the effect of cascading menus
Achieve cascading menu effect :
<el-cascader clearable change-on-select expand-trigger="hover" :options="parentCateList" :props="cascaderProps" v-model="selectedKeys" @change="parentCateChange"></el-cascader>
Cascade menu data loading and filling :
// Get the data list of parent classification
async getParentList () {
const { data: res } = await this.$http.get('categories', {
params: {
type: 2
}
})
if (res.meta.status !== 200) {
return this.$message.error(' Failed to get parent classification data !')
}
// console.log(res.data)
this.parentCateList = res.data
}
3. Control the selection of parent classification
When selecting parent classification , Get the corresponding classification id.
// The function triggered by the change of the selection
parentCateChange () {
// The array length is greater than 0, Prove that the parent classification is selected
// Otherwise, it means , No parent classification is selected
if (this.selectedKeys.length > 0) {
// Of parent classification id
this.addCateForm.cat_pid = this.selectedKeys[this.selectedKeys.length - 1]
// Assign a value to the level of the current classification
this.addCateForm.cat_level = this.selectedKeys.length
} else {
this.addCateForm.cat_pid = 0
this.addCateForm.cat_level = 0
}
}
4. Complete category addition
// Click button , Add a new category
async addCate () {
// console.log(this.addCateForm)
this.$refs.addCateFormRef.validate(async valid => {
if (!valid) return
const { data: res } = await this.$http.post('categories', this.addCateForm)
if (res.meta.status !== 201) {
return this.$message.error(' Failed to add classification !')
}
this.$message.success(' Category added successfully !')
this.getCateList()
this.addCateDialogVisible = false
})
6. Edit classification information
// Show the dialog box of editing classification
async showEditDialog (id) {
const { data: res } = await this.$http.get('categories/' + id)
// console.log(res)
if (res.meta.status !== 200) {
return this.$message.error(' Failed to query classification information !')
}
// console.log(res.data)
this.editCateForm = res.data
this.EditDialogVisible = true
},
// Listen and modify the closing event of user dialog box
editDialogClosed () {
this.$refs.editCateFormRef.resetFields()
},
// Modify the role information and submit
async editCate () {
this.$refs.editCateFormRef.validate(async valid => {
if (!valid) return
const { data: res } = await this.$http.put('categories/' + this.editCateForm.cat_pid,
{ cat_name: this.editCateForm.cat_name })
if (res.meta.status !== 200) {
return this.$message.error(' Failed to update classification information !')
}
// close dialog boxes
this.EditDialogVisible = false
// Refresh the data list
this.getCateList()
// It indicates that the modification is successful
this.$message.success(' Update classification information successfully !')
})
}
7. Delete category
// according to id Delete the information corresponding to the classification
async removeCateById (id) {
// The pop-up box asks the user whether to delete data
const confirmResult = await this.$confirm(' This action will permanently delete the user , Whether or not to continue ?', ' Tips ', {
confirmButtonText: ' determine ',
cancelButtonText: ' Cancel ',
type: 'warning'
}).catch(err => err)
if (confirmResult !== 'confirm') {
return this.$message.info(' The deletion has been cancelled ')
}
// Initiate a request to delete a user action
const { data: res } = await this.$http.delete('categories/' + id)
if (res.meta.status !== 200) {
return this.$message.error(' Failed to delete classification !')
}
this.$message.success(' Delete classification succeeded !')
// Re render the data
this.getCateList()
}
边栏推荐
- The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety
- Educational Codeforces Round 122 (Rated for Div. 2) ABC
- The most powerful new household god card of Bank of communications. Apply to earn 2100 yuan. Hurry up if you haven't applied!
- Character painting, I use characters to draw a Bing Dwen Dwen
- openresty ngx_ Lua execution phase
- Learn game model 3D characters, come out to find a job?
- openresty ngx_lua執行階段
- The MySQL team development specifications used by various factories are too detailed. It is recommended to collect them!
- Single line function*
- The steering wheel can be turned for one and a half turns. Is there any difference between it and two turns
猜你喜欢
Practice of tdengine in TCL air conditioning energy management platform
openresty ngx_lua執行階段
Naacl 2021 | contrastive learning sweeping text clustering task
Chinese natural language processing, medical, legal and other public data sets, sorting and sharing
Can you really learn 3DMAX modeling by self-study?
LeetCode 314. Binary tree vertical order traversal - Binary Tree Series Question 6
【LeetCode】222. The number of nodes of a complete binary tree (2 mistakes)
STM32 series - serial port UART software pin internal pull-up or external resistance pull-up - cause problem search
Application and Optimization Practice of redis in vivo push platform
Asynchronous and promise
随机推荐
Process scheduling and termination
[Yu Yue education] National Open University spring 2019 0505-22t basic nursing reference questions
使用druid連接MySQL數據庫報類型錯誤
[机缘参悟-38]:鬼谷子-第五飞箝篇 - 警示之一:有一种杀称为“捧杀”
Introduce reflow & repaint, and how to optimize it?
Pytest (4) - test case execution sequence
openresty ngx_lua执行阶段
When to catch an exception and when to throw an exception- When to catch the Exception vs When to throw the Exceptions?
Advanced learning of MySQL -- Application -- Introduction
He was laid off.. 39 year old Ali P9, saved 150million
Luo Gu Pardon prisoners of war
Application and Optimization Practice of redis in vivo push platform
JVM's responsibility - load and run bytecode
When the low alcohol race track enters the reshuffle period, how can the new brand break the three major problems?
Codeforces Round #770 (Div. 2) ABC
JVM - when multiple threads initialize the same class, only one thread is allowed to initialize
Security level
Erreur de type de datagramme MySQL en utilisant Druid
Word processing software
Official announcement! The third cloud native programming challenge is officially launched!