Commit bbe739e4 authored by xiangzj's avatar xiangzj

首页资讯模块

parent bb5a4fc1
...@@ -747,6 +747,25 @@ ...@@ -747,6 +747,25 @@
} }
} }
}, },
{
"path": "pages/market-order/market-order",
"style": {
"app-plus": {
"titleNView": {
"titleAlign": "left",
"titleColor": "#333",
"titleSize": "17px",
"backgroundColor": "#fff",
"titleText": "市场秩序",
"autoBackButton": true,
"splitLine": {
"color": "#ccc",
"height": "0.5px"
}
}
}
}
},
{ {
"path": "pages/account-inquiry/account-inquiry", "path": "pages/account-inquiry/account-inquiry",
"style": { "style": {
...@@ -780,6 +799,38 @@ ...@@ -780,6 +799,38 @@
// "enablePullDownRefresh": true // "enablePullDownRefresh": true
} }
}, },
{
"path": "pages/storage-list/storage-list",
"style": {
"app-plus": {
"titleNView": {
"titleAlign": "left",
"titleColor": "#333",
"titleSize": "17px",
"backgroundColor": "transparent",
"titleText": "扫码出入库查询",
"autoBackButton": true
},
"bounce": "none"
}
}
},
{
"path": "pages/information/information",
"style": {
"app-plus": {
"titleNView": {
"titleAlign": "left",
"titleColor": "#333",
"titleSize": "17px",
"backgroundColor": "transparent",
"titleText": "资讯",
"autoBackButton": true
},
"bounce": "none"
}
}
},
{ {
"path": "pages/diy-wine/diy-wine", "path": "pages/diy-wine/diy-wine",
"style": { "style": {
......
...@@ -538,7 +538,7 @@ ...@@ -538,7 +538,7 @@
}, },
selectClueTerminal() { selectClueTerminal() {
uni.navigateTo({ uni.navigateTo({
url: `/pages/select-clue-terminal/select-clue-terminal?keywords=${this.condition.terminalName}` url: `/pages/select-clue-terminal/select-clue-terminal?keywords=${this.condition.provinceName||this.condition.terminalName}`
}); });
}, },
selectSalesAreaAccountInfo() { selectSalesAreaAccountInfo() {
......
<template> <template>
<view class="home-page"> <view class="home-page" :style='scrollHeight'>
<!-- <view class="status_bar"> <!-- <view class="status_bar">
</view> --> </view> -->
<view class="banner"> <view class="banner">
...@@ -20,34 +20,34 @@ ...@@ -20,34 +20,34 @@
</view> </view>
<view class="content"> <view class="content">
<view class="todo-box block"> <view class="todo-box block">
<text class="title">市场秩序</text> <text class="title">常用查询</text>
<view class="amount-block"> <view class="amount-block">
<view class="order-amount" @click="entryHandle('breakwords-clue')"> <view class="order-amount" @click="entryHandle('purchase-plan')">
<view class="order-amount--wrapper"> <view class="order-amount--wrapper">
<image class="entry-icon" src="@/static/image/home_report@3x.png" mode="aspectFit"> <image class="entry-icon" src="@/static/image/home_report@3x.png" mode="aspectFit">
</image> </image>
<text class="order-amount--num">提报线索</text> <text class="order-amount--num">销售计划</text>
</view> </view>
</view> </view>
<view class="order-amount" @click="entryHandle('breakwords-market')"> <view class="order-amount" @click="entryHandle('my-order')">
<view class="order-amount--wrapper"> <view class="order-amount--wrapper">
<image class="entry-icon" src="@/static/image/home_marketclue@3x.png" mode="aspectFit"> <image class="entry-icon" src="@/static/image/home_marketclue@3x.png" mode="aspectFit">
</image> </image>
<text class="order-amount--num">市场线索</text> <text class="order-amount--num">销售订单</text>
</view> </view>
</view> </view>
<view class="order-amount" @click="entryHandle('breakwords-mission')"> <view class="order-amount" @click="entryHandle('billing-invoice')">
<view class="order-amount--wrapper"> <view class="order-amount--wrapper">
<image class="entry-icon" src="@/static/image/home_breakmission@3x.png" mode="aspectFit"> <image class="entry-icon" src="@/static/image/home_breakmission@3x.png" mode="aspectFit">
</image> </image>
<text class="order-amount--num">违约任务</text> <text class="order-amount--num">账票管理</text>
</view> </view>
</view> </view>
<view class="order-amount" @click="entryHandle('breakwords-handle')"> <view class="order-amount" @click="entryHandle('ticket-order')">
<view class="order-amount--wrapper"> <view class="order-amount--wrapper">
<image class="entry-icon" src="@/static/image/home_breakrule@3x.png" mode="aspectFit"> <image class="entry-icon" src="@/static/image/home_breakrule@3x.png" mode="aspectFit">
</image> </image>
<text class="order-amount--num">违约处理</text> <text class="order-amount--num">制票通知单</text>
</view> </view>
</view> </view>
</view> </view>
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
</view> </view>
</view> </view>
</view> --> </view> -->
<view class="charts-box block"> <!-- <view class="charts-box block">
<view class="title"> <view class="title">
<text class="title-text">订单执行情况</text> <text class="title-text">订单执行情况</text>
<view class="summary"> <view class="summary">
...@@ -88,6 +88,80 @@ ...@@ -88,6 +88,80 @@
</view> </view>
<qiun-data-charts type="column" :chartData="chartData" :opts="uchartOpts" :ontouch="true" <qiun-data-charts type="column" :chartData="chartData" :opts="uchartOpts" :ontouch="true"
background="none" /> background="none" />
</view> -->
</view>
<view class="check-block">
<text class="check-date">选择产品:</text>
<view class="check-date-des uni-list picker-year">
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<picker class="picker-block" @change="bindPickerTypesChange" range-key='name'
mode="selector" :value="typesIndex" :range="selectedSalePlanTypes">
<view class="uni-input">
<text class="uni-input-text">{{selectedSalePlanTypes[typesIndex] && selectedSalePlanTypes[typesIndex].name || '请选择'}}</text>
</view>
</picker>
</view>
</view>
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
</view>
</view>
<view class="uni-margin-wrap">
<swiper class="swiper" circular indicator-dots="true" autoplay="true" interval="4000000">
<swiper-item class="swiper-item">
<view class="swiper-title">
<text class="item-block__label">出入库合规累积量</text>
<text class="item-block__label item-more" @click="entryHandle('storage-list')">查看更多 ></text>
</view>
<view class="text-block-box">
<view class="text-block text-block-last">
<text class="middle-date">{{scanDetail.scanin || 0}}</text>
<text class="middle-date-des">入库量</text>
</view>
<view class="text-block text-block-last">
<text class="middle-date">{{scanDetail.scanout || 0}}</text>
<text class="middle-date-des">出库量</text>
</view>
</view>
</swiper-item>
<swiper-item class="swiper-item">
<view class="swiper-title">
<text class="item-block__label">下游合规累积量</text>
</view>
<view class="text-block-box">
<view class="text-block text-block-last">
<text class="middle-date">{{scanDetail.scanterminal || 0}}</text>
<text class="middle-date-des">终端入库量</text>
</view>
<view class="text-block text-block-last">
<text class="middle-date">{{scanDetail.scanconsumer || 0}}</text>
<text class="middle-date-des">消费者扫码量</text>
</view>
</view>
</swiper-item>
<swiper-item class="swiper-item" v-if="!selectedSalePlanTypes[typesIndex].id">
<view class="swiper-title">
<text class="item-block__label">经销商分利</text>
</view>
<view class="text-block-box">
<view class="text-block text-block-last">
<text class="middle-date">{{pointBalance}}</text>
<text class="middle-date-des">剩余点数</text>
</view>
<view class="text-block text-block-last">
<text class="middle-date">{{pointPositive}}</text>
<text class="middle-date-des">总点数</text>
</view>
</view>
</swiper-item>
</swiper>
</view>
<view class="uni-margin-wrap">
<view class="swiper-title">
<text class="item-block__label">资讯</text>
<text class="item-block__label item-more" @click="entryHandle('information')">查看更多 ></text>
</view> </view>
</view> </view>
</view> </view>
...@@ -100,7 +174,12 @@ ...@@ -100,7 +174,12 @@
import { import {
apiGetHomeStatistics apiGetHomeStatistics
} from '@/servers/common.js' } from '@/servers/common.js'
import {
pointsAndCashSummary,
queryUnique,
queryProducts
} from '@/servers/breakwords.js'
import timeFormat from '@/uview-ui/libs/function/timeFormat.js'
export default { export default {
data() { data() {
return { return {
...@@ -170,7 +249,15 @@ ...@@ -170,7 +249,15 @@
// }, // },
// ] // ]
}, },
statisticsData: [] statisticsData: [],
selectedSalePlanTypes: [{
id: "",
name: "全部产品"
}],
typesIndex: 0,
scanDetail: {},
pointBalance: 0,
pointPositive: 0,
} }
}, },
computed: { computed: {
...@@ -190,12 +277,75 @@ ...@@ -190,12 +277,75 @@
this.statisticsData.forEach(item => num += item.INFO.PRICE_OD) this.statisticsData.forEach(item => num += item.INFO.PRICE_OD)
return num / 10000 return num / 10000
}, },
...mapState(['sysinfo', 'userInfo']) ...mapState(['sysinfo', 'userInfo']),
scrollHeight() {
return {
'height': `${this.sysinfo.safeArea.height - 15}px`
}
}
}, },
created() { created() {
this.getHomeStatistics() this.getHomeStatistics()
this.queryProducts()
this.queryUnique()
this.pointsAndCashSummary()
}, },
methods: { methods: {
async pointsAndCashSummary() {
try{
const res = await pointsAndCashSummary({organizationId: this.userInfo.code})
this.pointBalance = res.data.pointBalance
this.pointPositive = res.data.pointPositive
}catch(e){
//TODO handle the exception
}
},
async queryUnique() {
try{
const productId = this.selectedSalePlanTypes[this.typesIndex].id
const params = {
distributerId: this.userInfo.code,
from: '1990-01-01',
to: timeFormat(new Date(), 'yyyy-mm-dd'),
}
if(productId){
params.productId = productId
}
const res = await queryUnique(params)
this.scanDetail = {
scanin: res.data.in,
scanout: res.data.out,
scanconsumer: res.data.customerScan,
scanterminal: res.data.terminalIn,
}
}catch(e){
//TODO handle the exception
}
},
async queryProducts() {
try{
const res = await queryProducts({
organizationId: this.userInfo.code
})
this.selectedSalePlanTypes = [
{
id: "",
name: "全部产品"
},
...res.data
]
}catch(e){
//TODO handle the exception
}
},
bindPickerTypesChange(e) {
this.typesIndex = e.detail.value
this.queryUnique()
if(!this.typesIndex){
this.pointsAndCashSummary()
}
},
async getHomeStatistics() { async getHomeStatistics() {
const res = await apiGetHomeStatistics({ const res = await apiGetHomeStatistics({
PARTNER: this.userInfo.code PARTNER: this.userInfo.code
...@@ -252,12 +402,19 @@ ...@@ -252,12 +402,19 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
/* #ifndef APP-PLUS */
page {
width: 100%;
min-height: 100%;
background: #fff;
}
/* #endif */
.home-page { .home-page {
display: flex; flex: 1;
flex-direction: column; flex-direction: column;
box-sizing: border-box; box-sizing: border-box;
background-color: #fff; background: #f0f4f5;
padding-bottom: 100rpx;
} }
.status_bar { .status_bar {
...@@ -267,7 +424,7 @@ ...@@ -267,7 +424,7 @@
.banner { .banner {
position: relative; position: relative;
width: 100%; width: 100%;
height: 480rpx; height: 410rpx;
overflow: hidden; overflow: hidden;
} }
...@@ -340,7 +497,6 @@ ...@@ -340,7 +497,6 @@
box-sizing: border-box; box-sizing: border-box;
background: #ffffff; background: #ffffff;
border-radius: 32rpx 32rpx 0px 0px; border-radius: 32rpx 32rpx 0px 0px;
margin-top: -110rpx;
z-index: 10; z-index: 10;
} }
...@@ -417,7 +573,7 @@ ...@@ -417,7 +573,7 @@
} }
.todo-box { .todo-box {
margin-bottom: 64rpx; margin-bottom: 10rpx;
} }
.cell-list { .cell-list {
...@@ -484,4 +640,124 @@ ...@@ -484,4 +640,124 @@
} }
} }
} }
.uni-margin-wrap {
width: 100%;
padding: 20rpx;
margin-bottom: 20rpx;
background: #fff;
// box-shadow: 0 2px 4px rgba(0,0,0,0.1);
// border-radius: 20rpx;
}
.swiper {
width: 100%;
height: 200rpx;
}
.swiper-item{
flex: 1;
display: flex;
flex-direction: column;
margin-bottom: 32rpx;
}
.item-block__label {
flex: 1;
text-align: left;
font-size: 28rpx;
color: #333;
font-weight: 500;
overflow: hidden;
text-overflow: ellipsis;
}
.text-block-box {
display: flex;
justify-content: space-between;
padding: 40rpx 0;
}
.text-block {
flex: 1;
flex-direction: column;
margin-bottom: 32rpx;
display: flex;
flex-direction: column;
}
.text-block-last {
margin-bottom: 0;
}
.middle-date {
font-size: 28rpx;
color: $text-base-color;
margin-bottom: 10rpx;
text-align: center;
}
.middle-date-right {
display: flex;
align-items: center;
}
.middle-date-des {
font-size: 24rpx;
color: #999;
text-align: center;
}
.check-block {
overflow: hidden;
padding: 20rpx;
display: flex;
flex-direction: row;
margin-top: 20rpx;
margin-bottom: 4rpx;
background: #fff;
}
.check-date {
flex: 2;
font-size: 28rpx;
line-height: normal;
color: #333;
align-items: center;
}
.check-date-des {
flex: 3;
font-size: 28rpx;
line-height: normal;
overflow: hidden;
text-overflow: ellipsis;
color: #888;
justify-content: space-between;
display: flex;
}
.picker-year {
position: relative;
border-radius: 4px;
line-height: normal;
}
.uni-input-text {
font-size: 14px;
color: #888;
}
.picker-block {
flex: 1;
}
.uni-list-cell {
flex: 1;
}
.uni-list-cell-db {
flex: 1;
}
.icon-arrow {
width: 18rpx;
height: 32rpx;
}
.swiper-title{
justify-content: space-around;
display: flex;
}
.item-more{
text-align: right;
color: #999;
font-size: 24rpx;
}
</style> </style>
<template>
<view class="lists">
<view class="status_bar" :style="navHeight"></view>
<view class="header-bg">
<image class="header-bg-img" src="@/static/image/nav_bg@3x.png" mode="scaleToFill"></image>
</view>
<view class="main">
<scroll-view :style='scrollHeight' class="scroll-area" scroll-y="true" lower-threshold='150'
@scrolltolower='scrolltolower'>
<list class="scroll-area view" loadmoreoffset='100' show-scrollbar='false' @loadmore="scrolltolower">
<cell class="list-cell" v-for="(item,index) in lists" :key='index'>
<view class="middle view planout-block-item">
<text class="middle-date-des middle-date-des-select">{{item.IMG_URL}}</text>
<text class="middle-date-des middle-date-des-select">{{item.TITLE}}</text>
<text class="middle-date-des middle-date-des-select">{{item.CONTENT}}</text>
<text class="middle-date-des middle-date-des-select">{{item.DATE}}</text>
</view>
<view class="empty-block"></view>
</cell>
</list>
</scroll-view>
</view>
</view>
</template>
<script>
import {
mapState
} from 'vuex'
import {
queryNewsListSet
} from '@/servers/breakwords.js'
import timeFormat from '@/uview-ui/libs/function/timeFormat.js'
export default {
data() {
return {
loadingText: '加载中...',
refreshing: false,
isOpened: 'none',
condition: {
start: '',
end: ''
},
lists: [],
page: {
"PAGE": "1",
"PAGESIZE": "10",
},
toPageParams: {
page: '',
mode: '',
index: 0,
head: {}
}
}
},
computed: {
...mapState(['sysinfo', 'userInfo']),
navHeight() {
return {
'height': `${this.sysinfo.safeArea.top + 44}px`
}
},
mainHeight() {
return {
'height': `${this.sysinfo.safeArea.height}px`,
}
},
scrollHeight() {
return {
'height': `${this.sysinfo.safeArea.height - 44}px`
}
}
},
onPullDownRefresh() {
console.log('refresh');
this.reset()
this.getMarketSupportFee(true)
setTimeout(function() {
uni.stopPullDownRefresh();
}, 600);
},
created() {
this.condition.start = timeFormat(new Date(), 'yyyy-mm-dd')
this.condition.end = timeFormat(new Date(), 'yyyy-mm-dd')
this.reset()
this.getMarketSupportFee(true);
},
methods: {
async getMarketSupportFee() {
const params = {
'$filter':"PARTNER eq '"+this.userInfo.code+"'",
'$expand':"NAVND",
'$top':30,
'$skip':0,
}
const res = await queryNewsListSet(params)
this.lists = res.d.results
},
reset() {
this.loadParams = {
total: 0,
totalPage: 1,
isDone: false,
isRefresh: false
}
this.page.PAGE = 1
this.lists = []
this.loadingText = '加载中'
},
scrolltolower() {
console.log('onReachBottom');
if (this.page.PAGE < this.loadParams.totalPage) {
this.page.PAGE++
this.getMarketSupportFee()
} else {
this.loadParams.isDone = true
this.loadingText = '-- 到底了 --'
}
},
search() {
this.reset()
this.getMarketSupportFee(true)
},
bindPickerYearStartChange(e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.condition.start = e.detail.value
},
bindPickerYearEndChange(e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.condition.end = e.detail.value
},
}
}
</script>
<style lang="scss" scoped>
.view {
flex-direction: column;
}
.header-bg {
height: 284rpx;
margin-top: -88rpx;
}
.header-bg-img {
width: 750rpx;
}
.lists {
position: relative;
flex-direction: column;
overflow-y: scroll;
background: #f0f4f5;
overflow-x: hidden;
}
.main {
position: relative;
flex-direction: column;
margin-top: -164rpx;
padding: 0 16rpx;
}
.middle {
background-color: #fff;
border-radius: 16rpx;
padding: 32rpx 64rpx 32rpx 48rpx;
}
.text-block {
display: flex;
overflow: hidden;
height: 96rpx;
margin-bottom: 14rpx;
border-bottom: 1px solid #f4f5f6;
}
.text-block-last {
margin-bottom: 0;
border-bottom: 0;
}
.middle-date {
flex: 2;
font-size: 28rpx;
line-height: 96rpx;
color: #333;
margin-bottom: 8rpx;
}
.middle-date-des {
flex: 3;
font-size: 28rpx;
line-height: 96rpx;
height: 96rpx;
overflow: hidden;
text-overflow: ellipsis;
color: #888;
}
.middle-date-select {
color: #888;
}
.middle-date-des-select {
color: #333;
}
.picker-year {
position: relative;
border-radius: 4px;
align-items: center;
}
.uni-input {
font-size: 12px;
color: #888;
}
.uni-list-cell {
flex: 1;
}
.uni-list-cell-db {
flex: 1;
}
.picker-block {
flex: 1;
}
.icon-arrow {
position: absolute;
right: 0;
top: 16px;
width: 12rpx;
height: 20rpx;
z-index: 10;
}
.planout-block-lists {
display: flex;
flex-direction: column;
background: #f0f4f5;
}
.list-cell {
padding-bottom: 26rpx;
}
.lists-wrapper {
display: flex;
flex-direction: column;
}
.planout-block {
display: flex;
justify-content: space-between;
height: 92rpx;
margin-top: 64rpx;
margin-bottom: 48rpx;
padding: 0 24rpx;
}
.planout-block-item {
flex: 1;
}
.btn {
flex: 1;
height: 92rpx;
background: $wly-primary-color;
border-radius: 46rpx;
}
.btn-text {
color: #fff;
font-size: 34rpx;
}
.empty-block {
height: 26rpx;
background: #f0f4f5;
}
.scroll-area {
overflow-y: scroll;
}
</style>
<template>
<view class="order view">
<view class="status_bar" :style="navHeight"></view>
<view class="listview">
<view class="cell-list">
<view class="cell-list-block" @click="goOrder('breakwords-clue')">
<image class="icon-address" src="@/static/image/home_report@3x.png" mode="aspectFit"></image>
<view class="cell-list-block__content">
<text class="cell-list-block__title">提报线索</text>
<!-- <text class="cell-list-block__desc">Account inquiry</text> -->
</view>
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
</view>
<view class="cell-list-block" @click="goOrder('breakwords-market')">
<image class="icon-address" src="@/static/image/home_marketclue@3x.png" mode="aspectFit"></image>
<view class="cell-list-block__content">
<text class="cell-list-block__title">市场线索</text>
<!-- <text class="cell-list-block__desc">Market support fee inquiry</text> -->
</view>
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
</view>
<view class="cell-list-block" @click="goOrder('breakwords-mission')">
<image class="icon-address" src="@/static/image/home_breakmission@3x.png" mode="aspectFit"></image>
<view class="cell-list-block__content">
<text class="cell-list-block__title">违约任务</text>
<!-- <text class="cell-list-block__desc">Market support fee inquiry</text> -->
</view>
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
</view>
<view class="cell-list-block" @click="goOrder('breakwords-handle')">
<image class="icon-address" src="@/static/image/home_breakrule@3x.png" mode="aspectFit"></image>
<view class="cell-list-block__content">
<text class="cell-list-block__title">违约处理</text>
<!-- <text class="cell-list-block__desc">Market support fee inquiry</text> -->
</view>
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
</view>
</view>
</view>
</view>
</template>
<script>
import {
mapState
} from 'vuex'
export default {
data() {
return {
}
},
computed: {
navHeight() {
return {
'height': `${this.sysinfo.safeArea.top + 44}px`
}
},
...mapState(['sysinfo'])
},
methods: {
goOrder(type) {
uni.navigateTo({
url: `/pages/${type}/${type}`
});
}
}
}
</script>
<style lang="scss" scoped>
.view {
flex-direction: column;
}
/* #ifndef APP-PLUS */
page {
width: 100%;
min-height: 100%;
display: flex;
background: #fff;
}
.status_bar {
height: var(--status-bar-height);
}
/* #endif */
.order {
flex: 1;
background: #fff;
padding: 0 32rpx;
}
.listview {
flex: 1;
flex-direction: column;
padding-top: 64rpx;
}
.cell-list {
flex-direction: column;
}
.icon-address {
width: 88rpx;
height: 88rpx;
margin-right: 24rpx;
margin-top: 20rpx;
}
.cell-list-block__content {
display: flex;
flex: 1;
flex-direction: column;
}
.cell-list-block__title {
color: #333;
font-size: 28rpx;
font-weight: 500;
flex: 1;
align-items: center;
margin-bottom: 4rpx;
}
.cell-list-block__desc {
color: #acacac;
font-size: 12px;
}
.icon-arrow {
width: 12rpx;
height: 20rpx;
}
.cell-list-block {
display: flex;
height: 77px;
margin-bottom: 24rpx;
background: #f8f9fa;
border-radius: 8px;
padding: 0 36rpx 0 16rpx;
align-items: center;
}
</style>
...@@ -137,7 +137,7 @@ ...@@ -137,7 +137,7 @@
'top': `${this.sysinfo.safeArea.top + 120}px` 'top': `${this.sysinfo.safeArea.top + 120}px`
} }
}, },
...mapState(['sysinfo', 'userInfo']) ...mapState(['sysinfo', 'userInfo', 'userBpData'])
}, },
onNavigationBarButtonTap(e) { onNavigationBarButtonTap(e) {
console.log('onNavigationBarButtonTap:', e); console.log('onNavigationBarButtonTap:', e);
...@@ -153,6 +153,17 @@ ...@@ -153,6 +153,17 @@
this.loadData(true) this.loadData(true)
// console.log('2222', timeRangeFormat('now')) // console.log('2222', timeRangeFormat('now'))
}, },
onReady() {
// const webView = this.$mp.page.$getAppWebview
console.log()
if(this.userBpData.HIGH_ROLE === "FALSE"){
const webView = this.$scope.$getAppWebview();
webView.setTitleNViewButtonStyle(0, {
"width": 0,
'fontSize': 0
});
}
},
methods: { methods: {
loadData(refresh) { loadData(refresh) {
if (this.isLoading) { if (this.isLoading) {
......
<template>
<view class="lists">
<view class="status_bar" :style="navHeight"></view>
<view class="header-bg">
<image class="header-bg-img" src="@/static/image/nav_bg@3x.png" mode="scaleToFill"></image>
</view>
<view class="main">
<view class="middle view">
<view class="text-block">
<text class="middle-date">开始日期</text>
<view class="middle-date-des uni-list picker-year">
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<picker class="picker-block" @change="bindPickerYearStartChange" mode="date"
:value="condition.start" fields='day'>
<text class="uni-input">{{condition.start}}</text>
</picker>
</view>
</view>
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
</view>
</view>
<view class="text-block text-block-last">
<text class="middle-date">截止日期</text>
<view class="middle-date-des uni-list picker-year">
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<picker class="picker-block" @change="bindPickerYearEndChange" mode="date"
:value="condition.end" fields='day'>
<text class="uni-input">{{condition.end}}</text>
</picker>
</view>
</view>
<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
</view>
</view>
</view>
<view class="planout-block">
<button class="btn" type="default" @tap="search">
<text class="btn-text">查询</text>
</button>
</view>
<scroll-view :style='scrollHeight' class="scroll-area" scroll-y="true" lower-threshold='150'
@scrolltolower='scrolltolower'>
<list class="scroll-area view" loadmoreoffset='100' show-scrollbar='false' @loadmore="scrolltolower">
<cell class="list-cell" v-for="(item,index) in lists" :key='index'>
<!-- <scroll-view class="scroll-area" :style='scrollHeight' scroll-y="true" lower-threshold='150'
@scrolltolower='scrolltolower'> -->
<view class="middle view planout-block-item">
<view class="text-block">
<text class="middle-date middle-date-select">入库量</text>
<text class="middle-date-des middle-date-des-select">{{item.in}}件</text>
</view>
<view class="text-block">
<text class="middle-date middle-date-select">出库量</text>
<text class="middle-date-des middle-date-des-select">{{item.out}}件</text>
</view>
<view class="text-block text-block-last">
<text class="middle-date middle-date-select">违约出库量</text>
<text class="middle-date-des middle-date-des-select">{{item.outviolation}}件</text>
</view>
</view>
<view class="empty-block"></view>
<!-- </scroll-view> -->
</cell>
</list>
<no-data class="no-data" v-if="lists.length===0"></no-data>
</scroll-view>
</view>
</view>
</template>
<script>
import {
mapState
} from 'vuex'
import {
queryScanDistributer
} from '@/servers/breakwords.js'
import timeFormat from '@/uview-ui/libs/function/timeFormat.js'
import noData from '@/components/nodata.nvue';
export default {
components: {
noData
},
data() {
return {
loadingText: '加载中...',
refreshing: false,
isOpened: 'none',
condition: {
start: '',
end: ''
},
lists: [],
page: {
"PAGE": "1",
"PAGESIZE": "10",
},
toPageParams: {
page: '',
mode: '',
index: 0,
head: {}
}
}
},
computed: {
...mapState(['sysinfo', 'userInfo']),
navHeight() {
return {
'height': `${this.sysinfo.safeArea.top + 44}px`
}
},
mainHeight() {
return {
'height': `${this.sysinfo.safeArea.height}px`,
}
},
scrollHeight() {
return {
'height': `${this.sysinfo.safeArea.height - 265 - 44}px`
}
}
},
onPullDownRefresh() {
console.log('refresh');
this.reset()
this.getMarketSupportFee(true)
setTimeout(function() {
uni.stopPullDownRefresh();
}, 600);
},
created() {
this.condition.start = timeFormat(new Date(), 'yyyy-mm-dd')
this.condition.end = timeFormat(new Date(), 'yyyy-mm-dd')
this.reset()
this.getMarketSupportFee(true);
},
methods: {
async getMarketSupportFee() {
const params = {
distributerId: '4000651200' || this.userInfo.code,
from: this.condition.start,
to: this.condition.end,
}
const res = await queryScanDistributer(params)
this.lists = res.data
},
reset() {
this.loadParams = {
total: 0,
totalPage: 1,
isDone: false,
isRefresh: false
}
this.page.PAGE = 1
this.lists = []
this.loadingText = '加载中'
},
scrolltolower() {
console.log('onReachBottom');
if (this.page.PAGE < this.loadParams.totalPage) {
this.page.PAGE++
this.getMarketSupportFee()
} else {
this.loadParams.isDone = true
this.loadingText = '-- 到底了 --'
}
},
search() {
this.reset()
this.getMarketSupportFee(true)
},
bindPickerYearStartChange(e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.condition.start = e.detail.value
},
bindPickerYearEndChange(e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.condition.end = e.detail.value
},
}
}
</script>
<style lang="scss" scoped>
.view {
flex-direction: column;
}
.header-bg {
height: 284rpx;
margin-top: -88rpx;
}
.header-bg-img {
width: 750rpx;
}
.lists {
position: relative;
flex-direction: column;
overflow-y: scroll;
background: #f0f4f5;
overflow-x: hidden;
}
.main {
position: relative;
flex-direction: column;
margin-top: -164rpx;
padding: 0 16rpx;
}
.middle {
background-color: #fff;
border-radius: 16rpx;
padding: 32rpx 64rpx 32rpx 48rpx;
}
.text-block {
display: flex;
overflow: hidden;
height: 96rpx;
margin-bottom: 14rpx;
border-bottom: 1px solid #f4f5f6;
}
.text-block-last {
margin-bottom: 0;
border-bottom: 0;
}
.middle-date {
flex: 2;
font-size: 28rpx;
line-height: 96rpx;
color: #333;
margin-bottom: 8rpx;
}
.middle-date-des {
flex: 3;
font-size: 28rpx;
line-height: 96rpx;
height: 96rpx;
overflow: hidden;
text-overflow: ellipsis;
color: #888;
}
.middle-date-select {
color: #888;
}
.middle-date-des-select {
color: #333;
}
.picker-year {
position: relative;
border-radius: 4px;
align-items: center;
}
.uni-input {
font-size: 12px;
color: #888;
}
.uni-list-cell {
flex: 1;
}
.uni-list-cell-db {
flex: 1;
}
.picker-block {
flex: 1;
}
.icon-arrow {
position: absolute;
right: 0;
top: 16px;
width: 12rpx;
height: 20rpx;
z-index: 10;
}
.planout-block-lists {
display: flex;
flex-direction: column;
background: #f0f4f5;
}
.list-cell {
padding-bottom: 26rpx;
}
.lists-wrapper {
display: flex;
flex-direction: column;
}
.planout-block {
display: flex;
justify-content: space-between;
height: 92rpx;
margin-top: 64rpx;
margin-bottom: 48rpx;
padding: 0 24rpx;
}
.planout-block-item {
flex: 1;
}
.btn {
flex: 1;
height: 92rpx;
background: $wly-primary-color;
border-radius: 46rpx;
}
.btn-text {
color: #fff;
font-size: 34rpx;
}
.empty-block {
height: 26rpx;
background: #f0f4f5;
}
.scroll-area {
overflow-y: scroll;
}
.no-data {
flex: 1;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
z-index: 10;
}
</style>
...@@ -29,12 +29,20 @@ ...@@ -29,12 +29,20 @@
</view> </view>
<text class="entry-bill-text">销售计划</text> <text class="entry-bill-text">销售计划</text>
</view> </view>
<view class="entry-block" @click="goPage('my-order')">
<view class="entry-bill">
<image class="entry-bill-icon" src="@/static/image/uc_company@3x.png" mode=""></image>
</view>
<text class="entry-bill-text">销售订单</text>
</view>
<view class="entry-block" @click="goPage('produce-order')"> <view class="entry-block" @click="goPage('billing-invoice')">
<view class="entry-bill"> <view class="entry-bill">
<image class="entry-bill-icon" src="@/static/image/usercenter_produceorder@3x.png" mode=""></image> <image class="entry-bill-icon entry-bill-icon_billing"
src="@/static/image/usercenter_billinginvoice@3x.png" mode="">
</image>
</view> </view>
<text class="entry-bill-text">生产计划</text> <text class="entry-bill-text">账票管理</text>
</view> </view>
<view class="entry-block" @click="goPage('ticket-order')"> <view class="entry-block" @click="goPage('ticket-order')">
...@@ -42,7 +50,14 @@ ...@@ -42,7 +50,14 @@
<image class="entry-bill-icon entry-bill-icon_billing" <image class="entry-bill-icon entry-bill-icon_billing"
src="@/static/image/usercenter_ticketorder@3x.png" mode=""></image> src="@/static/image/usercenter_ticketorder@3x.png" mode=""></image>
</view> </view>
<text class="entry-bill-text">开票查询</text> <text class="entry-bill-text">制票通知单</text>
</view>
<view class="entry-block" @click="goPage('produce-order')">
<view class="entry-bill">
<image class="entry-bill-icon" src="@/static/image/usercenter_produceorder@3x.png" mode=""></image>
</view>
<text class="entry-bill-text">生产计划</text>
</view> </view>
<view class="entry-block" @click="goPage('produce-material')"> <view class="entry-block" @click="goPage('produce-material')">
...@@ -61,20 +76,13 @@ ...@@ -61,20 +76,13 @@
<text class="entry-bill-text">要货单查询</text> <text class="entry-bill-text">要货单查询</text>
</view> </view>
<view class="entry-block" @click="goPage('my-order')"> <view class="entry-block" @click="goPage('market-order')">
<view class="entry-bill">
<image class="entry-bill-icon" src="@/static/image/uc_company@3x.png" mode=""></image>
</view>
<text class="entry-bill-text">销售订单</text>
</view>
<view class="entry-block" @click="goPage('billing-invoice')">
<view class="entry-bill"> <view class="entry-bill">
<image class="entry-bill-icon entry-bill-icon_billing" <image class="entry-bill-icon entry-bill-icon_billing"
src="@/static/image/usercenter_billinginvoice@3x.png" mode=""> src="@/static/image/usercenter_billinginvoice@3x.png" mode="">
</image> </image>
</view> </view>
<text class="entry-bill-text">账票管理</text> <text class="entry-bill-text">市场秩序</text>
</view> </view>
</view> </view>
...@@ -357,4 +365,4 @@ ...@@ -357,4 +365,4 @@
width: 18rpx; width: 18rpx;
height: 32rpx; height: 32rpx;
} }
</style> </style>
...@@ -70,7 +70,12 @@ class Request { ...@@ -70,7 +70,12 @@ class Request {
if (resInterceptors !== false) { if (resInterceptors !== false) {
resolve(resInterceptors); resolve(resInterceptors);
} else { } else {
reject(response.data); // 资讯返回数据无状态码
if(response.errMsg === "request:ok" ){
resolve(response.data);
}else{
reject(response.data);
}
} }
} else { } else {
// 如果不是返回原始数据(originalData=false),且没有拦截器的情况下,返回纯数据给then回调 // 如果不是返回原始数据(originalData=false),且没有拦截器的情况下,返回纯数据给then回调
...@@ -179,8 +184,8 @@ class Request { ...@@ -179,8 +184,8 @@ class Request {
config.baseUrl = 'http://api.c0331.dev.guanyingyun.com' config.baseUrl = 'http://api.c0331.dev.guanyingyun.com'
// config.baseUrl = 'http://221.10.127.60:5000/cyj' // config.baseUrl = 'http://221.10.127.60:5000/cyj'
} else if (config.url.indexOf('wmdpwebservices') !== -1) { } else if (config.url.indexOf('wmdpwebservices') !== -1) {
// config.baseUrl = 'https://10.0.134.182:9002' config.baseUrl = 'http://10.0.134.182:9001'
config.baseUrl = 'http://221.10.127.60:5000/sczx' // config.baseUrl = 'http://221.10.127.60:5000/sczx'
// config.baseUrl = '' // config.baseUrl = ''
} else { } else {
config.baseUrl = 'http://221.10.127.60:5000/wlySap' config.baseUrl = 'http://221.10.127.60:5000/wlySap'
...@@ -210,11 +215,17 @@ class Request { ...@@ -210,11 +215,17 @@ class Request {
// 如果把originalData设置为了true,这里return回什么,this.$u.post的then回调中就会得到什么 // 如果把originalData设置为了true,这里return回什么,this.$u.post的then回调中就会得到什么
return res; return res;
} else { } else {
uni.showToast({ // 资讯返回数据无状态码
title: res.MESSAGE || res.msg || res.message || res.ErrMsg, if(res.errMsg === "request:ok" ){
duration: 2000, return res;
icon: 'none' }
}); if(res.MESSAGE || res.msg || res.message || res.ErrMsg){
uni.showToast({
title: res.MESSAGE || res.msg || res.message || res.ErrMsg,
duration: 2000,
icon: 'none'
});
}
return false return false
}; };
} }
...@@ -261,4 +272,4 @@ class Request { ...@@ -261,4 +272,4 @@ class Request {
} }
} }
} }
export default new Request export default new Request
...@@ -169,3 +169,47 @@ export async function apiGetProcessOrderAppeal(params) { ...@@ -169,3 +169,47 @@ export async function apiGetProcessOrderAppeal(params) {
const res = await apiHelper.post('/wmdpwebservices/processOrder/trigger/appeal', params) const res = await apiHelper.post('/wmdpwebservices/processOrder/trigger/appeal', params)
return res return res
} }
/**
* 经销商分利
* @param name 账户名
* @returns {Promise<AxiosResponse<T>>}
*/
export async function pointsAndCashSummary(params) {
const res = await apiHelper.post('/wmdpwebservices/statistics/distributer/pointsAndCashSummary', params)
return res
}
/**
* 出入库合规累积量
* @param name 账户名
* @returns {Promise<AxiosResponse<T>>}
*/
export async function queryUnique(params) {
const res = await apiHelper.post('/wmdpwebservices/general/queryUnique/distributerIn+distributerOut+customerScan+terminalIn', params)
return res
}
/**
* selecet list
* @param name 账户名
* @returns {Promise<AxiosResponse<T>>}
*/
export async function queryProducts(params) {
const res = await apiHelper.post('/wmdpwebservices/products/query', params)
return res
}
/**
* 出入库 查看更多
* @returns {Promise<AxiosResponse<T>>}
*/
export async function queryScanDistributer(params) {
const res = await apiHelper.post('/wmdpwebservices/scan/history/distributer', params)
return res
}
/**
* 资讯
* @returns {Promise<AxiosResponse<T>>}
*/
export async function queryNewsListSet(params) {
const res = await apiHelper.get('/sap/opu/odata/sap/ZODATA_APP_002_SRV_01/NewsListSet', params, {'Content-Type': 'application/json','Accept':'application/json'})
return res
}
...@@ -73,6 +73,9 @@ const install = (Vue, vm) => { ...@@ -73,6 +73,9 @@ const install = (Vue, vm) => {
// 如果把originalData设置为了true,这里return回什么,this.$u.post的then回调中就会得到什么 // 如果把originalData设置为了true,这里return回什么,this.$u.post的then回调中就会得到什么
return res; return res;
} else { } else {
if(!res.status&&!res.msgtype&&!res.MSGTYPE){
return res;
}
uni.showToast({ uni.showToast({
title: res.MESSAGE || res.msg || res.message || res.ErrMsg, title: res.MESSAGE || res.msg || res.message || res.ErrMsg,
duration: 2000, duration: 2000,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment