Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
W
wly-APP
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
刘川
wly-APP
Commits
bbe739e4
Commit
bbe739e4
authored
Oct 12, 2022
by
xiangzj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
首页资讯模块
parent
bb5a4fc1
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
1243 additions
and
45 deletions
+1243
-45
pages.json
pages.json
+51
-0
breakwords-clue.vue
pages/breakwords-clue/breakwords-clue.vue
+1
-1
home.vue
pages/home/home.vue
+296
-20
information.nvue
pages/information/information.nvue
+292
-0
market-order.nvue
pages/market-order/market-order.nvue
+149
-0
produce-order.nvue
pages/produce-order/produce-order.nvue
+12
-1
storage-list.nvue
pages/storage-list/storage-list.nvue
+353
-0
usercenter.nvue
pages/usercenter/usercenter.nvue
+22
-14
api.helper.js
servers/api.helper.js
+20
-9
breakwords.js
servers/breakwords.js
+44
-0
http.interceptor.js
servers/http.interceptor.js
+3
-0
No files found.
pages.json
View file @
bbe739e4
...
@@ -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"
:
{
...
...
pages/breakwords-clue/breakwords-clue.vue
View file @
bbe739e4
...
@@ -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
()
{
...
...
pages/home/home.vue
View file @
bbe739e4
<
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('b
reakwords-mission
')"
>
<view
class=
"order-amount"
@
click=
"entryHandle('b
illing-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
:
4
8
0rpx
;
height
:
4
1
0rpx
;
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
:
64
rpx
;
margin-bottom
:
10
rpx
;
}
}
.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
>
pages/information/information.nvue
0 → 100644
View file @
bbe739e4
<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>
pages/market-order/market-order.nvue
0 → 100644
View file @
bbe739e4
<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>
pages/produce-order/produce-order.nvue
View file @
bbe739e4
...
@@ -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) {
...
...
pages/storage-list/storage-list.nvue
0 → 100644
View file @
bbe739e4
<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>
pages/usercenter/usercenter.nvue
View file @
bbe739e4
...
@@ -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>
servers/api.helper.js
View file @
bbe739e4
...
@@ -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
servers/breakwords.js
View file @
bbe739e4
...
@@ -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
}
servers/http.interceptor.js
View file @
bbe739e4
...
@@ -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
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment