前端支付

This commit is contained in:
wangh 2023-11-13 16:54:15 +08:00
parent 70e1dc3d3d
commit b080f3e344
10 changed files with 723 additions and 134 deletions

View File

@ -7,4 +7,22 @@ export function getCountOilTypeApi(query) {
method: 'get',
params: query
})
}
// 查询余额券
export function getCardValueListApi(query) {
return request({
url: 'business/marketingActivity/cardValue',
method: 'get',
params: query
})
}
// 余额支付
export function getPrepaidCardTopUpApi(query) {
return request({
url: 'business/marketingActivity/cardValueRecord/prepaidCardTopUp',
method: 'post',
data: query
})
}

View File

@ -35,4 +35,21 @@ export function getGiftApi(data) {
})
}
//兑换券
export function getCardFavorableApi(data) {
return request({
url: 'business/marketingActivity/cardFavorable?pageNo=1&pageSize=10',
method: 'get',
params: data
})
}
//优惠券
export function getCardExchangeApi(data) {
return request({
url: 'business/marketingActivity/cardExchange?pageNo=1&pageSize=10',
method: 'get',
params: data
})
}

View File

@ -33,5 +33,8 @@ export function getOrderApi(data) {
params: data
})
}

View File

@ -1,13 +1,273 @@
<template>
$END$
<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.realName"
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 label="状态" prop="auditedStatus">
<el-select
v-model="queryParams.status"
placeholder="状态"
clearable
style="width: 240px"
>
<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="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-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange"
@row-click="handleRowClick"
:default-sort="defaultSort" @sort-change="handleSortChange">
<el-table-column label="ID" align="center" prop="id" width="80" />
<el-table-column label="姓名" align="center" prop="realName" />
<el-table-column label="手机号" align="center" prop="mobile" width="110"/>
<el-table-column label="员工状态" align="center" prop="status">
<template slot-scope="scope">
<el-tag v-if="scope.row.status=='qy'">启用</el-tag>
<el-tag type="info" v-if="scope.row.status=='jy'">禁用</el-tag>
</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>
</div>
</template>
<script>
import {getName} from "../../utils/fuint";
import {addStaff, delStaff, getStaff, listStaff, queryStaff, updateStaff} from "@/api/staff/staff";
import {getDuty, listDuty} from "@/api/staff/duty";
export default {
name: "selectStaff"
}
name: "selectStaff",
dicts: ['ywqx','write_off','display','zhzt','transaction','time_frame','handover','handover_quit',
'jbjl','official','notice','special_prem','role','shqx'],
data() {
return {
//
roleList:[],
drawer: false,
//
title: "",
//
loading: false,
//
ids: [],
//
multiple: true,
//
showSearch: true,
storeOptions: [],
// role:[],
posPrem:'',
props: { multiple: true },
appletPrem:'',
writeOff:[],
write:[],
specialPrem:[],
auditPrem:[],
special:[],
//
total: 0,
//
list: [],
//
open: false,
//
dateRange: [],
//
defaultSort: {prop: 'createTime', order: 'descending'},
//
form: {
id:'', userId:'', mobile:'', realName:'', wechat:'', merchantId:'', storeId:'', auditedStatus:'',
auditedTime:'', description:'', isRefuel:'yc', handoverMode:'dqmdtyjb', handoverPrem:'yqx', handoverOut:'jbtc', record:'qbjl',
merchantStatus:'qy',screen:'qy', posPrem:'', appletPrem:'', notice:'advice_jy', oilGunId:'', timeFrame:'bx', refund:'yqx',
transaction:'qbjy', writeOff:'',auditPrem:'',specialPrem:'', official:'', status:'qy',pos:'jy',roleId:''
},
//
queryParams: {
page: 1,
pageSize: 10,
realName: '',
mobile: '',
status: ''
},
};
},
created() {
this.getList();
this.getDuty();
// this.getStoreList();
},
methods: {
showDesc(){
this.drawer = true;
},
handleNodeClick1(data) {
this.form.posPrem = JSON.stringify(data);
},
handleNodeClick2(data) {
this.form.appletPrem = JSON.stringify(data);
},
getCheckbox(){
this.form.writeOff = this.writeOff.toString();
this.form.specialPrem = this.specialPrem.toString();
this.form.auditPrem = this.auditPrem.toString();
},
//
toTarget(url) {
this.$router.push( { path: url } );
},
getName,
//
getList() {
this.loading = true;
listStaff(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.list = response.data.records;
this.total = response.data.total;
this.loading = false;
}
);
},
//
getDuty(){
listDuty().then(response => {
this.roleList = response.data
})
},
//
getStoreList() {
listStaff().then(response => {
this.storeOptions = response.data.records;
}
);
},
//
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
//
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
this.handleQuery();
},
//
handleStatusChange(row) {
let text = row.auditedStatus == "A" ? "启用" : "禁用";
this.$modal.confirm('确认要' + text + '"' + row.realName + '"吗?').then(function() {
// return updateStaffStatus(row.id, row.auditedStatus);
return updateStaff({id:row.id, auditedStatus:row.auditedStatus})
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function() {
row.auditedStatus = row.auditedStatus === "A" ? "A" : "N";
});
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.operId)
this.multiple = !selection.length
},
//
handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
//
reset() {
this.posPrem = '';
this.appletPrem = '';
this.writeOff = [];
this.auditPrem = [];
this.form = {
id:'', userId:'', mobile:'', realName:'', wechat:'', merchantId:'', storeId:'', auditedStatus:'A',
auditedTime:'', description:'', isRefuel:'yc', handoverMode:'dqmdtyjb', handoverPrem:'yqx', handoverOut:'jbtc', record:'qbjl',
merchantStatus:'qy',screen:'qy', posPrem:'', appletPrem:'', notice:'advice_jy', oilGunId:'', timeFrame:'bx', refund:'yqx',
transaction:'qbjy', writeOff:'',auditPrem:'',specialPrem:'', official:'', status:'qy',pos:'jy',roleId:''
};
this.resetForm("form");
},
//
cancel() {
this.open = false;
this.reset();
},
handleRowClick(row) {
this.$refs.tables.clearSelection(); //
this.$refs.tables.toggleRowSelection(row); //
//
let file = {
mtStaffId: row.id,
realName: row.realName,
staffMobile: row.mobile,
}
this.$emit('send-data', file);
},
}
};
</script>
<style scoped>
.app-container{
width: 100%;
height: 100%;
background: #f6f8f9;
}
.pagin-box{
background: white;
box-sizing: border-box;
padding: 20px;
}
.baoguo{
background: white;
box-sizing: border-box;
padding: 20px;
margin-bottom: 20px;
}
</style>

