You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
319 lines
8.0 KiB
319 lines
8.0 KiB
<template>
|
|
<div>
|
|
<div >
|
|
<div ref="lxHeader">
|
|
<LxHeader icon="md-apps" text="订单管理" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
|
|
<div slot="content"></div>
|
|
<slot>
|
|
<div style="display: flex;align-items: center;">
|
|
<!-- <div style="margin-right: 10px;">是否包含历史记录</div>
|
|
|
|
<el-switch v-model="select.show_history" :active-value="1" :inactive-value="0" style="margin-right: 10px;"></el-switch>
|
|
-->
|
|
<div style="margin-right: 10px;">订单状态</div>
|
|
|
|
<el-select size="mini" placeholder="请选择状态" v-model="select.state" style="width: 140px;margin-right: 10px;">
|
|
<el-option v-for="(item,index) in status" :key="index" :label="item.label" :value="item.value">
|
|
</el-option>
|
|
</el-select>
|
|
|
|
<div style="margin-right: 10px;">关键词</div>
|
|
|
|
<el-input size="mini" placeholder="请输入关键词" v-model="select.keyword" style="width: 160px;margin-right: 10px;"></el-input>
|
|
|
|
<el-button size="medium" type="primary" @click="getList" style="margin-left: 10px">查询</el-button>
|
|
</div>
|
|
</slot>
|
|
</LxHeader>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<xy-table
|
|
:table-item="table"
|
|
:list="data"
|
|
:total="total"
|
|
@pageSizeChange="e => {select.rows = e;select.page = 1;getList()}"
|
|
@pageIndexChange="e => {select.page = e;getList()}">
|
|
<template v-slot:btns><div></div></template>
|
|
</xy-table>
|
|
|
|
<operate ref="operate" @refresh="getList"></operate>
|
|
|
|
<el-drawer
|
|
size="38%"
|
|
title="日志"
|
|
:visible.sync="isShowDraw"
|
|
direction="rtl">
|
|
<xy-table style="margin: 20px 0" :is-page="false" :list="logs" :table-item="logTable">
|
|
<template v-slot:btns><div></div></template>
|
|
</xy-table>
|
|
</el-drawer>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import operate from '@/views/order/component/operate.vue'
|
|
import LxHeader from '@/components/LxHeader/index.vue'
|
|
|
|
import {getList,log} from '@/api/order'
|
|
export default {
|
|
components: {
|
|
LxHeader,
|
|
operate
|
|
},
|
|
data() {
|
|
return {
|
|
isShowDraw:false,
|
|
isShowOperate:false,
|
|
select:{
|
|
page:1,
|
|
rows:10,
|
|
show_history:0,
|
|
state:'',
|
|
keyword:'',
|
|
not_state:["pending"],
|
|
sort_name:"updated_at",
|
|
sort_type:"desc"
|
|
},
|
|
status:[
|
|
{
|
|
label:'全部',
|
|
value:''
|
|
},
|
|
// {
|
|
// label:'待处理',
|
|
// value:'pending'
|
|
// },
|
|
{
|
|
label:'已分发',
|
|
value:'assigned'
|
|
},
|
|
{
|
|
label:'已退回',
|
|
value:'returned'
|
|
},
|
|
{
|
|
label:'已接收',
|
|
value:'accepted'
|
|
},
|
|
{
|
|
label:'确认有效',
|
|
value:'confirmed'
|
|
},
|
|
{
|
|
label:'用户申请取消',
|
|
value:'canceled_by_user'
|
|
},
|
|
{
|
|
label:'商家标注无效单',
|
|
value:'canceled_by_merchant'
|
|
},
|
|
{
|
|
label:'已完成',
|
|
value:'finished'
|
|
},
|
|
{
|
|
label:'已取消',
|
|
value:'canceled'
|
|
},
|
|
],
|
|
total:0,
|
|
data:[],
|
|
logs:[],
|
|
logTable:[
|
|
{
|
|
label:'操作类型',
|
|
prop:'operate_name',
|
|
width:120,
|
|
sortable: false
|
|
},
|
|
{
|
|
label:'操作人',
|
|
prop:'operator.username',
|
|
width: 140,
|
|
sortable: false
|
|
},
|
|
{
|
|
label:'操作时间',
|
|
prop:'created_at',
|
|
width: 200,
|
|
sortable: false
|
|
},
|
|
{
|
|
label:'备注',
|
|
prop:'remark',
|
|
sortable: false
|
|
}
|
|
],
|
|
table:[
|
|
{
|
|
label:'订单名称',
|
|
sortable:false,
|
|
prop:'order.order_name',
|
|
width:180,
|
|
align:'left'
|
|
},
|
|
{
|
|
label:'客户姓名',
|
|
sortable:false,
|
|
prop:'member_name',
|
|
width:140
|
|
},
|
|
{
|
|
label:'客户电话',
|
|
sortable:false,
|
|
prop:'member_phone',
|
|
width: 180
|
|
},
|
|
{
|
|
label:'区域',
|
|
sortable:false,
|
|
prop:'member.area',
|
|
width: 160
|
|
},
|
|
{
|
|
label:'预产期',
|
|
sortable:false,
|
|
prop:'member_due_date',
|
|
width: 160
|
|
},
|
|
{
|
|
label:'产品类型',
|
|
sortable:false,
|
|
prop:'product_type.name',
|
|
width: 140
|
|
},
|
|
{
|
|
prop:'order.serial',
|
|
label:'订单编号',
|
|
width:180,
|
|
sortable:false,
|
|
},
|
|
{
|
|
prop:'order.created_at',
|
|
label:'订单创建时间',
|
|
width:180,
|
|
sortable:false,
|
|
},
|
|
{
|
|
prop:'updated_at',
|
|
label:'订单更新时间',
|
|
width:180,
|
|
sortable:false,
|
|
},
|
|
{
|
|
label:'状态',
|
|
sortable:false,
|
|
prop:'state_name',
|
|
width:120
|
|
},
|
|
{
|
|
label:'操作',
|
|
sortable:false,
|
|
align:'left',
|
|
fixed:'right',
|
|
minWidth:200,
|
|
customFn:row => {
|
|
const _this = this
|
|
let map = new Map([
|
|
['follow_by_merchant','el-icon-s-comment'],
|
|
['accept_by_merchant','el-icon-s-promotion'],
|
|
['return_by_merchant','el-icon-refresh-left'],
|
|
// ['confirm_by_merchant','el-icon-check'],
|
|
['mark_cancel_by_merchant','el-icon-circle-close'],
|
|
['finish_by_merchant','el-icon-edit-outline']
|
|
])
|
|
let btns = []
|
|
if(typeof row?.merchant_actions == 'object'){
|
|
for(let key in row.merchant_actions){
|
|
if(key!="confirm_by_merchant"){
|
|
btns.push(
|
|
<el-button
|
|
size="mini"
|
|
type="primary"
|
|
icon={map.get(key)}
|
|
plain
|
|
style={
|
|
{
|
|
'margin':'0 6px 4px 0'
|
|
}
|
|
}
|
|
on={
|
|
{
|
|
['click']:e => {
|
|
_this.$refs['operate'].form.item_id = row.id
|
|
_this.$refs['operate'].form.action = key
|
|
_this.$refs['operate'].isShow = true
|
|
console.log(key)
|
|
}
|
|
}
|
|
}>{row.merchant_actions[key]}</el-button>
|
|
)
|
|
}
|
|
|
|
}
|
|
}
|
|
btns.push(
|
|
<el-button
|
|
size="mini"
|
|
type="primary"
|
|
icon="el-icon-document-copy"
|
|
plain
|
|
style={
|
|
{
|
|
'margin':'0 6px 4px 0'
|
|
}
|
|
}
|
|
on={
|
|
{
|
|
['click']:e => {
|
|
log({
|
|
item_id:row.id
|
|
}).then(res => {
|
|
this.logs = res.data
|
|
})
|
|
this.isShowDraw = true
|
|
}
|
|
}
|
|
}>日志</el-button>
|
|
)
|
|
return (
|
|
<div style={
|
|
{
|
|
'display':'flex',
|
|
'flex-wrap':'wrap'
|
|
}
|
|
}>
|
|
{ btns }
|
|
</div>
|
|
)
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
methods: {
|
|
async getList(){
|
|
let res = await getList(this.select)
|
|
console.log(res)
|
|
this.data = res.data
|
|
this.total = res.total
|
|
}
|
|
},
|
|
computed: {},
|
|
mounted() {
|
|
this.getList()
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
//::v-deep .el-button + .el-button{
|
|
// margin-left: 0 !important;
|
|
//}
|
|
::v-deep .el-button{
|
|
padding: 5px 8px !important;
|
|
}
|
|
</style>
|