This commit is contained in:
wtq
2025-12-26 09:03:32 +08:00
parent cc96632538
commit 79455b6e22
9 changed files with 735 additions and 28 deletions

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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: [],

View File

@@ -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">

View 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>

View File

@@ -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

View 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>

View File

@@ -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',