This commit is contained in:
DESKTOP-369JRHT\12997 2024-10-24 14:20:20 +08:00
parent d18fa885f8
commit a34eca0af1
6 changed files with 203 additions and 160 deletions

View File

@ -189,7 +189,7 @@
<span v-else="">余额</span>
</template>
</el-table-column>
<el-table-column prop="status" align="center" label="支付状态">
<el-table-column prop="status" align="center" label="订单状态">
<template slot-scope="scope">
<el-tag v-if="scope.row.status == 'unpaid'">未支付</el-tag>
<el-tag type="success" v-else-if="scope.row.status == 'paid'">已支付</el-tag>
@ -227,7 +227,7 @@
<el-descriptions-item label="所属模块">{{ordersInfo.amount}}</el-descriptions-item>
<el-descriptions-item label="支付方式">{{ordersInfo.payType}}</el-descriptions-item>
<el-descriptions-item label="付款用户">{{ordersInfo.userName}}</el-descriptions-item>
<el-descriptions-item label="支付状态">{{ordersInfo.status}}</el-descriptions-item>
<el-descriptions-item label="订单状态">{{ordersInfo.status}}</el-descriptions-item>
<el-descriptions-item label="备注">{{ordersInfo.content}}</el-descriptions-item>
<!-- <el-descriptions-item label="备注">-->
<!-- <el-tag size="small">学校</el-tag>-->

View File

