发布差保证金计算

master
Sigo 4 years ago
parent 699fd06fd9
commit d1cf8db0b0

@ -10,6 +10,14 @@ export function getList(params) {
params params
}); });
} }
// 发布
export function doAdd(data) {
return service({
url: "/platformCoupon/add",
method: "post",
data
});
}
// 编辑 // 编辑
export function doEdit(data) { export function doEdit(data) {
return service({ return service({

@ -8,15 +8,17 @@
export default { export default {
data() { data() {
return { return {
imageUrl: '' imageUrl: ''//
}; };
}, },
methods: { methods: {
show(url) {
this.imageUrl = url
},
// 访edit.vue
handleChange(file, fileList) { handleChange(file, fileList) {
this.imageUrl = URL.createObjectURL(file.raw); this.imageUrl = URL.createObjectURL(file.raw);//访
this.$emit('active-img', file.raw); this.$emit('active-img', file.raw);//raw
// console.log('file', file);
console.log('fileList', fileList);
}, },
// //
handleClear() { handleClear() {

@ -12,13 +12,15 @@
</div> </div>
</template> </template>
<script> <script>
import Bus from "../../../bus";
export default { export default {
data() { data() {
return {} return {}
}, },
methods: { methods: {
GoOn() { GoOn() {
this.$emit('next', 1) this.$emit('next', 1, null)
Bus.$emit('issueComplete')
}, },
complete() { complete() {
this.$router.push('/active/management') this.$router.push('/active/management')
@ -45,7 +47,7 @@ export default {
font-size: 20px; font-size: 20px;
margin-bottom: 100px; margin-bottom: 100px;
} }
.container .btn .sub { /* .container .btn .sub {
margin-right: 50px; margin-right: 50px;
} } */
</style> </style>

@ -8,7 +8,7 @@
<el-input v-model.trim="form.couponName" placeholder="优惠券名称"></el-input> <el-input v-model.trim="form.couponName" placeholder="优惠券名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="优惠券数量" prop="couponNumber"> <el-form-item label="优惠券数量" prop="couponNumber">
<el-input-number v-model="form.couponNumber" :min="1" :precision="0" label="优惠券数量" style="width:100%"></el-input-number> <el-input-number v-model="form.couponNumber" :min="1" :precision="0" label="优惠券数量" style="width:100%" @change="handleCalculate"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="优惠方式" prop="couponType"> <el-form-item label="优惠方式" prop="couponType">
<el-radio-group v-model="form.couponType" @change="handleChange($event===0?['fullKimsMoney']:$event===1?['fullDiscountMoney']:false)"> <el-radio-group v-model="form.couponType" @change="handleChange($event===0?['fullKimsMoney']:$event===1?['fullDiscountMoney']:false)">
@ -75,10 +75,13 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item v-if="form.shareCommissionRules===0" prop="fixedAmount"> <el-form-item v-if="form.shareCommissionRules===0" prop="fixedAmount">
<el-input-number class="hideBtn" v-model="form.fixedAmount" :min="1" :precision="2" placeholder="固定提成(元)"></el-input-number> <el-input-number class="hideBtn" v-model="form.fixedAmount" :min="1" :precision="2" placeholder="固定提成(元)" @change="handleCalculate"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item v-if="form.shareCommissionRules===1" prop="orderCommission"> <el-form-item v-if="form.shareCommissionRules===1" prop="orderCommission">
<el-input-number class="hideBtn" v-model="form.orderCommission" :min="1" :max="100" :precision="0" placeholder="单据金额抽成(%)"></el-input-number> <el-input-number class="hideBtn" v-model="form.orderCommission" :min="1" :max="100" :precision="0" placeholder="单据金额抽成(%)" @change="handleCalculate"></el-input-number>
</el-form-item>
<el-form-item label="保证金">
<el-input v-model.trim="form.guaranteeMoney" placeholder="保证金(自动生成)" readonly></el-input>
</el-form-item> </el-form-item>
<el-form-item label="活动图片" prop="imageUrl"> <el-form-item label="活动图片" prop="imageUrl">
<active-img ref="activeImg" @active-img="handleImage"></active-img> <active-img ref="activeImg" @active-img="handleImage"></active-img>
@ -104,6 +107,7 @@
import ActiveImg from './activeImg' import ActiveImg from './activeImg'
import Store from '@/components/mulStore/index' import Store from '@/components/mulStore/index'
import Project from '@/components/mulProject/index' import Project from '@/components/mulProject/index'
import { partten } from "@/utils/partten/index.js";
export default { export default {
name: 'Form', name: 'Form',
components: { ActiveImg, Store, Project }, components: { ActiveImg, Store, Project },
@ -170,19 +174,35 @@ export default {
{ required: true, message: '请输入单据金额抽成(%', trigger: 'blur' }, { required: true, message: '请输入单据金额抽成(%', trigger: 'blur' },
], ],
imageUrl: [{ required: true, message: '请上传活动图片', trigger: ['blur', 'change'] }], imageUrl: [{ required: true, message: '请上传活动图片', trigger: ['blur', 'change'] }],
guaranteeMoney: [{ required: true, message: '请输入保证金', trigger: ['blur', 'change'] }],
}, },
} }
}, },
methods: { methods: {
// ============================== ============================== // // ============================== ============================== //
//
handleData(row) {
// idid
if (row.id) {
// useStoreListprojectListuseStoresuseProjects2useStoreListprojectList
row.useStoreList = row.useStoreList ? row.useStoreList : Array.from(row.useStores);
row.projectList = row.projectList ? row.projectList : Array.from(row.useProjects);
// ,使imageUrl
row.imageUrl = row.imageUrl ? row.imageUrl : partten.imagePath + row.fileLists[0].filePath + '/' + row.fileLists[0].fileName
// elementfixDate
row.fixDate = Array.from([row.startDate, row.endDate]);
// 使this.$refsthis.$nextTick
this.$nextTick(function () {
this.$refs.activeImg.show(row.imageUrl)
});
}
this.form = Object.assign({}, row);
},
// //
handleNext() { handleNext() {
this.$refs.form.validate((valid) => { this.$refs.form.validate((valid) => {
if (valid) { if (valid) {
let form = Object.assign({}, this.form); this.$emit('next', 2, this.form)
delete form.fixDate
delete form.imageUrl
this.$emit('next', 2, form)
} else { } else {
return false return false
} }
@ -215,7 +235,7 @@ export default {
handleImage(file) { handleImage(file) {
let form = Object.assign({}, this.form); let form = Object.assign({}, this.form);
form.multipartFile = file form.multipartFile = file
form.imageUrl = true form.imageUrl = URL.createObjectURL(file)
this.form = Object.assign({}, form); this.form = Object.assign({}, form);
this.$nextTick(function () { this.$nextTick(function () {
this.$refs.form.validateField(['imageUrl']) this.$refs.form.validateField(['imageUrl'])
@ -250,6 +270,17 @@ export default {
this.$nextTick(function () { this.$nextTick(function () {
this.$refs.form.validateField(['projectList']) this.$refs.form.validateField(['projectList'])
}); });
},
//
handleCalculate() {
let form = Object.assign({}, this.form);
// (guaranteeMoney) = (couponNumber) * (fixedAmount)
// (guaranteeMoney) = 10000
if (form.shareCommissionRules === 0) {
if (form.couponNumber && form.fixedAmount) {
// form.guaranteeMoney =
}
}
} }
}, },
} }

@ -0,0 +1,92 @@
<template>
<el-dialog title="打款" :visible.sync="dialogFormVisible" width="500px" @close="close" :close-on-click-modal="false" v-dialogDrag>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="保证金">
<el-input v-model.trim="form.guaranteeMoney" readonly></el-input>
</el-form-item>
<el-form-item label="打款回执" prop="">
<el-upload class="avatar-uploader" :limit="10" ref="upload" action="#" :show-file-list="false" :auto-upload="false" :on-change="handleChange">
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="close"> </el-button>
<el-button type="primary" @click="save"> </el-button>
</div>
</el-dialog>
</template>
<script>
export default {
name: 'pay',
data() {
return {
imageUrl: '',//
form: {},
dialogFormVisible: false//
}
},
created() { },
methods: {
// ============================ ============================ //
//
show() {
this.dialogFormVisible = true
},
//
close() {
this.dialogFormVisible = false
},
// ============================ ============================ //
// 访edit.vue
handleChange(file, fileList) {
this.imageUrl = URL.createObjectURL(file.raw);//访
this.$emit('active-img', file.raw);//raw
},
//
handleClear() {
this.$refs.upload.clearFiles();
},
//
save() {
this.$refs.form.validate((valid) => {
if (valid) {
} else {
return false
}
})
},
},
}
</script>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
background-color: #fff;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 150px;
height: 150px;
line-height: 150px;
text-align: center;
}
.avatar {
width: 150px;
height: 150px;
display: block;
}
</style>

@ -41,7 +41,7 @@
</div> </div>
</template> </template>
<script> <script>
import { doAdd } from "@/api/discount-coupon/issue.js"; import { doAdd, doEdit } from "@/api/discount-coupon/management.js";
export default { export default {
data() { data() {
return { return {
@ -53,39 +53,61 @@ export default {
// //
handleData(form) { handleData(form) {
this.form = Object.assign({}, form); this.form = Object.assign({}, form);
console.log('form', form);
}, },
handleChoose(num) { handleChoose(num) {
this.choose = num this.choose = num
}, },
// //
handleLast() { handleLast() {
this.$emit('next', 1) this.$emit('next', 1, this.form)
}, },
// //
async handleSubmit() { async handleSubmit() {
let form = Object.assign({}, this.form); let form = Object.assign({}, this.form);
for (let key in form) {
// formatnullnullnull
if (form[key] !== 0 && !form[key]) {
delete form[key]
}
// formformat[object object]
if (key == 'fixDate' || key == 'imageUrl' || key == 'useStores' || key == 'useProjects' || key == 'fileLists') {
delete form[key]
}
}
// IDmapstoreNumprojectId
form.useStoreList = form.useStoreList.map(item => item.storeNum); form.useStoreList = form.useStoreList.map(item => item.storeNum);
form.projectList = form.projectList.map(item => item.projectId); form.projectList = form.projectList.map(item => item.projectId);
//
let format = new FormData() let format = new FormData()
//
Object.keys(form).map(key => { Object.keys(form).map(key => {
format.append(key, form[key]) format.append(key, form[key])
}) })
let { code } = await doAdd(format) if (form.id) {
//
let { code, message } = await doEdit(format)
this.callBack(code, message)
} else {
//
let { code, message } = await doAdd(format)
this.callBack(code, message)
}
},
callBack(code, message) {
if (code == '000000') { if (code == '000000') {
this.$message({ this.$message({
message: '发布成功', message: message,
type: 'success' type: 'success'
}); });
this.$emit('next', 3) this.$emit('next', 3)
} }
if (code == '010000') { if (code == '010000') {
this.$message({ this.$message({
message: '发布失败', message: message,
type: 'error' type: 'error'
}); });
} }
}, }
}, },
} }
</script> </script>

@ -20,6 +20,8 @@
import Complete from './components/complete' import Complete from './components/complete'
import Edit from './components/edit' import Edit from './components/edit'
import Templates from './components/template' import Templates from './components/template'
import Bus from "../../bus";
export default { export default {
name: 'Form', name: 'Form',
components: { Templates, Edit, Complete }, components: { Templates, Edit, Complete },
@ -30,19 +32,52 @@ export default {
} }
}, },
created() { created() {
if (this.$route.params.id) {
this.$nextTick(function () {
this.$refs.edit.handleData(this.$route.params)
});
} else {
this.$nextTick(function () {
this.$refs.edit.handleData({
couponNumber: 1,
useStoreList: [],
projectList: [],
})
});
}
},
watch: {
$route(to, from) {
if (to.fullPath == '/couponIssue' && to.params.id) {
this.$nextTick(function () {
this.$refs.edit.handleData(to.params)
});
} else {
this.$nextTick(function () {
this.$refs.edit.handleData({
couponNumber: 1,
useStoreList: [],
projectList: [],
})
});
}
}
}, },
methods: { methods: {
// / // /
// active=1active=2active=3
handleNext(active, form) { handleNext(active, form) {
this.active = active this.active = active
this.form = Object.assign({}, form);
// active ref1=edit2=templates3=complete
let activeName = active == 1 ? 'edit' : active == 2 ? 'templates' : 'complete' let activeName = active == 1 ? 'edit' : active == 2 ? 'templates' : 'complete'
if (activeName == 'templates') { // 穿form
if (activeName == 'templates' || (activeName == 'edit' && this.form)) {
this.$nextTick(function () { this.$nextTick(function () {
this.$refs[activeName].handleData(form) this.$refs[activeName].handleData(this.form)
}); });
} }
if (active === 1) { if (active === 1 && !this.form) {
// //
this.$nextTick(function () { this.$nextTick(function () {
this.$refs.edit.handleClear() this.$refs.edit.handleClear()

@ -25,6 +25,7 @@
<el-tag effect="dark" type="danger" v-if="row.state===2"></el-tag> <el-tag effect="dark" type="danger" v-if="row.state===2"></el-tag>
<el-tag effect="dark" type="success" v-if="row.state===3"></el-tag> <el-tag effect="dark" type="success" v-if="row.state===3"></el-tag>
<el-tag effect="dark" type="warning" v-if="row.state===4"></el-tag> <el-tag effect="dark" type="warning" v-if="row.state===4"></el-tag>
<el-tag effect="dark" type="danger" v-if="row.state===11"></el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="couponName" label="优惠券名称"></el-table-column> <el-table-column show-overflow-tooltip align="center" min-width="130" prop="couponName" label="优惠券名称"></el-table-column>
@ -71,22 +72,24 @@
{{row.shareCommissionRules===0?'固定提成(元)':row.shareCommissionRules===1?'单据金额抽成(%)':''}} {{row.shareCommissionRules===0?'固定提成(元)':row.shareCommissionRules===1?'单据金额抽成(%)':''}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="fixedAmount" label="固定提成(元)" sortable></el-table-column> <el-table-column show-overflow-tooltip align="center" min-width="100" prop="fixedAmount" label="固定提成(元)"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="orderCommission" label="单据金额抽成(%)"></el-table-column> <el-table-column show-overflow-tooltip align="center" min-width="120" prop="orderCommission" label="单据金额抽成(%)"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="imageUrl" label="活动图片"> <el-table-column show-overflow-tooltip align="center" min-width="120" prop="guaranteeMoney" label="保证金" sortable></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="80" prop="imageUrl" label="活动图片">
<template #default="{row}"> <template #default="{row}">
<el-image v-if="row.fileLists.length>0" style="width: 30px; height: 30px" :src="imgPath+row.fileLists[0].filePath+'/'+row.fileLists[0].fileName" :preview-src-list="[imgPath+row.fileLists[0].filePath+'/'+row.fileLists[0].fileName]"> <el-image style="width: 30px; height: 30px" :src="imgPath+row.fileLists[0].filePath+'/'+row.fileLists[0].fileName" :preview-src-list="[imgPath+row.fileLists[0].filePath+'/'+row.fileLists[0].fileName]">
</el-image> </el-image>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" min-width="400" label="操作"> <el-table-column align="center" min-width="440" label="操作">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-button type="primary" size="mini" @click="handleEdit(row)"></el-button> <el-button type="primary" size="mini" :disabled="row.state!==0&&row.state!=2&&row.state!=4" @click="handleEdit(row)"></el-button>
<el-button type="info" size="mini" :disabled="row.state!==0&&row.state!=2&&row.state!=4" @click="handleAudit(row,1)"></el-button> <el-button type="info" size="mini" :disabled="row.state!==0&&row.state!=2&&row.state!=4" @click="handleAudit(row,1)"></el-button>
<el-button type="danger" size="mini" :disabled="row.state!=1" @click="handleAudit(row,2)"></el-button> <el-button type="danger" size="mini" :disabled="row.state!=1" @click="handleAudit(row,2)"></el-button>
<el-button type="success" size="mini" :disabled="row.state!=1" @click="handleAudit(row,3)"></el-button> <el-button type="success" size="mini" :disabled="row.state!=1" @click="handleAudit(row,3)"></el-button>
<el-button type="warning" size="mini" :disabled="row.state!=3" @click="handleAudit(row,4)"></el-button> <el-button type="warning" size="mini" :disabled="row.state!=3" @click="handleAudit(row,4)"></el-button>
<el-button type="primary" size="mini" @click="handleRemit(row,5)"></el-button> <el-button type="primary" size="mini" :disabled="row.state!=3" @click="handleRemit(row,5)"></el-button>
<el-button type="danger" size="mini" :disabled="row.state!=3" @click="handleRemit(row,5)">退</el-button>
<!-- <el-button type="primary" size="mini">增量</el-button> <!-- <el-button type="primary" size="mini">增量</el-button>
<el-button type="warning" size="mini">作废</el-button> <el-button type="warning" size="mini">作废</el-button>
<el-button type="danger" size="mini" @click="handleDelete(row)"></el-button> --> <el-button type="danger" size="mini" @click="handleDelete(row)"></el-button> -->
@ -102,6 +105,8 @@
import Verification from './components/verification'; import Verification from './components/verification';
import { getList, doDelete, doAudit } from "@/api/discount-coupon/management.js"; import { getList, doDelete, doAudit } from "@/api/discount-coupon/management.js";
import { partten } from "@/utils/partten/index.js"; import { partten } from "@/utils/partten/index.js";
import Bus from "../../bus";
export default { export default {
name: 'management', name: 'management',
components: { Verification }, components: { Verification },
@ -125,6 +130,10 @@ export default {
created() { created() {
this.imgPath = partten.imagePath this.imgPath = partten.imagePath
this.fetchData() this.fetchData()
//
Bus.$on("issueComplete", () => {
this.fetchData()
});
}, },
methods: { methods: {
// ========================== ========================== // // ========================== ========================== //
@ -156,7 +165,8 @@ export default {
// ========================== ========================== // // ========================== ========================== //
// //
handleEdit(row) { handleEdit(row) {
this.$router.push({ path: '/couponIssue', params: row }) // Bus.$emit("/couponIssue", row)
this.$router.push({ name: 'CouponIssue', params: row })
}, },
// //
handleGoter(row) { handleGoter(row) {
@ -177,6 +187,9 @@ export default {
this.$message.success(state === 1 ? '送审成功' : state === 2 ? '回收成功' : state === 3 ? '审核成功' : state === 4 ? '反审核成功' : message) this.$message.success(state === 1 ? '送审成功' : state === 2 ? '回收成功' : state === 3 ? '审核成功' : state === 4 ? '反审核成功' : message)
this.fetchData() this.fetchData()
} }
if (code == '010000') {
this.$message.error(message)
}
}, },
// //
handleRemit() { }, handleRemit() { },

@ -784,6 +784,7 @@ const router = new VueRouter({
}, },
{ {
path: "/couponIssue", path: "/couponIssue",
name: "CouponIssue",
component: () => import("../pages/discount-coupon/issue/index.vue"), component: () => import("../pages/discount-coupon/issue/index.vue"),
meta: { meta: {
title: "发布", title: "发布",
@ -792,6 +793,7 @@ const router = new VueRouter({
}, },
{ {
path: "/couponMane", path: "/couponMane",
name: "CouponMane",
component: () => import("../pages/discount-coupon/management/index.vue"), component: () => import("../pages/discount-coupon/management/index.vue"),
meta: { meta: {
title: "管理", title: "管理",

@ -12,6 +12,6 @@ function setRem() {
// 初始化 // 初始化
setRem(); setRem();
// 改变窗口大小时重新设置 rem // 改变窗口大小时重新设置 rem
window.onresize = function() { window.onresize = function () {
setRem(); setRem();
}; };

Loading…
Cancel
Save