243 lines
6.6 KiB
Vue
243 lines
6.6 KiB
Vue
|
|
<template>
|
|
<!-- 线下出货列表 -->
|
|
<page-header-wrapper>
|
|
<template v-slot:content>
|
|
<div class="table-page-search-wrapper">
|
|
<a-form layout="inline">
|
|
<a-row :gutter="48">
|
|
<a-col :md="8" :sm="24">
|
|
<a-form-item label="手机号码">
|
|
<a-input v-model="queryParam.mobile" placeholder="购买人手机号" />
|
|
</a-form-item>
|
|
</a-col>
|
|
<a-col :md="8" :sm="24">
|
|
<a-form-item label="真实姓名">
|
|
<a-input v-model="queryParam.name" placeholder="购买人真实姓名" />
|
|
</a-form-item>
|
|
</a-col>
|
|
<a-col :md="8" :sm="24">
|
|
<a-form-item label="详细地址">
|
|
<a-input v-model="queryParam.address" placeholder="购买人收货地址" />
|
|
</a-form-item>
|
|
</a-col>
|
|
|
|
<!-- <a-col :md="8" :sm="24">
|
|
<a-form-item label="发货方式" has-feedback>
|
|
<a-select v-model="queryParam.channel" placeholder="发货方式">
|
|
<a-select-option v-for="item in channels" :key="item.value" :value="item.value">{{ item.text }}</a-select-option>
|
|
</a-select>
|
|
</a-form-item>
|
|
</a-col>
|
|
<a-col :md="8" :sm="24">
|
|
<a-form-item label="快递类型" has-feedback>
|
|
<a-select v-model="queryParam.express" placeholder="快递类型">
|
|
<a-select-option v-for="(item, key, index) in expresses" :key="index" :value="key">{{ item }}</a-select-option>
|
|
</a-select>
|
|
</a-form-item>
|
|
</a-col> -->
|
|
<a-col :md="8" :sm="24">
|
|
<a-button type="primary" @click="search"><a-icon type="search" />搜索</a-button>
|
|
<a-button class="ml8" t ype="primary" @click="CreateOffline"><a-icon type="plus" />新增线下出货</a-button>
|
|
<a-button class="ml8" @click="resetSearch"><a-icon type="undo" />重置</a-button>
|
|
</a-col>
|
|
</a-row>
|
|
</a-form>
|
|
</div>
|
|
</template>
|
|
|
|
<!-- 列表 -->
|
|
<a-card :bordered="false">
|
|
<s-table
|
|
ref="table"
|
|
:columns="columns"
|
|
:data="loadData"
|
|
:rowKey="(row) => row.offline_id"
|
|
showPagination="auto"
|
|
bordered
|
|
size="default"
|
|
>
|
|
<div slot="name" slot-scope="text, record">
|
|
<div>{{ record.name }} {{ record.mobile?'('+record.mobile+')':'--' }}</div>
|
|
<div>{{ record.address || '--' }}</div>
|
|
</div>
|
|
<div slot="number" slot-scope="text, record">
|
|
{{ record.number }}件
|
|
</div>
|
|
<div slot="channel" slot-scope="text, record">
|
|
{{ record.channel == 'express' ?'快递':'自提' }}
|
|
</div>
|
|
<div slot="express" slot-scope="text, record">
|
|
{{ record.express.name || '-' }} <div>{{ record.express.express_no || '-' }}</div>
|
|
</div>
|
|
</s-table>
|
|
</a-card>
|
|
</page-header-wrapper>
|
|
</template>
|
|
|
|
<script>
|
|
import { STable, UserInfo } from '@/components'
|
|
import DeriveButton from '@/components/OrderDetailInfo/DeriveButton'
|
|
import moment from 'moment'
|
|
import Info from '@/views/home/components/Info'
|
|
import { getMiddlesStockOffline, getMiddlesStockOfflineInit } from '@/api/stock'
|
|
import AddOffline from './widgets/AddOffline.vue'
|
|
|
|
// 列表规格
|
|
const columns = [
|
|
{
|
|
title: 'ID',
|
|
dataIndex: 'offline_id',
|
|
align: 'center',
|
|
width: 100
|
|
},
|
|
{
|
|
title: '发货数量',
|
|
scopedSlots: { customRender: 'number' },
|
|
align: 'center',
|
|
width: 120
|
|
},
|
|
{
|
|
title: '发货方式',
|
|
scopedSlots: { customRender: 'channel' },
|
|
align: 'center',
|
|
width: 120
|
|
},
|
|
{
|
|
title: '收货人',
|
|
scopedSlots: { customRender: 'name' },
|
|
align: 'center'
|
|
},
|
|
{
|
|
title: '快递信息',
|
|
scopedSlots: { customRender: 'express' },
|
|
align: 'center'
|
|
},
|
|
{
|
|
title: '创建时间',
|
|
dataIndex: 'created_at',
|
|
align: 'center'
|
|
}
|
|
// {
|
|
// title: '操作',
|
|
// scopedSlots: { customRender: 'actions' },
|
|
// align: 'center',
|
|
// width: 160,
|
|
// fixed: 'right'
|
|
// }
|
|
]
|
|
|
|
export default {
|
|
name: 'Online',
|
|
components: {
|
|
STable,
|
|
UserInfo,
|
|
Info,
|
|
DeriveButton
|
|
},
|
|
data () {
|
|
return {
|
|
exports_can: false,
|
|
columns,
|
|
searchType: false, // 展示全部的搜索
|
|
expresses: [], // 快递列表
|
|
channels: [], // 返货方式
|
|
|
|
queryParam: {
|
|
name: undefined,
|
|
mobile: undefined,
|
|
channel: undefined,
|
|
address: undefined,
|
|
express: undefined
|
|
},
|
|
listCount: 0,
|
|
loadData: (parameter) => {
|
|
const requestParameters = Object.assign({}, parameter, this.queryParam)
|
|
return getMiddlesStockOffline(requestParameters)
|
|
}
|
|
}
|
|
},
|
|
watch: {
|
|
$route (to, from) {
|
|
if (to.name === 'SalesOffline' && (
|
|
from.name === 'Home' ||
|
|
from.name === 'cityExperienceOfficer' ||
|
|
from.name === 'StockOut' ||
|
|
from.name === 'StockIn' ||
|
|
from.name === 'DealerIn' ||
|
|
from.name === 'DealerOut' ||
|
|
from.name === 'UserIndex' ||
|
|
from.name === 'SalesOnline' ||
|
|
from.name === 'SalesOffline' ||
|
|
from.name === 'PermissionsIndex' ||
|
|
from.name === 'SalesStock')
|
|
) {
|
|
this.$refs.table.loadData()
|
|
}
|
|
}
|
|
},
|
|
created () {
|
|
this.init()
|
|
},
|
|
methods: {
|
|
moment,
|
|
// 获取检索的基本样式
|
|
init () {
|
|
getMiddlesStockOfflineInit().then(res => {
|
|
this.channels = res.channel
|
|
this.expresses = res.expresses
|
|
})
|
|
},
|
|
// 搜索列表
|
|
search () {
|
|
this.$refs.table.refresh(true) // 重置接口且刷先到第一页
|
|
},
|
|
// 重置搜索列表
|
|
resetSearch () {
|
|
this.queryParam = {
|
|
name: undefined,
|
|
mobile: undefined,
|
|
channel: undefined,
|
|
address: undefined,
|
|
express: undefined
|
|
}
|
|
this.$refs.table.refresh(true) // 重置接口且刷先到第一页
|
|
},
|
|
// 创建线下出货
|
|
CreateOffline () {
|
|
const success = {
|
|
title: '新增线下出货',
|
|
width: 600,
|
|
maskClosable: true,
|
|
closable: true,
|
|
okText: '确认新增',
|
|
cancelText: '取消'
|
|
}
|
|
const offline = {
|
|
channels: this.channels,
|
|
expresses: this.expresses
|
|
}
|
|
console.log(offline)
|
|
this.$dialog(
|
|
AddOffline,
|
|
{
|
|
offline,
|
|
on: {
|
|
ok: () => {
|
|
this.$refs.table.loadData()
|
|
}
|
|
}
|
|
},
|
|
success
|
|
)
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="less" scoped>
|
|
.ml8 {
|
|
margin-left: 8px;
|
|
}
|
|
</style>
|