@ -124,7 +124,6 @@
<el-tooltip class="item" effect="dark" content="999999/999999999999" placement="top-start">
<div class="size-bole" style="color:#00CAFF;">{{ orderStatistics.alipay?orderStatistics.alipay:0 }}/0</div>
</el-tooltip>
<div class="size-hui">
<div class="dian" style="background: #00CAFF"></div>
<div class="nei">支付宝收款/笔数</div>
@ -140,6 +139,7 @@
<div class="nei">云闪付收款/笔数</div>
</div>
</div>
<div class="box">
<el-tooltip class="item" effect="dark" content="999999/999999999999" placement="top-start">
<div class="size-bole" style="color:#FF7E00;" >{{orderStatistics.balanceCount?orderStatistics.balanceCount:0}}/0</div>
@ -234,7 +234,7 @@
<span v-else="">余额</span>
</template>
</el-table-column>
<el-table-column prop="status" align="center" label="支付状态">
<el-table-column prop="status" align="center" label="订单状态">
<template slot-scope="scope">
<el-tag v-if="scope.row.status == 'unpaid'">未支付</el-tag>
<el-tag type="success" v-else-if="scope.row.status == 'paid'">已支付</el-tag>
@ -270,7 +270,7 @@
<el-descriptions-item label="所属模块">{{ordersInfo.amount}}</el-descriptions-item>
<el-descriptions-item label="支付方式">{{ordersInfo.payType}}</el-descriptions-item>
<el-descriptions-item label="付款用户">{{ordersInfo.userName}}</el-descriptions-item>
<el-descriptions-item label="支付状态">{{ordersInfo.status}}</el-descriptions-item>
<el-descriptions-item label="订单状态">{{ordersInfo.status}}</el-descriptions-item>
<el-descriptions-item label="备注">{{ordersInfo.content}}</el-descriptions-item>
</el-descriptions>
<el-descriptions class="margin-top" title="金额详情" :column="3" border>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -15,7 +15,7 @@
v-model="queryParams.name"
placeholder="请输入会员昵称"
clearable
style="width: 180px;"
style="width: 210px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
@ -24,7 +24,7 @@
v-model="queryParams.userNo"
placeholder="请输入会员号"
clearable
style="width: 180px;"
style="width: 210px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
@ -32,7 +32,7 @@
<el-select
v-model="queryParams.gradeId"
clearable
style="width: 180px"
style="width: 210px"
placeholder="请选择会员等级"
>
<el-option v-for="grade in userGradeList" :key="grade.id+''" :label="grade.name" :value="grade.id+''"/>
@ -42,7 +42,7 @@
<el-select
v-model="queryParams.gradeId"
clearable
style="width: 180px"
style="width: 210px"
placeholder="请选择会员标签"
>
<el-option v-for="grade in userGradeList" :key="grade.id+''" :label="grade.name" :value="grade.id+''"/>
@ -53,26 +53,26 @@
v-model="queryParams.name"
placeholder="请输入车牌号"
clearable
style="width: 180px;"
style="width: 210px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="" prop="gradeId">
<el-form-item label="" prop="gradeId">
<el-select
v-model="queryParams.gradeId"
clearable
style="width: 180px"
style="width: 210px"
placeholder="请选择性别"
>
<el-option v-for="grade in userGradeList" :key="grade.id+''" :label="grade.name" :value="grade.id+''"/>
</el-select>
</el-form-item>
<el-form-item label="" prop="mobile">
<el-form-item label="" style="margin-right: 0px" prop="mobile">
<el-input
v-model="queryParams.mobile"
placeholder="请输入手机号"
clearable
style="width: 180px;"
style="width: 210px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
@ -80,7 +80,7 @@
<el-select
v-model="queryParams.userStatus"
clearable
style="width: 180px"
style="width: 210px"
placeholder="请选择状态"
>
<el-option v-for="grade in userStatusList"
@ -282,14 +282,14 @@
<div>
<el-form :model="queryParams2" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="" prop="activityName" style="width: 180px">
<el-form-item label="" prop="activityName" style="width: 210px">
<el-input
v-model="queryParams2.activityName"
placeholder="请输入群发名称"
clearable
@keyup.enter.native="handleQuery1"></el-input>
</el-form-item>
<el-form-item label="" prop="groupName" style="width: 180px">
<el-form-item label="" prop="groupName" style="width: 210px">
<el-select v-model="queryParams2.status" placeholder="请选择">
<el-option label="已发送" value="0"></el-option>
<el-option label="发送失败" value="1"></el-option>
@ -310,7 +310,7 @@
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item style="float: right">
<el-form-item style="float: right;margin-right: 0px">
<el-button type="primary" icon="el-icon-search" @click="handleQuery1">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery1">重置</el-button>
</el-form-item>
@ -637,27 +637,59 @@
</el-dialog>
<!-- 批量录入会员信息-->
<el-dialog :title="title" :visible.sync="openUpload" append-to-body>
<div style="height: 60px;line-height: 30px">
<div> 第一步: 下载示例模板,按照模板填写会员数据,手机号为必填项</div>
<a style="margin-left: 50px;color: #00afff"
href="/fuint-application/excel/export"> 会员示例模板.xlsx </a>
</div>
<div style="margin: 20px 0">
<div>第二步: 选择用户数据上传并导入会员</div>
<el-upload
class="upload-demo"
v-loading="uploading"
action="/fuint-application/excel/import"
:headers="headers"
:limit="1"
:on-change="handleChange"
style="margin-left: 50px"
:file-list="fileList">
<el-button size="small" type="success" icon="el-icon-upload">点击上传</el-button>
<div slot="tip">只能上传xls/xlsx文件单次最大5000行会员数据且不超过1M 超出请分文件处理</div>
</el-upload>
<!-- <el-button type="primary" round @click="importUser">主要按钮</el-button>-->
<el-dialog :title="title" width="500px" :visible.sync="openUpload" append-to-body>
<el-form ref="form1" :model="form1" :rules="rules1" label-width="90px">
<el-row>
<el-col :span="24">
<el-form-item label="会员等级" prop="messageId" v-if="title != '修改会员'">
<el-select v-model="form1.messageId" placeholder="请选择短信模板名称" style="width: 100%">
<el-option v-for="(item,index) in messageList" :key="index" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="会员标签" prop="" v-if="title != '修改会员'">
<el-select v-model="form1.messageId" placeholder="请选择短信模板名称" style="width: 100%">
<el-option v-for="(item,index) in messageList" :key="index" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="会员导入">
<div style="display: flex">
<el-upload
class="avatar-uploader"
style="border-radius: 8px;"
action="https://jsonplaceholder.typicode.com/posts/"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<div v-else>
<img src="./imgs/imgbk.png" style="width: 100px;height: 100px">
</div>
</el-upload>
<div style="height: 15px;margin-top: 72px;margin-left: 10px">
<el-link type="primary">导入下载模版</el-link>
</div>
</div>
<div style="width: 100%;font-size: 12px;color: #999999;line-height: 20px;">
批量导入会员单次最大支持5000个会员手机号认证请确保用户手机号
未注册过油站会员否则无法添加会员信息
</div>
</el-form-item>
</el-form>
<div style=" width: 100%; display: flex;align-items: center; justify-content: center">
<el-button @click="openUpload = fasle"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button>
</div>
</el-dialog>
@ -714,6 +746,7 @@ export default {
data() {
return {
tabindex: 0,
imageUrl: '',
tabs: [
{
name: "会员信息",
@ -875,6 +908,21 @@ export default {
this.getMessageList()
},
methods: {
handleAvatarSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
},
beforeAvatarUpload(file) {
const isJPG = file.type === 'image/jpeg';
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG 格式!');
}
if (!isLt2M) {
this.$message.error('上传头像图片大小不能超过 2MB!');
}
return isJPG && isLt2M;
},
getMessageList() {
getListApi({page: 1, pageSize: 10000, status: '1'}).then(res => {
this.messageList = res.data.records;
@ -1255,7 +1303,9 @@ export default {
margin: 0;
padding: 0;
}
.el-form--inline .el-form-item {
margin-right: 26px;
}
.sta {
height: 100px;
margin-top: 10px;
@ -1391,7 +1441,7 @@ export default {
}
.cot-box {
width: 98%;
width: 99%;
border-radius: 8px;
background: #fff;
box-sizing: border-box;
@ -1423,4 +1473,27 @@ export default {
.hy_{
background: #f9f9f9;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</style>

View File

@ -239,9 +239,12 @@
<div class="cot-box" v-if="tabindex==2">
<div>
<el-form :model="queryParams2" ref="queryForm" size="small" :inline="true" label-width="120px">
<el-form-item label="" prop="groupName" style="width: 180px">
<el-input placeholder="请输入活动名称" v-model="queryParams.tableName"/>
</el-form-item>
<el-form-item label="" prop="groupName" style="width: 180px">
<el-select v-model="queryParams2.status" placeholder="请选择">
<el-select v-model="queryParams2.status" placeholder="请选择状态">
<el-option label="已发送" value="0"></el-option>
<el-option label="发送失败" value="1"></el-option>
</el-select>
@ -366,32 +369,37 @@
<!-- 添加或修改对话框 -->
<el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="35%" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="55%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<div class="flax_box">
<el-form-item label="分组名称" prop="groupName">
<el-input style="width: 424px;" v-model="form.groupName" placeholder="请输入分组名称" maxlength="30"/>
</el-form-item>
<el-form-item label="分组名称" prop="groupName">
<el-input v-model="form.groupName" placeholder="请输入分组名称" maxlength="30"/>
</el-form-item>
<el-form-item label="会员等级" prop="gradeId">
<el-select v-model="form.gradeId" placeholder="请选择会员等级" style="width: 424px">
<el-option v-for="(item,index) in userGradeList" :key="index" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</div>
<div class="flax_box">
<el-form-item label="会员标签" prop="userLabelId">
<el-select v-model="form.userLabelId" multiple placeholder="请选择会员标签(多选)" style="width: 424px">
<el-option v-for="(item,index) in userLabelList" :key="index" :label="item.labelName"
:value="item.id+''"></el-option>
</el-select>
</el-form-item>
<el-form-item label="会员性别" prop="userSex">
<el-checkbox-group v-model="form.userSex">
<el-checkbox type="name" label="1"></el-checkbox>
<el-checkbox type="name" label="0"></el-checkbox>
<el-checkbox type="name" label="2">不详</el-checkbox>
</el-checkbox-group>
</el-form-item>
</div>
<el-form-item label="会员等级" prop="gradeId">
<el-select v-model="form.gradeId" placeholder="请选择会员等级" style="width: 100%">
<el-option v-for="(item,index) in userGradeList" :key="index" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="会员标签" prop="userLabelId">
<el-select v-model="form.userLabelId" multiple placeholder="请选择会员标签(多选)" style="width: 100%">
<el-option v-for="(item,index) in userLabelList" :key="index" :label="item.labelName"
:value="item.id+''"></el-option>
</el-select>
</el-form-item>
<el-form-item label="会员性别" prop="userSex">
<el-checkbox-group v-model="form.userSex">
<el-checkbox type="name" label="1"></el-checkbox>
<el-checkbox type="name" label="0"></el-checkbox>
<el-checkbox type="name" label="2">不详</el-checkbox>
</el-checkbox-group>
</el-form-item>
<div class="flax_box">
<el-form-item label="会员年龄" prop="paymentType">
<div class="d-s">
<el-input placeholder="请输入年龄" v-model="form.userAgeFront" style="width: 190px"></el-input>
@ -406,6 +414,8 @@
<el-input placeholder="请输入余额" v-model="form.userBalanceAfter" style="width: 190px"></el-input>
</div>
</el-form-item>
</div>
<div class="flax_box">
<el-form-item label="会员积分" prop="paymentType">
<div class="d-s">
<el-input placeholder="请输入积分" v-model="form.userPointFront" style="width: 190px"></el-input>
@ -420,43 +430,43 @@
<el-input placeholder="请输入充值次数" v-model="form.rechargeNumAfter" style="width: 190px"></el-input>
</div>
</el-form-item>
<el-form-item label="充值金额" prop="paymentType">
<div class="d-s">
<el-input placeholder="请输入充值金额" v-model="form.rechargeAmountFront" style="width: 190px"></el-input>
<div style="margin: 0 15px"></div>
<el-input placeholder="请输入充值金额" v-model="form.rechargeAmountAfter" style="width: 190px"></el-input>
</div>
</el-form-item>
<el-form-item label="消费周期" prop="consumeCycle">
<div class="d-s">
<div class="icon-type" v-for="(item,index) in paymentTypelist" :key="index"
:class="{ 'acvtive' : index === tindex }" @click="Typeindex(index)">
<img src="../../assets/images/wx.png" style="width: 20px;height: 20px" v-if="index != tindex">
<img src="../../assets/images/xz.png" style="width: 20px;height: 20px" v-if="index == tindex">
{{ item }}
</div>
<div class="flax_box">
<el-form-item label="充值金额" prop="paymentType">
<div class="d-s">
<el-input placeholder="请输入充值金额" v-model="form.rechargeAmountFront" style="width: 190px"></el-input>
<div style="margin: 0 15px"></div>
<el-input placeholder="请输入充值金额" v-model="form.rechargeAmountAfter" style="width: 190px"></el-input>
</div>
</div>
</el-form-item>
<el-form-item label="消费油品" prop="consumeOil">
<el-select v-model="form.consumeOil" multiple placeholder="请选择油品(多选)" style="width: 100%">
<el-option v-for="(item,index) in oilNumberList" :key="index"
:label="getOilNamess(oilNameList,item.oilName)" :value="item.oilName"></el-option>
</el-select>
</el-form-item>
<el-form-item label="消费次数" prop="paymentType">
<div class="d-s">
<el-input placeholder="请输入消费次数" v-model="form.consumeNumFront" style="width: 190px"></el-input>
<div style="margin: 0 15px"></div>
<el-input placeholder="请输入消费次数" v-model="form.consumeNumAfter" style="width: 190px"></el-input>
</div>
</el-form-item>
<el-form-item label="消费金额" prop="paymentType">
<div class="d-s">
<el-input placeholder="请输入消费金额" v-model="form.consumeAmountFront" style="width: 190px"></el-input>
<div style="margin: 0 15px"></div>
<el-input placeholder="请输入消费金额" v-model="form.consumeAmountAfter" style="width: 190px"></el-input>
</div>
</el-form-item>
</el-form-item>
<el-form-item label="消费次数" prop="paymentType">
<div class="d-s">
<el-input placeholder="请输入消费次数" v-model="form.consumeNumFront" style="width: 190px"></el-input>
<div style="margin: 0 15px"></div>
<el-input placeholder="请输入消费次数" v-model="form.consumeNumAfter" style="width: 190px"></el-input>
</div>
</el-form-item>
</div>
<div class="flax_box">
<el-form-item label="消费油品" prop="consumeOil">
<el-select style="width: 424px" v-model="form.consumeOil" multiple placeholder="请选择油品(多选)" >
<el-option v-for="(item,index) in oilNumberList" :key="index"
:label="getOilNamess(oilNameList,item.oilName)" :value="item.oilName"></el-option>
</el-select>
</el-form-item>
<el-form-item label="消费金额" prop="paymentType">
<div class="d-s">
<el-input placeholder="请输入消费金额" v-model="form.consumeAmountFront" style="width: 190px"></el-input>
<div style="margin: 0 15px"></div>
<el-input placeholder="请输入消费金额" v-model="form.consumeAmountAfter" style="width: 190px"></el-input>
</div>
</el-form-item>
</div>
<div class="flax_box">
<el-form-item label="平均消费" prop="paymentType">
<div class="d-s">
<el-input placeholder="请输入平均消费金额" v-model="form.averageConsumeFront"
@ -476,7 +486,17 @@
inactive-color="#ff4949">
</el-switch>
</el-form-item>
</div>
<el-form-item label="消费周期" prop="consumeCycle">
<div class="d-s">
<div class="icon-type" v-for="(item,index) in paymentTypelist" :key="index"
:class="{ 'acvtive' : index === tindex }" @click="Typeindex(index)">
<img src="../../assets/images/wx.png" style="width: 20px;height: 20px" v-if="index != tindex">
<img src="../../assets/images/xz.png" style="width: 20px;height: 20px" v-if="index == tindex">
{{ item }}
</div>
</div>
</el-form-item>
<el-form-item label="备注">
<el-input v-model="form.remark" placeholder="请输入备注" type="textarea"/>
</el-form-item>
@ -515,7 +535,7 @@
type="date"
placeholder="开始日期">
</el-date-picker>
<span style="margin: 0px 15px"></span>
<el-date-picker
v-model="form1.activityTimeAfter"
style="width: 160px"
@ -584,9 +604,9 @@
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="会员数量">
{{ form1.sendUserNum }}
</el-form-item>
<!-- <el-form-item label="会员数量">-->
<!-- {{ form1.sendUserNum }}-->
<!-- </el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
@ -1150,7 +1170,10 @@ export default {
margin-right: 20px;
cursor: pointer;
}
.flax_box{
display: flex;
align-items: center;
}
.acvtive {
color: #FF770F !important;
}

View File

@ -283,60 +283,7 @@ export default {
overflow: auto;
}
.wrap-boxs {
width: 100%;
display: flex;
align-items: center;
margin-bottom: 15px;
}
.k_ {
width: 250px;
height: 75px;
margin-right: 20px;
box-sizing: border-box;
padding: 15px 10px;
padding-top: 5px;
color: #333333;
}
.size_ {
font-weight: 400;
font-size: 14px;
color: #333333;
margin-bottom: 20px;
}
.title_ {
font-weight: 600;
font-size: 24px;
color: #333333;
}
.d-s {
display: flex;
align-items: center;
}
.anniu-h {
width: 80px;
height: 26px;
background: #FAFAFA;
border-radius: 4px 4px 4px 4px;
border: 1px solid #DDDDDD;
display: flex;
align-items: center;
justify-content: center;
color: #777777;
margin-right: 20px;
}
.anniu-act {
background: #FF9655 !important;
border: 1px solid #FF9655 !important;
color: #fff;
}
.wit_box{
background: #fff;
box-sizing: border-box;