View File

@ -78,7 +78,7 @@
<span v-if ="scope.row.exchangeMethod == '积分'" effect="plain" size="medium">{{scope.row.exchangePoints}}积分</span>
<span v-if ="scope.row.exchangeMethod == '金额'" effect="plain" type="success" size="medium">{{scope.row.exchangeAmount}}</span>
<span v-if ="scope.row.exchangeMethod == '积分+金额'" effect="plain" type="danger" size="medium">{{scope.row.exchangePoints}}积分+{{scope.row.exchangeAmount}}</span>
<span v-if ="scope.row.exchangeMethod == '积分+加钱购'" effect="plain" type="warning" size="medium">{{scope.row.exchangePoints}}积分+加钱购比例{{ moneyRatio }}</span>
<span v-if ="scope.row.exchangeMethod == '积分+加钱购'" effect="plain" type="warning" size="medium">{{scope.row.exchangePoints}}积分+加钱购比例{{ scope.row.moneyRatio }}</span>
</template>
</el-table-column>
@ -250,9 +250,9 @@
<el-form-item v-if="showList.coupon" label="优惠券" prop="couponId">
<el-select v-model="dataForm.couponId" placeholder="请选择" style="width: 202px;">
<el-option
v-for="option in giftCategoryList"
v-for="option in cardFavorableList"
:key="option.id"
:label="option.categoryName"
:label="(option.type==0?'油品卷-':option.type==1?'商品卷-':'优惠卷-')+ option.name"
:value="option.id"
></el-option>
</el-select>
@ -261,9 +261,9 @@
<el-form-item v-if="showList.voucher" label="兑换券" prop="voucherId">
<el-select v-model="dataForm.voucherId" placeholder="请选择" style="width: 202px;">
<el-option
v-for="option in giftCategoryList"
v-for="option in cardExchangeApiList"
:key="option.id"
:label="option.categoryName"
:label="(option.type==0?'兑换券-':option.type==1?'洗车券-':'洗车卡-')+ option.name"
:value="option.id"
></el-option>
</el-select>
@ -496,10 +496,10 @@
</el-main>
</el-container>
<div slot="footer" class="dialog-footer">
<!-- <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="addCommodity"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</div> -->
</el-dialog>
@ -545,10 +545,12 @@
</template>
<script>
import {getGiftCategoryApi} from "@/api/integral/category";
import {getGiftApi,insertGiftApi,updateGiftApi ,updateGiftInventoryApi} from "@/api/integral/gift";
import {getGiftApi,insertGiftApi,updateGiftApi ,updateGiftInventoryApi,getCardFavorableApi,getCardExchangeApi} from "@/api/integral/gift";
import { editor } from '@/components/Editor/index'
import { getToken } from '@/utils/auth'
import {listLJGoods} from "@/api/convenienceStore/ljgoods";
import {selectParentById, selectTree} from "@/api/convenienceStore/goods";
export default {
@ -625,7 +627,10 @@ export default {
shippingFee: false
},
getGiftTypeShow: '',
//
cardFavorableList:[],
//
cardExchangeApiList:[],
//
title:'',
//
@ -689,7 +694,7 @@ export default {
{ required: true, message: "请选择兑换券", trigger: "blur" },
],
goodsId: [
{ required: true, message: "请选择关联商品", trigger: "blur" },
{ required: true, message: "请选择关联商品", trigger: "change" },
],
giftQuantity: [
{ required: true, message: "礼品数量不能为空", trigger: "blur" },
@ -833,7 +838,9 @@ export default {
this.title = '添加礼品'
this.selectGiftCategory();
this.cardFavorableApi();
this.cardExchangeApi();
},
//
cancel() {
@ -841,7 +848,7 @@ export default {
this.reset();
},
//
//
cancelInventory() {
this.openInventory = false;
this.resInventoryForm()
@ -856,6 +863,10 @@ export default {
//
handleUpdate(data) {
this.cardFavorableApi();
this.cardExchangeApi();
let fileList = JSON.parse(data.giftImages);
this.giftImages = [],
@ -870,12 +881,26 @@ export default {
console.log("data",data.deliveryMethod);
data.deliveryMethod = JSON.parse(data.deliveryMethod);
// data.deliveryMethod = JSON.parse(data.deliveryMethod);
//
this.dataForm = data;
this.open = true;
this.getList();
},
cardFavorableApi () {
getCardFavorableApi().then(res=>{
this.cardFavorableList = res.data.records
})
},
cardExchangeApi () {
getCardExchangeApi().then(res=>{
this.cardExchangeApiList =res.data.records
})
},
resetQuery() {
this.queryParams= {
@ -961,18 +986,6 @@ 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 = "";
// });
// },
//
initializeForm() {
@ -1065,7 +1078,6 @@ export default {
handleIsopenSelect() {
// this.$forceUpdate()
},
//
handleUploadSuccessCover(file) {
this.dataForm.coverImage = file.data.fileName;
@ -1139,6 +1151,7 @@ export default {
},
getCommodity() {
this.getQueryList()
this.openCommodity = true
},
@ -1147,9 +1160,9 @@ export default {
selectTree().then(response => {
this.cvsGoodList = response.data.records
});
listSupplier().then(response => {
this.supplierList = response.data.records
})
// listSupplier().then(response => {
// this.supplierList = response.data.records
// })
},
addCommodity () {

View File

@ -67,24 +67,24 @@
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="margin-top" title="收货信息" :column="1" border>
<el-descriptions v-if="dataForm.shippingType == '物流配送'" class="margin-top" style="margin-top:10px" title="收货信息" :column="1" border>
<el-descriptions-item>
<template slot="label">
收货人
</template>
{{dataForm.mobile}}
{{dataForm.addrName}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
收货电话
</template>
{{dataForm.name}}
{{dataForm.addrMobile}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
收货地址
</template>
{{dataForm.name}}
{{dataForm.address}}
</el-descriptions-item>
</el-descriptions>
</div>

View File

@ -33,23 +33,23 @@
</el-radio-group>
<span style="display: block; width: 400px; color: red;font-size: 10px;">用户的收货地址请在订单详情中查看
如当前实物礼品关联商品信息,将会在发货完成后直接更新对应的商品库存</span>
如当前实物礼品关联商品信息,将会在发货完成后直接更新对应的商品库存</span>
</el-form-item>
</el-row>
<el-row v-if="!flag">
<el-form-item label="处理结果2" prop="processingResult" >
<el-form-item label="处理结果" prop="processingResult" >
<el-radio-group :disabled="!flagOrderStart" v-model="editForm.processingResult">
<el-radio label='0'>快递发货</el-radio>
<el-radio label='0'>通过</el-radio>
<el-radio label='1'>拒绝</el-radio>
</el-radio-group>
<span style="display: block; width: 400px; color: red;font-size: 10px;">用户的收货地址请在订单详情中查看
如当前实物礼品关联商品信息,将会在发货完成后直接更新对应的商品库存</span>
<span style="display: block; width: 400px; color: red;font-size: 10px;">请确认是否兑换完成兑换结果将展现给用户且不可再次更新状态
如当前实物礼品关联商品信息,将会在兑换完成后直接更新对应的商品库存</span>
</el-form-item>
</el-row>
<template v-if="editForm.processingResult == 0 " && flag>
<template v-if="flag">
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="快递公司" prop="courierCompanies">
@ -111,6 +111,7 @@ export default {
theTrackingNumber:'', //
notes:'', //
},
dataFormC:{},
flag:true,
stateFlag: true,
//
@ -134,12 +135,17 @@ export default {
},
created(){
console.log("dataForm",this.dataForm)
console.log("flagOrderStart",this.flagOrderStart)
if (this.dataForm.shippingType=="物流配送") {
this.flag == true
this.dataFormC=this.dataForm
// console.log("dataForm",this.dataFormC)
// console.log("flagOrderStart",this.flagOrderStart)
console.log("dataForm",this.dataFormC.shippingType)
if (this.dataFormC.shippingType == '物流配送') {
this.flag = true
}else {
this.flag == false
this.flag = false
}
@ -149,7 +155,7 @@ export default {
this.editForm.theTrackingNumber = this.dataForm.theTrackingNumber
this.editForm.notes = this.dataForm.notes
}
if (this.dataForm.orderStatus == '已拒绝') {
if (this.dataFormC.orderStatus == '已拒绝') {
this.editForm.processingResult='1' //
}

View File

@ -109,13 +109,9 @@
<el-button
size="mini"
type="text"
@click="handleUpdate(scope.row)"
@click="handleDetail(scope.row)"
>订单详情</el-button>
<el-button
size="mini"
type="text"
@click="handleUpdate(scope.row)"
>处理订单</el-button>
</template>
</el-table-column>
</el-table>
@ -127,22 +123,31 @@
@pagination="getList"
/>
</el-card>
<el-dialog title="订单详情" :visible.sync="openDetail" width="500px" append-to-body :close-on-click-modal="false">
<detail :dataForm = "dataForm"></detail>
</el-dialog>
</div>
</template>
<script>
import {getOrderApi,getStatisticsApi } from "@/api/integral/order";
import Detail from '@/views/integral/order/detail'
export default {
name: "pointsCashier",
components: { Detail },
dicts: ['zhzt','lplx','redemptionMethod','expressShippingCosts','shippingMethod'],
data() {
return {
openDetail:false,
dataForm:{},
dataList:[],
queryParams: {
orderType:1,
giftName: '',
status: '',
mobile: '',
@ -198,6 +203,10 @@ export default {
},
this.dateRange = []
},
handleDetail(data){
this.openDetail = true
this.dataForm = data;
},
}
}
</script>

View File

@ -173,7 +173,7 @@
<detail :dataForm = "dataForm"></detail>
</el-dialog>
<el-dialog title="处理兑换结果" :visible.sync="openOutcome" width="650px" append-to-body :close-on-click-modal="false">
<Outcome :dataForm = "dataForm" :flagOrderStart="flagOrderStart" @send-data="handleDataFromChild"></Outcome>
<Outcome v-if="outComeFlag" :dataForm = "dataForm" :flagOrderStart="flagOrderStart" @send-data="handleDataFromChild"></Outcome>
</el-dialog>
@ -183,7 +183,7 @@
<script>
import {getOrderApi,getStatisticsApi} from "@/api/integral/order";
import Detail from '@/views/integral/order/detail'
import Outcome from "./outcome.vue";
import Outcome from "@/views/integral/order/outcome";
export default {
name: "pointsMall",
@ -192,11 +192,14 @@ export default {
data() {
return {
outComeFlag : false,
dataList:[],
dataForm:{},
//
imagePath: process.env.VUE_APP_SERVER_URL,
queryParams: {
orderType:0,
giftName: '',
mobile:'',
shippingType: '',
@ -238,9 +241,15 @@ export default {
})
},
handleUpdate(data,flag){
this.openOutcome = true
this.flagOrderStart = flag
this.dataForm = {}
console.log("data",data)
this.dataForm = data;
console.log("dataForm",this.dataForm)
this.outComeFlag = !this.outComeFlag; // v-if
this.openOutcome = true
},
handleDetail(data){
@ -277,8 +286,9 @@ export default {
this.getList();
},
handleDataFromChild(data) {
this.outComeFlag = false
this.openOutcome = false
this.dataForm = {}
console.log('Received data in parent:', data);
}
}

View File

@ -299,38 +299,52 @@
<el-tabs v-model="activeRecharge" type="card" @tab-click="handleClick">
<el-tab-pane label="储值卡" name="balance">
<div>
<el-row>
<!-- <el-row>
<el-col :span="24">
<div style="display: flex">
<div style="width: 7%;line-height: 40px">油品类型</div>
<el-radio-button>储值卡充值</el-radio-button>
</div>
</el-col>
</el-row>
</el-row> -->
<el-row>
<el-col :span="24">
<div style="display: flex;margin: 20px 0">
<div style="height: 50px;line-height: 50px">充值金额</div>
<!--
.conten-bottom{
box-sizing: border-box;
padding: 20px 20px;
display: flex;
flex-wrap: wrap;
} -->
<el-col :span="1.5">
<div style="height: 50px;line-height: 50px">充值金额</div>
</el-col>
<el-col :span="22">
<div v-if="cardValueList.length>0" style="display: flex;margin: 13px 5px;box-sizing: border-box;flex-wrap: wrap; ">
<div class="mon"
v-for="(item,index) in storeCard" :key="index"
v-for="(item,index) in cardValueList" :key="index"
:class="activeKey === index ? 'select' : ''"
@click="recharge(index)">
<div class="top1"><span class="amount1">{{ item.recharge }}</span></div>
<div>赠送<span class="amount">{{ item.give }}</span></div>
@click="rechargeCard(index)">
<div class="top1"><span class="amount1">{{ item.rechargeBalance }}</span></div>
<div>赠送<span class="amount">{{ item.giftBalance }}</span></div>
</div>
</div>
<div style="width: 30%;margin-left: 6%;"
:class="activeKey === 4 ? 'select' : ''"
@click="recharge(4)">
<div style="width: 30%;margin-left: 13px;margin-top: 8px;"
:class="activeKey === cardValueList.length ? 'select' : ''"
@click="rechargeCard(cardValueList.length,-1)">
<el-input placeholder="请输入充值金额"
size="medium"
v-model="storeCardAmount.recharge">
v-model.number="cardValueForm.amount"
@change="valueAmoutChange(cardValueForm.amount)">
<template slot="prepend">自定义</template>
<template slot="append"></template>
</el-input>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div style="display: flex;justify-content: space-between;margin: 20px 0">
@ -338,42 +352,45 @@
<div class="zeng">赠送金额</div>
<div>
<el-input placeholder="0.00"
v-model="storeCardAmount.give"
v-model="cardValueForm.giftBalance"
disabled>
<template slot="append"></template>
</el-input>
<span class="bom">赠送金额 仅自定义金额模式下可手动输入赠送活动充值赠送金额不可手动更改</span>
</div>
</div>
<div class="jine">
<div class="zeng">赠加油金</div>
<div>
<el-input placeholder="0.00"
v-model="storeCardAmount.refuelMoney"
disabled>
<template slot="append"></template>
</el-input>
<span class="bom">赠送加油金金额 仅自定义金额模式下可手动输入赠送活动充值赠送金额不可手动更改</span>
</div>
</div>
<div class="jine">
<div class="zeng">赠送积分</div>
<div>
<el-input placeholder="0"
v-model="storeCardAmount.point"
v-model="cardValueForm.points"
disabled>
<template slot="append">积分</template>
</el-input>
<span class="bom">赠送积分 仅自定义金额模式下可手动输入,活动充值赠送积分不可手动更改[需开启积分活动有效]</span>
</div>
</div>
<div class="jine">
<div class="zeng" style="width: 100px;">赠成长值</div>
<div>
<el-input placeholder="0"
v-model="cardValueForm.growthValue"
disabled>
<template slot="append">成长值</template>
</el-input>
<!-- <span class="bom">赠送加油金金额 仅自定义金额模式下可手动输入赠送活动充值赠送金额不可手动更改</span> -->
</div>
</div>
<div class="jine">
<div class="zeng">提成员工</div>
<div>
<el-input placeholder="请选择提成员工">
<template slot="append">选择员工</template>
<el-input :readonly="true" placeholder="请选择提成员工" v-model="cardValueForm.realName">
<el-button slot="append" @click="chooseStaff">选择员工</el-button>
</el-input>
<span class="bom">仅系统储值档次支持提成员工选择自定义充值金额暂不支持选择提成员工</span>
<span class="bom">仅系统储值档次支持提成员工选择自定义充值金额匹配低一档次</span>
</div>
</div>
</div>
@ -386,7 +403,7 @@
<el-input
type="textarea"
placeholder=""
v-model="rechargeDesc"
v-model="cardValueForm.remark"
maxlength="255"
show-word-limit
>
@ -399,44 +416,41 @@
<div style="display: flex;margin: 20px 0">
<div style="width: 7%">支付方式</div>
<div>
<el-radio v-model="payment" label="扫码支付" border>扫码支付</el-radio>
<el-radio v-model="payment" label="现金支付" border>现金支付</el-radio>
<el-radio v-model="payment" label="POS刷卡" border>POS刷卡</el-radio>
<el-radio v-model="payment" label="随便付" border>随便付</el-radio>
<el-radio v-model="payment" label="银行卡" border>银行卡</el-radio>
<el-radio v-for="dict in dict.type.payment_type" v-model="cardValueForm.paymentType" :key="dict.value" :label="dict.label" :value="dict.value" border @click="payMethod(dict.value)"></el-radio>
</div>
</div>
</el-col>
</el-row>
<div style="margin: 20px 0;text-align: center">
<el-button type="primary" @click="confirm">确认充值</el-button>
<el-button type="primary" @click="confirm(1)">确认充值</el-button>
<el-button @click="cancel"> </el-button>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="升数卡" name="literCard">
<el-tab-pane label="存油卡" name="literCard">
<el-row>
<el-col :span="24">
<div style="display: flex">
<div style="width: 7%;line-height: 40px">油品类型</div>
<el-radio-group v-model="tabOilType" style="margin-bottom: 30px;">
<el-radio-button label="92">92#汽油</el-radio-button>
<el-radio-button label="95">95#汽油</el-radio-button>
<el-radio-group v-model="tabOilType" style="margin-bottom: 30px;">
<el-radio-button v-for="item,index in oilTypeList" :label="item.oilType" @click.native="tabOilTypeClick(item.oilType)">{{ item.type }}{{item.oilType}}</el-radio-button>
</el-radio-group>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div style="display: flex;margin: 20px 0">
<div style="height: 50px;line-height: 50px;width: 8%">充值金额</div>
<el-col :span="1.5">
<div style="height: 50px;line-height: 50px;">充值金额</div>
</el-col>
<el-col :span="22">
<div style="display: flex;margin: 20px 5px;box-sizing: border-box;flex-wrap: wrap;">
<div class="mon2"
v-for="(item,index) in literCard" :key="index"
:class="activeKey === index ? 'select' : ''"
v-for="(item,index) in cardFuelDieselList" :key="index"
:class="activeKey === index ? 'select' : ''"
@click="recharge(index)">
<div class="top1"><span class="amount1">{{ item.liter }}</span>L</div>
<div>售价<span class="amount">{{ item.amount }}</span></div>
<div>锁价<span class="amount">{{ item.lockPrice }}</span>/</div>
<div class="top1"><span class="amount1">{{ item.incomeLitres }}</span>L</div>
<div>售价<span class="amount">{{ item.rechargeBalance }}</span></div>
<div>锁价<span class="amount">{{ item.lockupPrice }}</span>/</div>
</div>
</div>
</el-col>
@ -447,7 +461,7 @@
<div class="jine">
<div class="zeng">赠送积分</div>
<div>
<el-input placeholder="300" disabled>
<el-input placeholder="0" disabled v-model="cardFuelDieselForm.points">
<template slot="append">积分</template>
</el-input>
<span class="bom">升数卡充值不支持自定义积分,选择对应充值活动获得对应积分[需开启积分活动有效]</span>
@ -456,8 +470,8 @@
<div style="display:flex;margin-left: 20px">
<div style="line-height: 40px;width: 20%">提成员工</div>
<div>
<el-input placeholder="请选择提成员工">
<el-button slot="append" @click="chooseStaff">选择员工</el-button>
<el-input :readonly="true" placeholder="请选择提成员工" v-model="cardFuelDieselForm.realName">
<el-button slot="append" @click="chooseStaff">选择员工</el-button>
</el-input>
</div>
</div>
@ -484,37 +498,45 @@
<div style="display: flex;margin: 20px 0">
<div style="width: 7%">支付方式</div>
<div>
<el-radio v-model="payment" label="扫码支付" border>扫码支付</el-radio>
<el-radio v-model="payment" label="现金" border>现金支付</el-radio>
<el-radio v-for="dict in dict.type.payment_type" v-model="cardFuelDieselForm.paymentType" :key="dict.value" :label="dict.label" :value="dict.value" border></el-radio>
<!-- <el-radio v-model="payment" label="现金" border>现金支付</el-radio>
<el-radio v-model="payment" label="POS刷卡" border>POS刷卡</el-radio>
<el-radio v-model="payment" label="随便付" border>随便付</el-radio>
<el-radio v-model="payment" label="银行卡" border>银行卡</el-radio>
<el-radio v-model="payment" label="银行卡" border>银行卡</el-radio> -->
</div>
</div>
</el-col>
</el-row>
<div style="margin: 20px 0;text-align: center">
<el-button type="primary" @click="confirm">确认充值</el-button>
<el-button type="primary" @click="confirm(2)">确认充值</el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-tab-pane>
</el-tabs>
</template>
</el-dialog>
<!-- 选择员工-->
<el-dialog :close-on-click-modal="false" width="50%" height="50%" title="选择员工" :visible.sync="openStaff" append-to-body>
<select-staff @send-data="handleDataFromChild">
</select-staff>
</el-dialog>
<!-- 确认充值-->
<el-dialog :close-on-click-modal="false" :title="title" :visible.sync="openConfirm" width="500px" append-to-body>
<div v-if="isPay == true"
v-loading="loading">
<div style="text-align: center;font-size: 15px;font-weight: bold">付款金额</div>
<div style="text-align: center;font-size: 30px;font-weight: bold;color: red;margin: 10px 0">
300.00
<el-tag
{{ rechargeBalance }}
<!-- <el-tag
effect="dark">
汽油
</el-tag>
</el-tag> -->
</div>
<div style="text-align: center;margin-bottom: 10px">赠送金额</div>
<div>
<el-input placeholder="扫描或输入付款码、支持微信、支付宝、云闪付">
<el-input v-model="authCode" placeholder="扫描或输入付款码、支持微信、支付宝、云闪付">
<i
slot="suffix">
<svg t="1697791915471" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1479" width="32" height="32"><path d="M149.333333 170.858667A21.546667 21.546667 0 0 1 170.858667 149.333333H384V106.666667H170.858667A64.213333 64.213333 0 0 0 106.666667 170.858667V384h42.666666V170.858667zM170.858667 874.666667A21.546667 21.546667 0 0 1 149.333333 853.141333V640H106.666667v213.141333A64.213333 64.213333 0 0 0 170.858667 917.333333H384v-42.666666H170.858667zM853.12 149.333333A21.546667 21.546667 0 0 1 874.666667 170.858667V384h42.666666V170.858667A64.213333 64.213333 0 0 0 853.141333 106.666667H640v42.666666h213.141333zM874.666667 853.141333A21.546667 21.546667 0 0 1 853.141333 874.666667H640v42.666666h213.141333A64.213333 64.213333 0 0 0 917.333333 853.141333V640h-42.666666v213.141333zM106.666667 490.666667h810.666666v42.666666H106.666667v-42.666666z" fill="#3D3D3D" p-id="1480"></path></svg>
@ -532,8 +554,27 @@
<el-divider></el-divider>
<div style="display: flex;justify-content: space-around">
<el-button @click="cancelCollection">取消收款</el-button>
<el-button type="primary">确定收款</el-button>
<el-button type="primary" @click="collection">确定收款</el-button>
</div>
</div>
<div v-else>
<div v-if="isPaySuccess">
<el-result icon="success" title="收款成功">
<template slot="extra">
<el-button type="primary" @click="handClose"> </el-button>
</template>
</el-result>
</div>
<div v-else>
<el-result icon="error" title="支付失败,请重新支付">
<template slot="extra">
<el-button type="primary" @click="handClose"> </el-button>
</template>
</el-result>
</div>
</div>
</el-dialog>
<!-- 更换手机号对话框-->
@ -773,27 +814,64 @@
import {getUser, updateUser} from "@/api/staff/user/user";
import {ljStoreInfo} from "@/api/staff/store";
import {getUserGrade} from "@/api/staff/user/usergrade";
import {getList} from "@/api/EventMarketing/oilBlock";
import {getCountOilTypeApi,getCardValueListApi} from "@/api/EventMarketing/cardSet";
import {getSysConfig} from "@/api/staff/user/sysconfig";
import item from "../../layout/components/Sidebar/Item.vue";
import SelectStaff from "@/components/local/selectStaff";
export default {
components: {SelectStaff},
computed: {
item() {
return item
}
},
dicts: ['official','zhzt','zcrzdj'],
dicts: ['official','zhzt','zcrzdj','payment_type'],
data(){
return{
//
storeCard:[
{recharge:300,give:3,refuelMoney:0,point:0},
{recharge:500,give:5},
{recharge:1000,give:10},
],
storeCardAmount:{
recharge:'',give:0,refuelMoney:0,point:0
flag:null,
//
cardValueList:[],
cardValueForm: {
cardValueId:'', // id
mtStaffId: '', //
realName: '',
staffMobile: '',
amount:'', //
bidBalance:'', //
rechargeBalance:'', //
giftBalance:'',//
points:'', //
growthValue:'', //
remark:'',
paymentType:'' //
},
//
cardFuelDieselList:[],
sourceCardFuelDieselList:[],
cardFuelDieselForm: {
mtStaffId: '',
realName: '',
staffMobile: '',
points:'',
remark:'',
rechargeBalance:'' //
},
authCode:'', //
rechargeBalance:0,
oilTypeList: {},
isPay:true,
isPaySuccess:false,
//
literCard:[
{liter:73.75,amount:500,lockPrice:6.78,point:50},
@ -826,6 +904,7 @@ export default {
openConfig:false,
openLevel:false,
openConfirm:false,
openStaff:false,
growthValue:'whole',
cardList:'notUse',
tabPosition: 'giftCard',
@ -865,6 +944,11 @@ export default {
}
}
},
mounted() {
if (this.oilTypeList.length > 0) {
this.selectOilType(this.oilTypeList[0].oilType);
}
},
created() {
this.id = this.$route.query.id;
this.getUserInfo();
@ -873,7 +957,7 @@ export default {
methods: {
//
chooseStaff(){
this.openStaff = true
},
//
replaceMobile(){
@ -905,16 +989,115 @@ export default {
this.openLevel = true;
this.title = '固定等级(原专车认证)'
},
//
getCardValueList() {
let quy = {
pageNo: 1,
pageSize: 10000,
isonline: 0
}
getCardValueListApi(quy).then(res=>{
this.cardValueList = res.data.records;
this.cardValueList.sort((a, b) => a.rechargeBalance - b.rechargeBalance);
})
},
valueAmoutChange(data) {
this.cardValueForm.rechargeBalance = data
if (this.cardValueList.length > 0){
// const changeList = this.cardValueList
this.cardValueList.forEach(change=>{
if (data >= change.rechargeBalance) {
this.cardValueForm.points = change.points
this.cardValueForm.bidBalance = change.bidBalance
this.cardValueForm.giftBalance = change.giftBalance
this.cardValueForm.growthValue = change.growthValue
}
})
}
console.log("data",data)
},
//
getCardFuelDieselList() {
let quy = {
pageNo: 1,
pageSize: 10000,
activeStatus: 1,
status:1,
activityProgress:1
}
getList(quy).then(res=> {
this.sourceCardFuelDieselList = res.data.records
})
},
handleDataFromChild(data) {
this.openStaff = false
this.cardFuelDieselForm= {
mtStaffId: data.mtStaffId,
realName: data.realName,
staffMobile: data.staffMobile,
},
console.log('Received data in parent:', data);
},
//
getCountOilType() {
getCountOilTypeApi().then(res => {
this.oilTypeList = res.data
if (this.oilTypeList.length > 0) {
//
this.tabOilType = this.oilTypeList[0].oilType
this.selectOilType(this.oilTypeList[0].oilType);
}
})
},
//
tabOilTypeClick(data){
this.cardFuelDieselList = this.sourceCardFuelDieselList.filter(item => {
return item.oilType === data;
});
if (this.cardFuelDieselList.length > 0) {
this.recharge(0)
}
},
selectOilType(oilType) {
this.tabOilType = oilType;
this.tabOilTypeClick(oilType);
},
//
//
userRecharge(){
this.getCardFuelDieselList()
this.getCardValueList()
this.getCountOilType()
this.openRecharge = true;
this.title = '会员充值'
//
},
//
confirm(){
confirm(flag){
let userForm = this.form
// form
console.log("formformformform",this.form);
this.flag = flag
if (flag ===1) {
this.rechargeBalance = this.cardValueForm.rechargeBalance
}else if(flag ===2) {
this.rechargeBalance = this.cardFuelDieselForm.rechargeBalance
}
this.isPay = true
this.openConfirm = true;
this.title = this.payment
},
//
payMethod(payType,flag){
// this.map.payType = payType;
},
//
getInformation(){
getSysConfig('second_card').then(response => {
@ -946,10 +1129,77 @@ export default {
this.grade = response.data;
});
},
//
recharge(index){
//
rechargeCard(index,item){
//
this.activeKey = index;
if (item === -1) {
this.cardValueForm.points = 0
this.cardValueForm.giftBalance = 0
this.cardValueForm.growthValue = 0
this.cardValueForm.bidBalance = 0
// this.cardValueForm.amount = 0
}else {
let file={}
//
file = this.cardValueList[index]
this.rechargeBalance = file.rechargeBalance
this.cardValueForm.rechargeBalance = file.rechargeBalance
this.cardValueForm.bidBalance = file.bidBalance
this.cardValueForm.points = file.points
this.cardValueForm.giftBalance = file.giftBalance
this.cardValueForm.growthValue = file.growthValue
this.cardValueForm.amount = null
}
},
//
recharge(index,item){
this.activeKey = index;
let file={}
//
file = this.cardFuelDieselList[index]
this.cardFuelDieselForm.points = file.points
this.cardFuelDieselForm.rechargeBalance = file.rechargeBalance
this.rechargeBalance = file.rechargeBalance
console.log("this.cardFuelDieselList[index]",this.cardFuelDieselList[index])
},
async collection(){
if (this.flag === 1) {
/**
* 插入订单表返回订单信息id 并调用支付接口
*
*
*
* 查询支付是否完成支付完成则修改
*
*/
//
// id
this.cardValueForm.mtUserId = userForm.id
this.cardValueForm.name = userForm.name
this.cardValueForm.mobile = userForm.mobile
//
this.cardValueForm.authCode = this.authCode
await getPrepaidCardTopUpApi(this.cardValueForm).then(res=> {
console.log("返回数据",res)
});
}else if (this.flag === 2){
}
console.log("88888888888888888888",this.flag)
},
//
submitForm: function() {
this.$refs["form"].validate(valid => {
@ -985,6 +1235,7 @@ export default {
},
handleClick(tab, event) {
// console.log(tab, event);
this.rechargeBalance = 0
},
handleChange(value) {
// console.log(value);
@ -1032,6 +1283,7 @@ export default {
border-radius: 5px;
text-align: center;
margin: 0 10px;
margin-bottom: 10px;
}
.select {
position: relative;
@ -1093,5 +1345,6 @@ export default {
border-radius: 5px;
text-align: center;
margin: 0 10px;
margin-bottom: 20px;
}
</style>