要求:订单管理导出excel表格要有自定义(选择字段)和筛选功能。
PHP代码
/**
* @title 订单Excel内容生成
* @description 订单Excel内容生成
* @author
* @url /order/order/get_Excel
* @method *
* @param name:token require:1 default: desc:token
* @list id:id out_trade_no:订单编号 product_id:产品id price:价格 is_coupon:是否使用优惠券 coupon_id:优惠券id pay_price:实际支付价格 is_pay:是否支付 pay_time:支付时间 pay_type:支付类型 pay_status:订单状态 order_status:订单状态 create_time:创建时间 user_id:用户id title:订单标题 order_type:订单类型 contacts:联系人 phone:手机号 email:邮箱 remark:备注 travel_start:出行开始日期 travel_end:出行结束日期 success_time:完成时间 product_type:产品类型
* @return error_id:1-10-01-0006 校验失败
*/
public function get_Excel()
{
$message = input();
$data = array();
/*dump($message[0]['header']);
exit();*/
foreach ($message[0]['header'] as $k => $v) {
$data['key'][] = $k;
$data['value'][] = $v;
}
$field = implode(',',$data['key']);
/*dump($field);
exit();*/
$where = array();
foreach ($message[1]['data'] as $key => $value) {
if ($key == 'limit' || $key == 'page') {
unset($value);
continue;
}
if ($value === 0) {
continue;
}
/*if (empty($value)) {
unset($value);
}*/
if ($key == 'create_time' || $key == 'pay_time' || $key == 'travel_start' || $key == 'travel_end') {
if (!empty($value[0]) && !empty($value[1])) {
$start = strtotime($value[0]);
$end = strtotime($value[1]);
unset($value);
$where[] = [$key, '>=', $start];
$where[] = [$key, '<=', $end];
}
}
if ($key =='id'||$key =='out_trade_no'||$key =='phone'||$key =='coupon_id'||$key =='is_pay'||$key =='pay_type'||$key =='pay_status'||$key =='order_status'||$key=='is_coupon'||$key=='product_type'){
$where[] = [$key, '=', $value];
}
}
$data['list'] = Db::name('order')
->where($where)
->withAttr('pay_time', function ($value, $data) {
if (!empty($data['pay_time'])){
return date('Y-m-d H:i:s', $data['pay_time']);
}
})
->withAttr('create_time', function ($value, $data) {
if (!empty($data['create_time'])){
return date('Y-m-d H:i:s', $data['create_time']);
}
})
->withAttr('create_time', function ($value, $data) {
if (!empty($data['create_time'])){
return date('Y-m-d H:i:s', $data['create_time']);
}
})
->withAttr('travel_start', function ($value, $data) {
if (!empty($data['travel_start'])){
return date('Y-m-d H:i:s', $data['travel_start']);
}
})
->withAttr('travel_end', function ($value, $data) {
if (!empty($data['travel_end'])){
return date('Y-m-d H:i:s', $data['travel_end']);
}
})
->withAttr('success_time', function ($value, $data) {
if (!empty($data['success_time'])){
return date('Y-m-d H:i:s', $data['success_time']);
}
})
->field($field)
->order('id desc')->select();
foreach ($data['list'] as $k => $v) {
foreach ($v as $key => $value) {
if ($key === 'user_id') {
if (empty($v[$key])) {
$data['list'][$k][$key] = '用户不存在';
} elseif (!empty(get_curl('user', '/user/info', ['token' => $message['token'], 'id' => $v[$key]])['data']['nickname'])) {
$data['list'][$k][$key] = get_curl('user', '/user/info', ['token' => $message['token'], 'id' => $v[$key]])['data']['nickname'];
} else {
$data['list'][$k][$key] = '用户不存在';
}
}
if ($key === 'product_id') {
if (empty($v[$key])) {
$data['list'][$k][$key] = '产品名称不健全';
} elseif (!empty(get_curl('product', '/product/info', ['token' => $message['token'], 'id' => $v[$key]])['data']['title'])) {
$data['list'][$k][$key] = get_curl('product', '/product/info', ['token' => $message['token'], 'id' => $v[$key]])['data']['title'];
} else {
$data['list'][$k][$key] = '产品名称不健全';
}
}
if ($key === 'is_coupon') {
if (empty($v[$key])) {
$data['list'][$k][$key] = '未知';
} elseif ($v[$key] === 1) {
$data['list'][$k][$key] = '是';
} else {
$data['list'][$k][$key] = '否';
}
}
if ($key === 'is_pay') {
if (empty($v[$key])) {
$data['list'][$k][$key] = '未知';
} elseif ($v[$key] === 1) {
$data['list'][$k][$key] = '支付';
} else {
$data['list'][$k][$key] = '未支付';
}
}
if ($key === 'pay_type') {
if (empty($v[$key])) {
$data['list'][$k][$key] = '未知';
} elseif ($v[$key] === 'wx_pay') {
$data['list'][$k][$key] = '微信支付';
} else {
$data['list'][$k][$key] = '其他';
}
}
if ($key === 'pay_status') {
if (empty($v[$key])) {
$data['list'][$k][$key] = '未知';
} elseif ($v[$key] === 'paid') {
$data['list'][$k][$key] = '支付';
} else {
$data['list'][$k][$key] = '未支付';
}
}
//订单状态'refunded: 已退款','refunding: 退款中','cancel'已取消,'success'已完成,'wait_evaluate'待评价,'wait_travel'待出行,'obligation'待付款
if ($key === 'order_status') {
switch ($v[$key]){
case 'refunded':$data['list'][$k][$key] = '已退款'; break;
case 'refunding':$data['list'][$k][$key] = '退款中'; break;
case 'cancel':$data['list'][$k][$key] = '已取消'; break;
case 'success':$data['list'][$k][$key] = '已完成'; break;
case 'wait_evaluate':$data['list'][$k][$key] = '待评价'; break;
case 'wait_travel':$data['list'][$k][$key] = '待出行'; break;
case 'obligation':$data['list'][$k][$key] = '待付款'; break;
default :$data['list'][$k][$key] = '未知';
}
}
if ($key === 'product_type') {
if (empty($v[$key])) {
$data['list'][$k][$key] = '未知';
} elseif ($v[$key] === 'social') {
$data['list'][$k][$key] = '约玩';
} elseif ($v[$key] === 'product') {
$data['list'][$k][$key] = '产品';
} else {
$data['list'][$k][$key] = '其他';
}
}
}
}
/*dump($data['list']);
exit();*/
$msg['list'] = $data;
return $this->successJson($msg);
}
Vue代码
DownloadExcel() {
this.downloadLoading = true
var formThead = this.formThead;
for (var i in formThead) {
if (formThead[i] == false){
delete(formThead[i]);
}
}
for (var e in formThead) {
switch (e) {
case 'id': formThead[e]='id'; break;
case 'out_trade_no':formThead[e]= '订单编号';break;
case 'product_id':formThead[e]= '产品id';break;
case 'price':formThead[e]='价格';break;
case 'is_coupon':formThead[e]= '是否使用优惠券';break;
case 'coupon_id':formThead[e]= '优惠券id';break;
case 'pay_price':formThead[e]= '实际支付价格';break;
case 'is_pay':formThead[e]= '是否支付';break;
case 'pay_time':formThead[e]= '支付时间';break;
case 'pay_type':formThead[e]= '支付类型';break;
case 'pay_status':formThead[e]= '支付状态';break;
case 'order_status':formThead[e]= '订单状态';break;
case 'create_time':formThead[e]= '创建时间';break;
case 'user_id':formThead[e]= '用户姓名';break;
case 'title':formThead[e]= '订单标题';break;
case 'contacts':formThead[e]= '联系人';break;
case 'phone':formThead[e]= '手机号码';break;
case 'email':formThead[e]= '邮箱';break;
case 'remark':formThead[e]= '备注';break;
case 'travel_start':formThead[e]= '出行时间';break;
case 'travel_end': formThead[e]='出行结束时间';break;
case 'success_time':formThead[e]= '完成时间';break;
case 'product_type':formThead[e]= '产品类型';break;
case 'nickname':delete(formThead[e]);break;
case 'product':delete (formThead[e]);break;
}
}
console.log(formThead)
getExcel(store.getters.token, [{ header: formThead }, { data: this.listQuery }]).then(response => {
import('@/vendor/Export2Excel').then(excel => {
// console.log(response.data.list.value)
const tHeader = response.data.list.value
const filterVal = response.data.list.key
const list = response.data.list.list
const data = this.formatJson(filterVal, list)
excel.export_json_to_excel({
header: tHeader,
data,
filename: 'order_list',
autoWidth: true,
bookType: 'xlsx'
})
this.downloadLoading = false
})
}).catch(() => {
this.getLists()
this.$message({
type: 'info',
message: '失败!'
})
})
},
formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => {
if (j === 'timestamp') {
return parseTime(v[j])
} else {
return v[j]
}
}))
}
订单数据
listQuery: {
case: undefined,
id: undefined,
out_trade_no: undefined,
product_id: undefined,
product: undefined,
price: undefined,
is_coupon: undefined,
coupon_id: undefined,
pay_price: undefined,
is_pay: undefined,
pay_time: undefined,
pay_type: undefined,
pay_status: undefined,
order_status: undefined,
create_time: undefined,
user_id: undefined,
nickname: undefined,
title: undefined,
contacts: undefined,
phone: undefined,
email: undefined,
remark: undefined,
travel_start: undefined,
travel_end: undefined,
success_time: undefined,
product_type: undefined,
is_delete: undefined,
is_tickets: undefined,
tickets_buy_status: undefined,
is_cate: undefined,
cate_issue_status: undefined,
page: 1,
limit: 10
},