积分商城

This commit is contained in:
DESKTOP-369JRHT\12997 2023-11-03 17:59:55 +08:00
parent 5472e4253b
commit 46d6afad1d
5 changed files with 293 additions and 143 deletions

View File

@ -44,10 +44,10 @@
v-loading="loading"
:data="dataList"
:default-sort="defaultSort">
<el-table-column label="分类" align="center" prop="id" width="50px"/>
<el-table-column label="分类" align="center" prop="categoryId" width="50px"/>
<el-table-column label="礼品信息" align="center">
<el-table-column label="名称" align="center" prop="sort20"/>
<el-table-column label="封面图" align="center" prop="sort634"/>
<el-table-column label="名称" align="center" prop="giftName"/>
<el-table-column label="封面图" align="center" prop="coverImage"/>
</el-table-column>
<el-table-column label="兑换信息" align="center">
<el-table-column label="兑换方式" align="center" prop="sort65"/>
@ -57,7 +57,7 @@
<el-table-column label="配送方式" align="center" prop="sort56"/>
<el-table-column label="快递费用" align="center" prop="sort55"/>
</el-table-column>
<el-table-column label="礼品类型" align="center" prop="sort44" />
<el-table-column label="礼品类型" align="center" prop="giftType" />
<el-table-column label="礼品库存信息" align="center">
<el-table-column label="总库存" align="center" prop="sort23"/>
<el-table-column label="已用" align="center" prop="sort12"/>
@ -93,22 +93,29 @@
/>
</el-card>
<el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body :close-on-click-modal="false">
<el-dialog :title="title" class="d-dialog" :visible.sync="open" width="1000px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="dataForm" :rules="rules" label-width="80px">
<el-row :gutter="24">
<el-col :span="15">
<el-form-item label="礼品名称" prop="categoryName">
<el-input v-model="dataForm.categoryName" placeholder="分类名称" maxlength="30"/>
<el-form-item label="礼品名称" prop="giftName">
<el-input v-model="dataForm.giftName" placeholder="请输入礼品名称" maxlength="30"/>
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="分类" prop="categoryName">
<el-input v-model="dataForm.categoryName" placeholder="分类名称" maxlength="30"/>
<el-form-item label="分类" prop="categoryId">
<el-select v-model="dataForm.categoryId" placeholder="请选择礼品分类" style="width:100%">
<el-option
v-for="option in giftCategoryList"
:key="option.id"
:label="option.categoryName"
:value="option.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="11">
<el-col :span="6">
<el-form-item label="封面图" >
<el-upload
:action="uploadAction"
@ -118,20 +125,34 @@
:auto-upload="true"
:show-file-list="false"
:headers="uploadHeader"
:on-success="handleUploadSuccess">
:on-success="handleUploadSuccessCover">
<img
v-if="this.form.logo"
:src="imagePath + this.form.logo"
v-if="this.dataForm.coverImage"
:src="imagePath + this.dataForm.coverImage"
class="list-img"
/>
<i class="el-icon-plus"></i>
<i v-if="!this.dataForm.coverImage" class="el-icon-plus"></i>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="11">
<el-col :span="18">
<el-form-item label="礼品图片" >
<el-upload
:action="uploadAction"
list-type="picture-card"
:file-list="dataForm.giftImages"
:headers="uploadHeader"
:auto-upload="true"
:on-preview="handlePictureCardPreview"
:on-success="handleUploadSuccessGift"
style="height: 100px;"
:on-remove="handleRemove">
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
<!-- <el-upload
:action="uploadAction"
list-type="picture-card"
:class="{hide:hideUpload}"
@ -139,14 +160,14 @@
:auto-upload="true"
:show-file-list="false"
:headers="uploadHeader"
:on-success="handleUploadSuccess">
:on-success="handleUploadSuccessGift">
<img
v-if="this.form.logo"
:src="imagePath + this.form.logo"
v-if="this.dataForm.giftImages"
:src="imagePath + this.dataForm.giftImages"
class="list-img"
/>
<i class="el-icon-plus"></i>
</el-upload>
<i v-if="!this.dataForm.giftImages" class="el-icon-plus"></i>
</el-upload> -->
</el-form-item>
</el-col>
</el-row>
@ -154,56 +175,72 @@
<el-row>
<el-col>
<el-col :span="20">
<el-form-item label="礼品类型" prop="status">
<el-radio-group v-model="dataForm.status">
<el-form-item label="礼品类型" prop="giftType">
<el-radio-group v-model="dataForm.giftType" @change="changeGiftType">
<el-radio
v-for="dict in dict.type.zhzt"
v-for="dict in dict.type.lplx"
:key="dict.value"
:label="dict.label"
@change="handleIsopenSelect"
:value="dict.value"/>
:value="dict.value"
@change="handleIsopenSelect,changeGiftType"
/>
</el-radio-group>
</el-form-item>
</el-col>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="7.5">
<el-form-item label="优惠卷" prop="supplierName">
<el-input v-model="dataForm.sort" placeholder="分类名称" maxlength="30"/>
<el-col :span="8">
<el-form-item v-if="showList.coupon" label="优惠卷" prop="couponId">
<el-select v-model="dataForm.couponId" placeholder="请选择" style="width: 202px;">
<el-option
v-for="dict in dict.type.lplx"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="showList.voucher" label="兑换券" prop="voucherId">
<el-select v-model="dataForm.voucherId" placeholder="请选择" style="width: 202px;">
<el-option
v-for="dict in dict.type.lplx"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="7.5">
<el-form-item label="礼品数量" prop="supplierName">
<el-input v-model="dataForm.sort" placeholder="分类名称" maxlength="30"/>
<el-col :span="7">
<el-form-item label="礼品数量" prop="supplierName" style="width: 202px;">
<el-input-number v-model="dataForm.giftQuantity" controls-position="right" :min="1" :max="10" label=""></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="7.5">
<el-col :span="8">
<el-form-item label="市场价格" prop="supplierName">
<el-input v-model="dataForm.sort" placeholder="分类名称" maxlength="30"/>
<el-input v-model="dataForm.sort" placeholder="请输入市场价格" maxlength="30" style="width: 202px;">
<template slot="append"></template></el-input>
</el-form-item>
</el-col>
<el-col :span="7.5">
<el-form-item label="礼品库存" prop="supplierName">
<el-input v-model="dataForm.sort" placeholder="分类名称" maxlength="30"/>
<el-col :span="7">
<el-form-item label="礼品库存" prop="totalInventory">
<el-input v-model="dataForm.totalInventory" placeholder="礼品库存" maxlength="30" style="width: 202px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-col :span="20">
<el-form-item label="兑换方式" prop="status">
<el-radio-group v-model="dataForm.status">
<el-radio-group v-model="dataForm.exchangeMethod">
<el-radio
v-for="dict in dict.type.zhzt"
v-for="dict in dict.type.redemptionMethod"
:key="dict.value"
:label="dict.label"
@change="handleIsopenSelect"
@ -214,38 +251,74 @@
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="7.5">
<el-form-item label="顿换积分" prop="supplierName">
<el-input v-model="dataForm.sort" placeholder="分类名称" maxlength="30"/>
<el-col :span="8">
<el-form-item label="兑换积分" prop="exchangePoints">
<el-input v-model="dataForm.exchangePoints" placeholder="分类名称" maxlength="30" style="width: 202px;">
<template slot="append">积分</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="7.5">
<el-form-item label="加钱比例" prop="supplierName">
<el-input v-model="dataForm.sort" placeholder="分类名称" maxlength="30"/>
<el-col :span="7">
<el-form-item label="加钱比例" prop="moneyRatio" >
<el-input v-model="dataForm.moneyRatio" placeholder="分类名称" maxlength="30" style="width: 202px;">
<template slot="prepend">1积分=</template>
<template slot="append"></template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="7.5">
<el-form-item label="兑换次数" prop="supplierName">
<el-input v-model="dataForm.sort" placeholder="分类名称" maxlength="30"/>
<el-col :span="8">
<el-form-item label="配送方式" prop="exchangeTimes">
<el-checkbox v-for="item in dict.type.shippingMethod" :key="item.value" v-model="moneyRatio" :label="item.id">{{ item.label }}</el-checkbox>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="快递运费" prop="status">
<el-radio-group v-model="dataForm.expressShippingFee">
<el-radio
v-for="dict in dict.type.expressShippingCosts"
:key="dict.value"
:label="dict.label"
@change="handleIsopenSelect"
:value="dict.value"/>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="运费金额" prop="status">
<el-input v-model="dataForm.exchangePoints" placeholder="分类名称" maxlength="30" style="width: 202px;">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label="兑换次数" prop="exchangeTimes">
<el-input v-model="dataForm.exchangeTimes" placeholder="分类名称" maxlength="30" style="width: 202px;">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="10">
<el-form-item label="礼品排序" prop="contactPerson">
<el-input-number v-model="dataForm.sort" :min="1" :max="10" label=""></el-input-number>
<el-form-item label="礼品排序" prop="sort" >
<el-input-number v-model="dataForm.sort" :min="1" :max="10" label="" style="width: 202px;"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-col :span="20">
@ -263,39 +336,34 @@
</el-col>
</el-row>
<!-- <el-row :gutter="24">
<el-row :gutter="24">
<el-col :span="23">
<el-form-item label="图文详情" prop="contactPerson">
<element-tiptap v-model="content" :extensions="extensions" :editor="editor" />
<el-form-item label="图文详情" prop="detailedDescription">
<!-- <element-tiptap v-model="content" :extensions="extensions" :editor="editor" /> -->
<editor></editor>
</el-form-item>
</el-col>
</el-row> -->
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<!-- <el-button type="primary" @click="submitForm"> </el-button> -->
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {getGiftCategoryApi} from "@/api/integral/category";
import { editor } from '@/components/Editor/index'
import { getToken } from '@/utils/auth'
export default {
name: "gift",
dicts: ['zhzt'],
dicts: ['zhzt','lplx','redemptionMethod','expressShippingCosts','shippingMethod'],
data() {
return {
@ -303,30 +371,41 @@ export default {
dataForm:{
id: null,
giftName: '', //
categoryId:'', // id
coverImage:'', //
giftImages: [], //
giftType:"优惠卷", //
couponId:'',//
giftQuantity:'', //
totalInventory:'', //
exchangeMethod:'积分', //
exchangePoints:'', //
exchangeTimes:'', //
moneyRatio:'', //
deliveryMethod:'', //
detailedDescription:'', //
categoryName: 1,
sort: null,
status: null
status: '启用'
},
//
uploadAction: process.env.VUE_APP_SERVER_URL + 'backendApi/file/upload',
uploadHeader: { 'Access-Token' : getToken() },
//
hideUpload: false,
//
uploadFiles: [],
//
imagePath: "",
showList: {
//
coupon: 'true',
voucher: 'false',
goods: 'false',
//
},
form:{logo:''},
imageUrl: '',
//
title:'',
//
showSearch: true,
disableInput: false, //
//
open: true,
open: false,
//
total: 0,
//
@ -346,8 +425,25 @@ export default {
/**
* 表单
*/
imageUrl: '',
giftCategoryList: [], //
//
uploadAction: process.env.VUE_APP_SERVER_URL + 'backendApi/file/upload',
uploadHeader: { 'Access-Token' : getToken() },
//
hideUpload: false,
//
uploadFiles: [
{name:"nihao",
url:'http://localhost:8008/static/uploadImages/20231103/ffbbe7d3ee1441fdaf706802fa0f176a.png'}
],
//
imagePath: process.env.VUE_APP_SERVER_URL,
dialogImageUrl: "",
dialogVisible: false
}
},
@ -359,32 +455,35 @@ export default {
},
submitForm: function() {
console.log("dataForm",this.dataForm)
console.log("dialogImageUrl",this.dialogImageUrl)
this.$refs["form"].validate(valid => {
if (valid) {
if (this.dataForm.id == null) {
//
insertGiftCategoryApi(this.dataForm).then(res => {
this.getList()
this.open = false
})
// insertGiftCategoryApi(this.dataForm).then(res => {
// this.getList()
// this.open = false
// })
} else {
//
updateGiftCategoryApi(this.dataForm).then(res => {
this.getList()
this.open = false
})
// //
// updateGiftCategoryApi(this.dataForm).then(res => {
// this.getList()
// this.open = false
// })
}
}})
},
handleIsopenSelect() {
this.$forceUpdate()
},
//
giftAdd() {
this.dataForm = {}
// this.dataForm = {}
this.dataForm.status = '启用'
this.open = true
this.title = '添加分类'
this.selectGiftCategory();
},
//
cancel() {
@ -415,35 +514,74 @@ export default {
* 表单
*/
//
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getGoodsCateInfo(id).then(response => {
this.form = response.data.cateInfo;
this.uploadFiles = [{ url: response.data.imagePath + this.form.logo, status: 'finished'}]
this.open = true;
this.title = "编辑商品分类";
// handleUpdate(row) {
// this.reset();
// const id = row.id || this.ids;
// getGoodsCateInfo(id).then(response => {
// this.form = response.data.cateInfo;
// this.uploadFiles = [{ url: response.data.imagePath + this.form.logo, status: 'finished'}]
// this.open = true;
// this.title = "";
// });
// },
//
initializeForm() {
},
//
selectGiftCategory() {
let queryParams = {pageSize : 1000}
getGiftCategoryApi(queryParams).then(response => {
this.giftCategoryList = response.data.records;
})
},
//
changeGiftType() {
//
},
//
handleIsopenSelect() {
// this.$forceUpdate()
},
//
handleUploadSuccessCover(file) {
this.dataForm.coverImage = file.data.fileName;
},
//
handleUploadSuccessGift(file) {
let newImage = {
name: file.data.original,
url: process.env.VUE_APP_SERVER_URL + file.data.fileName,
type: file.data.type
};
console.log("giftImages",this.dataForm.giftImages)
if (this.dataForm.giftImages == undefined) {
this.dataForm.giftImages = [];
}
this.dataForm.giftImages.push(newImage);
},
handleRemove(file, fileList) {
console.log("file.response.data.fileName",file);
this.dataForm.giftImages.forEach((image, index) => {
if (file.url === image.url) {
this.dataForm.giftImages.splice(index, 1);
}
});
console.log(file, fileList);
},
handleUploadSuccess(file) {
this.form.logo = file.data.fileName;
},
handleAvatarSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
},
beforeAvatarUpload(file) {
const isJPG = file.type;
const isLt2M = file.size / 1024 / 1024;
// if (!isJPG) {
// this.$message.error(' JPG !');
// }
// if (!isLt2M) {
// this.$message.error(' 2MB!');
// }
return isJPG && isLt2M;
handlePictureCardPreview(file) {
console.log(file);
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
}
@ -452,9 +590,23 @@ export default {
<style scoped>
.common-dialog >>> .el-upload--picture-card {
width: 60px;
height: 50px;
line-height: 60px;
.d-dialog >>> .el-upload--picture-card {
width: 100px;
height: 100px;
line-height: 100px;
}
.d-dialog >>> .avatar-uploader .el-upload {
width: 100px;
height: 100px;
}
.d-dialog >>> .el-upload-list--picture-card .el-upload-list__item {
width: 100px;
height: 100px;
}
.list-img{
width: 100px;
height: 100px;
}
</style>

View File

@ -1,6 +1,7 @@
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.dto.MtInventoryDto;
import com.fuint.business.convenienceSore.entity.MtInventory;
@ -38,7 +39,7 @@ public class MtInventoryController extends BaseController {
public ResponseObject queryByPage(MtInventory mtInventory,
@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){
com.baomidou.mybatisplus.extension.plugins.pagination.Page page =new com.baomidou.mybatisplus.extension.plugins.pagination.Page(pageNo,pageSize);
Page page =new Page(pageNo,pageSize);
IPage<MtInventory> list = mtInventoryService.queryByPage(page,mtInventory);
return getSuccessResult(list);
}
@ -47,7 +48,7 @@ public class MtInventoryController extends BaseController {
public ResponseObject getListByPage(MtInventoryDto mtInventory,
@RequestParam(value = "pageNo",defaultValue = "1") Integer page,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){
com.baomidou.mybatisplus.extension.plugins.pagination.Page pageNo =new com.baomidou.mybatisplus.extension.plugins.pagination.Page(page,pageSize);
Page pageNo =new Page(page,pageSize);
IPage<MtInventoryVO> list = mtInventoryService.getListByPage(pageNo,mtInventory);
return getSuccessResult(list);
}

View File

@ -1,5 +1,6 @@
package com.fuint.business.convenienceSore.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fuint.business.convenienceSore.dto.MtPurchaseDto;
import com.fuint.business.convenienceSore.entity.*;
@ -181,11 +182,9 @@ public class MtPurchaseServiceImpl implements MtPurchaseService {
return false;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean storage(Integer id) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
String oilIntake = "进货入库";
int audit = iljStaffService.auditPrem(oilIntake);
if (audit>0) {
@ -208,10 +207,8 @@ public class MtPurchaseServiceImpl implements MtPurchaseService {
stockService.insertStockTrack(stockTrack);
}
}
// 2.将数据填充到油罐里面
String status = "qrts";
boolean edit = edit(id);
int i = mtPurchaseDao.editStateById(id, status);
return true;

View File

@ -37,7 +37,7 @@ public class IntegralGiftController extends BaseController {
@GetMapping("queryByPage")
public ResponseObject queryByPage(@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize,
@Param("integralGiftCategory") IntegralGift integralGift) {
@Param("integralGift") IntegralGift integralGift) {
com.baomidou.mybatisplus.extension.plugins.pagination.Page page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page(pageNo, pageSize);
IPage<IntegralGiftVO> integralGiftCategoryIPage = this.integralGiftService.queryByPage(page, integralGift);
return getSuccessResult(integralGiftCategoryIPage);