新增商品分组

This commit is contained in:
gyq
2024-01-16 17:24:35 +08:00
parent 6e62895adb
commit 26425e7f57
5 changed files with 488 additions and 108 deletions

View File

@@ -1,128 +1,99 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" />
<!--表单组件(增改)-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="分组名称" prop="name">
<el-input v-model="form.name" style="width: 370px;" />
</el-form-item>
<el-form-item label="图标">
<el-input v-model="form.pic" style="width: 370px;" />
</el-form-item>
<el-form-item label="是否显示" prop="isShow">
<el-input v-model="form.isShow" style="width: 370px;" />
</el-form-item>
<el-form-item label="分类描述">
<el-input v-model="form.detail" style="width: 370px;" />
</el-form-item>
<el-form-item label="添加商品">
<el-input v-model="form.productIds" style="width: 370px;" />
</el-form-item>
<el-button type="primary" @click="addProduct">+添加商品
<el-dialog title="选择商品" :visible.sync="productClick">
<el-table :data="productList.content" style="width: 100%;">
<el-table-column type="selection" width="55" />
<el-table-column property="name" label="商品信息" width="150" />
<el-table-column property="lowPrice" label="售价" width="200" />
<el-table-column property="address" label="地址" />
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="centerDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="addProduct">确 定</el-button>
</span>
</el-dialog>
</el-button>
<el-form-item label="创建时间">
<el-input v-model="form.createdAt" style="width: 370px;" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染(查)-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column prop="name" label="分组名称" />
<el-table-column prop="pic" label="图标" />
<el-table-column prop="isShow" label="是否显示" />
<el-table-column prop="detail" label="分类描述" />
<el-table-column prop="productIds" label="商品列表" />
<el-table-column prop="createdAt" label="创建时间" />
<el-table-column v-if="checkPer(['admin','tbProductGroup:edit','tbProductGroup:del'])" label="操作" width="150px" align="center">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
<el-button type="primary" icon="el-icon-plus" @click="$refs.addGroupRef.show()">
添加分组
</el-button>
<addGroup ref="addGroupRef" @success="resetHandle" />
</div>
<div class="head-container">
<el-table :data="tableData.list" v-loading="tableData.loading">
<el-table-column label="排序" sortable prop="sort"></el-table-column>
<el-table-column label="分组名称" prop="name"></el-table-column>
<el-table-column label="状态">
<template v-slot="scope">
<el-switch v-model="scope.row.isShow" :active-value="1" :inactive-value="0"></el-switch>
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<template v-slot="scope">
<el-button type="text" size="mini" round icon="el-icon-edit"
@click="$refs.addGroupRef.show(scope.row)">编辑</el-button>
<el-popconfirm title="确定删除吗?" @confirm="delHandle([scope.row.id])">
<el-button type="text" size="mini" round icon="el-icon-delete" slot="reference">
删除
</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
<el-pagination :total="tableData.total" :current-page="tableData.page + 1" :page-size="tableData.size"
@current-change="paginationChange" layout="total, sizes, prev, pager, next, jumper"></el-pagination>
</div>
</template>
<script>
import crudTbProductGroup from '@/api/tbProductGroup'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import { addProduct } from '@/api/tbProductGroup'
const defaultForm = { id: null, name: null, merchantId: null, shopId: null, pic: null, isShow: null, detail: null, style: null, sort: null, productIds: null, createdAt: null, updatedAt: null }
import addGroup from '../components/addGroup'
import { tbProductGroupGet, tbProductSpecDelete } from '@/api/shop'
export default {
name: 'TbProductGroup',
components: { pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({ title: 'product/group', url: 'api/tbProductGroup', idField: 'id', sort: 'id,desc', crudMethod: { ...crudTbProductGroup }})
components: {
addGroup
},
data() {
return {
permission: {
add: ['admin', 'tbProductGroup:add'],
edit: ['admin', 'tbProductGroup:edit'],
del: ['admin', 'tbProductGroup:del']
},
rules: {
name: [
{ required: true, message: '分组名称不能为空', trigger: 'blur' }
],
isShow: [
{ required: true, message: '是否显示1显示 0不显示不能为空', trigger: 'blur' }
]
},
productList: [],
productClick: false
tableData: {
page: 0,
size: 10,
total: 0,
loading: false,
list: []
}
}
},
mounted() {
this.getTableData()
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
// 重置查询
resetHandle() {
this.tableData.page = 0;
this.getTableData()
},
addProduct(data) {
this.productClick = true
addProduct(data).then(res => {
this.productList = res
})
// 分页回调
paginationChange(e) {
this.tableData.page = e
this.getTableData()
},
// 删除
async delHandle(ids) {
try {
await tbProductSpecDelete(ids)
this.$notify({
title: '成功',
message: `删除成功`,
type: 'success'
});
this.getTableData()
} catch (error) {
console.log(error)
}
},
// 获取商品列表
async getTableData() {
this.tableData.loading = true
try {
const res = await tbProductGroupGet({
page: this.tableData.page,
size: this.tableData.size,
sort: 'id',
shopId: localStorage.getItem('shopId')
})
this.tableData.loading = false
this.tableData.list = res.content
this.tableData.total = res.totalElements
} catch (error) { }
}
}
}
</script>
<style scoped>
</style>
</script>