'!'
This commit is contained in:
@@ -309,7 +309,19 @@ function cancelOrder(vendorOrderID, vendorID, reason, fn) {
|
||||
120: "失败"
|
||||
*/
|
||||
|
||||
export { getOrderCount, getBusinessInfo, getPlatformInfo, createWaybill, ExportOrderWithSku, getOrderWaybillInfo, cancelAll3rdWaybillsApi, cancelWaybillsApi, selfDelivering, cancelOrder, delBeforeSale }
|
||||
export {
|
||||
getOrderCount,
|
||||
getBusinessInfo,
|
||||
getPlatformInfo,
|
||||
createWaybill,
|
||||
ExportOrderWithSku,
|
||||
getOrderWaybillInfo,
|
||||
cancelAll3rdWaybillsApi,
|
||||
cancelWaybillsApi,
|
||||
selfDelivering,
|
||||
cancelOrder,
|
||||
delBeforeSale
|
||||
}
|
||||
|
||||
/*
|
||||
order
|
||||
|
||||
@@ -980,6 +980,59 @@ async function queryUnansweredInvoice (json) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询门店之间的比值
|
||||
* /v2/order/StoreOrderRank
|
||||
* @Param token header string true "认证token"
|
||||
* @Param start query string true "起始时间"
|
||||
* @Param end query string true "结束时间"
|
||||
* @Param storeID query string false "门店id,[1,2,3]"
|
||||
* @Param rank query string true "排序方式,订单中粮,[DESC,ASC]"
|
||||
* @Param offset query int false "门店列表起始序号(以0开始,缺省为0)"
|
||||
* @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)"
|
||||
*/
|
||||
async function storeOrderRank(json) {
|
||||
try {
|
||||
const res = await api('v2/order/StoreOrderRank', {
|
||||
params: {
|
||||
...json
|
||||
},
|
||||
noLoading: true
|
||||
})
|
||||
return res
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
throw e
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description 京西打印机列表
|
||||
* @Param token header string true "认证token"
|
||||
* @Param printNo formData string false "打印机编号"
|
||||
* @Param printKey formData string false "打印机秘钥"
|
||||
* @Param status formData int false "激活状态[-1关机/0未连接/1开机]"
|
||||
* @Param isOnline formData int false "在线装填[-1掉线/0未连接/1链接]"
|
||||
* @Param page formData int true "跳过数据条数"
|
||||
* @Param size formData int true "每页展示条数"
|
||||
*/
|
||||
async function jxPrinterList(json) {
|
||||
try {
|
||||
const res = await api('v2/order/QueryJxPrintList', {
|
||||
params: {
|
||||
...json
|
||||
},
|
||||
noLoading: true
|
||||
})
|
||||
return res
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
throw e
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
setMTStoreAutoText,
|
||||
getMTStoreAutoText,
|
||||
@@ -1017,5 +1070,7 @@ export {
|
||||
getMyStoreInfo,
|
||||
queryInvoiceSetting,
|
||||
bathUpdateInvoiceSetting,
|
||||
queryUnansweredInvoice
|
||||
queryUnansweredInvoice,
|
||||
storeOrderRank,
|
||||
jxPrinterList
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ export default{
|
||||
computed:{
|
||||
...mapGetters({
|
||||
jDCategoryData:"jDCategoryData",
|
||||
jGCategoryData:"jGCategoryData",
|
||||
// jGCategoryData:"jGCategoryData",
|
||||
mTCategoryData:"mTCategoryData",
|
||||
dYCategoryData:"dYCategoryData",
|
||||
eBCategoryData:"eBCategoryData",
|
||||
@@ -94,9 +94,9 @@ export default{
|
||||
case 'JD':
|
||||
arr = this.jDCategoryData
|
||||
break
|
||||
case 'JG':
|
||||
arr = this.jGCategoryData
|
||||
break
|
||||
// case 'JG':
|
||||
// arr = this.jGCategoryData
|
||||
// break
|
||||
case 'MT':
|
||||
arr = this.mTCategoryData
|
||||
break
|
||||
|
||||
@@ -95,6 +95,21 @@ export const newMenu2 = [
|
||||
updatedAt: '2021-01-21T17:21:50+08:00',
|
||||
url: '/versionControl',
|
||||
},
|
||||
{
|
||||
children: [],
|
||||
color: '',
|
||||
createdAt: '2021-01-21T17:21:47+08:00',
|
||||
deletedAt: '1970-01-01T00:00:00+08:00',
|
||||
id: 99999,
|
||||
imgURL: '',
|
||||
lastOperator: 'suyl',
|
||||
level: 2,
|
||||
name: '京西打印机',
|
||||
parentID: 52,
|
||||
type: 0,
|
||||
updatedAt: '2021-01-21T17:21:50+08:00',
|
||||
url: '/jxPrinter',
|
||||
},
|
||||
// 营销活动
|
||||
{
|
||||
children: [],
|
||||
|
||||
@@ -81,34 +81,42 @@
|
||||
</el-form-item>
|
||||
<el-form-item style="margin-left:10px;" label="平台负责人:">
|
||||
<el-select v-model="searchForm.marketManPhone" clearable filterable placeholder="请选择平台负责人">
|
||||
<el-option v-if="marketsArr" v-for="namePhone in marketsArr" :key="namePhone[1]" :label="namePhone[0]"
|
||||
:value="namePhone[1]">
|
||||
<span style="float: left">{{ namePhone[0] }}</span>
|
||||
</el-option>
|
||||
<template v-for="namePhone in marketsArr">
|
||||
<el-option v-if="marketsArr" :key="namePhone[1]" :label="namePhone[0]"
|
||||
:value="namePhone[1]">
|
||||
<span style="float: left">{{ namePhone[0] }}</span>
|
||||
</el-option>
|
||||
</template>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="margin-left:10px;" label="京东负责人:">
|
||||
<el-select v-model="searchForm.jdPhone" clearable filterable placeholder="请选择平台负责人">
|
||||
<el-option v-if="jdStore" v-for="(namePhone, index) in jdStore" :key="index" :label="namePhone[0]"
|
||||
:value="namePhone[1]">
|
||||
<span style="float: left">{{ namePhone[0] }}</span>
|
||||
</el-option>
|
||||
<template v-for="(namePhone, index) in jdStore">
|
||||
<el-option v-if="jdStore" :key="index" :label="namePhone[0]"
|
||||
:value="namePhone[1]">
|
||||
<span style="float: left">{{ namePhone[0] }}</span>
|
||||
</el-option>
|
||||
</template>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="margin-left:10px;" label="美团负责人:">
|
||||
<el-select v-model="searchForm.mtPhone" clearable filterable placeholder="请选择平台负责人">
|
||||
<el-option v-if="mtStore" v-for="(namePhone, index) in mtStore" :key="index" :label="namePhone[0]"
|
||||
:value="namePhone[1]">
|
||||
<span style="float: left">{{ namePhone[0] }}</span>
|
||||
</el-option>
|
||||
<template v-for="(namePhone, index) in mtStore">
|
||||
<el-option v-if="mtStore" :key="index" :label="namePhone[0]"
|
||||
:value="namePhone[1]">
|
||||
<span style="float: left">{{ namePhone[0] }}</span>
|
||||
</el-option>
|
||||
</template>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="margin-left:10px;" label="淘宝闪购负责人:">
|
||||
<el-select v-model="searchForm.ebaiPhone" clearable filterable placeholder="请选择平台负责人">
|
||||
<el-option v-if="ebStore" v-for="(namePhone, index) in ebStore " :key="index" :label="namePhone[0]"
|
||||
:value="namePhone[1]">
|
||||
<span style="float: left">{{ namePhone[0] }}</span>
|
||||
</el-option>
|
||||
<template v-for="(namePhone, index) in ebStore ">
|
||||
<el-option v-if="ebStore" :key="index" :label="namePhone[0]"
|
||||
:value="namePhone[1]">
|
||||
<span style="float: left">{{ namePhone[0] }}</span>
|
||||
</el-option>
|
||||
</template>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="日期范围:" label-width="70px">
|
||||
|
||||
287
src/pages/indexpage/cmp/storeOrderRank.vue
Normal file
287
src/pages/indexpage/cmp/storeOrderRank.vue
Normal file
@@ -0,0 +1,287 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :model="storeOrderRankStatic.data" size="mini" :inline="true" style="display: flex; flex-wrap: wrap">
|
||||
<el-form-item label="门店id" label-width="70px">
|
||||
<jx-select-pick
|
||||
v-model="storeOrderRankStatic.data.storeID"
|
||||
:placeholder="'请输入门店关键字'"
|
||||
:valueType="{
|
||||
type:'object',
|
||||
valueKey:'id'
|
||||
}"
|
||||
>
|
||||
</jx-select-pick>
|
||||
</el-form-item>
|
||||
<!-- 时间 -->
|
||||
<el-form-item label="对比日期范围:" label-width="100px">
|
||||
<!-- value-format="yyyy-MM-dd HH:mm:ss" -->
|
||||
<el-date-picker
|
||||
style="width: 260px"
|
||||
v-model="storeOrderRankStatic.data.timeRange"
|
||||
type="daterange"
|
||||
align="left"
|
||||
unlink-panels
|
||||
:clearable="false"
|
||||
:default-value="Date.now() - 3600 * 1000 * 24 * 1"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:picker-options="pickerOptionsRank"
|
||||
@change="timeOnChange"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="排序方式">
|
||||
<el-select v-model="storeOrderRankStatic.data.rank" @change="onChange">
|
||||
<el-option label="升序" value="ASC"></el-option>
|
||||
<el-option label="降序" value="DESC"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="getStoreOrderRank" >查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div>
|
||||
<el-table :data="currentData" empty="暂无数据~~~" stripe >
|
||||
<el-table-column type="expand">
|
||||
<template slot-scope="scope">
|
||||
<!-- <div> -->
|
||||
<!-- <h1>{{ recentDay * 2 }}天内的变化</h1> -->
|
||||
<div style="display: flex;justify-content: space-around;margin: 0 auto;">
|
||||
<el-card v-for="item in scope.row.children" :key="item.id" style="border:1px solid #eee;padding: 10px;font-size: 28px;" :style="{'background-color':new Date(item.order_date).getTime() - new Date(storeOrderRankStatic.data.timeRange[0]).getTime() >= 0 ? '#eee': ''}">
|
||||
<div style="text-align: center;margin-bottom: 10px;">{{ new Date(item.order_date).getTime() - new Date(storeOrderRankStatic.data.timeRange[0]).getTime() >= 0 ? '近期' : '远期'}}</div>
|
||||
<div><span style="font-weight: bold;">时间范围</span>:
|
||||
{{
|
||||
new Date(item.order_date).getTime() - new Date(storeOrderRankStatic.data.timeRange[0]).getTime() < 0 ?
|
||||
extendTime.startTime1 + ' 至 ' + extendTime.endTime1
|
||||
: extendTime.startTime2 + ' 至 ' + extendTime.endTime2
|
||||
}}
|
||||
</div>
|
||||
<div style="margin-top: 20px;"><span style="font-weight: bold;">订单数量</span>:{{ item.order_count }}</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="门店id" align="center" prop="jx_store_id"></el-table-column>
|
||||
<el-table-column label="门店名" align="center" prop="name"></el-table-column>
|
||||
<el-table-column label="订单总数" align="center" prop="total_orders"></el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<div class="page" style="text-align: center;margin-top: 10px;">
|
||||
<el-pagination
|
||||
@size-change="sizeChangeRank"
|
||||
@current-change="handleCurrentChangeRank"
|
||||
:page-sizes="[15, 30, 50]"
|
||||
:page-size.sync="pageSize"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
:current-page="currentPage"
|
||||
:total="storeOrderRankStatic.totalCount">
|
||||
</el-pagination>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import jxSelectPick from '@/components/cmp/selectPick'
|
||||
import { storeOrderRank } from '@/apis/store.js'
|
||||
import moment from 'moment'
|
||||
export default {
|
||||
components:{
|
||||
jxSelectPick
|
||||
},
|
||||
data(){
|
||||
return {
|
||||
pickerOptionsRank: {
|
||||
disabledDate(time) {
|
||||
return time.getTime() > Date.now()
|
||||
},
|
||||
shortcuts: [
|
||||
{
|
||||
text: '今天昨天',
|
||||
onClick(picker) {
|
||||
let end = moment(new Date().getTime()).format('YYYY-MM-DD')
|
||||
let start = moment(new Date().getTime()- 3600 * 1000 * 24 * 0).format('YYYY-MM-DD')
|
||||
picker.$emit('pick', [new Date(Date.parse(start)), new Date(Date.parse(end))])
|
||||
}
|
||||
},
|
||||
{
|
||||
text: '昨天前天',
|
||||
onClick(picker) {
|
||||
let end = moment(new Date().getTime()- 3600 * 1000 * 24 * 1).format('YYYY-MM-DD')
|
||||
let start = moment(new Date().getTime()- 3600 * 1000 * 24 * 1).format('YYYY-MM-DD')
|
||||
picker.$emit('pick', [new Date(Date.parse(start)), new Date(Date.parse(end))])
|
||||
}
|
||||
},
|
||||
{
|
||||
text: '近3天',
|
||||
onClick(picker) {
|
||||
let end = moment(new Date().getTime()- 3600 * 1000 * 24 * 1).format('YYYY-MM-DD')
|
||||
let start = moment(new Date().getTime()- 3600 * 1000 * 24 * 3).format('YYYY-MM-DD')
|
||||
picker.$emit('pick', [new Date(Date.parse(start)), new Date(Date.parse(end))])
|
||||
}
|
||||
},
|
||||
{
|
||||
text: '近一周',
|
||||
onClick(picker) {
|
||||
let end = moment(new Date().getTime()- 3600 * 1000 * 24 * 1).format('YYYY-MM-DD')
|
||||
let start = moment(new Date().getTime()- 3600 * 1000 * 24 * 7).format('YYYY-MM-DD')
|
||||
picker.$emit('pick',[new Date(Date.parse(start)), new Date(Date.parse(end))])
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
},
|
||||
// 门店增长排名统计
|
||||
storeOrderRankStatic:{
|
||||
data:{
|
||||
storeID:'',
|
||||
timeRange:[],
|
||||
rank:'ASC', // 排序方式 DESC ASC
|
||||
// offset:0,
|
||||
// pageSize:-1
|
||||
},
|
||||
result:[],
|
||||
totalCount:0
|
||||
},
|
||||
pageSize:30,
|
||||
currentPage:0,
|
||||
currentData:[],
|
||||
// 往前延申的开始时间
|
||||
extendTime:{
|
||||
startTime1:'',
|
||||
endTime1:'', // endTime1
|
||||
startTime2:'', // startTime2
|
||||
endTime2:'' // endTime2
|
||||
},
|
||||
recentDay:0, // 延申了几天
|
||||
}
|
||||
},
|
||||
created(){
|
||||
let startTime = moment(new Date().getTime()).format('YYYY-MM-DD')
|
||||
let endTime = moment(new Date().getTime()).format('YYYY-MM-DD')
|
||||
this.storeOrderRankStatic.data.timeRange = [startTime,endTime]
|
||||
this.timeOnChange()
|
||||
},
|
||||
watch:{
|
||||
"storeOrderRankStatic.data.storeID":{
|
||||
handler(val){
|
||||
console.log('handler,门店id发生变化',val)
|
||||
this.timeOnChange()
|
||||
}
|
||||
}
|
||||
},
|
||||
methods :{
|
||||
handleCurrentChangeRank(val){
|
||||
this.currentPage = val
|
||||
let startIndex = (val -1) * this.pageSize
|
||||
let endIndex = startIndex + this.pageSize
|
||||
this.currentData = this.storeOrderRankStatic.result.slice(startIndex,endIndex)
|
||||
},
|
||||
// 每页个数改变
|
||||
sizeChangeRank (size) {
|
||||
this.$nextTick(() => {
|
||||
if(size) this.pageSize = size
|
||||
let startIndex =this.currentPage === 0 ? 0 : (this.currentPage - 1) * size
|
||||
let endIndex = startIndex + this.pageSize
|
||||
this.currentData = this.storeOrderRankStatic.result.slice(startIndex,endIndex)
|
||||
})
|
||||
},
|
||||
// 获取店铺增长排名情况
|
||||
async getStoreOrderRank(){
|
||||
let obj = {
|
||||
start:this.extendTime.startTime1, // 延申时间
|
||||
end:this.storeOrderRankStatic.data.timeRange[1] + ' 23:59:59',
|
||||
rank:this.storeOrderRankStatic.data.rank, // DESC ASC
|
||||
offset:0,
|
||||
pageSize:-1
|
||||
}
|
||||
if(this.storeOrderRankStatic.data.storeID) obj['storeID'] = JSON.stringify([this.storeOrderRankStatic.data.storeID.id])
|
||||
let res = await storeOrderRank(obj)
|
||||
this.storeOrderRankStatic.result = this.switchData(res.data)
|
||||
this.currentData = this.storeOrderRankStatic.result.slice(0,30)
|
||||
if(obj.offset === 0 && obj.pageSize === -1) this.storeOrderRankStatic.totalCount = this.storeOrderRankStatic.result.length || 0 // 记录总数
|
||||
},
|
||||
// 升序 降序发生变化
|
||||
onChange(){
|
||||
this.getStoreOrderRank()
|
||||
},
|
||||
// 处理数据
|
||||
switchData(data){
|
||||
let brr = []
|
||||
let startTime = this.storeOrderRankStatic.data.timeRange[0] + ' 00:00:00'
|
||||
let mindumTime = new Date(startTime).getTime()
|
||||
let endTime = this.storeOrderRankStatic.data.timeRange[1] + ' 23:59:59'
|
||||
data.forEach(item => {
|
||||
let findIndex = brr.findIndex(i => i.jx_store_id === item.jx_store_id)
|
||||
if(findIndex === -1){
|
||||
let children = new Array(2);
|
||||
let currentTime = new Date(item.order_date).getTime()
|
||||
if(currentTime - mindumTime < 0){
|
||||
children[0] = {
|
||||
id: brr.length + '1',
|
||||
...item
|
||||
}
|
||||
children[1] = {
|
||||
id: brr.length + '2',
|
||||
jx_store_id:item.jx_store_id,
|
||||
name:item.name,
|
||||
order_count:0,
|
||||
order_date:endTime.slice(0,11) + '00:00:00 +0800 CST',
|
||||
total_orders:item.total_orders
|
||||
}
|
||||
}else{
|
||||
children[0] = {
|
||||
id:brr.length + '1',
|
||||
jx_store_id:item.jx_store_id,
|
||||
name:item.name,
|
||||
order_count:0,
|
||||
order_date:this.extendTime.endTime1.slice(0,11) + '00:00:00 +0800 CST',
|
||||
total_orders:item.total_orders
|
||||
}
|
||||
children[1] = {
|
||||
id:brr.length + '2',
|
||||
...item
|
||||
}
|
||||
}
|
||||
brr.push({
|
||||
id:'' + brr.length,
|
||||
...item,
|
||||
children
|
||||
})
|
||||
}else{
|
||||
let currentTime = new Date(item.order_date).getTime()
|
||||
if(currentTime - mindumTime < 0){
|
||||
brr[findIndex].children[0] = {
|
||||
id:brr[findIndex].id + '1',
|
||||
...item
|
||||
}
|
||||
}else{
|
||||
brr[findIndex].children[1] = {
|
||||
id:brr[findIndex].id + '2',
|
||||
...item
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
console.log(brr,'data',data)
|
||||
return brr
|
||||
},
|
||||
// 选项的时间发生变化
|
||||
timeOnChange(){
|
||||
let start = new Date(this.storeOrderRankStatic.data.timeRange[0] + ' 00:00:00').getTime()
|
||||
let end = new Date(this.storeOrderRankStatic.data.timeRange[1] + ' 23:59:59').getTime()
|
||||
let day = Math.ceil((end -start)/86400000); // 往前延申多少天 天数 (1000 * 60 * 60 * 24) = 86400000
|
||||
this.recentDay = day
|
||||
this.extendTime.startTime1 = moment(new Date(start - 3600 * 1000 * 24 * day).getTime()).format('YYYY-MM-DD') + ' 00:00:00'
|
||||
this.extendTime.startTime2 = this.storeOrderRankStatic.data.timeRange[0] + ' 00:00:00'
|
||||
this.extendTime.endTime1 = moment((new Date(this.extendTime.startTime2).getTime()) - 1000).format('YYYY-MM-DD HH:mm:ss')
|
||||
this.extendTime.endTime2 = this.storeOrderRankStatic.data.timeRange[1] + ' 23:59:59'
|
||||
this.getStoreOrderRank()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -360,6 +360,128 @@
|
||||
</div>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="袋子申请" name="materialApply">
|
||||
<div>
|
||||
<el-form :model="materialInfo.data" size="mini" :inline="true" style="display: flex; flex-wrap: wrap"
|
||||
label-width="100px">
|
||||
<el-form-item label="日期范围">
|
||||
<el-date-picker
|
||||
style="width: 260px"
|
||||
v-model="materialInfo.data.timeRange"
|
||||
type="daterange"
|
||||
align="left"
|
||||
unlink-panels
|
||||
:clearable="false"
|
||||
:default-value="Date.now() - 3600 * 1000 * 24 * 1"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:picker-options="pickerOptions"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="订单状态:" >
|
||||
<el-checkbox-group v-model="materialInfo.data.statuss" :min="1">
|
||||
<el-checkbox-button v-for="item in statusArr" :label="item.status" :key="item.status">{{ item.name }}</el-checkbox-button>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="getMaterialInfo" >查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div>
|
||||
<el-table :data="materialInfo.result" empty="暂无数据~~~" stripe>
|
||||
<el-table-column label="来源门店" align="center" prop="fromStoreID"></el-table-column>
|
||||
<el-table-column label="订单号" align="center" prop="vendorOrderID"></el-table-column>
|
||||
<el-table-column label="下单时间" align="center" prop="orderCreatedAt">
|
||||
<div slot-scope="scope"> {{ scope.row.orderCreatedAt | timeToLLL }}</div>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" >
|
||||
<div slot-scope="scope">
|
||||
<div style="line-height: 1.2"
|
||||
:class="{ colorred: (scope.row.lockStatus === -5) && (scope.row.flag & 6) === 0 }">
|
||||
<div>{{ $store.state.serverInfo.orderStatus ? $store.state.serverInfo.orderStatus[scope.row.status] : '' }}
|
||||
</div>
|
||||
<!-- 用户申请取消 -->
|
||||
<div style="color: #409EFF" v-if="scope.row.lockStatus === -5">
|
||||
(用户申请取消<span v-if="(scope.row.flag & 6) !== 0">:{{ (scope.row.flag & 6) === 2 ? '已同意' : '已拒绝' }}</span>)
|
||||
</div>
|
||||
<!-- 倒计时 -->
|
||||
<CountDown v-if="scope.row.lockStatus === -5 && (scope.row.flag & 6) === 0" :order="scope.row">
|
||||
</CountDown>
|
||||
<!-- 取货失败待审核 -->
|
||||
<div style="color: #409EFF"
|
||||
v-if="scope.row.status === 17 && scope.row.lockStatus === 0 && (scope.row.flag & 24) !== 0">
|
||||
(已处理:<span>{{ (scope.row.flag & 24) === 8 ? '同意' : '拒绝' }}</span>)
|
||||
</div>
|
||||
<!-- 取货失败召唤配送 -->
|
||||
<div style="color: #409EFF"
|
||||
v-if="scope.row.status === 18 && scope.row.lockStatus === 0 && (scope.row.flag & 64) !== 0">
|
||||
(已召唤平台配送)
|
||||
</div>
|
||||
<!-- 用户拒收 -->
|
||||
<div style="color: #409EFF"
|
||||
v-if="scope.row.status === 22 && scope.row.lockStatus === 0 && (scope.row.flag & 32) !== 0">
|
||||
(已收到货物)
|
||||
</div>
|
||||
<div style="color: #409EFF" v-if="scope.row.deliveryType === 'self'">
|
||||
(自提单)
|
||||
</div>
|
||||
<div style="color: #409EFF"
|
||||
v-if="((scope.row.deliveryFlag & 3) === 3 && scope.row.lockStatus === 0) && (scope.row.deliveryType !== 'self') && !scope.row.vendorWaybillID">
|
||||
(门店自送<span v-if="(scope.row.flag & 128) === 128">[已操作]</span>)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-table-column>
|
||||
<!-- min-width="372" -->
|
||||
<el-table-column label="客户信息" align="center" header-align="" min-width="120">
|
||||
<div slot-scope="scope">
|
||||
<div style="display:flex;white-space: nowrap;word-break: normal;" v-if="scope.row.deliveryType !== 'self'">
|
||||
<div style="width: 80px;text-align:center;text-overflow: ellipsis;overflow: hidden;">
|
||||
{{ scope.row.consigneeName }}</div>
|
||||
<div style="width:135px;text-align:left;">{{ scope.row.consigneeMobile }}</div>
|
||||
<div>真实号</div>
|
||||
<div style="margin-left: 3px;flex: 1;text-align: left;">
|
||||
{{ scope.row.consigneeMobile2 || '暂无' }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-table-column>
|
||||
<el-table-column label="配送信息" align="center" header-align="" min-width="120">
|
||||
<div slot-scope="scope">
|
||||
<el-popover :refs="scope.row.vendorOrderID" placement="right" @show="handleGetWaybillDetail(scope.row)"
|
||||
trigger="click">
|
||||
<!-- 转过的订单 -->
|
||||
<!-- 请求信息 -->
|
||||
<div v-loading="waybillLoading" style="min-height: 100px;">
|
||||
<!-- 配送信息 820177478000021 8/22 -->
|
||||
<CMPWaybillInfo :currentWaybill="currentWaybill"></CMPWaybillInfo>
|
||||
</div>
|
||||
<!-- 请求信息 -->
|
||||
<div slot="reference">
|
||||
<div class="hover-click" style="line-height: 1;">
|
||||
<div>{{ $store.state.serverInfo.vendorName[scope.row.waybillVendorID] }} {{ scope.row.courierName }}</div>
|
||||
<div> {{ scope.row.courierMobile }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-popover>
|
||||
</div>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="店铺排名" name="storeOrderRank" >
|
||||
<storeOrderRank></storeOrderRank>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<el-dialog title="收益统计" :visible.sync="staticStatusShow" width="80%">
|
||||
@@ -448,17 +570,20 @@ import { getBrands } from '@/apis/controls/brand.js'
|
||||
import jxTimePick from '@/components/cmp/timePick'
|
||||
import jxSelectPick from '@/components/cmp/selectPick'
|
||||
import staticInfo from './cmp/staticInfo'
|
||||
import storeOrderRank from './cmp/storeOrderRank.vue'
|
||||
import { mapGetters } from 'vuex'
|
||||
import { APIGetInvoiceRecord,APIUploadOrderInvoice } from '@/apis/APIOrder'
|
||||
import {
|
||||
queryUnansweredInvoice
|
||||
} from '@/apis/store.js'
|
||||
import { queryUnansweredInvoice,getMyStoreInfo } from '@/apis/store.js'
|
||||
import { getOrdersPost } from '@/apis/order.js'
|
||||
import CMPWaybillInfo from "@/components/ordermanager/cmp/waybillInfo.vue";
|
||||
export default {
|
||||
name: 'IndexPage',
|
||||
components: {
|
||||
jxTimePick,
|
||||
jxSelectPick,
|
||||
staticInfo,
|
||||
CMPWaybillInfo,
|
||||
storeOrderRank,
|
||||
jxUploadFile: () => import("@/components/cmp/uploadFile")
|
||||
},
|
||||
data() {
|
||||
@@ -532,14 +657,45 @@ export default {
|
||||
orderID:[{ required: true, message: '请输入订单号', trigger: 'change' }],
|
||||
id:[{ required: true, message: '请输入发票号码', trigger: 'change' }],
|
||||
img:[{ required: true, message: '请上传发票', trigger: 'change' }]
|
||||
}
|
||||
},
|
||||
// 物料申请信息
|
||||
materialInfo:{
|
||||
personalStore:[],
|
||||
data:{
|
||||
// fromDate:'',
|
||||
// toDate:'',
|
||||
timeRange:[],
|
||||
statuss:[],
|
||||
offset:0,
|
||||
pageSize:30
|
||||
},
|
||||
result:[],
|
||||
totalCount:0
|
||||
},
|
||||
|
||||
}
|
||||
},
|
||||
computed:{
|
||||
...mapGetters({
|
||||
mtStore: 'mtStore',
|
||||
marketsArr: 'marketsArr',
|
||||
})
|
||||
}),
|
||||
statusArr() {
|
||||
let { orderStatus } = this.$store.getters.CMS || {};
|
||||
let arr = [];
|
||||
if (orderStatus) {
|
||||
for (let attr in orderStatus) {
|
||||
if (attr > 0 && attr < 120) {
|
||||
arr.push({
|
||||
status: +attr,
|
||||
name: orderStatus[attr],
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
this.materialInfo.data.statuss = arr.map((item) => item.status);
|
||||
return arr;
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.$store.dispatch("getAllPlate");
|
||||
@@ -562,14 +718,41 @@ export default {
|
||||
let old1 = now - 3600 * 1000 * 24 * 7
|
||||
now = moment(now).format('YYYY-MM-DD')
|
||||
old = moment(old).format('YYYY-MM-DD')
|
||||
old1 = moment(old1).format('YYYY-MM-DD')
|
||||
this.searchForm.timeRange = [now + ' 00:00:00',now + ' 23:59:59']
|
||||
this.incoiceInfo.timeRange = [moment(old1).format('YYYY-MM-DD'),now]
|
||||
this.materialInfo.data.timeRange = [old1,old]
|
||||
this.incoiceInfo.timeRange = [old1,now]
|
||||
await this.queryMtMerchant()
|
||||
|
||||
this.getNewFeatures()
|
||||
this.getMtInvoiceRecord()
|
||||
this.getMaterialInfo()
|
||||
},
|
||||
methods: {
|
||||
// 获取物料信息
|
||||
async getMaterialInfo(){
|
||||
let res = await getMyStoreInfo('1.3.5',true)
|
||||
this.materialInfo.personalStore = res.map(item => { return item.id})
|
||||
// console.log('查询门店个人信息',res,'this.materialInfo',this.materialInfo)
|
||||
let json = {
|
||||
fromDate:this.materialInfo.data.timeRange[0],
|
||||
toDate: this.materialInfo.data.timeRange[1],
|
||||
vendorIDs: [9],
|
||||
storeIDs: [666666],
|
||||
statuss:this.materialInfo.data.statuss.length === 11 ? JSON.stringify([]) : JSON.stringify(this.materialInfo.data.statuss),
|
||||
offset: this.materialInfo.data.offset,
|
||||
pageSize: this.materialInfo.data.pageSize,
|
||||
fromStoreIDs:this.materialInfo.personalStore
|
||||
}
|
||||
getOrdersPost(json,(res) => {
|
||||
if(res.code === '0'){
|
||||
// console.log('获取订单信息',JSON.parse(res.data))
|
||||
// // res.data.
|
||||
this.materialInfo.result = JSON.parse(res.data).data
|
||||
this.materialInfo.totalCount = JSON.parse(res.data).totalCount
|
||||
}
|
||||
})
|
||||
},
|
||||
// 淘宝闪购 查询发票详情
|
||||
queryEbDetail(row){
|
||||
this.uploadIncoice = row
|
||||
|
||||
138
src/pages/system/jxPrinter/index.vue
Normal file
138
src/pages/system/jxPrinter/index.vue
Normal file
@@ -0,0 +1,138 @@
|
||||
<template>
|
||||
<div class="versionControl baselayout">
|
||||
<!-- 京西打印机列表 -->
|
||||
<el-form :model="searchFrom" size="mini" :inline="true" style="display: flex; flex-wrap: wrap">
|
||||
<el-form-item label="打印机编号">
|
||||
<el-input v-model="searchFrom.printNo" placeholder="请输入打印机编号" clearable></el-input>
|
||||
</el-form-item>
|
||||
<!-- 打印机密钥 即是手机号 -->
|
||||
<el-form-item label="手机号">
|
||||
<el-input v-model="searchFrom.printKey" placeholder="请输入手机号" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="打印机状态">
|
||||
<el-select v-model="searchFrom.status" >
|
||||
<el-option label="无" :value="-9"></el-option>
|
||||
<el-option label="关机" :value="-1"></el-option>
|
||||
<el-option label="开机" :value="1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="在线状态">
|
||||
<el-select v-model="searchFrom.isOnline" >
|
||||
<el-option label="无" :value="-9"></el-option>
|
||||
<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" @click="getJxPrinterList" >查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table :data="tableData" empty="暂无数据~~~" stripe >
|
||||
<el-table-column label="门店名" prop="name" align="center"></el-table-column>
|
||||
<el-table-column label="打印机编号" prop="print_no" align="center"></el-table-column>
|
||||
<el-table-column label="打印机密钥" prop="print_key" align="center"></el-table-column>
|
||||
<el-table-column label="打印机状态" prop="status" align="center">
|
||||
<div slot-scope="scope">
|
||||
{{ scope.row.status === -1 ? '关机' : scope.row.status === 1 ? '开机' : '未知' }}
|
||||
</div>
|
||||
</el-table-column>
|
||||
<el-table-column label="打印机在线状态" prop="is_online" align="center">
|
||||
<div slot-scope="scope">
|
||||
{{ scope.row.is_online === -1 ? '掉线' : scope.row.is_online === 0 ? '未连接' : scope.row.is_online === 1 ? '连接' : '未知' }}
|
||||
</div>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" prop="createdAt" align="center">
|
||||
<div slot-scope="scope">
|
||||
<div>{{ scope.row.createdAt | timeToLLL }}</div>
|
||||
</div>
|
||||
</el-table-column>
|
||||
<el-table-column label="离线次数" prop="offlineCount" align="center"></el-table-column>
|
||||
<el-table-column label="操作人" prop="lastOperator" align="center"></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<div class="page">
|
||||
<el-pagination @size-change="sizeChange" @current-change="handleCurrentChange" :page-sizes="[15, 30, 50]"
|
||||
:page-size.sync="searchFrom.size" layout="total, sizes, prev, pager, next" :current-page="searchFrom.page"
|
||||
:total="totalCount">
|
||||
</el-pagination>
|
||||
</div>
|
||||
<!-- 分页 -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { jxPrinterList } from "@/apis/store.js";
|
||||
export default {
|
||||
data(){
|
||||
return {
|
||||
searchFrom:{
|
||||
page:0,
|
||||
size:15,
|
||||
printNo:"",
|
||||
printKey:"",
|
||||
status:-9, // -1关机/1开机
|
||||
isOnline:-9 // 1掉线/0未连接/1链接
|
||||
},
|
||||
tableData:[],
|
||||
totalCount:0
|
||||
}
|
||||
},
|
||||
created(){
|
||||
this.getJxPrinterList()
|
||||
},
|
||||
methods:{
|
||||
// 每页个数改变
|
||||
sizeChange(val) {
|
||||
this.searchFrom.size = val
|
||||
console.log(this.searchFrom,'每页个数改变',val)
|
||||
this.getJxPrinterList()
|
||||
// this.$nextTick(() => {
|
||||
// // this.getOrders();
|
||||
// // this.currentODGoodList.index !== -1
|
||||
// });
|
||||
},
|
||||
// 点击页码
|
||||
handleCurrentChange(val) {
|
||||
this.searchFrom.page = val -1;
|
||||
console.log(this.searchFrom,'点击页码',val)
|
||||
this.getJxPrinterList()
|
||||
// this.currentODGoodList.index = -1
|
||||
// this.searchForm.offset = (val - 1) * this.searchForm.pageSize;
|
||||
// this.getOrders(() => {
|
||||
// document.querySelector(".el-table__body-wrapper").scrollTop = 0;
|
||||
// });
|
||||
},
|
||||
async getJxPrinterList(){
|
||||
// let form = new FormData()
|
||||
// form.append('page',this.modelData.page)
|
||||
// form.append('size',this.modelData.size)
|
||||
|
||||
let obj = {
|
||||
page:this.searchFrom.page,
|
||||
size:this.searchFrom.size,
|
||||
status: this.searchFrom.status,
|
||||
isOnline:this.searchFrom.isOnline
|
||||
}
|
||||
if(this.searchFrom.printNo) obj['printNo'] = this.searchFrom.printNo
|
||||
if(this.searchFrom.printKey) obj['printKey'] = this.searchFrom.printKey
|
||||
// if(this.searchFrom.status !== -9) obj['status'] = this.searchFrom.status
|
||||
// if(this.searchFrom.isOnline !== -9) obj['isOnline'] = this.searchFrom.isOnline
|
||||
console.log(this.searchFrom,'查看打印机参数信息',obj)
|
||||
let res = await jxPrinterList(obj)
|
||||
this.tableData = res.list
|
||||
this.totalCount = res.count
|
||||
console.log('京西打印机列表',res)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="css" scoped>
|
||||
.page {
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -48,6 +48,7 @@ const MessageDetail = () => import('@/components/storemanager/message-detail')
|
||||
const TaskManager = () => import('@/pages/system/taskManager') // 系统管理-任务查询
|
||||
const SystemConfig = () => import('@/pages/system/systemConfig') // 系统管理-系统配置
|
||||
const VersionControl = () => import('@/pages/system/versionControl/index') // 系统管理-版本控制
|
||||
const JxPrinter = () => import('@/pages/system/jxPrinter/index.vue') // 系统管理-京西云打印机
|
||||
const SystemLog = () => import('@/pages/system/system-log') // 系统管理-系统日志
|
||||
const CityConfig = () => import('@/pages/system/cityConfig') // 系统管理-城市管理
|
||||
const SystemTool = () => import('@/components/system/systemTool/system-tool.vue') // 系统管理-系统工具
|
||||
@@ -839,6 +840,14 @@ const router = new Router({
|
||||
title: '版本控制'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'jxPrinter',
|
||||
name: 'JxPrinter',
|
||||
component: JxPrinter,
|
||||
meta: {
|
||||
title: '京西打印机'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'cityconfig',
|
||||
name: 'CityConfig',
|
||||
|
||||
Reference in New Issue
Block a user