Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录
切换导航
S
shop-new
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
王天霸
shop-new
Commits
2261701c
提交
2261701c
authored
9月 18, 2021
作者:
PC-20210205TDZC\Administrator
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev_hxz' of
http://120.27.146.32:8888/wangfulong/shop-new
into dev_hxz
上级
5e13b566
5f0d535c
显示空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
2547 行增加
和
695 行删除
+2547
-695
bankcard.js
src/api/module/bankcard.js
+170
-34
newasset.js
src/api/module/newasset.js
+11
-0
order.js
src/api/module/order.js
+27
-26
withdraw-charges.png
src/assets/image/withdraw-charges.png
+0
-0
withdraw-process.png
src/assets/image/withdraw-process.png
+0
-0
index.vue
src/views/system/asset/balance/index.vue
+151
-53
index.vue
src/views/system/asset/explain/index.vue
+101
-0
index.vue
src/views/system/asset/myAsset/index.vue
+558
-0
wddetails.vue
src/views/system/asset/wddetails.vue
+612
-0
index.vue
src/views/system/asset/withdraw/index.vue
+189
-180
index.vue
src/views/system/asset/withdrawlog/index.vue
+165
-104
goodsinfomation.vue
src/views/system/goods/add/components/goodsinfomation.vue
+3
-3
orderDetail.vue
src/views/system/order/components/orderDetail.vue
+96
-68
index.vue
src/views/system/order/index.vue
+242
-106
address.vue
src/views/system/retreat/address.vue
+26
-14
edit.vue
src/views/system/retreat/edit.vue
+140
-48
index.vue
src/views/system/retreat/retreat/index.vue
+56
-59
没有找到文件。
src/api/module/bankcard.js
浏览文件 @
2261701c
import
request
from
'@/utils/request'
// 查询bankcard列表
export
function
listBankcard
(
query
)
{
// export function listBankcard(query) {
// return request({
// url: '/system/bankcard/list',
// method: 'get',
// params: query
// })
// }
// 查询银行名称列表
// export function listBankname(query) {
// return request({
// url: '/system/bankcard/getBankList',
// method: 'get',
// params: query
// })
// }
// 查询bankcard详细
// export function getBankcard (id) {
// return request({
// url: '/system/bankcard/edit?id='+id,
// method: 'get'
// })
// }
// 修改bankcard
// export function updateBankcard(data) {
// return request({
// url: '/system/bankcard/edit',
// method: 'post',
// data: data
// })
// }
// 删除bankcard
// export function delBankcard(ids) {
// return request({
// url: '/system/bankcard/delete',
// method: 'delete',
// data:{id:ids}
// })
// }
// 我的资产 页面 所有数据
export
function
getMyAssetListData
(
data
)
{
return
request
({
url
:
'/system/bankcard
/list'
,
method
:
'ge
t'
,
params
:
query
url
:
'/local/assets
/list'
,
method
:
'pos
t'
,
data
:
data
})
}
// 查询银行名称列表
export
function
listBankname
(
query
)
{
// 获取 主体信息
export
function
getOrganizationData
(
query
)
{
return
request
({
url
:
'/
system/bankcard/getBankList
'
,
url
:
'/
local/getOrganization
'
,
method
:
'get'
,
params
:
query
})
}
// 查询bankcard详细
export
function
getBankcard
(
id
)
{
// 新增 银行卡 信息
export
function
addBankcardData
(
data
)
{
return
request
({
url
:
'/system/bank/add'
,
method
:
'post'
,
data
:
data
})
}
// 编辑 银行卡 信息
export
function
editBankcardData
(
data
)
{
return
request
({
url
:
'/system/bankcard/edit?id='
+
id
,
method
:
'get'
url
:
'/system/bank/update'
,
method
:
'post'
,
data
:
data
})
}
// 获取 银行卡 详情
export
function
getBankDetailsData
(
data
)
{
return
request
({
url
:
'/system/bank/detail'
,
method
:
'post'
,
data
:
data
})
}
//
新增bankcard
export
function
addBankcard
(
data
)
{
//
获取商户银行卡列表
export
function
getBankcardListData
(
data
)
{
return
request
({
url
:
'/system/bankcard/add
'
,
url
:
'/system/bank/list
'
,
method
:
'post'
,
data
:
data
})
}
//
修改bankcard
export
function
updateBankcard
(
data
)
{
//
账户 删除
export
function
delBankcardData
(
data
)
{
return
request
({
url
:
'/system/bankcard/edit
'
,
url
:
'/system/bank/delete
'
,
method
:
'post'
,
data
:
data
})
}
// 删除bankcard
export
function
delBankcard
(
ids
)
{
// 收支明细 列表
export
function
getBalanceList
(
data
)
{
return
request
({
url
:
'/local/asset/getSellerBalanceLogList'
,
method
:
'post'
,
data
:
data
})
}
// 提现记录 列表
export
function
getWithdrawData
(
data
)
{
return
request
({
url
:
'/system/withdrawlog/list'
,
method
:
'post'
,
data
:
data
})
}
// 提现记录 详情
export
function
getWithdrawlogDetailsData
(
data
)
{
return
request
({
url
:
'/system/withdrawlog/info'
,
method
:
'post'
,
data
:
data
})
}
// 导出商品明细
export
function
exportGoodsDetailsData
(
data
)
{
return
request
({
url
:
'/system/withdrawlog/exportWithdrawOrderGoods'
,
method
:
'post'
,
data
:
data
})
}
// 获取 所有物流信息
export
function
getExpressListData
(
query
)
{
return
request
({
url
:
'/system/order/expressList'
,
method
:
'get'
,
params
:
query
})
}
// 上传 发票 图片
export
function
upLoadImg
(
data
)
{
return
request
({
url
:
'/system/goodsNew/uploadImage'
,
method
:
'post'
,
data
:
data
});
}
// 补充发票
export
function
addInvoiceData
(
data
)
{
return
request
({
url
:
'/system/withdrawlog/updateInvoice'
,
method
:
'post'
,
data
:
data
});
}
// 获取验证码
export
function
getCheckCodeData
(
data
)
{
return
request
({
url
:
'/system/withdrawlog/getCheckCode'
,
method
:
'post'
,
data
:
data
})
}
// 提交 提现申请
export
function
applyWithdraw
(
data
)
{
return
request
({
url
:
'/system/bankcard/delete
'
,
method
:
'delete
'
,
data
:{
id
:
ids
}
url
:
'/system/withdrawlog/applyWithdraw
'
,
method
:
'post
'
,
data
:
data
})
}
src/api/module/newasset.js
0 → 100644
浏览文件 @
2261701c
import
request
from
'@/utils/request'
/** 我的资产 */
// 获取 银行卡 信息
export
function
getBankcardListData
(
query
)
{
return
request
({
url
:
'/system/asset/list11'
,
method
:
'get'
,
params
:
query
})
}
src/api/module/order.js
浏览文件 @
2261701c
...
...
@@ -99,51 +99,52 @@ export function delOrder(ids) {
})
}
//
订单导出-按搜索条件,全部导出
export
function
exportOrder
(
query
)
{
//
批量 去发货
export
function
deliveryOrder
(
data
)
{
return
request
({
url
:
'/system/order/
unSendOrderGoodsExport
'
,
method
:
'
ge
t'
,
params
:
query
url
:
'/system/order/
orderListSend
'
,
method
:
'
pos
t'
,
data
:
data
})
}
// old
// export function exportOrder(query) {
// return request({
// url: '/system/order/getOrderListExport',
// method: 'get',
// params: query
// })
// }
// 批量发货
export
function
deliveryOrder
(
data
)
{
// 批量
补单
发货
export
function
deliveryOrder
Again
(
data
)
{
return
request
({
url
:
'/system/order/
batchDeliveryGoods
'
,
url
:
'/system/order/
orderListAllSend
'
,
method
:
'post'
,
data
:
data
})
}
// 订单 右上角的 批量发货接口 /system/order/batchDeliveryGoodsOut 老接口
// 批量 去发货
export
function
deliveryOrderOne
(
data
)
{
// 导出导入-批量发货
export
function
deliveryOrderExport
(
data
)
{
return
request
({
url
:
'/system/order/
orderListSend
'
,
url
:
'/system/order/
batchDeliveryGoods
'
,
method
:
'post'
,
data
:
data
})
}
//
批量 补单发货
export
function
deliveryOrderTwo
(
data
)
{
//
订单导出-全部订单-页签
export
function
exportOrder
(
query
)
{
return
request
({
url
:
'/system/order/
orderListAllSend
'
,
method
:
'
pos
t'
,
data
:
data
url
:
'/system/order/
getOrderListExport
'
,
method
:
'
ge
t'
,
params
:
query
})
}
// 【待发货】-状态的 订单导出
export
function
exportUnSendOrderGoodsData
(
query
)
{
return
request
({
url
:
'/system/order/unSendOrderGoodsExport'
,
method
:
'get'
,
params
:
query
})
}
//
// // 单商品订单 补单发货
// export function toReissueOrderData(data) {
...
...
src/assets/image/withdraw-charges.png
0 → 100644
浏览文件 @
2261701c
83.6 KB
src/assets/image/withdraw-process.png
0 → 100644
浏览文件 @
2261701c
41.3 KB
src/views/system/asset/balance/index.vue
浏览文件 @
2261701c
...
...
@@ -2,29 +2,84 @@
<div
class=
"app-container"
>
<el-card
class=
"box-card"
>
<div
slot=
"header"
class=
"clearfix"
>
<p
style=
"font-size: 18px"
>
结算流水
</p>
<el-form
class=
"form-params"
:model=
"queryParams"
:inline=
"true"
size=
"small"
>
<el-form-item
label=
"关联订单单号:"
prop=
"order_sn"
>
<el-input
v-model=
"queryParams.order_sn"
placeholder=
"请输入关联订单单号"
clearable
style=
"width:230px"
/></el-form-item>
<el-form-item
label=
"查询时间"
prop=
"searchTime"
>
<el-date-picker
v-model=
"queryParams.searchTime"
type=
"daterange"
align=
"left"
unlink-panels
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"变动类型"
prop=
"change_type"
>
<el-select
v-model=
"queryParams.change_type"
placeholder=
"全部类型"
clearable
style=
"width:130px"
>
<el-option
label=
"全部类型"
:value=
"0"
></el-option>
<el-option
label=
"增加"
:value=
"1"
></el-option>
<el-option
label=
"减少"
:value=
"2"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"getList"
>
搜索
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
</div>
<el-table
v-loading=
"loading"
:height=
"tableHeight"
:data=
"assetList"
>
<el-table-column
label=
"ID"
align=
"center"
prop=
"Id"
/>
<el-table-column
label=
"流水订单号"
align=
"center"
prop=
"BalanceSn"
/>
<el-table-column
label=
"变动金额"
align=
"center"
prop=
"ChangeMoney"
/>
<el-table-column
label=
"变动类型"
align=
"center"
:formatter=
"formatType"
prop=
"ChangeType"
/>
<el-table-column
label=
"时间"
align=
"center"
:formatter=
"formatTime"
prop=
"AddTime"
/>
<el-table-column
label=
"描述"
align=
"center"
prop=
"Des"
/>
<el-table
v-loading=
"loading"
:height=
"tableHeight"
:data=
"balanceList"
>
<!--
<template
slot-scope=
"scope"
>
-->
<!--
<span>
{{
(
queryParams
.
pageNum
-
1
)
*
queryParams
.
pageSize
+
scope
.
$index
+
1
}}
</span>
-->
<!--
</
template
>
-->
<el-table-column
label=
"序号"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"流水订单号"
align=
"center"
prop=
"balance_sn"
></el-table-column>
<el-table-column
label=
"变动金额"
align=
"center"
prop=
"change_money"
width=
"130"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
change_money
/
100
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"变动类型"
align=
"center"
prop=
"change_type"
width=
"130"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.change_type == 1"
>
增加
</span>
<span
v-if=
"scope.row.change_type == 2"
>
减少
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"变动描述"
align=
"center"
prop=
"des"
></el-table-column>
<el-table-column
label=
"变动时间"
align=
"center"
:formatter=
"formatTime"
prop=
"add_time"
></el-table-column>
<el-table-column
label=
"关联订单单号"
align=
"center"
prop=
"links_des"
></el-table-column>
</el-table>
<pagination
v-show=
"total>0"
:total=
"total"
:page
.
sync=
"queryParams.pageNum"
:limit
.
sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<!-- 分页 -->
<div
class=
"footer_pagination"
>
<el-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"currentPage"
:page-sizes=
"[20, 40, 60, 80, 100]"
:page-size=
"pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
>
</el-pagination>
</div>
</el-card>
</div>
</template>
<
script
>
import
{
listAsset
,
getAsset
,
delAsset
,
addAsset
,
updateAsset
}
from
'@/api/module/asset'
import
{
getBalanceList
}
from
'@/api/module/bankcard'
import
{
dateFormat
}
from
'@/utils'
...
...
@@ -32,25 +87,24 @@
name
:
"asset"
,
data
()
{
return
{
loading
:
false
,
fullHeight
:
0
,
tableHeight
:
0
,
loading
:
false
,
// 遮罩层
ids
:
[],
// 选中数组
total
:
0
,
// 总条数
assetList
:
[],
// 商户余额变动日志表格数据
title
:
""
,
// 弹出层标题
open
:
false
,
// 是否显示弹出层
queryParams
:
{
// 查询参数
pageNum
:
1
,
pageSize
:
10
,
sellerId
:
0
sellerId
:
0
,
order_sn
:
''
,
searchTime
:
[],
change_type
:
''
},
form
:
{},
// 表单参数
rules
:
{}
// 表单校验
total
:
0
,
currentPage
:
1
,
pageSize
:
20
,
balanceList
:
[],
};
},
created
()
{
this
.
queryParams
.
sellerId
=
this
.
$store
.
state
.
user
.
sellerid
// this.queryParams.sellerId = this.$store.state.user.sellerid
/** 查询 收支明细 列表 */
this
.
getList
();
this
.
$nextTick
(()
=>
{
this
.
fullHeight
=
document
.
getElementsByClassName
(
'box-card'
)[
0
].
clientHeight
...
...
@@ -59,23 +113,71 @@
watch
:
{
fullHeight
(
val
)
{
let
formHeight
=
document
.
getElementsByClassName
(
'clearfix'
)[
0
].
clientHeight
this
.
tableHeight
=
val
-
formHeight
-
1
2
0
;
this
.
tableHeight
=
val
-
formHeight
-
1
0
0
;
}
},
methods
:
{
formatType
(
row
)
{
var
types
=
row
.
ChangeType
var
optDes
=
''
if
(
types
==
1
)
{
optDes
=
"增加"
}
else
if
(
types
==
2
)
{
optDes
=
"减少"
/** 列表查询 */
getList
()
{
let
params
=
{
page
:
this
.
currentPage
,
limit
:
this
.
pageSize
,
}
if
(
this
.
queryParams
.
order_sn
!=
''
)
{
params
[
'order_sn'
]
=
this
.
queryParams
.
order_sn
}
if
(
this
.
queryParams
.
change_type
==
''
)
{
params
[
'change_type'
]
=
0
}
else
{
params
[
'change_type'
]
=
this
.
queryParams
.
change_type
}
if
(
this
.
queryParams
.
searchTime
&&
this
.
queryParams
.
searchTime
.
length
==
2
)
{
params
[
'start_time'
]
=
new
Date
(
this
.
queryParams
.
searchTime
[
0
]).
getTime
()
/
1000
;
params
[
'end_time'
]
=
new
Date
(
this
.
queryParams
.
searchTime
[
1
]).
getTime
()
/
1000
;
}
getBalanceList
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
balanceList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
count
;
}
else
{
let
msg
=
res
.
message
?
res
.
message
:
'查询失败'
this
.
$message
({
type
:
'error'
,
message
:
msg
});
}
});
},
/** 重置 搜索条件 */
resetQuery
()
{
this
.
queryParams
=
{
// 查询参数
sellerId
:
0
,
order_sn
:
''
,
searchTime
:
[],
change_type
:
''
}
return
optDes
this
.
currentPage
=
1
this
.
pageSize
=
20
this
.
getList
();
},
//格式化时间
handleSizeChange
(
val
)
{
this
.
pageSize
=
val
this
.
getList
()
},
handleCurrentChange
(
val
)
{
this
.
currentPage
=
val
this
.
getList
()
},
/** 输入搜索条件后,enter 查询 暂时未用 */
handleQuery
()
{
},
/** 时间格式化 */
formatTime
(
row
)
{
let
Time
=
row
.
AddT
ime
;
let
Time
=
row
.
add_t
ime
;
let
newtime
=
""
;
if
(
Time
>
0
)
{
newtime
=
dateFormat
(
Time
*
1000
,
"Y-m-d H:i:s"
);
...
...
@@ -85,27 +187,23 @@
//格式化价格
formatMoney
(
row
)
{
var
nm
=
0
;
var
money
=
row
.
ChangeM
oney
;
var
money
=
row
.
change_m
oney
;
if
(
money
>
0
)
{
nm
=
money
/
1000
}
return
nm
},
/** 查询商户余额变动日志列表 */
getList
()
{
listAsset
(
this
.
queryParams
).
then
(
res
=>
{
this
.
assetList
=
res
.
data
.
list
;
this
.
total
=
res
.
data
.
total
;
});
},
// 取消按钮
cancel
()
{
this
.
open
=
false
;
this
.
reset
();
},
}
//methods结束
};
</
script
>
<
style
scoped
>
.form-params
.el-form-item
{
margin
:
10px
0
10px
10px
;
}
/* 分页 */
.footer_pagination
{
text-align
:
center
;
margin-top
:
15px
;
}
</
style
>
src/views/system/asset/explain/index.vue
0 → 100644
浏览文件 @
2261701c
<
template
>
<div
class=
"app-container"
>
<el-card
class=
"box-card explain"
>
<div
class=
"pre-details"
>
<p>
1、账户资产说明
</p>
<p>
(1)、当前余额:是指您当前账户里面的余额,该部分余额包含【可提现余额】和【提现中的金额】
</p>
<p>
(2)、可提现余额:是指您可以操作提现的余额
</p>
<p>
(3)、提现中的金额:是指您当前进行中的提现金额,提现中的金额在完成打款前会暂时冻结,直到打款完成
</p>
<p>
三者的关系:当前余额=可提现余额+提现中的金额
</p>
</div>
<div
class=
"pre-details"
>
<p>
2、相关名词说明
</p>
<p>
(1)、结算:指订单完成并过售后期,订单金额结算到您的可提现余额账户中
</p>
<p>
(2)、提现:指您操作提现,将可提现余额账户中的钱提现至您的银行卡中
</p>
</div>
<div
class=
"pre-details"
>
<p>
3、提现账户管理
</p>
<p>
(1)、提现账户必须为企业对公账户,且对公账户名称与认证的主体一致
</p>
<p>
(2)、提现账户不支持个人账户,不支持支付宝账户
</p>
<p>
(3)、对公账户最多只能添加三个
</p>
</div>
<div
class=
"pre-details"
>
<p>
4、提现要求
</p>
<p>
(1)、提供正确、合规的企业对公账户
</p>
<p>
(2)、提供提现金额对应订单商品的发票及明细
</p>
<p>
(3)、提现金额最低要求为100元,如果您的可提现账户余额不足100元,则暂无法提现
</p>
</div>
<div
class=
"pre-details"
>
<p>
5、订单结算
</p>
<p>
(1)、订单自发货日期,10天后自动确认收货,15天后过售后期,订单金额自动结算到可提现余额账户中
</p>
<p>
(2)、售后中的订单、失效订单等订单不会结算
</p>
</div>
<div
class=
"pre-details"
>
<p>
6、操作提现
</p>
<p>
(1)、在【我的资产】中,点击提现按钮,根据提示验证支付密码及手机验证码,验证通过后即可提现
</p>
<p>
(2)、操作提现时,提现的金额为全部的可提现余额,不允许手动输入金额
</p>
<p>
(3)、操作提现时,会产生提现手续费,手续费收取标准请参照本文第5条
</p>
<p>
(4)、实际到账金额=提现金额-提现手续费,请以实际到账为准
</p>
</div>
<div
class=
"pre-details"
>
<p>
7、提现周期
</p>
<p>
(1)、工作日当日12:00之前提交的提现,1-5个工作日内安排打款,工作日当日12:00之后提现的金额,次日开始,1-5个工作日安排打款,节假日顺延
</p>
<p>
(2)、银行卡到账时间:打款后0-2个工作日到账 (具体请咨询所属银行)
</p>
</div>
<div
class=
"pre-details"
>
<p>
8、提现收续费收取标准
</p>
<p>
<img
width=
"712px"
src=
"@/assets/image/withdraw-charges.png"
alt=
""
>
</p>
</div>
<div
class=
"pre-details"
>
<p>
9、提现流程
</p>
<p>
<img
width=
"712px"
src=
"@/assets/image/withdraw-process.png"
alt=
""
>
</p>
</div>
<div
class=
"pre-details"
>
<p>
10、发票信息
</p>
<p>
(1)、发票抬头:北京胜天半子科技有限公司
</p>
<p>
(2)、纳税人识别号:911016513F1ECWX
</p>
</div>
<div
class=
"pre-details"
>
<p>
11、联系我们
</p>
<p>
(1)、客服电话:4000-188-199
</p>
<p>
(2)、公司地址:北京市丰台区诺德中心一期四号楼21层
</p>
</div>
</el-card>
</div>
</
template
>
<
script
>
export
default
{
name
:
"Explain"
,
data
()
{
return
{}
}
}
</
script
>
<
style
scoped
>
/
deep
/
.explain
.el-card__body
{
height
:
100%
;
/*padding: 30px 20px;*/
overflow
:
auto
;
color
:
#333
;
font-size
:
14px
;
}
.pre-details
{
margin
:
40px
50px
;
}
</
style
>
src/views/system/asset/myAsset/index.vue
0 → 100644
浏览文件 @
2261701c
<
template
>
<div
class=
"app-container"
>
<el-card>
<!-- 商品信息 -->
<div
class=
"card-header-custom"
>
<div
class=
"card-header-title"
>
<span
class=
"blue-block blue-block-goods-title"
></span>
账号资产
</div>
<div
class=
"card-header-handle"
>
<el-button
plain
type=
"primary"
size=
"small"
@
click=
"explainWithdrawal"
>
提现说明
</el-button>
<el-button
plain
type=
"primary"
size=
"small"
@
click=
"goToWithdrawlog"
>
提现记录
</el-button>
</div>
</div>
<div
class=
"row-flex-center"
>
<div
class=
"current-balance"
>
<dl
class=
"balance-dl"
>
<dt>
当前余额(元)
</dt>
<dd>
¥
{{
currentBalance
}}
</dd>
</dl>
<p
class=
"in-details-balance"
@
click=
"goToBalance"
>
收支明细
</p>
</div>
<div
class=
"withdrawal-balance"
>
<dl
class=
" balance-dl dl-border"
>
<dt>
可提现余额(元)
</dt>
<dd>
¥
{{
withdrawalBalance
}}
</dd>
</dl>
</div>
<div
class=
"withdrawal-progress"
>
<dl
class=
" balance-dl"
>
<dt>
提现中的金额(元)
</dt>
<dd>
¥
{{
withdrawalProgress
}}
</dd>
</dl>
</div>
</div>
<div
class=
"row-flex-center"
>
<el-button
type=
"primary"
size=
"small"
style=
"padding: 10px 30px; margin: 20px 0 40px;"
@
click=
"handleWithdraw"
>
提 现
</el-button>
</div>
<!-- 账号管理 -->
<div
class=
"card-header-custom"
>
<div
class=
"card-header-title"
>
<span
class=
"blue-block blue-block-goods-title"
></span>
账户管理
</div>
</div>
<div
class=
"row-flex-space-around"
>
<div
class=
"card-con"
v-for=
"(item,index) in bankcardList"
:key=
"index"
>
<div
class=
"card-info-con"
>
<div
class=
"card-name"
>
{{
item
.
bank_name
}}
</div>
<div
class=
"bank-detail"
>
<p>
对公账户名称:
{{
item
.
corporate_account_name
}}
</p>
<p>
银行名称:
{{
item
.
bank_name
}}
</p>
<p>
对公银行账号:
{{
item
.
bank_account_sn
}}
</p>
<p>
开户行(支行):
{{
item
.
bank_branch_name
}}
</p>
</div>
</div>
<div
class=
"card-info-handle"
>
<el-button
plain
type=
"primary"
size=
"mini"
style=
"padding: 10px 30px; margin: 20px 40px 40px 0;"
@
click=
"editBankcard(item.id)"
>
编 辑
</el-button>
<el-button
plain
type=
"primary"
size=
"mini"
style=
"padding: 10px 30px; margin: 20px 0 40px;"
@
click=
"delBankcard(item.id)"
>
删 除
</el-button>
</div>
</div>
<div
v-if=
"bankcardList.length
<
3
"
class=
"hh-card-con"
:class=
"
{ 'only-add-con' : bankcardList.length == 0 ? true: false }">
<div
class=
"add-card-con"
>
<div
class=
"add-card-btn"
@
click=
"addBankcard"
>
+
</div>
</div>
</div>
</div>
<!--
<div
class=
"row-flex-center"
>
-->
<!--
<el-button
type=
"primary"
size=
"small"
style=
"padding: 10px 30px; margin: 20px 40px 40px 0;"
>
编 辑
</el-button>
-->
<!--
<el-button
type=
"primary"
size=
"small"
style=
"padding: 10px 30px; margin: 20px 0 40px;"
>
删 除
</el-button>
-->
<!--
</div>
-->
</el-card>
<!-- 添加、编辑 银行卡 信息 -->
<el-dialog
:title=
"bankcardTitle"
:visible
.
sync=
"addBankcardInfoDialog"
:before-close=
"cancelSubmitBankcard"
center
>
<el-form
ref=
"bankcardForm"
:model=
"bankcardForm"
:rules=
"bankcardRule"
size=
"small"
label-width=
"180px"
>
<el-form-item
label=
"账号类型:"
>
<el-input
type=
"text"
placeholder=
"银行对公账户"
:disabled=
"true"
style=
"width: 70%;"
></el-input>
<p
class=
"withdraw-tip"
>
根据要求,提现仅支持公对公账户
</p>
</el-form-item>
<el-form-item
label=
"银行名称:"
prop=
"bank_name"
>
<el-select
v-model=
"bankcardForm.bank_name"
placeholder=
"请选择"
style=
"width: 70%;"
>
<el-option
v-for=
"item in bankOptions"
:key=
"item.code"
:label=
"item.name"
:value=
"item.code"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"对公账户名称:"
style=
"width:100%"
>
<el-input
v-model=
"bankAccountName"
placeholder=
"对公账户名称,不能输入和修改"
:disabled=
"true"
style=
"width: 70%"
></el-input>
<p
class=
"withdraw-tip"
>
银行卡必须为对公账户,且与提交的公司名称相一致,不允许修改
</p>
</el-form-item>
<el-form-item
label=
"开户行(支行):"
prop=
"bank_branch_name"
>
<el-input
v-model=
"bankcardForm.bank_branch_name"
placeholder=
"请输入开户行"
style=
"width: 70%"
></el-input>
</el-form-item>
<el-form-item
label=
"对公银行账号:"
prop=
"bank_account_sn"
>
<el-input
v-model=
"bankcardForm.bank_account_sn"
placeholder=
"请输入快递单号"
style=
"width: 70%"
></el-input>
</el-form-item>
<el-form-item>
<span
class=
"withdraw-tip"
>
温馨提示:所有项均为必填项,请正确填写相关信息,信息填写错将导致提现无法成功
</span>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"submitBankcard"
>
确 定
</el-button>
<el-button
size=
"small"
@
click=
"cancelSubmitBankcard"
>
取 消
</el-button>
</span>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
getMyAssetListData
,
getOrganizationData
,
getBankDetailsData
,
getBankcardListData
,
addBankcardData
,
editBankcardData
,
delBankcardData
}
from
'@/api/module/bankcard'
export
default
{
name
:
"Index"
,
data
()
{
return
{
seller_id
:
''
,
currentBalance
:
0
,
withdrawalBalance
:
0
,
withdrawalProgress
:
0
,
bankcardList
:
[],
addBankcardInfoDialog
:
false
,
bankcardTitle
:
''
,
bankAccountName
:
''
,
// 主体信息 公司名称
bankcardForm
:
{
bank_name
:
''
,
bank_branch_name
:
''
,
bank_account_sn
:
''
,
},
bankcardRule
:
{
bank_name
:
[{
required
:
true
,
message
:
'银行名称不能为空'
,
trigger
:
'change'
}],
bank_branch_name
:
[{
required
:
true
,
message
:
'开户行支行不能为空'
,
trigger
:
'blur'
}],
bank_account_sn
:
[{
required
:
true
,
message
:
'银行账号不能为空'
,
trigger
:
'blur'
}]
},
bankOptions
:
[],
// 银行卡列表
indexId
:
0
,
}
// return end
},
// data end
created
()
{
/** 获取 seller_id*/
this
.
seller_id
=
this
.
$store
.
state
.
user
.
sellerid
;
/** 我的资产 所有数据 */
this
.
getMyAssetList
()
/** 获取 银行卡列表 */
this
.
getBankcardList
()
/** 获取主体信息 */
this
.
getOrganization
();
},
methods
:
{
/** 我的资产 所有数据 */
getMyAssetList
()
{
getMyAssetListData
(
{
seller_id
:
this
.
seller_id
}
).
then
(
res
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
// 账号资产
if
(
res
.
data
.
account_info
)
{
this
.
withdrawalBalance
=
Number
(
res
.
data
.
account_info
.
new_balance
)
/
100
;
this
.
withdrawalProgress
=
Number
(
res
.
data
.
account_info
.
new_frozen_money
)
/
100
;
this
.
currentBalance
=
this
.
add
(
this
.
withdrawalBalance
,
this
.
withdrawalProgress
);
}
// 账户管理
if
(
res
.
data
.
bank_list
)
{
this
.
bankcardList
=
res
.
data
.
bank_list
;
}
}
else
{
let
msg
=
res
.
message
?
res
.
message
:
'获取用户列表失败'
this
.
$message
({
type
:
'error'
,
message
:
msg
});
}
});
},
/** 获取主体信息 */
getOrganization
()
{
getOrganizationData
().
then
(
res
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
this
.
bankAccountName
=
res
.
data
.
organization_name
;
}
});
},
/** 编辑 银行卡信息 */
editBankcard
(
id
)
{
this
.
bankcardTitle
=
'编辑账户'
this
.
indexId
=
id
;
getBankDetailsData
({
id
:
id
}).
then
(
res
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
this
.
addBankcardInfoDialog
=
true
;
if
(
res
.
data
.
bank_name
)
{
for
(
let
i
=
0
;
i
<
this
.
bankOptions
.
length
;
i
++
)
{
if
(
res
.
data
.
bank_name
==
this
.
bankOptions
[
i
].
name
)
{
this
.
bankcardForm
.
bank_name
=
this
.
bankOptions
[
i
].
code
;
break
}
}
}
this
.
bankcardForm
.
bankAccountName
=
res
.
data
.
corporate_account_name
;
this
.
bankcardForm
.
bank_branch_name
=
res
.
data
.
bank_branch_name
;
this
.
bankcardForm
.
bank_account_sn
=
res
.
data
.
bank_account_sn
;
}
else
{
let
msg
=
res
.
message
?
res
.
message
:
'获取银行卡信息失败'
this
.
$message
({
type
:
'error'
,
message
:
msg
});
}
});
},
/** 删除 银行卡信息 */
delBankcard
(
id
)
{
const
indexId
=
id
;
this
.
$confirm
(
'确定要删除该账户信息吗?'
,
'警告'
,{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
async
()
=>
{
let
delResult
=
await
delBankcardData
({
id
:
indexId
});
console
.
log
(
'删除结果'
,
delResult
);
if
(
delResult
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'删除成功'
});
this
.
getMyAssetList
();
}
if
(
delResult
.
code
==
0
)
{
let
msg
=
delResult
.
message
?
delResult
.
message
:
'删除失败'
this
.
$message
({
type
:
'error'
,
message
:
msg
});
}
}).
catch
(()
=>
{});
},
/** 添加 银行卡信息 */
addBankcard
()
{
this
.
bankcardTitle
=
'添加账户'
this
.
addBankcardInfoDialog
=
true
;
this
.
indexId
=
0
;
},
/** 提交 添加银行卡信息 */
submitBankcard
()
{
let
params
=
{
bank_name
:
''
,
bank_branch_name
:
this
.
bankcardForm
.
bank_branch_name
,
bank_account_sn
:
this
.
bankcardForm
.
bank_account_sn
}
for
(
let
i
=
0
;
i
<
this
.
bankOptions
.
length
;
i
++
)
{
if
(
this
.
bankcardForm
.
bank_name
==
this
.
bankOptions
[
i
].
code
)
{
params
.
bank_name
=
this
.
bankOptions
[
i
].
name
break
}
}
this
.
$refs
.
bankcardForm
.
validate
((
valid
)
=>
{
if
(
valid
)
{
// 新增
if
(
this
.
indexId
==
0
)
{
params
[
'seller_id'
]
=
this
.
seller_id
;
addBankcardData
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'新增成功'
});
this
.
resetAddBankcardForm
();
this
.
addBankcardInfoDialog
=
false
;
this
.
getMyAssetList
();
// 更新数据
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
?
res
.
message
:
'新增失败'
});
}
});
}
else
{
params
[
'id'
]
=
this
.
indexId
editBankcardData
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'修改成功'
});
this
.
resetAddBankcardForm
();
this
.
addBankcardInfoDialog
=
false
;
this
.
getMyAssetList
();
// 更新数据
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
?
res
.
message
:
'修改失败'
});
}
});
}
}
// valid end
});
},
/** 取消 提交 添加银行卡信息*/
cancelSubmitBankcard
()
{
this
.
resetAddBankcardForm
();
this
.
addBankcardInfoDialog
=
false
;
},
/** 初始化 添加 银行卡 数据 */
resetAddBankcardForm
()
{
this
.
$refs
[
'bankcardForm'
].
resetFields
();
},
/** 提现 操作 */
handleWithdraw
()
{
this
.
$router
.
push
({
path
:
"/system/asset/withdraw"
});
},
/** 收支明细 跳转 */
goToBalance
()
{
this
.
$router
.
push
({
path
:
"/system/asset/balance"
});
},
/** 提现记录*/
goToWithdrawlog
()
{
this
.
$router
.
push
({
path
:
"/system/asset/withdrawlog"
});
},
/** 提现说明 */
explainWithdrawal
()
{
this
.
$router
.
push
({
path
:
"/system/asset/explain"
});
},
/** 获取 银行列表 */
getBankcardList
()
{
getBankcardListData
().
then
(
res
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
this
.
bankOptions
=
res
.
data
}
else
{
let
msg
=
res
.
message
?
res
.
message
:
'获取银行列表失败'
this
.
$message
({
type
:
'error'
,
message
:
msg
});
}
});
},
// 自定义高精度浮点数运算
// 加法
add
(
arg1
,
arg2
)
{
let
r1
,
r2
,
m
,
result
;
try
{
//取小数位长度
r1
=
arg1
.
toString
().
split
(
"."
)[
1
].
length
;
r2
=
arg2
.
toString
().
split
(
"."
)[
1
].
length
;
}
catch
(
e
)
{
r1
=
0
;
r2
=
0
;
}
m
=
Math
.
pow
(
10
,
Math
.
max
(
r1
,
r2
));
//计算因子
result
=
(
arg1
*
m
+
arg2
*
m
)
/
m
;
result
=
result
.
toFixed
(
2
);
return
result
;
},
// 减法
minus
(
arg1
,
arg2
)
{
return
this
.
add
(
arg1
,
-
arg2
);
},
}
// methods end
}
</
script
>
<
style
scoped
>
.app-container
{
overflow
:
auto
;
}
/* el-card title hxz 样式统一 start */
.card-header-custom
{
display
:
flex
;
flex-direction
:
row
;
justify-content
:
space-between
;
align-items
:
center
;
border-bottom
:
1px
solid
#F6F6F8
;
padding-bottom
:
15px
;
}
.card-header-title
{
line-height
:
24px
;
font-size
:
18px
;
color
:
#000
;
font-weight
:
bold
;
}
.blue-block
{
display
:
inline-block
;
width
:
5px
;
height
:
24px
;
background
:
#3A84FF
;
margin
:
0
9px
0
0
;
border-radius
:
2px
;
vertical-align
:
bottom
;
}
.current-balance
,
.withdrawal-balance
,
.withdrawal-progress
{
flex
:
1
;
margin
:
30px
0
;
background-color
:
#F8FBFD
;
}
.current-balance
{
position
:
relative
;
}
.balance-dl
{
padding
:
20px
0
;
margin
:
20px
0
;
}
.dl-border
{
border-right
:
2px
solid
#E8E7E7
;
border-left
:
2px
solid
#E8E7E7
;
}
.balance-dl
>
dt
,
.balance-dl
>
dd
{
text-align
:
center
;
margin
:
20px
0
;
padding
:
0
;
}
.balance-dl
>
dt
{
height
:
36px
;
font-size
:
16px
;
font-weight
:
bold
;
color
:
#333333
;
line-height
:
36px
;
padding-left
:
16px
;
}
.balance-dl
>
dd
{
height
:
36px
;
font-size
:
34px
;
font-weight
:
bold
;
color
:
#40A3FC
;
line-height
:
36px
;
}
.in-details-balance
{
position
:
absolute
;
height
:
20px
;
line-height
:
20px
;
font-size
:
14px
;
font-weight
:
400
;
color
:
#40A3FC
;
cursor
:
pointer
;
bottom
:
6px
;
left
:
calc
(
50%
-
26px
);
}
/* el-card title hxz 样式统一 end */
.row-flex-center
{
display
:
flex
;
flex-direction
:
row
;
justify-content
:
center
;
align-items
:
center
;
}
.row-flex-space-around
{
display
:
flex
;
flex-direction
:
row
;
justify-content
:
start
;
align-items
:
center
;
flex-wrap
:
wrap
;
}
.mp20
{
margin
:
30px
;
padding
:
10px
20px
;
}
.card-con
{
}
.card-info-con
{
width
:
468px
;
height
:
274px
;
margin
:
20px
;
box-shadow
:
0
2px
10px
0
rgba
(
0
,
0
,
0
,
0.05
);
}
.hh-card-con
{
width
:
468px
;
height
:
366px
;
}
.only-add-con
{
margin
:
20px
0
;
}
.add-card-con
{
width
:
468px
;
height
:
274px
;
box-shadow
:
0
2px
10px
0
rgba
(
0
,
0
,
0
,
0.05
);
}
/*.card-con:hover {*/
/* box-shadow :0 2px 10px 0 rgba(0,0,0,0.1);*/
/*}*/
/* 点击效果 */
.checked-bankcard
{
}
.card-name
{
height
:
60px
;
line-height
:
60px
;
text-align
:
center
;
color
:
#fff
;
border-radius
:
5px
5px
0px
0px
;
background
:
#40A3FC
;
}
.bank-detail
{
padding
:
10px
20px
;
font-size
:
14px
;
font-weight
:
400
;
color
:
#333333
;
line-height
:
30px
;
}
.add-card-con
{
background
:
#F8FBFD
;
border
:
1px
dashed
#D7D7D8
;
border-radius
:
5px
;
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
center
;
}
.add-card-btn
{
padding
:
50px
;
line-height
:
30px
;
text-align
:
center
;
font-size
:
24px
;
cursor
:
pointer
;
color
:
#666
;
}
.card-info-handle
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
center
;
}
.withdraw-tip
{
font-size
:
12px
;
color
:
#999
;
margin
:
5px
;
line-height
:
26px
;
}
</
style
>
src/views/system/asset/wddetails.vue
0 → 100644
浏览文件 @
2261701c
<
template
>
<div
class=
"app-container"
>
<el-card
class=
"box-card"
>
<p
class=
"card-header-tip"
>
提现状态:
<span
class=
"pay-status"
>
{{
payStatusFormatter
(
withdrawInfo
.
pay_status
)
}}
</span>
<span>
如果您是电子发票,则不用填写快递公司和单号信息,需上传电子发票图片,同时将电子发票发送至电子邮箱,查看
</span>
<span
class=
"checked-email-rule"
@
click=
"isViewSendRuleDialog = true"
>
【电子邮箱及发票发送格式】
</span>
</p>
<div
class=
"main"
>
<div
class=
"card-header-title"
>
<span
class=
"blue-block blue-block-goods-title"
></span>
提现信息
</div>
<el-row
class=
"row-title"
>
<el-col
:span=
"4"
class=
"text-r"
>
提现流水单号
</el-col>
<el-col
:span=
"9"
class=
"text-l"
>
{{
withdrawInfo
.
sn
}}
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"4"
class=
"text-r"
>
提现时间
</el-col>
<el-col
:span=
"9"
class=
"text-l"
>
{{
formatter
(
withdrawInfo
.
created_time
)
}}
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"4"
class=
"text-r"
>
提现金额
</el-col>
<el-col
:span=
"9"
class=
"text-l"
>
{{
withdrawInfo
.
amount
?
withdrawInfo
.
amount
/
100
:
0
}}
元
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"4"
class=
"text-r"
>
手续费
</el-col>
<el-col
:span=
"9"
class=
"text-l"
>
{{
withdrawInfo
.
service_fee
?
withdrawInfo
.
service_fee
/
100
:
0
}}
元
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"4"
class=
"text-r"
>
实际到账金额
</el-col>
<el-col
:span=
"9"
class=
"text-l"
>
{{
withdrawInfo
.
real_amount
?
withdrawInfo
.
real_amount
/
100
:
0
}}
元
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"4"
class=
"text-r"
>
提现至账户
</el-col>
<el-col
:span=
"9"
class=
"text-l"
>
{{
withdrawInfo
.
bank_name_all
}}
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"4"
class=
"text-r"
>
发票信息
</el-col>
<el-col
:span=
"9"
class=
"text-l"
>
<el-link
v-if=
"withdrawInfo.invoice_status == 1"
:underline=
"false"
type=
"primary"
@
click=
"viewInvoiceDetails"
>
点击查看发票
</el-link>
<el-link
v-else
disabled
>
发票未提交
</el-link>
</el-col>
</el-row>
<div
class=
"card-header-title"
>
<span
class=
"blue-block blue-block-goods-title"
></span>
打款备注
</div>
<div
class=
"remark-con"
>
<p
v-if=
"payRemark"
>
{{
payRemark
}}
</p>
<p
v-else
style=
"color: #555;"
>
暂无备注
</p>
</div>
</div>
<div
class=
"footer-btn"
>
<el-button
type=
"primary"
@
click=
"exportGoodsDetails"
style=
"margin-right:20px;"
>
导出商品明细
</el-button>
<el-button
@
click=
"submitInvoiceAgain"
:disabled=
"isSubmitInvoice"
>
补充发票信息
</el-button>
</div>
</el-card>
<!-- 电子发票 规则 -->
<el-dialog
title=
"电子发票发送格式"
:visible
.
sync=
"isViewSendRuleDialog"
width=
"40%"
center
>
<div
class=
"view-sendemail-rule"
>
<p>
您好,如果您是电子发票,请通过邮箱按照以下格式发送:
</p>
<p><span
class=
"span-title"
>
标题:
</span>
【XXX公司】电子发票
</p>
<p><span
class=
"span-title spe-1"
>
收件人:
</span>
finanical@stbz.net
</p>
<p><span
class=
"span-title"
>
正文内容:
</span>
【XXX公司】电子发票
</p>
<p><span
class=
"span-title spe-1"
>
附件:
</span>
电子发票
</p>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"isViewSendRuleDialog = false"
>
取 消
</el-button>
</span>
</el-dialog>
<!-- 补充发票 信息 -->
<el-dialog
title=
"补充发票信息"
:destroy-on-close=
"true"
:visible
.
sync=
"isAddInvoiceAgainDialog"
:before-close=
"cancelUpInvoiceImg"
width=
"40%"
center
>
<el-form
ref=
"addInvoiceForm"
:model=
"addInvoiceForm"
:rules=
"addInvoiceRule"
label-width=
"150px"
class=
"add-invoice-form"
size=
"small"
>
<el-form-item
label=
"快递公司:"
prop=
"express_name"
>
<el-select
v-model=
"addInvoiceForm.express_name"
filterable
placeholder=
"请选择快递公司"
style=
"width: 80%;"
>
<el-option
v-for=
"item in expressLists"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"快递单号:"
prop=
"express_sn"
>
<el-input
v-model=
"addInvoiceForm.express_sn"
placeholder=
"请输入快递单号"
style=
"width: 80%;"
></el-input>
</el-form-item>
<el-form-item
label=
"发票图片:"
prop=
"invoice_img"
>
<el-upload
class=
"avatar-uploader"
action=
""
list-type=
"picture-card"
:http-request=
"uploadInvoiceImg"
:before-upload=
"beforeUpInvoiceImg"
:file-list=
"invoiceImgList"
:limit=
"1"
:on-exceed=
"limitCount1"
:before-remove =
"beforeRemoveInvoiceImg"
:on-remove=
"removeInvoiceImg"
:on-preview=
"handleInvoiceImg"
>
<i
class=
"el-icon-plus"
></i>
</el-upload>
<el-dialog
:visible
.
sync=
"dialogVisibleInvoiceImg"
class=
"dialog-img-spe"
>
<img
width=
"100%"
:src=
"dialogInvoiceImg"
alt=
""
/>
</el-dialog>
<div
class=
"textTip"
>
最多上传一张图片,仅限jpg/png格式,大小限制在500kb以内
</div>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitInvoice"
size=
"small"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"cancelUpInvoiceImg"
size=
"small"
>
取 消
</el-button>
</span>
</el-dialog>
<!-- 查看发票 信息 -->
<el-dialog
title=
"发票信息"
:destroy-on-close=
"true"
:visible
.
sync=
"isViewInvoiceAgainDialog"
width=
"40%"
center
>
<el-form
:model=
"viewInvoiceForm"
label-width=
"150px"
class=
"add-invoice-form"
size=
"small"
>
<el-form-item
label=
"快递公司:"
>
<el-input
v-model=
"viewInvoiceForm.express_name"
placeholder=
"请输入快递单号"
disabled
style=
"width: 80%;"
></el-input>
</el-form-item>
<el-form-item
label=
"快递单号:"
>
<el-input
v-model=
"viewInvoiceForm.express_sn"
placeholder=
"请输入快递单号"
disabled
style=
"width: 80%;"
></el-input>
</el-form-item>
<el-form-item
label=
"发票图片:"
>
<div
v-if=
"viewInvoiceForm.invoice_img"
>
<el-image
style=
"width: 100px; height: 100px;border:1px solid #eee;"
:src=
"viewInvoiceForm.invoice_img"
:preview-src-list=
"viewInvoiceForm.invoiceImgList"
>
</el-image>
</div>
<div
class=
"textTip"
>
最多上传一张图片,仅限jpg/png格式,大小限制在500kb以内
</div>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"isViewInvoiceAgainDialog = false"
size=
"small"
>
确 定
</el-button>
</span>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
getWithdrawlogDetailsData
,
exportGoodsDetailsData
,
getExpressListData
,
upLoadImg
,
addInvoiceData
}
from
'@/api/module/bankcard'
import
{
dateFormat
}
from
'@/utils'
export
default
{
name
:
"Wddetails"
,
data
()
{
let
checkPic
=
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
invoiceImgList
.
length
>
0
)
{
callback
();
}
else
if
(
this
.
invoiceImgList
.
length
===
0
)
{
callback
(
new
Error
(
"发票图片不能为空"
));
}
};
return
{
withdrawId
:
0
,
withdrawInfo
:
{
pay_status
:
0
,
sn
:
''
,
created_time
:
0
,
amount
:
0
,
service_fee
:
0
,
real_amount
:
0
,
bank_name
:
''
,
bank_branch_name
:
''
,
bank_card_id
:
''
,
bank_name_all
:
''
,
invoice_status
:
0
,
},
payRemark
:
''
,
// 打款备注
// 查看 电子发票发送格式
isViewSendRuleDialog
:
false
,
isSubmitInvoice
:
false
,
// 是否 补充提交发票
// 补充发票
isAddInvoiceAgainDialog
:
false
,
// 补充发票信息 对话框
expressLists
:
[],
invoiceImgList
:
[],
// 发票图片 file
invoiceImgBase64List
:
[],
// 发票图片 base64格式
addInvoiceForm
:
{
express_name
:
''
,
express_sn
:
''
,
invoice_img
:
''
},
addInvoiceRule
:
{
express_name
:
[{
required
:
true
,
message
:
'物流公司名称不能为空'
,
trigger
:
'change'
}],
express_sn
:
[{
required
:
true
,
message
:
'快递单号不能为空'
,
trigger
:
'blur'
}],
invoice_img
:
[{
required
:
true
,
validator
:
checkPic
}]
},
dialogVisibleInvoiceImg
:
false
,
dialogInvoiceImg
:
''
,
// 查看 发票信息
isViewInvoiceAgainDialog
:
false
,
viewInvoiceForm
:
{
express_name
:
''
,
express_sn
:
''
,
invoice_img
:
''
,
invoiceImgList
:
[],
}
}
},
// data end
created
()
{
// 提现记录 id
this
.
withdrawId
=
Number
(
this
.
$route
.
query
.
withdrawId
);
// 获取 物流公司 列表
this
.
getExpressList
();
// 查询 提现记录 详情
this
.
getWithdrawlogDetails
();
},
methods
:
{
/** 查询 提现记录 详情 */
getWithdrawlogDetails
()
{
const
id
=
this
.
withdrawId
getWithdrawlogDetailsData
({
id
:
id
}).
then
(
res
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
if
(
res
.
data
.
withdraw_info
)
{
this
.
withdrawInfo
=
res
.
data
.
withdraw_info
;
// 提现至账户 处理
if
(
this
.
withdrawInfo
.
bank_card_id
)
{
let
strBankcardId
=
this
.
withdrawInfo
.
bank_card_id
+
''
;
let
Forward4
=
strBankcardId
.
substring
(
0
,
4
)
let
backward4
=
strBankcardId
.
substring
(
strBankcardId
.
length
-
4
,
strBankcardId
.
length
)
this
.
withdrawInfo
.
bank_name_all
=
this
.
withdrawInfo
.
bank_name
+
'
\
u00a0
\
u00a0'
+
Forward4
+
'****'
+
backward4
;
}
// 补充发票信息 按钮 是否可以点击
this
.
isSubmitInvoice
=
this
.
withdrawInfo
.
invoice_status
==
1
?
true
:
false
;
}
// 打款备注
if
(
res
.
data
.
action_logs
&&
res
.
data
.
action_logs
.
content
)
{
this
.
payRemark
=
res
.
data
.
action_logs
.
content
;
}
}
});
},
/** 导出商品明细 */
exportGoodsDetails
()
{
exportGoodsDetailsData
(
{
id
:
this
.
withdrawId
}
).
then
(
res
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
const
aLink
=
document
.
createElement
(
'a'
);
aLink
.
href
=
res
.
data
;
//aLink.download = '订单.xls'; //下载的文件名
aLink
.
style
.
display
=
'none'
;
document
.
body
.
appendChild
(
aLink
);
aLink
.
click
();
document
.
body
.
removeChild
(
aLink
);
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
?
res
.
message
:
'导出失败'
});
}
});
},
/** 补充发票信息 */
submitInvoiceAgain
()
{
this
.
isAddInvoiceAgainDialog
=
true
;
},
/** 上传 发票图片 数量限制 1 */
limitCount1
(
files
,
fileList
)
{
this
.
$message
({
message
:
'最多上传1张图片'
,
type
:
'warning'
});
},
/** 发票图片 各种校验*/
beforeUpInvoiceImg
(
file
)
{
if
(
file
.
type
!==
"image/png"
&&
file
.
type
!==
"image/jpg"
&&
file
.
type
!=
"image/jpeg"
)
{
this
.
$message
({
message
:
'上传图片格式只支持png/png格式'
,
type
:
"warning"
});
return
false
;
}
let
isImgSize
=
(
file
.
size
/
1024
/
1024
/
1024
)
>
500
;
if
(
isImgSize
)
{
this
.
$message
({
message
:
'上传图片大小不能超过500kb'
,
type
:
"warning"
});
return
false
;
}
},
/** 上传 发票 图片 */
uploadInvoiceImg
(
param
)
{
this
.
getBase64
(
param
.
file
).
then
(
res
=>
{
let
result
=
res
.
split
(
","
);
this
.
Base64img
=
result
[
1
];
let
data
=
{
"img_data"
:
this
.
Base64img
};
this
.
invoiceImgBase64List
=
[]
// 初始化
upLoadImg
(
data
).
then
(
res
=>
{
let
urlObj
=
{
'url'
:
''
};
if
(
res
.
data
)
{
urlObj
.
url
=
res
.
data
.
image_url
;
this
.
invoiceImgList
.
push
(
urlObj
);
// 展示用
this
.
addInvoiceForm
.
invoice_img
=
res
.
data
.
image_url
// 字段无用,清除校验有用
this
.
invoiceImgBase64List
.
push
(
data
.
img_data
);
this
.
$message
({
type
:
'success'
,
message
:
'图片上传成功'
});
this
.
$refs
.
addInvoiceForm
.
clearValidate
(
'invoice_img'
);
}
});
});
},
/** 发票 删除前 */
beforeRemoveInvoiceImg
(
file
)
{
if
(
file
.
status
===
"success"
)
{
return
new
Promise
((
res
,
rej
)
=>
{
this
.
$confirm
(
`是否删除此图片`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
return
res
();
}).
catch
(()
=>
{
this
.
$message
({
type
:
'success'
,
message
:
'取消删除!'
});
return
rej
();
});
});
}
},
/** 发票图片 删除 */
removeInvoiceImg
(
file
)
{
if
(
file
.
status
===
"success"
)
{
for
(
let
i
=
0
;
i
<
this
.
invoiceImgList
.
length
;
i
++
)
{
if
(
file
.
uid
===
this
.
invoiceImgList
[
i
].
uid
)
{
this
.
invoiceImgList
.
splice
(
i
,
1
);
this
.
invoiceImgBase64List
.
splice
(
i
,
1
);
}
}
this
.
$message
(
{
type
:
'success'
,
message
:
'删除成功!'
}
);
if
(
this
.
invoiceImgList
.
length
===
0
)
{
this
.
$refs
.
addInvoiceForm
.
validateField
(
'invoice_img'
)
}
else
{
this
.
$refs
.
addInvoiceForm
.
clearValidate
(
'invoice_img'
);
}
}
},
/** 发票图片 预览 */
handleInvoiceImg
(
file
)
{
this
.
dialogInvoiceImg
=
file
.
url
;
this
.
dialogVisibleInvoiceImg
=
true
;
},
/** 提交 补充的发票信息 */
submitInvoice
()
{
let
params
=
{
id
:
''
,
express_company
:
''
,
express_no
:
''
,
invoice_img
:
[],
}
this
.
$refs
.
addInvoiceForm
.
validate
((
valid
)
=>
{
if
(
valid
)
{
params
.
id
=
this
.
withdrawId
;
params
.
express_company
=
this
.
addInvoiceForm
.
express_name
;
params
.
express_no
=
this
.
addInvoiceForm
.
express_sn
;
params
.
invoice_img
=
this
.
invoiceImgBase64List
addInvoiceData
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'补充发票信息成功'
});
this
.
isAddInvoiceAgainDialog
=
false
;
this
.
resetAddInvoiceForm
();
this
.
getWithdrawlogDetails
();
}
else
{
this
.
$message
({
type
:
'success'
,
message
:
res
.
message
?
res
.
message
:
'补充发票信息失败'
});
}
});
}
});
},
/** 取消 提交 补充的发票信息 */
cancelUpInvoiceImg
()
{
this
.
resetAddInvoiceForm
();
this
.
isAddInvoiceAgainDialog
=
false
;
},
/** 初始化 补充发票的 表单数据 */
resetAddInvoiceForm
()
{
this
.
addInvoiceForm
.
express_name
=
''
this
.
addInvoiceForm
.
express_sn
=
''
this
.
addInvoiceForm
.
invoice_img
=
''
this
.
invoiceImgList
=
[]
this
.
invoiceImgBase64List
=
[]
},
/** 查看 发票详情 */
viewInvoiceDetails
()
{
this
.
isViewInvoiceAgainDialog
=
true
;
if
(
this
.
withdrawInfo
.
express_company
)
{
this
.
viewInvoiceForm
.
express_name
=
this
.
withdrawInfo
.
express_company
}
if
(
this
.
withdrawInfo
.
express_no
)
{
this
.
viewInvoiceForm
.
express_sn
=
this
.
withdrawInfo
.
express_no
}
if
(
this
.
withdrawInfo
.
invoice_img_arr
[
0
]
)
{
this
.
viewInvoiceForm
.
invoice_img
=
this
.
withdrawInfo
.
invoice_img_arr
[
0
]
this
.
viewInvoiceForm
.
invoiceImgList
=
this
.
withdrawInfo
.
invoice_img_arr
}
},
/** 获取 物流公司 列表 */
getExpressList
()
{
getExpressListData
().
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
expressLists
=
res
.
data
.
expressLists
}
});
},
/** 提现状态 格式 */
payStatusFormatter
(
type
)
{
let
typeMsg
=
''
;
if
(
type
==
0
)
{
typeMsg
=
'打款中'
}
else
if
(
type
==
1
)
{
typeMsg
=
'提现成功'
}
return
typeMsg
},
/** 时间格式化 */
formatter
(
time
)
{
return
dateFormat
(
time
*
1000
,
'Y-m-d H:i:s'
)
},
/** 图片 base64 */
getBase64
(
file
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
let
reader
=
new
FileReader
();
let
imgResult
=
""
;
reader
.
readAsDataURL
(
file
);
reader
.
onload
=
function
()
{
imgResult
=
reader
.
result
;
};
reader
.
onerror
=
function
(
error
)
{
reject
(
error
);
};
reader
.
onloadend
=
function
()
{
resolve
(
imgResult
);
};
});
},
}
// methods end
}
</
script
>
<
style
scoped
>
/
deep
/
.el-card__body
{
height
:
100%
;
overflow
:
hidden
;
}
.card-header-tip
{
height
:
48px
;
line-height
:
48px
;
background
:
#FFF5ED
;
border
:
1px
solid
#F1914E
;
font-size
:
14px
;
font-weight
:
400
;
color
:
#333333
;
padding
:
0
15px
;
margin-bottom
:
0
;
}
.pay-status
{
margin
:
0
10px
;
font-size
:
16px
;
font-weight
:
600
;
}
.checked-email-rule
{
color
:
#F1914E
;
cursor
:
pointer
;
}
.main
{
height
:
calc
(
100%
-
130px
);
overflow-y
:
auto
;
}
.card-header-title
{
line-height
:
24px
;
font-size
:
18px
;
color
:
#000
;
font-weight
:
bold
;
margin
:
20px
0
;
}
.blue-block
{
display
:
inline-block
;
width
:
5px
;
height
:
24px
;
background
:
#3A84FF
;
margin
:
0
9px
0
0
;
border-radius
:
2px
;
vertical-align
:
bottom
;
}
/* 提现信息 */
.row-title
{
font-size
:
14px
;
color
:
#333
;
}
/
deep
/
.el-col
{
border
:
1px
solid
#eee
;
padding
:
0
10px
;
height
:
45px
;
display
:
flex
;
align-items
:
center
;
}
.text-r
{
justify-content
:
center
;
background
:
#F7F8FA
;
align-items
:
center
;
}
.text-l
{
justify-content
:
center
;
align-items
:
center
;
}
.view-sendemail-rule
{
margin
:
20px
20%
;
}
.view-sendemail-rule
>
p
{
line-height
:
30px
;
}
.span-title
{
display
:
inline-block
;
width
:
100px
;
text-align
:
left
;
font-weight
:
500
;
}
.spe-1
{
margin-right
:
7px
;
}
.remark-con
{
min-height
:
140px
;
width
:
70%
;
background
:
#F7F8FA
;
border
:
1px
solid
#E7E7EB
;
margin
:
0
0
20px
;
font-size
:
14px
;
padding
:
0
20px
;
color
:
#333333
;
}
.remark-con
>
p
{
line-height
:
24px
;
}
.footer-btn
{
width
:
calc
(
100%
+
40px
);
margin-left
:
-20px
;
padding-top
:
20px
;
height
:
65px
;
display
:
flex
;
flex-direction
:
row
;
justify-content
:
center
;
align-items
:
center
;
box-shadow
:
0
-8px
9px
1px
rgba
(
51
,
51
,
51
,
0.06
);
}
/* 补充发票 */
.add-invoice-form
{
margin
:
0
40px
;
}
</
style
>
src/views/system/asset/withdraw/index.vue
浏览文件 @
2261701c
<
template
>
<div
class=
"app-container"
>
<el-card
class=
"box-card"
>
<div
slot=
"header"
class=
"clearfix
"
>
<
p
style=
"font-size: 18px; float:left;"
>
提现申请
</p>
<div
class=
"card-header-title
"
>
<
span
class=
"blue-block blue-block-goods-title"
></span>
操作提现
</div>
<el-row>
<el-col
:span=
"24"
class=
"card-box"
>
<!--
<span>
商户信息
</span>
-->
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"150px"
class=
"ruleFormshop"
>
<el-form-item
label=
"当前余额"
>
{{
sellerinfo
.
Balance
}}
元
</el-form-item>
<el-form-item
label=
"提现中的金额"
>
{{
sellerinfo
.
FrozenMoney
}}
元
<el-form
ref=
"assetForm"
:model=
"assetForm"
size=
"small"
:rules=
"rules"
label-width=
"150px"
class=
"ruleFormshop"
>
<el-form-item
label=
"当前余额:"
>
{{
currentBalance
}}
元
</el-form-item>
<el-form-item
label=
"可提现金额"
>
{{
drawableCash
}}
元
<el-form-item
label=
"可提现金额:"
>
{{
withdrawalBalance
}}
元
</el-form-item>
<el-form-item
label=
"手续费"
>
当前手续费为
{{
newFee
}}
元
<el-form-item
label=
"提现中的金额:"
>
{{
withdrawalProgress
}}
元
</el-form-item>
<el-form-item
label=
"银行卡"
prop=
"bank_id"
>
<el-select
v-model=
"form.bank_id"
placeholder=
"选择到账银行卡"
style=
"width:260px;"
>
<el-option
v-for=
"item in banklist"
:key=
"item.Id"
:label=
"item.bank_name ? item.bank_name : item.bank_account_name"
:value=
"item.id"
></el-option>
<el-form-item
label=
"提现至:"
prop=
"bank_id"
>
<el-select
v-model=
"assetForm.bank_id"
placeholder=
"选择到账银行卡"
style=
"width:420px;"
>
<el-option
v-for=
"item in bankList"
:key=
"item.id"
:label=
"item.bank_name"
:value=
"item.id"
></el-option>
</el-select>
<span
class=
"withdraw-tip"
>
您还没有账户,
<span
class=
"spe-span-a"
@
click=
"goToAddBank"
>
去添加
</span>
</span>
</el-form-item>
<el-form-item
label=
"提现金额"
prop=
"amount"
>
<el-input
v-model=
"form.amount"
@
blur=
"onInputBlur($event)"
placeholder=
"提现金额大于等于100"
style=
"width:260px;"
/>
<el-form-item
label=
"提现金额:"
>
<el-input
v-model=
"withdrawalBalance"
disabled
placeholder=
"全部提现金额"
style=
"width:420px;"
/>
<span
class=
"withdraw-tip"
>
提现金额为全部的可提现余额,手续费将从您的提现金额中扣除,以实际到账为准(开票以实际到账金额开具)
</span>
<p
class=
"withdraw-tip-spe"
>
当前提现手续费为:
{{
chargeCount
}}
元
</p>
</el-form-item>
<el-form-item
label=
"支付密码:"
prop=
"pay_pass"
>
<el-input
v-model=
"assetForm.pay_pass"
type=
"password"
placeholder=
"请输入提现密码"
style=
"width:420px;"
/>
<span
class=
"withdraw-tip"
>
忘记支付密码?
<span
class=
"spe-span-a"
@
click=
"goToSetting"
>
重新设定
</span>
</span>
</el-form-item>
<el-form-item
label=
"短信验证码"
prop=
"verifycode"
class=
"spe-code-con-item"
>
<el-input
v-model=
"form.verifycode"
placeholder=
"验证码"
style=
"width:260px;"
>
<el-form-item
label=
"短信验证码:"
prop=
"code"
class=
"spe-code-con-item"
>
<el-input
v-model=
"assetForm.code"
placeholder=
"验证码"
style=
"width:420px;"
>
<template
slot=
"append"
>
<span
v-show=
"show"
@
click=
"getCheckCodeFn
"
>
获取验证码
</span>
<span
v-show=
"show"
@
click=
"getCheckCode"
style=
"padding:10px 0;
"
>
获取验证码
</span>
<span
v-show=
"!show"
class=
"count"
>
{{
count
}}
s
</span>
</
template
>
</el-input>
</el-form-item>
<el-form-item
label=
"支付密码"
prop=
"pwd"
>
<el-input
v-model=
"form.pwd"
type=
"password"
placeholder=
"请输入提现密码"
style=
"width:260px;"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"submitForm"
:disabled=
"inSureCashOut"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
<div
class=
"footer-btn"
>
<el-button
type=
"primary"
@
click=
"submitForm"
:disabled=
"inSureCashOut"
style=
"margin-right:20px;"
>
确 定
</el-button>
<el-button
@
click=
"resetAssetForm"
>
取 消
</el-button>
</div>
</el-card>
</div>
</template>
<
script
>
import
{
getSellerInfo
,
getBankcardList
,
addWithdrawlog
,
getCheckCode
}
from
'@/api/module/withdrawlog
'
import
{
getMyAssetListData
,
getCheckCodeData
,
applyWithdraw
}
from
'@/api/module/bankcard
'
export
default
{
name
:
"withdrawlog"
,
...
...
@@ -67,43 +72,55 @@
inSureCashOut
:
false
,
count
:
''
,
timer
:
null
,
//提现金额
amount
:
0
,
// 遮罩层
loading
:
true
,
// 选中数组
sellerId
:
0
,
sellerinfo
:
{},
banklist
:
[],
//手续费
newFee
:
0
,
// 可提现金额
drawableCash
:
0
,
// 弹出层标题
title
:
""
,
// 是否显示弹出层
open
:
true
,
// 表单参数
form
:
{
chargeCount
:
0
,
// 手续费
seller_id
:
0
,
currentBalance
:
0
,
withdrawalBalance
:
0
,
withdrawalProgress
:
0
,
bankList
:
[],
assetForm
:
{
bank_id
:
''
,
amount
:
''
pay_pass
:
''
,
code
:
''
},
// 表单校验
rules
:
{
bank_id
:
[{
required
:
true
,
message
:
"请选择要提现的银行卡"
,
trigger
:
"change"
}],
amount
:
[{
required
:
true
,
message
:
"提现金额不能为空"
,
trigger
:
"blur"
}],
verifycode
:
[{
required
:
true
,
message
:
"短信验证码不能为空"
,
trigger
:
"blur"
}],
pwd
:
[{
required
:
true
,
message
:
"支付密码必须填写"
,
trigger
:
"blur"
}]
}
code
:
[{
required
:
true
,
message
:
"短信验证码不能为空"
,
trigger
:
"blur"
}],
pay_pass
:
[{
required
:
true
,
message
:
"支付密码必须填写"
,
trigger
:
"blur"
}]
},
};
},
watch
:
{},
created
()
{
this
.
sellerId
=
this
.
$store
.
state
.
user
.
sellerid
;
this
.
getList
();
/** 唯一 商家 id */
this
.
seller_id
=
this
.
$store
.
state
.
user
.
sellerid
;
/** 我的资产 所有数据 */
this
.
getMyAssetList
()
},
methods
:
{
//-----------
/** 我的资产 所有数据 */
getMyAssetList
()
{
getMyAssetListData
(
{
seller_id
:
this
.
seller_id
}
).
then
(
res
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
// 账号资产
if
(
res
.
data
.
account_info
)
{
this
.
withdrawalBalance
=
Number
(
res
.
data
.
account_info
.
new_balance
)
/
100
;
this
.
withdrawalProgress
=
Number
(
res
.
data
.
account_info
.
new_frozen_money
)
/
100
;
this
.
currentBalance
=
this
.
add
(
this
.
withdrawalBalance
,
this
.
withdrawalProgress
);
this
.
chargeCount
=
Number
(
res
.
data
.
account_info
.
service_fee
)
/
100
;
}
// 账户管理
if
(
res
.
data
.
bank_list
)
{
this
.
bankList
=
res
.
data
.
bank_list
;
}
}
else
{
let
msg
=
res
.
message
?
res
.
message
:
'获取数据失败'
this
.
$message
({
type
:
'error'
,
message
:
msg
});
}
});
},
// 自定义高精度浮点数运算
// 加法
add
(
arg1
,
arg2
)
{
...
...
@@ -144,48 +161,45 @@
},
1000
)
}
},
getCheckCodeFn
()
{
/** 获取 短信验证码 */
getCheckCode
()
{
let
numRegExp
=
/^
[
0-9
]
+
(
.
[
0-9
]{2})?
$/
;
let
numberMoney
=
Number
(
this
.
form
.
amount
);
let
numberCash
=
Number
(
this
.
drawableCash
);
if
(
this
.
form
.
bank_id
===
''
)
{
this
.
$refs
.
form
.
validateField
(
"bank_id"
);
return
;
}
if
(
this
.
form
.
amount
===
''
)
{
this
.
$refs
.
form
.
validateField
(
"amount"
);
return
;
}
if
(
!
numRegExp
.
test
(
this
.
form
.
amount
)
)
{
this
.
$
message
({
type
:
'warning'
,
message
:
'提现金额只能输入大于 0 的数字'
}
);
if
(
this
.
assetForm
.
bank_id
==
''
)
{
this
.
$
refs
.
assetForm
.
validateField
(
"bank_id"
);
return
;
}
if
(
numberMoney
>
numberCash
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'提现金额不足'
});
return
;
}
else
if
(
numberMoney
<
100
)
{
this
.
msgError
(
"提现金额必须大于等于100"
);
if
(
this
.
assetForm
.
pay_pass
===
''
)
{
this
.
$refs
.
assetForm
.
validateField
(
"pay_pass"
);
return
;
}
if
(
this
.
seller
I
d
<=
0
)
{
if
(
this
.
seller
_i
d
<=
0
)
{
this
.
msgError
(
"商户信息错误"
);
return
;
}
// 倒计时效果
this
.
getCode
()
getCheckCode
({
sellerId
:
this
.
sellerId
}).
then
(
response
=>
{
getCheckCodeData
({
seller_id
:
this
.
seller_id
}).
then
(
response
=>
{
if
(
response
.
code
==
0
)
{
this
.
msgSuccess
(
response
.
msg
);
}
});
},
/** 去 资产 首页 添加账户 */
goToAddBank
()
{
this
.
$router
.
push
({
path
:
"/system/asset/myAsset"
});
},
/** 去 设置 密码 */
goToSetting
()
{
this
.
$router
.
push
({
path
:
"/system/settings/setpsd"
});
},
// 暂时 无用
onInputBlur
(
event
)
{
let
fee
=
0.006
;
this
.
form
.
amount
=
event
.
target
.
value
;
...
...
@@ -211,87 +225,23 @@
this
.
newFee
=
(
this
.
form
.
amount
*
fee
+
1
).
toFixed
(
2
);
}
},
//获取商户的信息
getSellerInfoFn
()
{
const
sellerid
=
this
.
sellerId
;
getSellerInfo
({
sellerId
:
sellerid
}).
then
(
response
=>
{
this
.
sellerinfo
=
response
.
data
;
this
.
sellerinfo
.
Balance
=
response
.
data
.
Balance
/
100
;
this
.
sellerinfo
.
FrozenMoney
=
response
.
data
.
FrozenMoney
/
100
;
this
.
drawableCash
=
this
.
minus
(
this
.
sellerinfo
.
Balance
,
this
.
sellerinfo
.
FrozenMoney
);
});
},
//获取商户的银行卡列表
getBankcardList
()
{
getBankcardList
({
sellerId
:
this
.
sellerId
}).
then
(
response
=>
{
this
.
banklist
=
response
.
data
.
data
;
//debugger
});
},
/** 查询商户提现列表 */
getList
()
{
this
.
getSellerInfoFn
();
this
.
getBankcardList
();
},
// 取消按钮
cancel
()
{
this
.
open
=
false
;
this
.
reset
();
},
// 表单重置
reset
()
{
this
.
form
=
{};
this
.
resetForm
(
"form"
);
resetAssetForm
()
{
this
.
$refs
[
'assetForm'
].
resetFields
();
},
/** 提交按钮 */
submitForm
()
{
this
.
$refs
[
"
f
orm"
].
validate
(
valid
=>
{
this
.
$refs
[
"
assetF
orm"
].
validate
(
valid
=>
{
if
(
valid
)
{
let
numberMoney
=
Number
(
this
.
form
.
amount
);
let
numberCash
=
Number
(
this
.
drawableCash
);
let
numberFee
=
Number
(
this
.
newFee
);
// 提现金额 + 手续费
<=
可提现金额
// add minus
// 提现金额 + 手续费
let
feeAddAmount
=
this
.
add
(
numberFee
,
numberMoney
);
let
isabled
=
Number
(
this
.
minus
(
numberCash
,
feeAddAmount
)
);
this
.
form
.
sellerId
=
this
.
sellerId
;
// 再次校验 提现信息
if
(
!
this
.
form
.
sellerId
)
{
this
.
$message
({
type
:
'error'
,
message
:
'商户信息有误!'
});
return
;
}
if
(
numberMoney
<
100
)
{
this
.
$message
({
type
:
'error'
,
message
:
'提现金额不能小于100'
});
return
;
}
if
(
(
numberMoney
>
numberCash
)
)
{
this
.
$message
({
type
:
'error'
,
message
:
'提现金额不足!'
});
return
;
}
if
(
isabled
<
0
)
{
this
.
$message
({
type
:
'error'
,
message
:
'本次操作提现后,【当前余额】不足以支付本次提现的手续费用,请您重新输入提现金额'
});
return
;
}
this
.
form
.
amount
=
Number
(
this
.
form
.
amount
);
// console.log(this.newFee);
// console.log(feeAddAmount,isabled);
//
// return;
addWithdrawlog
(
this
.
form
).
then
(
response
=>
{
if
(
response
.
code
===
1
)
{
this
.
msgSuccess
(
response
.
message
);
this
.
getList
();
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
response
.
message
});
applyWithdraw
(
this
.
assetForm
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
getMyAssetList
()
this
.
resetAssetForm
();
this
.
$message
({
type
:
'success'
,
message
:
'提现成功'
});
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
?
res
.
message
:
'提现失败'
});
}
});
}
...
...
@@ -300,17 +250,76 @@
}
//methods结束
};
</
script
>
<
style
scoped
>
<
style
scoped
>
/
deep
/
.el-card__body
{
height
:
100%
;
overflow
:
hidden
;
}
.ruleFormshop
{
width
:
500px
;
margin
:
20px
0
0
120px
;
height
:
calc
(
100%
-
110px
);
padding
:
20px
;
overflow-y
:
auto
;
}
.ruleFormshop
.el-form-item
{
margin-bottom
:
26px
;
}
/
deep
/
.spe-code-con-item
.el-input-group__append
{
cursor
:
pointer
;
}
/
deep
/
.el-card__body
{
height
:
calc
(
100%
-
50px
);
overflow-y
:
scroll
;
.card-header-title
{
height
:
45px
;
line-height
:
35px
;
font-size
:
18px
;
color
:
#000
;
font-weight
:
bold
;
border-bottom
:
1px
solid
#eee
;
}
.blue-block
{
display
:
inline-block
;
width
:
5px
;
height
:
24px
;
background
:
#3A84FF
;
margin
:
0
9px
0
0
;
border-radius
:
2px
;
vertical-align
:
middle
;
}
.footer-btn
{
width
:
calc
(
100%
+
40px
);
margin-left
:
-20px
;
padding-top
:
20px
;
height
:
65px
;
display
:
flex
;
flex-direction
:
row
;
justify-content
:
center
;
align-items
:
center
;
box-shadow
:
0
-8px
9px
1px
rgba
(
51
,
51
,
51
,
0.06
);
}
.withdraw-tip-spe
{
font-size
:
12px
;
color
:
#999
;
margin
:
0
;
}
.withdraw-tip
{
font-size
:
12px
;
color
:
#999
;
margin
:
5px
;
line-height
:
26px
;
}
.spe-span-a
{
color
:
#409EFF
;
cursor
:
pointer
;
}
.spe-span-a
:hover
{
/*color: #46a6ff;*/
}
</
style
>
src/views/system/asset/withdrawlog/index.vue
浏览文件 @
2261701c
...
...
@@ -2,87 +2,111 @@
<div
class=
"app-container"
>
<el-card
class=
"box-card"
>
<div
slot=
"header"
class=
"clearfix"
>
<p
style=
"font-size: 18px; float:left;"
>
提现记录
</p>
<el-form
class=
"form-params"
:model=
"queryParams"
label-width=
"auto"
:inline=
"true"
size=
"small"
>
<el-form-item
label=
"提现时间"
prop=
"cashTime"
>
<el-date-picker
v-model=
"queryParams.cashTime"
type=
"daterange"
align=
"left"
unlink-panels
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"提现状态"
prop=
"pay_status"
>
<el-select
v-model=
"queryParams.pay_status"
placeholder=
"全部类型"
clearable
>
<el-option
label=
"全部类型"
:value=
"-1"
></el-option>
<el-option
label=
"打款中"
:value=
"0"
></el-option>
<el-option
label=
"提现成功"
:value=
"1"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"getList"
>
搜索
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
</div>
<el-table
v-loading=
"loading"
:data=
"withdrawlogList"
:height=
"tableHeight"
>
<el-table-column
label=
"提现流水单号"
align=
"center"
prop=
"ReflectSn"
/>
<el-table-column
label=
"提现账号"
align=
"center"
prop=
"BankName"
>
<el-table
:data=
"withdrawlogList"
:height=
"tableHeight"
>
<el-table-column
label=
"序号"
align=
"center"
width=
"55"
>
<template
slot-scope=
"scope"
>
<div>
{{
scope
.
row
.
BankAccountNo
}}
</div>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"提现流水单号"
align=
"center"
prop=
"sn"
width=
"240"
></el-table-column>
<el-table-column
label=
"提现时间"
:formatter=
"formatTime"
align=
"center"
prop=
"created_time"
></el-table-column>
<el-table-column
label=
"提现金额"
:formatter=
"formatFee"
align=
"center"
prop=
"amount"
></el-table-column>
<el-table-column
label=
"手续费"
:formatter=
"formatFee"
align=
"center"
prop=
"service_fee"
></el-table-column>
<el-table-column
label=
"实际到账金额"
:formatter=
"formatFee"
align=
"center"
prop=
"real_amount"
></el-table-column>
<el-table-column
label=
"提现状态"
align=
"center"
prop=
"pay_status"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.pay_status == 0"
>
打款中
</span>
<span
v-if=
"scope.row.pay_status == 1"
>
提现成功
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"开票状态"
align=
"center"
prop=
"invoice_status"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.invoice_status == 0"
>
未开票
</span>
<span
v-if=
"scope.row.invoice_status == 1"
>
已开票
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"提现金额"
:formatter=
"formatFee"
align=
"center"
prop=
"ReflectMoney"
/>
<el-table-column
label=
"提现状态"
align=
"center"
:formatter=
"formatType"
prop=
"Status"
/>
<el-table-column
label=
"提现审核说明"
align=
"center"
prop=
"Des"
/>
<el-table-column
label=
"提现时间"
:formatter=
"formatTime"
align=
"center"
prop=
"AddTime"
/>
<el-table-column
label=
"手续费"
:formatter=
"formatFee"
align=
"center"
prop=
"Fee"
/>
<el-table-column
label=
"实际到账金额"
:formatter=
"formatFee"
align=
"center"
prop=
"AfterReflectMoney"
/>
<el-table-column
label=
"操作"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
@
click=
"viewDetails(scope.row)"
>
详情
</el-button>
</
template
>
</el-table-column>
<!-- <el-table-column label="提现账号" align="center" prop="BankName">-->
<!-- <template slot-scope="scope">-->
<!-- <div>-->
<!-- {{ scope.row.BankAccountNo }}-->
<!-- </div>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="提现审核说明" align="center" prop="Des"/>-->
</el-table>
<pagination
v-show=
"total>0"
:total=
"total"
:page
.
sync=
"queryParams.page"
:limit
.
sync=
"queryParams.limit"
@
pagination=
"getList"
/>
<!-- 分页 -->
<div
class=
"footer_pagination"
>
<el-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"currentPage"
:page-sizes=
"[20, 40, 60, 80, 100]"
:page-size=
"pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
>
</el-pagination>
</div>
</el-card>
</div>
</template>
<
script
>
import
{
listWithdrawlog
,
getWithdrawlog
,
delWithdrawlog
,
addWithdrawlog
,
updateWithdrawlog
}
from
'@/api/module/withdrawlog'
import
{
dateFormat
}
from
'@/utils'
import
{
getWithdrawData
}
from
'@/api/module/bankcard'
import
{
dateFormat
}
from
'@/utils'
export
default
{
name
:
"withdrawlog"
,
data
()
{
return
{
sellerId
:
0
,
fullHeight
:
0
,
tableHeight
:
0
,
// 遮罩层
loading
:
false
,
// 选中数组
ids
:
[],
// 非单个禁用
single
:
true
,
// 非多个禁用
multiple
:
true
,
// 显示搜索条件
showSearch
:
true
,
// 总条数
total
:
0
,
// 商户提现表格数据
withdrawlogList
:
[],
// 弹出层标题
title
:
""
,
// 是否显示弹出层
open
:
false
,
// 查询参数
queryParams
:
{
page
:
1
,
limit
:
10
,
queryParams
:
{
// 查询参数
sellerId
:
0
,
cashTime
:
[],
pay_status
:
''
},
// 表单参数
form
:
{},
// 表单校验
rules
:
{
status
:
[
{
required
:
true
,
message
:
"提现状态 0申请提现 1提现成功 2提现失败不能为空"
,
trigger
:
"blur"
}
],
}
total
:
0
,
currentPage
:
1
,
pageSize
:
20
,
withdrawlogList
:
[],
};
},
created
()
{
this
.
sellerId
=
this
.
$store
.
state
.
user
.
sellerid
;
/** 查询 提现记录 列表 */
this
.
getList
();
this
.
$nextTick
(()
=>
{
this
.
fullHeight
=
document
.
getElementsByClassName
(
'box-card'
)[
0
].
clientHeight
...
...
@@ -91,78 +115,115 @@
watch
:
{
fullHeight
(
val
)
{
let
formHeight
=
document
.
getElementsByClassName
(
'clearfix'
)[
0
].
clientHeight
this
.
tableHeight
=
val
-
formHeight
-
1
2
0
;
this
.
tableHeight
=
val
-
formHeight
-
1
0
0
;
}
},
methods
:
{
//格式化状态
formatType
(
row
)
{
var
types
=
row
.
Status
var
optDes
=
''
if
(
types
==
1
)
{
optDes
=
"提现成功"
}
else
if
(
types
==
2
)
{
optDes
=
"提现失败"
}
else
if
(
types
==
0
)
{
optDes
=
"提现申请中"
/** 查询 提现记录 列表 */
getList
()
{
let
params
=
{
page
:
this
.
currentPage
,
limit
:
this
.
pageSize
,
}
return
optDes
if
(
this
.
queryParams
.
pay_status
===
0
||
this
.
queryParams
.
pay_status
===
1
)
{
params
[
'pay_status'
]
=
this
.
queryParams
.
pay_status
}
if
(
this
.
queryParams
.
cashTime
&&
this
.
queryParams
.
cashTime
.
length
==
2
)
{
params
[
'start_time'
]
=
new
Date
(
this
.
queryParams
.
cashTime
[
0
]).
getTime
()
/
1000
;
params
[
'end_time'
]
=
new
Date
(
this
.
queryParams
.
cashTime
[
1
]).
getTime
()
/
1000
;
}
getWithdrawData
(
params
).
then
(
response
=>
{
if
(
response
)
{
this
.
withdrawlogList
=
response
.
data
.
data
;
this
.
total
=
response
.
data
.
count
;
}
else
{
this
.
$message
({
message
:
'数据出错啦!'
,
type
:
'error'
});
}
});
},
/** 详情 跳转 */
viewDetails
(
row
)
{
const
indexId
=
row
.
id
?
row
.
id
:
0
;
this
.
$router
.
push
({
path
:
'/system/asset/wddetails'
,
query
:
{
withdrawId
:
indexId
}
});
},
//格式化价格
/** 重置 搜索条件 */
resetQuery
()
{
this
.
queryParams
=
{
// 查询参数
sellerId
:
0
,
cashTime
:
[],
pay_status
:
''
}
this
.
currentPage
=
1
this
.
pageSize
=
20
this
.
getList
();
},
handleSizeChange
(
val
)
{
this
.
pageSize
=
val
this
.
getList
()
},
handleCurrentChange
(
val
)
{
this
.
currentPage
=
val
this
.
getList
()
},
/** 格式化价格 返回原数据是 分,除以100 */
formatFee
(
row
,
s
,
value
,
i
)
{
var
nm
=
0
var
money
=
value
let
nm
=
0
,
money
=
value
if
(
money
>
0
)
{
nm
=
money
/
100
}
return
nm
},
/
/格式化时间
/
** 格式化时间 */
formatTime
(
row
)
{
var
Time
=
row
.
AddT
ime
var
Time
=
row
.
created_t
ime
var
newtime
=
""
if
(
Time
>
0
)
{
newtime
=
dateFormat
(
Time
*
1000
,
"Y-m-d H:i:s"
);
}
return
newtime
},
/** 查询商户提现列表 */
getList
()
{
this
.
queryParams
.
sellerId
=
this
.
sellerId
;
listWithdrawlog
(
this
.
queryParams
).
then
(
response
=>
{
if
(
response
)
{
this
.
withdrawlogList
=
response
.
data
.
data
;
this
.
total
=
response
.
data
.
count
;
}
else
{
this
.
$message
({
message
:
'数据出错啦!'
,
type
:
'error'
});
}
});
},
// 取消按钮
cancel
()
{
this
.
open
=
false
;
this
.
reset
();
//
this.open = false;
//
this.reset();
},
// 表单重置
reset
()
{
this
.
form
=
{
id
:
null
,
reflect_sn
:
null
,
reflect_money
:
null
,
status
:
0
,
des
:
null
,
seller_bank_id
:
null
,
add_time
:
null
,
fee
:
null
,
seller_id
:
null
,
after_reflect_money
:
null
};
this
.
resetForm
(
"form"
);
//
this.form = {
//
id: null,
//
reflect_sn: null,
//
reflect_money: null,
//
status: 0,
//
des: null,
//
seller_bank_id: null,
//
add_time: null,
//
fee: null,
//
seller_id: null,
//
after_reflect_money: null
//
};
//
this.resetForm("form");
},
}
//methods结束
};
</
script
>
<
style
scoped
lang=
"scss"
type=
"text/stylus"
>
<
style
scoped
>
.form-params
.el-form-item
{
margin
:
10px
0
10px
10px
;
}
/* 分页 */
.footer_pagination
{
text-align
:
center
;
margin-top
:
15px
;
}
</
style
>
src/views/system/goods/add/components/goodsinfomation.vue
浏览文件 @
2261701c
...
...
@@ -379,9 +379,9 @@
if
(
res
.
data
)
{
urlObj
.
url
=
res
.
data
.
image_url
;
this
.
goodsImgFileList
.
push
(
urlObj
);
this
.
goodsImgFileList
.
forEach
(
item
=>
{
this
.
goodsInfoForm
.
imgs
.
push
(
item
.
url
)
})
//
this.goodsImgFileList.forEach(item=> {
//
this.goodsInfoForm.imgs.push(item.url)
//
})
this
.
$message
({
type
:
'success'
,
message
:
'图片上传成功'
});
// 只清除一次,不浪费哦
if
(
this
.
goodsImgFileList
.
length
===
1
)
{
...
...
src/views/system/order/components/orderDetail.vue
浏览文件 @
2261701c
...
...
@@ -9,62 +9,11 @@
</el-card>
<el-card
style=
"margin-top: 20px;"
>
<div
class=
"orderList"
>
<div
class=
"orderItem"
>
<div
class=
"orderTitle"
>
<img
class=
"icon"
src=
"@/assets/image/order/icon1.png"
alt=
""
>
<span>
订单信息
</span>
</div>
<div>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
订单编号
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
parent_order_sn
:
''
}}
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
下单时间
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
formatter
(
orderDetail
.
created_time
)
:
''
}}
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
商品数量
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
goods_total
:
''
}}
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
商品总价
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
goods_price
/
100
:
''
}}
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
运费
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
dispatch_price
/
100
:
''
}}
</el-col>
</el-row>
</div>
</div>
<div
class=
"orderItem"
>
<div
class=
"orderTitle"
style=
"justify-content: space-between; width: 75%;"
>
<div
style=
"display: flex; align-items: center;"
>
<img
class=
"icon"
src=
"@/assets/image/order/icon2.png"
alt=
""
>
<span>
买家信息
</span>
</div>
<el-button
size=
"mini"
type=
"primary"
@
click=
"modifyinfo"
:disabled=
"orderDetail && orderDetail.status > 1"
>
修改买家信息
</el-button>
</div>
<div>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
收货人姓名
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
real_name
:
''
}}
</el-col>
<el-col
:span=
"3"
class=
"text-r"
>
联系电话
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
mobile
:
''
}}
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
收货地址
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
provice
+
orderDetail
.
city
+
orderDetail
.
district
+
orderDetail
.
street
+
orderDetail
.
address
:
''
}}
</el-col>
<el-col
:span=
"3"
class=
"text-r"
></el-col>
<el-col
:span=
"6"
class=
"text-l"
></el-col>
</el-row>
</div>
</div>
<div
class=
"orderItem"
>
<div
class=
"orderTitle"
style=
"justify-content: space-between;"
>
<div
style=
"display: flex; align-items: center;"
>
<img
class=
"icon"
src=
"@/assets/image/order/icon3.png"
alt=
""
>
<span>
商品
信息
</span>
<span>
订单
信息
</span>
</div>
<div>
<el-button
size=
"mini"
type=
"primary"
@
click=
"goShipping(1)"
>
去发货
</el-button>
...
...
@@ -83,8 +32,8 @@
<el-table-column
label=
"规格/数量/单价"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
goods_option_title
}}
<br/>
{{
scope
.
row
.
total
}}
<br/>
{{
scope
.
row
.
goods_price
/
100
}}
{{
scope
.
row
.
goods_price
/
100
}}
元
<br/>
x
{{
scope
.
row
.
total
}}
</
template
>
</el-table-column>
<el-table-column
label=
"商品订单状态"
align=
"center"
>
...
...
@@ -104,19 +53,71 @@
</el-table-column>
<el-table-column
label=
"发货时间"
prop=
"send_time"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
send_time
?
scope
.
row
.
send_time
:
'—'
}}
{{
scope
.
row
.
send_time
?
formatter
(
scope
.
row
.
send_time
)
:
'—'
}}
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
class-name=
"small-padding fixed-width"
align=
"center"
>
<el-table-column
label=
"操作"
class-name=
"small-padding fixed-width"
align=
"center"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span
style=
"font-size:12px;padding: 0 15px 0 0;"
v-if=
"deliveryTypeText(scope.row.goods_status,scope.row.is_reissue) == '已补单'"
>
已补单
</span>
<el-button
size=
"mini"
type=
"text"
v-if=
"deliveryTypeText(scope.row.goods_status,scope.row.is_reissue) == '去补单'"
@
click=
"goShipping(4,scope.row.id)"
>
去补单
</el-button>
<el-button
size=
"mini"
type=
"text"
v-if=
"deliveryTypeText(scope.row.goods_status,scope.row.is_reissue) == '去发货'"
@
click=
"goShipping(3,scope.row.id)"
>
去发货
</el-button>
<el-divider
direction=
"vertical"
></el-divider>
<el-button
size=
"mini"
type=
"text"
@
click=
"getExpressInfoNew(scope.row)"
>
查看物流
</el-button>
</
template
>
</el-table-column>
</el-table>
</div>
<!-- <div class="orderItem">-->
<!-- <div class="orderTitle">-->
<!-- <img class="icon" src="@/assets/image/order/icon1.png" alt="">-->
<!-- <span>订单信息</span>-->
<!-- </div>-->
<!-- <div>-->
<!-- <el-row class="row-title">-->
<!-- <el-col :span="3" class="text-r">订单编号</el-col>-->
<!-- <el-col :span="6" class="text-l">{{orderDetail ? orderDetail.parent_order_sn : ''}}</el-col>-->
<!-- </el-row>-->
<!-- <el-row class="row-title">-->
<!-- <el-col :span="3" class="text-r">下单时间</el-col>-->
<!-- <el-col :span="6" class="text-l">{{orderDetail ? formatter(orderDetail.created_time) : ''}}</el-col>-->
<!-- </el-row>-->
<!-- <el-row class="row-title">-->
<!-- <el-col :span="3" class="text-r">商品数量</el-col>-->
<!-- <el-col :span="6" class="text-l">{{orderDetail ? orderDetail.goods_total : ''}}</el-col>-->
<!-- </el-row>-->
<!-- <el-row class="row-title">-->
<!-- <el-col :span="3" class="text-r">商品总价</el-col>-->
<!-- <el-col :span="6" class="text-l">{{orderDetail ? orderDetail.goods_price / 100 : ''}}</el-col>-->
<!-- </el-row>-->
<!-- <el-row class="row-title">-->
<!-- <el-col :span="3" class="text-r">运费</el-col>-->
<!-- <el-col :span="6" class="text-l">{{orderDetail ? orderDetail.dispatch_price / 100 : ''}}</el-col>-->
<!-- </el-row>-->
<!-- </div>-->
<!-- </div>-->
<div
class=
"orderItem"
>
<div
class=
"orderTitle"
style=
"justify-content: space-between; width: 75%;"
>
<div
style=
"display: flex; align-items: center;"
>
<img
class=
"icon"
src=
"@/assets/image/order/icon2.png"
alt=
""
>
<span>
买家信息
</span>
</div>
<el-button
size=
"mini"
type=
"primary"
@
click=
"modifyinfo"
:disabled=
"orderDetail.isEditBuyerInfo"
>
修改买家信息
</el-button>
</div>
<div>
<el-row
class=
"row-title"
>
<el-col
:span=
"4"
class=
"text-r"
>
收货人姓名
</el-col>
<el-col
:span=
"4"
class=
"text-r"
>
联系电话
</el-col>
<el-col
:span=
"10"
class=
"text-r"
>
收货地址
</el-col>
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"4"
class=
"text-l"
>
{{ orderDetail ? orderDetail.real_name : ''}}
</el-col>
<el-col
:span=
"4"
class=
"text-l"
>
{{ orderDetail ? orderDetail.mobile : ''}}
</el-col>
<el-col
:span=
"10"
class=
"text-l"
>
{{orderDetail ? orderDetail.provice + orderDetail.city + orderDetail.district + orderDetail.street + orderDetail.address : ''}}
</el-col>
</el-row>
</div>
</div>
<!-- <div class="orderItem">
<div class="orderTitle">
<img class="icon" src="@/assets/image/order/icon4.png" alt="">
...
...
@@ -204,7 +205,7 @@
<div
style=
"margin: 0 10%"
>
<el-form
ref=
"form"
label-width=
"100px"
>
<el-form-item
label=
"快递公司:"
>
<el-select
size=
"mini"
v-model=
"expressNum"
placeholder=
"请选择快递公司"
style=
"width: 100%;"
>
<el-select
size=
"mini"
v-model=
"expressNum"
filterable
placeholder=
"请选择快递公司"
style=
"width: 100%;"
>
<el-option
v-for=
"item in expressLists"
:key=
"item.value"
...
...
@@ -259,7 +260,7 @@
:type=
"activity.type"
color=
"#0bbd87"
:size=
"activity.size"
:timestamp=
"
formatter(activity.msgTime)
"
>
:timestamp=
"
activity.msg_time
"
>
{{activity.content}}
</el-timeline-item>
</el-timeline>
...
...
@@ -270,7 +271,7 @@
</template>
<
script
>
import
{
orderInfo
,
sendOrder
,
expressInfoNew
,
remarkOrder
,
orderInfoEdit
,
deliveryOrder
One
,
deliveryOrderTwo
,
toReissueOrderData
}
from
'@/api/module/order'
import
{
orderInfo
,
sendOrder
,
expressInfoNew
,
remarkOrder
,
orderInfoEdit
,
deliveryOrder
,
deliveryOrderAgain
,
toReissueOrderData
}
from
'@/api/module/order'
import
{
dateFormat
}
from
'@/utils'
import
{
getAreaList
}
from
'@/api/module/retreat/address'
export
default
{
...
...
@@ -480,9 +481,8 @@ export default {
express_sn
:
this
.
express_sn
,
// 快递单号
//express_code: ''
}
//console.log(11111,paramsObj);
deliveryOrder
One
(
paramsObj
).
then
(
res
=>
{
deliveryOrder
(
paramsObj
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'发货成功'
});
this
.
goShippingDialog
=
false
...
...
@@ -504,7 +504,7 @@ export default {
//console.log("批量补单发货",listObj);
deliveryOrder
Two
(
listObj
).
then
(
res
=>
{
deliveryOrder
Again
(
listObj
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'补单发货成功'
});
this
.
goShippingDialog
=
false
...
...
@@ -526,7 +526,7 @@ export default {
paramsObj
.
order_goods_ids
.
push
(
this
.
goods_ids
);
//console.log(11111,paramsObj);
deliveryOrder
One
(
paramsObj
).
then
(
res
=>
{
deliveryOrder
(
paramsObj
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'发货成功'
});
this
.
goShippingDialog
=
false
...
...
@@ -551,7 +551,7 @@ export default {
orderObj
.
express_sn
=
this
.
express_sn
;
singleOrderObj
.
list
.
push
(
orderObj
);
deliveryOrder
Two
(
singleOrderObj
).
then
(
res
=>
{
deliveryOrder
Again
(
singleOrderObj
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'补单发货成功'
});
this
.
goShippingDialog
=
false
...
...
@@ -576,12 +576,37 @@ export default {
},
/** 修改 买家信息 */
modifyinfo
()
{
// console.log(580,this.orderDetail);
this
.
addressForm
=
{
shipping_name
:
''
,
tel
:
''
,
address
:
''
,
street
:
''
street
:
''
,
areaList
:
[]
}
if
(
this
.
orderDetail
.
real_name
)
{
this
.
addressForm
.
shipping_name
=
this
.
orderDetail
.
real_name
;
}
if
(
this
.
orderDetail
.
mobile
)
{
this
.
addressForm
.
tel
=
this
.
orderDetail
.
mobile
;
}
// if(this.orderDetail.provice && this.orderDetail.city && this.orderDetail.district) {
// this.addressForm.areaList.push(this.orderDetail.provice) //this.orderDetail.provice + this.orderDetail.city + this.orderDetail.district
// this.addressForm.areaList.push(this.orderDetail.this.city) //this.orderDetail.provice + this.orderDetail.city + this.orderDetail.district
// this.addressForm.areaList.push(this.orderDetail.district) //this.orderDetail.provice + this.orderDetail.city + this.orderDetail.district
// }else {
// this.addressForm.areaList = []
// }
if
(
this
.
orderDetail
.
street
)
{
this
.
addressForm
.
street
=
this
.
orderDetail
.
street
;
}
if
(
this
.
orderDetail
.
address
)
{
this
.
addressForm
.
address
=
this
.
orderDetail
.
address
;
}
this
.
modifyinfoDialog
=
true
},
/** 保存 买家信息 */
...
...
@@ -787,7 +812,7 @@ export default {
align-items
:
center
;
}
/
deep
/
.el-dialog__body
{
padding
-bottom
:
0
;
padding
:
20px
;
}
/
deep
/
.el-input--medium
.el-input__inner
{
height
:
28px
;
...
...
@@ -799,11 +824,13 @@ export default {
}
.text-r
{
justify-content
:
flex-end
;
justify-content
:
center
;
background
:
#F7F8FA
;
align-items
:
center
;
}
.text-l
{
text-align
:
left
;
justify-content
:
center
;
align-items
:
center
;
}
.orderItem
{
margin-bottom
:
20px
;
...
...
@@ -830,6 +857,7 @@ export default {
.logistics
{
height
:
600px
;
overflow-y
:
auto
;
padding
:
10px
;
}
/* 留言框样式 */
...
...
src/views/system/order/index.vue
浏览文件 @
2261701c
...
...
@@ -13,28 +13,31 @@
<el-tab-pane
label=
"已完成"
name=
"third"
></el-tab-pane>
<el-tab-pane
label=
"全部订单"
name=
"fourth"
></el-tab-pane>
</el-tabs>
<div
v-show=
"this.activeName == 'first' "
style=
"position: absolute; top: -5px; right: 0;"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-download"
@
click=
"handleExport"
>
导出订单
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-position"
@
click=
"isDeliveryOpen = true"
>
批量发货
</el-button>
<div
v-show=
"activeName == 'first' "
style=
"position: absolute; top: -5px; right: 0;"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-download"
@
click=
"handleExportUnSendOrder"
>
导出订单
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-position"
@
click=
"handleExportDeliveryOrder"
>
批量发货
</el-button>
</div>
<div
v-show=
"activeName == 'fourth' "
style=
"position: absolute; top: -5px; right: 0;"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-download"
@
click=
"handleAllOrderExport"
>
导出订单
</el-button>
</div>
</div>
<div
class=
"form-box"
>
<el-form
class=
"form-params"
ref=
"form"
:model=
"form"
label-width=
"85px"
>
<el-row
type=
"flex"
class=
"row-bg"
justify=
"space-around"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"订单号:"
>
<el-input
size=
"mini"
v-model=
"form.order_sn"
placeholder=
"请输入订单号"
/>
<el-form-item
label=
"
总
订单号:"
>
<el-input
size=
"mini"
v-model=
"form.order_sn"
placeholder=
"请输入
总
订单号"
/>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
label=
"商品名称:"
>
<el-input
size=
"mini"
v-model=
"form.
GoodsN
ame"
placeholder=
"请输入商品名称"
/>
<el-input
size=
"mini"
v-model=
"form.
goods_n
ame"
placeholder=
"请输入商品名称"
/>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
label=
"收货人:"
>
<el-input
size=
"mini"
v-model=
"form.
ship
name"
placeholder=
"请输入收货人"
/>
<el-input
size=
"mini"
v-model=
"form.
real_
name"
placeholder=
"请输入收货人"
/>
</el-form-item>
</el-col>
</el-row>
...
...
@@ -44,7 +47,7 @@
<el-input
size=
"mini"
v-model=
"form.Tel"
placeholder=
"请输入联系电话"
/>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
v-show=
"activeName == 'first' || activeName == 'fourth' "
>
<el-form-item
label=
"下单时间:"
>
<el-date-picker
size=
"mini"
...
...
@@ -58,6 +61,34 @@
></el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"6"
v-show=
"activeName == 'second' "
>
<el-form-item
label=
"发货时间:"
>
<el-date-picker
size=
"mini"
v-model=
"form.sendTime"
type=
"daterange"
align=
"left"
unaLink-panels
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
></el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"6"
v-show=
"activeName == 'third' "
>
<el-form-item
label=
"完成时间:"
>
<el-date-picker
size=
"mini"
v-model=
"form.finishTime"
type=
"daterange"
align=
"left"
unaLink-panels
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
></el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-search"
style=
"margin-left: 20px;"
@
click=
"getListOrder"
>
搜索
...
...
@@ -70,26 +101,25 @@
<!-- 表头 -->
<div
class=
"table-header-spe"
>
<el-table
class=
"title_table hxz-el-table"
align=
"center"
>
<el-table-column
align=
"center"
width=
"55"
>
<el-table-column
align=
"center"
width=
"55"
v-if=
"activeName == 'fourth' "
>
<template
slot=
"header"
slot-scope=
"scope"
>
<el-checkbox
v-model=
"allTablesChecked"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"订单号"
align=
"center"
width=
"
18
0"
></el-table-column>
<el-table-column
label=
"商品名称"
align=
"center"
></el-table-column>
<el-table-column
label=
"规格/数量/金额"
align=
"center"
width=
"180"
></el-table-column>
<el-table-column
label=
"下单时间"
align=
"center"
width=
"180"
></el-table-column>
<el-table-column
label=
"订单号"
align=
"center"
width=
"
22
0"
></el-table-column>
<el-table-column
label=
"商品名称"
align=
"center"
></el-table-column>
<el-table-column
label=
"规格/数量/金额"
align=
"center"
></el-table-column>
<el-table-column
label=
"下单
/发货/完成
时间"
align=
"center"
width=
"180"
></el-table-column>
<el-table-column
label=
"收货人"
align=
"center"
width=
"180"
></el-table-column>
<el-table-column
label=
"联系电话"
align=
"center"
width=
"180"
></el-table-column>
<el-table-column
label=
"操作"
align=
"center"
width=
"1
40"
></el-table-column>
<el-table-column
label=
"操作"
align=
"center"
width=
"1
20"
></el-table-column>
</el-table>
<div
class=
"hxz-el-table-check"
></div>
</div>
<div
class=
"table-all-con box-card"
>
<el-card
v-for=
"(item, index) in tableDataList"
:key=
"index"
class=
"card1 text item"
>
<div
slot=
"header"
class=
"el-card-header-spe"
>
<div><span>
订单状态:
</span><span>
{{ orderStatusFormatter(item.order.status) }}
</span></div>
<div><span>
订单状态:
</span><span>
{{ orderStatusFormatter(item.order.status) }}
</span><
span
style=
"margin: 0 0 0 30px;"
>
总订单号:
</span><span>
{{ item.order.order_sn }}
</span><
/div>
</div>
<div
class=
"item-table"
>
<el-table
...
...
@@ -97,29 +127,41 @@
:show-header=
"false"
:span-method=
"arraySpanMethod"
:data=
"item.order_goods"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
></el-table-column>
<el-table-column
prop=
"goods_order_sn"
label=
"订单号"
width=
"
18
0"
align=
"center"
></el-table-column>
<el-table-column
prop=
"
goods_option_
title"
label=
"商品名称"
align=
"center"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
v-if=
"activeName == 'fourth' "
></el-table-column>
<el-table-column
prop=
"goods_order_sn"
label=
"订单号"
width=
"
22
0"
align=
"center"
></el-table-column>
<el-table-column
prop=
"title"
label=
"商品名称"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<img
style=
"width:60px;height:60px;"
:src=
"scope.row.thumb"
/>
<div>
{{
scope
.
row
.
goods_option_title
}}
</div>
<div
class=
"img-title-table"
>
<img
v-if=
"scope.row.thumb"
style=
"width:60px;height:60px;"
:src=
"scope.row.thumb"
/>
<div
class=
"ml10"
>
{{
scope
.
row
.
title
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"规格/数量/金额"
width=
"180"
align=
"center"
>
<el-table-column
label=
"规格/数量/金额"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
goods_option_title
}}
<br/>
{{
scope
.
row
.
total
}}
<br/>
{{
scope
.
row
.
goods_price
/
100
}}
<br/>
{{
scope
.
row
.
goods_price
/
100
}}
元
<br/>
x
{{
scope
.
row
.
total
}}
<br/>
</
template
>
</el-table-column>
<el-table-column
prop=
"created_time"
label=
"下单时间"
width=
"180"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
formatter
(
scope
.
row
.
created_time
)
}}
{{
speTiemFormatter
(
scope
.
row
.
created_time
)
}}
<br/>
{{
speTiemFormatter
(
scope
.
row
.
send_time
)
}}
<br/>
{{
speTiemFormatter
(
scope
.
row
.
updated_time
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"phone"
width=
"180"
label=
"收货人"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
item
.
order
.
real_name
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"mobile"
label=
"联系电话"
width=
"180"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
item
.
order
.
mobile
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"phone"
width=
"180"
label=
"收货人"
align=
"center"
></el-table-column>
<el-table-column
prop=
"real_name"
label=
"联系电话"
width=
"180"
align=
"center"
></el-table-column>
<el-table-column
label=
"操作"
width=
"140"
align=
"center"
>
<el-table-column
label=
"操作"
width=
"120"
align=
"center"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
@
click=
"handleInfo(scope.row)"
>
详情
</el-button>
</
template
>
...
...
@@ -150,7 +192,7 @@
</div>
</el-dialog>
<!-- 批量发货 -->
<el-dialog
title=
"批量发货流程"
:visible
.
sync=
"isDeliveryOpen"
width=
"60%"
center
>
<el-dialog
title=
"批量发货流程"
:visible
.
sync=
"isDeliveryOpen"
width=
"60%"
center
:before-close=
"cancelExport"
>
<el-steps
:active=
"3"
align-center
style=
"width:95%;margin: 0 auto;"
>
<el-step
title=
"导出发货Excel表单"
description=
""
>
<
template
slot=
"icon"
>
...
...
@@ -193,7 +235,7 @@
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"
isDeliveryOpen = false
"
>
取 消
</el-button>
<el-button
@
click=
"
cancelExport
"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"subDelivery"
>
确 定
</el-button>
</span>
</el-dialog>
...
...
@@ -201,7 +243,7 @@
</template>
<
script
>
import
{
listOrder
,
exportOrder
,
orderInfo
,
deliveryOrder
,
expressList
,
getOrderTabData
}
from
'@/api/module/order'
import
{
listOrder
,
exportOrder
,
orderInfo
,
deliveryOrder
,
expressList
,
getOrderTabData
,
exportUnSendOrderGoodsData
,
deliveryOrderExport
}
from
'@/api/module/order'
import
{
dateFormat
}
from
'@/utils'
import
OrderDetail
from
'./components/orderDetail.vue'
import
XLSX
from
"xlsx"
...
...
@@ -222,10 +264,12 @@
activeName
:
'first'
,
form
:
{
order_sn
:
''
,
GoodsN
ame
:
''
,
ship
name
:
''
,
goods_n
ame
:
''
,
real_
name
:
''
,
Tel
:
''
,
dateTime
:
[],
finishTime
:
[],
sendTime
:
[],
},
goodsStatus
:
1
,
tableDataList
:
[],
// 后台返回所有数据
...
...
@@ -241,14 +285,7 @@
tableHeight
:
null
,
allTablesChecked
:
false
,
// 订单导出 入参
exportParams
:
{
order_sn
:
''
,
goods_name
:
''
,
real_name
:
''
,
tel
:
0
,
created_start_time
:
0
,
created_end_time
:
0
,
}
exportParams
:
{}
}
},
watch
:
{
...
...
@@ -267,8 +304,6 @@
mounted
()
{
/** 获取 seller_id*/
this
.
sellerId
=
this
.
$store
.
state
.
user
.
sellerid
;
// 获取 订单 状态对应数量
//this.getOrderTab()
// 订单列表 搜索
this
.
getListOrder
()
//
...
...
@@ -280,7 +315,7 @@
},
// 表格合并 列单元格
arraySpanMethod
({
row
,
column
,
rowIndex
,
columnIndex
})
{
if
(
columnIndex
>
5
)
{
// 用于设置要合并开始的列号
if
(
columnIndex
>
3
)
{
// 用于设置要合并开始的列号
if
(
rowIndex
===
0
)
{
// 用于设置合并开始的行号
return
{
rowspan
:
100
,
// 合并的行数
...
...
@@ -297,6 +332,13 @@
formatter
(
time
)
{
return
dateFormat
(
time
*
1000
,
'Y-m-d H:i:s'
)
},
speTiemFormatter
(
time
)
{
if
(
time
)
{
return
dateFormat
(
time
*
1000
,
'Y-m-d H:i:s'
)
}
else
{
return
'--'
}
},
/** 订单状态 */
orderStatusFormatter
(
status
)
{
if
(
status
===
-
1
)
{
...
...
@@ -319,10 +361,12 @@
resetBtn
(
iscall
)
{
this
.
form
=
{
order_sn
:
''
,
GoodsN
ame
:
''
,
ship
name
:
''
,
goods_n
ame
:
''
,
real_
name
:
''
,
Tel
:
''
,
dateTime
:
[],
finishTime
:
[],
sendTime
:
[],
}
this
.
currentPage
=
1
this
.
pageSize
=
20
...
...
@@ -345,7 +389,7 @@
this
.
goodsStatus
=
3
break
case
'fourth'
:
this
.
goodsStatus
=
-
2
this
.
goodsStatus
=
0
break
default
:
break
...
...
@@ -360,19 +404,19 @@
},
/** 获取 订单 状态对应数量 */
getOrderTab
()
{
//
getOrderTabData().then(res => {
//
//console.log("获取订单状态和对应订单数量",res);
//
if (res.code === 1 && res.data.length > 0) {
//
// 1 表示 代发货;2 表示 已发货
//
for (let i = 0; i
<
res
.
data
.
length
;
i
++
)
{
//
if (res.data[i].Status === 1) {
//
this.total1 = res.data[i].Count > 999 ? '999+' : res.data[i].Count;
//
} else if (res.data[i].Status === 2) {
//
this.total2 = res.data[i].Count > 999 ? '999+' : res.data[i].Count;
//
}
//
}
//
}
//
});
getOrderTabData
().
then
(
res
=>
{
//console.log("获取订单状态和对应订单数量",res);
if
(
res
.
code
===
1
&&
res
.
data
.
length
>
0
)
{
// 1 表示 代发货;2 表示 已发货
for
(
let
i
=
0
;
i
<
res
.
data
.
length
;
i
++
)
{
if
(
res
.
data
[
i
].
Status
===
1
)
{
this
.
total1
=
res
.
data
[
i
].
Count
>
999
?
'999+'
:
res
.
data
[
i
].
Count
;
}
else
if
(
res
.
data
[
i
].
Status
===
2
)
{
this
.
total2
=
res
.
data
[
i
].
Count
>
999
?
'999+'
:
res
.
data
[
i
].
Count
;
}
}
}
});
},
// 获取订单列表
getListOrder
()
{
...
...
@@ -382,39 +426,49 @@
limit
:
this
.
pageSize
,
seller_id
:
this
.
sellerId
,
status
:
this
.
goodsStatus
,
start_time
:
new
Date
(
this
.
form
.
dateTime
[
0
]).
getTime
()
/
1000
||
''
,
end_time
:
new
Date
(
this
.
form
.
dateTime
[
1
]).
getTime
()
/
1000
||
''
,
order_sn
:
this
.
form
.
order_sn
,
goods_name
:
this
.
form
.
GoodsName
,
real_name
:
this
.
form
.
shipname
,
mobile
:
this
.
form
.
Tel
,
}
if
(
this
.
form
.
order_sn
!=
''
)
{
params
[
'order_sn'
]
=
this
.
form
.
order_sn
}
if
(
this
.
form
.
goods_name
!=
''
)
{
params
[
'goods_name'
]
=
this
.
form
.
goods_name
}
if
(
this
.
form
.
real_name
!=
''
)
{
params
[
'real_name'
]
=
this
.
form
.
real_name
}
if
(
this
.
form
.
Tel
!=
''
)
{
params
[
'mobile'
]
=
this
.
form
.
Tel
}
if
(
this
.
form
.
dateTime
&&
this
.
form
.
dateTime
.
length
==
2
)
{
params
[
'created_start_time'
]
=
new
Date
(
this
.
form
.
dateTime
[
0
]).
getTime
()
/
1000
;
params
[
'created_end_time'
]
=
new
Date
(
this
.
form
.
dateTime
[
1
]).
getTime
()
/
1000
;
}
if
(
this
.
form
.
finishTime
&&
this
.
form
.
finishTime
.
length
==
2
)
{
params
[
'finish_start_time'
]
=
new
Date
(
this
.
form
.
finishTime
[
0
]).
getTime
()
/
1000
;
params
[
'finish_end_time'
]
=
new
Date
(
this
.
form
.
finishTime
[
1
]).
getTime
()
/
1000
;
}
if
(
this
.
form
.
sendTime
&&
this
.
form
.
sendTime
.
length
==
2
)
{
params
[
'send_start_time'
]
=
new
Date
(
this
.
form
.
sendTime
[
0
]).
getTime
()
/
1000
;
params
[
'send_end_time'
]
=
new
Date
(
this
.
form
.
sendTime
[
1
]).
getTime
()
/
1000
;
}
listOrder
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
// 获取 订单 状态对应数量
this
.
getOrderTab
()
// 每次订单 查询成功,保存查询参数,供商品导出接口使用(入参)
this
.
exportParams
.
order_sn
=
params
.
order_sn
;
this
.
exportParams
.
goods_name
=
params
.
goods_name
;
this
.
exportParams
.
real_name
=
params
.
real_name
;
this
.
exportParams
.
tel
=
params
.
tel
;
this
.
exportParams
.
created_start_time
=
params
.
created_start_time
;
this
.
exportParams
.
created_end_time
=
params
.
created_end_time
;
this
.
exportParams
=
params
;
//console.log("初始赋值:",this.exportParams);
this
.
total
=
res
.
data
.
count
||
0
this
.
tableDataList
=
res
.
data
.
data
if
(
this
.
goodsStatus
==
1
)
{
this
.
taotal1
=
res
.
data
.
count
;
}
else
if
(
this
.
goodsStatus
==
2
)
{
this
.
taotal2
=
res
.
data
.
count
;
}
}
})
},
// 合并数据
// listSpanMethod() {
//
// },
// row 当前行 column 当前列 rowIndex 当前行号, columnIndex 当前列号
listSpanMethod
({
row
,
column
,
rowIndex
,
columnIndex
})
{
if
(
columnIndex
===
1
)
{
...
...
@@ -431,9 +485,44 @@
}
}
},
// 订单导出
handleExport
()
{
exportOrder
(
this
.
exportParams
).
then
(
res
=>
{
/**
* [待发货] 页签 导出订单 操作
* 导出逻辑,根据 当前 搜索条件,导出所有订单
* */
handleExportUnSendOrder
()
{
let
params
=
this
.
exportParams
;
delete
params
.
page
;
delete
params
.
limit
;
delete
params
.
seller_id
;
delete
params
.
status
;
//console.log("导出待发货订单,入参:",params);
exportUnSendOrderGoodsData
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
1
)
{
const
aLink
=
document
.
createElement
(
'a'
);
aLink
.
href
=
res
.
data
.
file_url
;
//aLink.download = '订单.xls'; //下载的文件名
aLink
.
style
.
display
=
'none'
;
document
.
body
.
appendChild
(
aLink
);
aLink
.
click
();
document
.
body
.
removeChild
(
aLink
);
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
?
res
.
message
:
'导出失败'
});
}
});
},
/**
* [全部订单] 页签 订单导出
* 导出逻辑,根据 当前 搜索条件,导出所有订单
* */
handleAllOrderExport
()
{
let
params
=
this
.
exportParams
;
delete
params
.
page
;
delete
params
.
limit
;
delete
params
.
seller_id
;
//console.log("导出全部订单,入参:",params);
exportOrder
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
1
)
{
const
aLink
=
document
.
createElement
(
'a'
);
aLink
.
href
=
res
.
data
.
file_url
;
...
...
@@ -496,59 +585,85 @@
removeDevExcel
(
file
,
fileList
)
{
this
.
excelList
=
[];
},
/** 批量发货 - 导入表格 */
handleExportDeliveryOrder
()
{
this
.
isDeliveryOpen
=
true
;
this
.
excelList
=
[];
},
/** 取消 批量上传发货 */
cancelExport
()
{
this
.
$refs
.
upload
.
clearFiles
();
this
.
isDeliveryOpen
=
false
;
this
.
excelList
=
[];
//console.log(88,this.excelList);
},
// 提交导入数据
subDelivery
()
{
if
(
this
.
excelList
.
length
===
0
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'请先上传填写好的表格数据'
});
return
}
if
(
this
.
excelList
.
length
>
0
&&
this
.
excelList
[
0
].
id
&&
this
.
excelList
[
0
].
express_name
&&
this
.
excelList
[
0
].
express_sn
)
{
deliveryOrder
(
this
.
excelList
).
then
(
res
=>
{
deliveryOrder
Export
(
this
.
excelList
).
then
(
res
=>
{
if
(
res
.
code
===
1
)
{
this
.
isDeliveryOpen
=
false
;
this
.
$message
({
type
:
'success'
,
message
:
'批量发货成功'
});
this
.
getList
();
this
.
getList
Order
();
}
else
{
let
msg
=
res
.
message
||
'批量发货失败'
this
.
$message
({
type
:
'error'
,
message
:
msg
});
}
});
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
'
导入表格数据有误
'
});
this
.
$message
({
type
:
'error'
,
message
:
'
部分订单未填写物流公司或物流单号,请完善后再上传
'
});
}
},
// 订单详情
handleInfo
(
row
)
{
this
.
detailDialog
=
true
let
order_id
=
row
.
order_id
orderInfo
({
order_id
:
order_id
}).
then
(
res
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
this
.
detailDialog
=
true
// 留言备注,需要单独处理
let
remarkList
=
[]
// res.data.order.remark 返回数据格式比较多,不判断了
try
{
remarkList
=
JSON
.
parse
(
res
.
data
.
order
.
remark
)
remarkList
=
JSON
.
parse
(
res
.
data
.
order
.
seller_
remark
)
}
catch
(
e
)
{
remarkList
=
[]
console
.
log
(
99
,
e
);
}
res
.
data
.
order
.
remark
=
remarkList
this
.
order_detail
=
res
.
data
.
order
;
// let isArray = Array.isArray(remarkList)
//
// if(isArray) {
// res.data.order.remark = remarkList
// this.order_detail = res.data.order;
// }else {
//
// }
// 商品订单数据 array
this
.
order_goods_detail
=
res
.
data
.
order_goods_detail
?
res
.
data
.
order_goods_detail
:
[];
// 能否修改买家信息 字段动态添加
// 1,商品订单,只要要发货的,就不能再修改,2,修改过一次的,不能再修改
let
isEditBuyerInfo
=
false
;
if
(
this
.
order_detail
.
is_update_address
==
1
)
{
isEditBuyerInfo
=
true
}
else
{
if
(
this
.
order_goods_detail
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
this
.
order_goods_detail
.
length
;
i
++
)
{
if
(
this
.
order_goods_detail
[
i
].
goods_status
>
0
)
{
isEditBuyerInfo
=
true
break
;
}
}
}
}
this
.
order_detail
[
'isEditBuyerInfo'
]
=
isEditBuyerInfo
;
//console.log('备注留言返回原始数据',res.data.order.remark);
// this.$router.push({path: '/system/goods/management'});
}
else
if
(
res
.
code
==
0
)
{
let
msg
=
res
.
message
?
res
.
message
:
'暂无数据'
this
.
$message
({
type
:
'error'
,
message
:
msg
});
}
})
},
...
...
@@ -572,7 +687,14 @@
handleCurrentChange
(
val
)
{
this
.
currentPage
=
val
this
.
getListOrder
()
}
},
/** 时间格式处理 */
// dateTimeChange(val) {
// if( !Array.isArray(val) ) {
// this.form.dateTime = [];
// }
//
// },
}
};
</
script
>
...
...
@@ -600,15 +722,26 @@
.form-params
{
}
.img-title-table
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
.footer_pagination
{
text-align
:
center
;
margin-top
:
15px
;
}
.delivery-
tips-con
,
.delivery-
data-con
{
.delivery-data-con
{
width
:
80%
;
margin
:
5px
auto
;
margin
:
10px
auto
;
font-weight
:
bold
;
}
.delivery-tips-con
{
width
:
80%
;
margin
:
60px
auto
0
;
font-weight
:
bold
;
}
...
...
@@ -648,7 +781,10 @@
.table-all-con
{
height
:
calc
(
100%
-
250px
);
overflow-y
:
auto
;
padding
:
0
20px
;
overflow
:
auto
;
}
.ml10
{
margin-left
:
10px
;
}
</
style
>
src/views/system/retreat/address.vue
浏览文件 @
2261701c
...
...
@@ -44,8 +44,8 @@
/>
</el-card>
<!-- 新增、修改 -->
<el-dialog
:title=
"addTitle"
:visible
.
sync=
"isOpen"
width=
"
50%"
class=
"add-edit
"
>
<el-form
v-if=
"isOpen"
:model=
"addressForm"
:rules=
"addressRules"
ref=
"addressForm"
label-width=
"100px"
>
<el-dialog
:title=
"addTitle"
:visible
.
sync=
"isOpen"
width=
"
40%"
class=
"add-edit"
center
:before-close=
"cancel
"
>
<el-form
v-if=
"isOpen"
:model=
"addressForm"
:rules=
"addressRules"
ref=
"addressForm"
label-width=
"100px"
size=
"small"
>
<el-row>
<el-col
:span=
"16"
:offset=
"3"
>
<el-form-item
label=
"联系人:"
prop=
"contact_person"
>
...
...
@@ -80,8 +80,8 @@
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save('addressForm')"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
size=
"small"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save('addressForm')"
size=
"small"
>
确 定
</el-button>
</div>
</el-dialog>
</div>
...
...
@@ -138,7 +138,7 @@
},
// 售后地址列表
addressList
:[],
addTitle
:
'
新增/修改
'
,
// 新增,修改 弹窗名
addTitle
:
''
,
// 新增,修改 弹窗名
// 新增、修改表单
addressForm
:
{
id
:
0
,
...
...
@@ -239,10 +239,9 @@
handleAdd
()
{
this
.
isOpen
=
true
;
this
.
addTitle
=
"新增地址"
;
this
.
areaList
=
[];
this
.
resetForm
(
'addressForm'
);
},
/** 删除 */
handleDelete
(
row
)
{
const
roleIds
=
row
.
id
||
this
.
ids
;
this
.
$confirm
(
'是否确认删除编号为"'
+
roleIds
+
'"的数据项?'
,
'确认信息'
,
{
...
...
@@ -257,13 +256,13 @@
}).
catch
(
action
=>
{});
},
/
/ 修改
/
** 修改 */
handleUpdate
(
row
)
{
this
.
areaList
=
[];
const
roleIds
=
row
.
id
||
this
.
ids
;
this
.
loading
=
true
;
getAddressDetails
(
roleIds
).
then
(
res
=>
{
if
(
res
.
data
)
{
this
.
addTitle
=
"编辑地址"
;
this
.
isOpen
=
true
;
// 处理 三级联动回显
let
areaListAry
=
res
.
data
.
address_ids
?
res
.
data
.
address_ids
.
split
(
","
)
:
[];
...
...
@@ -275,11 +274,14 @@
this
.
loading
=
false
;
});
},
/** 取消 新增售后地址 */
cancel
()
{
this
.
areaList
=
[];
this
.
reset
Form
(
'addressForm'
);
//
this
.
reset
AddressForm
(
);
this
.
isOpen
=
false
;
},
/** 保存 */
save
(
form
)
{
if
(
typeof
this
.
addressForm
.
address_ids
===
"string"
)
{
let
areaListAry
=
this
.
addressForm
.
address_ids
.
split
(
","
);
...
...
@@ -299,7 +301,8 @@
}
else
{
this
.
$message
({
message
:
'修改成功'
,
type
:
'success'
});
}
this
.
resetAddressForm
();
this
.
isOpen
=
false
;
this
.
getList
();
}
else
if
(
res
.
code
===
0
){
if
(
res
.
msg
)
{
...
...
@@ -308,12 +311,21 @@
this
.
$message
({
message
:
'新增失败'
,
type
:
'error'
});
}
}
this
.
resetForm
(
'addressForm'
);
this
.
isOpen
=
false
;
});
}
});
},
/** 初始化 添加 地址 表单 数据 */
resetAddressForm
()
{
this
.
addressForm
=
{
id
:
0
,
contact_person
:
''
,
contact_phone
:
''
,
address_ids
:
[],
address
:
''
}
this
.
areaList
=
[];
},
//
handleChanges
(
value
)
{
//this.areaList = value;
...
...
src/views/system/retreat/edit.vue
浏览文件 @
2261701c
<
template
>
<div
class=
"app-container after-sale-detail"
>
<el-card>
<!--
<p
class=
"as-detail-title"
>
售后详情
</p>
-->
<!-- 仅退款 -->
<div
v-if=
"asOrderType == 1"
class=
"as-step-info"
>
<el-steps
:active=
"step"
align-center
>
...
...
@@ -24,11 +23,12 @@
<el-card
class=
"as-order-details"
>
<!-- 倒计时 提示 -->
<p
class=
"count-down-con"
v-if=
"asOrderType == 1"
>
剩余处理时间: 25小时46分 请在72小时内处理,逾期不处理,系统将自动退款到买家账户
</p>
<p
class=
"count-down-con"
v-if=
"asOrderType == 2"
>
222剩余处理时间: 25小时46分 请在72小时内处理,逾期不处理,系统将自动退款到买家账户222
</p>
<p
class=
"count-down-con"
v-if=
"!(asOrderDetail.status == 5 || asOrderDetail.status == -1)"
><i
class=
"spec-icon-w el-icon-warning"
></i>
剩余处理时间:
<span
class=
"cd-time-span"
>
{{
cdHour
}}
小时
{{
cdMinute
}}
分
</span>
请在期限内处理,逾期不处理,系统将自动退款到买家账户
</p>
<!-- 售后信息 -->
<div>
<p>
售后信息
</p>
<div
class=
"card-header-title"
>
<span
class=
"blue-block blue-block-goods-title"
></span>
售后信息
</div>
<div>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
售后类型
</el-col>
...
...
@@ -49,23 +49,24 @@
<el-row
class=
"row-title-pic"
>
<el-col
:span=
"3"
class=
"text-r"
>
申请图片
</el-col>
<el-col
:span=
"9"
class=
"text-l"
>
<!--
{{
asOrderDetail
.
images
}}
-->
<div
v-if=
"asSrcList.length > 0"
>
<el-image
style=
"width: 70px; height: 70px;border:1px solid #eee;"
style=
"width: 70px; height: 70px;border:1px solid #eee;
margin-right:10px;
"
v-for=
"(itemSrc,index) in asSrcList"
:src=
"itemSrc"
:preview-src-list=
"asSrcList"
>
</el-image>
</div>
<p
v-else
style=
"color:#
666
"
>
暂无图片
</p>
<p
v-else
style=
"color:#
999
"
>
暂无图片
</p>
</el-col>
</el-row>
</div>
</div>
<!-- 订单信息 -->
<div>
<p>
订单信息
</p>
<div
class=
"card-header-title"
>
<span
class=
"blue-block blue-block-goods-title"
></span>
订单信息
</div>
<div>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
订单状态
</el-col>
...
...
@@ -81,7 +82,7 @@
</el-row>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
商品金额
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
goodsOrderDetail
.
price
}}
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
goodsOrderDetail
.
goods_
price
}}
</el-col>
<el-col
:span=
"3"
class=
"text-r"
>
商品数量
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
goodsOrderDetail
.
total
}}
</el-col>
</el-row>
...
...
@@ -89,11 +90,13 @@
</div>
<!-- 历史售后申请 -->
<div>
<p>
历史售后申请
</p>
<div
class=
"card-header-title"
>
<span
class=
"blue-block blue-block-goods-title"
></span>
历史售后申请
</div>
<el-table
:data=
"asApplyList"
>
<el-table-column
label=
"申请时间"
align=
"center"
prop=
"
tabapply
_time"
>
<el-table-column
label=
"申请时间"
align=
"center"
prop=
"
created
_time"
>
<template
slot-scope=
"scope"
>
{{
formatter
(
scope
.
row
.
tabapply
_time
)
}}
{{
formatter
(
scope
.
row
.
created
_time
)
}}
</
template
>
</el-table-column>
...
...
@@ -121,7 +124,15 @@
</el-table-column>
<el-table-column
label=
"申请图片"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
apply_price
/
100
}}
<div
v-if=
"(scope.row.imgs_arr && scope.row.imgs_arr.length > 0)"
>
<el-image
style=
"width: 70px; height: 70px;border:1px solid #eee;margin-right:10px;"
v-for=
"(itemSrc,index) in scope.row.imgs_arr"
:src=
"itemSrc"
:preview-src-list=
"scope.row.imgs_arr"
>
</el-image>
</div>
<p
v-else
style=
"color:#666"
>
暂无图片
</p>
</
template
>
</el-table-column>
...
...
@@ -130,20 +141,20 @@
<!-- 售后 操作按钮 -->
<div
class=
"as-handle-btn"
v-if=
"onlyOrRefundBtnType == 1"
>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"agreeHandle(1)"
>
同意退款
</el-button>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"refuseHandle(2)"
>
拒绝退款
</el-button>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"agreeHandle(1)"
:disabled=
"isFinishedButtonDisabled"
>
同意退款
</el-button>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"refuseHandle(2)"
:disabled=
"isFinishedButtonDisabled"
>
拒绝退款
</el-button>
</div>
<div
class=
"as-handle-btn"
v-if=
"onlyOrRefundBtnType == 2"
>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"agreeHandle(3)"
>
同意退货退款
</el-button>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"refuseHandle(4)"
>
拒绝退货退款
</el-button>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"agreeHandle(3)"
:disabled=
"isFinishedButtonDisabled"
>
同意退货退款
</el-button>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"refuseHandle(4)"
:disabled=
"isFinishedButtonDisabled"
>
拒绝退货退款
</el-button>
</div>
<div
class=
"as-handle-btn"
v-if=
"onlyOrRefundBtnType == 3"
>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"refuseHandle(4)"
>
拒收包裹
</el-button>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"agreeHandle(1)"
>
确定退款
</el-button>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"refuseHandle(4)"
:disabled=
"isFinishedButtonDisabled"
>
拒收包裹
</el-button>
<el-button
class=
"as-btn"
type=
"primary"
@
click=
"agreeHandle(1)"
:disabled=
"isFinishedButtonDisabled"
>
确定退款
</el-button>
</div>
</el-card>
<!--
[仅退款 同意/拒绝] [退货退款 确定退款/拒收包裹]
对话框 -->
<!--
售后所有操作
对话框 -->
<el-dialog
:title=
"dialogASTypeTitle"
:visible
.
sync=
"isASTypeDialog"
...
...
@@ -207,6 +218,7 @@
return
{
// Refund only 仅退款
// Return refund 退货退款
timer
:
null
,
asGoodId
:
0
,
// 当前 售后订单的 id
asOrderType
:
1
,
// 售后类型 1-仅退款; 2-退货退款
// 仅退款 流程,每个步骤文字提示
...
...
@@ -219,6 +231,8 @@
refundStep3
:
'售后完成'
,
refundStep4
:
''
,
refundStep5
:
''
,
cdHour
:
0
,
cdMinute
:
0
,
// 售后订单 信息
asOrderDetail
:
{
status
:
0
,
// 退款状态
...
...
@@ -232,16 +246,14 @@
goodsOrderDetail
:
{
goods_status
:
0
,
// 订单状态
goods_order_sn
:
''
,
// 订单编号
price
:
''
,
// 商品
金额
goods_price
:
''
,
// 商品金额/售后
金额
title
:
''
,
// 商品名称
goods_option_title
:
''
,
// 商品规格
total
:
''
,
// 商品数量
},
// 售后申请 图片 list
asSrcList
:
[],
asApplyList
:
[
{
data1
:
1256332213
,
data2
:
1
,
data3
:
3
,
data4
:
4
,
data5
:
5
,
data6
:
6
,
data7
:
7
}
],
asApplyList
:
[],
// 0-全部隐藏-默认状态; 1-显示 仅退款 按钮;2-显示 退货退款中(同意/拒绝 退货退款)按钮; 3-显示 退货退款中 (拒收包裹 / 确定退款) 按钮
onlyOrRefundBtnType
:
0
,
// 1-仅退款 同意退款; 2-仅退款 拒绝退款; 3-退货退款 同意退款退款; 4-; 5-
...
...
@@ -252,10 +264,18 @@
refuseReason
:
''
,
sellerId
:
0
,
asAddressOptions
:
[],
order_refund_address
:
''
order_refund_address
:
''
,
isFinishedButtonDisabled
:
false
}
// return end
},
watch
:
{},
watch
:
{
$route
(
to
,
from
)
{
if
(
this
.
$route
.
query
.
refund_sn
)
{
this
.
asGoodId
=
this
.
$route
.
query
.
refund_sn
;
this
.
getDetail
();
}
}
},
created
()
{
this
.
sellerId
=
this
.
$store
.
state
.
user
.
sellerid
;
/** 获取 当前售后 订单的id */
...
...
@@ -265,7 +285,9 @@
/** 获取 退货退款的发送 地址 */
this
.
getASAdress
();
},
mounted
()
{},
mounted
()
{
},
methods
:
{
/** Only 代表 仅退款
* 售后步骤和对应文案提示,
...
...
@@ -355,7 +377,7 @@
this
.
refundStep3
=
'买家超时未退货'
this
.
refundStep4
=
'买家未退货,售后关闭'
this
.
refundStep5
=
''
this
.
step
=
5
this
.
step
=
4
}
else
if
(
close_status
===
6
)
{
this
.
has45
=
3
this
.
refundStep2
=
'买家取消售后申请'
...
...
@@ -369,20 +391,41 @@
},
/** 查询订单详情*/
getDetail
()
{
//console.log("售后单号",this.asGoodId);
getASOrderDetail
({
order_refund_sn
:
this
.
asGoodId
}).
then
(
res
=>
{
//console.log("296",res);
if
(
res
.
code
===
1
&&
res
.
data
)
{
// 售后订单详情
if
(
res
.
data
.
order_refund
)
{
this
.
asOrderDetail
=
res
.
data
.
order_refund
;
//------------ 测试数据
// this.asOrderDetail.refund_type = 2;
// this.asOrderDetail.status = 2;
// this.asOrderDetail.close_reason = 2;
//--------------
// 先确定 售后类型
this
.
asOrderType
=
this
.
asOrderDetail
.
refund_type
this
.
cdHour
=
this
.
asOrderDetail
.
dead_line_hour
this
.
cdMinute
=
this
.
asOrderDetail
.
dead_line_minute
if
(
this
.
cdHour
<
0
)
{
this
.
cdHour
=
0
;
}
if
(
this
.
cdMinute
<
0
)
{
this
.
cdMinute
=
0
;
}
this
.
timer
=
setInterval
(()
=>
{
if
(
this
.
cdHour
<=
0
)
{
this
.
cdHour
=
0
}
if
(
this
.
cdMinute
<=
0
)
{
this
.
cdMinute
=
0
}
if
(
this
.
cdMinute
&&
this
.
cdHour
)
{
this
.
cdMinute
--
if
(
this
.
cdMinute
<=
0
)
{
this
.
cdMinute
=
59
this
.
cdHour
--
}
}
},
60000
)
// 根据售后订单信息,判断 订单状态,显示对应按钮操作
this
.
asHandleBtnType
(
this
.
asOrderDetail
)
// 金额处理
...
...
@@ -390,27 +433,33 @@
this
.
asOrderDetail
.
price
=
this
.
asOrderDetail
.
price
/
100
// 售后图片 处理
this
.
asSrcList
=
[]
if
(
this
.
asOrderDetail
.
im
ages
)
{
this
.
asSrcList
=
this
.
asOrderDetail
.
im
ages
.
split
(
','
)
if
(
this
.
asOrderDetail
.
im
gs_arr
&&
this
.
asOrderDetail
.
imgs_arr
.
length
>
0
)
{
this
.
asSrcList
=
this
.
asOrderDetail
.
im
gs_arr
}
// 更新 售后订单 流程和状态
// 仅退款
if
(
this
.
asOrderDetail
.
refund_type
==
1
)
{
this
.
returnOnlyStatus
(
this
.
asOrderDetail
.
status
,
this
.
asOrderDetail
.
close_reason
);
this
.
$forceUpdate
()
}
// 退货退款
if
(
this
.
asOrderDetail
.
refund_type
==
2
)
{
this
.
returnRefundStatus
(
this
.
asOrderDetail
.
status
,
this
.
asOrderDetail
.
close_reason
);
this
.
$forceUpdate
()
}
}
// 订单 详情
if
(
res
.
data
.
order_goods
)
{
this
.
goodsOrderDetail
=
res
.
data
.
order_goods
;
// 商品金额 单位
this
.
goodsOrderDetail
.
goods_price
=
res
.
data
.
order_goods
.
goods_price
/
100
}
// 售后历史
if
(
res
.
data
.
order_refund_history
)
{
this
.
asApplyList
=
res
.
data
.
order_refund_history
}
else
{
this
.
asApplyList
=
[];
}
}
});
...
...
@@ -418,7 +467,7 @@
/** 仅退款
* 操作按钮 类型
* onlyOrRefundBtnType:// 1-显示 仅退款 按钮; 2-显示 退货退款中(同意/拒绝 退货退款)按钮; 3-显示 退货退款中 (拒收包裹 / 确定退款) 按钮
*
disabledOnlyBtn
: true-售后结束-不能点击;false-可以点击
*
isFinishedButtonDisabled
: true-售后结束-不能点击;false-可以点击
* 每次 订单详情更新,被调用
* */
asHandleBtnType
(
row
)
{
...
...
@@ -433,6 +482,12 @@
}
else
{
this
.
onlyOrRefundBtnType
=
0
;
}
//
if
(
row
.
status
==
5
||
row
.
status
==
-
1
)
{
this
.
isFinishedButtonDisabled
=
true
}
else
{
this
.
isFinishedButtonDisabled
=
false
}
}
},
/** 同意 */
...
...
@@ -468,15 +523,13 @@
*
* */
submitAfterSale
(
type
)
{
console
.
log
(
"确定的类型"
,
type
);
let
params
=
{
order_refund_sn
:
0
order_refund_sn
:
this
.
asGoodId
};
// type为1,则为,仅退款的 同意退款 操作
if
(
this
.
onlyIsAgree
==
1
)
{
params
.
order_refund_sn
=
this
.
asGoodId
// 1、为了更好提示,2、预防后期接口解耦
agreeRefundData
(
params
).
then
(
res
=>
{
let
msg
=
''
...
...
@@ -516,7 +569,6 @@
// type 为3,则为,退货退款的 同意退货退款,发送地址
if
(
this
.
onlyIsAgree
==
3
)
{
// console.log('地址信息:',this.order_refund_address);
if
(
this
.
order_refund_address
==
''
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'请选择地址信息'
});
return
...
...
@@ -606,15 +658,15 @@
ASResult
(
row
)
{
let
result
=
''
if
(
row
.
status
==
5
)
{
if
(
row
.
status
==
5
)
{
result
=
'退款完成,售后完成'
}
else
if
(
row
.
status
==
-
1
)
{
if
(
row
.
close_reason
==
1
||
row
.
close_reason
==
2
)
{
}
else
if
(
row
.
status
==
-
1
)
{
if
(
row
.
close_reason
==
1
||
row
.
close_reason
==
2
)
{
result
=
'卖家拒绝,售后关闭'
}
else
if
(
row
.
close_reason
==
3
)
{
result
=
'买家未退货,售后关闭'
}
else
if
(
row
.
close_reason
==
4
)
{
}
else
if
(
row
.
close_reason
==
6
)
{
result
=
'买家取消,售后关闭'
}
}
...
...
@@ -648,6 +700,9 @@
formatter
(
time
)
{
return
dateFormat
(
time
*
1000
,
'Y-m-d H:i:s'
)
},
},
destroyed
()
{
// clearInterval(this.timer)
}
}
</
script
>
...
...
@@ -668,6 +723,24 @@
margin-top
:
20px
;
}
.card-header-title
{
line-height
:
24px
;
font-size
:
18px
;
color
:
#000
;
font-weight
:
bold
;
margin
:
20px
0
;
}
.blue-block
{
display
:
inline-block
;
width
:
5px
;
height
:
24px
;
background
:
#3A84FF
;
margin
:
0
9px
0
0
;
border-radius
:
2px
;
vertical-align
:
bottom
;
}
/* 售后信息 表格 样式 */
/
deep
/
.el-col
{
/*border: 1px solid #eee;*/
...
...
@@ -707,6 +780,25 @@
text-align
:
left
;
}
.count-down-con
{
padding
:
10px
20px
;
margin
:
0
;
color
:
#333
;
font-size
:
14px
;
font-weight
:
400
;
background
:
#FFF5ED
;
border
:
1px
solid
#F1914E
;
}
.spec-icon-w
{
color
:
#E6A23C
;
padding
:
0
5px
;
}
.cd-time-span
{
margin
:
0
10px
;
}
.as-handle-btn
{
display
:
flex
;
align-items
:
center
;
...
...
src/views/system/retreat/retreat/index.vue
浏览文件 @
2261701c
...
...
@@ -18,18 +18,17 @@
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
@
change=
"applyTimeChange"
:picker-options=
"pickerOptions"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"商品ID"
prop=
"goods_id"
>
<el-input
v-model=
"queryParams.goods_id"
placeholder=
"请输入商品id"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/></el-form-item
>
<!--
<el-form-item
label=
"商品ID"
prop=
"goods_id"
>
--
>
<!--
<el-input-->
<!-- v-model="queryParams.goods_id"-->
<!-- placeholder="请输入商品id"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />
</el-form-item>
--
>
<el-form-item
label=
"商品名称"
prop=
"goods_title"
>
<el-input
...
...
@@ -40,7 +39,7 @@
/></el-form-item>
<el-form-item
label=
"退换货类型"
prop=
"refund_type"
>
<el-select
v-model=
"queryParams.refund_type"
placeholder=
"全部类型"
clearable
>
<el-select
v-model=
"queryParams.refund_type"
placeholder=
"全部类型"
clearable
width=
"120px"
>
<el-option
v-for=
"item in userNeedOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
...
...
@@ -48,6 +47,7 @@
<el-form-item
label=
"订单号"
prop=
"goods_order_sn"
>
<el-input
style=
"width:250px;"
v-model=
"queryParams.goods_order_sn"
placeholder=
"请输入订单号"
clearable
...
...
@@ -62,14 +62,14 @@
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"
get
List"
>
搜索
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"
search
List"
>
搜索
</el-button>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<!-- 列表 -->
<el-table
class=
"after-sale-table"
:data=
"afterSaleList"
:height=
"afterSaleHeight"
>
<el-table-column
label=
"商品ID"
align=
"center"
width=
"150"
prop=
"goodsId"
></el-table-column
>
<el-table-column
label=
"商品名称"
align=
"center"
width=
"
1
80"
prop=
"title"
></el-table-column>
<!--
<el-table-column
label=
"商品ID"
align=
"center"
width=
"150"
prop=
"goodsId"
></el-table-column>
--
>
<el-table-column
label=
"商品名称"
align=
"center"
width=
"
2
80"
prop=
"title"
></el-table-column>
<el-table-column
label=
"订单号"
align=
"center"
width=
"240"
prop=
"goods_order_sn"
></el-table-column>
<el-table-column
label=
"退换货类型"
align=
"center"
width=
"180"
>
<template
slot-scope=
"scope"
>
...
...
@@ -104,13 +104,14 @@
<!-- 分页 -->
<div
class=
"pagination-con"
>
<el-pagination
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:page-size=
"pageSize"
:current-page=
"currentPage"
:page-sizes=
"[20, 40, 60, 80, 100]"
:page-size=
"pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
>
:total=
"total"
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
>
</el-pagination>
</div>
</el-card>
...
...
@@ -127,8 +128,9 @@
goodsStatus
:
1
,
activeName
:
'first'
,
queryParams
:
{
status
:
0
,
applyTime
:
[],
goods_id
:
''
,
//
goods_id: '',
goods_title
:
''
,
refund_type
:
''
,
goods_order_sn
:
''
,
...
...
@@ -163,9 +165,9 @@
},
// 退换货类型
userNeedOptions
:
[
{
value
:
-
1
,
label
:
'全部类型'
},
{
value
:
1
,
label
:
'仅退款'
},
{
value
:
2
,
label
:
'退货退款'
},
{
value
:
-
1
,
label
:
'全部类型'
},
{
value
:
1
,
label
:
'仅退款'
},
{
value
:
2
,
label
:
'退货退款'
},
],
// 退换货原因
needMsgOptions
:
[
...
...
@@ -178,7 +180,7 @@
fullHeight
:
0
,
afterSaleHeight
:
200
,
currentPage
:
1
,
pageSize
:
1
0
,
pageSize
:
2
0
,
total
:
0
,
// 售后列表
afterSaleList
:
[],
...
...
@@ -193,19 +195,20 @@
}
},
created
()
{
this
.
get
List
();
this
.
search
List
();
this
.
$nextTick
(()
=>
{
this
.
fullHeight
=
document
.
getElementsByClassName
(
'box-card'
)[
0
].
clientHeight
})
},
mounted
()
{
},
mounted
()
{},
methods
:
{
/** 顶部 状态页签切换
* 1-未处理;2-处理中;3-已完成
* */
handleClick
()
{
// 搜索条件初始化
this
.
resetSearchParams
();
switch
(
this
.
activeName
)
{
case
'first'
:
this
.
goodsStatus
=
1
...
...
@@ -219,16 +222,18 @@
default
:
break
}
// 搜索条件初始化
this
.
resetSearchParams
();
// 列表 查询
this
.
getList
();
},
/** 时间格式处理 */
applyTimeChange
()
{
if
(
!
Array
.
isArray
(
this
.
queryParams
.
applyTime
)
)
{
this
.
queryParams
.
applyTime
=
[];
}
// applyTimeChange() {
// if( !Array.isArray(this.queryParams.applyTime) ) {
// this.queryParams.applyTime = [];
// }
// },
searchList
()
{
this
.
currentPage
=
1
;
this
.
getList
();
},
/** 列表查询 */
getList
()
{
...
...
@@ -236,35 +241,27 @@
page
:
this
.
currentPage
,
limit
:
this
.
pageSize
,
status
:
this
.
goodsStatus
,
apply_start_time
:
''
,
apply_end_time
:
''
,
goods_id
:
this
.
queryParams
.
goods_id
,
goods_title
:
this
.
queryParams
.
goods_title
,
refund_type
:
''
,
goods_order_sn
:
''
,
reason
:
''
}
// console.log('queryParams:',this.queryParams);
//console.log('传向后台的参数:',params);
if
(
this
.
queryParams
.
applyTime
.
length
===
2
)
{
params
.
apply_start_time
=
new
Date
(
this
.
queryParams
.
applyTime
[
0
]).
getTime
()
/
1000
params
.
apply_end_time
=
new
Date
(
this
.
queryParams
.
applyTime
[
1
]).
getTime
()
/
1000
}
else
{
params
.
apply_start_time
=
''
params
.
apply_end_time
=
''
if
(
this
.
queryParams
.
applyTime
&&
this
.
queryParams
.
applyTime
.
length
===
2
)
{
params
[
'apply_start_time'
]
=
new
Date
(
this
.
queryParams
.
applyTime
[
0
]).
getTime
()
/
1000
params
[
'apply_end_time'
]
=
new
Date
(
this
.
queryParams
.
applyTime
[
1
]).
getTime
()
/
1000
}
if
(
this
.
queryParams
.
goods_title
!=
''
)
{
params
[
'goods_title'
]
=
this
.
queryParams
.
goods_title
;
}
if
(
this
.
queryParams
.
refund_type
===
-
1
)
{
params
.
refund_type
=
''
}
else
{
params
.
refund_type
=
this
.
queryParams
.
refund_type
;
if
(
this
.
queryParams
.
refund_type
!=
-
1
&&
this
.
queryParams
.
refund_type
!=
''
)
{
params
[
'refund_type'
]
=
this
.
queryParams
.
refund_type
;
}
if
(
this
.
queryParams
.
reason
===
-
1
)
{
params
.
reason
=
''
}
else
{
params
.
reason
=
this
.
queryParams
.
reason
;
if
(
this
.
queryParams
.
goods_order_sn
!=
''
)
{
params
[
'goods_order_sn'
]
=
this
.
queryParams
.
goods_order_sn
;
}
if
(
this
.
queryParams
.
reason
!=
-
1
&&
this
.
queryParams
.
reason
!=
''
)
{
params
[
'reason'
]
=
this
.
queryParams
.
reason
;
}
getRetreatList
(
params
).
then
(
res
=>
{
...
...
@@ -291,21 +288,21 @@
/** 调整 列表当前页面 最大展示条数 */
handleSizeChange
(
val
)
{
this
.
pageSize
=
val
;
//
this.getList();
this
.
getList
();
},
/** 列表 跳转到 第 几 页 */
handleCurrentChange
(
val
)
{
this
.
currentPage
=
val
//
this.getList();
this
.
getList
();
},
/** 搜索条件初始化 */
resetSearchParams
()
{
this
.
pageSize
=
1
0
;
this
.
pageSize
=
2
0
;
this
.
currentPage
=
1
;
// this.goodsStatus = 1;
this
.
queryParams
=
{
status
:
0
,
applyTime
:
[],
goods_id
:
''
,
//
goods_id: '',
goods_title
:
''
,
refund_type
:
''
,
goods_order_sn
:
''
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论