Commit df224199 authored by lixy's avatar lixy

会员订单统计、会员订单管理

parent 6ef7e744
......@@ -4,6 +4,28 @@ export function page(query) {
return fetch({
url: '/api/order/baseOrder/getOrderList',
method: 'get',
params:query
params: query
});
}
\ No newline at end of file
}
/**
* 会员等级
*/
export function memberLevels(query) {
return fetch({
url: '/api/admin/member/app/unauth/levels',
method: 'get',
params: query
});
}
/**
* 会员录入
*/
export function createMemberOrder(query) {
return fetch({
url: '/api/order/orderMember/baseOrder/createOrder',
method: 'post',
data: query
});
}
<template>
<el-dialog
title="新增订单"
:visible.sync="memberDialogVisible"
@close="closePop"
:modal="false"
class="flex-aic vehicle-dialog"
>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="140px"
>
<el-row>
<el-col :span="12">
<el-form-item label="用户手机号" prop="phone">
<el-input v-model="form.phone" placeholder="输入用户手机号" ></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="会员等级" prop="memberIndex">
<el-select class="filter-item" v-model="form.memberIndex" placeholder="请选择会员类型" @change="changeLevel">
<el-option v-for="(item, index) in memeberList" :key="item.level" :label="item.name" :value="index"> </el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="免费天数">
<el-input v-model="form.freeDay" placeholder="输入免费天数" type="number" readonly></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="实付金额" prop="orderAmount">
<el-input v-model="form.orderAmount" placeholder="输入实付金额" type="number"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="下单时间" prop="payTime">
<el-date-picker
v-model="form.payTime"
:picker-options="pickerOptions"
type="datetime"
value-format="timestamp"
placeholder="选择下单时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSubmit" v-if="!isClick">确 定</el-button>
<el-button type="primary" style="opacity: 0.6;" v-if="isClick">确 定</el-button>
<el-button @click="closePop">关 闭</el-button>
</div>
</el-dialog>
</template>
<script type="javascript">
import { memberLevels, createMemberOrder } from 'api/order/memeber'
export default {
name: 'addMemberModal',
data() {
return {
memberDialogVisible:false,
form: {
memberIndex: undefined, // 会员等级index
memberLevel: undefined, // 会员等级
freeDay: undefined, // 当前会员等级免费天数
phone: undefined, // 用户手机号
orderAmount: undefined, // 实付金额
payTime: undefined // 下单时间
},
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
}
},
isClick: false, // 是否已点击,防二次触发
selectedMember:{}, // 当前已选会员等级
rules: {
phone: {
required: true, message:'请输入用户手机号',trigger: 'blur'
},
memberIndex: {
required: true, message:'请选择会员等级',trigger: 'change'
},
payTime: {
required: true, message:'请选择下单时间',trigger: 'change'
},
orderAmount: { required: true, message: '请填写正确的实付金额,最多保留2位小数', trigger: 'blur',
transform(value) {
if(value !== null && value !== '' && value !== undefined) {
if (String(value).trim() === '' || Number(value) <= 0) {
return false
} else if (!/^\d+(\.\d{0,2})?$/.test(value)) {
return false
} else{
return parseFloat(value).toFixed(2)
}
} else {
return null
}
}
}
},
memeberList: [], // 会员类型列表
}
},
created() {
this.getAllMemeberList() // 获取全部会员等级
},
mounted() {
this.memberDialogVisible = true
},
methods: {
/**
* 获取全部会员列表
*/
getAllMemeberList(){
memberLevels().then(res => {
this.memeberList = res
})
},
closePop(){
this.$emit('memberEvent', false)
},
/**
* 会员等级变化
*/
changeLevel(index){
this.selectedMember = this.memeberList[index]
this.form.memberLevel = this.selectedMember.level
this.form.freeDay = this.selectedMember.number
},
/**
* 确定
*/
handleSubmit() {
let _this = this
const set = this.$refs;
if (this.isClick) {
return;
}
this.isClick = true;
setTimeout(function(){
_this.isClick = false
}, 2000)
set["form"].validate((valid) => {
let params = {
phone: _this.form.phone,
payTime: _this.form.payTime,
orderAmount: _this.form.orderAmount,
memberLevel: _this.selectedMember.level,
memberLevelId: _this.selectedMember.id
}
if (valid) {
createMemberOrder(params).then((response) => {
if (response.status == 200) {
this.$notify({
title: "操作成功",
message: "添加成功",
type: "success",
duration: 2000,
});
setTimeout(function(){
_this.$emit("memberEvent", true);
}, 1000)
} else {
this.isClick = false;
this.$notify({
title: "失败",
message: response.message,
type: "error",
duration: 2000,
});
}
});
}
})
}
}
}
</script>
This diff is collapsed.
......@@ -4,7 +4,7 @@
<div class="filter-container">
<el-form ref="queryForm" :model="listQuery" label-width="100px">
<el-row>
<el-col :span="6">
<el-col :span="8">
<el-form-item label="统计时间:">
<el-date-picker
v-model="listQuery.time"
......@@ -38,36 +38,38 @@
<span>{{scope.row.timeSlot}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="普通会员购买量">
<template slot-scope="scope">
<span>{{scope.row.pNumber}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="支付金额(普通会员)">
<template slot-scope="scope">
<span>{{scope.row.pAmount}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="黄金会员购买量">
<template slot-scope="scope">
<span>{{scope.row.goldNumber}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="支付金额(黄金会员)">
<template slot-scope="scope">
<span>{{scope.row.goldAmount}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="钻石会员购买量">
<template slot-scope="scope">
<span>{{scope.row.hNumber}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="支付金额(钻石会员)">
<el-table-column align="center" :label="item.name" v-for="item in tableHead" :key="item.name">
<template slot-scope="scope">
<span>{{scope.row.hAmount}}</span>
<span v-for="(iitem, iindex) in scope.row.members" :key="iindex" v-if="iitem.level == item.level && item.type=='number'">{{iitem.number}}</span>
<span v-for="(iitem, iindex) in scope.row.members" :key="iindex" v-if="iitem.level == item.level && item.type=='amount'">{{iitem.amount}}</span>
</template>
</el-table-column>
<!-- <el-table-column align="center" label="支付金额(普通会员)">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{scope.row.pAmount}}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column align="center" label="黄金会员购买量">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{scope.row.goldNumber}}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column align="center" label="支付金额(黄金会员)">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{scope.row.goldAmount}}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column align="center" label="钻石会员购买量">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{scope.row.hNumber}}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column align="center" label="支付金额(钻石会员)">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{scope.row.hAmount}}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column align="center" label="总支付金额">
<template slot-scope="scope">
<span>{{scope.row.totalPayment}}</span>
......@@ -88,21 +90,22 @@
</div>
</div>
</template>
<script>
<script type="javascript">
import { orderStatistics, downloadExcel } from 'api/order/rentVehicle'
import { memberLevels } from 'api/order/memeber'
export default {
created() {
this.getList()
this.getAllMemeberList() // 获取全部会员等级
},
data() {
return {
loading: false,
total: null,
list: [],
tableHead:[], //动态表头
scrollTop: '',
// 统计时间筛选
listQuery: {
time: 'null',
type: '1',
startTime: null,
endTime: null,
......@@ -129,6 +132,28 @@ export default {
}
},
methods: {
/**
* 获取全部会员列表
*/
getAllMemeberList(){
memberLevels().then(res => {
let arr = []
res.map(function(item){
arr.push({
name: item.name + '购买量',
level: item.level,
type: 'number'
})
arr.push({
name: '支付金额(' + item.name + ")",
level: item.level,
type:'amount'
})
})
this.tableHead = arr
this.getList()
})
},
//统计时间筛选
changeTime() {
!!this.listQuery.time[0]
......@@ -177,37 +202,66 @@ export default {
this.listQuery.page = val
this.getList()
},
// 数组去重
repeat(json){
try{
let newJson = [];
for(var i = 0;i < json.length; i++){
let flag = true;
for(var j = 0; j < newJson.length; j++){
if(newJson[j].tname == json[i].tname) {
flag = false;
}
}
if(flag){ //判断是否重复
newJson.push(json[i]);
}
}
return newJson
} catch(err){
console.log(err)
}
},
//列表
getList() {
let _this = this
let params = {}
this.loading = true
let tableHead = this.tableHead
orderStatistics(this.listQuery).then(data => {
if (data.status == 200) {
data.data.list.forEach(element => {
for (let i in element.members) {
if (element.members[i].level == 1) {
element.pAmount = element.members[i].amount
element.plevel = element.members[i].level
element.pMemberName =
element.members[i].memberName
element.pNumber = element.members[i].number
} else if (element.members[i].level == 2) {
element.goldAmount = element.members[i].amount
element.goldlevel = element.members[i].level
element.goldMemberName =
element.members[i].memberName
element.goldNumber = element.members[i].number
} else if (element.members[i].level == 3) {
element.hAmount = element.members[i].amount
element.hlevel = element.members[i].level
element.hMemberName =
element.members[i].memberName
element.hNumber = element.members[i].number
}
}
})
// tableHead.map(function(item){
// data.data.list.forEach(element => {
// let listArr = []
// element.members.map(function(iitem){
// // if(item.level == iitem.level){
// listArr.push({level: iitem.level, tnumber: iitem.number, tamount: iitem.amount})
// // }
// })
// element.listArr = listArr
// })
// })
// debugger
// data.data.list.forEach(element => {
// tableHead.map(function(item){
// let p = {tname: item.name, tvalue: 0}
// element.members.map(function(iitem){
// if(item.level == iitem.level){
// p = {tname: item.name, tvalue: item.type == 'number'?iitem.number : iitem.amount}
// }
// })
// listArr.push(p)
// })
// element.listArr = _this.repeat(listArr)
// })
this.total = data.data.total
// console.log(listArr)
console.log(data.data.list)
this.list = data.data.list
// this.listArr = listArr
}
setTimeout(() => {
this.loading = false
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment