36 changed files with 600 additions and 18 deletions
Split View
Diff Options
-
3app.json
-
132components/swipe-cell/index.js
-
3components/swipe-cell/index.json
-
13components/swipe-cell/index.wxml
-
1components/swipe-cell/index.wxss
-
30pages/home/customer-info/index.js
-
5pages/home/customer-info/index.wxml
-
3pages/home/index/index.wxml
-
2pages/login/index.js
-
4pages/message/card-list/index.js
-
1pages/message/card-list/index.json
-
5pages/message/card-list/index.wxml
-
11pages/message/card-list/index.wxss
-
2pages/process/index/index.wxml
-
43pages/storage/index/index.wxml
-
2project.config.json
-
15xtends/statics/agent-report/index.js
-
5xtends/statics/agent-report/index.json
-
8xtends/statics/agent-report/index.wxml
-
11xtends/statics/agent-report/index.wxss
-
15xtends/statics/gross-report/index.js
-
5xtends/statics/gross-report/index.json
-
8xtends/statics/gross-report/index.wxml
-
11xtends/statics/gross-report/index.wxss
-
99xtends/statics/index/index.js
-
7xtends/statics/index/index.json
-
84xtends/statics/index/index.wxml
-
12xtends/statics/index/index.wxss
-
15xtends/statics/purchase-report/index.js
-
5xtends/statics/purchase-report/index.json
-
8xtends/statics/purchase-report/index.wxml
-
11xtends/statics/purchase-report/index.wxss
-
15xtends/statics/sale-report/index.js
-
5xtends/statics/sale-report/index.json
-
8xtends/statics/sale-report/index.wxml
-
11xtends/statics/sale-report/index.wxss
@ -0,0 +1,132 @@ |
|||
import { VantComponent } from '../common/component'; |
|||
import { touch } from '../mixins/touch'; |
|||
import { range } from '../common/utils'; |
|||
const THRESHOLD = 0.3; |
|||
let ARRAY = []; |
|||
VantComponent({ |
|||
props: { |
|||
disabled: Boolean, |
|||
leftWidth: { |
|||
type: Number, |
|||
value: 0, |
|||
observer(leftWidth = 0) { |
|||
if (this.offset > 0) { |
|||
this.swipeMove(leftWidth); |
|||
} |
|||
}, |
|||
}, |
|||
rightWidth: { |
|||
type: Number, |
|||
value: 0, |
|||
observer(rightWidth = 0) { |
|||
if (this.offset < 0) { |
|||
this.swipeMove(-rightWidth); |
|||
} |
|||
}, |
|||
}, |
|||
asyncClose: Boolean, |
|||
name: { |
|||
type: null, |
|||
value: '', |
|||
}, |
|||
}, |
|||
mixins: [touch], |
|||
data: { |
|||
catchMove: false, |
|||
wrapperStyle: '', |
|||
}, |
|||
created() { |
|||
this.offset = 0; |
|||
ARRAY.push(this); |
|||
}, |
|||
destroyed() { |
|||
ARRAY = ARRAY.filter((item) => item !== this); |
|||
}, |
|||
methods: { |
|||
open(position) { |
|||
const { leftWidth, rightWidth } = this.data; |
|||
const offset = position === 'left' ? leftWidth : -rightWidth; |
|||
this.swipeMove(offset); |
|||
this.$emit('open', { |
|||
position, |
|||
name: this.data.name, |
|||
}); |
|||
}, |
|||
close() { |
|||
this.swipeMove(0); |
|||
}, |
|||
swipeMove(offset = 0) { |
|||
this.offset = range(offset, -this.data.rightWidth, this.data.leftWidth); |
|||
const transform = `translate3d(${this.offset}px, 0, 0)`; |
|||
const transition = this.dragging |
|||
? 'none' |
|||
: 'transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)'; |
|||
this.setData({ |
|||
wrapperStyle: `
|
|||
-webkit-transform: ${transform}; |
|||
-webkit-transition: ${transition}; |
|||
transform: ${transform}; |
|||
transition: ${transition}; |
|||
`,
|
|||
}); |
|||
}, |
|||
swipeLeaveTransition() { |
|||
const { leftWidth, rightWidth } = this.data; |
|||
const { offset } = this; |
|||
if (rightWidth > 0 && -offset > rightWidth * THRESHOLD) { |
|||
this.open('right'); |
|||
} else if (leftWidth > 0 && offset > leftWidth * THRESHOLD) { |
|||
this.open('left'); |
|||
} else { |
|||
this.swipeMove(0); |
|||
} |
|||
this.setData({ catchMove: false }); |
|||
}, |
|||
startDrag(event) { |
|||
if (this.data.disabled) { |
|||
return; |
|||
} |
|||
this.startOffset = this.offset; |
|||
this.touchStart(event); |
|||
}, |
|||
noop() {}, |
|||
onDrag(event) { |
|||
if (this.data.disabled) { |
|||
return; |
|||
} |
|||
this.touchMove(event); |
|||
if (this.direction !== 'horizontal') { |
|||
return; |
|||
} |
|||
this.dragging = true; |
|||
ARRAY.filter( |
|||
(item) => item !== this && item.offset !== 0 |
|||
).forEach((item) => item.close()); |
|||
this.setData({ catchMove: true }); |
|||
this.swipeMove(this.startOffset + this.deltaX); |
|||
}, |
|||
endDrag() { |
|||
if (this.data.disabled) { |
|||
return; |
|||
} |
|||
this.dragging = false; |
|||
this.swipeLeaveTransition(); |
|||
}, |
|||
onClick(event) { |
|||
const { key: position = 'outside' } = event.currentTarget.dataset; |
|||
this.$emit('click', position); |
|||
if (!this.offset) { |
|||
return; |
|||
} |
|||
if (this.data.asyncClose) { |
|||
this.$emit('close', { |
|||
position, |
|||
instance: this, |
|||
name: this.data.name, |
|||
}); |
|||
} else { |
|||
this.swipeMove(0); |
|||
} |
|||
}, |
|||
}, |
|||
}); |
|||
@ -0,0 +1,3 @@ |
|||
{ |
|||
"component": true |
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
<view class="van-swipe-cell custom-class" data-key="cell" catchtap="onClick" bindtouchstart="startDrag" |
|||
catchtouchmove="{{ catchMove ? 'noop' : '' }}" capture-bind:touchmove="onDrag" bindtouchend="endDrag" |
|||
bindtouchcancel="endDrag"> |
|||
<view style="{{ wrapperStyle }}"> |
|||
<view wx:if="{{ leftWidth }}" class="van-swipe-cell__left" data-key="left" catch:tap="onClick"> |
|||
<slot name="left" /> |
|||
</view> |
|||
<slot /> |
|||
<view wx:if="{{ rightWidth }}" class="van-swipe-cell__right" data-key="right" catch:tap="onClick"> |
|||
<slot name="right" /> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
@ -0,0 +1 @@ |
|||
@import '../common/index.wxss';.van-swipe-cell{position:relative;overflow:hidden}.van-swipe-cell__left,.van-swipe-cell__right{position:absolute;top:0;height:100%}.van-swipe-cell__left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.van-swipe-cell__right{right:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)} |
|||
@ -1 +1,10 @@ |
|||
/* pages/storage/index/index.wxss */ |
|||
/* pages/storage/index/index.wxss */ |
|||
.van-swipe-cell__right { |
|||
display: inline-block; |
|||
width: 65px; |
|||
font-size: 15px; |
|||
line-height: 65px; |
|||
color: #fff; |
|||
text-align: center; |
|||
background-color: #ee0a24; |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
import Scene from '../../../pages/index/scene' |
|||
|
|||
Scene({ |
|||
/** |
|||
* 页面的初始数据 |
|||
*/ |
|||
data: { |
|||
}, |
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad: function (options) { |
|||
|
|||
} |
|||
}) |
|||
@ -0,0 +1,5 @@ |
|||
{ |
|||
"usingComponents": { |
|||
"notification": "/pages/message/notification/index" |
|||
} |
|||
} |
|||
@ -0,0 +1,8 @@ |
|||
<!--xtends//statics/index/index.wxml--> |
|||
<cu-custom bgColor="bg-white" isBack="{{true}}"> |
|||
<view slot="content">代卖报表</view> |
|||
</cu-custom> |
|||
|
|||
|
|||
|
|||
<notification id="qn-notification"/> |
|||
@ -0,0 +1,11 @@ |
|||
/* xtends//statics/index/index.wxss */ |
|||
.qiun-charts { |
|||
width: 750rpx; |
|||
height: 500rpx; |
|||
background-color: #FFFFFF; |
|||
} |
|||
.charts { |
|||
width: 750rpx; |
|||
height: 500rpx; |
|||
background-color: #FFFFFF; |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
import Scene from '../../../pages/index/scene' |
|||
|
|||
Scene({ |
|||
/** |
|||
* 页面的初始数据 |
|||
*/ |
|||
data: { |
|||
}, |
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad: function (options) { |
|||
|
|||
} |
|||
}) |
|||
@ -0,0 +1,5 @@ |
|||
{ |
|||
"usingComponents": { |
|||
"notification": "/pages/message/notification/index" |
|||
} |
|||
} |
|||
@ -0,0 +1,8 @@ |
|||
<!--xtends//statics/index/index.wxml--> |
|||
<cu-custom bgColor="bg-white" isBack="{{true}}"> |
|||
<view slot="content">毛利报表</view> |
|||
</cu-custom> |
|||
|
|||
|
|||
|
|||
<notification id="qn-notification"/> |
|||
@ -0,0 +1,11 @@ |
|||
/* xtends//statics/index/index.wxss */ |
|||
.qiun-charts { |
|||
width: 750rpx; |
|||
height: 500rpx; |
|||
background-color: #FFFFFF; |
|||
} |
|||
.charts { |
|||
width: 750rpx; |
|||
height: 500rpx; |
|||
background-color: #FFFFFF; |
|||
} |
|||
@ -1,18 +1,111 @@ |
|||
// xtends//statics/index/index.js
|
|||
import Scene from '../../../pages/index/scene' |
|||
import uCharts from '../../libs/u-charts'; |
|||
const math = require('../../../utils/math') |
|||
const app = getApp() |
|||
|
|||
var that; |
|||
var canvaColumn = null; |
|||
var windowWidth = 0; |
|||
|
|||
Scene({ |
|||
/** |
|||
* 页面的初始数据 |
|||
*/ |
|||
data: { |
|||
|
|||
cWidth: '', |
|||
cHeight: '', |
|||
}, |
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad: function (options) { |
|||
|
|||
that = this |
|||
windowWidth = wx.getSystemInfoSync().windowWidth |
|||
this.data.cWidth = windowWidth - this.rpx2px(100) |
|||
// math.divide
|
|||
this.data.cHeight = this.rpx2px(400) |
|||
this.getServerData() |
|||
}, |
|||
rpx2px: function(rpx) { |
|||
return rpx / 750 * windowWidth; |
|||
}, |
|||
getServerData: function() { |
|||
wx.request({ |
|||
url: 'https://www.ucharts.cn/data.json', |
|||
success: function (res) { |
|||
let Column = { categories: [], series: [] }; |
|||
Column.categories = res.data.data.Pie.categories; |
|||
Column.series = res.data.data.Pie.series; |
|||
// 自定义标签颜色和字体大小
|
|||
// Column.series[1].textColor = 'red';
|
|||
// Column.series[1].textSize = 18;
|
|||
that.showColumn("canvasColumn", Column); |
|||
}, |
|||
fail: () => { |
|||
console.log("请点击右上角【详情】,启用不校验合法域名"); |
|||
}, |
|||
}) |
|||
}, |
|||
showColumn(canvasId, chartData) { |
|||
let ctx = wx.createCanvasContext(canvasId, this); |
|||
canvaColumn = new uCharts({ |
|||
type: 'ring', |
|||
context: ctx, |
|||
// fontSize: 11,
|
|||
background: '#FFFFFF', |
|||
pixelRatio: 1, |
|||
// animation: true,
|
|||
// categories: chartData.categories,
|
|||
series: chartData.series, |
|||
color: [ |
|||
"#1890FF", |
|||
"#91CB74", |
|||
"#FAC858", |
|||
"#EE6666", |
|||
"#73C0DE", |
|||
"#3CA272", |
|||
"#FC8452", |
|||
"#9A60B4", |
|||
"#ea7ccc" |
|||
], |
|||
dataLabel: true, |
|||
width: that.data.cWidth, |
|||
height: that.data.cHeight, |
|||
legend: { |
|||
show: true, |
|||
position: "right", |
|||
float: "center", |
|||
padding: 5, |
|||
margin: 5, |
|||
fontSize: 13, |
|||
fontColor: "#666666", |
|||
lineHeight: 25, |
|||
hiddenColor: "#CECECE", |
|||
itemGap: 10 |
|||
}, |
|||
extra: { |
|||
ring: { |
|||
ringWidth: 30, |
|||
centerColor: "#FFFFFF", |
|||
activeOpacity: 0.5, |
|||
activeRadius: 10, |
|||
offsetAngle: 0, |
|||
customRadius: 0, |
|||
labelWidth: 15, |
|||
border: true, |
|||
borderWidth: 3, |
|||
borderColor: "#FFFFFF", |
|||
linearType: "none" |
|||
} |
|||
} |
|||
}); |
|||
}, |
|||
|
|||
touchColumn(e) { |
|||
canvaColumn.showToolTip(e, { |
|||
formatter: function (item) { |
|||
return item.name + ':' + item.data |
|||
} |
|||
}); |
|||
} |
|||
}) |
|||
@ -1,3 +1,8 @@ |
|||
{ |
|||
"usingComponents": {} |
|||
"usingComponents": { |
|||
"van-grid": "/components/grid/index", |
|||
"van-grid-item": "/components/grid-item/index", |
|||
"van-icon": "/components/icon/index", |
|||
"notification": "/pages/message/notification/index" |
|||
} |
|||
} |
|||
@ -1,4 +1,86 @@ |
|||
<!--xtends//statics/index/index.wxml--> |
|||
<wxs module="formate" src="../../../pages/formate.wxs"></wxs> |
|||
<cu-custom bgColor="bg-white" isBack="{{true}}"> |
|||
<view slot="content">收货统计</view> |
|||
<view slot="content">报表智能</view> |
|||
</cu-custom> |
|||
|
|||
<view style="padding: 0rpx 28rpx;margin-top:24rpx"> |
|||
<view class="bg-white" style="border-radius: 20rpx;padding: 24rpx 0rpx 12rpx 0rpx"> |
|||
<van-grid column-num="4" border="{{fasle}}"> |
|||
<van-grid-item text="采购报表" url="/xtends/statics/purchase-report/index"> |
|||
<van-icon slot="icon" name="/assets/home/icon-employe.png" size="76rpx" /> |
|||
</van-grid-item> |
|||
<van-grid-item text="销售报表" url="/xtends/statics/sale-report/index"> |
|||
<van-icon slot="icon" name="/assets/home/icon-customer.png" size="76rpx" /> |
|||
</van-grid-item> |
|||
<van-grid-item text="毛利报表" url="/xtends/statics/gross-report/index"> |
|||
<van-icon slot="icon" name="/assets/home/icon-cate.png" size="76rpx" /> |
|||
</van-grid-item> |
|||
<van-grid-item text="代卖报表" url="/xtends/statics/agent-report/index"> |
|||
<van-icon slot="icon" name="/assets/home/icon-card.png" size="76rpx" /> |
|||
</van-grid-item> |
|||
</van-grid> |
|||
</view> |
|||
</view> |
|||
|
|||
<view style="padding: 0rpx 28rpx;margin-top:24rpx"> |
|||
<view class="bg-white" style="border-radius: 20rpx;padding: 24rpx 0rpx"> |
|||
<view class="flex flex-justify" style="padding: 0rpx 28rpx 8rpx 28rpx"> |
|||
<view class="text-black text-sg text-bold">收货统计</view> |
|||
</view> |
|||
<view style="padding:0rpx 24rpx 0rpx 24rpx"> |
|||
<canvas canvas-id="canvasColumn" id="canvasColumn" class="charts" bindtouchstart="touchColumn"> |
|||
</canvas> |
|||
</view> |
|||
<view class="flex flex-justify" style="padding:0rpx 30rpx"> |
|||
<view class="text-black text-sg">收货总重量</view> |
|||
<view class="text-black text-sg">收货总金额</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view style="padding: 0rpx 28rpx;margin-top:24rpx"> |
|||
<view class="bg-white" style="border-radius: 20rpx;padding: 24rpx 0rpx 8rpx 0rpx"> |
|||
<view class="flex flex-justify" style="padding: 0rpx 28rpx"> |
|||
<view class="text-black text-sg text-bold">出货统计</view> |
|||
<view class="flex flex-center" bindtap="showSheet" style="padding: 2rpx 0rpx"> |
|||
<view class="text-black text-sm" style="margin-right:8rpx">{{vdateString}}</view> |
|||
</view> |
|||
</view> |
|||
<view class="flex" style="padding: 16rpx 0rpx 8rpx 0rpx"> |
|||
<view style="flex:1;padding:0rpx 32rpx;margin-right:12rpx"> |
|||
<view class="flex flex-center" style="justify-content: flex-start"> |
|||
<view style="height:24rpx;width:6rpx;background:#007AFF"></view> |
|||
<view class="text-black text-sm" style="margin-left: 12rpx">收货重量</view> |
|||
</view> |
|||
<view class="text-xxl text-bold" style="margin:12rpx 0rpx">{{formate.formateWeight(totalInfo.totalWeight || 0)}}吨</view> |
|||
</view> |
|||
<view style="flex:1;padding:0rpx 32rpx;margin-left:12rpx"> |
|||
<view class="flex flex-center" style="justify-content: flex-start"> |
|||
<view style="height:24rpx;width:6rpx;background:#FF8413"></view> |
|||
<view class="text-black text-sm" style="margin-left: 12rpx">收货金额</view> |
|||
</view> |
|||
<view class="text-xxl text-bold text-price" style="margin:12rpx 0rpx">{{formate.formateAmount(totalInfo.totalMoney || 0)}}</view> |
|||
</view> |
|||
</view> |
|||
<view class="flex" style="padding: 16rpx 0rpx 8rpx 0rpx"> |
|||
<view style="flex:1;padding:0rpx 32rpx;margin-right:12rpx"> |
|||
<view class="flex flex-center" style="justify-content: flex-start"> |
|||
<view style="height:24rpx;width:6rpx;background:#007AFF"></view> |
|||
<view class="text-black text-sm" style="margin-left: 12rpx">收货重量</view> |
|||
</view> |
|||
<view class="text-xxl text-bold" style="margin:12rpx 0rpx">{{formate.formateWeight(totalInfo.totalWeight || 0)}}吨</view> |
|||
</view> |
|||
<view style="flex:1;padding:0rpx 32rpx;margin-left:12rpx"> |
|||
<view class="flex flex-center" style="justify-content: flex-start"> |
|||
<view style="height:24rpx;width:6rpx;background:#FF8413"></view> |
|||
<view class="text-black text-sm" style="margin-left: 12rpx">收货金额</view> |
|||
</view> |
|||
<view class="text-xxl text-bold text-price" style="margin:12rpx 0rpx">{{formate.formateAmount(totalInfo.totalMoney || 0)}}</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view style="height:24rpx"></view> |
|||
|
|||
<notification id="qn-notification"/> |
|||
@ -1 +1,11 @@ |
|||
/* xtends//statics/index/index.wxss */ |
|||
/* xtends//statics/index/index.wxss */ |
|||
.qiun-charts { |
|||
width: 750rpx; |
|||
height: 500rpx; |
|||
background-color: #FFFFFF; |
|||
} |
|||
.charts { |
|||
width: 100%; |
|||
height: 400rpx; |
|||
background-color: #FFFFFF; |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
import Scene from '../../../pages/index/scene' |
|||
|
|||
Scene({ |
|||
/** |
|||
* 页面的初始数据 |
|||
*/ |
|||
data: { |
|||
}, |
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad: function (options) { |
|||
|
|||
} |
|||
}) |
|||
@ -0,0 +1,5 @@ |
|||
{ |
|||
"usingComponents": { |
|||
"notification": "/pages/message/notification/index" |
|||
} |
|||
} |
|||
@ -0,0 +1,8 @@ |
|||
<!--xtends//statics/index/index.wxml--> |
|||
<cu-custom bgColor="bg-white" isBack="{{true}}"> |
|||
<view slot="content">采购报表</view> |
|||
</cu-custom> |
|||
|
|||
|
|||
|
|||
<notification id="qn-notification"/> |
|||
@ -0,0 +1,11 @@ |
|||
/* xtends//statics/index/index.wxss */ |
|||
.qiun-charts { |
|||
width: 750rpx; |
|||
height: 500rpx; |
|||
background-color: #FFFFFF; |
|||
} |
|||
.charts { |
|||
width: 750rpx; |
|||
height: 500rpx; |
|||
background-color: #FFFFFF; |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
import Scene from '../../../pages/index/scene' |
|||
|
|||
Scene({ |
|||
/** |
|||
* 页面的初始数据 |
|||
*/ |
|||
data: { |
|||
}, |
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad: function (options) { |
|||
|
|||
} |
|||
}) |
|||
@ -0,0 +1,5 @@ |
|||
{ |
|||
"usingComponents": { |
|||
"notification": "/pages/message/notification/index" |
|||
} |
|||
} |
|||
@ -0,0 +1,8 @@ |
|||
<!--xtends//statics/index/index.wxml--> |
|||
<cu-custom bgColor="bg-white" isBack="{{true}}"> |
|||
<view slot="content">销售报表</view> |
|||
</cu-custom> |
|||
|
|||
|
|||
|
|||
<notification id="qn-notification"/> |
|||
@ -0,0 +1,11 @@ |
|||
/* xtends//statics/index/index.wxss */ |
|||
.qiun-charts { |
|||
width: 750rpx; |
|||
height: 500rpx; |
|||
background-color: #FFFFFF; |
|||
} |
|||
.charts { |
|||
width: 750rpx; |
|||
height: 500rpx; |
|||
background-color: #FFFFFF; |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save