mabo 2021-07-22 14:25:59 +08:00
commit 2f8946f372
8 changed files with 505 additions and 547 deletions

View File

@ -21,10 +21,7 @@ export default {
buyer: "https://buyer-api.pickmall.cn", buyer: "https://buyer-api.pickmall.cn",
seller: "https://store-api.pickmall.cn", seller: "https://store-api.pickmall.cn",
manager: "https://admin-api.pickmall.cn" manager: "https://admin-api.pickmall.cn"
// common: 'http://192.168.0.101:8890',
// buyer: 'http://192.168.0.101:8888',
// seller: 'http://192.168.0.101:8889',
// manager: 'http://192.168.0.101:8887'
}, },
api_prod: { api_prod: {
common: "https://common-api.pickmall.cn", common: "https://common-api.pickmall.cn",

View File

@ -228,7 +228,7 @@
{ {
title: "售后状态", title: "售后状态",
key: "serviceStatus", key: "serviceStatus",
width: 110, width: 200,
render: (h, params) => { render: (h, params) => {
if (params.row.serviceStatus == "APPLY") { if (params.row.serviceStatus == "APPLY") {
return h('div', [h('tag', {props: {color: "blue"}}, '申请中'),]); return h('div', [h('tag', {props: {color: "blue"}}, '申请中'),]);

View File

@ -88,15 +88,15 @@
</dd> </dd>
</dl> </dl>
<dl> <dl>
<dt>申请退款金额</dt> <dt>申请退款金额</dt>
<dd>{{ afterSaleInfo.applyRefundPrice | unitPrice('¥') }}</dd> <dd>{{ afterSaleInfo.applyRefundPrice | unitPrice('¥') }}</dd>
</dl> </dl>
<dl> <dl>
<dt>实际退款金额</dt> <dt>实际退款金额</dt>
<dd> <dd>
<Input v-model="params.actualRefundPrice" style="width:260px"/> <Input v-model="params.actualRefundPrice" style="width:260px" />
</dd> </dd>
</dl> </dl>
<dl> <dl>
<dt>备注信息</dt> <dt>备注信息</dt>
<dd> <dd>
@ -174,12 +174,47 @@
{{afterSaleInfo.orderSn}} {{afterSaleInfo.orderSn}}
</dd> </dd>
</dl> </dl>
<dl v-if="afterSaleInfo.bankDepositName">
<dt>银行开户行</dt>
<dd>
{{afterSaleInfo.bankDepositName}}
</dd>
</dl>
<dl v-if="afterSaleInfo.bankAccountName">
<dt>银行开户名</dt>
<dd>
{{afterSaleInfo.bankAccountName}}
</dd>
</dl>
<dl v-if="afterSaleInfo.bankAccountNumber">
<dt>银行卡号</dt>
<dd>
{{afterSaleInfo.bankAccountNumber}}
</dd>
</dl>
</div> </div>
<!--"--> <!--"-->
<div class="div-form-default" v-if="afterSaleInfo.afterSaleAllowOperationVO && afterSaleInfo.afterSaleAllowOperationVO.refund"> <div class="div-form-default" v-if="afterSaleInfo.afterSaleAllowOperationVO && afterSaleInfo.afterSaleAllowOperationVO.refund">
<h3>平台退款</h3> <h3>平台退款</h3>
<dl>
<dt>银行开户行</dt>
<dd>
{{afterSaleInfo.bankDepositName}}
</dd>
</dl>
<dl>
<dt>银行开户名</dt>
<dd>
{{afterSaleInfo.bankAccountName}}
</dd>
</dl>
<dl>
<dt>银行卡号</dt>
<dd>
{{afterSaleInfo.bankAccountNumber}}
</dd>
</dl>
<dl> <dl>
<dt>备注信息</dt> <dt>备注信息</dt>
<dd> <dd>
@ -200,15 +235,15 @@
<h3>物流信息</h3> <h3>物流信息</h3>
<dl> <dl>
<dt> <dt>
收货 收货商家
</dt> </dt>
<dd> <dd>
{{afterSaleInfo.sconsigneeName}} {{afterSaleInfo.storeName}}
</dd> </dd>
</dl> </dl>
<dl> <dl>
<dt> <dt>
收货手机 收货商家手机
</dt> </dt>
<dd> <dd>
{{afterSaleInfo.sconsigneeMobile}} {{afterSaleInfo.sconsigneeMobile}}
@ -227,7 +262,7 @@
物流公司 物流公司
</dt> </dt>
<dd> <dd>
{{afterSaleInfo.slogisticsNo}} {{afterSaleInfo.mlogisticsName}}
</dd> </dd>
</dl> </dl>
<dl> <dl>
@ -235,7 +270,7 @@
物流单号 物流单号
</dt> </dt>
<dd> <dd>
{{afterSaleInfo.slogisticsCode}} {{afterSaleInfo.mlogisticsNo}}
</dd> </dd>
</dl> </dl>
<dl> <dl>
@ -447,9 +482,14 @@ export default {
this.afterSaleImage = (res.result.afterSaleImage || "").split(","); this.afterSaleImage = (res.result.afterSaleImage || "").split(",");
//退 //退
if (this.afterSaleInfo.mconsigneeAddressPath) if (this.afterSaleInfo.mconsigneeAddressPath)
this.afterSaleInfo.mconsigneeAddressPath = this.afterSaleInfo.mconsigneeAddressPath.replaceAll(","," "); this.afterSaleInfo.mconsigneeAddressPath =
this.afterSaleInfo.mconsigneeAddressPath.replaceAll(",", " ");
this.$set(this.params,'actualRefundPrice', this.afterSaleInfo.applyRefundPrice) this.$set(
this.params,
"actualRefundPrice",
this.afterSaleInfo.applyRefundPrice
);
} }
}); });
}, },
@ -601,10 +641,10 @@ export default {
margin: 0; margin: 0;
border-bottom: dotted 1px #e6e6e6; border-bottom: dotted 1px #e6e6e6;
overflow: hidden; overflow: hidden;
display: flex;
dt { dt {
display: inline-block; flex: 2;
width: 13%;
vertical-align: top; vertical-align: top;
text-align: right; text-align: right;
padding: 15px 1% 15px 0; padding: 15px 1% 15px 0;
@ -613,8 +653,7 @@ export default {
} }
dd { dd {
display: inline-block; flex: 10;
width: 84%;
padding: 15px 0 15px 1%; padding: 15px 0 15px 1%;
margin: 0; margin: 0;
border-left: 1px solid #f0f0f0; border-left: 1px solid #f0f0f0;
@ -727,10 +766,10 @@ dl dt {
margin: 0; margin: 0;
border-bottom: dotted 1px #e6e6e6; border-bottom: dotted 1px #e6e6e6;
overflow: hidden; overflow: hidden;
display: flex;
dt { dt {
display: inline-block; display: inline-block;
width: 13%; flex: 2;
vertical-align: top; vertical-align: top;
text-align: right; text-align: right;
padding: 15px 1% 15px 0; padding: 15px 1% 15px 0;
@ -740,7 +779,7 @@ dl dt {
dd { dd {
display: inline-block; display: inline-block;
width: 84%; flex: 10;
padding: 15px 0 15px 1%; padding: 15px 0 15px 1%;
margin: 0; margin: 0;
border-left: 1px solid #f0f0f0; border-left: 1px solid #f0f0f0;

View File

@ -2,174 +2,147 @@
<div class="search"> <div class="search">
<div> <div>
<Col> <Col>
<div > <div>
<Card style="height: 60px"> <Card style="height: 60px">
<div style=""> <div style="">
<Button
v-if="allowOperation.editPrice" <Button v-if="allowOperation.editPrice" @click="modifyPrice"></Button>
@click="modifyPrice"
type="primary" <Button v-if="allowOperation.editConsignee" @click="editAddress" type="primary" ghost>修改收货地址</Button>
>调整价格</Button
> <Button v-if="allowOperation.cancel" @click="orderCancel" type="warning" ghost>订单取消</Button>
<Button
v-if="allowOperation.editConsignee" <Button v-if="orderInfo.order.orderStatus === 'UNPAID'" @click="confirmPrice" type="primary"></Button>
@click="editAddress" <Button @click="orderLog" type="info" ghost>订单日志</Button>
type="primary" </div>
>修改收货地址</Button </Card>
> <Card style="height: 400px">
<Button <div style="width: 30%; float: left; margin-left: 20px">
v-if="allowOperation.cancel" <div class="div-item">
@click="orderCancel" <div class="div-item-left">订单号</div>
type="primary" <div class="div-item-right">{{ orderInfo.order.sn }}</div>
>订单取消</Button
>
<Button
v-if="orderInfo.order.orderStatus === 'UNPAID'"
@click="confirmPrice"
type="success"
>收款</Button>
<Button @click="orderLog" type="primary"
>订单日志</Button
>
</div> </div>
</Card> <div class="div-item">
<Card style="height: 400px"> <div class="div-item-left">订单来源</div>
<div style="width: 30%; float: left; margin-left: 20px"> <div class="div-item-right">
<div class="div-item"> {{ orderInfo.order.clientType | clientTypeWay}}
<div class="div-item-left">订单号</div>
<div class="div-item-right">{{ orderInfo.order.sn }}</div>
</div>
<div class="div-item">
<div class="div-item-left">订单来源</div>
<div class="div-item-right">
{{ orderInfo.order.clientType | clientTypeWay}}
</div>
</div>
<div class="div-item">
<div class="div-item-left">订单状态</div>
<div class="div-item-right">
{{ orderInfo.orderStatusValue }}
</div>
</div>
<div class="div-item">
<div class="div-item-left">下单时间</div>
<div class="div-item-right">
{{ orderInfo.order.createTime }}
</div>
</div> </div>
</div> </div>
<div style="width: 30%; float: left; margin-left: 20px">
<div class="div-item" v-if="orderInfo.order.needReceipt == false">
<div class="div-item-left">发票信息</div>
<div class="div-item-right">暂无发票信息</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true"> <div class="div-item">
<div class="div-item-left">发票抬头</div> <div class="div-item-left">订单状态</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptTitle ? orderInfo.receipt.receiptTitle : '暂无' }}</div> <div class="div-item-right">
</div> {{ orderInfo.orderStatusValue }}
<div class="div-item" v-if="orderInfo.order.needReceipt == true && orderInfo.receipt.taxpayerId">
<div class="div-item-left">发票税号</div>
<div class="div-item-right">{{ orderInfo.receipt.taxpayerId ? orderInfo.receipt.taxpayerId : '暂无' }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">发票内容</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptContent ? orderInfo.receipt.receiptContent : '暂无' }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">发票金额</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptPrice ? orderInfo.receipt.receiptPrice : '暂无' | unitPrice('¥')}}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">是否开票</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptStatus == 0 ? '未开' : '已开' }}</div>
</div> </div>
</div> </div>
<div style="width: 36%; float: left">
<div class="div-item">
<div class="div-item-left">收货信息</div>
<div class="div-item-right">
{{ orderInfo.order.consigneeName }}
{{ orderInfo.order.consigneeMobile }}
{{ orderInfo.order.consigneeAddressPath }}
{{ orderInfo.order.consigneeDetail }}
</div>
</div>
<div class="div-item">
<div class="div-item-left">支付方式</div>
<div class="div-item-right">
{{ orderInfo.paymentMethodValue }}
</div>
</div>
<div class="div-item"> <div class="div-item">
<div class="div-item-left">买家留言</div> <div class="div-item-left">下单时间</div>
<div class="div-item-right">{{ orderInfo.order.remark }}</div> <div class="div-item-right">
</div> {{ orderInfo.order.createTime }}
<div class="div-item" v-if="orderInfo.order.needReceipt == false">
<div class="div-item-left">发票信息</div>
<div class="div-item-right">暂无发票信息</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">发票抬头</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptTitle ? orderInfo.receipt.receiptTitle : '暂无' }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true && orderInfo.receipt.taxpayerId">
<div class="div-item-left">发票税号</div>
<div class="div-item-right">{{ orderInfo.receipt.taxpayerId ? orderInfo.receipt.taxpayerId : '暂无' }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">发票内容</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptContent ? orderInfo.receipt.receiptContent : '暂无' }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">发票金额</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptPrice ? orderInfo.receipt.receiptPrice : '暂无' | unitPrice('¥')}}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">是否开票</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptStatus == 0 ? '未开' : '已开' }}</div>
</div>
<div class="div-item">
<div class="div-item-left">配送方式</div>
<div class="div-item-right">
{{ orderInfo.deliveryMethodValue }}
</div>
</div> </div>
</div> </div>
</Card> </div>
</div> <div style="width: 30%; float: left; margin-left: 20px">
<div class="div-item" v-if="orderInfo.order.needReceipt == false">
<div class="div-item-left">发票信息</div>
<div class="div-item-right">暂无发票信息</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">发票抬头</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptTitle ? orderInfo.receipt.receiptTitle : '暂无' }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true && orderInfo.receipt.taxpayerId">
<div class="div-item-left">发票税号</div>
<div class="div-item-right">{{ orderInfo.receipt.taxpayerId ? orderInfo.receipt.taxpayerId : '暂无' }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">发票内容</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptContent ? orderInfo.receipt.receiptContent : '暂无' }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">发票金额</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptPrice ? orderInfo.receipt.receiptPrice : '暂无' | unitPrice('¥')}}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">是否开票</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptStatus == 0 ? '未开' : '已开' }}</div>
</div>
</div>
<div style="width: 36%; float: left">
<div class="div-item">
<div class="div-item-left">收货信息</div>
<div class="div-item-right">
{{ orderInfo.order.consigneeName }}
{{ orderInfo.order.consigneeMobile }}
{{ orderInfo.order.consigneeAddressPath }}
{{ orderInfo.order.consigneeDetail }}
</div>
</div>
<div class="div-item">
<div class="div-item-left">支付方式</div>
<div class="div-item-right">
{{ orderInfo.paymentMethodValue }}
</div>
</div>
<div class="div-item">
<div class="div-item-left">买家留言</div>
<div class="div-item-right">{{ orderInfo.order.remark }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == false">
<div class="div-item-left">发票信息</div>
<div class="div-item-right">暂无发票信息</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">发票抬头</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptTitle ? orderInfo.receipt.receiptTitle : '暂无' }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true && orderInfo.receipt.taxpayerId">
<div class="div-item-left">发票税号</div>
<div class="div-item-right">{{ orderInfo.receipt.taxpayerId ? orderInfo.receipt.taxpayerId : '暂无' }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">发票内容</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptContent ? orderInfo.receipt.receiptContent : '暂无' }}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">发票金额</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptPrice ? orderInfo.receipt.receiptPrice : '暂无' | unitPrice('¥')}}</div>
</div>
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
<div class="div-item-left">是否开票</div>
<div class="div-item-right">{{ orderInfo.receipt.receiptStatus == 0 ? '未开' : '已开' }}</div>
</div>
<div class="div-item">
<div class="div-item-left">配送方式</div>
<div class="div-item-right">
{{ orderInfo.deliveryMethodValue }}
</div>
</div>
</div>
</Card>
</div>
</Col> </Col>
<Card> <Card>
<Table <Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom">
:loading="loading"
border
:columns="columns"
:data="data"
ref="table"
sortable="custom"
>
<!-- 商品栏目格式化 --> <!-- 商品栏目格式化 -->
<template slot="goodsSlot" slot-scope="{row}"> <template slot="goodsSlot" slot-scope="{row}">
<div style="margin-top: 5px; height: 80px; display: flex"> <div style="margin-top: 5px; height: 80px; display: flex">
<div style=""> <div style="">
<img <img :src="row.image" style="height: 60px; margin-top: 1px; width: 60px" />
:src="row.image"
style="height: 60px; margin-top: 1px; width: 60px"
/>
</div> </div>
<div style="margin-left: 13px"> <div style="margin-left: 13px">
@ -183,7 +156,7 @@
</span> </span>
<Poptip trigger="hover" style="display: block;" title="扫码在手机中查看" transfer> <Poptip trigger="hover" style="display: block;" title="扫码在手机中查看" transfer>
<div slot="content"> <div slot="content">
<vue-qr :text="wapLinkTo(row.goodsId,row.skuId)" :margin="0" colorDark="#000" colorLight="#fff" :size="150"></vue-qr> <vue-qr :text="wapLinkTo(row.goodsId,row.skuId)" :margin="0" colorDark="#000" colorLight="#fff" :size="150"></vue-qr>
</div> </div>
<img src="../../../assets/qrcode.svg" class="hover-pointer" width="20" height="20" alt=""> <img src="../../../assets/qrcode.svg" class="hover-pointer" width="20" height="20" alt="">
</Poptip> </Poptip>
@ -195,9 +168,7 @@
<ul> <ul>
<li> <li>
<span class="label">商品总额</span> <span class="label">商品总额</span>
<span class="txt" <span class="txt">{{ orderInfo.order.priceDetailDTO.goodsPrice | unitPrice('¥') }}</span>
>{{ orderInfo.order.priceDetailDTO.goodsPrice | unitPrice('¥') }}</span
>
</li> </li>
<li> <li>
<span class="label">优惠金额</span> <span class="label">优惠金额</span>
@ -216,9 +187,7 @@
<li> <li>
<span class="label">应付金额</span> <span class="label">应付金额</span>
<span class="txt flowPrice" <span class="txt flowPrice">¥{{ orderInfo.order.priceDetailDTO.flowPrice | unitPrice }}</span>
>¥{{ orderInfo.order.priceDetailDTO.flowPrice | unitPrice }}</span
>
</li> </li>
</ul> </ul>
</div> </div>
@ -231,21 +200,9 @@
<span>修改金额</span> <span>修改金额</span>
</p> </p>
<div> <div>
<Form <Form ref="modifyPriceForm" :model="modifyPriceForm" label-position="left" :label-width="100" :rules="modifyPriceValidate">
ref="modifyPriceForm"
:model="modifyPriceForm"
label-position="left"
:label-width="100"
:rules="modifyPriceValidate"
>
<FormItem label="订单金额" prop="price"> <FormItem label="订单金额" prop="price">
<Input <Input v-model="modifyPriceForm.price" size="large" number maxlength="9"><span slot="append"></span></Input>
v-model="modifyPriceForm.price"
size="large"
number
maxlength="9"
><span slot="append"></span></Input
>
</FormItem> </FormItem>
</Form> </Form>
</div> </div>
@ -261,20 +218,9 @@
<span>订单取消</span> <span>订单取消</span>
</p> </p>
<div> <div>
<Form <Form ref="orderCancelForm" :model="orderCancelForm" label-position="left" :label-width="100" :rules="orderCancelValidate">
ref="orderCancelForm"
:model="orderCancelForm"
label-position="left"
:label-width="100"
:rules="orderCancelValidate"
>
<FormItem label="取消原因" prop="reason"> <FormItem label="取消原因" prop="reason">
<Input <Input v-model="orderCancelForm.reason" type="textarea" :autosize="{ minRows: 2, maxRows: 5 }" placeholder="请输入取消原因"></Input>
v-model="orderCancelForm.reason"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
placeholder="请输入取消原因"
></Input>
</FormItem> </FormItem>
</Form> </Form>
</div> </div>
@ -290,55 +236,21 @@
<span>修改收件信息</span> <span>修改收件信息</span>
</p> </p>
<div> <div>
<Form <Form ref="addressForm" :model="addressForm" label-position="left" :label-width="100" :rules="addressRule">
ref="addressForm"
:model="addressForm"
label-position="left"
:label-width="100"
:rules="addressRule"
>
<FormItem label="收件人" prop="consigneeName"> <FormItem label="收件人" prop="consigneeName">
<Input <Input v-model="addressForm.consigneeName" size="large" maxlength="20"></Input>
v-model="addressForm.consigneeName"
size="large"
maxlength="20"
></Input>
</FormItem> </FormItem>
<FormItem label="联系方式" prop="consigneeMobile"> <FormItem label="联系方式" prop="consigneeMobile">
<Input <Input v-model="addressForm.consigneeMobile" size="large" maxlength="11"></Input>
v-model="addressForm.consigneeMobile"
size="large"
maxlength="11"
></Input>
</FormItem> </FormItem>
<FormItem label="地址信息" prop="consigneeAddressPath"> <FormItem label="地址信息" prop="consigneeAddressPath">
<Input <Input v-model="region" disabled style="width: 305px" v-if="showRegion == false" />
v-model="region" <Button v-if="showRegion == false" @click="regionClick" :loading="submitLoading" type="primary" icon="ios-create-outline" style="margin-left: 8px">
disabled
style="width: 305px"
v-if="showRegion == false"
/>
<Button
v-if="showRegion == false"
@click="regionClick"
:loading="submitLoading"
type="primary"
icon="ios-create-outline"
style="margin-left: 8px"
>修改
</Button> </Button>
<region <region style="width: 400px" @selected="selectedRegion" v-if="showRegion == true" />
style="width: 400px"
@selected="selectedRegion"
v-if="showRegion == true"
/>
</FormItem> </FormItem>
<FormItem label="详细地址" prop="consigneeDetail"> <FormItem label="详细地址" prop="consigneeDetail">
<Input <Input v-model="addressForm.consigneeDetail" size="large" maxlength="50"></Input>
v-model="addressForm.consigneeDetail"
size="large"
maxlength="50"
></Input>
</FormItem> </FormItem>
</Form> </Form>
</div> </div>
@ -353,14 +265,7 @@
<span>订单日志</span> <span>订单日志</span>
</p> </p>
<div class="order-log-div"> <div class="order-log-div">
<Table <Table :loading="loading" border :columns="orderLogColumns" :data="orderInfo.orderLogs" ref="table" sortable="custom"></Table>
:loading="loading"
border
:columns="orderLogColumns"
:data="orderInfo.orderLogs"
ref="table"
sortable="custom"
></Table>
</div> </div>
<div slot="footer" style="text-align: right"> <div slot="footer" style="text-align: right">
@ -553,14 +458,13 @@ export default {
{ {
title: "时间", title: "时间",
key: "createTime", key: "createTime",
width: 180 width: 180,
}, },
{ {
title: "日志", title: "日志",
key: "message", key: "message",
tooltip: true, tooltip: true,
minWidth: 200, minWidth: 200,
}, },
], ],
}; };
@ -667,8 +571,10 @@ export default {
this.addressForm.consigneeName = this.orderInfo.order.consigneeName; this.addressForm.consigneeName = this.orderInfo.order.consigneeName;
this.addressForm.consigneeMobile = this.orderInfo.order.consigneeMobile; this.addressForm.consigneeMobile = this.orderInfo.order.consigneeMobile;
this.addressForm.consigneeDetail = this.orderInfo.order.consigneeDetail; this.addressForm.consigneeDetail = this.orderInfo.order.consigneeDetail;
this.addressForm.consigneeAddressPath = this.orderInfo.order.consigneeAddressPath; this.addressForm.consigneeAddressPath =
this.addressForm.consigneeAddressIdPath = this.orderInfo.order.consigneeAddressIdPath; this.orderInfo.order.consigneeAddressPath;
this.addressForm.consigneeAddressIdPath =
this.orderInfo.order.consigneeAddressIdPath;
}, },
// //
editAddressSubmit() { editAddressSubmit() {

View File

@ -22,10 +22,7 @@ export default {
buyer: "https://buyer-api.pickmall.cn", buyer: "https://buyer-api.pickmall.cn",
seller: "https://store-api.pickmall.cn", seller: "https://store-api.pickmall.cn",
manager: "https://admin-api.pickmall.cn" manager: "https://admin-api.pickmall.cn"
// common: 'http://192.168.0.101:8890',
// buyer: 'http://192.168.0.101:8888',
// seller: 'http://192.168.0.101:8889',
// manager: 'http://192.168.0.101:8887'
}, },
api_prod: { api_prod: {
common: "https://common-api.pickmall.cn", common: "https://common-api.pickmall.cn",

View File

@ -262,6 +262,7 @@
this.loading = false; this.loading = false;
if (res.success) { if (res.success) {
this.data = res.result.records; this.data = res.result.records;
this.total = res.result.total; this.total = res.result.total;
} }
}); });

View File

@ -46,12 +46,14 @@
<Button @click="handleReset" class="search-btn">重置</Button> <Button @click="handleReset" class="search-btn">重置</Button>
</Form> </Form>
</Row> </Row>
<Table <Table
:loading="loading" :loading="loading"
border border
class="mt_10" class="mt_10"
:columns="columns" :columns="columns"
:data="data" :data="data"
ref="table" ref="table"
> >
@ -142,7 +144,7 @@
title: "申请退款金额", title: "申请退款金额",
key: "applyRefundPrice", key: "applyRefundPrice",
width: 130, width: 130,
sortType: "desc",
render: (h, params) => { render: (h, params) => {
return h( return h(
"div", "div",
@ -258,6 +260,7 @@
this.loading = false; this.loading = false;
if (res.success) { if (res.success) {
this.data = res.result.records; this.data = res.result.records;
console.log(this.data)
this.total = res.result.total; this.total = res.result.total;
} }
}); });

View File

@ -2,268 +2,279 @@
<div class="search"> <div class="search">
<Row> <Row>
<Col> <Col>
<Card> <Card>
<div class="main-content"> <div class="main-content">
<div class="div-flow-left"> <div class="div-flow-left">
<div class="div-form-default"> <div class="div-form-default">
<h3>售后申请</h3> <h3>售后申请</h3>
<dl> <dl>
<dt>售后状态</dt> <dt>售后状态</dt>
<dd>{{filterStatus(afterSaleInfo.serviceStatus)}}</dd> <dd>{{filterStatus(afterSaleInfo.serviceStatus)}}</dd>
</dl> </dl>
<dl>
<dt>退货退款编号</dt>
<dd>{{ afterSaleInfo.sn }}</dd>
</dl>
<dl>
<dt>退货退款原因</dt>
<dd>{{ afterSaleInfo.reason }}</dd>
</dl>
<dl>
<dt>申请退款金额</dt>
<dd>{{ afterSaleInfo.applyRefundPrice | unitPrice('¥') }}</dd>
</dl>
<dl v-if="afterSaleInfo.actualRefundPrice">
<dt>实际退款金额</dt>
<dd>{{ afterSaleInfo.actualRefundPrice | unitPrice('¥') }}</dd>
</dl>
<dl v-if="afterSaleInfo.refundPoint">
<dt>退还积分</dt>
<dd>{{ afterSaleInfo.refundPoint }}</dd>
</dl>
<dl>
<dt>退货数量</dt>
<dd>{{ afterSaleInfo.num }}</dd>
</dl>
<dl>
<dt>问题描述</dt>
<dd>{{ afterSaleInfo.problemDesc }}</dd>
</dl>
<dl>
<dt>凭证</dt>
<dd v-if="afterSaleImage == ''">
暂无凭证
</dd>
<dd v-else>
<div class="div-img" @click="()=>{picFile=item; picVisible = true}"
v-for="(item, index) in afterSaleImage" :key="index">
<img class="complain-img" :src="item">
</div> <dl>
<dt>退货退款编号</dt>
<dd>{{ afterSaleInfo.sn }}</dd>
</dl>
<dl>
<dt>退货退款原因</dt>
<dd>{{ afterSaleInfo.reason }}</dd>
</dl>
<dl>
<dt>申请退款金额</dt>
<dd>{{ afterSaleInfo.applyRefundPrice | unitPrice('¥') }}</dd>
</dl>
<dl v-if="afterSaleInfo.actualRefundPrice">
<dt>实际退款金额</dt>
<dd>{{ afterSaleInfo.actualRefundPrice | unitPrice('¥') }}</dd>
</dl>
<dl v-if="afterSaleInfo.refundPoint">
<dt>退还积分</dt>
<dd>{{ afterSaleInfo.refundPoint }}</dd>
</dl>
<dl>
<dt>退货数量</dt>
<dd>{{ afterSaleInfo.num }}</dd>
</dl>
<dl>
<dt>问题描述</dt>
<dd>{{ afterSaleInfo.problemDesc }}</dd>
</dl>
<dl>
<dt>凭证</dt>
<dd v-if="afterSaleImage == ''">
暂无凭证
</dd>
<dd v-else>
<div class="div-img" @click="()=>{picFile=item; picVisible = true}" v-for="(item, index) in afterSaleImage" :key="index">
<img class="complain-img" :src="item">
<Modal footer-hide mask-closable v-model="picVisible"> </div>
<img :src="picFile" alt="无效的图片链接" style="width: 100%; margin: 0 auto; display: block"/>
</Modal>
</dd> <Modal footer-hide mask-closable v-model="picVisible">
</dl> <img :src="picFile" alt="无效的图片链接" style="width: 100%; margin: 0 auto; display: block" />
</div> </Modal>
<div class="div-form-default" v-if="afterSaleInfo.serviceStatus=='APPLY'"> </dd>
<h3>商家处理意见</h3> </dl>
<dl> </div>
<dt>商家</dt>
<dd>
<div class="div-content">
{{ afterSaleInfo.storeName }}
</div>
</dd> <div class="div-form-default" v-if="afterSaleInfo.serviceStatus=='APPLY'">
</dl> <h3>商家处理意见</h3>
<dl> <dl>
<dt>是否同意</dt> <dt>商家</dt>
<dd> <dd>
<div class="div-content"> <div class="div-content">
<RadioGroup type="button" button-style="solid" v-model="params.serviceStatus"> {{ afterSaleInfo.storeName }}
<Radio label="PASS"> </div>
<span>同意</span>
</Radio>
<Radio label="REFUSE">
<span>拒绝</span>
</Radio>
</RadioGroup>
</div>
</dd> </dd>
</dl> </dl>
<dl>
<dt>是否同意</dt>
<dd>
<div class="div-content">
<RadioGroup type="button" button-style="solid" v-model="params.serviceStatus">
<Radio label="PASS">
<span>同意</span>
</Radio>
<Radio label="REFUSE">
<span>拒绝</span>
</Radio>
</RadioGroup>
</div>
<dl> </dd>
<dt>申请退款金额</dt> </dl>
<dd>{{ afterSaleInfo.applyRefundPrice | unitPrice('¥') }}</dd>
</dl>
<dl>
<dt>实际退款金额</dt>
<dd>
<Input v-model="params.actualRefundPrice" style="width:260px"/>
</dd>
</dl>
<dl>
<dt>备注信息</dt>
<dd>
<Input v-model="params.remark" type="textarea" maxlength="200" :rows="4" clearable
style="width:260px"/>
</dd>
</dl>
<dl>
<dt></dt>
<dd>
<div style="text-align: right;width: 45%;margin-top: 10px">
<Button type="primary" :loading="submitLoading" @click="handleSubmit" style="margin-left: 5px">
确定
</Button>
</div>
</dd>
</dl>
</div>
<div class="div-form-default" v-if="afterSaleInfo.serviceStatus !='APPLY'">
<h3>商家处理</h3>
<dl>
<dt>商家</dt>
<dd>
<div class="div-content">
{{ afterSaleInfo.storeName }}
</div>
</dd> <dl>
</dl> <dt>申请退款金额</dt>
<dl> <dd>{{ afterSaleInfo.applyRefundPrice | unitPrice('¥') }}</dd>
<dt>审核结果</dt> </dl>
<dd> <dl>
<div class="div-content"> <dt>实际退款金额</dt>
<dd>
<Input v-model="params.actualRefundPrice" style="width:260px" />
</dd>
</dl>
<dl>
<dt>备注信息</dt>
<dd>
<Input v-model="params.remark" type="textarea" maxlength="200" :rows="4" clearable style="width:260px" />
</dd>
</dl>
<dl>
<dt></dt>
<dd>
<div style="text-align: right;width: 45%;margin-top: 10px">
<Button type="primary" :loading="submitLoading" @click="handleSubmit" style="margin-left: 5px">
确定
</Button>
</div>
</dd>
</dl>
</div>
<div class="div-form-default" v-if="afterSaleInfo.serviceStatus !='APPLY'">
<h3>商家处理</h3>
<dl>
<dt>商家</dt>
<dd>
<div class="div-content">
{{ afterSaleInfo.storeName }}
</div>
</dd>
</dl>
<dl>
<dt>审核结果</dt>
<dd>
<div class="div-content">
<span v-if="params.serviceStatus=='PASS'"> <span v-if="params.serviceStatus=='PASS'">
审核通过 审核通过
</span> </span>
<span v-else> <span v-else>
审核拒绝 审核拒绝
</span> </span>
</div> </div>
</dd>
</dl>
<dl>
<dt>备注信息</dt>
<dd>
{{ afterSaleInfo.auditRemark }}
</dd>
</dl>
</div>
</div>
<div class="div-flow-center">
</div>
<div class="div-flow-right">
<div class="div-form-default">
<h3>相关商品交易信息</h3>
<dl>
<dt>
<img :src="afterSaleInfo.goodsImage" height="60px">
</dt>
<dd>
<a>{{ afterSaleInfo.goodsName }}</a><br>
<span>{{ afterSaleInfo.num }}(数量)</span><br>
</dd>
</dl>
</div>
<div class="div-form-default">
<h3>订单相关信息</h3>
<dl>
<dt>
订单编号
</dt>
<dd>
{{ afterSaleInfo.orderSn }}
</dd>
</dl>
</div>
<div class="div-form-default"
v-if="afterSaleInfo.serviceStatus =='BUYER_RETURN' || afterSaleInfo.serviceStatus =='COMPLETE' && afterSaleInfo.serviceType !='RETURN_MONEY'">
<h3>回寄物流信息</h3>
<dl>
<dt>
物流公司
</dt>
<dd>
{{ afterSaleInfo.mlogisticsName }}
</dd>
</dl>
<dl>
<dt>
物流单号
</dt>
<dd>
{{ afterSaleInfo.mlogisticsNo }}
</dd>
</dl>
<dl>
<dt>操作</dt>
<dd>
<Button type="info" :loading="submitLoading" @click="sellerConfirmSubmit('PASS')"
style="margin-left: 5px" v-if="afterSaleInfo.afterSaleAllowOperationVO.rog">
确认收货
</Button>
<Button type="primary" :loading="submitLoading" @click="sellerConfirmSubmit('REFUSE')"
style="margin-left: 5px" v-if="afterSaleInfo.afterSaleAllowOperationVO.rog">
拒收
</Button>
<Button type="default" :loading="submitLoading" @click="logisticsBuyer()" style="margin-left: 5px">
查询物流
</Button>
</dd>
</dl>
</div>
<div class="div-form-default"
v-if="afterSaleInfo.afterSaleAllowOperationVO.return_goods && afterSaleInfo.serviceType == 'EXCHANGE_GOODS'">
<h3>换货</h3>
<dl>
<dt>
换货
</dt>
<dd>
<Button type="primary" :loading="submitLoading" @click="exchangeGoods" style="margin-left: 5px">
发货
</Button>
</dd>
</dl>
</div>
<div class="div-form-default"
v-if=" afterSaleInfo.serviceType == 'EXCHANGE_GOODS' && afterSaleInfo.serviceStatus =='SELLER_RE_DELIVERY'">
<h3>物流信息</h3>
<dl>
<dt>
物流公司
</dt>
<dd>
{{ afterSaleInfo.slogisticsName }}
</dd>
</dl>
<dl>
<dt>
物流单号
</dt>
<dd>
{{ afterSaleInfo.slogisticsNo }}
</dd>
</dl>
<dl>
<dt>操作</dt>
<dd>
<Button type="primary" :loading="submitLoading" @click="logisticsSeller()" style="margin-left: 5px">
查询物流
</Button>
</dd>
</dl>
</div>
</dd>
</dl>
<dl>
<dt>备注信息</dt>
<dd>
{{ afterSaleInfo.auditRemark }}
</dd>
</dl>
</div> </div>
</div> </div>
<div class="div-flow-center">
</Card> </div>
<div class="div-flow-right">
<div class="div-form-default">
<h3>相关商品交易信息</h3>
<dl>
<dt>
<img :src="afterSaleInfo.goodsImage" height="60px">
</dt>
<dd>
<a>{{ afterSaleInfo.goodsName }}</a><br>
<span>{{ afterSaleInfo.num }}(数量)</span><br>
</dd>
</dl>
</div>
<div class="div-form-default">
<h3>订单相关信息</h3>
<dl>
<dt>
订单编号
</dt>
<dd>
{{ afterSaleInfo.orderSn }}
</dd>
</dl>
<dl v-if="afterSaleInfo.bankDepositName">
<dt>银行开户行</dt>
<dd>
{{afterSaleInfo.bankDepositName}}
</dd>
</dl>
<dl v-if="afterSaleInfo.bankAccountName">
<dt>银行开户名</dt>
<dd>
{{afterSaleInfo.bankAccountName}}
</dd>
</dl>
<dl v-if="afterSaleInfo.bankAccountNumber">
<dt>银行卡号</dt>
<dd>
{{afterSaleInfo.bankAccountNumber}}
</dd>
</dl>
</div>
<div class="div-form-default" v-if="afterSaleInfo.serviceStatus =='BUYER_RETURN' || afterSaleInfo.serviceStatus =='COMPLETE' && afterSaleInfo.serviceType !='RETURN_MONEY'">
<h3>回寄物流信息</h3>
<dl>
<dt>
物流公司
</dt>
<dd>
{{ afterSaleInfo.mlogisticsName }}
</dd>
</dl>
<dl>
<dt>
物流单号
</dt>
<dd>
{{ afterSaleInfo.mlogisticsNo }}
</dd>
</dl>
<dl>
<dt>操作</dt>
<dd>
<Button type="info" :loading="submitLoading" @click="sellerConfirmSubmit('PASS')" style="margin-left: 5px" v-if="afterSaleInfo.afterSaleAllowOperationVO.rog">
确认收货
</Button>
<Button type="primary" :loading="submitLoading" @click="sellerConfirmSubmit('REFUSE')" style="margin-left: 5px" v-if="afterSaleInfo.afterSaleAllowOperationVO.rog">
拒收
</Button>
<Button type="default" :loading="submitLoading" @click="logisticsBuyer()" style="margin-left: 5px">
查询物流
</Button>
</dd>
</dl>
</div>
<div class="div-form-default" v-if="afterSaleInfo.afterSaleAllowOperationVO.return_goods && afterSaleInfo.serviceType == 'EXCHANGE_GOODS'">
<h3>换货</h3>
<dl>
<dt>
换货
</dt>
<dd>
<Button type="primary" :loading="submitLoading" @click="exchangeGoods" style="margin-left: 5px">
发货
</Button>
</dd>
</dl>
</div>
<div class="div-form-default" v-if=" afterSaleInfo.serviceType == 'EXCHANGE_GOODS' && afterSaleInfo.serviceStatus =='SELLER_RE_DELIVERY'">
<h3>物流信息</h3>
<dl>
<dt>
物流公司
</dt>
<dd>
{{ afterSaleInfo.slogisticsName }}
</dd>
</dl>
<dl>
<dt>
物流单号
</dt>
<dd>
{{ afterSaleInfo.slogisticsNo }}
</dd>
</dl>
<dl>
<dt>操作</dt>
<dd>
<Button type="primary" :loading="submitLoading" @click="logisticsSeller()" style="margin-left: 5px">
查询物流
</Button>
</dd>
</dl>
</div>
</div>
</div>
</Card>
</Col> </Col>
</Row> </Row>
<!-- 订单发货 --> <!-- 订单发货 -->
@ -280,7 +291,7 @@
</Select> </Select>
</FormItem> </FormItem>
<FormItem label="物流单号" prop="logisticsNo"> <FormItem label="物流单号" prop="logisticsNo">
<Input v-model="form.logisticsNo" style="width:250px"/> <Input v-model="form.logisticsNo" style="width:250px" />
</FormItem> </FormItem>
</Form> </Form>
@ -350,20 +361,22 @@ export default {
sn: "", // sn: "", //
logisticsModal: false, // logisticsModal: false, //
logisticsInfo: {}, // logisticsInfo: {}, //
form: { // form: {
//
logisticsNo: "", logisticsNo: "",
logisticsId: "", logisticsId: "",
}, //form }, //form
formValidate: { formValidate: {
logisticsNo: [ logisticsNo: [
{required: true, message: "发货单号不能为空", trigger: "change"}, { required: true, message: "发货单号不能为空", trigger: "change" },
], ],
logisticsId: [ logisticsId: [
{required: true, message: "请选择物流公司", trigger: "blur"}, { required: true, message: "请选择物流公司", trigger: "blur" },
], ],
}, },
modalVisible: false, // modalVisible: false, //
afterSaleInfo: { // afterSaleInfo: {
//
afterSaleAllowOperationVO: { afterSaleAllowOperationVO: {
return_goods: false, return_goods: false,
}, },
@ -380,18 +393,18 @@ export default {
}, },
// //
afterSaleStatus: [ afterSaleStatus: [
{status: 'APPLY', label: '申请售后'}, { status: "APPLY", label: "申请售后" },
{status: 'PASS', label: '申请通过'}, { status: "PASS", label: "申请通过" },
{status: 'REFUSE', label: '申请拒绝'}, { status: "REFUSE", label: "申请拒绝" },
{status: 'BUYER_RETURN', label: '买家退货,待卖家收货'}, { status: "BUYER_RETURN", label: "买家退货,待卖家收货" },
{status: 'SELLER_RE_DELIVERY', label: '商家换货'}, { status: "SELLER_RE_DELIVERY", label: "商家换货" },
{status: 'SELLER_CONFIRM', label: '卖家确认收货'}, { status: "SELLER_CONFIRM", label: "卖家确认收货" },
{status: 'SELLER_TERMINATION', label: '卖家终止售后'}, { status: "SELLER_TERMINATION", label: "卖家终止售后" },
{status: 'BUYER_CONFIRM', label: '买家确认收货'}, { status: "BUYER_CONFIRM", label: "买家确认收货" },
{status: 'BUYER_CANCEL', label: '买家取消售后'}, { status: "BUYER_CANCEL", label: "买家取消售后" },
{status: 'WAIT_REFUND', label: '等待平台退款'}, { status: "WAIT_REFUND", label: "等待平台退款" },
{status: 'COMPLETE', label: '已完成'}, { status: "COMPLETE", label: "已完成" },
] ],
}; };
}, },
methods: { methods: {
@ -493,22 +506,22 @@ export default {
}); });
}, },
// //
filterStatus (status) { filterStatus(status) {
let label = '' let label = "";
for (let i = 0; i< this.afterSaleStatus.length; i++) { for (let i = 0; i < this.afterSaleStatus.length; i++) {
const obj = this.afterSaleStatus[i] const obj = this.afterSaleStatus[i];
if (obj.status === status) { if (obj.status === status) {
label = obj.label label = obj.label;
break; break;
} }
} }
return label return label;
} },
}, },
activated () { activated() {
this.sn = this.$route.query.sn; this.sn = this.$route.query.sn;
this.getDetail(); this.getDetail();
} },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -546,10 +559,11 @@ export default {
margin: 0; margin: 0;
border-bottom: dotted 1px #e6e6e6; border-bottom: dotted 1px #e6e6e6;
overflow: hidden; overflow: hidden;
display: flex;
dt { dt {
display: inline-block; display: inline-block;
width: 13%; flex: 2;
vertical-align: top; vertical-align: top;
text-align: right; text-align: right;
padding: 15px 1% 15px 0; padding: 15px 1% 15px 0;
@ -558,8 +572,9 @@ export default {
} }
dd { dd {
flex: 10;
display: inline-block; display: inline-block;
width: 84%;
padding: 15px 0 15px 1%; padding: 15px 0 15px 1%;
margin: 0; margin: 0;
border-left: 1px solid #f0f0f0; border-left: 1px solid #f0f0f0;