1384 lines
51 KiB
Vue
1384 lines
51 KiB
Vue
<template>
|
||
<div class="divBox">
|
||
<div class="selCard mb14">
|
||
<el-form ref="searchForm" :model="tableFrom" size="small" label-width="85px" inline>
|
||
<el-form-item label="订单状态:" style="display: block;" prop="status">
|
||
<el-radio-group v-model="tableFrom.status" type="button" @change="getList(1),getCardList()">
|
||
<el-radio-button label>全部 {{ '(' +orderChartType.all?orderChartType.all:0 + ')' }}</el-radio-button>
|
||
<el-radio-button label="1">待付款 {{ '(' +orderChartType.unpaid?orderChartType.unpaid:0+ ')' }}</el-radio-button>
|
||
<el-radio-button label="2">待发货 {{ '(' +orderChartType.unshipped?orderChartType.unshipped:0+ ')' }}</el-radio-button>
|
||
<el-radio-button label="3">待收货 {{ '(' +orderChartType.untake?orderChartType.untake:0+ ')' }}</el-radio-button>
|
||
<el-radio-button label="4">待评价 {{ '(' +orderChartType.unevaluate?orderChartType.unevaluate:0+ ')' }}</el-radio-button>
|
||
<el-radio-button label="5">交易完成 {{ '(' +orderChartType.complete?orderChartType.complete:0+ ')' }}</el-radio-button>
|
||
<el-radio-button label="6">已退款 {{ '(' +orderChartType.refund?orderChartType.refund:0+ ')' }}</el-radio-button>
|
||
<el-radio-button label="7">已删除 {{ '(' +orderChartType.del?orderChartType.del:0+ ')' }}</el-radio-button>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
<el-form-item label="时间选择:">
|
||
<el-date-picker v-model="timeVal" value-format="yyyy/MM/dd" format="yyyy/MM/dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 280px;" :picker-options="pickerOptions" @change="onchangeTime" />
|
||
</el-form-item>
|
||
<el-form-item label="发货方式:" prop="filter_delivery">
|
||
<el-select
|
||
v-model="tableFrom.filter_delivery"
|
||
placeholder="请选择"
|
||
class="filter-item selWidth"
|
||
clearable
|
||
@change="getList(1),getCardList()"
|
||
>
|
||
<el-option
|
||
v-for="item in dliveryWayList"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="商品名称:" prop="store_name">
|
||
<el-input v-model="tableFrom.store_name" placeholder="请输入商品名称" class="selWidth" clearable @keyup.enter.native="getList(1),getCardList()" />
|
||
</el-form-item>
|
||
<el-form-item label="总单单号:" prop="group_order_sn">
|
||
<el-input v-model="tableFrom.group_order_sn" placeholder="请输入总单订单号" class="selWidth" clearable @keyup.enter.native="getList(1),getCardList()" />
|
||
</el-form-item>
|
||
<el-form-item label="商品类型:" prop="filter_product">
|
||
<el-select
|
||
v-model="tableFrom.filter_product"
|
||
placeholder="请选择"
|
||
class="selWidth"
|
||
clearable
|
||
@change="getList(1),getCardList()"
|
||
>
|
||
<el-option
|
||
v-for="item in productTypeList"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="活动类型:" prop="activity_type">
|
||
<el-select
|
||
v-model="tableFrom.activity_type"
|
||
placeholder="请选择"
|
||
class="selWidth"
|
||
clearable
|
||
@change="getList(1),getCardList()"
|
||
>
|
||
<el-option
|
||
v-for="item in activityList"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="支付方式:" prop="pay_type">
|
||
<el-select
|
||
v-model="tableFrom.pay_type"
|
||
clearable
|
||
placeholder="请选择"
|
||
class="selWidth"
|
||
@change="getList(1),getCardList()"
|
||
>
|
||
<el-option label="余额" value="0" />
|
||
<el-option label="微信" value="1" />
|
||
<el-option label="支付宝" value="2" />
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="关键字:" prop="keywords">
|
||
<el-input v-model="tableFrom.keywords" placeholder="请输入订单号/收货人/联系方式" class="selWidth" clearable @keyup.enter.native="getList(1),getCardList()" />
|
||
</el-form-item>
|
||
<el-form-item label="用户信息:" prop="username">
|
||
<el-input v-model="tableFrom.username" placeholder="请输入用户昵称/手机号" class="selWidth" clearable @keyup.enter.native="getList(1),getCardList()" />
|
||
</el-form-item>
|
||
<el-form-item label="快递单号:" prop="delivery_id">
|
||
<el-input v-model="tableFrom.delivery_id" placeholder="请输入快递单号" class="selWidth" clearable @keyup.enter.native="getList(1),getCardList()" />
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-button type="primary" size="small" @click="getList(1),getCardList()">搜索</el-button>
|
||
<el-button size="small" @click="searchReset()">重置</el-button>
|
||
</el-form-item>
|
||
</el-form>
|
||
</div>
|
||
<cards-data v-if="cardLists.length>0" :card-lists="cardLists" />
|
||
<el-card class="dataBox">
|
||
<el-tabs v-if="headeNum.length > 0" v-model="tableFrom.order_type" @tab-click="getList(1),getCardList(),getHeaderList()">
|
||
<el-tab-pane v-for="(item,index) in headeNum" :key="index" :name="item.order_type.toString()" :label="item.title +'('+item.count +')' " />
|
||
</el-tabs>
|
||
<div class="mt5">
|
||
<el-button size="small" type="primary" class="mr14" @click="orderCancellation('')">订单核销</el-button>
|
||
<el-dropdown class="dropdown" @command="exports">
|
||
<span class="el-dropdown-link">
|
||
导出列表<i class="el-icon-arrow-down el-icon--right" />
|
||
</span>
|
||
<el-dropdown-menu slot="dropdown">
|
||
<el-dropdown-item command="1">导出订单</el-dropdown-item>
|
||
<el-dropdown-item command="2">导出发货单</el-dropdown-item>
|
||
</el-dropdown-menu>
|
||
</el-dropdown>
|
||
<el-upload
|
||
style="display:inline-block;"
|
||
size="small"
|
||
class="mr14 ml5"
|
||
:headers="myHeaders"
|
||
:action="fileUrl"
|
||
:on-success="handleSuccess"
|
||
:show-file-list="false"
|
||
>
|
||
<el-button size="small">导入批量发货</el-button>
|
||
</el-upload>
|
||
<el-button size="small" @click="getDeliveryList">批量发货记录</el-button>
|
||
<el-button size="small" @click="batchSend">批量发送货</el-button>
|
||
</div>
|
||
<el-table v-loading="listLoading" :data="tableData.data" size="small" class="table mt20" highlight-current-row :cell-class-name="addTdClass">
|
||
<el-table-column type="expand">
|
||
<template slot-scope="props">
|
||
<el-form label-position="left" inline class="demo-table-expand">
|
||
<el-form-item label="商品总价:">
|
||
<span>{{ props.row.total_price | filterEmpty }}</span>
|
||
</el-form-item>
|
||
<el-form-item label="下单时间:">
|
||
<span>{{ props.row.create_time }}</span>
|
||
</el-form-item>
|
||
<el-form-item label="用户备注:">
|
||
<span style="display: inline-block; width: 200px;">{{ props.row.mark | filterEmpty }}</span>
|
||
</el-form-item>
|
||
<el-form-item label="商家备注:">
|
||
<span>{{ props.row.remark | filterEmpty }}</span>
|
||
</el-form-item>
|
||
</el-form>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column width="50">
|
||
<template slot="header" slot-scope="scope">
|
||
<el-popover placement="top-start" width="100" trigger="hover" class="tabPop">
|
||
<div>
|
||
<span class="spBlock onHand" :class="{'check': chkName === 'dan'}" @click="onHandle('dan',scope.$index)">选中本页</span>
|
||
<span class="spBlock onHand" :class="{'check': chkName === 'duo'}" @click="onHandle('duo')">选中全部</span>
|
||
</div>
|
||
<el-checkbox slot="reference" :value="(chkName === 'dan' && checkedPage.indexOf(tableFrom.page) > -1) || chkName === 'duo'" @change="changeType" />
|
||
</el-popover>
|
||
</template>
|
||
<template slot-scope="scope">
|
||
<el-checkbox :value="checkedIds.indexOf(scope.row.order_id) > -1 || (chkName === 'duo' && noChecked.indexOf(scope.row.order_id) === -1)" @change="(v)=>changeOne(v,scope.row)" />
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="订单编号" min-width="170">
|
||
<template slot-scope="scope">
|
||
<span style="display: block;" v-text="scope.row.order_sn" />
|
||
<span v-show="scope.row.is_del > 0" style="color: #ED4014;display: block;">用户已删除</span>
|
||
</template>
|
||
</el-table-column>
|
||
|
||
<el-table-column prop="real_name" label="收货人/订购人" min-width="130" />
|
||
<el-table-column label="商品信息" min-width="330">
|
||
<template slot-scope="scope">
|
||
<div v-for="(val, i) in scope.row.orderProduct" :key="i" class="tabBox acea-row row-middle">
|
||
<div class="demo-image__preview">
|
||
<el-image :src="val.cart_info.product.image" :preview-src-list="[val.cart_info.product.image]" />
|
||
</div>
|
||
<span class="tabBox_tit">{{ val.cart_info.product.store_name + ' | ' }}{{ val.cart_info.productAttr.sku }}</span>
|
||
<span class="tabBox_pice">
|
||
<span v-if="scope.row.activity_type === 2 && val.cart_info.productPresellAttr">{{ '¥'+ val.cart_info.productPresellAttr.presell_price + ' x '+ val.product_num }}</span>
|
||
<span v-else-if="scope.row.activity_type === 3 && val.cart_info.productAssistAttr">{{ '¥'+ val.cart_info.productAssistAttr.assist_price + ' x '+ val.product_num }}</span>
|
||
<span v-else>{{ '¥'+ val.cart_info.productAttr.price + ' x '+ val.product_num }}</span>
|
||
<em v-if="val.refund_num < val.product_num && val.refund_num >= 0" style="color: red;font-style: normal;">(-{{ val.product_num - val.refund_num }})</em>
|
||
</span>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="实际支付" min-width="100">
|
||
<template slot-scope="scope">
|
||
<span>{{ scope.row.pay_price }}</span>
|
||
<p v-if="scope.row.finalOrder">尾款:{{ scope.row.finalOrder.pay_price }}</p>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="支付类型" min-width="80">
|
||
<template slot-scope="scope">
|
||
<span v-if="scope.row.paid === 1">{{ scope.row.pay_type | orderPayType }}</span>
|
||
<span v-else>--</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="支付状态" min-width="80">
|
||
<template slot-scope="scope">
|
||
<span>{{ scope.row.paid === 0 ? "未支付" : "已支付" }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="订单状态" min-width="100">
|
||
<template slot-scope="scope">
|
||
<span v-if="scope.row.is_del === 0">
|
||
<span v-if="scope.row.paid === 0">待付款</span>
|
||
<span v-else>
|
||
<span v-if="scope.row.order_type === 0 || scope.row.order_type === 2">{{ scope.row.status | orderStatusFilter }}</span>
|
||
<span v-else>{{ scope.row.status | takeOrderStatusFilter }}</span>
|
||
</span>
|
||
</span>
|
||
<span v-else>已删除</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="create_time" label="下单时间" min-width="130" />
|
||
<el-table-column key="8" label="操作" min-width="150" fixed="right">
|
||
<template slot-scope="scope">
|
||
<el-button type="text" size="small" @click="onOrderDetails(scope.row.order_id)">详情</el-button>
|
||
<el-button v-if="orderFilter(scope.row)" type="text" size="small" @click="onRefundDetail(scope.row.order_sn)">查看退款单</el-button>
|
||
<el-button v-if="scope.row.paid === 0 && scope.row.is_del===0 && scope.row.activity_type != 2" type="text" size="small" @click="edit(scope.row.order_id)">编辑</el-button>
|
||
<el-button v-if="(scope.row.order_type == 0 || scope.row.order_type == 2) && scope.row.status === 0 && scope.row.paid === 1" type="text" size="small" @click="send(scope.row,scope.row.order_id)">发送货</el-button>
|
||
<el-button v-if="scope.row.is_del !== 0" type="text" size="small" @click.native="handleDelete(scope.row, scope.$index)">删除</el-button>
|
||
<el-button type="text" size="small" @click="onOrderOpenRefund(scope.row.order_id)">开启退款</el-button>
|
||
<el-button v-if="scope.row.order_type == 1 && scope.row.status === 0 && scope.row.paid === 1" type="text" size="small" @click.native="orderCancellation(scope.row.verify_code)">去核销</el-button>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<div class="block">
|
||
<el-pagination background :page-size="tableFrom.limit" :current-page="tableFrom.page" layout="total, prev, pager, next, jumper" :total="tableData.total" @size-change="handleSizeChange" @current-change="pageChange" />
|
||
</div>
|
||
</el-card>
|
||
<!--记录-->
|
||
<el-dialog title="操作记录" :visible.sync="dialogVisible" width="700px">
|
||
<el-table v-loading="LogLoading" border :data="tableDataLog.data" style="width: 100%">
|
||
<el-table-column prop="order_id" align="center" label="订单ID" min-width="80" />
|
||
<el-table-column prop="change_message" label="操作记录" align="center" min-width="280" />
|
||
<el-table-column prop="change_time" label="操作时间" align="center" min-width="280" />
|
||
</el-table>
|
||
<div class="block">
|
||
<el-pagination :page-size="tableFromLog.limit" :current-page="tableFromLog.page" layout="prev, pager, next, jumper" :total="tableDataLog.total" @size-change="handleSizeChangeLog" @current-change="pageChangeLog" />
|
||
</div>
|
||
</el-dialog>
|
||
<!--编辑-->
|
||
<el-dialog title="修改订单" :visible.sync="editVisible" width="700px">
|
||
<el-form ref="formValidate" :model="formValidate" label-width="120px" @submit.native.prevent>
|
||
<el-form-item label="订单总价:">
|
||
<el-input-number v-model="formValidate.total_price" :min="0" placeholder="请输入订单总价" @change="changePrice" />
|
||
</el-form-item>
|
||
<el-form-item label="实际支付邮费:">
|
||
<el-input-number v-model="formValidate.pay_postage" :min="0" placeholder="请输入订单油费" @change="changePrice" />
|
||
</el-form-item>
|
||
<el-form-item label="优惠金额:">
|
||
<span>{{ formValidate.coupon_price }}</span>
|
||
</el-form-item>
|
||
<el-form-item label="积分抵扣金额:">
|
||
<span>{{ formValidate.integral_price }}</span>
|
||
</el-form-item>
|
||
<el-form-item label="实际支付金额:">
|
||
<span>{{ formValidate.pay_price }}</span>
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button type="primary" @click="editConfirm">确定</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
<!--发送货-->
|
||
<el-dialog :title="isBatch ? '批量发货':'订单发送货'" :visible.sync="sendVisible" width="900px" :before-close="handleClose">
|
||
<el-form ref="shipment" :model="shipment" :rules="rules" label-width="120px" @submit.native.prevent>
|
||
<el-form-item v-if="isResend && noLogistics != 3 && tableFrom.order_type != 2" :label="shipment.delivery_type == 1 || shipment.delivery_type == 4 ? '原快递公司:' : '送货人姓名:'">
|
||
<span>{{ original.delivery_name }}</span>
|
||
</el-form-item>
|
||
<el-form-item v-if="isResend && noLogistics != 3 && tableFrom.order_type != 2" :label="shipment.delivery_type == 1 || shipment.delivery_type == 4 ? '原快递单号:' : '送货人手机号:'">
|
||
<span>{{ original.delivery_id }}</span>
|
||
</el-form-item>
|
||
<el-form-item label="选择类型:" prop="delivery_type">
|
||
<el-radio-group v-model="shipment.delivery_type" @change="changeSend">
|
||
<el-radio v-if="!isBatch && tableFrom.order_type != 2 && orderType != 1" :label="1">手动发货</el-radio>
|
||
<!-- <el-radio :label="3" class="radio"> {{ orderType == 1 ? '虚拟发货' : '无需物流' }}</el-radio>
|
||
<el-radio v-if="isDump==1 && tableFrom.order_type != 2 && orderType !=1 && !isBatch" :label="4" class="radio">电子面单打印</el-radio>
|
||
<el-radio v-if="tableFrom.order_type != 2 && orderType !=1" :label="2">自己配送</el-radio>
|
||
<el-radio v-if="tableFrom.order_type != 2 && orderType !=1 && !isBatch" :label="5">同城配送</el-radio> -->
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.delivery_type == 5 && tableFrom.order_type != 2 && orderType !=1" label="选择发货点:" prop="station_id">
|
||
<el-select
|
||
v-model="shipment.station_id"
|
||
size="small"
|
||
placeholder="请选择配送发货点"
|
||
class="pageWidth"
|
||
>
|
||
<el-option
|
||
v-for="(item,index) in storeList"
|
||
:key="item.value+index"
|
||
:label="item.label"
|
||
:value="item.value"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item v-if="(shipment.delivery_type == 1 || shipment.delivery_type == 4) && tableFrom.order_type != 2 && orderType !=1" label="快递公司:" prop="delivery_name">
|
||
<el-select
|
||
v-model="shipment.delivery_name"
|
||
filterable
|
||
size="small"
|
||
placeholder="请选择快递公司"
|
||
class="pageWidth"
|
||
@change="getTempsLst(shipment.delivery_name)"
|
||
>
|
||
<el-option
|
||
v-for="item in deliveryList"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.delivery_type == 5 && tableFrom.order_type != 2 && orderType !=1" label="包裹重量(kg):" prop="cargo_weight">
|
||
<el-input-number v-model="shipment.cargo_weight" style="width: 200px;" size="small" placeholder="请输入包裹重量" />
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.delivery_type == 5 && tableFrom.order_type != 2 && orderType !=1" label="配送备注:">
|
||
<el-input v-model="shipment.mark" type="textarea" size="small" class="pageWidth" placeholder="请输入配送单备注" />
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.delivery_type == 1 && tableFrom.order_type != 2 && orderType !=1" label="快递单号:" prop="delivery_id">
|
||
<el-input v-model="shipment.delivery_id" size="small" class="pageWidth" placeholder="请输入快递单号" />
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.delivery_type == 4 && tableFrom.order_type != 2 && orderType !=1" label="电子面单:" prop="temp_id">
|
||
<el-select
|
||
v-model="shipment.temp_id"
|
||
size="small"
|
||
placeholder="请选择电子面单"
|
||
class="pageWidth"
|
||
>
|
||
<el-option
|
||
v-for="(item,index) in eleTempsLst"
|
||
:key="item.temp_id+index"
|
||
:label="item.title"
|
||
:value="item.temp_id"
|
||
/>
|
||
</el-select>
|
||
<el-button type="text" @click="getPicture()">预览</el-button>
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.delivery_type == 4 && tableFrom.order_type != 2 && orderType !=1" label="寄件人姓名:" prop="from_name">
|
||
<el-input v-model="shipment.from_name" size="small" class="pageWidth" placeholder="请输入寄件人姓名" />
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.delivery_type == 4 && tableFrom.order_type != 2 && orderType !=1" label="寄件人电话:" prop="from_tel">
|
||
<el-input v-model="shipment.from_tel" size="small" class="pageWidth" placeholder="请输入寄件人电话" />
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.delivery_type == 2 && tableFrom.order_type != 2 && orderType !=1" label="送货人姓名:" prop="to_name">
|
||
<el-input v-model="shipment.to_name" size="small" maxlength="10" class="pageWidth" placeholder="请输入送货人姓名" />
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.delivery_type == 2 && tableFrom.order_type != 2 && orderType !=2" label="送货人手机号:" prop="to_phone">
|
||
<el-input v-model="shipment.to_phone" size="small" class="pageWidth" placeholder="请输入送货人手机号" />
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.delivery_type == 4 && tableFrom.order_type != 2 && orderType !=1" label="寄件人地址:" prop="from_addr">
|
||
<el-input v-model="shipment.from_addr" type="textarea" size="small" class="pageWidth" placeholder="请输入寄件人地址" />
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.type != 4 && activityType != 2 && (productList.length > 1 || productNum > 1)" label="分单发货:">
|
||
<el-switch
|
||
v-model="shipment.is_split"
|
||
:active-value="1"
|
||
:inactive-value="0"
|
||
:width="55"
|
||
active-text="开启"
|
||
inactive-text="关闭"
|
||
/>
|
||
<p class="area-desc">可选择表格中的商品单独发货,发货后会生成新的订单且不能撤回,请谨慎操作!</p>
|
||
</el-form-item>
|
||
<el-form-item v-if="shipment.is_split == 1 && tableFrom.order_type != 2 && (productList.length > 1 || productNum > 1)" label="">
|
||
<el-table
|
||
ref="multipleSelection"
|
||
:data="productList"
|
||
tooltip-effect="dark"
|
||
size="mini"
|
||
class="table-line"
|
||
:row-key="(row) => { return row.product_id }"
|
||
@selection-change="handleSelectionChange"
|
||
>
|
||
<el-table-column align="center" type="selection" :reserve-selection="true" min-width="50" />
|
||
<el-table-column align="center" label="商品信息" min-width="200">
|
||
<template slot-scope="scope">
|
||
<div class="acea-row" style="align-items: center;">
|
||
<div class="demo-image__preview">
|
||
<el-image :src="scope.row.cart_info.product.image" :preview-src-list="[scope.row.cart_info.product.image]" />
|
||
</div>
|
||
<span class="priceBox" style="width: 150px;">{{ scope.row.cart_info.product.store_name }}</span>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="规格" min-width="80">
|
||
<template slot-scope="scope">
|
||
<span class="priceBox">{{ scope.row.cart_info.productAttr.sku }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="商品售价" min-width="80">
|
||
<template slot-scope="scope">
|
||
<span class="priceBox">{{ scope.row.cart_info.productAttr.price }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="总数" min-width="80">
|
||
<template slot-scope="scope">
|
||
<span class="priceBox">{{ scope.row.stock_num }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="待发数量" align="center" min-width="120">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row['product_num_input']"
|
||
type="number"
|
||
:min="0"
|
||
:max="scope.row.refund_num"
|
||
size="small"
|
||
class="priceBox"
|
||
@blur="limitCount(scope.row)"
|
||
/>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</el-form-item>
|
||
<el-form-item label="备注:" prop="remark">
|
||
<el-input v-model="shipment.remark" type="textarea" class="pageWidth" placeholder="请输入备注" />
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button size="small" @click="handleClose">取 消</el-button>
|
||
<el-button type="primary" size="small" @click="submitForm('shipment')">提交</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
<!--电子面单预览-->
|
||
<el-dialog v-if="pictureVisible" :visible.sync="pictureVisible" width="500px">
|
||
<img :src="pictureUrl" class="pictures">
|
||
</el-dialog>
|
||
<!--详情-->
|
||
<order-detail
|
||
ref="orderDetail"
|
||
:order-id="orderId"
|
||
:drawer="drawer"
|
||
@closeDrawer="closeDrawer"
|
||
@changeDrawer="changeDrawer"
|
||
@reSend="reSend"
|
||
@onOrderRefund="onOrderRefund"
|
||
@send="send"
|
||
@getList="getList"
|
||
/>
|
||
<!--导出订单列表-->
|
||
<file-list ref="exportList" />
|
||
<!--导出订单列表-->
|
||
<delivery-record ref="deliveryList" />
|
||
<!--订单核销-->
|
||
<order-cancellate ref="orderCancellate" @getList="getList" />
|
||
<!--退款-->
|
||
<order-refund ref="orderRefund" @refundSuccess="refundSuccess" />
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
// +----------------------------------------------------------------------
|
||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||
// +----------------------------------------------------------------------
|
||
// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
|
||
// +----------------------------------------------------------------------
|
||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||
// +----------------------------------------------------------------------
|
||
// | Author: CRMEB Team <admin@crmeb.com>
|
||
// +----------------------------------------------------------------------
|
||
import {
|
||
orderListApi,
|
||
chartApi,
|
||
orderUpdateApi,
|
||
orderDetailApi,
|
||
orderDeliveryApi,
|
||
batchDeliveryApi,
|
||
orderLogApi,
|
||
orderDeleteApi,
|
||
orderRemarkApi,
|
||
orderPrintApi,
|
||
exportOrderApi,
|
||
orderCancellationApi,
|
||
orderHeadListApi,
|
||
exportInvoiceApi,
|
||
cardListApi,
|
||
expressLst,
|
||
exprTempsLst,
|
||
getEleTempData,
|
||
getDeliveryStoreLst,
|
||
openRefundApi
|
||
} from '@/api/order'
|
||
import createWorkBook from '@/utils/newToExcel.js'
|
||
import { serveInfoApi } from '@/api/setting'
|
||
import orderDetail from './orderDetails.vue'
|
||
import fileList from '@/components/exportFile/fileList'
|
||
import deliveryRecord from '@/components/deliveryRecord/index'
|
||
import orderCancellate from './orderCancellate'
|
||
import orderRefund from './orderRefund'
|
||
import cardsData from '@/components/cards/index'
|
||
import { getToken } from '@/utils/auth'
|
||
import SettingMer from '@/libs/settingMer'
|
||
import { roterPre } from '@/settings'
|
||
import timeOptions from '@/utils/timeOptions'
|
||
// 修改引入打印扩展
|
||
import printJS from 'print-js'
|
||
export default {
|
||
components: {
|
||
orderDetail,
|
||
cardsData,
|
||
fileList,
|
||
deliveryRecord,
|
||
orderCancellate,
|
||
orderRefund
|
||
},
|
||
data() {
|
||
return {
|
||
fileUrl: SettingMer.https + '/store/import/delivery',
|
||
pickerOptions: timeOptions,
|
||
myHeaders: { 'X-Token': getToken() },
|
||
orderId: 0,
|
||
tableData: {
|
||
data: [],
|
||
total: 0
|
||
},
|
||
listLoading: true,
|
||
roterPre: roterPre,
|
||
tableFrom: {
|
||
order_sn: this.$route.query.order_sn ? this.$route.query.order_sn : '',
|
||
group_order_sn: '',
|
||
order_type: this.$route.query.order_type || '-1',
|
||
keywords: '',
|
||
store_name: '',
|
||
delivery_id: '',
|
||
status: this.$route.query.status || '',
|
||
date: '',
|
||
page: 1,
|
||
limit: 20,
|
||
type: this.$route.query.order_type || '1',
|
||
username: '',
|
||
filter_delivery: '',
|
||
filter_product: '',
|
||
pay_type: '',
|
||
order_id: this.$route.query.id ? this.$route.query.id : '',
|
||
activity_type: ''
|
||
},
|
||
activityList: [
|
||
{ value: 0, label: '普通订单' },
|
||
{ value: 1, label: '秒杀订单' },
|
||
{ value: 2, label: '预售订单' },
|
||
{ value: 3, label: '助力订单' },
|
||
{ value: 4, label: '拼团订单' }
|
||
],
|
||
dliveryWayList: [
|
||
{ value: 1, label: '快递订单' },
|
||
{ value: 2, label: '配送订单' },
|
||
{ value: 4, label: '核销订单' },
|
||
{ value: 3, label: '虚拟发货' },
|
||
{ value: 6, label: '自动发货' }
|
||
], // 发货方式
|
||
productTypeList: [
|
||
{ value: 1, label: '实物商品' },
|
||
{ value: 2, label: '虚拟商品' },
|
||
{ value: 3, label: '卡密商品' }
|
||
], // 商品类型
|
||
orderChartType: {},
|
||
timeVal: [],
|
||
fromList: {
|
||
title: '选择时间',
|
||
custom: true,
|
||
fromTxt: [{
|
||
text: '全部',
|
||
val: ''
|
||
},
|
||
{
|
||
text: '今天',
|
||
val: 'today'
|
||
},
|
||
{
|
||
text: '昨天',
|
||
val: 'yesterday'
|
||
},
|
||
{
|
||
text: '最近7天',
|
||
val: 'lately7'
|
||
},
|
||
{
|
||
text: '最近30天',
|
||
val: 'lately30'
|
||
},
|
||
{
|
||
text: '本月',
|
||
val: 'month'
|
||
},
|
||
{
|
||
text: '本年',
|
||
val: 'year'
|
||
}
|
||
]
|
||
},
|
||
ids: '',
|
||
tableFromLog: {
|
||
page: 1,
|
||
limit: 10
|
||
},
|
||
tableDataLog: {
|
||
data: [],
|
||
total: 0
|
||
},
|
||
LogLoading: false,
|
||
dialogVisible: false,
|
||
fileVisible: false,
|
||
editVisible: false,
|
||
sendVisible: false,
|
||
pictureVisible: false,
|
||
drawer: false,
|
||
cardLists: [],
|
||
orderDatalist: null,
|
||
headeNum: [],
|
||
editId: '',
|
||
formValidate: {
|
||
total_price: '',
|
||
pay_postage: '',
|
||
pay_price: '',
|
||
integral_price: '',
|
||
coupon_price: ''
|
||
},
|
||
deliveryList: [],
|
||
eleTempsLst: [],
|
||
productList: [], // 订单商品
|
||
productNum: 0,
|
||
storeList: [], // 门店列表
|
||
multipleSelection: [],
|
||
shipment: {
|
||
delivery_type: 1,
|
||
station_id: '',
|
||
is_split: '0',
|
||
split: []
|
||
},
|
||
original: {
|
||
delivery_name: '',
|
||
delivery_id: ''
|
||
},
|
||
isResend: false,
|
||
chkName: '',
|
||
checkedPage: [],
|
||
checkedIds: [], // 订单当前页选中的数据
|
||
noChecked: [], // 订单全选状态下当前页不选中的数据
|
||
allCheck: false,
|
||
isBatch: false,
|
||
delivery_name: '',
|
||
isDump: false,
|
||
noLogistics: false,
|
||
orderType: 0,
|
||
activityType: 0,
|
||
rules: {
|
||
delivery_type: [
|
||
{ required: true, message: '请选择发送货方式', trigger: 'change' }
|
||
],
|
||
station_id: [
|
||
{ required: true, message: '请选择发货点', trigger: 'change' }
|
||
],
|
||
delivery_name: [
|
||
{ required: true, message: '请选择快递公司', trigger: 'change' }
|
||
],
|
||
to_name: [
|
||
{ required: true, message: '请输入送货人姓名', trigger: 'blur' }
|
||
],
|
||
delivery_id: [
|
||
{ required: true, message: '请输入快递单号', trigger: 'blur' }
|
||
],
|
||
cargo_weight: [
|
||
{ required: true, message: '请输入包裹重量', trigger: 'blur' }
|
||
],
|
||
to_phone: [
|
||
{ required: true, message: '请输入送货人手机号', trigger: 'blur' },
|
||
{ pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }
|
||
],
|
||
temp_id: [
|
||
{ required: true, message: '请选择电子面单', trigger: 'change' }
|
||
],
|
||
from_name: [
|
||
{ required: true, message: '请输入寄件人姓名', trigger: 'blur' }
|
||
],
|
||
from_tel: [
|
||
{ required: true, message: '请输入寄件人电话', trigger: 'blur' },
|
||
{ pattern: /^1(3|4|5|6|7|8|9)\d{9}$/, message: '请输入正确的联系方式', trigger: 'blur' }
|
||
],
|
||
from_addr: [
|
||
{ required: true, message: '请输入寄件人地址', trigger: 'blur' }
|
||
]
|
||
}
|
||
}
|
||
},
|
||
mounted() {
|
||
if (this.$route.query.hasOwnProperty('order_sn')) {
|
||
this.tableFrom.order_sn = this.$route.query.order_sn
|
||
} else {
|
||
this.tableFrom.order_sn = ''
|
||
}
|
||
this.isOpenDump()
|
||
this.headerList()
|
||
this.getCardList()
|
||
this.getExpressLst()
|
||
this.getList(1)
|
||
this.getHeaderList()
|
||
this.getStoreList()
|
||
},
|
||
methods: {
|
||
// 开启退款
|
||
onOrderOpenRefund(id) {
|
||
this.$confirm('此操作将开启退款, 是否继续?', '提示', {
|
||
confirmButtonText: '确定',
|
||
cancelButtonText: '取消',
|
||
type: 'warning'
|
||
}).then(() => {
|
||
openRefundApi(id).then((res)=>{
|
||
if(res.status == '200'){
|
||
this.$message({
|
||
type: 'success',
|
||
message: '开启退款!'
|
||
});
|
||
}else{
|
||
this.$message({
|
||
type: 'error',
|
||
message: res.message
|
||
});
|
||
}
|
||
console.log(res, "res");
|
||
})
|
||
// this.$message({
|
||
// type: 'success',
|
||
// message: '开启退款!'
|
||
// });
|
||
}).catch(() => {
|
||
|
||
});
|
||
},
|
||
/** 重置 */
|
||
searchReset() {
|
||
this.timeVal = []
|
||
this.tableFrom.date = ''
|
||
this.$refs.searchForm.resetFields()
|
||
this.getList(1)
|
||
},
|
||
// 回
|
||
limitCount(row) {
|
||
if (row.stock > row.product_num)row.stock = row.product_num
|
||
},
|
||
changeDrawer(v) {
|
||
this.drawer = v
|
||
},
|
||
closeDrawer() {
|
||
this.drawer = false
|
||
},
|
||
// 分单发货选择商品
|
||
handleSelectionChange(val) {
|
||
this.multipleSelection = val
|
||
const data = []
|
||
this.multipleSelection.map((item) => {
|
||
data.push({ id: item.order_product_id, num: item.product_num })
|
||
})
|
||
this.ids = data
|
||
},
|
||
// 是否开启电子面单
|
||
isOpenDump() {
|
||
serveInfoApi().then((res) => {
|
||
this.isDump = res.data.crmeb_serve_dump
|
||
if (res.data.crmeb_serve_dump == 1) this.getEleTempData()
|
||
}).catch((res) => {
|
||
this.$message.error(res.message)
|
||
})
|
||
},
|
||
// 获取快递公司列表
|
||
getExpressLst() {
|
||
expressLst().then((res) => {
|
||
this.deliveryList = res.data
|
||
}).catch((res) => {
|
||
this.$message.error(res.message)
|
||
})
|
||
},
|
||
// 获取电子面单列表
|
||
getTempsLst(name) {
|
||
exprTempsLst({ com: name }).then((res) => {
|
||
this.eleTempsLst = res.data.data
|
||
})
|
||
},
|
||
// 获取电子面单默认数据
|
||
getEleTempData() {
|
||
getEleTempData().then((res) => {
|
||
const data = res.data
|
||
const delivery_type = this.shipment.delivery_type
|
||
this.shipment = {
|
||
from_name: data.mer_from_name,
|
||
from_addr: data.mer_from_addr,
|
||
from_tel: data.mer_from_tel,
|
||
delivery_type: delivery_type,
|
||
delivery_name: data.mer_from_com,
|
||
temp_id: ''
|
||
// temp_id: data.mer_config_temp_id
|
||
}
|
||
if (data.mer_from_com != '') {
|
||
this.getTempsLst(data.mer_from_com)
|
||
}
|
||
})
|
||
.catch((res) => {
|
||
this.$message.error(res.message)
|
||
})
|
||
},
|
||
// 获取门店列表
|
||
getStoreList() {
|
||
getDeliveryStoreLst().then((res) => {
|
||
this.storeList = res.data
|
||
}).catch((res) => {
|
||
this.$message.error(res.message)
|
||
})
|
||
},
|
||
changeSend(e) {
|
||
this.$refs['shipment'].clearValidate()
|
||
if (e == 3) {
|
||
// 如果是无需配送,就重置拆单信息
|
||
this.shipment.is_split = '0'
|
||
delete this.shipment.split
|
||
}
|
||
},
|
||
getPicture(name) {
|
||
if (this.shipment.temp_id) {
|
||
this.eleTempsLst.forEach((o, i) => {
|
||
if (o['temp_id'] == this.shipment.temp_id) {
|
||
this.pictureVisible = true
|
||
this.pictureUrl = o['pic']
|
||
}
|
||
})
|
||
} else {
|
||
this.$message.error('选择电子面单后才可以预览')
|
||
}
|
||
},
|
||
// 批量发送货
|
||
batchSend() {
|
||
if (!this.allCheck && this.checkedIds.length == 0) {
|
||
return this.$message.warning('请先选择订单')
|
||
} else {
|
||
this.isBatch = true
|
||
this.sendVisible = true
|
||
this.shipment.delivery_type = 2
|
||
this.shipment.select_type = this.allCheck ? 'all' : 'select'
|
||
if (this.allCheck) {
|
||
this.shipment.where = this.tableFrom
|
||
} else {
|
||
this.shipment.order_id = this.checkedIds
|
||
}
|
||
}
|
||
},
|
||
handleClose() {
|
||
this.sendVisible = false
|
||
this.$refs['shipment'].resetFields()
|
||
},
|
||
onHandle(name) {
|
||
this.chkName = this.chkName === name ? '' : name
|
||
this.changeType(!(this.chkName === ''))
|
||
},
|
||
changeType(v) {
|
||
if (v) {
|
||
if (!this.chkName) {
|
||
this.chkName = 'dan'
|
||
}
|
||
} else {
|
||
this.chkName = ''
|
||
this.allCheck = false
|
||
}
|
||
const index = this.checkedPage.indexOf(this.tableFrom.page)
|
||
if (this.chkName === 'dan') {
|
||
this.checkedPage.push(this.tableFrom.page)
|
||
} else if (index > -1) {
|
||
this.checkedPage.splice(index, 1)
|
||
}
|
||
this.syncCheckedId()
|
||
},
|
||
syncCheckedId() {
|
||
const ids = this.tableData.data.map(v => v.order_id)
|
||
if (this.chkName === 'duo') {
|
||
this.checkedIds = []
|
||
this.allCheck = true
|
||
} else if (this.chkName === 'dan') {
|
||
this.allCheck = false
|
||
ids.forEach(id => {
|
||
const index = this.checkedIds.indexOf(id)
|
||
if (index === -1) {
|
||
this.checkedIds.push(id)
|
||
}
|
||
})
|
||
} else {
|
||
ids.forEach(id => {
|
||
const index = this.checkedIds.indexOf(id)
|
||
if (index > -1) {
|
||
this.checkedIds.splice(index, 1)
|
||
}
|
||
})
|
||
}
|
||
},
|
||
// 分开选择
|
||
changeOne(v, row) {
|
||
if (v) {
|
||
if (this.chkName === 'duo') {
|
||
const index = this.noChecked.indexOf(row.order_id)
|
||
if (index > -1) this.noChecked.splice(index, 1)
|
||
} else {
|
||
const index = this.checkedIds.indexOf(row.order_id)
|
||
if (index === -1) this.checkedIds.push(row.order_id)
|
||
}
|
||
} else {
|
||
if (this.chkName === 'duo') {
|
||
const index = this.noChecked.indexOf(row.order_id)
|
||
if (index === -1) this.noChecked.push(row.order_id)
|
||
} else {
|
||
const index = this.checkedIds.indexOf(row.order_id)
|
||
if (index > -1) this.checkedIds.splice(index, 1)
|
||
}
|
||
}
|
||
},
|
||
// 头部
|
||
getHeaderList() {
|
||
orderHeadListApi()
|
||
.then((res) => {
|
||
this.headeNum = res.data
|
||
})
|
||
.catch((res) => {
|
||
this.$message.error(res.message)
|
||
})
|
||
},
|
||
// 订单筛选
|
||
orderFilter(item) {
|
||
let status = false
|
||
item.orderProduct.forEach((el) => {
|
||
if (el.refund_num < el.product_num) {
|
||
status = true
|
||
}
|
||
})
|
||
return status
|
||
},
|
||
// 退款详情页
|
||
onRefundDetail(sn) {
|
||
this.$router.push({
|
||
path: 'refund',
|
||
query: {
|
||
sn: sn
|
||
}
|
||
})
|
||
},
|
||
// 订单退款
|
||
onOrderRefund(id) {
|
||
this.$refs.orderRefund.getOrderDetails(id)
|
||
},
|
||
// 退款回调
|
||
refundSuccess() {
|
||
setTimeout(() => {
|
||
this.drawer = false
|
||
this.getList()
|
||
}, 500)
|
||
},
|
||
// 表格某一行添加特定的样式
|
||
addTdClass(val) {
|
||
if (val.row.status > 0 && val.row.paid == 1) {
|
||
for (let i = 0; i < val.row.orderProduct.length; i++) {
|
||
if (val.row.orderProduct[i].refund_num >= 0 && val.row.orderProduct[i].refund_num < val.row.orderProduct[i].product_num) {
|
||
return 'row-bg'
|
||
}
|
||
}
|
||
} else {
|
||
return ' '
|
||
}
|
||
},
|
||
// 详情
|
||
onOrderDetails(id) {
|
||
this.orderId = id
|
||
this.$refs.orderDetail.getInfo(id)
|
||
this.drawer = true
|
||
},
|
||
async exports(value) {
|
||
const excelData = JSON.parse(JSON.stringify(this.tableFrom)); let data = []
|
||
excelData.page = 1
|
||
excelData.ids = this.checkedIds.toString()
|
||
let pageCount = 1
|
||
let lebData = {}
|
||
for (let i = 0; i < pageCount; i++) {
|
||
lebData = value == 1 ? await this.downOrderData(excelData) : await this.downInvoiceData(excelData)
|
||
pageCount = Math.ceil(lebData.count / excelData.limit)
|
||
if (lebData.export.length) {
|
||
data = data.concat(lebData.export)
|
||
excelData.page++
|
||
}
|
||
}
|
||
createWorkBook(lebData.header, lebData.title, data, lebData.foot, lebData.filename)
|
||
return
|
||
},
|
||
/** 订单 */
|
||
downOrderData(excelData) {
|
||
return new Promise((resolve, reject) => {
|
||
exportOrderApi(excelData).then((res) => {
|
||
return resolve(res.data)
|
||
})
|
||
})
|
||
},
|
||
/** 发货单 */
|
||
downInvoiceData(excelData) {
|
||
return new Promise((resolve, reject) => {
|
||
exportInvoiceApi(excelData).then((res) => {
|
||
return resolve(res.data)
|
||
})
|
||
})
|
||
},
|
||
// 批量发货记录
|
||
getDeliveryList() {
|
||
this.$refs.deliveryList.getList()
|
||
},
|
||
// 上传成功
|
||
handleSuccess(response) {
|
||
if (response.status === 200) {
|
||
this.$message.success(response.message)
|
||
} else {
|
||
this.$message.error(response.message)
|
||
}
|
||
},
|
||
// 下载物流公司对照表
|
||
downloadLogistics() {
|
||
window.open(SettingMer.https + `/excel/download/express?token=` + getToken())
|
||
},
|
||
// 订单核销
|
||
orderCancellation(code) {
|
||
const that = this
|
||
that.$refs.orderCancellate.dialogVisible = true
|
||
if (code) {
|
||
that.$refs.orderCancellate.productDetails(code)
|
||
that.$refs.orderCancellate.isColum = true
|
||
} else {
|
||
that.$refs.orderCancellate.isColum = false
|
||
that.$refs.orderCancellate.resetData()
|
||
}
|
||
},
|
||
// 去核销
|
||
handleCancellation(code) {
|
||
this.$confirm('确定核销此订单?', '提示', {
|
||
confirmButtonText: '确定',
|
||
cancelButtonText: '取消',
|
||
type: 'warning'
|
||
})
|
||
.then(() => {
|
||
orderCancellationApi(code)
|
||
.then((res) => {
|
||
this.$message.success(res.message)
|
||
this.getList('')
|
||
})
|
||
.catch((res) => {
|
||
this.$message.error(res.message)
|
||
this.LogLoading = false
|
||
})
|
||
})
|
||
.catch(() => {
|
||
this.$message({
|
||
type: 'info',
|
||
message: '已取消核销'
|
||
})
|
||
})
|
||
},
|
||
// 订单记录
|
||
onOrderLog(id) {
|
||
this.dialogVisible = true
|
||
this.LogLoading = true
|
||
orderLogApi(id, this.tableFromLog)
|
||
.then((res) => {
|
||
this.tableDataLog.data = res.data.list
|
||
this.tableDataLog.total = res.data.count
|
||
this.LogLoading = false
|
||
})
|
||
.catch((res) => {
|
||
this.$message.error(res.message)
|
||
this.LogLoading = false
|
||
})
|
||
},
|
||
pageChangeLog(page) {
|
||
this.tableFromLog.page = page
|
||
this.getList('')
|
||
},
|
||
handleSizeChangeLog(val) {
|
||
this.tableFromLog.limit = val
|
||
this.getList('')
|
||
},
|
||
// 打印订单
|
||
printOrder(id) {
|
||
orderPrintApi(id)
|
||
.then((res) => {
|
||
this.$message.success(res.message)
|
||
})
|
||
.catch((res) => {
|
||
this.$message.error(res.message)
|
||
})
|
||
},
|
||
// 订单删除
|
||
handleDelete(row, idx) {
|
||
if (row.is_del === 1) {
|
||
this.$modalSure().then(() => {
|
||
orderDeleteApi(row.order_id)
|
||
.then(({
|
||
message
|
||
}) => {
|
||
this.$message.success(message)
|
||
this.tableData.data.splice(idx, 1)
|
||
})
|
||
.catch(({
|
||
message
|
||
}) => {
|
||
this.$message.error(message)
|
||
})
|
||
})
|
||
} else {
|
||
this.$confirm(
|
||
'您选择的的订单存在用户未删除的订单,无法删除用户未删除的订单!',
|
||
'提示', {
|
||
confirmButtonText: '确定',
|
||
type: 'error'
|
||
}
|
||
)
|
||
}
|
||
},
|
||
// 备注
|
||
onOrderMark(id) {
|
||
this.$modalForm(orderRemarkApi(id)).then(() => this.getList(''))
|
||
},
|
||
// 选择时间
|
||
selectChange(tab) {
|
||
this.timeVal = []
|
||
this.tableFrom.date = tab
|
||
this.getCardList()
|
||
this.getList(1)
|
||
},
|
||
// 具体日期
|
||
onchangeTime(e) {
|
||
this.timeVal = e
|
||
this.tableFrom.date = e ? this.timeVal.join('-') : ''
|
||
this.getCardList()
|
||
this.getList(1)
|
||
},
|
||
// 编辑
|
||
edit(id) {
|
||
this.editId = id
|
||
this.editVisible = true
|
||
orderDetailApi(id).then(res => {
|
||
this.formValidate = {
|
||
pay_postage: res.data.pay_postage,
|
||
total_price: res.data.total_price,
|
||
integral_price: res.data.integral_price,
|
||
coupon_price: (Number(res.data.coupon_price) + Number(res.data.svip_discount)).toFixed(2),
|
||
pay_price: (Number(res.data.total_price) + Number(res.data.pay_postage) - Number(res.data.coupon_price) - Number(res.data.svip_discount)).toFixed(2)
|
||
}
|
||
this.loading = false
|
||
}).catch(({ message }) => {
|
||
this.loading = false
|
||
this.$message.error(message)
|
||
})
|
||
},
|
||
editConfirm() {
|
||
orderUpdateApi(this.editId, this.formValidate).then(res => {
|
||
this.editVisible = false
|
||
this.$message.success(res.message)
|
||
this.getList('')
|
||
}).catch(({ message }) => {
|
||
this.$message.error(message)
|
||
})
|
||
},
|
||
changePrice() {
|
||
this.formValidate.pay_price = (this.formValidate.total_price + this.formValidate.pay_postage - this.formValidate.coupon_price).toFixed(2)
|
||
},
|
||
// 发货
|
||
send(row, id) {
|
||
this.isBatch = false
|
||
this.sendVisible = true
|
||
this.isResend = false
|
||
this.orderId = id
|
||
this.activityType = row.activity_type
|
||
this.orderType = row.is_virtual
|
||
this.shipment.delivery_type = this.orderType === 1 ? 3 : 1
|
||
row.orderProduct.forEach(item => {
|
||
item.stock_num = item.product_num
|
||
})
|
||
this.productList = row.orderProduct
|
||
this.productNum = row.orderProduct && row.orderProduct[0] && row.orderProduct[0]['product_num'] || 0
|
||
delete this.shipment.order_id
|
||
if (this.tableFrom.order_type == 2) this.shipment.delivery_type = 3
|
||
},
|
||
sendReset() {
|
||
this.shipment = {
|
||
delivery_type: 1,
|
||
delivery_name: '',
|
||
delivery_id: '',
|
||
from_name: '',
|
||
from_addr: '',
|
||
from_tel: '',
|
||
temp_id: ''
|
||
}
|
||
},
|
||
// 修改发货信息
|
||
reSend(id) {
|
||
this.isBatch = false
|
||
this.sendVisible = true
|
||
this.orderId = id
|
||
this.isResend = true
|
||
delete this.shipment.order_id
|
||
orderDetailApi(id).then(res => {
|
||
const data = res.data
|
||
this.shipment.delivery_type = (!this.isDump && data.delivery_type == 4) ? 1 : Number(data.delivery_type)
|
||
this.noLogistics = data.delivery_type
|
||
this.loading = false
|
||
this.original = {
|
||
delivery_name: data.delivery_name,
|
||
delivery_id: data.delivery_id
|
||
}
|
||
this.loading = false
|
||
}).catch(({ message }) => {
|
||
this.loading = false
|
||
this.$message.error(message)
|
||
})
|
||
},
|
||
submitForm(name) {
|
||
if (this.shipment.delivery_type == 2) {
|
||
this.shipment.delivery_name = this.shipment.to_name
|
||
this.shipment.delivery_id = this.shipment.to_phone
|
||
}
|
||
if (this.shipment.is_split != '0' && this.shipment.is_split && this.orderType != 2) {
|
||
if (!this.multipleSelection.length) {
|
||
return this.$message.warning('请选择拆单商品!')
|
||
}
|
||
const data = []
|
||
this.multipleSelection.map((item) => {
|
||
data.push({ id: item.order_product_id, num: item.product_num_input })
|
||
})
|
||
this.ids = data
|
||
this.shipment.split = this.ids
|
||
}
|
||
this.$refs[name].validate(valid => {
|
||
if (valid) {
|
||
delete this.shipment.to_name
|
||
delete this.shipment.to_phone
|
||
console.log(this.shipment)
|
||
// return
|
||
this.isBatch ? batchDeliveryApi(this.shipment).then(res => {
|
||
this.sendVisible = false
|
||
this.$message.success(res.message)
|
||
this.getList('')
|
||
if (this.drawer) this.$refs.orderDetail.getInfo(id)
|
||
// this.$refs[name].resetFields()
|
||
this.sendReset()
|
||
}).catch(({ message }) => {
|
||
this.$message.error(message)
|
||
})
|
||
: orderDeliveryApi(this.orderId, this.shipment).then(res => {
|
||
this.sendVisible = false
|
||
this.$message.success(res.message)
|
||
this.getList('')
|
||
// this.$refs[name].resetFields()
|
||
if (this.drawer) this.$refs.orderDetail.getInfo(id)
|
||
this.sendReset()
|
||
// 修改增加打印机打印
|
||
if (res.data.label) this.printImg(res.data.label)
|
||
}).catch(({ message }) => {
|
||
this.$message.error(message)
|
||
})
|
||
} else {
|
||
return
|
||
}
|
||
})
|
||
},
|
||
// 修改增加打印方法
|
||
printImg(url) {
|
||
printJS({
|
||
// printable: 'http://api.kuaidi100.com/label/getImage/20230518/9CBFE5F980044698A54CF19EB1585125',
|
||
printable: url,
|
||
type: 'image',
|
||
documentTitle: '快递信息',
|
||
style: `img{
|
||
width: 100%;
|
||
height: 476px;
|
||
}`
|
||
})
|
||
},
|
||
// 列表
|
||
getList(num) {
|
||
this.listLoading = true
|
||
this.tableFrom.page = num || this.tableFrom.page
|
||
orderListApi(this.tableFrom)
|
||
.then((res) => {
|
||
res.data.list.forEach(item => {
|
||
item.orderProduct.forEach(cell => {
|
||
cell.product_num_input = cell.refund_num
|
||
})
|
||
})
|
||
this.tableData.data = res.data.list
|
||
this.tableData.total = res.data.count
|
||
// this.cardLists = res.data.stat
|
||
this.listLoading = false
|
||
})
|
||
.catch((res) => {
|
||
this.$message.error(res.message)
|
||
this.listLoading = false
|
||
})
|
||
},
|
||
getCardList() {
|
||
cardListApi(this.tableFrom)
|
||
.then((res) => {
|
||
this.cardLists = res.data
|
||
})
|
||
.catch((res) => {
|
||
this.$message.error(res.message)
|
||
})
|
||
},
|
||
pageChange(page) {
|
||
this.tableFrom.page = page
|
||
this.getList('')
|
||
},
|
||
handleSizeChange(val) {
|
||
this.tableFrom.limit = val
|
||
this.getList('')
|
||
},
|
||
headerList() {
|
||
chartApi()
|
||
.then((res) => {
|
||
this.orderChartType = res.data
|
||
})
|
||
.catch((res) => {
|
||
this.$message.error(res.message)
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.pictures{
|
||
max-width: 100%;
|
||
}
|
||
.area-desc{
|
||
margin: 0;
|
||
color: #999;
|
||
font-size: 12px;
|
||
}
|
||
.spBlock {
|
||
cursor: pointer;
|
||
display: block;
|
||
padding: 5px 0;
|
||
}
|
||
.check {
|
||
color: #00a2d4;
|
||
}
|
||
.el-icon-arrow-down {
|
||
font-size: 12px;
|
||
}
|
||
.tabBox_tit {
|
||
width: 53%;
|
||
font-size: 12px !important;
|
||
margin: 0 2px 0 10px;
|
||
letter-spacing: 1px;
|
||
padding: 5px 0;
|
||
box-sizing: border-box;
|
||
}
|
||
::v-deep .row-bg {
|
||
.cell {
|
||
color: red !important;
|
||
}
|
||
}
|
||
::v-deep .table-line th.is-leaf{
|
||
line-height: 20px;
|
||
}
|
||
.headTab{
|
||
position: relative;
|
||
.headBtn{
|
||
position: absolute;
|
||
right: 0;
|
||
top: -6px;
|
||
}
|
||
}
|
||
.dropdown{
|
||
padding: 0 10px;
|
||
border: 1px solid var(--prev-color-primary);
|
||
margin-right: 10px;
|
||
line-height: 28px;
|
||
border-radius: 4px;
|
||
}
|
||
</style>
|