订单相关
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="到期时间:">
|
||||
<el-date-picker v-model="page.params.endTime" type="date" placeholder="选择日期"> </el-date-picker>
|
||||
<el-date-picker v-model="page.params.endTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期"> </el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="userSearchs">查询</el-button>
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<template>
|
||||
<div class="article-manager">
|
||||
<el-card :bordered="false" shadow="never" class="ivu-mt mt16" :body-style="{ padding: '0 20px 20px' }">
|
||||
<el-tabs v-model="page.params.orderStatus" @tab-click="onClickTab">
|
||||
<el-tab-pane :label="item.name + '(' + item.count + ')'" :name="item.type" v-for="(item, index) in headeNum" :key="index" />
|
||||
<el-card :bordered="false" shadow="never" class="ivu-mt mt16 " style="padding:20px !important" :body-style="{ padding: '0 20px 20px' }">
|
||||
<el-tabs v-model="type" @tab-click="onClickTab" type="card">
|
||||
<!-- <el-tab-pane :label="item.name + '(' + item.count + ')'" :name="item.type" v-for="(item, index) in headeNum" :key="index" /> -->
|
||||
<el-tab-pane :label="item.name" :name="item.type" v-for="(item, index) in headeNum" :key="index" />
|
||||
</el-tabs>
|
||||
<div>
|
||||
<el-form :model="page" label-width="80px" label-position="right" inline @submit.native.prevent>
|
||||
@@ -13,9 +14,22 @@
|
||||
<el-input clearable placeholder="手机号码" v-model="page.params.customerPhone" type="phone" />
|
||||
</el-form-item>
|
||||
<el-form-item label="下单时间:">
|
||||
<el-date-picker v-model="page.params.createTime" type="date" placeholder="选择日期"> </el-date-picker>
|
||||
<el-date-picker v-model="page.params.createTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期"> </el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="选择油站:">
|
||||
<el-select
|
||||
v-model="page.params.takeSiteId"
|
||||
clearable
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="油站名称"
|
||||
:remote-method="siteRemoteMethod"
|
||||
@keyup.enter.native="getByPage"
|
||||
>
|
||||
<el-option v-for="item in siteList" :key="item.siteId" :label="item.siteName" :value="item.siteId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="userSearchs">查询</el-button>
|
||||
</el-form-item>
|
||||
@@ -25,7 +39,6 @@
|
||||
<el-button class="export" @click="exports">导出</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:key="id"
|
||||
:data="tableList"
|
||||
class="ivu-mt mt14"
|
||||
v-loading="loading"
|
||||
@@ -47,7 +60,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="用户账号" min-width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.customerPhone }}</span>
|
||||
<span>{{ scope.row.acctId }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="订单金额" min-width="60" align="center">
|
||||
@@ -89,15 +102,24 @@
|
||||
:total="page.totalCount"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<el-drawer title="详情" class="table-detail-drawer" :visible.sync="detailDialog" direction="ltr" size="70%">
|
||||
<orderListDetail :detailData="detailData" @closeDialog="closeDialog" v-if="detailDialog" />
|
||||
</el-drawer>
|
||||
<el-dialog title="取消订单" :visible.sync="cancleDialog" v-el-drag-dialog width="45%">
|
||||
<orderListCancle @getList="getList" @closeDialog="closeDialog" v-if="cancleDialog" :detailData="detailData" />
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import orderInfoApi from '@/api/order/orderInfo.js'
|
||||
import orderListDetail from './orderListDetail'
|
||||
import orderListCancle from './orderListCancle'
|
||||
export default {
|
||||
name: 'product_productList',
|
||||
// components: { expandRow, attribute, taoBao, goodsDetail, userLabel, couponList },
|
||||
components: { orderListDetail, orderListCancle },
|
||||
|
||||
filters: {
|
||||
orderStatus(e) {
|
||||
@@ -118,7 +140,8 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
template: false,
|
||||
modals: false,
|
||||
detailDialog: false,
|
||||
cancleDialog: false,
|
||||
batchModal: false,
|
||||
grid: {
|
||||
xl: 6,
|
||||
@@ -133,6 +156,7 @@ export default {
|
||||
params: {},
|
||||
totalCount: 0
|
||||
},
|
||||
type: '',
|
||||
tableList: [],
|
||||
headeNum: [
|
||||
{
|
||||
@@ -164,12 +188,16 @@ export default {
|
||||
goodsId: '',
|
||||
isProductBox: false,
|
||||
multipleSelection: [],
|
||||
detail: {} //详情对象
|
||||
detailData: {}, //详情对象
|
||||
siteList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// delete this.page.params.orderStatus
|
||||
|
||||
this.getList()
|
||||
},
|
||||
|
||||
activated() {},
|
||||
methods: {
|
||||
closeLabel(label) {
|
||||
@@ -224,6 +252,7 @@ export default {
|
||||
// tab选择
|
||||
onClickTab(e) {
|
||||
console.log(e)
|
||||
this.page.params.orderStatus = e.name
|
||||
this.page.currentPag = 1
|
||||
this.multipleSelection = []
|
||||
// this.$refs.table.clearSelection()
|
||||
@@ -238,7 +267,14 @@ export default {
|
||||
this.page.currentPage = val
|
||||
this.getList()
|
||||
},
|
||||
|
||||
siteRemoteMethod(value) {
|
||||
// 远程搜索油站
|
||||
if (value) {
|
||||
orderInfoApi.getIntegralSite(value).then(res => {
|
||||
this.siteList = res.data
|
||||
})
|
||||
}
|
||||
},
|
||||
// 订单列表;
|
||||
getList() {
|
||||
orderInfoApi.getByPage(this.page).then(res => {
|
||||
@@ -250,16 +286,32 @@ export default {
|
||||
this.page.currentPage = 1
|
||||
this.getList()
|
||||
},
|
||||
|
||||
closeDialog() {
|
||||
this.cancleDialog = false
|
||||
this.detailDialog = false
|
||||
},
|
||||
// 数据导出;
|
||||
exportData: function() {},
|
||||
|
||||
// 编辑
|
||||
// 详情
|
||||
detail(row) {
|
||||
// this.$router.push({ path: this.$routeProStr + '/product/add_product/' + row.id });
|
||||
orderInfoApi.get(row.id).then(res => {
|
||||
if ((res.code = 20000)) {
|
||||
this.detailData = res.data
|
||||
this.detailDialog = true
|
||||
}
|
||||
})
|
||||
},
|
||||
// 取消
|
||||
cancle(row, tit, num) {}
|
||||
cancle(row, tit, num) {
|
||||
// orderInfoApi.get(row.id).then(res => {
|
||||
// if ((res.code = 20000)) {
|
||||
this.detailData = row
|
||||
this.cancleDialog = true
|
||||
console.log(row)
|
||||
// }
|
||||
// })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
93
src/views/order/orderListCancle.vue
Normal file
93
src/views/order/orderListCancle.vue
Normal file
@@ -0,0 +1,93 @@
|
||||
<template>
|
||||
<div class="divBox ">
|
||||
<!-- <el-card class="box-card"> -->
|
||||
<!-- <div style="width :100%;height:45px;line-height: 45px;background: #f3f3f3; padding-left:20px">
|
||||
添加广告
|
||||
</div> -->
|
||||
<el-form :rules="rules" ref="form" :model="detailData" class="formValidate " label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="15">
|
||||
<el-form-item label="订单编号:">
|
||||
<span>{{ detailData.orderCode }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="15">
|
||||
<el-form-item label="取消说明" prop="cancelMark">
|
||||
<el-input v-model="detailData.cancelMark" placeholder="请输入取消说明" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="15">
|
||||
<el-form-item label="订单金额:">
|
||||
<span>¥{{ detailData.marketPrice }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="15">
|
||||
<el-form-item label="可退积分">
|
||||
<el-input v-model="detailData.integral" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="submission" @click="handleSubmit">提交</el-button>
|
||||
<el-button :size="$store.getters.size" @click="close">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!-- </el-card> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import orderInfoApi from '@/api/order/orderInfo.js'
|
||||
import { loadingFn } from '@/utils/validate'
|
||||
export default {
|
||||
props: {
|
||||
detailData: {
|
||||
type: Object,
|
||||
default() {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
detailData: {},
|
||||
|
||||
rules: {
|
||||
cancelMark: [{ required: true, message: '请输入取消说明', trigger: 'blur' }]
|
||||
// integral: [{ required: true, message: '请输入积分', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSubmit() {
|
||||
this.$refs['form'].validate(valid => {
|
||||
if (valid) {
|
||||
this.save()
|
||||
}
|
||||
})
|
||||
},
|
||||
save() {
|
||||
this.detailData.createSource = 'MALL_COMS_WEB'
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
|
||||
orderInfoApi.cancelOrder(this.detailData).then(res => {
|
||||
if ((res.code = 20000)) this.$message.success(res.msg)
|
||||
this.$emit('closeDialog')
|
||||
this.$emit('getList')
|
||||
})
|
||||
)
|
||||
},
|
||||
uploadSuccess(e, res) {
|
||||
console.log(res)
|
||||
if (res.code == 20000) {
|
||||
this.advertisement.positionImage = res.data.publicUrl
|
||||
}
|
||||
},
|
||||
|
||||
close() {
|
||||
this.$emit('closeDialog')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="stylus"></style>
|
||||
296
src/views/order/orderListDetail.vue
Normal file
296
src/views/order/orderListDetail.vue
Normal file
@@ -0,0 +1,296 @@
|
||||
<template>
|
||||
<div class="article-manager">
|
||||
<el-card :bordered="false" shadow="never" class="ivu-mt mt16" :body-style="{ padding: '0 20px 20px' }">
|
||||
<el-descriptions title="基本信息" class="text" direction="vertical" :column="6" border>
|
||||
<el-descriptions-item label="订单编号">{{ detailData.orderCode }}</el-descriptions-item>
|
||||
<el-descriptions-item label="用户账号">{{ detailData.acctId }}</el-descriptions-item>
|
||||
<el-descriptions-item label="支付积分">{{ detailData.integral }}</el-descriptions-item>
|
||||
<el-descriptions-item label="下单时间">{{ detailData.createTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="自提油站">{{ detailData.takeSiteName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="提货码">{{ detailData.takeCode }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<el-descriptions title="收货人信息" class="text" direction="vertical" :column="3" border>
|
||||
<el-descriptions-item label="收货人">{{ detailData.customerName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="手机号码">{{ detailData.customerPhone }}</el-descriptions-item>
|
||||
<el-descriptions-item label="订单备注">{{ detailData.remark || '暂无' }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<div class="text">商品信息</div>
|
||||
<el-table
|
||||
:data="detailData.mallOrderInfoDetails"
|
||||
class="ivu-mt mt14"
|
||||
v-loading="loading"
|
||||
highlight-current-row
|
||||
empty-text="暂无数据"
|
||||
show-summary
|
||||
:summary-method="getSummaries"
|
||||
>
|
||||
<el-table-column label="商品图片" min-width="80" align="center" prop="oderDetailImg">
|
||||
<template slot-scope="scope">
|
||||
<el-image style="width: 60px; height: 50px" :src="scope.row.oderDetailImg"> </el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品名称" min-width="120" align="center" prop="productName">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.productName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="价格/货号" min-width="120" prop="marketPrice">
|
||||
<template slot-scope="scope">
|
||||
<span>价格:¥{{ scope.row.marketPrice }}</span>
|
||||
<br />
|
||||
<span>货号:{{ scope.row.productNum }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="属性" min-width="60" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.attributeJson }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数量" min-width="80" align="center" prop="orderNum"> </el-table-column>
|
||||
|
||||
<el-table-column label="小计" min-width="120" align="center" prop="allMarketPrice"> </el-table-column>
|
||||
</el-table>
|
||||
<div class="text">操作信息</div>
|
||||
<el-table :data="detailData.mallOrderInfoRecords" class="ivu-mt mt14" v-loading="loading" border highlight-current-row empty-text="暂无数据">
|
||||
<el-table-column label="操作者" min-width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.customerName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作时间" min-width="60" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.createTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="订单状态" min-width="100" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.orderStatus | orderStatus }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="支付状态" min-width="100" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.payStatus | payStatus }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="备注" min-width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.remark }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
filters: {
|
||||
orderStatus(e) {
|
||||
switch (e) {
|
||||
case '0':
|
||||
return '已下单'
|
||||
case '1':
|
||||
return '待核销'
|
||||
case '2':
|
||||
return '已核销'
|
||||
case '-1':
|
||||
return '已取消'
|
||||
default:
|
||||
return '暂无'
|
||||
}
|
||||
},
|
||||
payStatus(e) {
|
||||
switch (e) {
|
||||
case '0':
|
||||
return '待支付'
|
||||
case '1':
|
||||
return '已经发'
|
||||
case '2':
|
||||
return '退款申请'
|
||||
case '3':
|
||||
return '全部退款'
|
||||
case '4':
|
||||
return '部分退款'
|
||||
default:
|
||||
return '暂无'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
props: {
|
||||
detailData: {
|
||||
type: Object,
|
||||
default() {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
template: false,
|
||||
modals: false,
|
||||
batchModal: false,
|
||||
grid: {
|
||||
xl: 6,
|
||||
lg: 8,
|
||||
md: 12,
|
||||
sm: 24,
|
||||
xs: 24
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
activated() {},
|
||||
methods: {
|
||||
getSummaries(param) {
|
||||
// 合计
|
||||
const { columns, data } = param
|
||||
const sums = []
|
||||
|
||||
if (columns && data) {
|
||||
let allMarketPrice = 0 // 交易金额
|
||||
|
||||
data.forEach(item => {
|
||||
allMarketPrice += item.allMarketPrice ? item.allMarketPrice : 0
|
||||
})
|
||||
allMarketPrice = allMarketPrice.toFixed(2)
|
||||
|
||||
columns.forEach((column, index) => {
|
||||
switch (
|
||||
column.property // column.property可以匹配它的每一列的命名, 然后赋值
|
||||
) {
|
||||
case 'allMarketPrice':
|
||||
sums[index] = '合计' + allMarketPrice + '元' // 值取自后台
|
||||
break
|
||||
|
||||
default:
|
||||
break
|
||||
}
|
||||
})
|
||||
return sums
|
||||
} else {
|
||||
return sums
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
::v-deep .el-tabs__item {
|
||||
height: 54px !important;
|
||||
line-height: 54px !important;
|
||||
}
|
||||
::v-deep .ivu-modal-mask {
|
||||
z-index: 999 !important;
|
||||
}
|
||||
|
||||
::v-deep .ivu-modal-wrap {
|
||||
z-index: 999 !important;
|
||||
}
|
||||
|
||||
.Box {
|
||||
::v-deep .ivu-modal-body {
|
||||
height: 700px;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.batch-box {
|
||||
::v-deep .ivu-modal-body {
|
||||
overflow: auto;
|
||||
min-height: 350px;
|
||||
}
|
||||
}
|
||||
|
||||
.tabBox_img {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.bg {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
::v-deep .happy-scroll-content {
|
||||
width: 100%;
|
||||
|
||||
.demo-spin-icon-load {
|
||||
animation: ani-demo-spin 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes ani-demo-spin {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.demo-spin-col {
|
||||
height: 100px;
|
||||
position: relative;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
}
|
||||
|
||||
.labelInput {
|
||||
border: 1px solid #dcdee2;
|
||||
width: 100%;
|
||||
padding: 0 15px;
|
||||
border-radius: 5px;
|
||||
min-height: 30px;
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
|
||||
.span {
|
||||
color: #c5c8ce;
|
||||
}
|
||||
|
||||
.iconxiayi {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
.el-dropdown-link {
|
||||
cursor: pointer;
|
||||
color: var(--prev-color-primary);
|
||||
font-size: 12px;
|
||||
}
|
||||
.el-icon-arrow-down {
|
||||
font-size: 12px;
|
||||
}
|
||||
.el-dropdown-menu__item {
|
||||
a {
|
||||
color: #606266;
|
||||
}
|
||||
}
|
||||
.label_width {
|
||||
width: 400px;
|
||||
}
|
||||
.text {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
374
src/views/order/orderRefundList.vue
Normal file
374
src/views/order/orderRefundList.vue
Normal file
@@ -0,0 +1,374 @@
|
||||
<template>
|
||||
<div class="article-manager">
|
||||
<el-card :bordered="false" shadow="never" class="ivu-mt mt16" :body-style="{ padding: '0 20px 20px' }">
|
||||
<div>
|
||||
<el-form :model="page" label-width="80px" label-position="right" inline @submit.native.prevent class="mt16">
|
||||
<el-form-item label="订单编号:">
|
||||
<el-input clearable placeholder="订单编号/商品货号" v-model="page.params.orderCode" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="申请时间:">
|
||||
<el-date-picker v-model="page.params.refundTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期"> </el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="处理状态:">
|
||||
<el-select v-model="page.params.refundstatus" placeholder="状态" clearable @keyup.enter.native="getList">
|
||||
<el-option label="待处理" value="0" />
|
||||
<el-option label="已处理" value="1" />
|
||||
<el-option label="已拒绝" value="-1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="userSearchs">查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="Button">
|
||||
<el-button class="export" @click="exports">导出</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="tableList"
|
||||
class="ivu-mt mt14"
|
||||
v-loading="loading"
|
||||
highlight-current-row
|
||||
:row-key="getRowKey"
|
||||
@selection-change="handleSelectRow"
|
||||
empty-text="暂无数据"
|
||||
>
|
||||
<el-table-column type="selection" width="60" :reserve-selection="true"> </el-table-column>
|
||||
<el-table-column label="订单编号" width="180" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.orderCode }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="油站" min-width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.takeSiteName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="申请时间" min-width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.createTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户账号" min-width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.acctId }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="退款积分" min-width="60" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.refundIntegral }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="申请状态" min-width="100" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.refundStatus | refundStatus }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="处理时间" min-width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.refundOptTime || '暂无' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" minWidth="100" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="detail(scope.row)">查看订单</el-button>
|
||||
<el-button @click="auth(scope.row, scope)" type="text" v-if="scope.row.refundStatus == '0'">审核</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="acea-row row-right page">
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="page.currentPage"
|
||||
:page-sizes="[10, 15, 20, 30]"
|
||||
:page-size="page.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="page.totalCount"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<el-drawer title="详情" class="table-detail-drawer" :visible.sync="refundDetailDialog" direction="ltr" size="70%">
|
||||
<orderRefundListDetail :detailData="detailData" @closeDialog="closeDialog" v-if="refundDetailDialog" />
|
||||
</el-drawer>
|
||||
|
||||
<el-dialog title="审核" :visible.sync="verifyDialog" v-el-drag-dialog width="45%">
|
||||
<orderRefundListVerify @getList="getList" @closeDialog="closeDialog" v-if="verifyDialog" :detailData="detailData" />
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import orderInfoApi from '@/api/order/orderInfo.js'
|
||||
import orderRefundListDetail from './orderRefundListDetail'
|
||||
import orderRefundListVerify from './orderRefundListVerify'
|
||||
export default {
|
||||
name: 'product_productList',
|
||||
components: { orderRefundListDetail, orderRefundListVerify },
|
||||
|
||||
filters: {
|
||||
refundStatus(e) {
|
||||
switch (e) {
|
||||
// 0待审核 1 审核通过-1 审核不通过
|
||||
case '0':
|
||||
return '待审核'
|
||||
case '1':
|
||||
return '审核通过'
|
||||
case '-1':
|
||||
return '审核不通过'
|
||||
default:
|
||||
return '暂无'
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
template: false,
|
||||
refundDetailDialog: false,
|
||||
verifyDialog: false,
|
||||
batchModal: false,
|
||||
grid: {
|
||||
xl: 6,
|
||||
lg: 8,
|
||||
md: 12,
|
||||
sm: 24,
|
||||
xs: 24
|
||||
},
|
||||
page: {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
params: {},
|
||||
totalCount: 0
|
||||
},
|
||||
type: '',
|
||||
tableList: [],
|
||||
loading: false,
|
||||
data: [],
|
||||
total: 0,
|
||||
ids: [],
|
||||
goodsId: '',
|
||||
isProductBox: false,
|
||||
multipleSelection: [],
|
||||
detailData: {} //详情对象
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// delete this.page.params.orderStatus
|
||||
|
||||
this.getList()
|
||||
},
|
||||
|
||||
activated() {},
|
||||
methods: {
|
||||
closeLabel(label) {
|
||||
let index = this.dataLabel.indexOf(this.dataLabel.filter(d => d.id == label.id)[0])
|
||||
this.dataLabel.splice(index, 1)
|
||||
},
|
||||
|
||||
getPath() {},
|
||||
// 导出
|
||||
async exports() {
|
||||
let [th, filekey, data, fileName] = [[], [], [], '']
|
||||
let excelData = JSON.parse(JSON.stringify(this.artFrom))
|
||||
excelData.page = 1
|
||||
excelData.limit = 50
|
||||
excelData.ids = this.ids
|
||||
for (let i = 0; i < excelData.page + 1; i++) {
|
||||
let lebData = await this.getExcelData(excelData)
|
||||
if (!fileName) fileName = lebData.filename
|
||||
if (!filekey.length) {
|
||||
filekey = lebData.fileKey
|
||||
}
|
||||
if (!th.length) th = lebData.header
|
||||
if (lebData.export.length) {
|
||||
data = data.concat(lebData.export)
|
||||
excelData.page++
|
||||
} else {
|
||||
this.$exportExcel(th, filekey, fileName, data)
|
||||
return
|
||||
}
|
||||
}
|
||||
},
|
||||
getExcelData(excelData) {},
|
||||
|
||||
getRowKey(row) {
|
||||
return row.id
|
||||
},
|
||||
// 选中某一行
|
||||
handleSelectRow(selection) {
|
||||
const uniqueArr = []
|
||||
const ids = []
|
||||
for (let i = 0; i < selection.length; i++) {
|
||||
const item = selection[i]
|
||||
if (!ids.includes(item.id)) {
|
||||
uniqueArr.push(item)
|
||||
ids.push(item.id)
|
||||
}
|
||||
}
|
||||
this.ids = ids
|
||||
this.multipleSelection = uniqueArr
|
||||
},
|
||||
|
||||
handleSizeChange(val) {
|
||||
this.page.pageSize = val
|
||||
this.getList()
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.page.currentPage = val
|
||||
this.getList()
|
||||
},
|
||||
|
||||
// 订单列表;
|
||||
getList() {
|
||||
orderInfoApi.getRefundOrder(this.page).then(res => {
|
||||
if ((res.code = 20000)) ({ list: this.tableList = [], totalCount: this.page.totalCount = 0 } = res.data)
|
||||
})
|
||||
},
|
||||
// 表格搜索
|
||||
userSearchs() {
|
||||
this.page.currentPage = 1
|
||||
this.getList()
|
||||
},
|
||||
closeDialog() {
|
||||
this.verifyDialog = false
|
||||
this.refundDetailDialog = false
|
||||
},
|
||||
// 数据导出;
|
||||
exportData: function() {},
|
||||
|
||||
// 详情
|
||||
detail(row) {
|
||||
orderInfoApi.getRefund(row.id).then(res => {
|
||||
if ((res.code = 20000)) {
|
||||
this.detailData = res.data
|
||||
this.refundDetailDialog = true
|
||||
}
|
||||
})
|
||||
},
|
||||
// 取消
|
||||
auth(row, tit, num) {
|
||||
// orderInfoApi.get(row.id).then(res => {
|
||||
// if ((res.code = 20000)) {
|
||||
this.detailData = row
|
||||
this.verifyDialog = true
|
||||
console.log(row)
|
||||
// }
|
||||
// })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
::v-deep .el-tabs__item {
|
||||
height: 54px !important;
|
||||
line-height: 54px !important;
|
||||
}
|
||||
::v-deep .ivu-modal-mask {
|
||||
z-index: 999 !important;
|
||||
}
|
||||
|
||||
::v-deep .ivu-modal-wrap {
|
||||
z-index: 999 !important;
|
||||
}
|
||||
|
||||
.Box {
|
||||
::v-deep .ivu-modal-body {
|
||||
height: 700px;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.batch-box {
|
||||
::v-deep .ivu-modal-body {
|
||||
overflow: auto;
|
||||
min-height: 350px;
|
||||
}
|
||||
}
|
||||
|
||||
.tabBox_img {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.bg {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
::v-deep .happy-scroll-content {
|
||||
width: 100%;
|
||||
|
||||
.demo-spin-icon-load {
|
||||
animation: ani-demo-spin 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes ani-demo-spin {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.demo-spin-col {
|
||||
height: 100px;
|
||||
position: relative;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
}
|
||||
|
||||
.labelInput {
|
||||
border: 1px solid #dcdee2;
|
||||
width: 100%;
|
||||
padding: 0 15px;
|
||||
border-radius: 5px;
|
||||
min-height: 30px;
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
|
||||
.span {
|
||||
color: #c5c8ce;
|
||||
}
|
||||
|
||||
.iconxiayi {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
.el-dropdown-link {
|
||||
cursor: pointer;
|
||||
color: var(--prev-color-primary);
|
||||
font-size: 12px;
|
||||
}
|
||||
.el-icon-arrow-down {
|
||||
font-size: 12px;
|
||||
}
|
||||
.el-dropdown-menu__item {
|
||||
a {
|
||||
color: #606266;
|
||||
}
|
||||
}
|
||||
.label_width {
|
||||
width: 400px;
|
||||
}
|
||||
</style>
|
||||
265
src/views/order/orderRefundListDetail.vue
Normal file
265
src/views/order/orderRefundListDetail.vue
Normal file
@@ -0,0 +1,265 @@
|
||||
<template>
|
||||
<div class="article-manager">
|
||||
<el-card :bordered="false" shadow="never" class="ivu-mt mt16 mb30" :body-style="{ padding: '0 20px 20px' }">
|
||||
<div class="text">退货商品</div>
|
||||
<el-table
|
||||
:data="detailData.mallOrderInfoDetails"
|
||||
class="ivu-mt mt14"
|
||||
highlight-current-row
|
||||
empty-text="暂无数据"
|
||||
show-summary
|
||||
:summary-method="getSummaries"
|
||||
>
|
||||
<el-table-column label="商品图片" min-width="80" align="center" prop="oderDetailImg">
|
||||
<template slot-scope="scope">
|
||||
<el-image style="width: 60px; height: 50px" :src="scope.row.oderDetailImg"> </el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品名称" min-width="120" align="center" prop="productName">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.productName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="价格/货号" min-width="120" prop="marketPrice">
|
||||
<template slot-scope="scope">
|
||||
<span>价格:¥{{ scope.row.marketPrice }}</span>
|
||||
<br />
|
||||
<span>货号:{{ scope.row.productNum }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="属性" min-width="60" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.attributeJson }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数量" min-width="80" align="center" prop="orderNum"> </el-table-column>
|
||||
|
||||
<el-table-column label="小计" min-width="120" align="center" prop="allMarketPrice"> </el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-descriptions title="基本信息" class="text" :column="1" border>
|
||||
<el-descriptions-item label="订单id">{{ detailData.id }}</el-descriptions-item>
|
||||
<el-descriptions-item label="申请状态">{{ detailData.refundStatus | refundStatus }}</el-descriptions-item>
|
||||
<el-descriptions-item label="订单编号">{{ detailData.orderCode }} </el-descriptions-item>
|
||||
<el-descriptions-item label="申请时间">{{ detailData.createTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="用户账号">{{ detailData.acctId }}</el-descriptions-item>
|
||||
<el-descriptions-item label="订单金额">¥{{ detailData.marketPrice }}</el-descriptions-item>
|
||||
<el-descriptions-item label="退款积分"> {{ detailData.refundIntegral }} </el-descriptions-item>
|
||||
<el-descriptions-item label="退款类型">{{ detailData.refundType | refundType }}</el-descriptions-item>
|
||||
<el-descriptions-item label="退款原因">{{ detailData.refundMark }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<el-descriptions title="" class="text" :column="1" border>
|
||||
<el-descriptions-item label="处理人员">{{ OrderInfoRecord.customerName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="处理时间">{{ OrderInfoRecord.createTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="操作备注">{{ OrderInfoRecord.remark }} </el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
filters: {
|
||||
refundStatus(e) {
|
||||
switch (e) {
|
||||
// 0待审核 1 审核通过-1 审核不通过
|
||||
case '0':
|
||||
return '待审核'
|
||||
case '1':
|
||||
return '审核通过'
|
||||
case '-1':
|
||||
return '审核不通过'
|
||||
default:
|
||||
return '暂无'
|
||||
}
|
||||
},
|
||||
refundType(e) {
|
||||
//0 退货退款 仅退款
|
||||
switch (e) {
|
||||
case '0':
|
||||
return '退货退款'
|
||||
case '1':
|
||||
return '仅退款'
|
||||
default:
|
||||
return '暂无'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
props: {
|
||||
detailData: {
|
||||
type: Object,
|
||||
default() {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
OrderInfoRecord: {},
|
||||
|
||||
grid: {
|
||||
xl: 6,
|
||||
lg: 8,
|
||||
md: 12,
|
||||
sm: 24,
|
||||
xs: 24
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (this.detailData.mallOrderInfoRecords && this.detailData.mallOrderInfoRecords.length > 0) {
|
||||
this.OrderInfoRecord = this.detailData.mallOrderInfoRecords[0]
|
||||
}
|
||||
console.log('----', this.OrderInfoRecord)
|
||||
},
|
||||
activated() {},
|
||||
methods: {
|
||||
getSummaries(param) {
|
||||
// 合计
|
||||
const { columns, data } = param
|
||||
const sums = []
|
||||
|
||||
if (columns && data) {
|
||||
let allMarketPrice = 0 // 交易金额
|
||||
|
||||
data.forEach(item => {
|
||||
allMarketPrice += item.allMarketPrice ? item.allMarketPrice : 0
|
||||
})
|
||||
allMarketPrice = allMarketPrice.toFixed(2)
|
||||
|
||||
columns.forEach((column, index) => {
|
||||
switch (
|
||||
column.property // column.property可以匹配它的每一列的命名, 然后赋值
|
||||
) {
|
||||
case 'allMarketPrice':
|
||||
sums[index] = '合计' + allMarketPrice + '元' // 值取自后台
|
||||
break
|
||||
|
||||
default:
|
||||
break
|
||||
}
|
||||
})
|
||||
return sums
|
||||
} else {
|
||||
return sums
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
::v-deep .el-tabs__item {
|
||||
height: 54px !important;
|
||||
line-height: 54px !important;
|
||||
}
|
||||
::v-deep .ivu-modal-mask {
|
||||
z-index: 999 !important;
|
||||
}
|
||||
|
||||
::v-deep .ivu-modal-wrap {
|
||||
z-index: 999 !important;
|
||||
}
|
||||
|
||||
.Box {
|
||||
::v-deep .ivu-modal-body {
|
||||
height: 700px;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.batch-box {
|
||||
::v-deep .ivu-modal-body {
|
||||
overflow: auto;
|
||||
min-height: 350px;
|
||||
}
|
||||
}
|
||||
|
||||
.tabBox_img {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.bg {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
::v-deep .happy-scroll-content {
|
||||
width: 100%;
|
||||
|
||||
.demo-spin-icon-load {
|
||||
animation: ani-demo-spin 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes ani-demo-spin {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.demo-spin-col {
|
||||
height: 100px;
|
||||
position: relative;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
}
|
||||
|
||||
.labelInput {
|
||||
border: 1px solid #dcdee2;
|
||||
width: 100%;
|
||||
padding: 0 15px;
|
||||
border-radius: 5px;
|
||||
min-height: 30px;
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
|
||||
.span {
|
||||
color: #c5c8ce;
|
||||
}
|
||||
|
||||
.iconxiayi {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
.el-dropdown-link {
|
||||
cursor: pointer;
|
||||
color: var(--prev-color-primary);
|
||||
font-size: 12px;
|
||||
}
|
||||
.el-icon-arrow-down {
|
||||
font-size: 12px;
|
||||
}
|
||||
.el-dropdown-menu__item {
|
||||
a {
|
||||
color: #606266;
|
||||
}
|
||||
}
|
||||
.label_width {
|
||||
width: 400px;
|
||||
}
|
||||
.text {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
93
src/views/order/orderRefundListVerify.vue
Normal file
93
src/views/order/orderRefundListVerify.vue
Normal file
@@ -0,0 +1,93 @@
|
||||
<template>
|
||||
<div class="divBox ">
|
||||
<!-- <el-card class="box-card"> -->
|
||||
<!-- <div style="width :100%;height:45px;line-height: 45px;background: #f3f3f3; padding-left:20px">
|
||||
添加广告
|
||||
</div> -->
|
||||
<el-form :rules="rules" ref="form" :model="detailData" class="formValidate " label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="15">
|
||||
<el-form-item label="订单编号:">
|
||||
<span>{{ detailData.orderCode }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="15">
|
||||
<el-form-item label="可退积分:">
|
||||
<span>{{ detailData.integral }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="15">
|
||||
<el-form-item label="退款积分" prop="refundIntegral">
|
||||
<el-input v-model="detailData.refundIntegral" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="15">
|
||||
<el-form-item label="处理备注" prop="markService">
|
||||
<el-input v-model="detailData.markService" placeholder="请输入处理备注" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="success" class="submission" @click="handleSubmit(1)">确认退款</el-button>
|
||||
<el-button type="danger" :size="$store.getters.size" @click="handleSubmit(-1)">拒绝退款</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!-- </el-card> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import orderInfoApi from '@/api/order/orderInfo.js'
|
||||
import { loadingFn } from '@/utils/validate'
|
||||
export default {
|
||||
props: {
|
||||
detailData: {
|
||||
type: Object,
|
||||
default() {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
detailData: {},
|
||||
Status: null,
|
||||
|
||||
rules: {
|
||||
markService: [{ required: true, message: '请输入处理备注', trigger: 'blur' }],
|
||||
refundIntegral: [{ required: true, message: '请输入退款积分', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSubmit(type) {
|
||||
this.$refs['form'].validate(valid => {
|
||||
if (valid) {
|
||||
this.detailData.refundStatus = type
|
||||
this.detailData.createSource = 'MALL_COMS_WEB'
|
||||
console.log(this.detailData)
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
orderInfoApi.verifyRefundOrder(this.detailData).then(res => {
|
||||
if ((res.code = 20000)) this.$message.success(res.msg)
|
||||
this.$emit('closeDialog')
|
||||
this.$emit('getList')
|
||||
})
|
||||
)
|
||||
}
|
||||
})
|
||||
},
|
||||
uploadSuccess(e, res) {
|
||||
console.log(res)
|
||||
if (res.code == 20000) {
|
||||
this.advertisement.positionImage = res.data.publicUrl
|
||||
}
|
||||
},
|
||||
|
||||
close() {
|
||||
this.$emit('closeDialog')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="stylus"></style>
|
||||
357
src/views/order/refundReasonSetting.vue
Normal file
357
src/views/order/refundReasonSetting.vue
Normal file
@@ -0,0 +1,357 @@
|
||||
<template>
|
||||
<div class="article-manager">
|
||||
<el-card :bordered="false" shadow="never" class="ivu-mt mt16" :body-style="{ padding: '0 20px 20px' }">
|
||||
<div class="Button">
|
||||
<el-button class="export" @click="exports" type="primary">添加</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="tableList"
|
||||
class="ivu-mt mt14"
|
||||
v-loading="loading"
|
||||
highlight-current-row
|
||||
:row-key="getRowKey"
|
||||
@selection-change="handleSelectRow"
|
||||
empty-text="暂无数据"
|
||||
>
|
||||
<el-table-column type="selection" width="60" :reserve-selection="true"> </el-table-column>
|
||||
<el-table-column label="原因类型" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.orderCode }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="排序" width="80" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.takeSiteName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否启用" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
:active-value="1"
|
||||
:inactive-value="0"
|
||||
@change="onchangeIsShow(scope.row)"
|
||||
v-model="scope.row.isDownline"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
>
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="添加时间" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.refundOptTime || '暂无' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" minWidth="100" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="detail(scope.row)">查看订单</el-button>
|
||||
<el-button @click="cancle(scope.row, scope)" type="text" v-if="scope.row.refundStatus == '0'">审核</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="acea-row row-right page">
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="page.currentPage"
|
||||
:page-sizes="[10, 15, 20, 30]"
|
||||
:page-size="page.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="page.totalCount"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<el-drawer title="详情" class="table-detail-drawer" :visible.sync="refundDetailDialog" direction="ltr" size="70%">
|
||||
<orderRefundListDetail :detailData="detailData" @closeDialog="closeDialog" v-if="refundDetailDialog" />
|
||||
</el-drawer>
|
||||
|
||||
<el-dialog title="审核" :visible.sync="verifyDialog" v-el-drag-dialog width="45%">
|
||||
<orderRefundListVerify @getList="getList" @closeDialog="closeDialog" v-if="verifyDialog" :detailData="detailData" />
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import orderInfoApi from '@/api/order/orderInfo.js'
|
||||
import orderRefundListDetail from './orderRefundListDetail'
|
||||
import orderRefundListVerify from './orderRefundListVerify'
|
||||
export default {
|
||||
name: 'product_productList',
|
||||
components: { orderRefundListDetail, orderRefundListVerify },
|
||||
|
||||
filters: {
|
||||
refundStatus(e) {
|
||||
switch (e) {
|
||||
// 0待审核 1 审核通过-1 审核不通过
|
||||
case '0':
|
||||
return '待审核'
|
||||
case '1':
|
||||
return '审核通过'
|
||||
case '-1':
|
||||
return '审核不通过'
|
||||
default:
|
||||
return '暂无'
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
template: false,
|
||||
refundDetailDialog: false,
|
||||
verifyDialog: false,
|
||||
batchModal: false,
|
||||
grid: {
|
||||
xl: 6,
|
||||
lg: 8,
|
||||
md: 12,
|
||||
sm: 24,
|
||||
xs: 24
|
||||
},
|
||||
page: {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
params: {},
|
||||
totalCount: 0
|
||||
},
|
||||
type: '',
|
||||
tableList: [],
|
||||
|
||||
loading: false,
|
||||
data: [],
|
||||
total: 0,
|
||||
ids: [],
|
||||
goodsId: '',
|
||||
isProductBox: false,
|
||||
multipleSelection: [],
|
||||
detailData: {} //详情对象
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// delete this.page.params.orderStatus
|
||||
|
||||
this.getList()
|
||||
},
|
||||
|
||||
activated() {},
|
||||
methods: {
|
||||
closeLabel(label) {
|
||||
let index = this.dataLabel.indexOf(this.dataLabel.filter(d => d.id == label.id)[0])
|
||||
this.dataLabel.splice(index, 1)
|
||||
},
|
||||
|
||||
getPath() {},
|
||||
// 导出
|
||||
async exports() {
|
||||
let [th, filekey, data, fileName] = [[], [], [], '']
|
||||
let excelData = JSON.parse(JSON.stringify(this.artFrom))
|
||||
excelData.page = 1
|
||||
excelData.limit = 50
|
||||
excelData.ids = this.ids
|
||||
for (let i = 0; i < excelData.page + 1; i++) {
|
||||
let lebData = await this.getExcelData(excelData)
|
||||
if (!fileName) fileName = lebData.filename
|
||||
if (!filekey.length) {
|
||||
filekey = lebData.fileKey
|
||||
}
|
||||
if (!th.length) th = lebData.header
|
||||
if (lebData.export.length) {
|
||||
data = data.concat(lebData.export)
|
||||
excelData.page++
|
||||
} else {
|
||||
this.$exportExcel(th, filekey, fileName, data)
|
||||
return
|
||||
}
|
||||
}
|
||||
},
|
||||
getExcelData(excelData) {},
|
||||
|
||||
getRowKey(row) {
|
||||
return row.id
|
||||
},
|
||||
// 选中某一行
|
||||
handleSelectRow(selection) {
|
||||
const uniqueArr = []
|
||||
const ids = []
|
||||
for (let i = 0; i < selection.length; i++) {
|
||||
const item = selection[i]
|
||||
if (!ids.includes(item.id)) {
|
||||
uniqueArr.push(item)
|
||||
ids.push(item.id)
|
||||
}
|
||||
}
|
||||
this.ids = ids
|
||||
this.multipleSelection = uniqueArr
|
||||
},
|
||||
|
||||
// tab选择
|
||||
onClickTab(e) {
|
||||
console.log(e)
|
||||
this.page.params.orderStatus = e.name
|
||||
this.page.currentPag = 1
|
||||
this.multipleSelection = []
|
||||
// this.$refs.table.clearSelection()
|
||||
this.getList()
|
||||
},
|
||||
|
||||
handleSizeChange(val) {
|
||||
this.page.pageSize = val
|
||||
this.getList()
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.page.currentPage = val
|
||||
this.getList()
|
||||
},
|
||||
|
||||
// 订单列表;
|
||||
getList() {
|
||||
orderInfoApi.getRefundOrder(this.page).then(res => {
|
||||
if ((res.code = 20000)) ({ list: this.tableList = [], totalCount: this.page.totalCount = 0 } = res.data)
|
||||
})
|
||||
},
|
||||
// 表格搜索
|
||||
userSearchs() {
|
||||
this.page.currentPage = 1
|
||||
this.getList()
|
||||
},
|
||||
closeDialog() {
|
||||
this.verifyDialog = false
|
||||
this.refundDetailDialog = false
|
||||
},
|
||||
// 数据导出;
|
||||
exportData: function() {},
|
||||
|
||||
// 详情
|
||||
detail(row) {
|
||||
orderInfoApi.get(row.id).then(res => {
|
||||
if ((res.code = 20000)) {
|
||||
this.detailData = res.data
|
||||
this.refundDetailDialog = true
|
||||
}
|
||||
})
|
||||
},
|
||||
// 取消
|
||||
cancle(row, tit, num) {
|
||||
// orderInfoApi.get(row.id).then(res => {
|
||||
// if ((res.code = 20000)) {
|
||||
this.detailData = row
|
||||
this.verifyDialog = true
|
||||
console.log(row)
|
||||
// }
|
||||
// })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
::v-deep .el-tabs__item {
|
||||
height: 54px !important;
|
||||
line-height: 54px !important;
|
||||
}
|
||||
::v-deep .ivu-modal-mask {
|
||||
z-index: 999 !important;
|
||||
}
|
||||
|
||||
::v-deep .ivu-modal-wrap {
|
||||
z-index: 999 !important;
|
||||
}
|
||||
|
||||
.Box {
|
||||
::v-deep .ivu-modal-body {
|
||||
height: 700px;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.batch-box {
|
||||
::v-deep .ivu-modal-body {
|
||||
overflow: auto;
|
||||
min-height: 350px;
|
||||
}
|
||||
}
|
||||
|
||||
.tabBox_img {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.bg {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
::v-deep .happy-scroll-content {
|
||||
width: 100%;
|
||||
|
||||
.demo-spin-icon-load {
|
||||
animation: ani-demo-spin 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes ani-demo-spin {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.demo-spin-col {
|
||||
height: 100px;
|
||||
position: relative;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
}
|
||||
|
||||
.labelInput {
|
||||
border: 1px solid #dcdee2;
|
||||
width: 100%;
|
||||
padding: 0 15px;
|
||||
border-radius: 5px;
|
||||
min-height: 30px;
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
|
||||
.span {
|
||||
color: #c5c8ce;
|
||||
}
|
||||
|
||||
.iconxiayi {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
.el-dropdown-link {
|
||||
cursor: pointer;
|
||||
color: var(--prev-color-primary);
|
||||
font-size: 12px;
|
||||
}
|
||||
.el-icon-arrow-down {
|
||||
font-size: 12px;
|
||||
}
|
||||
.el-dropdown-menu__item {
|
||||
a {
|
||||
color: #606266;
|
||||
}
|
||||
}
|
||||
.label_width {
|
||||
width: 400px;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user