文件

385 行
18 KiB
HTML
可执行文件

<!--[1.8.68]-->
<link rel="stylesheet" href="/Public/css/component-serial.css">
<link rel="stylesheet" href="/Public/css/component-serial-modify-record.css">
<link rel="stylesheet" href="/Public/css/component-blessing.css">
<script src="/Public/js/component-blessing.js?v=1.0.0"></script>
<script src="/Public/js/component-serial.js?v=1.0.0"></script>
<script src="/Public/js/component-serial-modify-record.js?v=1.0.0"></script>
<link rel="stylesheet" href="/Public/Retail/css/order-details.css">
<script src="/Public/Retail/js/order-details.js"></script>
<div id="secKillApp">
<div class="page-title">待处理</div>
<div class="table-top-card-box">
<div class="table-top-card flex-card">
<div class="table-top-card-header">待发货订单</div>
<div class="table-top-card-body">
<el-button type="text" @click="searchData(3)">{{expressOrder}}</el-button>
</div>
</div>
<div class="table-top-card flex-card">
<div class="table-top-card-header">待配送订单</div>
<div class="table-top-card-body">
<el-button type="text" @click="searchData(2)">{{sameCityOrder}}</el-button>
</div>
</div>
<div class="table-top-card flex-card">
<div class="table-top-card-header">待自提订单</div>
<div class="table-top-card-body">
<el-button type="text" @click="searchData(1)">{{selfExtractionOrder}}</el-button>
</div>
</div>
</div>
<div class="page-title">订单</div>
<el-form :inline="true" size="small">
<el-form-item>
<date-picker-range :date-time.sync="searchForm.time"></date-picker-range>
</el-form-item>
<el-form-item>
<el-input class="page-input" placeholder="订单号" type="text" v-model="searchForm.out_trade_no" clearable
@keydown.enter.exact.native.prevent="searchData">
</el-input>
</el-form-item>
<el-form-item>
<el-select v-model="searchForm.secKillStatus" clearable placeholder="秒杀状态">
<el-option label="秒杀成功" value="1"></el-option>
<el-option label="秒杀失败" value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select v-model="searchForm.deliveryMethod" placeholder="配送方式" clearable>
<el-option label="快递配送" :value="3" :disabled="[4,5].includes(searchForm.deliveryStatus)"></el-option>
<el-option label="同城配送" :value="2" :disabled="[4,5].includes(searchForm.deliveryStatus)"></el-option>
<el-option label="自提" :value="1" :disabled="[1,2,3].includes(searchForm.deliveryStatus)"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select v-model="searchForm.deliveryStatus" placeholder="配送状态" clearable>
<el-option label="待发货/待配送" :value="1" :disabled="searchForm.deliveryMethod == 1"></el-option>
<el-option label="已发货/已配送" :value="2" :disabled="searchForm.deliveryMethod == 1"></el-option>
<el-option label="已收货/已送达" :value="3" :disabled="searchForm.deliveryMethod == 1"></el-option>
<el-option label="待自提" :value="4" :disabled="[2,3].includes(searchForm.deliveryMethod)"></el-option>
<el-option label="已自提" :value="5" :disabled="[2,3].includes(searchForm.deliveryMethod)"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="searchData">查询</el-button>
<el-button type="primary" plain v-if="storeAuth.data_export==1 && operate.secKillExport"
@click="exportExcel">导出</el-button>
</el-form-item>
</el-form>
<div>
<el-table :data="orderList" border v-loading="loading"
:header-cell-style="{background:'#F5F7FA',color:'#606266'}" size="small">
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
<el-table-column align="center" prop="order_name" label="订单类型" min-width="80px" show-overflow-tooltip>
</el-table-column>
<el-table-column align="center" prop="order_no" label="订单号" min-width="150px" show-overflow-tooltip>
</el-table-column>
<el-table-column align="center" prop="vip_name" label="会员" min-width="100px" show-overflow-tooltip>
</el-table-column>
<el-table-column align="center" prop="all_money" label="支付金额" min-width="80px" show-overflow-tooltip>
<template slot-scope="scope">
<el-button type="text" size="mini"
@click="details_order_no=scope.row.order_no;showPayDetails=true;">
{{scope.row.all_money}}
</el-button>
</template>
</el-table-column>
<el-table-column align="center" prop="pay_coupon_fee" label="代金券" min-width="135px" show-overflow-tooltip>
</el-table-column>
<el-table-column align="center" prop="add_time" label="下单时间" min-width="135px" show-overflow-tooltip>
</el-table-column>
<el-table-column align="center" prop="pickup_name" label="取货方式" min-width="70px"></el-table-column>
<el-table-column align="center" prop="user_select_time" label="自提/配送-时间" min-width="130px"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" prop="status_name" label="发货状态" min-width="70px"></el-table-column>
<el-table-column align="center" prop="state_name" label="秒杀状态" min-width="70px"></el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="100px">
<template slot-scope="scope">
<el-button type="text" size="mini"
@click="showOrderDetails = true;details_order_no = scope.row.order_no">详情
</el-button>
<el-button type="text" style="color: rgb(103, 194, 58)"
v-if="operate.sendGoods&&(scope.row.pickup_type==2||scope.row.pickup_type==3) && scope.row.delivery_type == 1 && scope.row.status==1 && scope.row.state == 1"
@click="sendGoods(scope.row)" size="mini">发货
</el-button>
<el-button type="text" v-if="operate.seeLogistics&&scope.row.delivery_type == 4"
@click="seeLogistics(scope.row.id)" size="mini">物流
</el-button>
<el-button type="text"
v-if="operate.useError&&scope.row.order_type == 1 && scope.row.state == 1 && scope.row.status == 1"
@click="useError(scope.row.id)" size="mini">取消订单
</el-button>
<el-button type="text" v-if="operate.wifiPrint&&scope.row.order_type == 1 && scope.row.state == 1"
@click="wifiPrint(scope.row.id)" size="mini">wifi打印
</el-button>
<el-button v-if="blessingAuthority" type="text" @click="openBlessingDialog(scope.row.id)"
size="mini">
祝福
</el-button>
</template>
</el-table-column>
<div slot="empty" v-if="!table_data_loading">暂无数据</div>
<div slot="empty" v-else><span class="el-icon-loading"></span></div>
</el-table>
<el-pagination @size-change="sizeChange" @current-change="currentChange"
layout="total, sizes, prev, pager, next, jumper" :pager-count="5" :page-sizes="[10,20,30,40,50,60,70,80,90]"
:page-size="10" :total="count">
</el-pagination>
</div>
<!--订单详情-->
<order-details :show.sync="showOrderDetails" :order-no="details_order_no"></order-details>
<!--支付详情-->
<pay-order-details :show.sync="showPayDetails" order-genre="3" :order-no="details_order_no"></pay-order-details>
<!-- 祝福语 -->
<component-blessing :visible.sync="blessingDialogVisible" :id="blessingOrderId"></component-blessing>
</div>
<script>
var secKillApp = new Vue({
el: '#secKillApp',
data() {
return {
orderList: [],
count: 0,
searchForm: {
out_trade_no: '',
secKillStatus: '',
time: '',
page: 1,
limit: 10,
deliveryMethod: '', //配送方式
deliveryStatus: '', //配送状态
},
showPayDetails: false,
showOrderDetails: false,
payList: [],
details_order_no: '',
loading: false,
table_data_loading: false,
operate: {},
expressOrder: 0, //待发货订单数
sameCityOrder: 0, //待同城配送订单数
selfExtractionOrder: 0, //待自提订单数
blessingDialogVisible: false, //祝福语组件开关
blessingOrderId: null, //当前祝福语订单ID
blessingAuthority: false //当前门店是否具备祝福语权限
}
},
methods: {
//快递发货
sendGoods(item) {
//快递发货
top.layer.open({
type: 2,
content: "{:U('Express/send_goods')}?id=" + item.id,
title: "发货 - " + item.order_no,
scrollbar: false,
area: ["calc(100% - 160px)", "calc(100% - 65px)"],
shade: 0,
offset: 'rb',
resize: false,
move: false,
end: () => {
this.getOrderData();
}
})
},
//查看物流
seeLogistics(id) {
top.layer.open({
type: 2,
content: "{:U('Express/see_logistics')}?id=" + id,
title: "物流详情",
scrollbar: false,
area: ["calc(100% - 160px)", "calc(100% - 65px)"],
shade: 0,
offset: 'rb',
resize: false,
move: false,
})
},
//使失败
useError(id) {
this.$confirm('您确认要取消该秒杀订单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.loading = true;
$.ajax({
url: "{:U('fail')}",
type: "post",
data: {bill_id: id},
success: (res) => {
this.loading = false;
if (res.status == 1) {
this.$message({
type: 'success',
message: res.msg,
duration: 1500
});
this.getOrderData();
} else {
this.$message({
type: 'error',
message: res.msg,
duration: 1500
});
}
},
error: () => {
this.loading = false;
this.$message({
type: 'error',
message: '请求发生错误,请稍后重试',
duration: 1500
});
}
})
}).catch(() => {
})
},
//wifi打印
wifiPrint(id) {
$.ajax({
url: "{:U('linePrint')}",
type: "post",
data: {order_id: id},
success: (res) => {
if (res.status == 0) {
this.$message({
type: 'success',
message: res.msg ? res.msg : '已发送打印信息',
duration: 1000
});
}
}
})
},
//查询
searchData(deliveryMethod = 0) {
if (deliveryMethod > 0) {
this.searchForm.time = []
this.searchForm.deliveryMethod = deliveryMethod
switch (deliveryMethod) {
case 1:
this.searchForm.deliveryStatus = 4
break
case 2:
case 3:
this.searchForm.deliveryStatus = 1
break
default:
this.searchForm.deliveryMethod = ''
this.searchForm.deliveryStatus = ''
}
}
this.searchForm.page = 1;
this.getOrderData();
},
//获取数据列表
getOrderData() {
this.table_data_loading = true;
$.ajax({
url: "{:U('getOrdertwo')}",
type: "post",
data: {
secKillStatus: this.searchForm.secKillStatus,
out_trade_no: this.searchForm.out_trade_no,
time: this.searchForm.time,
page: this.searchForm.page,
limit: this.searchForm.limit,
pickupType: this.searchForm.deliveryMethod, //配送方式
status: this.searchForm.deliveryStatus //配送状态
},
success: (res) => {
this.table_data_loading = false;
if (res.code === 0) {
this.orderList = res.data;
this.count = parseInt(res.count);
this.selfExtractionOrder = res.pickup_type_one
this.sameCityOrder = res.pickup_type_two
this.expressOrder = res.pickup_type_three
this.blessingAuthority = res.jurisdiction_blessing == 1 ? true : false
}
},
error: () => {
this.table_data_loading = false;
}
});
},
/**
* 分页
* @param int val 当前选择的页数
*/
currentChange(val) {
this.searchForm.page = val;
this.getOrderData();
},
/**
* 每页显示数量
* @param int val 数量
*/
sizeChange(val) {
this.searchForm.limit = val;
this.searchForm.page = 1;
this.getOrderData();
},
//导出
exportExcel() {
let secKillStatus = this.searchForm.secKillStatus;
let out_trade_no = this.searchForm.out_trade_no;
if (!this.searchForm.time.length) {
this.$confirm('确认导出(默认导出当月记录)?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
window.location.href = "{:U('secKillExport')}?secKillStatus=" + secKillStatus + "&out_trade_no=" + out_trade_no + "&time=" + this.getThisMonthTime();
}).catch(() => {
})
} else {
window.location.href = "{:U('secKillExport')}?secKillStatus=" + secKillStatus + "&out_trade_no=" + out_trade_no + "&time=" + this.searchForm.time;
}
},
/**
* @description 打开祝福语弹窗
* @param {Number} id 订单ID
*/
openBlessingDialog(id) {
this.blessingOrderId = id
this.blessingDialogVisible = true
}
},
created() {
this.searchForm.time = this.getThisMonthTime();
this.getOrderData();
this.checkOperateAuth({
wifiPrint: '/index.php/Retail/SecKill/linePrint',
secKillExport: '/index.php/Retail/SecKill/secKillExport',
sendGoods: '/index.php/Retail/Express/send_goods',
seeLogistics: '/index.php/Retail/Express/see_logistics',
useError: '/index.php/Retail/SecKill/fail',
}, (data) => {
this.operate = data;
})
}
})
</script>