# Conflicts:
#	fuintAdmin/.env.development
This commit is contained in:
DESKTOP-369JRHT\12997 2023-10-26 11:44:24 +08:00
commit 90b60aaadc
39 changed files with 2335 additions and 664 deletions

View File

@ -12,3 +12,4 @@ VUE_APP_PUBLIC_PATH = '/'
# 后端接口地址
VUE_APP_SERVER_URL = 'http://192.168.1.6:8008/'

View File

@ -13,8 +13,8 @@ export function insertCvsGoods(data) {
export function selectTree(data) {
return request({
url: '/business/cvsGoods/selectTree',
method: 'post',
data: data
method: 'get',
params: data
})
}
@ -28,19 +28,27 @@ export function list(data) {
}
// 根据id查询一级分类
export function selectParentById(query) {
export function selectParentById(id) {
return request({
url: '/business/cvsGoods',
url: '/business/cvsGoods/'+id,
method: 'get',
params: query
})
}
// 修改会员
export function updateCevGood(data) {
return request({
url: '/business/cvsGoods',
method: 'put',
data: data
})
}
// 根据id查询一级分类
export function deleteBYId(id) {
return request({
url: '/business/cvsGoods/detele/'+id,
url: '/business/cvsGoods/'+id,
method: 'delete',
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询供应商列表
export function listLJGoods(query) {
return request({
url: '/business/convenience/goods/list',
method: 'get',
params: query
})
}
// 查询供应商详细
export function getLJGoods(id) {
return request({
url: '/business/convenience/goods/' + id,
method: 'get'
})
}
// 新增供应商
export function addLJGoods(data) {
return request({
url: '/business/convenience/goods',
method: 'post',
data: data
})
}
// 修改供应商
export function updateLJGoods(data) {
return request({
url: '/business/convenience/goods',
method: 'put',
data: data
})
}
// 删除供应商
export function delLJGoods(id) {
return request({
url: '/business/convenience/goods/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询供应商列表
export function listSupplier(query) {
return request({
url: '/business/convenience/supplier/list',
method: 'get',
params: query
})
}
// 查询供应商详细
export function getSupplier(id) {
return request({
url: '/business/convenience/supplier/' + id,
method: 'get'
})
}
// 新增供应商
export function addSupplier(data) {
return request({
url: '/business/convenience/supplier',
method: 'post',
data: data
})
}
// 修改供应商
export function updateSupplier(data) {
return request({
url: '/business/convenience/supplier',
method: 'put',
data: data
})
}
// 删除供应商
export function delSupplier(id) {
return request({
url: '/business/convenience/supplier/' + id,
method: 'delete'
})
}

View File

@ -8,7 +8,7 @@
<el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
<el-menu
:default-active="activeMenu"
:collapse="isCollapse"
:collapse="false"
:background-color="settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground"
:text-color="settings.sideTheme === 'theme-dark' ? variables.menuColor : variables.menuLightColor"
:unique-opened="true"

View File

@ -1,346 +1,497 @@
<template>
<div>
<el-card style="margin-top: 20px;">
<!-- 查询类别 -->
<el-form :inline="true" :model="goodsQueryForm">
<el-form-item label="分类名称" prop="categoryName">
<el-input v-model="goodsQueryForm.categoryName" placeholder="请输入分类名称" clearable @keyup.enter.native="onQuery"></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="goodsQueryForm.status" placeholder="请选择商品状态" clearable >
<el-option
v-for="dict in dict.type.zhzt"
:key="dict.value"
:label="dict.label"
:value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="onQuery">搜索</el-button>
<el-button @click="resetForm" icon="el-icon-refresh" >重置</el-button>
</el-form-item>
</el-form>
</el-card>
<div class="app-container">
<el-card style="margin-top: 20px;">
<!-- 查询类别 -->
<el-form :inline="true" :model="queryParams">
<el-form-item label="分类名称" prop="categoryName">
<el-input v-model="queryParams.categoryName" placeholder="请输入分类名称" clearable @keyup.enter.native="handleQuery"></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="queryParams.status" placeholder="请选择商品状态" clearable >
<el-option
v-for="dict in dict.type.zhzt"
:key="dict.value"
:label="dict.label"
:value="dict.value"/>
</el-select>
</el-form-item>
<!-- <el-form-item>-->
<!-- <el-button type="primary" icon="el-icon-search" @click="onQuery">搜索</el-button>-->
<!-- <el-button @click="resetForm" icon="el-icon-refresh" >重置</el-button>-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card style="margin-top: 15px;">
<div class="tTop">分类列表
<el-button type="primary" @click="insertGoods" >添加分类</el-button>
</div>
<!-- default-expand-all二级菜单默认展开 -->
<!-- 分类列表 -->
<el-table
:data="tableData"
style="width: 100%;margin-bottom: 20px;"
row-key="id"
border
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<!-- <el-table-column
prop="id"
label="序号"
width="180">
</el-table-column> -->
<el-table-column prop="categoryName" label="分类名称" width="180" />
<el-table-column prop="sorted" label="排序"/>
<el-table-column prop="status" label="状态" width="180">
<template slot-scope="scope">
<dict-tag :options="dict.type.zhzt" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="180" />
<el-table-column prop="createBy" label="创建人" width="180" />
<el-table-column label="操作" width="180">
<template slot-scope="scope">
<el-button type="primary" @click="editeCategory(scope.row)" size="mini">编辑</el-button>
<el-button type="danger" @click="delCategory(scope.row.id)" size="mini">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-card style="margin-top: 15px;">
<el-button
type="primary"
icon="el-icon-plus"
@click="handleAdd"
v-hasPermi="['member:add']"
>添加分类</el-button>
<!-- <div class="tTop">分类列表-->
<!-- <el-button type="primary" @click="insertGoods" >添加分类</el-button>-->
<!-- </div>-->
<!-- default-expand-all二级菜单默认展开 -->
<!-- 分类列表 -->
<el-table ref="tables" v-loading="loading" :data="list" row-key="id"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
@selection-change="handleSelectionChange" :default-sort="defaultSort"
@sort-change="handleSortChange">
<el-table-column label="ID" prop="id" align="center" width="60"/>
<el-table-column label="分类名称" align="center" prop="categoryName"/>
<el-table-column label="商品编号" align="center" prop="code"/>
<el-table-column label="排序" align="center" prop="sorted" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.zhzt" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="创建人" align="center" prop="createBy">
<template slot-scope="scope">
<span>{{ getName(scope.row.createBy) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="120" fixed='right'>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
v-hasPermi="['member:add']"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
v-hasPermi="['member:add']"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 添加类别对话框 -->
<el-dialog title="添加分类" :visible.sync="dialogFormVisible" width="500px">
<el-form :model="form" :inline="true" :rules="rules" ref="form" >
<el-form-item label="上级分类" >
<el-select v-model="form.pid" placeholder="请选择上级分类">
<el-option
v-for="item in goodsOptions"
:label="item.categoryName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="分类名称" prop="categoryName" style="margin-left: -8px;">
<el-input v-model="form.categoryName" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="排序规则">
<el-input-number v-model="form.sorted" @change="handleChange" :min="0" :max="10" style="width: 300px;"></el-input-number>
</el-form-item>
<el-form-item >
<el-radio-group v-model="form.status">
<el-radio v-for="dict in dict.type.zhzt" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelSubmit"> </el-button>
<el-button type="primary" @click="dooSubmit"> </el-button>
</div>
</el-dialog>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 修改类别对话框 -->
<el-dialog title="修改分类" :visible.sync="editDialogFormVisible" width="500px">
<el-form :model="editForm" :inline="true" :rules="rules" ref="editForm" >
<el-form-item label="上级分类" v-if="isShow">
<el-select v-model="editForm.pid" placeholder="请选择上级分类">
<el-option
v-for="item in goodsOptions"
:label="item.categoryName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="分类名称" prop="categoryName" style="margin-left: -8px;">
<el-input v-model="editForm.categoryName" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="排序规则">
<el-input-number v-model="editForm.sorted" @change="handleChange" :min="0" :max="10" style="width: 300px;"></el-input-number>
</el-form-item>
<el-form-item >
<el-radio-group v-model="editForm.status">
<el-radio v-for="dict in dict.type.zhzt" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelEdite"> </el-button>
<el-button type="primary" @click="saveEdite"> </el-button>
</div>
</el-dialog>
<!-- <el-table-->
<!-- :data="list"-->
<!-- style="width: 100%;margin-bottom: 20px;"-->
<!-- row-key="id"-->
<!-- :tree-props="{children: 'children', hasChildren: 'hasChildren'}">-->
<!-- &lt;!&ndash; <el-table-column-->
<!-- prop="id"-->
<!-- label="序号"-->
<!-- width="180">-->
<!-- </el-table-column> &ndash;&gt;-->
<!-- <el-table-column label="ID" prop="id" align="center" width="60"/>-->
<!-- <el-table-column prop="categoryName" align="center" label="分类名称" width="180" />-->
<!-- <el-table-column prop="sorted" align="center" label="排序"/>-->
<!-- <el-table-column prop="status" align="center" label="状态" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <dict-tag :options="dict.type.zhzt" :value="scope.row.status"/>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column prop="createTime" align="center" label="创建时间" width="180" />-->
<!-- <el-table-column prop="createBy" align="center" label="创建人" width="180" />-->
<!-- <el-table-column label="操作" align="center" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button type="primary" @click="editeCategory(scope.row)" size="mini">编辑</el-button>-->
<!-- <el-button type="danger" @click="delCategory(scope.row.id)" size="mini">删除</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- </el-table>-->
<div class="pageSty">
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"/>
</div>
</el-card>
<!-- 添加类别对话框 -->
<el-dialog :title="title" :visible.sync="open" class="roll-dialog"
:close-on-click-modal="false" append-to-body width="500px">
<el-form :model="form" :inline="true" :rules="rules" ref="form" >
<el-form-item label="上级分类" >
<el-select v-model="form.pid" placeholder="请选择上级分类">
<el-option
v-for="item in goodsOptions"
:label="item.categoryName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="分类名称" prop="categoryName" style="margin-left: -8px;">
<el-input v-model="form.categoryName" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="排序规则">
<el-input-number v-model="form.sorted" @change="handleChange" :min="0" :max="10" style="width: 300px;"></el-input-number>
</el-form-item>
<el-form-item >
<el-radio-group v-model="form.status">
<el-radio v-for="dict in dict.type.zhzt" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</el-card>
</div>
<!-- 修改类别对话框 -->
<!-- <el-dialog title="修改分类" :visible.sync="editDialogFormVisible" width="500px">-->
<!-- <el-form :model="editForm" :inline="true" :rules="rules" ref="editForm" >-->
<!-- <el-form-item label="上级分类" v-if="isShow">-->
<!-- <el-select v-model="editForm.pid" placeholder="请选择上级分类">-->
<!-- <el-option-->
<!-- v-for="item in goodsOptions"-->
<!-- :label="item.categoryName"-->
<!-- :value="item.id">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="分类名称" prop="categoryName" style="margin-left: -8px;">-->
<!-- <el-input v-model="editForm.categoryName" style="width: 300px;"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="排序规则">-->
<!-- <el-input-number v-model="editForm.sorted" @change="handleChange" :min="0" :max="10" style="width: 300px;"></el-input-number>-->
<!-- </el-form-item>-->
<!-- <el-form-item >-->
<!-- <el-radio-group v-model="editForm.status">-->
<!-- <el-radio v-for="dict in dict.type.zhzt" :label="dict.value">{{ dict.label }}</el-radio>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- <div slot="footer" class="dialog-footer">-->
<!-- <el-button @click="cancelEdite"> </el-button>-->
<!-- <el-button type="primary" @click="saveEdite"> </el-button>-->
<!-- </div>-->
<!-- </el-dialog>-->
</div>
</template>
<script>
import { selectTree, list,insertCvsGoods,deleteBYId} from "@/api/convenienceStore/goods.js";
import { runInThisContext } from "vm";
import {
selectTree,
list,
insertCvsGoods,
deleteBYId,
selectParentById,
updateCevGood
} from "@/api/convenienceStore/goods.js";
import {delUser, getUser} from "@/api/staff/user/user";
import {getAccount, getAccountList} from "@/api/system/account";
import {addFixingLevel, updateFixingLevel} from "@/api/staff/user/fixinglevel";
export default {
dicts:['zhzt'],
data() {
return {
//
isShow:false,
//
editForm:{
pid:'',
categoryName:'',
status:'qy',
sorted:0,
},
//
goodsOptions:[],
//
goodsQueryForm: {
categoryName: '',
status: '',
pid:"",
pageNum:'1',
pageSize:'5'
},
//
dialogFormVisible:false,
//
editDialogFormVisible:false,
//
form:{
pid:'',
categoryName:'',
status:'qy',
sorted:0,
},
tableData: [{
id: '',
pid:'',
categoryName: '',
sorted: '',
status:'',
createdTime:'',
children: []
}],
//
total: 0,
//
queryParams: {
pageNum: 1,
pageSize: 5,
categoryName:'',
status: undefined,
},
aa:[],
//
rules: {
categoryName: [
{ required: true, message: '请输入分类名称', trigger: 'blur' },
],
},
dicts:['zhzt'],
data() {
return {
creatName:'',
//
title: "",
//
open: false,
//
loading: true,
//
total: 0,
//
list: [],
//
isShow:false,
//
defaultSort: {prop: 'updateTime', order: 'descending'},
//
editForm:{
pid:'',
categoryName:'',
status:'qy',
sorted:0,
},
//
goodsOptions:[],
//
goodsQueryForm: {
categoryName: '',
status: '',
pid:"",
pageNum:'1',
pageSize:'5'
},
//
dialogFormVisible:false,
//
editDialogFormVisible:false,
//
form:{
pid:'',
categoryName:'',
status:'qy',
sorted:0,
},
tableData: [{
id: '',
pid:'',
categoryName: '',
sorted: '',
status:'',
createdTime:'',
children: []
}],
//
queryParams: {
pageNum: 1,
pageSize: 5,
categoryName:'',
status: '',
},
aa:[],
//
rules: {
categoryName: [
{ required: true, message: '请输入分类名称', trigger: 'blur' },
],
},
};
};
},
created(){
this.getList();
this.getFirstMenu();
},
methods: {
//
reset() {
this.form = {
pid:'',
categoryName:'',
status:'qy',
sorted:0,
}
},
created(){
//
getName(id){
getAccount(id).then(response=>{
this.creatName = response.data.account.realName
})
return this.creatName;
},
//
handleAdd() {
this.open = true;
this.title = "新增分类";
},
//
editeCategory(val){
// this.editForm .categoryName = ''
// this.editForm.pid = ''
// this.editForm.status = 'qy'
// this.editForm.sorted = 0
if(val.pid !== 0){
this.isShow = true
}
this.editDialogFormVisible = true
// selectParentById(val).then(response=>{
// this.editForm.categoryName = response.data
// })
},
//
cancelEdite(){
this.editDialogFormVisible = false
},
//
saveEdite(){
this.editDialogFormVisible = false
},
//
delCategory(id){
deleteBYId(id).then(res=>{
// console.log(res)
})
},
//
insertGoods(){
this.resetForm('form')
this.form.categoryName = ''
this.form.pid = ''
this.form.status = 'qy'
this.form.sorted = 0
this.dialogFormVisible = true
this.getFirstMenu();
},
//
getFirstMenu(){
list(this.form).then(response=>{
this.goodsOptions = response.data
})
},
//
onQuery(){
selectTree(this.goodsQueryForm).then(response=>{
if (response.code === 200) {
if(response.data == null){
this.tableData = []
this.total = 0;
this.$message('查询成功');
}else{
this.tableData = response.data.records
this.total = response.data.total;
this.$message('查询成功');
}
} else {
this.$message('查询失败,请联系管理员');
}
})
},
//
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
handleChange(){
},
//
dooSubmit(){
this.$refs['form'].validate(valid => {
if (valid) {
//
if(this.form.pid == '' || this.form.pid == undefined ){
this.form.pid = 0
}
//
insertCvsGoods(this.form).then(response=>{
if (response.code === 200) {
this.rest()
this.$message('新增成功');
}else{
this.$message('新增失败 请联系管理员');
}
})
}
})
},
rest(){
this.dialogFormVisible = false
this.resetForm();
this.goodsOptions = []
},
//
cancelSubmit(){
this.$refs.form.resetFields();//
this.form.categoryName = ''
this.form.pid = ''
this.form.status = ''
this.form.sorted = 0
this.dialogFormVisible = false
},
//
getList(){
this.loading = true;
selectTree(this.queryParams).then(response => {
this.list = response.data.records;
this.total = response.data.total;
this.loading = false;
});
},
//
resetForm(){
this.goodsQueryForm.categoryName = ''
this.goodsQueryForm.status = ''
this.getList()
},
methods: {
//
editeCategory(val){
// this.editForm .categoryName = ''
// this.editForm.pid = ''
// this.editForm.status = 'qy'
// this.editForm.sorted = 0
if(val.pid !== 0){
this.isShow = true
}
this.editDialogFormVisible = true
// selectParentById(val).then(response=>{
// this.editForm.categoryName = response.data
// })
},
//
cancelEdite(){
this.editDialogFormVisible = false
},
//
saveEdite(){
this.editDialogFormVisible = false
},
//
delCategory(id){
deleteBYId(id).then(res=>{
console.log(res)
})
},
//
insertGoods(){
this.resetForm('form')
this.form.categoryName = ''
this.form.pid = ''
this.form.status = 'qy'
this.form.sorted = 0
this.dialogFormVisible = true
this.getFirstMenu();
},
//
getFirstMenu(){
list(this.form).then(response=>{
this.goodsOptions = response.data
})
},
//
onQuery(){
selectTree(this.goodsQueryForm).then(response=>{
if (response.code === 200) {
if(response.data == null){
this.tableData = []
console.log(response.data);
this.total = 0;
this.$message('查询成功');
}else{
this.tableData = response.data.records
this.total = response.data.total;
this.$message('查询成功');
}
} else {
this.$message('查询失败,请联系管理员');
}
})
},
handleChange(){
},
//
dooSubmit(){
this.$refs['form'].validate(valid => {
if (valid) {
//
if(this.form.pid == '' || this.form.pid == undefined ){
this.form.pid = 0
}
//
insertCvsGoods(this.form).then(response=>{
if (response.code === 200) {
this.rest()
this.$message('新增成功');
}else{
this.$message('新增失败 请联系管理员');
}
})
}
})
},
rest(){
this.dialogFormVisible = false
this.resetForm();
this.goodsOptions = []
},
//
cancelSubmit(){
this.$refs.form.resetFields();//
this.form.categoryName = ''
this.form.pid = ''
this.form.status = ''
this.form.sorted = 0
this.dialogFormVisible = false
},
//
getList(){
selectTree(this.queryParams).then(response => {
if(response.code == 200){
if(response.data == null){
this.tableData = [];
this.total = 0;
}else{
this.tableData = response.data.records;
this.total = response.data.total;
}
}else{
this.$message('查询失败 请联系管理员')
}
//
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id) {
updateCevGood(this.form).then(response => {
this.$modal.msgSuccess("分类更新成功");
this.open = false;
this.getList();
});
},
//
resetForm(){
this.goodsQueryForm.categoryName = ''
this.goodsQueryForm.status = ''
this.getList()
},
} else {
insertCvsGoods(this.form).then(response => {
this.$modal.msgSuccess("分类添加成功");
this.open = false;
this.getList();
});
}
}
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
selectParentById(id).then(response => {
console.log(response)
this.form = response.data;
this.open = true;
this.title = "编辑分类";
});
},
//
handleDelete(row) {
const name = row.categoryName
this.$modal.confirm('确定删除"' + name + '"的分类信息?').then(function() {
// return deleteMember(row.id);
return deleteBYId(row.id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.multiple = !selection.length
},
//
handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
},
};
</script>
<style lang="scss" scoped>
.tTop{
.tTop{
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.pageSty{
}
.pageSty{
display: flex;
justify-content: center;
margin-left: 250px;
}
}
.app-container{
width: 100%;
height: 100%;
background: #f6f8f9;
}
</style>

View File

@ -0,0 +1,289 @@
<template>
<div class="app-container">
<el-card >
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="供应商" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入供应商名称"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系人" prop="contacts">
<el-input
v-model="queryParams.contacts"
placeholder="请输入联系人"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系电话" prop="mobile">
<el-input
v-model="queryParams.mobile"
placeholder="请输入联系电话"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card style="margin-top: 20px">
<el-button
type="primary"
icon="el-icon-plus"
@click="handleAdd"
v-hasPermi="['member:add']"
>新增会员</el-button>
<el-table ref="tables" v-loading="loading" :data="list"
@selection-change="handleSelectionChange" :default-sort="defaultSort"
@sort-change="handleSortChange">
<el-table-column label="ID" prop="id" align="center" width="60"/>
<el-table-column label="供应商名称" prop="name" align="center"/>
<el-table-column label="联系人" prop="contacts" align="center">
<template slot-scope="scope">
<span>{{ scope.row.contacts ? scope.row.contacts : '-' }}</span>
</template>
</el-table-column>
<el-table-column label="联系电话" align="center" prop="mobile">
<template slot-scope="scope">
<span>{{ scope.row.mobile ? scope.row.mobile : '-' }}</span>
</template>
</el-table-column>
<el-table-column label="联系地址" align="center" prop="address">
<template slot-scope="scope">
<span>{{ scope.row.address ? scope.row.address : '-' }}</span>
</template>
</el-table-column>
<el-table-column label="备注信息" align="center" prop="remark">
<template slot-scope="scope">
<span>{{ scope.row.remark ? scope.row.remark : '-' }}</span>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" width="160" prop="createTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="120" fixed='right'>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
v-hasPermi="['member:add']"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
v-hasPermi="['member:add']"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-card>
<!-- 添加或修改对话框 -->
<el-dialog :close-on-click-modal="false" :title="title" width="600px" style="margin-top: 5%" :visible.sync="open" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="90px">
<el-row>
<el-col :span="24">
<el-form-item label="供应商" prop="name" style="width: 420px">
<el-input v-model="form.name" placeholder="请输入供应商名称" maxlength="30" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="联系人" prop="contacts">
<el-input v-model="form.contacts" placeholder="供应商联系人" maxlength="30"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系电话" prop="mobile">
<el-input v-model="form.mobile" placeholder="供应商联系电话" maxlength="30"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="联系地址" prop="address">
<el-input v-model="form.address" placeholder="供应商联系地址" maxlength="30" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {addSupplier, delSupplier, getSupplier, listSupplier, updateSupplier} from "@/api/convenienceStore/supplier";
export default {
// dicts: ['zhzt'],
data(){
return {
//
loading: true,
//
title: "",
//
total: 0,
//
list: [],
//
open: false,
//
defaultSort: {prop: 'updateTime', order: 'descending'},
//
queryParams: {
page: 1,
pageSize: 10,
id: '',
name: '',
contacts: '',
mobile: '',
},
//
form: {},
//
showSearch: true,
//
rules: {
name: [
{ required: true, message: "供应商名称不能为空", trigger: "blur" },
],
}
}
},
created() {
this.getList();
},
methods:{
//
getList() {
this.loading = true;
listSupplier(this.queryParams).then(response => {
this.list = response.data.records;
this.total = response.data.total;
this.loading = false;
});
},
//
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
//
resetQuery() {
this.resetForm("queryForm");
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
this.handleQuery();
},
//
reset() {
this.resetForm("form");
this.form= {}
},
//
handleAdd() {
this.reset();
this.open = true;
this.title = "新增供应商";
},
//
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getSupplier(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "编辑供应商";
});
},
//
handleDelete(row) {
const name = row.name
this.$modal.confirm('确定删除"' + name + '"的供应商信息?').then(function() {
return delSupplier(row.id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
//
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id) {
updateSupplier(this.form).then(response => {
this.$modal.msgSuccess("供应商更新成功");
this.open = false;
this.getList();
});
} else {
addSupplier(this.form).then(response => {
this.$modal.msgSuccess("供应商新增成功");
this.open = false;
this.getList();
});
}
}
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.multiple = !selection.length
},
//
handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
}
}
</script>
<style lang="scss" scoped>
.app-container{
width: 100%;
height: 100vh;
background: #f6f8f9;
}
</style>

View File

@ -109,7 +109,7 @@
icon="el-icon-document-copy"
@click="handleAddMembers"
v-hasPermi="['member:add']"
>新增用户认证</el-button>
>批量用户认证</el-button>
<el-table ref="tables" v-loading="loading" :data="listMember"
@selection-change="handleSelectionChange" :default-sort="defaultSort"
@sort-change="handleSortChange">
@ -183,7 +183,11 @@
@selection-change="handleSelectionChange"
:default-sort="defaultSort"
@sort-change="handleSortChange">
<el-table-column label="认证类型名称" prop="name" align="center"/>
<el-table-column label="认证类型名称" align="center" prop="name">
<template slot-scope="scope">
{{ scope.row.name }}
</template>
</el-table-column>
<el-table-column label="优惠类型" align="center" prop="discountType">
<template slot-scope="scope">
<dict-tag :options="dict.type.yhlx" :value="scope.row.discountType"/>
@ -1222,6 +1226,7 @@ export default {
this.$modal.msgSuccess("用户认证信息更新成功");
this.openMember = false;
this.isEdit = false;
this.reset1();
this.getListMember();
});
} else {
@ -1238,6 +1243,7 @@ export default {
addCertifiedMember(this.form1).then(response => {
this.$modal.msgSuccess("新增用户认证信息成功");
this.openMember = false;
this.reset1();
this.getListMember();
});
}
@ -1265,7 +1271,7 @@ export default {
//
handleDelete(row) {
const name = row.name
this.$modal.confirm('确定删除"' + name + '"的会员信息?').then(function() {
this.$modal.confirm('确定删除"' + name + '"的固定等级信息?').then(function() {
// return deleteMember(row.id);
return delFixingLevel(row.id);
}).then(() => {
@ -1276,7 +1282,7 @@ export default {
//
handleDeleteMember(row) {
const name = row.name
this.$modal.confirm('确定删除"' + name + '"的会员信息?').then(function() {
this.$modal.confirm('确定删除"' + name + '"的认证会员信息?').then(function() {
// return deleteMember(row.id);
return delCertifiedMember(row.id);
}).then(() => {

View File

@ -150,7 +150,7 @@
</el-card>
<!-- 添加或修改对话框 -->
<el-dialog :title="title" :visible.sync="open" width="60%" append-to-body>
<el-dialog :title="title" :close-on-click-modal="false" :visible.sync="open" width="60%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<!-- <el-row>-->
<!-- <el-col :span="24">-->
@ -216,7 +216,7 @@
</el-col>
</el-row>
<el-row>
<el-col :span="9" style="display: flex;margin-bottom: 20px">
<el-col :span="8" style="display: flex;margin-bottom: 20px">
<template>
<span style="margin-right: 10px">核销权限</span>
<el-checkbox-group v-model="writeOff" ref="" @change="getCheckbox">
@ -229,8 +229,8 @@
</el-checkbox-group>
</template>
</el-col>
<el-col :span="15" style="display: flex">
<span style="margin-right: 10px">审核权限</span>
<el-col :span="16" style="display: flex">
<span style="margin-right: 10px;width: 70px">审核权限</span>
<el-checkbox-group v-model="auditPrem" @change="getCheckbox">
<el-checkbox
v-for="dict in dict.type.shqx"
@ -848,7 +848,7 @@ export default {
//
handleDelete(row) {
const name = row.realName || this.id;
this.$modal.confirm('是否确认删除"' + name + '"的数据项').then(function() {
this.$modal.confirm('是否确认删除"' + name + '"的员工信息').then(function() {
return delStaff(row.id);
}).then(() => {
this.getList();

View File

@ -8,13 +8,12 @@ import com.fuint.business.convenienceSore.vo.CvsGoodsVo;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author :admin
* @date : 2023/10/16
* 便利店商品管理
* 便利店商品分类管理 controller层
*/
@RestController
@RequestMapping("/business/cvsGoods")
@ -23,7 +22,7 @@ public class CvsGoodsController extends BaseController {
@Autowired
private CvsGoodsService cvsGoodsService;
/**新增商品类别*/
/**新增商品分类类别*/
@PostMapping("/addCvsGoods")
public ResponseObject insertCvsGoods( @RequestBody CvsGoods goods){
int i = cvsGoodsService.insertCvsGoods(goods);
@ -35,9 +34,11 @@ public class CvsGoodsController extends BaseController {
}
/**分页查询*/
@PostMapping("/selectTree")
private ResponseObject selectTree(@RequestBody CvsGoods goods){
Page page =new Page<>(goods.getPageNum(),goods.getPageSize());
@GetMapping("/selectTree")
private ResponseObject selectTree(CvsGoods goods,
@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){
Page page =new Page(pageNo,pageSize);
IPage<CvsGoodsVo> list = cvsGoodsService.selectTree(page,goods);
return getSuccessResult(list);
}
@ -57,8 +58,8 @@ public class CvsGoodsController extends BaseController {
CvsGoods cvsGoods = cvsGoodsService.selectParentById(id);
return getSuccessResult(cvsGoods);
}
//删除
@DeleteMapping("detele/{id}")
//删除商品分类信息
@DeleteMapping("/{id}")
public ResponseObject selectDeleteId(@PathVariable Integer id)
{
@ -68,4 +69,14 @@ public class CvsGoodsController extends BaseController {
}
/**
* 修改商品分类信息
* @param goods
* @return
*/
@PutMapping
public ResponseObject edit(@Validated @RequestBody CvsGoods goods){
int row = cvsGoodsService.updateCvsGood(goods);
return getSuccessResult(row);
}
}

View File

@ -0,0 +1,78 @@
package com.fuint.business.convenienceSore.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.convenienceSore.entity.LJGoods;
import com.fuint.business.convenienceSore.service.LJGoodsService;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 商品信息 controller层
*/
@RestController
@RequestMapping("/business/convenience/goods")
public class LJGoodsController extends BaseController {
@Autowired
private LJGoodsService goodsService;
/**
* 根据条件查询商品信息
* @param goods
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping("/list")
public ResponseObject list(LJGoods goods,
@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){
Page page =new Page(pageNo,pageSize);
IPage<LJGoods> list = goodsService.selectLJGoodsList(page,goods);
return getSuccessResult(list);
}
/**
* 根据id查询商品信息
* @param id
* @return
*/
@GetMapping("/{id}")
public ResponseObject staffInfo(@PathVariable Integer id){
LJGoods goods = goodsService.selectLJGoodsById(id);
return getSuccessResult(goods);
}
/**
* 删除商品信息
* @return
*/
@DeleteMapping("/{id}")
public ResponseObject remove(@PathVariable Integer id){
goodsService.deleteLJGoodsById(id);
return getSuccessResult("操作成功");
}
/**
* 添加商品信息
* @param goods
* @return
*/
@PostMapping
public ResponseObject add(@Validated @RequestBody LJGoods goods){
return getSuccessResult(goodsService.insertLJGoods(goods));
}
/**
* 修改商品信息
* @param goods
* @return
*/
@PutMapping
public ResponseObject edit(@Validated @RequestBody LJGoods goods){
return getSuccessResult(goodsService.updateLJGoods(goods));
}
}

View File

@ -0,0 +1,78 @@
package com.fuint.business.convenienceSore.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.convenienceSore.entity.Supplier;
import com.fuint.business.convenienceSore.service.SupplierService;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 供应商 controller层
*/
@RestController
@RequestMapping("/business/convenience/supplier")
public class SupplierController extends BaseController {
@Autowired
private SupplierService supplierService;
/**
* 根据条件查询供应商信息
* @param supplier
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping("/list")
public ResponseObject list(Supplier supplier,
@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){
Page page =new Page(pageNo,pageSize);
IPage<Supplier> list = supplierService.selectSupplierList(page,supplier);
return getSuccessResult(list);
}
/**
* 根据id查询供应商信息
* @param id
* @return
*/
@GetMapping("/{id}")
public ResponseObject staffInfo(@PathVariable Integer id){
Supplier supplier = supplierService.selectSupplierById(id);
return getSuccessResult(supplier);
}
/**
* 删除供应商信息
* @return
*/
@DeleteMapping("/{id}")
public ResponseObject remove(@PathVariable Integer id){
supplierService.deleteSupplierById(id);
return getSuccessResult("操作成功");
}
/**
* 添加供应商信息
* @param supplier
* @return
*/
@PostMapping
public ResponseObject add(@Validated @RequestBody Supplier supplier){
return getSuccessResult(supplierService.insertSupplier(supplier));
}
/**
* 修改供应商信息
* @param supplier
* @return
*/
@PutMapping
public ResponseObject edit(@Validated @RequestBody Supplier supplier){
return getSuccessResult(supplierService.updateSupplier(supplier));
}
}

View File

@ -9,6 +9,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author :admin
* @date : 2023/10/16
@ -17,7 +19,8 @@ import lombok.Data;
@Data
@TableName("cvs_goods")
@ApiModel(value = "CvsGoods对象", description = "便利店表")
public class CvsGoods extends BaseEntity {
public class CvsGoods extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
//主键
@ApiModelProperty("自增ID")

View File

@ -0,0 +1,115 @@
package com.fuint.business.convenienceSore.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fuint.framework.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;
/**
* 商品表(Goods)实体类
*/
@Data
@TableName("mt_goods")
@ApiModel(value = "LJGoods对象", description = "商品表")
public class LJGoods extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 自增ID
*/
@ApiModelProperty("自增ID")
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
/**
* 所属店铺ID
*/
@ApiModelProperty("所属店铺ID")
private Integer storeId;
/**
* 商品名称
*/
@ApiModelProperty("商品名称")
private String name;
/**
* 商品分类ID
*/
@ApiModelProperty("商品分类ID")
private Integer cvsGoodId;
/**
* 商品编码条码
*/
@ApiModelProperty("商品编码(条码)")
private String goodsNo;
/**
* 商品拼音码
*/
@ApiModelProperty("商品拼音码")
private String pinyinCode;
/**
* 货架号
*/
@ApiModelProperty("货架号")
private Integer shelfNumber;
/**
* 进货价
*/
@ApiModelProperty("进货价")
private Double buyingPrice;
/**
* 零售价
*/
@ApiModelProperty("零售价")
private Double retailPrice;
/**
* 会员价
*/
@ApiModelProperty("会员价")
private Double memberPrice;
/**
* 库存
*/
@ApiModelProperty("库存")
private Integer stock;
/**
* 单位
*/
@ApiModelProperty("单位")
private String unit;
/**
* 供应商
*/
@ApiModelProperty("供应商id")
private Integer supplierId;
/**
* 可否使用积分抵扣
*/
@ApiModelProperty("可否使用积分抵扣")
private String canUsePoint;
/**
* 排序
*/
@ApiModelProperty("排序")
private Integer sort;
/**
* 商品描述
*/
@ApiModelProperty("商品描述")
private String description;
/**
* 状态启用禁用
*/
@ApiModelProperty("状态:启用、禁用")
private String status;
/**
* 是否在回收站0不在回收站1在回收站
*/
@ApiModelProperty("是否在回收站0不在回收站1在回收站")
private String isRecovery;
}

View File

@ -0,0 +1,59 @@
package com.fuint.business.convenienceSore.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fuint.framework.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;
/**
* 供应商表(Supplier)实体类
*/
@Data
@TableName("supplier")
@ApiModel(value = "Supplier对象", description = "供应商表")
public class Supplier extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty("自增ID")
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
/**
* 供应商名称
*/
@ApiModelProperty("供应商名称")
private String name;
/**
* 联系人
*/
@ApiModelProperty("联系人")
private String contacts;
/**
* 联系电话
*/
@ApiModelProperty("联系电话")
private String mobile;
/**
* 联系地址
*/
@ApiModelProperty("联系地址")
private String address;
/**
* 备注信息
*/
@ApiModelProperty("备注信息")
private String remark;
/**
* 商铺id
*/
@ApiModelProperty("商铺id")
private Integer storeId;
}

View File

@ -19,6 +19,9 @@ public interface CvsGoodsMapper extends BaseMapper<CvsGoods> {
//查找一级菜单
IPage<CvsGoodsVo> selectCvsGoodsList(Page page , @Param("goods") CvsGoods goods);
//查找一级菜单
IPage<CvsGoods> queryCvsGoodsList(Page page , @Param("goods") CvsGoods goods);
//查找二级菜单
List<CvsGoodsVo> selectCvsGoodsTreeList(CvsGoods goods);

View File

@ -0,0 +1,18 @@
package com.fuint.business.convenienceSore.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.convenienceSore.entity.LJGoods;
import com.fuint.business.userManager.entity.LJUser;
import org.apache.ibatis.annotations.Param;
public interface LJGoodsMapper extends BaseMapper<LJGoods> {
/**
* 根据条件分页查询会员信息
* @param page
* @param goods
* @return
*/
public IPage<LJGoods> selectLJGoodsList(Page page, @Param("goods") LJGoods goods);
}

View File

@ -0,0 +1,18 @@
package com.fuint.business.convenienceSore.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.convenienceSore.entity.LJGoods;
import com.fuint.business.convenienceSore.entity.Supplier;
import org.apache.ibatis.annotations.Param;
public interface SupplierMapper extends BaseMapper<Supplier> {
/**
* 根据条件分页查询会员信息
* @param page
* @param supplier
* @return
*/
public IPage<Supplier> selectSupplierList(Page page, @Param("supplier") Supplier supplier);
}

View File

@ -6,6 +6,10 @@
select id,pid,category_name,code,sorted, status, create_time, create_by, update_time, update_by from cvs_goods
</sql>
<sql id="selectCvsGood">
select * from cvs_goods
</sql>
<!--判断新增是否重复 -->
<select id="selectGoodsList" parameterType="com.fuint.business.convenienceSore.entity.CvsGoods" resultType="com.fuint.business.convenienceSore.entity.CvsGoods" >
<include refid="selectCvsGoods"></include>
@ -30,7 +34,7 @@
pTable.id,
pTable.pid,
pTable.category_name,
pTable.`CODE`,
pTable.`code`,
pTable.sorted,
pTable.`STATUS`,
pTable.create_time,
@ -42,6 +46,7 @@
left join
(SELECT * from cvs_goods WHERE pid != 0) cTable on pTable.id = cTable.pid
<where>
pTable.store_id = #{goods.storeId}
<if test="goods.status != null and goods.status != ''">
and pTable.status = #{goods.status}
</if>
@ -52,6 +57,18 @@
</where>
group by pTable.id
order by sorted
<!-- <include refid="selectCvsGood"></include>-->
<!-- <where>-->
<!-- store_id = #{goods.storeId}-->
<!-- <if test="goods.categoryName != null and goods.categoryName != ''">-->
<!-- and category_name like concat('%', #{goods.categoryName}, '%')-->
<!-- </if>-->
<!-- <if test="goods.status != null and goods.status != ''">-->
<!-- and status = #{goods.status}-->
<!-- </if>-->
<!-- </where>-->
<!-- order by sorted-->
</select>
<!--查找二级分类-->
@ -82,6 +99,22 @@
</where>
order by sorted
</select>
<select id="queryCvsGoodsList" resultType="com.fuint.business.convenienceSore.entity.CvsGoods">
<include refid="selectCvsGood"></include>
<where>
store_id = #{goods.storeId} and pid = 0
<if test="goods.categoryName != null and goods.categoryName != ''">
and category_name like concat('%', #{goods.categoryName}, '%')
</if>
<if test="goods.status != null and goods.status != ''">
and status = #{goods.status}
</if>
</where>
order by sorted
</select>
<!-- 根据id删除分类信息-->
<delete id="deleteByIdVo">
DELETE FROM cvs_goods WHERE id=#{id}
</delete>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.convenienceSore.mapper.LJGoodsMapper">
<sql id="selectLJGoods">
select * from mt_goods
</sql>
<select id="selectLJGoodsList" resultType="com.fuint.business.convenienceSore.entity.LJGoods">
<include refid="selectLJGoods"></include>
<where>
store_id = #{goods.storeId} and is_recovery = #{goods.isRecovery}
<if test="goods.cvsGoodId != null and goods.cvsGoodId != ''">
and cvs_good_id like concat('%', #{goods.cvsGoodId}, '%')
</if>
<if test="goods.supplierId != null and goods.supplierId != ''">
and supplier_id like concat('%', #{goods.supplierId}, '%')
</if>
<if test="goods.name != null and goods.name != ''">
and name like concat('%', #{goods.name}, '%')
</if>
<if test="goods.pinyinCode != null and goods.pinyinCode != ''">
and pinyin_code like concat('%', #{goods.pinyinCode}, '%')
</if>
<if test="goods.goodsNo != null and goods.goodsNo != ''">
and goods_no like concat('%', #{goods.goodsNo}, '%')
</if>
<if test="goods.shelfNumber != null and goods.shelfNumber != ''">
and shelf_number like concat('%', #{goods.shelfNumber}, '%')
</if>
<if test="goods.status != null and goods.status != ''">
and status = #{goods.status}
</if>
</where>
</select>
</mapper>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.convenienceSore.mapper.SupplierMapper">
<sql id="selectSupplier">
select * from supplier
</sql>
<select id="selectSupplierList" resultType="com.fuint.business.convenienceSore.entity.Supplier">
<include refid="selectSupplier"></include>
<where>
store_id = #{supplier.storeId}
<if test="supplier.name != null and supplier.name != ''">
and name like concat('%', #{supplier.name}, '%')
</if>
<if test="supplier.contacts != null and supplier.contacts != ''">
and contacts like concat('%', #{supplier.contacts}, '%')
</if>
<if test="supplier.mobile != null and supplier.mobile != ''">
and mobile like concat('%', #{supplier.mobile}, '%')
</if>
</where>
</select>
</mapper>

View File

@ -9,18 +9,18 @@ import io.swagger.models.auth.In;
import java.util.List;
/**
* 便利店商品信息 业务层
* 便利店商品分类信息 业务层
*/
public interface CvsGoodsService {
/**
* 添加商品信息
* 添加商品分类信息
* @param cvsGoods
* @return
*/
int insertCvsGoods(CvsGoods cvsGoods);
/**
* 根据条件分页查询商品信息
* 根据条件分页查询商品分类信息
* @param page
* @param goods
* @return
@ -35,15 +35,21 @@ public interface CvsGoodsService {
List<CvsGoods> selectCvsGoodsList(CvsGoods goods);
/**
* 根据id查询商品信息
* 根据id查询商品分类信息
* @param id
* @return
*/
CvsGoods selectParentById(Integer id);
/**
* 根据id删除商品信息
* 根据id删除商品分类信息
* @param id
*/
void deleteByIdVo(Integer id);
/**
* 修改商品分类信息
* @param goods
*/
int updateCvsGood(CvsGoods goods);
}

View File

@ -0,0 +1,44 @@
package com.fuint.business.convenienceSore.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.convenienceSore.entity.LJGoods;
/**
* 商品信息 业务层
*/
public interface LJGoodsService {
/**
* 根据条件分页查询商品信息
* @param page
* @return
*/
public IPage<LJGoods> selectLJGoodsList(Page page, LJGoods goods);
/**
* 根据id查询商品信息
* @param id
* @return
*/
public LJGoods selectLJGoodsById(int id);
/**
* 根据id删除商品信息
* @param id
*/
public void deleteLJGoodsById(Integer id);
/**
* 增加商品信息
* @param goods
* @return
*/
public int insertLJGoods(LJGoods goods);
/**
* 修改商品信息
* @param goods
* @return
*/
public int updateLJGoods(LJGoods goods);
}

View File

@ -0,0 +1,44 @@
package com.fuint.business.convenienceSore.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.convenienceSore.entity.Supplier;
/**
* 供应商信息 业务层
*/
public interface SupplierService {
/**
* 根据条件分页查询供应商信息
* @param page
* @return
*/
public IPage<Supplier> selectSupplierList(Page page, Supplier supplier);
/**
* 根据id查询供应商信息
* @param id
* @return
*/
public Supplier selectSupplierById(int id);
/**
* 根据id删除供应商信息
* @param id
*/
public void deleteSupplierById(Integer id);
/**
* 增加供应商信息
* @param supplier
* @return
*/
public int insertSupplier(Supplier supplier);
/**
* 修改供应商信息
* @param supplier
* @return
*/
public int updateSupplier(Supplier supplier);
}

View File

@ -19,13 +19,14 @@ import java.util.List;
import java.util.stream.Collectors;
/**
* @author :admin
* @date : 2023/10/16
* 便利店商品分类信息 业务层
*/
@Service
public class CvsGoodsServiceImpl extends ServiceImpl<CvsGoodsMapper,CvsGoods> implements CvsGoodsService {
/**添加商品信息*/
/**
* 添加商品分类信息
*/
@Transactional
public int insertCvsGoods( CvsGoods cvsGoods){
//查找分类名称是否存在
@ -40,8 +41,16 @@ public class CvsGoodsServiceImpl extends ServiceImpl<CvsGoodsMapper,CvsGoods> im
}
}
/**
* 根据条件分页查询商品分类信息
* @param page
* @param g
* @return
*/
public IPage<CvsGoodsVo> selectTree(Page page, CvsGoods g){
AccountInfo nowAccountInfo1 = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo1.getStoreId();
g.setStoreId(storeId);
// 查询全部数据
IPage<CvsGoodsVo> cvsGoodsPage= baseMapper.selectCvsGoodsList(page,g);//一节点
List<CvsGoodsVo> cvsGoodsList = cvsGoodsPage.getRecords();
@ -60,6 +69,7 @@ public class CvsGoodsServiceImpl extends ServiceImpl<CvsGoodsMapper,CvsGoods> im
cvsGoodsVo.setCategoryName(goods.getCategoryName());
cvsGoodsVo.setPid(goods.getPid());
cvsGoodsVo.setStatus(goods.getStatus());
cvsGoodsVo.setCode(goods.getCode());
cvsGoodsVo.setCreateTime(new Date());
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
cvsGoodsVo.setCreateBy(nowAccountInfo.getId().toString());
@ -109,9 +119,23 @@ public class CvsGoodsServiceImpl extends ServiceImpl<CvsGoodsMapper,CvsGoods> im
public CvsGoods selectParentById(Integer id){
return baseMapper.selectById(id);
}
// 删除
/**
* 根据id删除商品分类信息
* @param id
*/
@Override
public void deleteByIdVo(Integer id){
baseMapper.deleteByIdVo(id);
}
/**
* 修改商品分类信息
* @param goods
*/
@Override
public int updateCvsGood(CvsGoods goods) {
int row = baseMapper.updateById(goods);
return row;
}
}

View File

@ -0,0 +1,75 @@
package com.fuint.business.convenienceSore.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.convenienceSore.entity.LJGoods;
import com.fuint.business.convenienceSore.mapper.LJGoodsMapper;
import com.fuint.business.convenienceSore.service.LJGoodsService;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.TokenUtil;
import org.springframework.stereotype.Service;
/**
* 商品信息 业务层
*/
@Service
public class LJGoodsServiceImpl extends ServiceImpl<LJGoodsMapper, LJGoods> implements LJGoodsService {
/**
* 根据条件分页查询商品信息
* @param page
* @return
*/
@Override
public IPage<LJGoods> selectLJGoodsList(Page page, LJGoods goods) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
goods.setStoreId(storeId);
IPage<LJGoods> goodsIPage = baseMapper.selectLJGoodsList(page, goods);
return goodsIPage;
}
/**
* 根据id查询商品信息
* @param id
* @return
*/
@Override
public LJGoods selectLJGoodsById(int id) {
return baseMapper.selectById(id);
}
/**
* 根据id删除商品信息
* @param id
*/
@Override
public void deleteLJGoodsById(Integer id) {
baseMapper.deleteById(id);
}
/**
* 增加商品信息
* @param goods
* @return
*/
@Override
public int insertLJGoods(LJGoods goods) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
goods.setStoreId(storeId);
int row = baseMapper.insert(goods);
return row;
}
/**
* 修改商品信息
* @param goods
* @return
*/
@Override
public int updateLJGoods(LJGoods goods) {
int row = baseMapper.updateById(goods);
return row;
}
}

View File

@ -0,0 +1,75 @@
package com.fuint.business.convenienceSore.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.convenienceSore.entity.Supplier;
import com.fuint.business.convenienceSore.mapper.SupplierMapper;
import com.fuint.business.convenienceSore.service.SupplierService;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.TokenUtil;
import org.springframework.stereotype.Service;
/**
* 供应商 业务层
*/
@Service
public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> implements SupplierService {
/**
* 根据条件分页查询供应商信息
* @param page
* @return
*/
@Override
public IPage<Supplier> selectSupplierList(Page page, Supplier supplier) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
supplier.setStoreId(storeId);
IPage<Supplier> supplierIPage = baseMapper.selectSupplierList(page, supplier);
return supplierIPage;
}
/**
* 根据id查询供应商信息
* @param id
* @return
*/
@Override
public Supplier selectSupplierById(int id) {
return baseMapper.selectById(id);
}
/**
* 根据id删除供应商信息
* @param id
*/
@Override
public void deleteSupplierById(Integer id) {
baseMapper.deleteById(id);
}
/**
* 增加供应商信息
* @param supplier
* @return
*/
@Override
public int insertSupplier(Supplier supplier) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
supplier.setStoreId(storeId);
int row = baseMapper.insert(supplier);
return row;
}
/**
* 修改供应商信息
* @param supplier
* @return
*/
@Override
public int updateSupplier(Supplier supplier) {
int row = baseMapper.updateById(supplier);
return row;
}
}

View File

@ -71,6 +71,11 @@ public class CertifiedMember extends BaseEntity implements Serializable {
*/
@ApiModelProperty("认证状态")
private String status;
/**
* 商户id
*/
@ApiModelProperty("商户id")
private Integer storeId;
/**
* 图片URL
*/

View File

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.fuint.framework.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Getter;
import lombok.Setter;
@ -22,7 +23,7 @@ import java.util.List;
@Getter
@Setter
@TableName("fixing_level")
@ApiModel(value = "FixingLevel对象", description = "")
@ApiModel(value = "FixingLevel对象", description = "固定等级表")
public class FixingLevel extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@ -117,6 +118,11 @@ public class FixingLevel extends BaseEntity implements Serializable {
*/
@ApiModelProperty("二维码")
private String qrCode;
/**
* 商户id
*/
@ApiModelProperty("商户id")
private Integer storeId;
@TableField(exist = false)
private List<JSONObject> gasolineRuleList;

View File

@ -8,6 +8,7 @@
<select id="selectCertifiedMemberList" resultType="com.fuint.business.userManager.entity.CertifiedMember">
<include refid="selectCertifiedMember"></include>
<where>
store_id = #{certifiedMember.storeId}
<if test="certifiedMember.mobile != null and certifiedMember.mobile != ''">
and mobile like concat('%', #{certifiedMember.mobile}, '%')
</if>

View File

@ -8,6 +8,7 @@
<select id="selectFixingLevelList" resultType="com.fuint.business.userManager.entity.FixingLevel">
<include refid="selectFixingLevel"></include>
<where>
store_id = #{fixingLevel.storeId}
<if test="fixingLevel.status != null and fixingLevel.status != ''">
and status = #{fixingLevel.status}
</if>

View File

@ -14,7 +14,9 @@ import com.fuint.business.userManager.mapper.FixingLevelMapper;
import com.fuint.business.userManager.service.CertifiedMemberService;
import com.fuint.business.userManager.service.FixingLevelService;
import com.fuint.business.userManager.service.LJUserService;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.StringUtils;
import com.fuint.common.util.TokenUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -35,6 +37,9 @@ public class CertifiedMemberServiceImpl extends ServiceImpl<CertifiedMemberMappe
*/
@Override
public IPage<CertifiedMember> selectCertifiedMemberList(Page page, CertifiedMember certifiedMember) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
certifiedMember.setStoreId(storeId);
IPage<CertifiedMember> fixingLevelIPage = baseMapper.selectCertifiedMemberList(page, certifiedMember);
for (CertifiedMember record : fixingLevelIPage.getRecords()) {
if (StringUtils.isNotEmpty(record.getAttestationData())){
@ -115,6 +120,9 @@ public class CertifiedMemberServiceImpl extends ServiceImpl<CertifiedMemberMappe
certifiedMember.setName(ljUser.getName());
certifiedMember.setUserId(ljUser.getId());
}
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
certifiedMember.setStoreId(storeId);
int row = baseMapper.insert(certifiedMember);
return row;
}

View File

@ -9,7 +9,9 @@ import com.fuint.business.userManager.entity.FixingLevel;
import com.fuint.business.userManager.entity.LJUserGrade;
import com.fuint.business.userManager.mapper.FixingLevelMapper;
import com.fuint.business.userManager.service.FixingLevelService;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.StringUtils;
import com.fuint.common.util.TokenUtil;
import org.springframework.stereotype.Service;
/**
@ -24,6 +26,9 @@ public class FixingLevelServiceImpl extends ServiceImpl<FixingLevelMapper, Fixin
*/
@Override
public IPage<FixingLevel> selectFixingLevelList(Page page, FixingLevel fixingLevel) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
fixingLevel.setStoreId(storeId);
IPage<FixingLevel> fixingLevelIPage = baseMapper.selectFixingLevelList(page, fixingLevel);
for (FixingLevel record : fixingLevelIPage.getRecords()) {
if (StringUtils.isNotEmpty(record.getGasolineRule())){
@ -65,6 +70,9 @@ public class FixingLevelServiceImpl extends ServiceImpl<FixingLevelMapper, Fixin
*/
@Override
public int insertFixingLevel(FixingLevel fixingLevel) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
fixingLevel.setStoreId(storeId);
int row = baseMapper.insert(fixingLevel);
return row;
}

View File

@ -1,7 +1,7 @@
# \u57FA\u672C\u914D\u7F6E
server.port=8008
env.profile=dev
env.properties.path=D:/code/oilSystem/fuintBackend/configure/
env.properties.path=D:/work/ServiceStation/oilSystem/fuintBackend/configure/
# \u6570\u636E\u5E93\u914D\u7F6E

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1,27 @@
<template>
<div class="app-center">
<div class="">充值</div>
</div>
</template>
<script>
export default {
name: "Recharge",
data(){
return{
}
}
}
</script>
<style scoped lang="scss">
.app-center{
width: 100%;
display: flex;
box-sizing: border-box;
padding: 10px;
}
</style>

View File

@ -0,0 +1,552 @@
<template>
<div class="app-center">
<div class="center-left">
<div class="center-vh">
<div class="center-left-top">
<div class="vip-bottom" @click="dialogVisiblevip = true">
<div>会员登录</div>
</div>
</div>
<div class="center-left-hj">
<div class="hj-box" style="justify-content: left">油品:200.00</div>
<div class="hj-box" style="border-left: 1px solid #d1d1d4; border-right: 1px solid #d1d1d4;">商品:0.52</div>
<div class="hj-box" style="justify-content: flex-end">合计: 200.52</div>
</div>
<div class="center-left-hj">
<div>满减活动</div>
<div>-2.87</div>
</div>
<div class="center-left-th">
<div class="th-box">
<div>扫码支付</div>
<div class="bule">394.7</div>
</div>
<div class="th-box">
<div>找零</div>
<div class="bule">394.7</div>
</div>
<div class="th-box">
<div>加油员</div>
<div style="cursor: pointer;color: crimson" @click="dialogVisible = true" >加油员名称</div>
</div>
</div>
</div>
<div class="bottom-posi">
<div class="center-left-wrap">
<div class="wrap-box" v-for="(item,index) in 6" :key="index">
<span>支付方式</span>
</div>
</div>
<div class="center-left-bottom">
<div>
<div class="bottom-price">349.78</div>
<div class="price-red">优惠合计5.74</div>
</div>
<div class="center-left-lv" @click="dialogVisiblej = true ">立即结算</div>
</div>
</div>
</div>
<div class="center-right">
<div class="center-top">
<div class="center-top-tab">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="全部" name="first"></el-tab-pane>
<el-tab-pane label="92#" name="second"></el-tab-pane>
<el-tab-pane label="95#" name="third"></el-tab-pane>
<el-tab-pane label="98#" name="fourth"></el-tab-pane>
<el-tab-pane label="0#" name="one"></el-tab-pane>
<el-tab-pane label="京0#" name="two"></el-tab-pane>
<el-tab-pane label="京10#" name="three"></el-tab-pane>
<el-tab-pane label="CNG" name="frou"></el-tab-pane>
<el-tab-pane label="LNG" name="frous"></el-tab-pane>
</el-tabs>
</div>
<div class="center-top-data">
<div class="center-top-of" >
<div class="wrap-wrap">
<div class="of-box" v-for="(item,index) in 17" :key="index" :style="{'background-color': colorList[index%5].color}">
<div>92#</div>
<div class="of-title" >{{index+1}}号枪</div>
<div>
<img src="../../../assets/images/jya.png" style="width: 18px;height: 18px;">
</div>
</div>
</div>
</div>
<!-- -->
<div class="content-top-bottom">
<div>订单笔数 <span class="bule">3</span> </div>
<div>订单金额 <span class="bule">2.03</span> </div>
</div>
</div>
</div>
<div class="center-left-bottom">
<div class="bottom-gd">新增订单</div>
<div class="bottom-qk">解锁</div>
</div>
</div>
<div class="center-app">
<div class="center-top">
<div class="center-top-title">非油商品</div>
<div class="center-top-input">
<input type="text" placeholder="请输入商品名称,条码,商品关键词">
</div>
<div class="center-top-data">
<div class="data-top">
<div class="data-top-title">商品</div>
<div class="data-top-three">
<div>单价</div>
<div>数量</div>
<div>操作</div>
</div>
</div>
<div class="data-top-box">
<div class="data-top-title">商品名称</div>
<div class="data-top-three">
<div>0.01</div>
<div> <el-input-number v-model="num" size="small" controls-position="right" @change="handleChange" :min="1" :max="10"></el-input-number> </div>
<div><i class="el-icon-circle-close" style="font-size: 22px"></i></div>
</div>
</div>
<!-- -->
<div class="content-top-bottom">
<div>商品数量 <span class="bule">3</span> </div>
<div>商品总额 <span class="bule">2.03</span> </div>
</div>
</div>
</div>
<div class="center-left-bottom">
<div class="bottom-qk">清空</div>
<div style="display: flex">
<div class="bottom-qd">取单</div>
<div class="bottom-gd">挂单</div>
</div>
</div>
</div>
<!-- 加油员姓名-->
<el-dialog
title="提示"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose">
<div class="wrap-wrap">
<div class="of-box" v-for="(item,index) in 7" :key="index" :style="{'background-color': item.color}">
<div>92#</div>
<div class="of-title" >加油员姓名</div>
<div>
<img src="../../../assets/images/jya.png" style="width: 18px;height: 18px;">
</div>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="dialogVisible = false"> </el-button>
</span>
</el-dialog>
<!-- 立即结算-->
<el-dialog
title="提示"
:visible.sync="dialogVisiblej"
width="30%"
:before-close="handleClose">
<div >
立即结算
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisiblej = false"> </el-button>
<el-button type="primary" @click="dialogVisiblej = false"> </el-button>
</span>
</el-dialog>
<!-- 会员登录-->
<el-dialog
title="提示"
:visible.sync="dialogVisiblevip"
width="30%"
:before-close="handleClose">
<div >
会员登录
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisiblevip = false"> </el-button>
<el-button type="primary" @click="dialogVisiblevip = false"> </el-button>
</span>
</el-dialog>
<!-- 油号选择-->
</div>
</template>
<script>
export default {
name: "homeindex",
data(){
return{
dialogVisible: false,
dialogVisiblej: false,
dialogVisiblevip:false,
activeName: 'second',
tabarr:[
{name:'收银台',icon:'el-icon-s-platform'},
{name:'充值',icon: 'el-icon-s-finance'},
{name:'订单',icon: 'el-icon-s-order'},
{name:'会员',icon: 'el-icon-s-custom'},
{name:'核销',icon: 'el-icon-s-check'},
{name:'挂账',icon:'el-icon-s-claim'},
{name:'积分',icon:'el-icon-s-data'},
{name:'交班',icon: 'el-icon-s-flag'},
],
leftindex:0,
oilList:[
],
colorList:[
{color:'#e5f0ff'},
{color:'#fff2e5'},
{color:'#e5edf1'},
{color:'#ecfae5'},
{color:'#fafafa'}
],
num: 1,
}
},
methods:{
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {});
},
handleChange(value) {
console.log(value);
},
handleClick(tab, event) {
console.log(tab, event);
},
gocomponents(index){
this.leftindex = index
},
}
}
</script>
<style scoped lang="scss">
.app-center{
width: 100%;
display: flex;
box-sizing: border-box;
padding: 10px;
}
.center-left{
width: 33%;
border-radius: 8px;
overflow: hidden;
height: 98vh;
position: relative;
/*height: 70vh;*/
/*box-sizing: border-box;*/
/*padding: 10px;*/
}
.bottom-posi{
width: 100%;
position: absolute;
bottom: 0px;
}
.center-app{
width: 33%;
border-radius: 8px;
overflow: hidden;
/*background: white;*/
}
.center-right{
width: 33%;
border-radius: 8px;
overflow: hidden;
margin: 0px 10px;
}
.center-top{
width: 100%;
height: 86vh;
background: white;
margin-bottom: 10px;
box-sizing: border-box;
padding: 10px;
position: relative;
}
.center-top-title{
box-sizing: border-box;
padding: 10px 0px;
padding-bottom: 15px;
border-bottom: 1px solid #ececec;
font-size: 18px;
margin-bottom: 10px;
}
.center-top-tab{
box-sizing: border-box;
padding: 15px 0px;
}
.center-top-input{
width: 100%;
height: 60px;
background: #f8f8f8;
border-radius: 50px;
display: flex;
align-items: center;
justify-content: center;
input{
width: 90%;
font-size: 18px;
border: none;
outline: none;
background-color:transparent;
}
}
.center-top-data{
width: 100%;
border-radius: 8px;
overflow: hidden;
margin-top: 10px;
/*background-color: #f8f8f8;*/
}
.center-top-of{
width: 100%;
/*background-color: #99a9bf;*/
height: 70vh;
overflow: auto;
}
.wrap-wrap{
display: flex;
flex-wrap: wrap;
}
.of-box{
width: 31%;
margin-right: 10px;
margin-bottom: 10px;
border-radius: 8px;
box-sizing: border-box;
background-color: #b4d5ff;
height: 110px;
padding: 10px;
color: #3e4f60;
}
.of-title{
font-weight: bold;
font-size: 22px;
text-align: center;
margin: 13px;
}
.data-top{
width: 100%;
background-color: #ededed;
box-sizing: border-box;
padding: 15px 10px;
display: flex;
align-items: center;
justify-content: space-between;
}
.data-top-box{
width: 100%;
/*background-color: #ededed;*/
box-sizing: border-box;
padding: 15px 10px;
display: flex;
align-items: center;
justify-content: space-between;
}
.data-top-three{
width: 55%;
display: flex;
align-items: center;
justify-content: space-between;
}
.data-top-title{
width: 45%;
overflow: hidden;
}
.content-top-bottom{
position: absolute;
bottom:-16px;
width: 98%;
border-top: 1px solid #ececec;
height: 40px;
display: flex;
align-items: center;
justify-content: space-between;
transform: translate(-50%,-50%);
left: 50%;
color: #2c3e50;
font-size: 18px;
box-sizing: border-box;
padding: 15px ;
background-color: white;
}
.center-left-top{
width: 100%;
background: #5393ff;
height: 70px;
display: flex;
align-items: center;
justify-content: center;
}
.center-vh{
/*height: 68vh;*/
}
.center-left-hj{
background: white;
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
padding: 15px;
margin-bottom: 2px;
}
.center-left-th{
background: white;
box-sizing: border-box;
padding: 15px;
margin: 10px auto;
}
.center-left-wrap{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
/*margin-top: 280px;*/
}
.wrap-box{
width: 31%;
background: #ffffff;
border-radius: 8px;
height: 80px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 10px;
}
.wrap-box :hover{
/*background: #00afff !important;*/
width: 100%;
height: 100%;
border-radius: 8px;
height: 80px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid #00afff;
cursor: pointer;
/*color: white;*/
}
.center-left-bottom{
width: 100%;
background-color: white;
border-radius: 8px;
box-sizing: border-box;
padding: 10px;
display: flex;
align-items: center;
justify-content: space-between;
}
.bottom-qk{
border: 1px solid #99a9bf;
box-sizing: border-box;
padding: 14px 20px;
border-radius: 50px;
color: #99a9bf;
margin: 15px 0px ;
}
.bottom-qd{
border: 1px solid #13ce66;
background: #13ce66;
box-sizing: border-box;
padding: 14px 20px;
border-radius: 50px;
color: #ffffff;
margin: 15px 10px ;
}
.bottom-gd{
border: 1px solid #5393ff;
background: #5393ff;
box-sizing: border-box;
padding: 14px 20px;
border-radius: 50px;
color: #ffffff;
margin: 15px 10px ;
}
.bottom-price{
font-size: 26px;
font-weight: bold;
}
.price-red{
color: red;
}
.center-left-lv{
width: 60%;
height: 80px;
background-color: #13ce66;
color: white;
border-radius: 50px;
display: flex;
align-items: center;
justify-content: center;
font-size: 22px;
}
.th-box{
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #f6f8f9;
box-sizing: border-box;
padding: 10px 0px;
}
.hj-box{
width: 33%;
display: flex;
align-items: center;
justify-content: center;
}
.bule{
font-weight: 700;
color: #5393ff !important;
}
.vip-bottom{
border: 1px solid #ffffff;
box-sizing: border-box;
padding: 5px 15px;
border-radius: 50px;
display: flex;
align-items: center;
justify-content: center;
color: white;
cursor: pointer;
}
</style>

View File

@ -176,8 +176,8 @@
<!-- <noGoodsCashier :show-dialog="openNoGoodsCashierDialog" @submit="submitCashier" @closeDialog="closeDialog"></noGoodsCashier>-->
<!-- &lt;!&ndash; 无商品收款组件 end&ndash;&gt;-->
<!-- </div>-->
<!-- 👇 均为新建-->
<div class="app-containers">
<div class="app-left">
<div class="app-left-top">
<div class="app-left-img">
@ -185,81 +185,18 @@
</div>
<div class="app-left-title">蓝鲸油站收银 </div>
</div>
<div class="app-left-box" v-for="(item,index) in tabarr" :key="index"> <spen style="cursor: pointer">{{item.name}}</spen> </div>
<div class="app-left-box" v-for="(item,index) in tabarr" :class="{'bule': leftindex == index }" :key="index" @click="gocomponents(index)">
<i :class="item.icon" style="font-size: 18px" ></i> <div style="cursor: pointer;margin-left: 10px">{{item.name}}</div>
</div>
</div>
<div class="app-center">
<div class="center-left">
<div class="center-vh">
<div class="center-left-top">
<div class="vip-bottom">
<div>会员登录</div>
</div>
</div>
<div class="center-left-hj">
<div class="hj-box" style="justify-content: left">油品:200.00</div>
<div class="hj-box" style="border-left: 1px solid #d1d1d4; border-right: 1px solid #d1d1d4;">商品:0.52</div>
<div class="hj-box" style="justify-content: flex-end">合计: 200.52</div>
</div>
<div class="center-left-hj">
<div>满减活动</div>
<div>-2.87</div>
</div>
<div class="center-left-th">
<div class="th-box">
<div>扫码支付</div>
<div class="bule">394.7</div>
</div>
<div class="th-box">
<div>找零</div>
<div class="bule">394.7</div>
</div>
<div class="th-box">
<div>加油员</div>
<div >加油员名称</div>
</div>
</div>
</div>
<div class="center-left-wrap">
<div class="wrap-box" v-for="(item,index) in 6" :key="index">
<div>支付方式</div>
</div>
</div>
<div class="center-left-bottom">
<div>
<div class="bottom-price">349.78</div>
<div class="price-red">优惠合计5.74</div>
</div>
<div class="center-left-lv">立即结算</div>
</div>
</div>
<div class="center-app">
<div class="center-top">
<div class="center-top-title">非油商品</div>
<div class="center-top-input">
<input type="text" placeholder="请输入商品名称,条码,商品关键词">
</div>
</div>
<div class="center-left-bottom">
<div class="bottom-qk">清空</div>
<div style="display: flex">
<div class="bottom-qd">取单</div>
<div class="bottom-gd">挂单</div>
</div>
</div>
</div>
<div class="center-right">
<div class="center-top">
<div>选择油号</div>
</div>
<div class="center-left-bottom">
<div class="bottom-gd">新增订单</div>
<div class="bottom-qk">解锁</div>
</div>
</div>
<homeindex v-if="leftindex == 0"></homeindex>
<Recharge v-if="leftindex == 1"></Recharge>
<div style="width: 100%;padding:200px " v-if="leftindex != 0 && leftindex != 1">
<el-empty description="暂未开发"></el-empty>
</div>
<!-- <div class="app-right"></div>-->
</div>
</template>
@ -278,6 +215,8 @@ import orderList from "./components/orderList";
import memberList from "./components/memberList";
import couponConfirm from "./components/couponConfirm";
import noGoodsCashier from "./components/noGoodsCashier";
import homeindex from "./NewComponents/homeindex";
import Recharge from "./NewComponents/Recharge";
export default {
name: "Cashier",
components: {
@ -290,21 +229,36 @@ export default {
orderList,
memberList,
couponConfirm,
noGoodsCashier
noGoodsCashier,
homeindex,
Recharge,
},
data() {
return {
activeName: 'second',
tabarr:[
{name:'收银台'},
{name:'充值'},
{name:'订单'},
{name:'会员'},
{name:'核销'},
{name:'挂账'},
{name:'积分'},
{name:'交班'},
{name:'收银台',icon:'el-icon-s-platform'},
{name:'充值',icon: 'el-icon-s-finance'},
{name:'订单',icon: 'el-icon-s-order'},
{name:'会员',icon: 'el-icon-s-custom'},
{name:'核销',icon: 'el-icon-s-check'},
{name:'挂账',icon:'el-icon-s-claim'},
{name:'积分',icon:'el-icon-s-data'},
{name:'交班',icon: 'el-icon-s-flag'},
],
leftindex:0,
oilList:[
{color:'#e5f0ff'},
{color:'#fff2e5'},
{color:'#e5edf1'},
{color:'#ecfae5'},
{color:'#fafafa'}
],
num: 1,
//
systemName: process.env.VUE_APP_TITLE,
// tab
@ -431,6 +385,15 @@ export default {
// this.getCartList();
},
methods: {
handleChange(value) {
console.log(value);
},
handleClick(tab, event) {
console.log(tab, event);
},
gocomponents(index){
this.leftindex = index
},
//
initCashier() {
const app = this;
@ -867,240 +830,55 @@ export default {
background: #f6f8f9;
display: flex;
}
.app-center{
width: 100%;
display: flex;
box-sizing: border-box;
padding: 10px;
}
.center-left{
width: 33%;
border-radius: 8px;
overflow: hidden;
/*height: 70vh;*/
/*box-sizing: border-box;*/
/*padding: 10px;*/
}
.center-app{
width: 33%;
border-radius: 8px;
overflow: hidden;
/*background: white;*/
margin: 0px 10px;
}
.center-right{
width: 33%;
border-radius: 8px;
overflow: hidden;
}
.center-top{
width: 100%;
height: 86vh;
background: white;
margin-bottom: 10px;
box-sizing: border-box;
padding: 10px;
}
.center-top-title{
box-sizing: border-box;
padding: 10px 0px;
padding-bottom: 15px;
border-bottom: 1px solid #ececec;
font-size: 22px;
}
.center-top-input{
width: 100%;
height: 60px;
background: #f8f8f8;
border-radius: 50px;
display: flex;
align-items: center;
justify-content: center;
input{
border: none;
outline: none;
background-color:transparent;
}
}
.center-left-top{
width: 100%;
background: #5393ff;
height: 70px;
display: flex;
align-items: center;
justify-content: center;
}
.center-vh{
height: 68vh;
}
.center-left-hj{
background: white;
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
padding: 15px;
margin-bottom: 2px;
}
.center-left-th{
background: white;
box-sizing: border-box;
padding: 15px;
margin: 10px auto;
}
.center-left-wrap{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
/*margin-top: 280px;*/
}
.wrap-box{
width: 31%;
background-color: white;
border-radius: 8px;
height: 80px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 10px;
}
.center-left-bottom{
width: 100%;
background-color: white;
border-radius: 8px;
box-sizing: border-box;
padding: 10px;
display: flex;
align-items: center;
justify-content: space-between;
}
.bottom-qk{
border: 1px solid #99a9bf;
box-sizing: border-box;
padding: 14px 20px;
border-radius: 50px;
color: #99a9bf;
margin: 15px 0px ;
}
.bottom-qd{
border: 1px solid #13ce66;
background: #13ce66;
box-sizing: border-box;
padding: 14px 20px;
border-radius: 50px;
color: #ffffff;
margin: 15px 10px ;
}
.bottom-gd{
border: 1px solid #5393ff;
background: #5393ff;
box-sizing: border-box;
padding: 14px 20px;
border-radius: 50px;
color: #ffffff;
margin: 15px 10px ;
}
.bottom-price{
font-size: 26px;
font-weight: bold;
}
.price-red{
color: red;
}
.center-left-lv{
width: 60%;
height: 80px;
background-color: #13ce66;
color: white;
border-radius: 50px;
display: flex;
align-items: center;
justify-content: center;
font-size: 22px;
}
.th-box{
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #f6f8f9;
box-sizing: border-box;
padding: 10px 0px;
}
.hj-box{
width: 33%;
display: flex;
align-items: center;
justify-content: center;
}
.bule{
font-weight: 700;
color: #5393ff;
color: #5393ff !important;
}
.vip-bottom{
border: 1px solid #ffffff;
.app-left{
width: 180px;
height: 100vh;
background: #ffffff;
box-shadow: 0 4px 4px 4px rgba(0,21,41,.08);
box-sizing: border-box;
padding: 5px 15px;
border-radius: 50px;
padding: 10px;
}
.app-left-title{
color: #53a0ff;
font-weight: bold;
}
.app-left-top{
height: 60px;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
color: white;
cursor: pointer;
}
.app-left{
width: 180px;
height: 100vh;
background: #ffffff;
box-shadow: 0 4px 4px 4px rgba(0,21,41,.08);
box-sizing: border-box;
padding: 10px;
}
.app-left-title{
color: #53a0ff;
font-weight: bold;
}
.app-left-top{
height: 60px;
.app-left-img{
width: 28px;
height: 24px;
img{
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.app-left-img{
width: 28px;
height: 24px;
img{
width: 100%;
height: 100%;
}
}
.app-left-box{
width: 100%;
height: 60px;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
color: #909399;
}
.container-top{
width: 100%;
height: 98px;
background: #5393ff;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
}
.app-left-box{
width: 100%;
height: 60px;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
color: #909399;
}
.container-top{
width: 100%;
height: 98px;
background: #5393ff;
display: flex;
align-items: center;
justify-content: center;
}
.main {
height: 100%;
width: 100%;