This commit is contained in:
DESKTOP-369JRHT\12997 2023-11-08 18:08:54 +08:00
parent 3c1a0c7ca9
commit 9e2b9068a2
12 changed files with 596 additions and 110 deletions

View File

@ -766,9 +766,6 @@ export default {
}, },
submitForm: function() { submitForm: function() {
console.log("dataForm",this.dataForm)
console.log("dialogImageUrl",this.giftImages)
let this_ = this let this_ = this
if (Array.isArray(this_.giftImages)) { if (Array.isArray(this_.giftImages)) {
this_.dataForm.giftImages = JSON.stringify(this_.giftImages); this_.dataForm.giftImages = JSON.stringify(this_.giftImages);
@ -858,6 +855,7 @@ export default {
}, },
// //
handleUpdate(data) { handleUpdate(data) {
let fileList = JSON.parse(data.giftImages); let fileList = JSON.parse(data.giftImages);
this.giftImages = [], this.giftImages = [],
@ -869,6 +867,7 @@ export default {
let sp = image.url.split('//') let sp = image.url.split('//')
image.url = this.imagePath + '/'+sp[2] image.url = this.imagePath + '/'+sp[2]
}) })
console.log("data",data.deliveryMethod);
data.deliveryMethod = JSON.parse(data.deliveryMethod); data.deliveryMethod = JSON.parse(data.deliveryMethod);
@ -1073,7 +1072,6 @@ export default {
}, },
// //
handleUploadSuccessGift(file) { handleUploadSuccessGift(file) {
console.log("aaa",file)
let newImage = { let newImage = {
name: file.data.original, name: file.data.original,
url: process.env.VUE_APP_SERVER_URL + file.data.fileName, url: process.env.VUE_APP_SERVER_URL + file.data.fileName,

View File

@ -1,43 +1,90 @@
<template> <template>
<div class=""> <div class="">
<el-descriptions class="margin-top" title="带边框列表" :column="3" border> <el-descriptions class="margin-top" title="用户信息" :column="1" border>
<template slot="extra">
<el-button type="primary" size="small">操作</el-button>
</template>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
<i class="el-icon-user"></i> 用户手机号
用户名
</template> </template>
kooriookami {{dataForm.mobile}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
<i class="el-icon-mobile-phone"></i> 用户名称
手机号
</template> </template>
18100000000 {{dataForm.name}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="margin-top" style="margin-top:10px" title="订单信息" :column="1" border>
<el-descriptions-item>
<template slot="label">
商品名称
</template>
{{ dataForm.giftName }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
<i class="el-icon-location-outline"></i> 交易数量
居住地
</template> </template>
苏州市 {{ dataForm.exchangeQuantity }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
<i class="el-icon-tickets"></i> 配送类型
备注
</template> </template>
<el-tag size="small">学校</el-tag> <el-tag size="small"> {{ dataForm.shippingType }} </el-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
<i class="el-icon-office-building"></i> 付款信息
联系地址
</template> </template>
江苏省苏州市吴中区吴中大道 1188 {{ dataForm.orderStatus }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
订单编号
</template>
{{ dataForm.orderNumber }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
创建时间
</template>
{{ dataForm.createTime }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
更新时间
</template>
{{ dataForm.updateTime }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
付款备注
</template>
{{ dataForm.notes }}
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="margin-top" title="收货信息" :column="1" border>
<el-descriptions-item>
<template slot="label">
收货人
</template>
{{dataForm.mobile}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
收货电话
</template>
{{dataForm.name}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
收货地址
</template>
{{dataForm.name}}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
@ -48,6 +95,15 @@ export default {
name: "detail", name: "detail",
props: { props: {
dataForm:{}, dataForm:{},
},
data() {
return {
}
},
created(){
console.log("dataForm",this.dataForm)
} }
} }

View File

@ -0,0 +1,201 @@
<template>
<div class="">
<el-card>
<el-row style="margin-bottom: 10px;">
<span style=";font-size: 20px;">兑换详情</span>
</el-row>
<el-row :gutter="24">
<el-col :span="7">
<el-image
style="width: 100px; height: 100px"
:src="imagePath+dataForm.coverImage"
fit="cover"></el-image>
</el-col>
<el-col :span="15">
<el-descriptions title="" :colon=false :column="1">
<el-descriptions-item label="礼品名称:">{{ dataForm.giftName }}</el-descriptions-item>
<el-descriptions-item label="兑换数量:">{{dataForm.exchangeQuantity}}</el-descriptions-item>
<el-descriptions-item ></el-descriptions-item>
<el-descriptions-item label="用户手机号:">
<el-tag size="small">{{ dataForm.mobile }}</el-tag>
</el-descriptions-item>
</el-descriptions>
</el-col>
</el-row>
</el-card>
<el-card style="margin-top: 20px;">
<el-form :model="editForm" ref="form" :rules="rules" size="small" :inline="true" label-width="100px">
<el-row v-if="flag">
<el-form-item label="处理结果" prop="processingResult" >
<el-radio-group :disabled="!flagOrderStart" v-model="editForm.processingResult">
<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>
</el-form-item>
</el-row>
<el-row v-if="!flag">
<el-form-item label="处理结果2" prop="processingResult" >
<el-radio-group :disabled="!flagOrderStart" v-model="editForm.processingResult">
<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>
</el-form-item>
</el-row>
<template v-if="editForm.processingResult == 0 " && flag>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="快递公司" prop="courierCompanies">
<el-select v-model="editForm.courierCompanies" style="width: 150px" placeholder="全部">
<el-option
v-for="dict in dict.type.courier_companies"
:key="dict.label"
:label="dict.label"
:value="dict.label"
/>
<el-option value="0" label="其他快递"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col v-if="editForm.courierCompanies == '0'" :span="12">
<el-form-item label="快递名称" label-width="80px" prop="name">
<el-input v-model="editForm.name" style="width: 150px"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-form-item label="快递单号" prop="theTrackingNumber">
<el-input v-model="editForm.theTrackingNumber" style="width: 250px"></el-input>
</el-form-item>
</el-row>
</template>
<el-row>
<el-form-item label="处理备注">
<el-input type="textarea" v-model="editForm.notes" style="width: 250px"></el-input>
</el-form-item>
</el-row>
</el-form>
<div style="float: right; margin-bottom: 20px;">
<el-button type="primary" @click="submit"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-card>
</div>
</template>
<script>
import {updateOrderApi} from "@/api/integral/order";
export default {
name: "outcome",
dicts: ['zhzt','lplx','courier_companies',],
props: {
dataForm:{},
flagOrderStart:false,
},
data() {
return {
editForm:{
processingResult:'0', //
courierCompanies:'', //
name:'', //
theTrackingNumber:'', //
notes:'', //
},
flag:true,
stateFlag: true,
//
imagePath: process.env.VUE_APP_SERVER_URL,
rules:{
processingResult: [
{ required: true, message: "请选择处理结果", trigger: "change" },
],
courierCompanies: [
{ required: true, message: "请选择快递公司", trigger: "blur" },
],
name: [
{ required: true, message: "快递名称不能为空", trigger: "blur" },
],
noites: [
{ required: true, message: "快递单号不能为空", trigger: "blur" },
],
}
}
},
created(){
console.log("dataForm",this.dataForm)
console.log("flagOrderStart",this.flagOrderStart)
if (this.dataForm.shippingType=="物流配送") {
this.flag == true
}else {
this.flag == false
}
//
if (!this.flagOrderStart) {
this.editForm.courierCompanies = this.dataForm.courierCompanies
this.editForm.theTrackingNumber = this.dataForm.theTrackingNumber
this.editForm.notes = this.dataForm.notes
}
if (this.dataForm.orderStatus == '已拒绝') {
this.editForm.processingResult='1' //
}
},
methods: {
submit: function() {
let this_ = this
this_.$refs["form"].validate(valid => {
if (valid) {
let file = {
id : this_.dataForm.id,
orderStatus: '',
courierCompanies:this_.editForm.courierCompanies,
theTrackingNumber:this_.editForm.theTrackingNumber, //
notes:this_.editForm.notes, //
}
if (this.editForm.processingResult == '1') {
file.orderStatus='已拒绝'
}else if (this.flag) {
file.orderStatus='已发货'
} else {
file.orderStatus='已完成'
}
if (this_.editForm.courierCompanies == 0) {
file.courierCompanies = file.name
}
updateOrderApi(file).then(res=>{
this.$modal.msgSuccess("处理成功");
})
}
})
this.$emit('send-data', 'Data from child');
},
cancel() {
this.$emit('send-data', 'Data from child');
}
}
}
</script>
<style scoped>
</style>

View File

@ -2,18 +2,17 @@
<div class="app-container"> <div class="app-container">
<el-card > <el-card >
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px">
<el-form-item label="礼品名称" prop="giftName"> <el-form-item label="交易单号" prop="giftName">
<el-input <el-input
v-model="queryParams.giftName" v-model="queryParams.orderNumber"
placeholder="请输入供应商名称" placeholder="请输入交易单号"
clearable clearable
style="width: 240px;" style="width: 220px;"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item label="兑换状态">
<el-select v-model="queryParams.status" style="width: 217px" placeholder="全部" clearable <el-select v-model="queryParams.status" style="width: 150px" placeholder="兑换状态" clearable>
>
<el-option <el-option
v-for="dict in dict.type.zhzt" v-for="dict in dict.type.zhzt"
:key="dict.label" :key="dict.label"
@ -22,14 +21,35 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="giftName">
<el-input
v-model="queryParams.mobile"
placeholder="请输入用户手机号"
clearable
style="width: 160px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="注册时间">
<el-date-picker
v-model="dateRange"
style="width: 240px"
size="medium"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
clearable
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </el-card>
<el-card style="margin-top: 20px;" > <el-card style="margin-top: 20px;" >
<div style="margin-bottom : 10px"> <div style="margin-bottom : 10px">
<span class="font-number">统计</span> <span class="font-number">统计</span>
@ -38,26 +58,30 @@
<el-col :span="2.5"> <el-col :span="2.5">
<div class="box"> <div class="box">
<span class="font-chinese">笔数</span> <span class="font-chinese">笔数</span>
<span class="font-number">1234</span> <span class="font-number">{{statisticsForm.num}}</span>
</div> </div>
</el-col> </el-col>
<el-col :span="2.5"> <el-col :span="2.5">
<div class="box"> <div class="box">
<span class="font-chinese">商品数量</span> <span class="font-chinese">商品数量</span>
<span class="font-number">12334</span> <span class="font-number">{{statisticsForm.exchangeQuantity}}</span>
</div> </div>
</el-col> </el-col>
<el-col :span="2.5"> <el-col :span="2.5">
<div class="box"> <div class="box">
<span class="font-chinese">积分</span> <span class="font-chinese">积分</span>
<span class="font-number">0</span> <span class="font-number">{{statisticsForm.integral}}</span>
</div> </div>
</el-col> </el-col>
<el-col :span="3"> <el-col :span="3">
<div class="box"> <div class="box">
<span class="font-chinese">支付总额</span> <span class="font-chinese">支付总额
<span class="font-number">0</span> <el-tooltip class="item" effect="dark" content="实际支付订单详细信息请在增值订单页面查看
" placement="top-start">
<i class="el-icon-info"></i>
</el-tooltip>
</span>
<span class="font-number">{{statisticsForm.amount}}</span>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -109,7 +133,7 @@
</template> </template>
<script> <script>
import {getOrderApi} from "@/api/integral/order"; import {getOrderApi,getStatisticsApi } from "@/api/integral/order";
export default { export default {
name: "pointsCashier", name: "pointsCashier",
@ -121,28 +145,59 @@ export default {
queryParams: { queryParams: {
giftName: '', giftName: '',
status: '', status: '',
mobile: '',
orderNumber: '',
page:null, page:null,
pageSize:null pageSize:null
}, },
loading: false, loading: false,
dateRange: [],
defaultSort: {prop: 'createTime', order: 'descending'}, defaultSort: {prop: 'createTime', order: 'descending'},
total: 0, total: 0,
statisticsForm: {
num:0,
exchangeQuantity:0,
integral:0,
amount:0
}
} }
}, },
created() { created() {
this.getList(); this.getList();
this.getStatistics();
}, },
methods: { methods: {
getList(){ getList(){
getOrderApi().then(res=>{ getOrderApi(this.addDateRange(this.queryParams, this.dateRange)).then(res=>{
this.dataList = res.data.records this.dataList = res.data.records
}) })
}, },
getStatistics() {
getStatisticsApi().then(res=>{
this.statisticsForm = res.data
})
console.log("123123123",this.statisticsForm)
},
handleUpdate(){}, handleUpdate(){},
handleQuery(){}, handleQuery(){
resetQuery(){}, this.getList();
},
resetQuery(){
this.queryParams = {
giftName: '',
status: '',
mobile: '',
orderNumber: '',
page:1,
pageSize:10
},
this.dateRange = []
},
} }
} }
</script> </script>

View File

@ -5,23 +5,48 @@
<el-form-item label="礼品名称" prop="giftName"> <el-form-item label="礼品名称" prop="giftName">
<el-input <el-input
v-model="queryParams.giftName" v-model="queryParams.giftName"
placeholder="请输入供应商名称" placeholder="请输入礼品名称"
clearable clearable
style="width: 240px;" style="width: 200px;"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item>
<el-select v-model="queryParams.status" style="width: 217px" placeholder="全部" clearable <el-form-item label="手机号码" prop="mobile">
> <el-input
v-model="queryParams.mobile"
placeholder="请输入用户手机号"
clearable
style="width: 160px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="配送方式">
<el-select v-model="queryParams.shippingType" style="width: 150px" placeholder="全部" clearable>
<el-option <el-option
v-for="dict in dict.type.zhzt" v-for="dict in dict.type.shippingMethod"
:key="dict.label" :key="dict.label"
:label="dict.label" :label="dict.label"
:value="dict.label" :value="dict.label"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="注册时间">
<el-date-picker
v-model="dateRange"
style="width: 240px"
size="medium"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
clearable
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
@ -29,29 +54,23 @@
</el-form> </el-form>
</el-card> </el-card>
<el-card style="margin-top: 20px" > <el-card style="margin-top: 20px" >
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="全部订单" name="0">
<el-tab-pane label="全部订单" name="first">
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="待处理/待发货" name="second"> <el-tab-pane label="待处理/待发货" name="1">
<span slot="label">待处理/待发货<el-badge class="mark" :value="12" /></span> <span slot="label">待处理/待发货<el-badge class="mark" v-show="statisticsForm.await!=0" :value="statisticsForm.await" /></span>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="已完成/已发货" name="third"> <el-tab-pane label="已完成/已发货" name="2">
<span slot="label">已完成/已发货<el-badge class="mark" :value="12" /></span> <span slot="label">已完成/已发货<el-badge class="mark" v-show="statisticsForm.dispose!=0" :value="statisticsForm.dispose" /></span>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="已拒绝/已退款" name="fourth"> <el-tab-pane label="已拒绝/已退款" name="3">
<span slot="label">已拒绝/已退款<el-badge class="mark" :value="12" /></span> <span slot="label">已拒绝/已退款<el-badge class="mark" v-show="statisticsForm.refuse!=0" :value="statisticsForm.refuse" /></span>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="未付款订单" name="five"> <el-tab-pane label="未付款订单" name="4">
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<el-table ref="tables" <el-table ref="tables"
style="margin-top: 15px" style="margin-top: 15px"
v-loading="loading" v-loading="loading"
@ -89,16 +108,28 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="配送类型" align="center" prop="shippingType"/> <el-table-column label="配送类型" align="center" prop="shippingType">
<template slot-scope="scope">
<el-tag v-if="scope.row.shippingType=='门店自提'">{{scope.row.shippingType}}</el-tag>
<el-tag type="success" v-else>{{scope.row.shippingType}}</el-tag>
</template>
</el-table-column>
<el-table-column label="实付信息" align="center" prop="categoryName" > <el-table-column label="实付信息" align="center" prop="categoryName" >
<el-table-column label="积分" align="center" prop="integral" width=""/> <el-table-column label="积分" align="center" prop="integral" width=""/>
<el-table-column label="金额" align="center" prop="amount" width=""/> <el-table-column label="金额" align="center" prop="amount" width=""/>
</el-table-column> </el-table-column>
<el-table-column label="兑换数量" align="center" prop="exchangeQuantity" width=""/> <el-table-column label="兑换数量" align="center" prop="exchangeQuantity" width=""/>
<el-table-column label="订单状态" align="center" prop="orderStatus" width=""/> <el-table-column label="订单状态" align="center" prop="orderStatus" width="">
<template slot-scope="scope">
<el-tag effect="plain" v-if="scope.row.orderStatus=='待处理' || scope.row.orderStatus=='待发货'">{{scope.row.orderStatus}}</el-tag>
<el-tag type="success" effect="plain" v-else-if="scope.row.orderStatus=='已完成' || scope.row.orderStatus=='已发货'">{{scope.row.orderStatus}}</el-tag>
<el-tag type="danger" effect="plain" v-else-if="scope.row.orderStatus=='已拒绝' || scope.row.orderStatus=='已退款'">{{scope.row.orderStatus}}</el-tag>
<el-tag type="warning" effect="plain" v-else>{{scope.row.orderStatus}}</el-tag>
</template>
</el-table-column>
<el-table-column label="订单时间信息" align="center" prop="categoryName" width=""> <el-table-column label="订单时间信息" align="center" prop="categoryName" width="">
<el-table-column label="创建时间" align="center" prop="createTime" width=""/> <el-table-column label="创建时间" align="center" prop="createTime" width="150px"/>
<el-table-column label="更新时间" align="center" prop="updateTime" width=""/> <el-table-column label="更新时间" align="center" prop="updateTime" width="150px"/>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
@ -107,25 +138,43 @@
type="text" type="text"
@click="handleDetail(scope.row)" @click="handleDetail(scope.row)"
>订单详情</el-button> >订单详情</el-button>
<el-button
<template v-if="scope.row.orderStatus=='待支付' ||scope.row.orderStatus=='待处理' || scope.row.orderStatus=='待发货'">
<el-button
size="mini" size="mini"
type="text" type="text"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row,true)"
>处理订单</el-button> >
处理订单
</el-button>
</template>
<template v-else>
<el-button
size="mini"
type="text"
@click="handleUpdate(scope.row,false)"
>
处理变更
</el-button>
</template> </template>
</template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :total="total"
:page.sync="queryParams.page" :page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
</el-card> </el-card>
<el-dialog title="订单详情" :visible.sync="openDetail" width="500px" append-to-body :close-on-click-modal="false"> <el-dialog title="订单详情" :visible.sync="openDetail" width="500px" append-to-body :close-on-click-modal="false">
<detail></detail> <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>
</el-dialog> </el-dialog>
</div> </div>
@ -134,56 +183,106 @@
<script> <script>
import {getOrderApi,getStatisticsApi} from "@/api/integral/order"; import {getOrderApi,getStatisticsApi} from "@/api/integral/order";
import Detail from '@/views/integral/order/detail' import Detail from '@/views/integral/order/detail'
import Outcome from "./outcome.vue";
export default { export default {
name: "pointsMall", name: "pointsMall",
components: {Detail}, components: { Detail, Outcome },
dicts: ['zhzt','lplx','redemptionMethod','expressShippingCosts','shippingMethod'], dicts: ['zhzt','lplx','redemptionMethod','expressShippingCosts','shippingMethod'],
data() { data() {
return { return {
dataList:[], dataList:[],
dataFrom:{}, dataForm:{},
// //
imagePath: process.env.VUE_APP_SERVER_URL, imagePath: process.env.VUE_APP_SERVER_URL,
queryParams: { queryParams: {
giftName: '', giftName: '',
status: '', mobile:'',
page:null, shippingType: '',
orderStatus:'',
pageNo:null,
pageSize:null pageSize:null
}, },
total: 0, total: 0,
loading: false, loading: false,
openDetail: false, // openDetail: false, //
openOutcome: false, //
//
dateRange: [],
defaultSort: {prop: 'createTime', order: 'descending'}, defaultSort: {prop: 'createTime', order: 'descending'},
activeName: 'first', statisticsForm: {
await:0,
dispose:0,
refuse:0,
},
flagOrderStart : true, // true
activeName: '0',
} }
}, },
created() { created() {
this.getList(); this.getList();
this.getStatistics();
}, },
methods: { methods: {
getList(){ getList(){
getOrderApi().then(res=>{ getOrderApi(this.addDateRange(this.queryParams, this.dateRange)).then(res=>{
this.dataList = res.data.records this.dataList = res.data.records
}) })
},
getStatistics() {
getStatisticsApi().then(res=>{ getStatisticsApi().then(res=>{
this.statisticsForm = res.data
}) })
}, },
handleUpdate(){}, handleUpdate(data,flag){
this.openOutcome = true
this.flagOrderStart = flag
this.dataForm = data;
},
handleDetail(data){ handleDetail(data){
this.openDetail = true this.openDetail = true
this.dataForm = data;
},
handleQuery(){
this.getList();
},
//
resetQuery(){
this.queryParams = {
giftName: '',
shippingType: '',
mobile:'',
orderStatus:'',
pageNo:1,
pageSize:10
},
this.dateRange = []
},
resetQuery2(){
this.queryParams = {
pageNo:1,
pageSize:10
}
}, },
handleQuery(){},
resetQuery(){},
handleClick(tab, event) { handleClick(tab, event) {
console.log(tab, event); this.resetQuery2()
this.queryParams.orderStatus = tab.name
console.log(tab.name);
this.getList();
},
handleDataFromChild(data) {
this.openOutcome = false
console.log('Received data in parent:', data);
} }
} }
} }
</script> </script>

View File

@ -2,6 +2,7 @@ package com.fuint.business.integral.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.integral.dto.IntegralOrdersDTO;
import com.fuint.business.integral.entity.IntegralOrders; import com.fuint.business.integral.entity.IntegralOrders;
import com.fuint.business.integral.service.IntegralOrdersService; import com.fuint.business.integral.service.IntegralOrdersService;
import com.fuint.business.integral.vo.IntegralOrdersVO; import com.fuint.business.integral.vo.IntegralOrdersVO;
@ -39,7 +40,7 @@ public class IntegralOrdersController extends BaseController {
@GetMapping("queryByPage") @GetMapping("queryByPage")
public ResponseObject queryByPage(@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo, public ResponseObject queryByPage(@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize, @RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize,
@Param("integralOrders") IntegralOrders integralOrders) { @Param("integralOrders") IntegralOrdersDTO integralOrders) {
Page page = new Page(pageNo, pageSize); Page page = new Page(pageNo, pageSize);
IPage<IntegralOrdersVO> integralOrdersIPage = this.integralOrdersService.queryByPage(page, integralOrders); IPage<IntegralOrdersVO> integralOrdersIPage = this.integralOrdersService.queryByPage(page, integralOrders);
return getSuccessResult(integralOrdersIPage); return getSuccessResult(integralOrdersIPage);
@ -64,7 +65,7 @@ public class IntegralOrdersController extends BaseController {
* @return 新增结果 * @return 新增结果
*/ */
@PostMapping @PostMapping
public ResponseObject add(IntegralOrders integralOrders) { public ResponseObject add(@RequestBody IntegralOrders integralOrders) {
return getSuccessResult(this.integralOrdersService.insert(integralOrders)); return getSuccessResult(this.integralOrdersService.insert(integralOrders));
} }
@ -75,10 +76,20 @@ public class IntegralOrdersController extends BaseController {
* @return 编辑结果 * @return 编辑结果
*/ */
@PutMapping @PutMapping
public ResponseObject edit(IntegralOrders integralOrders) { public ResponseObject edit(@RequestBody IntegralOrders integralOrders) {
return getSuccessResult(this.integralOrdersService.update(integralOrders)); return getSuccessResult(this.integralOrdersService.update(integralOrders));
} }
// /**
// * 处理发货 修改该快递单号
// * @param integralOrders
// * @return
// */
// @PutMapping
// public ResponseObject editExpressDelivery(IntegralOrders integralOrders) {
// return getSuccessResult(this.integralOrdersService.update(integralOrders));
// }
/** /**
* 删除数据 * 删除数据
* *
@ -91,6 +102,10 @@ public class IntegralOrdersController extends BaseController {
} }
/**
* 统计数据
* @return
*/
@GetMapping("/statistics") @GetMapping("/statistics")
public ResponseObject statistics() { public ResponseObject statistics() {
return getSuccessResult(this.integralOrdersService.statistics()); return getSuccessResult(this.integralOrdersService.statistics());

View File

@ -0,0 +1,17 @@
package com.fuint.business.integral.dto;
import com.fuint.business.integral.entity.IntegralOrders;
import lombok.Data;
/**
* 查询参数
*/
@Data
public class IntegralOrdersDTO extends IntegralOrders {
private String mobile;
private String userNo;
private String name;
private String giftName;
private String coverImage;
}

View File

@ -79,6 +79,14 @@ public class IntegralOrders extends BaseEntity {
* 店铺ID * 店铺ID
*/ */
private Integer storeId; private Integer storeId;
/**
* 快递公司
*/
private String courierCompanies;
/**
* 快递号
*/
private String theTrackingNumber;
} }

View File

@ -2,10 +2,12 @@ package com.fuint.business.integral.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.integral.dto.IntegralOrdersDTO;
import com.fuint.business.integral.entity.IntegralGift; import com.fuint.business.integral.entity.IntegralGift;
import com.fuint.business.integral.entity.IntegralOrders; import com.fuint.business.integral.entity.IntegralOrders;
import com.fuint.business.integral.vo.IntegralGiftVO; import com.fuint.business.integral.vo.IntegralGiftVO;
import com.fuint.business.integral.vo.IntegralOrdersVO; import com.fuint.business.integral.vo.IntegralOrdersVO;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import java.util.List; import java.util.List;
@ -34,7 +36,7 @@ public interface IntegralOrdersMapper {
* @param page 分页对象 * @param page 分页对象
* @return 对象列表 * @return 对象列表
*/ */
IPage<IntegralOrdersVO> queryAllByLimit(@Param("page") Page page, @Param("integralOrders") IntegralOrders integralOrders); IPage<IntegralOrdersVO> queryAllByLimit(@Param("page") Page page, @Param("integralOrders") IntegralOrdersDTO integralOrders);
/** /**
* 统计总行数 * 统计总行数
@ -89,7 +91,7 @@ public interface IntegralOrdersMapper {
* 统计数据 * 统计数据
* @return * @return
*/ */
Map<String, String> statistics(); Map<String, String> statistics(@Param("storeId") Integer storeId);
} }

View File

@ -18,6 +18,8 @@
<result property="orderType" column="order_type" jdbcType="VARCHAR"/> <result property="orderType" column="order_type" jdbcType="VARCHAR"/>
<result property="processingResult" column="processing_result" jdbcType="VARCHAR"/> <result property="processingResult" column="processing_result" jdbcType="VARCHAR"/>
<result property="notes" column="notes" jdbcType="VARCHAR"/> <result property="notes" column="notes" jdbcType="VARCHAR"/>
<result property="courierCompanies" column="courier_companies" jdbcType="VARCHAR"/>
<result property="theTrackingNumber" column="the_tracking_number" jdbcType="VARCHAR"/>
<result property="storeId" column="store_id" jdbcType="INTEGER"/> <result property="storeId" column="store_id" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
@ -61,6 +63,8 @@
io.store_id, io.store_id,
io.create_time, io.create_time,
io.update_time, io.update_time,
io.courier_companies,
io.the_tracking_number,
mu.mobile, mu.mobile,
mu.user_no, mu.user_no,
mu.name, mu.name,
@ -70,27 +74,47 @@
left join mt_user mu ON io.user_id = mu.id left join mt_user mu ON io.user_id = mu.id
left join integral_gift ig ON io.gift_id = ig.id left join integral_gift ig ON io.gift_id = ig.id
<where> <where>
io.store_id = #{integralOrders.storeId}
<if test="integralOrders.giftName != null">
and ig.gift_name like CONCAT ('%',#{integralOrders.giftName},'%')
</if>
<if test="integralOrders.mobile != null">
and mu.mobile like CONCAT ('%',#{integralOrders.mobile},'%')
</if>
<if test="integralOrders.params.beginTime != null and integralOrders.params.beginTime != ''">
and date_format(io.create_time,'%y%m%d') &gt;= date_format(#{integralOrders.params.beginTime},'%y%m%d')
</if>
<if test="integralOrders.params.endTime != null and integralOrders.params.endTime != ''">
and date_format(io.create_time,'%y%m%d') &lt;= date_format(#{integralOrders.params.endTime},'%y%m%d')
</if>
<if test="integralOrders.orderNumber != null and integralOrders.orderNumber != ''">
and io.order_number like CONCAT ('%',#{integralOrders.orderNumber},'%')
</if>
<if test="integralOrders.shippingType != null and integralOrders.shippingType != ''">
and io.shipping_type = #{integralOrders.shippingType}
</if>
<if test="integralOrders.orderStatus != null and integralOrders.orderStatus != '' and integralOrders.orderStatus != 0 ">
and (
(#{integralOrders.orderStatus} = 1 and (io.order_status = '待处理' or io.order_status = '待发货')) or
(#{integralOrders.orderStatus} = 2 and (io.order_status = '已完成' or io.order_status = '已发货')) or
(#{integralOrders.orderStatus} = 3 and (io.order_status = '已退款' or io.order_status = '已拒绝')) or
(#{integralOrders.orderStatus} = 4 and io.order_status = '未支付')
)
</if>
<if test="integralOrders.id != null"> <if test="integralOrders.id != null">
and io.id = #{integralOrders.id} and io.id = #{integralOrders.id}
</if> </if>
<if test="integralOrders.userId != null"> <if test="integralOrders.userId != null">
and io.user_id = #{integralOrders.userId} and io.user_id = #{integralOrders.userId}
</if> </if>
<if test="integralOrders.orderNumber != null and integralOrders.orderNumber != ''">
and io.order_number = #{integralOrders.orderNumber}
</if>
<if test="integralOrders.giftId != null"> <if test="integralOrders.giftId != null">
and io.gift_id = #{integralOrders.giftId} and io.gift_id = #{integralOrders.giftId}
</if> </if>
<if test="integralOrders.shippingType != null and integralOrders.shippingType != ''">
and io.shipping_type = #{integralOrders.shippingType}
</if>
<if test="integralOrders.exchangeQuantity != null"> <if test="integralOrders.exchangeQuantity != null">
and io.exchange_quantity = #{integralOrders.exchangeQuantity} and io.exchange_quantity = #{integralOrders.exchangeQuantity}
</if> </if>
<if test="integralOrders.orderStatus != null and integralOrders.orderStatus != ''">
and io.order_status = #{integralOrders.orderStatus}
</if>
<if test="integralOrders.status != null and integralOrders.status != ''"> <if test="integralOrders.status != null and integralOrders.status != ''">
and io.status = #{integralOrders.status} and io.status = #{integralOrders.status}
</if> </if>
@ -100,9 +124,6 @@
<if test="integralOrders.processingResult != null and integralOrders.processingResult != ''"> <if test="integralOrders.processingResult != null and integralOrders.processingResult != ''">
and io.processing_result = #{integralOrders.processingResult} and io.processing_result = #{integralOrders.processingResult}
</if> </if>
<if test="integralOrders.storeId != null">
and io.store_id = #{integralOrders.storeId}
</if>
<if test="integralOrders.createTime != null"> <if test="integralOrders.createTime != null">
and io.create_time = #{integralOrders.createTime} and io.create_time = #{integralOrders.createTime}
</if> </if>
@ -180,9 +201,15 @@
</where> </where>
</select> </select>
<select id="statistics" resultType="java.util.Map"> <select id="statistics" resultType="java.util.Map">
select count(0) a, select count(0) num,
count(*) b sum(exchange_quantity) exchangeQuantity,
from integral_orders sum(integral) integral,
sum(amount) amount,
SUM(CASE WHEN order_status IN ('待处理', '待发货') THEN 1 ELSE 0 END) AS await,
SUM(CASE WHEN order_status IN ('已完成', '已发货') THEN 1 ELSE 0 END) AS dispose,
SUM(CASE WHEN order_status IN ('已拒绝', '已退款') THEN 1 ELSE 0 END) AS refuse
from integral_orders
where store_id = #{storeId}
</select> </select>
<!--新增所有列--> <!--新增所有列-->
@ -276,11 +303,8 @@ from integral_orders
<if test="storeId != null"> <if test="storeId != null">
store_id = #{storeId}, store_id = #{storeId},
</if> </if>
<if test="createTime != null">
create_time = #{createTime},
</if>
<if test="updateTime != null"> <if test="updateTime != null">
update_time = #{updateTime}, update_time = NOW(),
</if> </if>
<if test="createBy != null"> <if test="createBy != null">
create_by = #{createBy}, create_by = #{createBy},
@ -288,6 +312,12 @@ from integral_orders
<if test="updateBy != null"> <if test="updateBy != null">
update_by = #{updateBy}, update_by = #{updateBy},
</if> </if>
<if test="courierCompanies != null">
courier_companies = #{courierCompanies},
</if>
<if test="theTrackingNumber != null">
the_tracking_number = #{theTrackingNumber},
</if>
</set> </set>
where id = #{id} where id = #{id}
</update> </update>

View File

@ -2,6 +2,7 @@ package com.fuint.business.integral.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.integral.dto.IntegralOrdersDTO;
import com.fuint.business.integral.entity.IntegralOrders; import com.fuint.business.integral.entity.IntegralOrders;
import com.fuint.business.integral.vo.IntegralOrdersVO; import com.fuint.business.integral.vo.IntegralOrdersVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -31,7 +32,7 @@ public interface IntegralOrdersService {
* @param page 分页对象 * @param page 分页对象
* @return 查询结果 * @return 查询结果
*/ */
IPage<IntegralOrdersVO> queryByPage(@Param("page") Page page, @Param("integralGift") IntegralOrders integralOrders); IPage<IntegralOrdersVO> queryByPage(@Param("page") Page page, @Param("integralGift") IntegralOrdersDTO integralOrders);
/** /**
* 新增数据 * 新增数据

View File

@ -1,6 +1,7 @@
package com.fuint.business.integral.service.impl; package com.fuint.business.integral.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fuint.business.integral.dto.IntegralOrdersDTO;
import com.fuint.business.integral.entity.IntegralGift; import com.fuint.business.integral.entity.IntegralGift;
import com.fuint.business.integral.entity.IntegralOrders; import com.fuint.business.integral.entity.IntegralOrders;
import com.fuint.business.integral.mapper.IntegralOrdersMapper; import com.fuint.business.integral.mapper.IntegralOrdersMapper;
@ -49,7 +50,7 @@ public class IntegralOrdersServiceImpl implements IntegralOrdersService {
* @return 查询结果 * @return 查询结果
*/ */
@Override @Override
public IPage<IntegralOrdersVO> queryByPage(@Param("page") Page page, @Param("integralOrders") IntegralOrders integralOrders) { public IPage<IntegralOrdersVO> queryByPage(@Param("page") Page page, @Param("integralOrders") IntegralOrdersDTO integralOrders) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo(); AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
integralOrders.setStoreId(nowAccountInfo.getStoreId()); integralOrders.setStoreId(nowAccountInfo.getStoreId());
return integralOrdersDao.queryAllByLimit(page, integralOrders); return integralOrdersDao.queryAllByLimit(page, integralOrders);
@ -74,6 +75,8 @@ public class IntegralOrdersServiceImpl implements IntegralOrdersService {
*/ */
@Override @Override
public IntegralOrders update(IntegralOrders integralOrders) { public IntegralOrders update(IntegralOrders integralOrders) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
integralOrders.setUpdateBy(nowAccountInfo.getStaffId().toString());
this.integralOrdersDao.update(integralOrders); this.integralOrdersDao.update(integralOrders);
return this.queryById(integralOrders.getId()); return this.queryById(integralOrders.getId());
} }
@ -91,6 +94,7 @@ public class IntegralOrdersServiceImpl implements IntegralOrdersService {
@Override @Override
public Map<String, String> statistics() { public Map<String, String> statistics() {
return this.integralOrdersDao.statistics(); AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
return this.integralOrdersDao.statistics(nowAccountInfo.getStoreId());
} }
} }