Browse Source

init

master
robin 7 years ago
commit
3d495a593d
55 changed files with 3846 additions and 0 deletions
  1. +20
    -0
      app.js
  2. +38
    -0
      app.json
  3. +10
    -0
      app.wxss
  4. BIN
      imgs/create.png
  5. BIN
      imgs/main-bg.jpg
  6. BIN
      imgs/main.png
  7. BIN
      imgs/main1.png
  8. BIN
      imgs/my.png
  9. BIN
      imgs/my1.png
  10. BIN
      imgs/saleForecast.png
  11. BIN
      imgs/tianjia.png
  12. BIN
      imgs/tuceng.png
  13. BIN
      imgs/zhuye.png
  14. BIN
      imgs/zhuye1.png
  15. +179
    -0
      pages/index/index.js
  16. +1
    -0
      pages/index/index.json
  17. +11
    -0
      pages/index/index.wxml
  18. +54
    -0
      pages/index/index.wxss
  19. +15
    -0
      pages/logs/logs.js
  20. +3
    -0
      pages/logs/logs.json
  21. +6
    -0
      pages/logs/logs.wxml
  22. +8
    -0
      pages/logs/logs.wxss
  23. +84
    -0
      pages/main/main.js
  24. +3
    -0
      pages/main/main.json
  25. +10
    -0
      pages/main/main.wxml
  26. +33
    -0
      pages/main/main.wxss
  27. +66
    -0
      pages/my/my.js
  28. +1
    -0
      pages/my/my.json
  29. +2
    -0
      pages/my/my.wxml
  30. +1
    -0
      pages/my/my.wxss
  31. +730
    -0
      pages/saleForecastList/Detail/Detail.js
  32. +3
    -0
      pages/saleForecastList/Detail/Detail.json
  33. +168
    -0
      pages/saleForecastList/Detail/Detail.wxml
  34. +214
    -0
      pages/saleForecastList/Detail/Detail.wxss
  35. +628
    -0
      pages/saleForecastList/newBill/newBill.js
  36. +3
    -0
      pages/saleForecastList/newBill/newBill.json
  37. +167
    -0
      pages/saleForecastList/newBill/newBill.wxml
  38. +209
    -0
      pages/saleForecastList/newBill/newBill.wxss
  39. +195
    -0
      pages/saleForecastList/query/query.js
  40. +3
    -0
      pages/saleForecastList/query/query.json
  41. +25
    -0
      pages/saleForecastList/query/query.wxml
  42. +93
    -0
      pages/saleForecastList/query/query.wxss
  43. +206
    -0
      pages/saleForecastList/saleForecastList.js
  44. +3
    -0
      pages/saleForecastList/saleForecastList.json
  45. +43
    -0
      pages/saleForecastList/saleForecastList.wxml
  46. +110
    -0
      pages/saleForecastList/saleForecastList.wxss
  47. +125
    -0
      pages/selectCustomer/selctCustomer.js
  48. +3
    -0
      pages/selectCustomer/selctCustomer.json
  49. +11
    -0
      pages/selectCustomer/selctCustomer.wxml
  50. +26
    -0
      pages/selectCustomer/selctCustomer.wxss
  51. +47
    -0
      project.config.json
  52. +80
    -0
      utils/dateTimePicker.js
  53. +39
    -0
      utils/dateTimeUtil.js
  54. +151
    -0
      utils/net.js
  55. +19
    -0
      utils/util.js

+ 20
- 0
app.js View File

@ -0,0 +1,20 @@
//app.js
App({
onLaunch: function() {
},
globalData: {
PhoneNum: "",
OpenId: "",
AppName: "WeChat",
AppId: "wx1a89a89a80318160",
Cookie: "",
DecryptCookie:'',
UserInfo: null,
BaseUrl: "https://miniprogram.food988.com/Rest.aspx",
LoginPath: "/MainSystem/MainSystem/Auth/WeixinLogin",
TransferUrl:'https://miniprogram.food988.com/RequestTransfer.aspx',
CustomerId:0,
SelectCustomer_ID:null
}
})

+ 38
- 0
app.json View File

@ -0,0 +1,38 @@
{
"pages": [
"pages/selectCustomer/selctCustomer",
"pages/index/index",
"pages/logs/logs",
"pages/main/main",
"pages/my/my",
"pages/saleForecastList/saleForecastList",
"pages/saleForecastList/Detail/Detail",
"pages/saleForecastList/query/query",
"pages/saleForecastList/newBill/newBill"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#2589f8",
"navigationBarTitleText": "业务易",
"navigationBarTextStyle": "#FFFFFF",
"disableScroll": true
},
"tabBar": {
"selectedColor": "#00C7B3",
"color": "#CFCFCF",
"list": [
{
"pagePath": "pages/main/main",
"text": "主页",
"iconPath": "/imgs/main1.png",
"selectedIconPath": "/imgs/main.png"
},
{
"pagePath": "pages/my/my",
"text": "我的",
"iconPath": "/imgs/my1.png",
"selectedIconPath": "/imgs/my.png"
}
]
}
}

+ 10
- 0
app.wxss View File

@ -0,0 +1,10 @@
/**app.wxss**/
.container {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 200rpx 0;
box-sizing: border-box;
}

BIN
imgs/create.png View File

Before After
Width: 266  |  Height: 266  |  Size: 12 KiB

BIN
imgs/main-bg.jpg View File

Before After
Width: 1242  |  Height: 434  |  Size: 41 KiB

BIN
imgs/main.png View File

Before After
Width: 81  |  Height: 81  |  Size: 1.9 KiB

BIN
imgs/main1.png View File

Before After
Width: 81  |  Height: 81  |  Size: 2.3 KiB

BIN
imgs/my.png View File

Before After
Width: 81  |  Height: 81  |  Size: 2.0 KiB

BIN
imgs/my1.png View File

Before After
Width: 81  |  Height: 81  |  Size: 2.7 KiB

BIN
imgs/saleForecast.png View File

Before After
Width: 140  |  Height: 140  |  Size: 7.8 KiB

BIN
imgs/tianjia.png View File

Before After
Width: 100  |  Height: 100  |  Size: 3.0 KiB

BIN
imgs/tuceng.png View File

Before After
Width: 405  |  Height: 405  |  Size: 21 KiB

BIN
imgs/zhuye.png View File

Before After
Width: 86  |  Height: 86  |  Size: 2.0 KiB

BIN
imgs/zhuye1.png View File

Before After
Width: 86  |  Height: 86  |  Size: 2.4 KiB

+ 179
- 0
pages/index/index.js View File

@ -0,0 +1,179 @@
//index.js
const app = getApp();
var network = require("../../utils/net.js");
var isBindedPath = '/MainSystem/B3MiniProgramRpc/XuRpcs/Employee/AccountRpc/IsBinded';
var isBindByPhone = '/MainSystem/B3MiniProgramRpc/XuRpcs/Employee/AccountRpc/XuBindByPhone';
var isBindWeixinPath = '/MainSystem/B3WeChatMiniProgram/Rpcs/CommonRpc/IsBindWeixinMP';
var getOpenIdByCode = '/MainSystem/B3WeChatMiniProgram/Rpcs/CommonRpc/GetMiniOpenIdByCode';
var bindPath = "/MainSystem/B3WeChatMiniProgram/Rpcs/CommonRpc/Bind";
var getBindCustomer = '/MainSystem/B3WeChatMiniProgram/Rpcs/CommonRpc/GetBindCustomer';
function WeixinLogin() {
let method = app.globalData.LoginPath;
let params = [app.globalData.AppId, app.globalData.OpenId];
network.transfer_request(method, params, function(res) {
app.globalData.DecryptCookie = res.result;
})
}
function IsBinded() {
let method = isBindedPath
let params = [app.globalData.OpenId];
network.transfer_request(method, params, function(res) {
if (res.result != "") {
app.globalData.PhoneNum = res.result;
IsBindWeixinMP(app.globalData.PhoneNum)
}
})
}
function IsBindWeixinMP(phone) {
let method = isBindWeixinPath
let params = [phone];
network.requestLoading(method, params, function(res) {
res.result = true;
if (res.result == true) {
wx.switchTab({
url: '/pages/main/main',
})
} else {
wx.showModal({
title: '提示',
content: '请关注公众号',
showCancel: false,
})
}
})
}
function Bind(page) {
let userInfos = app.globalData.UserInfo
let method = bindPath;
let params = [{
"AppId": app.globalData.AppId,
"OpenId": app.globalData.OpenId,
"Phone": page.data.phoneNum,
"NickName": userInfos.nickName,
"Sex": userInfos.gender,
"Province": userInfos.province,
"City": userInfos.city,
"Country": userInfos.country,
"HeadImgUrl": userInfos.avatarUrl,
"UnionId": "",
"CustomerId": app.globalData.CustomerId
}];
network.requestLoading(method, params, function (res) {
if (res.result == true) {
IsBindWeixinMP(app.globalData.PhoneNum)
}
})
}
Page({
data: {
userInfo: "", //用户信息
phoneNum: ""
},
getPhoneNum: function(e) {
let val = e.detail.value;
this.data.phoneNum = val;
},
onLoad: function(options) {
},
onShow: function() {
//未进行中转服务器绑定
if (app.globalData.PhoneNum == '') {
} else {
WeixinLogin()
IsBinded()
}
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function() {
var that = this;
var shareObj = {
title: "", // 默认是小程序的名称(可以写slogan等)
path: '/pages/index/index', // 默认是当前页面,必须是以‘/’开头的完整路径
imgUrl: '', //自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径,支持PNG及JPG,不传入 imageUrl 则使用默认截图。显示图片长宽比是 5:4
success: function(res) {   
if (res.errMsg == 'shareAppMessage:ok') {
}
},
fail: function() { // 转发失败之后的回调       
if (res.errMsg == 'shareAppMessage:fail cancel') { // 用户取消转发
wx.showToast({
title: '取消转发',
})
} else if (res.errMsg == 'shareAppMessage:fail') { // 转发失败,其中 detail message 为详细失败信息
wx.showToast({
title: '转发失败,重新分享',
})
}
},
complete: function() {
}
};
return shareObj;
},
getUserInfo: function(e) {
var that = this;
if (e.detail.userInfo != null) {
app.globalData.UserInfo = e.detail.userInfo
if (this.data.phoneNum == "") {
wx.showToast({
title: '请输入手机号码',
})
return false;
} else if (!(/^1[34578]\d{9}$/.test(this.data.phoneNum))) {
wx.showToast({
title: '号码不正确',
})
return false;
}
let userInfos = app.globalData.UserInfo
let method = isBindByPhone;
let params = [{
"OpenId": app.globalData.OpenId,
"Phone": this.data.phoneNum,
"NickName": userInfos.nickName,
"Sex": userInfos.gender,
"Province": userInfos.province,
"City": userInfos.city,
"Country": userInfos.country,
"HeadImgUrl": userInfos.avatarUrl,
"UnionId": ""
}];
network.transfer_request(method, params, function(res) {
app.globalData.PhoneNum = that.data.PhoneNum;
Bind(that)
})
} else {
wx.showModal({
title: '授权提示',
content: '请给予权限,不涉及个人隐私',
showCancel: false
})
}
}
})

+ 1
- 0
pages/index/index.json View File

@ -0,0 +1 @@
{}

+ 11
- 0
pages/index/index.wxml View File

@ -0,0 +1,11 @@
<!--index.wxml-->
<image class='img1' src='/imgs/tuceng.png'></image>
<view class='view2'>
<input class='input' placeholder='请输入手机号' type='number' bindinput="getPhoneNum" maxlength="11" placeholder-style='color:rgb(202, 202, 202)' ></input>
</view>
<button open-type="getUserInfo" bindgetuserinfo="getUserInfo" class='denglu'>绑定</button>
<official-account class="wxmp"></official-account>

+ 54
- 0
pages/index/index.wxss View File

@ -0,0 +1,54 @@
/**index.wxss**/
page {
background: #fff;
}
.img1 {
margin-left: 35%;
height: 150px;
width: 150px;
margin-top: 20%;
}
.view1 {
color: #fff;
font-size: 25px;
margin-top: -10%;
margin-left: 30%;
margin-bottom: 10%;
}
.view2 {
border-top: 1px solid #fafafa;
border-right: 1px solid #fafafa;
border-left: 1px solid #fafafa;
border-bottom: 1px solid #fafafa;
width: 90%;
height: 40px;
margin-left: 5%;
margin-right: 5%;
border-radius: 0.2em;
margin-top: 10%;
}
.input {
text-align: center;
height: 40px;
background: #fafafa;
}
.denglu {
margin-left: 5%;
margin-top: 10%;
width: 90%;
margin-right: 5%;
color: #fff;
background: linear-gradient(to right, #39c4fd, #539eef);
}
.wxmp {
position: fixed;
bottom: 0rpx;
width: 100%;
}

+ 15
- 0
pages/logs/logs.js View File

@ -0,0 +1,15 @@
//logs.js
const util = require('../../utils/util.js')
Page({
data: {
logs: []
},
onLoad: function () {
this.setData({
logs: (wx.getStorageSync('logs') || []).map(log => {
return util.formatTime(new Date(log))
})
})
}
})

+ 3
- 0
pages/logs/logs.json View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "查看启动日志"
}

+ 6
- 0
pages/logs/logs.wxml View File

@ -0,0 +1,6 @@
<!--logs.wxml-->
<view class="container log-list">
<block wx:for="{{logs}}" wx:for-item="log">
<text class="log-item">{{index + 1}}. {{log}}</text>
</block>
</view>

+ 8
- 0
pages/logs/logs.wxss View File

@ -0,0 +1,8 @@
.log-list {
display: flex;
flex-direction: column;
padding: 40rpx;
}
.log-item {
margin: 10rpx;
}

+ 84
- 0
pages/main/main.js View File

@ -0,0 +1,84 @@
// pages/main/main.js
// pages/indexL/indexL.js
var network = require("../../utils/net.js")
var app = getApp()
function WeixinLogin() {
let method = app.globalData.LoginPath;
let params = [app.globalData.AppId, app.globalData.OpenId];
network.transfer_request(method, params, function(res) {
app.globalData.Cookie = res.result;
})
}
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function() {
},
saleForecast: function(e) {
wx.navigateTo({
url: '/pages/saleForecastList/saleForecastList',
})
},
})

+ 3
- 0
pages/main/main.json View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "首页"
}

+ 10
- 0
pages/main/main.wxml View File

@ -0,0 +1,10 @@
<!--pages/main/main.wxml-->
<image class='index_img' src='/imgs/main-bg.jpg' mode='widthFix'></image>
<view class="body-box">
<view class="ico" catchtap='saleForecast'>
<image src="/imgs/saleForecast.png"></image>
<text class='text'>销售预报</text>
</view>
</view>

+ 33
- 0
pages/main/main.wxss View File

@ -0,0 +1,33 @@
/* pages/main/main.wxss */
page{
background: rgb(240, 239, 245)
}
.index_img{
width: 100%;
}
.body-box {
width: 100%;
display: flex;
flex-direction: row;
flex-wrap: wrap;
background: white;
padding-top: 20rpx;
padding-bottom: 20rpx;
}
.ico {
width: 25%;
display: flex;
flex-direction: column;
align-items: center;
font-size: 12px;
box-sizing: border-box;
padding-bottom: 10px;
padding-top: 10px;
}
.ico image {
width: 90rpx;
height: 90rpx;
margin-bottom: 10rpx;
}

+ 66
- 0
pages/my/my.js View File

@ -0,0 +1,66 @@
// pages/my/my.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

+ 1
- 0
pages/my/my.json View File

@ -0,0 +1 @@
{}

+ 2
- 0
pages/my/my.wxml View File

@ -0,0 +1,2 @@
<!--pages/my/my.wxml-->
<text>pages/my/my.wxml</text>

+ 1
- 0
pages/my/my.wxss View File

@ -0,0 +1 @@
/* pages/my/my.wxss */

+ 730
- 0
pages/saleForecastList/Detail/Detail.js View File

@ -0,0 +1,730 @@
// pages/orderinfo/orderinfo.js
var app = getApp()
var network = require("../../../utils/net.js")
var dateTimePicker = require('../../../utils/dateTimePicker.js');
var utilll = require('../../../utils/util.js');
var timechage = require("../../../utils/dateTimeUtil.js")
var orderID = 0;
function setTime(that) {
// 获取完整的年月日 时分秒,以及默认显示的数组
var obj1 = dateTimePicker.dateTimePicker(that.data.startYear, that.data.endYear, that.data.loadTime);
// 精确到分的处理,将数组的秒去掉
var lastArray = obj1.dateTimeArray.pop();
var lastTime = obj1.dateTime.pop();
that.setData({
dateTimeArray1: obj1.dateTimeArray,
dateTime1: obj1.dateTime
});
}
function GetAccountingUnit(that, inputValue) {
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetAccountingUnit";
let params = [{
"InputValue": inputValue,
"PageIndex": 0,
"PageSize": 100
}];
network.transfer_request(method, params, function (res) {
that.setData({
currency: res.result,
unit: res.result
})
})
that.setData({
which: "会计部门"
})
}
function GetCustomer(that, inputValue) {
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetCustomer";
let params = [{
"InputValue": inputValue,
"PageIndex": 0,
"PageSize": 100
}];
network.transfer_request(method, params, function (res) {
that.setData({
currency: res.result,
customer: res.result
})
})
that.setData({
which: "购货客户"
})
}
function GetDepartment(that, inputValue) {
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetDepartment";
let params = [{
"InputValue": inputValue,
"PageIndex": 0,
"PageSize": 100
}];
network.transfer_request(method, params, function (res) {
that.setData({
currency: res.result,
department: res.result
})
})
that.setData({
which: "部门"
})
}
function GetSaleKind(that, v) {
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetSaleKind";
let params = [{
"InputValue": v,
"PageIndex": 0,
"PageSize": 100
}];
network.transfer_request(method, params, function (res) {
that.setData({
currency: res.result,
saletype: res.result
})
})
that.setData({
which: "销售类型"
})
}
function GetGoodsWithUnitPrice(that, v, date) {
let unitID = that.data.unit[that.data.isUnit].ID;
let customerID = that.data.customer[that.data.customerIndex].ID;
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetGoodsWithUnitPrice";
let params = [{
"Input": v,
"PageIndex": 0,
"PageSize": 100,
"Customer_ID": customerID,
"AccountingUnit_ID": unitID,
"Date": date
}];
network.transfer_request(method, params, function (res) {
that.setData({
goods: res.result,
})
})
}
Page({
/**
* 页面的初始数据
*/
data: {
/**
* 页面配置
*/
which: "",
winWidth: 0,
winHeight: 0,
// tab切换
currentTab: 0,
obj: [],
goods: [],
idx: 0,
currency: [],
saletypeIndex: 0,
saletype: [{
ID: 0,
Name: "请选择销售类型"
}],
departmentIndex: 0,
department: [{
ID: 0,
Name: "请选择销售部门"
}],
customerIndex: 0,
customer: [{
ID: 0,
Name: "请选择客户"
}],
isUnit: 0,
unit: [{
ID: 0,
Name: "请选择会计单位"
}],
addrs: "",
dateTimeArray1: null,
dateTime1: null,
startYear: 2018,
endYear: 2030,
loadTime: ""
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var that = this;
let ID = Number(options.ID);
orderID = ID;
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/EmployeeRpc/SaleForecastRpc/Load";
let params = [ID];
network.transfer_request(method, params, function (res) {
let customerOld = [{
ID: res.result.Customer_ID,
Name: res.result.Customer_Name
}]
let unitOld = [{
ID: res.result.AccountingUnit_ID,
Name: res.result.AccountingUnit_Name
}]
let departmentOld = [{
ID: res.result.Department_ID,
Name: res.result.Department_Name
}]
let saletypeOld = [{
ID: res.result.SaleKind_ID,
Name: res.result.SaleKind_Name
}]
let addrrrr = res.result.DeliverAddress
let loadtimee = timechage.formatTimeTwo(res.result.Date.substring(6, 19), 'Y-M-D h:m')
let details = [];
for (var i = 0; i < res.result.Details.length; i++) {
if (res.result.Details[i].RightRatio == null) {
var rightRatio = 1
}
if (res.result.Details[i].LeftRatio == null) {
var leftRatio = 1
}
var dmo = {
"Goods_Name": res.result.Details[i].Goods_Name,
"SaleGoods_ID": res.result.Details[i].SaleGoods_ID,
"goodsNum": res.result.Details[i].UnitNum,
"goodsSecondNum": res.result.Details[i].SecondNumber,
"Price": res.result.Details[i].Price,
"PolicyPrice": res.result.Details[i].PolicyPrice,
"Goods_MainUnitRatio": res.result.Details[i].Goods_MainUnitRatio,
"Goods_SecondUnitRatio": res.result.Details[i].Goods_SecondUnitRatio,
"Goods_UnitConvertDirection": res.result.Details[i].Goods_UnitConvertDirection,
"RightRatio": rightRatio,
"LeftRatio": leftRatio,
"ID": res.result.Details[i].ID
}
details.push(dmo)
}
that.setData({
customer: customerOld,
unit: unitOld,
department: departmentOld,
saletype: saletypeOld,
addrs: addrrrr,
loadTime: loadtimee,
obj: details
})
setTime(that)
})
/**
* 获取系统信息
*/
wx.getSystemInfo({
success: function (res) {
that.setData({
winWidth: res.windowWidth,
winHeight: res.windowHeight
});
}
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 滑动切换tab
*/
bindChange: function (e) {
var that = this;
that.setData({
currentTab: e.detail.current
});
},
/**
* 点击tab切换
*/
swichNav: function (e) {
var that = this;
if (this.data.currentTab === e.target.dataset.current) {
return false;
} else {
that.setData({
currentTab: e.target.dataset.current
})
}
},
getAddrs: function (e) {
this.data.addrs = e.detail.value;
},
add: function (e) {
let newobj = {
Goods_Name: "请选择存货"
};
this.data.obj.push(newobj)
let aaa = this.data.obj;
this.setData({
obj: aaa,
})
},
deleteItem: function (e) {
let idx = e.target.dataset.idx;
let deleteobj = this.data.obj;
deleteobj.splice(idx, 1)
this.setData({
obj: deleteobj
})
},
getGoodsNum: function (e) {
//值:
//e.detail.value
//设置的id
//e.target.dataset.index
let value = e.detail.value;
let idx = e.target.dataset.idx;
let end = value.charAt(value.length - 1)
if (end != ".") {
this.data.obj[idx].goodsNum = Number(value);
let Goods_MainUnitRatio = this.data.obj[idx].Goods_MainUnitRatio
let Goods_SecondUnitRatio = this.data.obj[idx].Goods_SecondUnitRatio
let Goods_UnitConvertDirection = this.data.obj[idx].Goods_UnitConvertDirection
let RightRatio = this.data.obj[idx].RightRatio
let LeftRatio = this.data.obj[idx].LeftRatio
var numberNumber = Number(value) / RightRatio * LeftRatio;
if (Goods_UnitConvertDirection == 0 || Goods_UnitConvertDirection == 1) {
let secondNumber = numberNumber / (Goods_MainUnitRatio) * (Goods_SecondUnitRatio);
this.data.obj[idx].goodsSecondNum = Number(secondNumber)
this.setData({
obj: this.data.obj
})
}
}
},
getSecondNum: function (e) {
let value = e.detail.value;
let idx = e.target.dataset.idx;
let end = value.charAt(value.length - 1)
if (end != ".") {
this.data.obj[idx].goodsSecondNum = Number(value);
let Goods_MainUnitRatio = this.data.obj[idx].Goods_MainUnitRatio
let Goods_SecondUnitRatio = this.data.obj[idx].Goods_SecondUnitRatio
let Goods_UnitConvertDirection = this.data.obj[idx].Goods_UnitConvertDirection
let RightRatio = this.data.obj[idx].RightRatio
let LeftRatio = this.data.obj[idx].LeftRatio
var numberNumber = Number(value) / LeftRatio * RightRatio;
if (Goods_UnitConvertDirection == 0 || Goods_UnitConvertDirection == 2) {
let unitnumber = numberNumber / (Goods_SecondUnitRatio) * (Goods_MainUnitRatio);
this.data.obj[idx].goodsNum = Number(unitnumber)
this.setData({
obj: this.data.obj
})
}
}
},
getPrice: function (e) {
let value = e.detail.value;
let idx = e.target.dataset.idx;
this.data.obj[idx].Price = Number(value);
},
powerDrawer: function (e) {
let that = this;
let x = e.currentTarget.dataset.x;
if (x == "会计部门") {
GetAccountingUnit(that, "")
} else if (x == "购货客户") {
GetCustomer(that, "")
} else if (x == "部门") {
GetDepartment(that, "")
} else if (x == "销售类型") {
GetSaleKind(that, "")
}
let currentStatu = e.currentTarget.dataset.statu;
this.util(currentStatu)
},
powerDrawer1: function (e) {
let that = this;
let currentStatu = e.currentTarget.dataset.statu;
let timestamp = Date.parse(new Date());
let date = "/Date(" + timestamp + "+0800)/";
GetGoodsWithUnitPrice(that, "", date)
if (e.currentTarget.dataset.idx != null) {
let idxx = e.currentTarget.dataset.idx;
this.setData({
idx: idxx
})
}
this.util1(currentStatu)
},
itemclick: function (e) {
var that = this;
var name = e.currentTarget.dataset.name;
var id = e.currentTarget.dataset.id;
var which = e.currentTarget.dataset.item;
var idx = e.currentTarget.dataset.idx;
if (which == "会计部门") {
that.setData({
isUnit: idx
})
} else if (which == "购货客户") {
that.setData({
customerIndex: idx
})
} else if (which == "部门") {
that.setData({
departmentIndex: idx
})
} else if (which == "销售类型") {
that.setData({
saletypeIndex: idx
})
}
this.setData({
showModalStatus: false,
})
},
itemclick1: function (e) {
var that = this;
var name = e.currentTarget.dataset.name;
var id = e.currentTarget.dataset.data.SaleGoods_ID;
var pp = e.currentTarget.dataset.policyprice;
var price = e.currentTarget.dataset.data.Price;
var Goods_MainUnitRatio = e.currentTarget.dataset.data.Goods_MainUnitRatio
var Goods_SecondUnitRatio = e.currentTarget.dataset.data.Goods_SecondUnitRatio
var Goods_UnitConvertDirection = e.currentTarget.dataset.data.Goods_UnitConvertDirection
if (e.currentTarget.dataset.data.RightRatio == null) {
this.data.obj[this.data.idx].RightRatio = Number(1)
}
if (e.currentTarget.dataset.data.LeftRatio == null) {
this.data.obj[this.data.idx].LeftRatio = Number(1)
}
this.data.obj[this.data.idx].Goods_MainUnitRatio = Number(Goods_MainUnitRatio)
this.data.obj[this.data.idx].Goods_SecondUnitRatio = Number(Goods_SecondUnitRatio)
this.data.obj[this.data.idx].SaleGoods_ID = Number(id);
this.data.obj[this.data.idx].Goods_Name = name;
this.data.obj[this.data.idx].Price = Number(price)
this.data.obj[this.data.idx].PolicyPrice = Number(pp);
this.data.obj[this.data.idx].Goods_UnitConvertDirection = Number(Goods_UnitConvertDirection)
this.setData({
showModalStatus1: false,
obj: that.data.obj
})
},
select: function (e) {
var that = this;
var which = e.currentTarget.dataset.item;
var value = e.detail.value;
if (which == "会计部门") {
GetAccountingUnit(that, value)
} else if (which == "购货客户") {
GetCustomer(that, value)
} else if (which == "部门") {
GetDepartment(that, value)
} else if (which == "销售类型") {
GetSaleKind(that, value)
}
},
select1: function (e) {
var that = this;
var value = e.detail.value;
let timestamp = Date.parse(new Date());
let date = "/Date(" + timestamp + "+0800)/";
GetGoodsWithUnitPrice(that, value, date)
},
submitForm: function () {
let unitID = this.data.unit[this.data.isUnit].ID;
let customerID = this.data.customer[this.data.customerIndex].ID;
let departmentID = this.data.department[this.data.departmentIndex].ID;
let saletypeID = this.data.saletype[this.data.saletypeIndex].ID;
let year = this.data.dateTimeArray1[0][this.data.dateTime1[0]]
let month = this.data.dateTimeArray1[1][this.data.dateTime1[1]]
let date = this.data.dateTimeArray1[2][this.data.dateTime1[2]]
let hour = this.data.dateTimeArray1[3][this.data.dateTime1[3]]
let minu = this.data.dateTimeArray1[4][this.data.dateTime1[4]]
let stringTime = year + "/" + month + "/" + date + " " + hour + ":" + minu + ":00"
let timestamp2 = Date.parse(new Date(stringTime));
let update = "/Date(" + timestamp2 + "+0800)/";
if (customerID == 0) {
wx.showToast({
title: '请选择购货客户'
})
return;
}
if (unitID == 0) {
wx.showToast({
title: '请选择会计单位'
})
return;
}
if (departmentID == 0) {
wx.showToast({
title: '请选择销售部门',
})
return;
}
if (saletypeID == 0) {
wx.showToast({
title: '请选择销售类型',
})
return;
}
if (this.data.addrs == "") {
wx.showToast({
title: '请填写送货地址',
})
return;
}
let detailsArray = [];
for (var i = 0; i < this.data.obj.length; i++) {
if (this.data.obj[i].Goods_Name == "请选择存货") {
wx.showToast({
title: '存货不能为空',
})
return;
}
if (this.data.obj[i].goodsNum == null) {
wx.showToast({
title: '报货数量不能为空',
})
return;
}
if (this.data.obj[i].goodsSecondNum == null) {
wx.showToast({
title: '辅数量不能为空',
})
return;
}
var olddID = 0;
if (this.data.obj[i].ID == null) {
olddID = 0
} else {
olddID = Number(this.data.obj[i].ID)
}
var dmo = {
SaleGoods_ID: this.data.obj[i].SaleGoods_ID,
UnitNum: this.data.obj[i].goodsNum,
SecondNumber: this.data.obj[i].goodsSecondNum,
Price: this.data.obj[i].Price,
PolicyPrice: this.data.obj[i].PolicyPrice,
ID: olddID
}
detailsArray.push(dmo)
}
let method = '/MainSystem/B3MiniProgramRpc/Rpcs/ManagerRpc/OrderRpc/Update';
let params = [{
"Customer_ID": customerID,
"LoadTime": update,
"AccountingUnit_ID": unitID,
"Department_ID": departmentID,
"SaleKind_ID": saletypeID,
"DeliverAddress": this.data.addrs,
"Details": detailsArray,
"ID": orderID
}];
network.transfer_request(method, params, function (res) {
if (res.result == null) {
wx.showModal({
title: '提示',
content: '修改成功,是否返回上级列表',
success: function (res) {
if (res.cancel) {
} else {
wx.navigateBack({
delta: 1
})
}
},
fail: function (res) { }
})
}
})
},
changeDateTime1(e) {
this.setData({
dateTime1: e.detail.value
});
},
util: function (currentStatu) {
/* 动画部分 */
// 第1步:创建动画实例
var animation = wx.createAnimation({
duration: 200, //动画时长
timingFunction: "linear", //线性
delay: 0 //0则不延迟
});
// 第2步:这个动画实例赋给当前的动画实例
this.animation = animation;
// 第3步:执行第一组动画
animation.opacity(0).rotateX(-100).step();
// 第4步:导出动画对象赋给数据对象储存
this.setData({
animationData: animation.export()
})
// 第5步:设置定时器到指定时候后,执行第二组动画
setTimeout(function () {
// 执行第二组动画
animation.opacity(1).rotateX(0).step();
// 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象
this.setData({
animationData: animation
})
//关闭
if (currentStatu == "close") {
this.setData({
showModalStatus: false,
});
}
}.bind(this), 200)
// 显示
if (currentStatu == "open") {
// 调用函数时,传入new Date()参数,返回值是日期和时间
// var timet = utilll.formatTime(new Date());
// 再通过setData更改Page()里面的data,动态更新页面的数据
this.setData({
// time: timet,
showModalStatus: true,
});
}
},
util1: function (currentStatu) {
/* 动画部分 */
// 第1步:创建动画实例
var animation = wx.createAnimation({
duration: 200, //动画时长
timingFunction: "linear", //线性
delay: 0 //0则不延迟
});
// 第2步:这个动画实例赋给当前的动画实例
this.animation = animation;
// 第3步:执行第一组动画
animation.opacity(0).rotateX(-100).step();
// 第4步:导出动画对象赋给数据对象储存
this.setData({
animationData: animation.export()
})
// 第5步:设置定时器到指定时候后,执行第二组动画
setTimeout(function () {
// 执行第二组动画
animation.opacity(1).rotateX(0).step();
// 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象
this.setData({
animationData: animation
})
//关闭
if (currentStatu == "close") {
this.setData({
showModalStatus1: false
});
}
}.bind(this), 200)
// 显示
if (currentStatu == "open") {
// 调用函数时,传入new Date()参数,返回值是日期和时间
// var timet = utilll.formatTime(new Date());
// 再通过setData更改Page()里面的data,动态更新页面的数据
this.setData({
// time: timet,
showModalStatus1: true
});
}
}
})

+ 3
- 0
pages/saleForecastList/Detail/Detail.json View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "预报详情"
}

+ 168
- 0
pages/saleForecastList/Detail/Detail.wxml View File

@ -0,0 +1,168 @@
<!--pages/orderinfo/orderinfo.wxml-->
<view class="swiper-tab">
<view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">基本信息</view>
<view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">订单详细</view>
</view>
<swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 31}}px" bindchange="bindChange">
<!-- 基本信息 -->
<swiper-item class="swiper-items1">
<scroll-view scroll-x="false" scroll-y="true" class='scroll-views'>
<view class='baseitem'>
<text class='baseitem_key'>购货客户</text>
<!-- <picker class='baseitem_value' mode='selector' bindchange='choseCustomer' value='{{customerIndex}}' range-key="name" range='{{customer}}'>
<text>{{customer[customerIndex].name}}</text>
</picker> -->
<view class='baseitem_value' data-x='购货客户' data-item='{{which}}'>
{{customer[customerIndex].Name}}
</view>
</view>
<view class='baseitem'>
<text class='baseitem_key'>发货时间</text>
<picker class='baseitem_value' mode="multiSelector" value="{{dateTime1}}" bindchange="changeDateTime1" range="{{dateTimeArray1}}">
<view class="tui-picker-detail">
{{dateTimeArray1[0][dateTime1[0]]}}-{{dateTimeArray1[1][dateTime1[1]]}}-{{dateTimeArray1[2][dateTime1[2]]}} {{dateTimeArray1[3][dateTime1[3]]}}:{{dateTimeArray1[4][dateTime1[4]]}}
</view>
</picker>
</view>
<view class='baseitem'>
<text class='baseitem_key'>会计单位</text>
<!-- <picker class='baseitem_value' mode='selector' bindchange='choseUnit' value='{{isUnit}}' range-key="Name" range='{{unit}}'>
<text>{{unit[isUnit].Name}}</text>
</picker> -->
<view class='baseitem_value' bindtap="powerDrawer" data-statu="open" data-x='会计部门' data-item='{{which}}'>
{{unit[isUnit].Name}}
</view>
</view>
<view class='baseitem'>
<text class='baseitem_key'>销售部门</text>
<!-- <picker class='baseitem_value' mode='selector' bindchange='choseDepartment' value='{{departmentIndex}}' range-key="name" range='{{department}}'>
<text>{{department[departmentIndex].name}}</text>
</picker> -->
<view class='baseitem_value' bindtap="powerDrawer" data-statu="open" data-x='部门' data-item='{{which}}'>
{{department[departmentIndex].Name}}
</view>
</view>
<view class='baseitem'>
<text class='baseitem_key'>销售类型</text>
<!-- <picker class='baseitem_value' mode='selector' bindchange='choseSaletype' value='{{saletypeIndex}}' range-key="name" range='{{saletype}}'>
<text>{{saletype[saletypeIndex].name}}</text>
</picker> -->
<view class='baseitem_value' bindtap="powerDrawer" data-statu="open" data-x='销售类型' data-item='{{which}}'>
{{saletype[saletypeIndex].Name}}
</view>
</view>
<view class='baseitem'>
<text class='baseitem_key'>送货地址</text>
<input class='baseitem_value' bindinput='getAddrs' placeholder='请输入送货地址' placeholder-style='color:rgb(202, 202, 202)' value="{{addrs}}"></input>
</view>
<!-- <view class='baseitem'>
<text class='baseitem_key' space="emsp">摘 要</text>
<input class='baseitem_value' bindinput='getRemark' placeholder='请输入摘要' placeholder-style='color:rgb(202, 202, 202)'></input>
</view> -->
</scroll-view>
<view class="drawer_screen" bindtap="powerDrawer" data-item='{{which}}' data-statu="close" wx:if="{{showModalStatus}}"></view>
<!--content-->
<!--使用animation属性指定需要执行的动画-->
<view animation="{{animationData}}" data-item='{{which}}' class="drawer_box" wx:if="{{showModalStatus}}">
<!--drawer content-->
<view class='top' data-item='{{which}}'>
<input data-item='{{which}}' class="sousuo" bindinput="select" placeholder='请输入搜索'>
</input>
</view>
<view class="drawer_content">
<block wx:for="{{currency}}" wx:key="item" wx:for-index="idx">
<view class="grid1" data-item='{{which}}' catchtap='itemclick' data-idx='{{idx}}' data-ID="{{item.ID}}" data-Name='{{item.Name}}'>
<text class='text3'>{{item.Name}}</text>
</view>
</block>
</view>
<view class="btn_ok" bindtap="powerDrawer" data-statu="close">取消</view>
</view>
</swiper-item>
<!-- 订单详细 -->
<swiper-item class="swiper-items2">
<scroll-view scroll-x="false" scroll-y="true" class='scroll-views'>
<view class='main-body'>
<block wx:for="{{obj}}" wx:key="item" wx:for-index="idx">
<!-- <template is="fodder" data="{{...item}}"></template> -->
<view class='itemView'>
<view class='baseitem'>
<text class='baseitem_key2'>存货名称</text>
<view class='baseitem_value2' bindtap="powerDrawer1" data-statu="open" data-idx='{{idx}}'>
{{obj[idx].Goods_Name}}
</view>
</view>
<view class='twogroup'>
<view class='baseitem'>
<text class='baseitem_key1'>报货数量</text>
<input class='baseitem_value1' bindinput='getGoodsNum' placeholder='请输入报货数量' type='digit' placeholder-style='color:rgb(202, 202, 202)' data-idx='{{idx}}' value='{{obj[idx].goodsNum}}'></input>
</view>
<view class='baseitem'>
<text class='baseitem_key1' space='ensp'>辅 数 量</text>
<input class='baseitem_value1' bindinput='getSecondNum' placeholder='请输入辅数量' type='digit' placeholder-style='color:rgb(202, 202, 202)' data-idx='{{idx}}' value='{{obj[idx].goodsSecondNum}}'></input>
</view>
</view>
<view class='twogroup'>
<view class='baseitem'>
<text class='baseitem_key1' space='emsp'>单 价</text>
<input class='baseitem_value1' type='digit' bindinput='getPrice' placeholder='请输入单价' placeholder-style='color:rgb(202, 202, 202)' data-idx='{{idx}}' value='{{obj[idx].Price}}'></input>
</view>
<view class='baseitem'>
<text class='baseitem_key1'>政策单价</text>
<text class='baseitem_value1' data-idx='{{idx}}'>{{obj[idx].PolicyPrice}}</text>
</view>
</view>
<view class='delete' catchtap='deleteItem' data-idx='{{idx}}'>删除</view>
</view>
</block>
<view class='add' catchtap='add'>
<image class="ico" src="/imgs/tianjia.png"></image>
</view>
</view>
<!-- <template name='fodder'>
</template> -->
<button class='submit' catchtap='submitForm'>提交</button>
</scroll-view>
<view class="drawer_screen" bindtap="powerDrawer1" data-statu="close" wx:if="{{showModalStatus1}}"></view>
<!--content-->
<!--使用animation属性指定需要执行的动画-->
<view animation="{{animationData}}" class="drawer_box" wx:if="{{showModalStatus1}}">
<!--drawer content-->
<view class='top'>
<input input class="sousuo" bindinput="select1" placeholder='请输入搜索'>
</input>
</view>
<view class="drawer_content">
<block wx:for="{{goods}}" wx:key="item">
<view class="grid1" catchtap='itemclick1' data-idx='{{idx}}' data-Name='{{item.Goods_Name}}' data-policyprice='{{item.PolicyPrice}}' data-data='{{item}}'>
<text class='text3'>{{item.Goods_Name}}</text>
</view>
</block>
</view>
<view class="btn_ok" bindtap="powerDrawer1" data-statu="close">取消</view>
</view>
</swiper-item>
</swiper>

+ 214
- 0
pages/saleForecastList/Detail/Detail.wxss View File

@ -0,0 +1,214 @@
/* pages/orderinfo/orderinfo.wxss */
page {
background: rgb(240, 239, 245);
}
.swiper-tab {
width: 100%;
text-align: center;
line-height: 80rpx;
background: white;
display: flex;
flex-direction: row;
justify-content: space-around;
border-bottom: 0.2rpx solid rgb(223, 218, 218);
}
.swiper-tab-list {
font-size: 30rpx;
/* display: inline-block; */
width: 25%;
color: #777;
}
.on {
color: #2788f8;
border-bottom: 2rpx solid #2788f8;
}
.swiper-box {
display: block;
height: 100%;
width: 100%;
overflow: hidden;
}
.swiper-items1 {
height: 100%;
padding-top: 3%;
}
.swiper-items2 {
height: 100%;
}
.scroll-views {
height: 100%;
}
.baseitem {
background: #fff;
width: 100%;
border-bottom: 0.1px solid #dbdbdb;
display: flex;
flex-direction: row;
align-items: center;
padding-top: 20rpx;
padding-bottom: 20rpx;
}
.twogroup {
display: flex;
flex-direction: row;
}
.baseitem_key {
color: #666;
width: 20%;
margin-left: 5%;
}
.baseitem_value {
margin-left: 5%;
width: 70%;
color: rgb(48, 48, 48);
}
.baseitem_key2 {
color: #666;
width: 20%;
font-size: 30rpx;
margin-left: 10rpx;
}
.baseitem_value2 {
color: rgb(48, 48, 48);
font-size: 30rpx;
}
.baseitem_key1 {
color: #666;
width: 40%;
font-size: 30rpx;
margin-left: 10rpx;
}
.baseitem_value1 {
color: rgb(48, 48, 48);
font-size: 30rpx;
margin-left: 20rpx;
width: 60%;
}
::-webkit-scrollbar {
width: 0;
height: 0;
color: transparent;
}
.add {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
border-left: none;
background: #fff;
width: 100%;
margin-top: 20rpx;
border-top: 0.5px solid #e0e0e0;
border-bottom: 0.5px solid #e0e0e0;
padding-top: 20rpx;
padding-bottom: 20rpx;
}
.ico {
height: 42rpx;
width: 42rpx;
}
.delete {
width: 100%;
padding-top: 20rpx;
padding-bottom: 20rpx;
color: red;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
background: #fff;
font-size: 30rpx;
}
.itemView {
margin-top: 20rpx;
}
.submit {
margin-top: 50rpx;
margin-bottom: 30rpx;
}
.drawer_screen {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 1000;
background: #000;
opacity: 0.5;
overflow: hidden;
}
.sousuo {
margin-right: 10%;
margin-left: 10%;
text-align: center;
background: #d6d8da;
height: 40px;
font-size: 28rpx;
}
.drawer_content {
height: 500rpx;
overflow-y: scroll; /*超出父盒子高度可滚动*/
}
.drawer_box {
width: 650rpx;
overflow: hidden;
position: fixed;
top: 50%;
left: 0;
z-index: 1001;
background: #fafafa;
margin: -150px 50rpx 0 50rpx;
border-radius: 3px;
}
.btn_ok {
padding: 10px;
font: 20px "microsoft yahei";
text-align: center;
border-top: 1px solid #e8e8ea;
color: #3cc51f;
}
.top {
height: 20%;
justify-content: center;
align-items: center;
}
.grid1 {
width: 100%;
border-bottom: 1px solid #c3c3c3;
padding-top: 5px;
padding-bottom: 10px;
}
.text3 {
font-size: 18px;
color: rgb(48, 48, 48);
}

+ 628
- 0
pages/saleForecastList/newBill/newBill.js View File

@ -0,0 +1,628 @@
var app = getApp()
var network = require("../../../utils/net.js")
var dateTimePicker = require('../../../utils/dateTimePicker.js');
var utilll = require('../../../utils/util.js');
function GetAccountingUnit(that, inputValue) {
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetAccountingUnit";
let params = [{
"InputValue": inputValue,
"PageIndex": 0,
"PageSize": 100
}];
network.transfer_request(method, params, function (res) {
that.setData({
currency: res.result,
unit: res.result
})
})
that.setData({
which: "会计部门"
})
}
function GetCustomer(that, inputValue) {
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetCustomer";
let params = [{
"InputValue": inputValue,
"PageIndex": 0,
"PageSize": 100
}];
network.transfer_request(method, params, function (res) {
that.setData({
currency: res.result,
customer: res.result
})
})
that.setData({
which: "购货客户"
})
}
function GetDepartment(that, inputValue) {
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetDepartment";
let params = [{
"InputValue": inputValue,
"PageIndex": 0,
"PageSize": 100
}];
network.transfer_request(method, params, function (res) {
that.setData({
currency: res.result,
department: res.result
})
})
that.setData({
which: "部门"
})
}
function GetSaleKind(that, v) {
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetSaleKind";
let params = [{
"InputValue": v,
"PageIndex": 0,
"PageSize": 100
}];
network.transfer_request(method, params, function (res) {
that.setData({
currency: res.result,
saletype: res.result
})
})
that.setData({
which: "销售类型"
})
}
function GetGoodsWithUnitPrice(that, v, date) {
let unitID = that.data.unit[that.data.isUnit].ID;
let customerID = that.data.customer[that.data.customerIndex].ID;
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetGoodsWithUnitPrice";
let params = [{
"Input": v,
"PageIndex": 0,
"PageSize": 100,
"Customer_ID": customerID,
"AccountingUnit_ID": unitID,
"Date": date
}];
network.transfer_request(method, params, function (res) {
that.setData({
goods: res.result,
})
})
}
Page({
/**
* 页面的初始数据
*/
data: {
/**
* 页面配置
*/
which: "",
winWidth: 0,
winHeight: 0,
// tab切换
currentTab: 0,
obj: [],
goods: [],
idx: 0,
currency: [],
saletypeIndex: 0,
saletype: [{
ID: 0,
Name: "请选择销售类型"
}],
departmentIndex: 0,
department: [{
ID: 0,
Name: "请选择销售部门"
}],
customerIndex: 0,
customer: [{
ID: 0,
Name: "请选择客户"
}],
isUnit: 0,
unit: [{
ID: 0,
Name: "请选择会计单位"
}],
addrs: "",
dateTimeArray: null,
dateTime: null,
dateTimeArray1: null,
dateTime1: null,
startYear: 2018,
endYear: 2030
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var that = this;
// 获取完整的年月日 时分秒,以及默认显示的数组
var obj1 = dateTimePicker.dateTimePicker(this.data.startYear, this.data.endYear);
// 精确到分的处理,将数组的秒去掉
var lastArray = obj1.dateTimeArray.pop();
var lastTime = obj1.dateTime.pop();
this.setData({
dateTimeArray: obj1.dateTimeArray,
dateTime: obj1.dateTime,
dateTimeArray1: obj1.dateTimeArray,
dateTime1: obj1.dateTime
});
/**
* 获取系统信息
*/
wx.getSystemInfo({
success: function (res) {
that.setData({
winWidth: res.windowWidth,
winHeight: res.windowHeight
});
}
});
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 滑动切换tab
*/
bindChange: function (e) {
var that = this;
that.setData({
currentTab: e.detail.current
});
},
/**
* 点击tab切换
*/
swichNav: function (e) {
var that = this;
if (this.data.currentTab === e.target.dataset.current) {
return false;
} else {
that.setData({
currentTab: e.target.dataset.current
})
}
},
getAddrs: function (e) {
this.data.addrs = e.detail.value;
},
add: function (e) {
let newobj = {
Goods_Name: "请选择存货"
};
this.data.obj.push(newobj)
let aaa = this.data.obj;
this.setData({
obj: aaa,
})
},
deleteItem: function (e) {
let idx = e.target.dataset.idx;
let deleteobj = this.data.obj;
deleteobj.splice(idx, 1)
this.setData({
obj: deleteobj
})
},
getGoodsNum: function (e) {
//值:
//e.detail.value
//设置的id
//e.target.dataset.index
let value = e.detail.value;
let idx = e.target.dataset.idx;
let end = value.charAt(value.length - 1)
if (end != ".") {
this.data.obj[idx].goodsNum = Number(value);
let Goods_MainUnitRatio = this.data.obj[idx].Goods_MainUnitRatio
let Goods_SecondUnitRatio = this.data.obj[idx].Goods_SecondUnitRatio
let Goods_UnitConvertDirection = this.data.obj[idx].Goods_UnitConvertDirection
let RightRatio = this.data.obj[idx].RightRatio
let LeftRatio = this.data.obj[idx].LeftRatio
var numberNumber = Number(value) / RightRatio * LeftRatio;
if (Goods_UnitConvertDirection == 0 || Goods_UnitConvertDirection == 1) {
let secondNumber = numberNumber / (Goods_MainUnitRatio) * (Goods_SecondUnitRatio);
this.data.obj[idx].goodsSecondNum = Number(secondNumber)
this.setData({
obj: this.data.obj
})
}
}
},
getSecondNum: function (e) {
let value = e.detail.value;
let idx = e.target.dataset.idx;
let end = value.charAt(value.length - 1)
if (end != ".") {
this.data.obj[idx].goodsSecondNum = Number(value);
let Goods_MainUnitRatio = this.data.obj[idx].Goods_MainUnitRatio
let Goods_SecondUnitRatio = this.data.obj[idx].Goods_SecondUnitRatio
let Goods_UnitConvertDirection = this.data.obj[idx].Goods_UnitConvertDirection
let RightRatio = this.data.obj[idx].RightRatio
let LeftRatio = this.data.obj[idx].LeftRatio
var numberNumber = Number(value) / LeftRatio * RightRatio;
if (Goods_UnitConvertDirection == 0 || Goods_UnitConvertDirection == 2) {
let unitnumber = numberNumber / (Goods_SecondUnitRatio) * (Goods_MainUnitRatio);
this.data.obj[idx].goodsNum = Number(unitnumber)
this.setData({
obj: this.data.obj
})
}
}
},
getPrice: function (e) {
let value = e.detail.value;
let idx = e.target.dataset.idx;
this.data.obj[idx].Price = Number(value);
},
powerDrawer: function (e) {
let that = this;
let x = e.currentTarget.dataset.x;
if (x == "会计部门") {
GetAccountingUnit(that, "")
} else if (x == "购货客户") {
GetCustomer(that, "")
} else if (x == "部门") {
GetDepartment(that, "")
} else if (x == "销售类型") {
GetSaleKind(that, "")
}
let currentStatu = e.currentTarget.dataset.statu;
// if (e.currentTarget.dataset.idx != null) {
// let idxx = e.currentTarget.dataset.idx;
// this.setData({
// idx: idxx
// })
// }
this.util(currentStatu)
},
powerDrawer1: function (e) {
let that = this;
let currentStatu = e.currentTarget.dataset.statu;
let timestamp = Date.parse(new Date());
let date = "/Date(" + timestamp + "+0800)/";
GetGoodsWithUnitPrice(that, "", date)
if (e.currentTarget.dataset.idx != null) {
let idxx = e.currentTarget.dataset.idx;
this.setData({
idx: idxx
})
}
this.util1(currentStatu)
},
itemclick: function (e) {
var that = this;
var name = e.currentTarget.dataset.name;
var id = e.currentTarget.dataset.id;
var which = e.currentTarget.dataset.item;
var idx = e.currentTarget.dataset.idx;
if (which == "会计部门") {
that.setData({
isUnit: idx
})
} else if (which == "购货客户") {
that.setData({
customerIndex: idx
})
} else if (which == "部门") {
that.setData({
departmentIndex: idx
})
} else if (which == "销售类型") {
that.setData({
saletypeIndex: idx
})
}
this.setData({
showModalStatus: false,
})
},
itemclick1: function (e) {
var that = this;
var name = e.currentTarget.dataset.name;
var id = e.currentTarget.dataset.data.SaleGoods_ID;
var pp = e.currentTarget.dataset.policyprice;
var price = e.currentTarget.dataset.data.Price;
var Goods_MainUnitRatio = e.currentTarget.dataset.data.Goods_MainUnitRatio
var Goods_SecondUnitRatio = e.currentTarget.dataset.data.Goods_SecondUnitRatio
var Goods_UnitConvertDirection = e.currentTarget.dataset.data.Goods_UnitConvertDirection
if (e.currentTarget.dataset.data.RightRatio == null) {
this.data.obj[this.data.idx].RightRatio = Number(1)
}
if (e.currentTarget.dataset.data.LeftRatio == null) {
this.data.obj[this.data.idx].LeftRatio = Number(1)
}
this.data.obj[this.data.idx].Goods_MainUnitRatio = Number(Goods_MainUnitRatio)
this.data.obj[this.data.idx].Goods_SecondUnitRatio = Number(Goods_SecondUnitRatio)
this.data.obj[this.data.idx].SaleGoods_ID = Number(id);
this.data.obj[this.data.idx].Goods_Name = name;
this.data.obj[this.data.idx].Price = Number(price)
this.data.obj[this.data.idx].PolicyPrice = Number(pp);
this.data.obj[this.data.idx].Goods_UnitConvertDirection = Number(Goods_UnitConvertDirection)
this.setData({
showModalStatus1: false,
obj: that.data.obj
})
},
select: function (e) {
var that = this;
var which = e.currentTarget.dataset.item;
var value = e.detail.value;
if (which == "会计部门") {
GetAccountingUnit(that, value)
} else if (which == "购货客户") {
GetCustomer(that, value)
} else if (which == "部门") {
GetDepartment(that, value)
} else if (which == "销售类型") {
GetSaleKind(that, value)
}
},
select1: function (e) {
var that = this;
var value = e.detail.value;
let timestamp = Date.parse(new Date());
let date = "/Date(" + timestamp + "+0800)/";
GetGoodsWithUnitPrice(that, value, date)
},
submitForm: function () {
let unitID = this.data.unit[this.data.isUnit].ID;
let customerID = this.data.customer[this.data.customerIndex].ID;
let departmentID = this.data.department[this.data.departmentIndex].ID;
let saletypeID = this.data.saletype[this.data.saletypeIndex].ID;
let year = this.data.dateTimeArray1[0][this.data.dateTime1[0]]
let month = this.data.dateTimeArray1[1][this.data.dateTime1[1]]
let date = this.data.dateTimeArray1[2][this.data.dateTime1[2]]
let hour = this.data.dateTimeArray1[3][this.data.dateTime1[3]]
let minu = this.data.dateTimeArray1[4][this.data.dateTime1[4]]
let stringTime = year + "/" + month + "/" + date + " " + hour + ":" + minu + ":00"
let timestamp2 = Date.parse(new Date(stringTime));
let update = "/Date(" + timestamp2 + "+0800)/";
if (customerID == 0) {
wx.showToast({
title: '请选择购货客户'
})
return;
}
if (unitID == 0) {
wx.showToast({
title: '请选择会计单位'
})
return;
}
if (departmentID == 0) {
wx.showToast({
title: '请选择销售部门',
})
return;
}
if (saletypeID == 0) {
wx.showToast({
title: '请选择销售类型',
})
return;
}
if (this.data.addrs == "") {
wx.showToast({
title: '请填写送货地址',
})
return;
}
let detailsArray = [];
for (var i = 0; i < this.data.obj.length; i++) {
if (this.data.obj[i].Goods_Name == "请选择存货") {
wx.showToast({
title: '存货不能为空',
})
return;
}
if (this.data.obj[i].goodsNum == null) {
wx.showToast({
title: '报货数量不能为空',
})
return;
}
if (this.data.obj[i].goodsSecondNum == null) {
wx.showToast({
title: '辅数量不能为空',
})
return;
}
var dmo = {
SaleGoods_ID: this.data.obj[i].SaleGoods_ID,
UnitNum: this.data.obj[i].goodsNum,
SecondNumber: this.data.obj[i].goodsSecondNum,
Price: this.data.obj[i].Price,
PolicyPrice: this.data.obj[i].PolicyPrice
// PolicyPrice: 10
}
detailsArray.push(dmo)
}
let method = '/MainSystem/B3MiniProgramRpc/Rpcs/EmployeeRpc/SaleForecastRpc/Insert';
let params = [{
"Customer_ID": customerID,
// "LoadTime": update,
"Date": update,
"DeliveryTime": update,
"AccountingUnit_ID": unitID,
"Department_ID": departmentID,
"SaleKind_ID": saletypeID,
"DeliverAddress": this.data.addrs,
"Details": detailsArray
}];
network.transfer_request(method, params, function (res) {
if (res.result != null) {
wx.showModal({
title: '新建订单No.' + res.result,
content: '新建成功,是否返回首页',
success: function (res) {
if (res.cancel) {
} else {
wx.navigateBack({
delta: 1
})
}
},
fail: function (res) { }
})
}
})
},
changeDateTime1(e) {
this.setData({
dateTime1: e.detail.value
});
},
util: function (currentStatu) {
/* 动画部分 */
// 第1步:创建动画实例
var animation = wx.createAnimation({
duration: 200, //动画时长
timingFunction: "linear", //线性
delay: 0 //0则不延迟
});
// 第2步:这个动画实例赋给当前的动画实例
this.animation = animation;
// 第3步:执行第一组动画
animation.opacity(0).rotateX(-100).step();
// 第4步:导出动画对象赋给数据对象储存
this.setData({
animationData: animation.export()
})
// 第5步:设置定时器到指定时候后,执行第二组动画
setTimeout(function () {
// 执行第二组动画
animation.opacity(1).rotateX(0).step();
// 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象
this.setData({
animationData: animation
})
//关闭
if (currentStatu == "close") {
this.setData({
showModalStatus: false,
});
}
}.bind(this), 200)
// 显示
if (currentStatu == "open") {
// 调用函数时,传入new Date()参数,返回值是日期和时间
// var timet = utilll.formatTime(new Date());
// 再通过setData更改Page()里面的data,动态更新页面的数据
this.setData({
// time: timet,
showModalStatus: true,
});
}
},
util1: function (currentStatu) {
/* 动画部分 */
// 第1步:创建动画实例
var animation = wx.createAnimation({
duration: 200, //动画时长
timingFunction: "linear", //线性
delay: 0 //0则不延迟
});
// 第2步:这个动画实例赋给当前的动画实例
this.animation = animation;
// 第3步:执行第一组动画
animation.opacity(0).rotateX(-100).step();
// 第4步:导出动画对象赋给数据对象储存
this.setData({
animationData: animation.export()
})
// 第5步:设置定时器到指定时候后,执行第二组动画
setTimeout(function () {
// 执行第二组动画
animation.opacity(1).rotateX(0).step();
// 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象
this.setData({
animationData: animation
})
//关闭
if (currentStatu == "close") {
this.setData({
showModalStatus1: false
});
}
}.bind(this), 200)
// 显示
if (currentStatu == "open") {
// 调用函数时,传入new Date()参数,返回值是日期和时间
// var timet = utilll.formatTime(new Date());
// 再通过setData更改Page()里面的data,动态更新页面的数据
this.setData({
// time: timet,
showModalStatus1: true
});
}
}
})

+ 3
- 0
pages/saleForecastList/newBill/newBill.json View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "预报新建"
}

+ 167
- 0
pages/saleForecastList/newBill/newBill.wxml View File

@ -0,0 +1,167 @@
<view class="swiper-tab">
<view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">基本信息</view>
<view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">订单详细</view>
</view>
<swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 31}}px" bindchange="bindChange">
<!-- 基本信息 -->
<swiper-item class="swiper-items1">
<scroll-view scroll-x="false" scroll-y="true" class='scroll-views'>
<view class='baseitem'>
<text class='baseitem_key'>购货客户</text>
<!-- <picker class='baseitem_value' mode='selector' bindchange='choseCustomer' value='{{customerIndex}}' range-key="name" range='{{customer}}'>
<text>{{customer[customerIndex].name}}</text>
</picker> -->
<view class='baseitem_value' bindtap="powerDrawer" data-statu="open" data-x='购货客户' data-item='{{which}}'>
{{customer[customerIndex].Name}}
</view>
</view>
<view class='baseitem'>
<text class='baseitem_key'>发货时间</text>
<picker class='baseitem_value' mode="multiSelector" value="{{dateTime1}}" bindchange="changeDateTime1" range="{{dateTimeArray1}}">
<view class="tui-picker-detail">
{{dateTimeArray1[0][dateTime1[0]]}}-{{dateTimeArray1[1][dateTime1[1]]}}-{{dateTimeArray1[2][dateTime1[2]]}} {{dateTimeArray1[3][dateTime1[3]]}}:{{dateTimeArray1[4][dateTime1[4]]}}
</view>
</picker>
</view>
<view class='baseitem'>
<text class='baseitem_key'>会计单位</text>
<!-- <picker class='baseitem_value' mode='selector' bindchange='choseUnit' value='{{isUnit}}' range-key="Name" range='{{unit}}'>
<text>{{unit[isUnit].Name}}</text>
</picker> -->
<view class='baseitem_value' bindtap="powerDrawer" data-statu="open" data-x='会计部门' data-item='{{which}}'>
{{unit[isUnit].Name}}
</view>
</view>
<view class='baseitem'>
<text class='baseitem_key'>销售部门</text>
<!-- <picker class='baseitem_value' mode='selector' bindchange='choseDepartment' value='{{departmentIndex}}' range-key="name" range='{{department}}'>
<text>{{department[departmentIndex].name}}</text>
</picker> -->
<view class='baseitem_value' bindtap="powerDrawer" data-statu="open" data-x='部门' data-item='{{which}}'>
{{department[departmentIndex].Name}}
</view>
</view>
<view class='baseitem'>
<text class='baseitem_key'>销售类型</text>
<!-- <picker class='baseitem_value' mode='selector' bindchange='choseSaletype' value='{{saletypeIndex}}' range-key="name" range='{{saletype}}'>
<text>{{saletype[saletypeIndex].name}}</text>
</picker> -->
<view class='baseitem_value' bindtap="powerDrawer" data-statu="open" data-x='销售类型' data-item='{{which}}'>
{{saletype[saletypeIndex].Name}}
</view>
</view>
<view class='baseitem'>
<text class='baseitem_key'>送货地址</text>
<input class='baseitem_value' bindinput='getAddrs' placeholder='请输入送货地址' placeholder-style='color:rgb(202, 202, 202)'></input>
</view>
<!-- <view class='baseitem'>
<text class='baseitem_key' space="emsp">摘 要</text>
<input class='baseitem_value' bindinput='getRemark' placeholder='请输入摘要' placeholder-style='color:rgb(202, 202, 202)'></input>
</view> -->
</scroll-view>
<view class="drawer_screen" bindtap="powerDrawer" data-item='{{which}}' data-statu="close" wx:if="{{showModalStatus}}"></view>
<!--content-->
<!--使用animation属性指定需要执行的动画-->
<view animation="{{animationData}}" data-item='{{which}}' class="drawer_box" wx:if="{{showModalStatus}}">
<!--drawer content-->
<view class='top' data-item='{{which}}'>
<input data-item='{{which}}' class="sousuo" bindinput="select" placeholder='请输入搜索'>
</input>
</view>
<view class="drawer_content">
<block wx:for="{{currency}}" wx:key="item" wx:for-index="idx">
<view class="grid1" data-item='{{which}}' catchtap='itemclick' data-idx='{{idx}}' data-ID="{{item.ID}}" data-Name='{{item.Name}}'>
<text class='text3'>{{item.Name}}</text>
</view>
</block>
</view>
<view class="btn_ok" bindtap="powerDrawer" data-statu="close">取消</view>
</view>
</swiper-item>
<!-- 订单详细 -->
<swiper-item class="swiper-items2">
<scroll-view scroll-x="false" scroll-y="true" class='scroll-views'>
<view class='main-body'>
<block wx:for="{{obj}}" wx:key="item" wx:for-index="idx">
<!-- <template is="fodder" data="{{...item}}"></template> -->
<view class='itemView'>
<view class='baseitem'>
<text class='baseitem_key2'>存货名称</text>
<view class='baseitem_value2' bindtap="powerDrawer1" data-statu="open" data-idx='{{idx}}'>
{{obj[idx].Goods_Name}}
</view>
</view>
<view class='twogroup'>
<view class='baseitem'>
<text class='baseitem_key1'>报货数量</text>
<input class='baseitem_value1' bindinput='getGoodsNum' placeholder='请输入报货数量' type='digit' placeholder-style='color:rgb(202, 202, 202)' data-idx='{{idx}}' value='{{obj[idx].goodsNum}}'></input>
</view>
<view class='baseitem'>
<text class='baseitem_key1' space='ensp'>辅 数 量</text>
<input class='baseitem_value1' bindinput='getSecondNum' placeholder='请输入辅数量' type='digit' placeholder-style='color:rgb(202, 202, 202)' data-idx='{{idx}}' value='{{obj[idx].goodsSecondNum}}'></input>
</view>
</view>
<view class='twogroup'>
<view class='baseitem'>
<text class='baseitem_key1' space='emsp'>单 价</text>
<input class='baseitem_value1' type='digit' bindinput='getPrice' placeholder='请输入单价' placeholder-style='color:rgb(202, 202, 202)' data-idx='{{idx}}' value='{{obj[idx].Price}}'></input>
</view>
<view class='baseitem'>
<text class='baseitem_key1'>政策单价</text>
<text class='baseitem_value1' data-idx='{{idx}}'>{{obj[idx].PolicyPrice}}</text>
</view>
</view>
<view class='delete' catchtap='deleteItem' data-idx='{{idx}}'>删除</view>
</view>
</block>
<view class='add' catchtap='add'>
<image class="ico" src="/imgs/tianjia.png"></image>
</view>
</view>
<!-- <template name='fodder'>
</template> -->
<button class='submit' catchtap='submitForm'>提交</button>
</scroll-view>
<view class="drawer_screen" bindtap="powerDrawer1" data-statu="close" wx:if="{{showModalStatus1}}"></view>
<!--content-->
<!--使用animation属性指定需要执行的动画-->
<view animation="{{animationData}}" class="drawer_box" wx:if="{{showModalStatus1}}">
<!--drawer content-->
<view class='top'>
<input input class="sousuo" bindinput="select1" placeholder='请输入搜索'>
</input>
</view>
<view class="drawer_content">
<block wx:for="{{goods}}" wx:key="item">
<view class="grid1" catchtap='itemclick1' data-idx='{{idx}}' data-Name='{{item.Goods_Name}}' data-policyprice='{{item.PolicyPrice}}' data-data='{{item}}'>
<text class='text3'>{{item.Goods_Name}}</text>
</view>
</block>
</view>
<view class="btn_ok" bindtap="powerDrawer1" data-statu="close">取消</view>
</view>
</swiper-item>
</swiper>

+ 209
- 0
pages/saleForecastList/newBill/newBill.wxss View File

@ -0,0 +1,209 @@
page {
background: rgb(240, 239, 245);
}
.swiper-tab {
width: 100%;
border-bottom: 2rpx solid #777;
text-align: center;
line-height: 80rpx;
background: white;
}
.swiper-tab-list {
font-size: 30rpx;
display: inline-block;
width: 50%;
color: #777;
}
.on {
color: #2788f8;
border-bottom: 2rpx solid #2788f8;
}
.swiper-box {
display: block;
height: 100%;
width: 100%;
overflow: hidden;
}
.swiper-items1 {
height: 100%;
padding-top: 3%;
}
.swiper-items2 {
height: 100%;
}
.scroll-views {
height: 100%;
}
.baseitem {
background: #fff;
width: 100%;
border-bottom: 0.1px solid #dbdbdb;
display: flex;
flex-direction: row;
align-items: center;
padding-top: 20rpx;
padding-bottom: 20rpx;
}
.twogroup {
display: flex;
flex-direction: row;
}
.baseitem_key {
color: black;
width: 20%;
margin-left: 5%;
}
.baseitem_value {
margin-left: 5%;
width: 70%;
color: rgb(48, 48, 48);
}
.baseitem_key2 {
color: black;
width: 20%;
font-size: 30rpx;
margin-left: 10rpx;
}
.baseitem_value2 {
color: rgb(48, 48, 48);
font-size: 30rpx;
}
.baseitem_key1 {
color: black;
width: 40%;
font-size: 30rpx;
margin-left: 10rpx;
}
.baseitem_value1 {
color: rgb(48, 48, 48);
font-size: 30rpx;
margin-left: 20rpx;
width: 60%;
}
::-webkit-scrollbar {
width: 0;
height: 0;
color: transparent;
}
.add {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
border-left: none;
background: #fff;
width: 100%;
margin-top: 20rpx;
border-top: 0.5px solid #e0e0e0;
border-bottom: 0.5px solid #e0e0e0;
padding-top: 20rpx;
padding-bottom: 20rpx;
}
.ico {
height: 42rpx;
width: 42rpx;
}
.delete {
width: 100%;
padding-top: 20rpx;
padding-bottom: 20rpx;
color: red;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
background: #fff;
font-size: 30rpx;
}
.itemView {
margin-top: 20rpx;
}
.submit {
margin-top: 50rpx;
margin-bottom: 30rpx;
}
.drawer_screen {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 1000;
background: #000;
opacity: 0.5;
overflow: hidden;
}
.sousuo {
margin-right: 10%;
margin-left: 10%;
text-align: center;
background: #d6d8da;
height: 40px;
font-size: 28rpx;
}
.drawer_content {
height: 500rpx;
overflow-y: scroll; /*超出父盒子高度可滚动*/
}
.drawer_box {
width: 650rpx;
overflow: hidden;
position: fixed;
top: 50%;
left: 0;
z-index: 1001;
background: #fafafa;
margin: -150px 50rpx 0 50rpx;
border-radius: 3px;
}
.btn_ok {
padding: 10px;
font: 20px "microsoft yahei";
text-align: center;
border-top: 1px solid #e8e8ea;
color: #2E8CF5;
}
.top {
height: 20%;
justify-content: center;
align-items: center;
}
.grid1 {
width: 100%;
border-bottom: 1px solid #c3c3c3;
padding-top: 5px;
padding-bottom: 10px;
}
.text3 {
font-size: 18px;
color: rgb(48, 48, 48);
}

+ 195
- 0
pages/saleForecastList/query/query.js View File

@ -0,0 +1,195 @@
var network = require("../../../utils/net.js")
var timechage = require("../../../utils/dateTimeUtil.js")
var app = getApp()
function GetCustomer(that, inputValue) {
let method = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetCustomer";
let params = [{
"InputValue": inputValue,
"PageIndex": 0,
"PageSize": 100
}];
network.transfer_request(method, params, function (res) {
that.setData({
currency: res.result,
customer: res.result
})
})
that.setData({
which: "购货客户"
})
}
Page({
/**
* 页面的初始数据
*/
data: {
customerIndex: 0,
customer: [{
ID: 0,
Name: "请选择购货客户"
}],
currency: [],
Sdate: timechage.formatTimeTwo(Date.parse(new Date()), 'Y-M-D'),
Edate: timechage.formatTimeTwo(Date.parse(new Date()), 'Y-M-D'),
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
bindSDateChange: function (e) {
this.setData({
Sdate: e.detail.value
})
},
bindEDateChange: function (e) {
this.setData({
Edate: e.detail.value
})
},
submitForm: function (e) {
let customerID = this.data.customer[this.data.customerIndex].ID;
let sDate = timechage.formatymdERTDate(this.data.Sdate);
let eDate = timechage.formatymdERTDate(this.data.Edate);
if (customerID == 0) {
app.globalData.SelectCustomer_ID = null;
} else {
app.globalData.SelectCustomer_ID = customerID;
}
app.globalData.SaleOutStartDate = sDate;
app.globalData.SaleOutEndDate = eDate;
wx.navigateBack({
delta: 1
})
},
powerDrawer: function (e) {
let that = this;
let x = e.currentTarget.dataset.x;
if (x == "购货客户") {
GetCustomer(that, "")
}
let currentStatu = e.currentTarget.dataset.statu;
this.util(currentStatu)
},
itemclick: function (e) {
var that = this;
var name = e.currentTarget.dataset.name;
var id = e.currentTarget.dataset.id;
var which = e.currentTarget.dataset.item;
var idx = e.currentTarget.dataset.idx;
if (which == "购货客户") {
that.setData({
customerIndex: idx
})
}
this.setData({
showModalStatus: false,
})
},
select: function (e) {
var that = this;
var which = e.currentTarget.dataset.item;
var value = e.detail.value;
if (which == "购货客户") {
GetCustomer(that, value)
}
},
util: function (currentStatu) {
/* 动画部分 */
// 第1步:创建动画实例
var animation = wx.createAnimation({
duration: 200, //动画时长
timingFunction: "linear", //线性
delay: 0 //0则不延迟
});
// 第2步:这个动画实例赋给当前的动画实例
this.animation = animation;
// 第3步:执行第一组动画
animation.opacity(0).rotateX(-100).step();
// 第4步:导出动画对象赋给数据对象储存
this.setData({
animationData: animation.export()
})
// 第5步:设置定时器到指定时候后,执行第二组动画
setTimeout(function () {
// 执行第二组动画
animation.opacity(1).rotateX(0).step();
// 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象
this.setData({
animationData: animation
})
//关闭
if (currentStatu == "close") {
this.setData({
showModalStatus: false,
});
}
}.bind(this), 200)
// 显示
if (currentStatu == "open") {
// 调用函数时,传入new Date()参数,返回值是日期和时间
// 再通过setData更改Page()里面的data,动态更新页面的数据
this.setData({
showModalStatus: true,
});
}
}
})

+ 3
- 0
pages/saleForecastList/query/query.json View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "筛选"
}

+ 25
- 0
pages/saleForecastList/query/query.wxml View File

@ -0,0 +1,25 @@
<view class='twoitem'>
<text>购货客户</text>
<text class='item_value' bindtap="powerDrawer" data-statu="open" data-x='购货客户' data-item='{{which}}'>{{customer[customerIndex].Name}}</text>
</view>
<button class='submit' catchtap='submitForm'>查询</button>
<view class="drawer_screen" bindtap="powerDrawer" data-item='{{which}}' data-statu="close" wx:if="{{showModalStatus}}"></view>
<!--content-->
<!--使用animation属性指定需要执行的动画-->
<view animation="{{animationData}}" data-item='{{which}}' class="drawer_box" wx:if="{{showModalStatus}}">
<!--drawer content-->
<view class='top' data-item='{{which}}'>
<input data-item='{{which}}' class="sousuo" bindinput="select" placeholder='请输入搜索'>
</input>
</view>
<view class="drawer_content">
<block wx:for="{{currency}}" wx:key="item" wx:for-index="idx">
<view class="grid1" data-item='{{which}}' catchtap='itemclick' data-idx='{{idx}}' data-ID="{{item.ID}}" data-Name='{{item.Name}}'>
<text class='text3'>{{item.Name}}</text>
</view>
</block>
</view>
<view class="btn_ok" bindtap="powerDrawer" data-statu="close">取消</view>
</view>

+ 93
- 0
pages/saleForecastList/query/query.wxss View File

@ -0,0 +1,93 @@
page {
background: rgb(240, 239, 245);
}
.twoitem{
display: flex;
flex-direction: row;
justify-content: space-between;
padding-right: 5%;
padding-left: 5%;
background: #fff;
border-bottom: 1rpx solid #dbdbdb;
padding-top: 20rpx;
padding-bottom: 20rpx;
}
.item_value{
width: 70%;
text-align: right
}
.submit {
margin-top: 50rpx;
margin-bottom: 30rpx;
}
.drawer_screen {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 1000;
background: #000;
opacity: 0.5;
overflow: hidden;
}
.drawer_box {
width: 650rpx;
overflow: hidden;
position: fixed;
top: 50%;
left: 0;
z-index: 1001;
background: #fafafa;
margin: -150px 50rpx 0 50rpx;
border-radius: 3px;
}
.top {
height: 20%;
justify-content: center;
align-items: center;
}
.sousuo {
margin-right: 10%;
margin-left: 10%;
text-align: center;
background: #d6d8da;
height: 40px;
font-size: 28rpx;
}
.drawer_content {
height: 500rpx;
overflow-y: scroll; /*超出父盒子高度可滚动*/
}
.btn_ok {
padding: 10px;
font: 20px "microsoft yahei";
text-align: center;
border-top: 1px solid #e8e8ea;
color: #2E8CF5;
}
.grid1 {
width: 100%;
border-bottom: 1px solid #c3c3c3;
padding-top: 5px;
padding-bottom: 10px;
}
.text3 {
font-size: 18px;
color: rgb(48, 48, 48);
}

+ 206
- 0
pages/saleForecastList/saleForecastList.js View File

@ -0,0 +1,206 @@
const app = getApp();
var network = require("../../utils/net.js");
var timechage = require("../../utils/dateTimeUtil.js");
var UnCheckPageIndex = 0
var UnCheckPageSize = 10
var CheckedPageIndex = 0
var CheckedPageSize = 10
var outStoreMethod = '/MainSystem/B3MiniProgramRpc/Rpcs/EmployeeRpc/SaleForecastRpc/GetList'
// 未审核订单列表
function getUnCheckOrderList(that, UnCheckPageIndex, UnCheckPageSize) {
let getArr = [];
let method = outStoreMethod;
let params = [{
"BillState": 0,
"Customer_ID": that.data.Customer_ID,
"PageIndex": UnCheckPageIndex,
"PageSize": UnCheckPageSize,
}];
// let params = [false, UnCheckPageIndex, UnCheckPageSize];
network.transfer_request(method, params, function (res) {
var array = res.result;
if (array.length <= 0) {
wx.showToast({
title: '无数据更新',
})
UnCheckPageIndex = UnCheckPageIndex - 1;
return;
}
for (var i = 0; i < array.length; i++) {
var dmo = {
// BillState: "未审核"
// Customer_Name: "陈旭辉"
// Date: "/Date(1540453380000+0800)/"
// DepartmentWorkFlow_Detail_Name: "初始"
// DepartmentWorkFlow_ID: 2
// ID: 4
// Money: 143
// Number: 1
// billType: array[i].BillType_Name,
//添加单据状态的传递,在详情页面判断此值,进行是否允许提交的操作 true : 可提交
orderState: true,
orderID: array[i].ID,
Customer_Name: array[i].Customer_Name,
time: timechage.formatTimeTwo(array[i].Date.substring(6, 19), 'Y/M/D')
}
getArr.push(dmo);
}
let arrLast = that.data.unCheckDataArr.concat(getArr);
that.setData({
unCheckDataArr: arrLast,
})
})
}
// 已审核订单列表
function getCheckedOrderList(that, CheckedPageIndex, CheckedPageSize) {
let getArr = [];
let method = outStoreMethod;
let params = [{
"BillState": 20,
"Customer_ID": that.data.Customer_ID,
"PageIndex": CheckedPageIndex,
"PageSize": CheckedPageSize,
}];
// let params = [true, CheckedPageIndex, CheckedPageSize];
network.transfer_request(method, params, function (res) {
var array = res.result;
if (array.length <= 0) {
wx.showToast({
title: '无数据更新',
})
CheckedPageIndex = CheckedPageIndex - 1;
return;
}
for (var i = 0; i < array.length; i++) {
var dmo = {
//添加单据状态的传递,在详情页面判断此值,进行是否允许提交的操作
orderState: false,
orderID: array[i].ID,
Customer_Name: array[i].Customer_Name,
time: timechage.formatTimeTwo(array[i].Date.substring(6, 19), 'Y/M/D')
}
getArr.push(dmo);
}
let arrLast = that.data.checkedDataArr.concat(getArr);
that.setData({
checkedDataArr: arrLast,
})
})
}
Page({
data: {
checkedDataArr: [],
unCheckDataArr: [],
currentTab: 0,
winHeight: 0,
winWidth: 0,
Customer_ID: null,
},
createNew: function (e) {
wx.navigateTo({
url: 'newBill/newBill',
})
},
/**
* 滑动切换tab
*/
bindChange: function (e) {
var that = this;
that.setData({
currentTab: e.detail.current
});
},
/**
* 点击tab切换
*/
swichNav: function (e) {
var that = this;
if (this.data.currentTab === e.target.dataset.current) {
return false;
} else {
that.setData({
currentTab: e.target.dataset.current
})
}
},
//点击进入详情页面
transToOrderDetail: function (event) {
var ID = event.currentTarget.dataset.detailitemid;
var State = event.currentTarget.dataset.detailitemstate;
wx.navigateTo({
url: 'Detail/Detail?ID=' + ID + '&State=' + State,
})
},
//点击进入筛选页面
chose: function (e) {
wx.navigateTo({
url: 'query/query',
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
onShow: function (options) {
this.setData({
checkedDataArr: [],
unCheckDataArr: [],
Customer_ID: app.globalData.SelectCustomer_ID,
})
var that = this;
wx.getSystemInfo({
success: function (res) {
that.setData({
winWidth: res.windowWidth,
winHeight: res.windowHeight
});
}
});
UnCheckPageIndex = 0;
CheckedPageIndex = 0;
getUnCheckOrderList(that, UnCheckPageIndex, UnCheckPageSize);
getCheckedOrderList(that, CheckedPageIndex, CheckedPageSize);
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
//未审核订单滑动到底部加载
unCheckedScrollLower: function (event) {
var that = this;
UnCheckPageIndex = UnCheckPageIndex + 1;
getUnCheckOrderList(that, UnCheckPageIndex, UnCheckPageSize);
},
//已审核订单滑动到底部加载
CheckedScrollLower: function (event) {
var that = this;
CheckedPageIndex = CheckedPageIndex + 1;
getCheckedOrderList(that, CheckedPageIndex, CheckedPageSize);
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
var that = this;
if (this.data.currentTab === 0) {
UnCheckPageIndex = UnCheckPageIndex + 1;
getUnCheckOrderList(that, UnCheckPageIndex, UnCheckPageSize);
} else {
CheckedPageIndex = CheckedPageIndex + 1;
getCheckedOrderList(that, CheckedPageIndex, CheckedPageSize);
}
},
})

+ 3
- 0
pages/saleForecastList/saleForecastList.json View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "销售预报"
}

+ 43
- 0
pages/saleForecastList/saleForecastList.wxml View File

@ -0,0 +1,43 @@
<view class="swiper-tab">
<view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">未审批</view>
<view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">已审批</view>
</view>
<swiper current="{{currentTab}}" class="swiper-box" style='height:{{winHeight -83}}px' duration="300" bindchange="bindChange">
<!-- 未审核 -->
<swiper-item class="swiper-items1">
<scroll-view scroll-x="false" scroll-y="true" class='scroll-views' bindscrolltoupper="unCheckedScrollUpper" bindscrolltolower="unCheckedScrollLower">
<block wx:for="{{unCheckDataArr}}" wx:for-item="item">
<template is="outStoreOrderTemplate" data="{{item}}" />
</block>
</scroll-view>
</swiper-item>
<!-- 已审核 -->
<swiper-item class="swiper-items2">
<scroll-view scroll-x="false" scroll-y="true" class='scroll-views' bindscrolltoupper="checkedScrollUpper" bindscrolltolower="CheckedScrollLower">
<block wx:for="{{checkedDataArr}}" wx:for-item="item">
<template is="outStoreOrderTemplate" data="{{item}}" />
</block>
</scroll-view>
</swiper-item>
</swiper>
<image class='xinjian' bindtap="createNew" src="/imgs/create.png"></image>
<button class='chose' catchtap='chose'>筛选</button>
<template name="outStoreOrderTemplate">
<view class='listItem' catchtap='transToOrderDetail' data-detailitemid='{{item.orderID}}' data-detailitemstate='{{item.orderState}}'>
<view class='orderID'>
<text class='goodsIDText'>NO:{{item.orderID}}</text>
</view>
<view class='bottomView'>
<view class='goodsNum'>
<text class='goodsNumText'>{{item.Customer_Name}}</text>
</view>
<view class='goodsMoney'>
<text class='goodsMoneyText'>发货日期:{{item.time}}</text>
</view>
</view>
</view>
</template>

+ 110
- 0
pages/saleForecastList/saleForecastList.wxss View File

@ -0,0 +1,110 @@
.swiper-tab {
width: 100%;
/* height: 40px; */
text-align: center;
line-height: 80rpx;
background: white;
display: flex;
flex-direction: row;
justify-content: space-around;
border-bottom: 0.2rpx solid rgb(236, 231, 231);
}
.swiper-tab-list {
font-size: 30rpx;
width: 25%;
color: #777;
}
.on {
border-bottom: 1.5px solid #2E8CF5 ;
color: #2E8CF5;
}
.swiper-box {
margin-top: 3px;
display: block;
width: 100%;
overflow: hidden;
}
.swiper-items1 {
height: 100%;
}
.swiper-items2 {
height: 100%;
}
.scroll-views {
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
}
.listItem{
/* width: 100%; */
height: 100rpx;
display: flex;
flex-direction: column;
background-color: #fff;
padding: 20rpx 20rpx 20rpx 20rpx;
border-bottom: 1rpx solid #ddd;
background: white;
}
.orderID{
height: 50%;
width: 100%;
}
.bottomView{
height: 50%;
width: 100%;
display: flex;
flex-direction: row;
}
.goodsNum{
height: 100%;
width: 50%;
}
.goodsMoney{
height: 100%;
width: 50%;
}
.goodsIDText{
font-size: 16px;
}
.goodsNumText{
font-size: 14px;
color: #666;
}
.goodsMoneyText{
font-size: 14px;
color: #666;
}
page{
background-color: #F0EFF5;
height: 100%;
}
.xinjian{
width: 160rpx;
height: 160rpx;
position: fixed;
bottom: 60rpx;
right: 20rpx;
}
.chose{
width: 100%;
height: 40px;
position: fixed;
bottom: 0rpx;
}

+ 125
- 0
pages/selectCustomer/selctCustomer.js View File

@ -0,0 +1,125 @@
var network = require("../../utils/net.js")
var app = getApp()
function GetBindCustomer(that) {
let method = '/MainSystem/B3WeChatMiniProgram/Rpcs/CommonRpc/GetBindCustomer';
let params = [app.globalData.AppId, app.globalData.OpenId];
network.requestLoading(method, params, function(res) {
if (res.result != null) {
app.globalData.CustomerId = res.result.ID;
app.globalData.PhoneNum = res.result.WeixinUser_Phone;
wx.redirectTo({
url: '/pages/index/index',
})
}
})
}
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {
var that = this;
wx.login({
success: function(res) {
let code = res.code;
let method = '/MainSystem/B3WeChatMiniProgram/Rpcs/CommonRpc/GetMiniOpenIdByCode';
let params = [app.globalData.AppId, code];
network.requestLoading(method, params, function(res) {
app.globalData.OpenId = res.result;
GetBindCustomer(that)
})
}
})
let method = '/MainSystem/B3WeChatMiniProgram/Rpcs/CustomerRpc/GetList';
let params = [];
network.requestLoading(method, params, function(res) {
that.setData({
array: res.result,
})
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function() {
},
itemclick: function(e) {
let ID = e.currentTarget.dataset.data.ID;
let Name = e.currentTarget.dataset.data.Name;
wx.showModal({
title: '提示',
content: '是否确定选择' + Name,
success: function(res) {
if (res.cancel) {
} else {
app.globalData.CustomerId = ID;
wx.redirectTo({
url: '/pages/index/index',
})
}
},
})
}
})

+ 3
- 0
pages/selectCustomer/selctCustomer.json View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "选择企业"
}

+ 11
- 0
pages/selectCustomer/selctCustomer.wxml View File

@ -0,0 +1,11 @@
<!--pages/selectCustomer/selctCustomer.wxml-->
<view class="custmer_list">
<view class="custmer_list_view_main" wx:for="{{array}}" wx:key="item">
<view class='custmer_list_view' catchtap='itemclick' data-Data='{{item}}'>
<text class='text_name'>{{item.Name}}</text>
</view>
<view class='view_line_main'>
<view class='view_line'></view>
</view>
</view>
</view>

+ 26
- 0
pages/selectCustomer/selctCustomer.wxss View File

@ -0,0 +1,26 @@
page {
background: rgb(240, 239, 245);
}
.custmer_list_view{
display: flex;
flex-direction: column;
padding-left: 5%;
padding-top: 16rpx;
padding-bottom: 16rpx;
background: white;
}
.text_name{
font-size: 40rpx;
color: rgb(48, 48, 48);
}
.view_line_main{
background: white
}
.view_line{
width: 100%;
height: 2rpx;
background: rgb(219, 219, 219);
}

+ 47
- 0
project.config.json View File

@ -0,0 +1,47 @@
{
"description": "项目配置文件",
"packOptions": {
"ignore": []
},
"setting": {
"urlCheck": false,
"es6": true,
"postcss": true,
"minified": true,
"newFeature": true
},
"compileType": "miniprogram",
"libVersion": "2.3.1",
"appid": "wx1a89a89a80318160",
"projectname": "XuSaleEmployee",
"debugOptions": {
"hidedInDevtools": []
},
"isGameTourist": false,
"condition": {
"search": {
"current": -1,
"list": []
},
"conversation": {
"current": -1,
"list": []
},
"game": {
"currentL": -1,
"list": []
},
"miniprogram": {
"current": -1,
"list": [
{
"id": 0,
"name": "小程序码",
"pathName": "pages/selctCustomer/selctCustomer",
"query": "",
"scene": "1011"
}
]
}
}
}

+ 80
- 0
utils/dateTimePicker.js View File

@ -0,0 +1,80 @@
function withData(param) {
return param < 10 ? '0' + param : '' + param;
}
function getLoopArray(start, end) {
var start = start || 0;
var end = end || 1;
var array = [];
for (var i = start; i <= end; i++) {
array.push(withData(i));
}
return array;
}
function getMonthDay(year, month) {
var flag = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0), array = null;
switch (month) {
case '01':
case '03':
case '05':
case '07':
case '08':
case '10':
case '12':
array = getLoopArray(1, 31)
break;
case '04':
case '06':
case '09':
case '11':
array = getLoopArray(1, 30)
break;
case '02':
array = flag ? getLoopArray(1, 29) : getLoopArray(1, 28)
break;
default:
array = '月份格式不正确,请重新输入!'
}
return array;
}
function getNewDateArry() {
// 当前时间的处理
var newDate = new Date();
var year = withData(newDate.getFullYear()),
mont = withData(newDate.getMonth() + 1),
date = withData(newDate.getDate()),
hour = withData(newDate.getHours()),
minu = withData(newDate.getMinutes()),
seco = withData(newDate.getSeconds());
return [year, mont, date, hour, minu, seco];
}
function dateTimePicker(startYear, endYear, date) {
// 返回默认显示的数组和联动数组的声明
var dateTime = [], dateTimeArray = [[], [], [], [], [], []];
var start = startYear || 1978;
var end = endYear || 2100;
// 默认开始显示数据
var defaultDate = date ? [...date.split(' ')[0].split('-'), ...date.split(' ')[1].split(':')] : getNewDateArry();
// 处理联动列表数据
/*年月日 时分秒*/
dateTimeArray[0] = getLoopArray(start, end);
dateTimeArray[1] = getLoopArray(1, 12);
dateTimeArray[2] = getMonthDay(defaultDate[0], defaultDate[1]);
dateTimeArray[3] = getLoopArray(0, 23);
dateTimeArray[4] = getLoopArray(0, 59);
dateTimeArray[5] = getLoopArray(0, 59);
dateTimeArray.forEach((current, index) => {
dateTime.push(current.indexOf(defaultDate[index]));
});
return {
dateTimeArray: dateTimeArray,
dateTime: dateTime
}
}
module.exports = {
dateTimePicker: dateTimePicker,
getMonthDay: getMonthDay
}

+ 39
- 0
utils/dateTimeUtil.js View File

@ -0,0 +1,39 @@
function formatymdERTDate(str){
return "/Date(" + Date.parse(new Date(str.replace(/\-/g, "/") + " 00:00:00")) + "+0800)/"
}
function formatNumber(n) {
n = n.toString()
return n[1] ? n : '0' + n
}
/**
* 时间戳转化为年
* number: 传入时间戳
* format返回格式支持自定义但参数必须与formateArr里保持一致
*/
function formatTimeTwo(number, format) {
var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
var returnArr = [];
var date = new Date(number*1);
returnArr.push(date.getFullYear());
returnArr.push(formatNumber(date.getMonth() + 1));
returnArr.push(formatNumber(date.getDate()));
returnArr.push(formatNumber(date.getHours()));
returnArr.push(formatNumber(date.getMinutes()));
returnArr.push(formatNumber(date.getSeconds()));
for (var i in returnArr) {
format = format.replace(formateArr[i], returnArr[i]);
}
return format;
}
module.exports = {
formatTimeTwo: formatTimeTwo,
formatymdERTDate: formatymdERTDate
}

+ 151
- 0
utils/net.js View File

@ -0,0 +1,151 @@
//不显示对话框的请求
const app = getApp()
function request(url, params, success, fail) {
this.requestLoading(url, params, "", success, fail)
}
// 展示进度条的网络请求
// url:网络请求的url
// params:请求参数
// message:进度条的提示信息
// success:成功的回调函数
// fail:失败的回调
function requestLoading(method, params, successaction) {
wx.showLoading({
title: "加载中",
})
var data = {
'id': 1,
'method': method,
'params': params
};
var baseUrl = app.globalData.BaseUrl
console.log(baseUrl)
console.log(data)
wx.request({
url: baseUrl,
data: data,
header: {
'content-type': 'application/json',
'cookie': app.globalData.Cookie
},
method: 'POST',
success: function(res) {
// console.log(res)
if (res.data.error != null) {
wx.showModal({
showCancel: false,
title: '执行出错',
content: res.data.error.message,
})
} else {
successaction(res.data)
}
},
fail: function(res) {
console.log(res)
wx.showModal({
title: '执行出错',
content: res,
})
},
complete: function(res) {
wx.hideLoading()
},
})
}
function transfer_request(method, params, successaction) {
wx.showLoading({
title: "加载中",
})
var data = {
'DecryptCookie': app.globalData.DecryptCookie,
'AppendUrlString': '',
'Method': method,
'CustomerId': app.globalData.CustomerId,
'Data': params
};
var baseUrl = app.globalData.TransferUrl
console.log(baseUrl)
console.log(data)
wx.request({
url: baseUrl,
data: data,
header: {
'content-type': 'application/json'
},
method: 'POST',
success: function(res) {
// console.log(res)
if (res.data.error != null) {
if (res.data.error.code == '401' && res.data.error.message == "Unauthorized") {
console.log('重连系统-------------');
transfer_login()
} else {
wx.showModal({
showCancel: false,
title: '执行出错',
content: res.data.error.message,
})
}
} else {
successaction(res.data)
}
},
fail: function(res) {
console.log(res)
wx.showModal({
title: '执行出错',
content: res,
})
},
complete: function(res) {
wx.hideLoading()
},
})
}
function transfer_login() {
wx.request({
url: app.globalData.TransferUrl,
data: {
'CustomerId': 1,
'Method': app.globalData.LoginPath,
'Data': [app.globalData.AppId, app.globalData.OpenId]
},
header: {
'content-type': 'application/json'
},
method: 'POST',
success: function(res) {
app.globalData.DecryptCookie = res.data.result;
console.log(app.globalData.DecryptCookie)
wx.showModal({
showCancel: false,
title: '提示',
content: '由于长时间未操作,需要重新连接!',
})
wx.switchTab({
url: '/pages/main/main',
})
}
})
}
module.exports = {
request: request,
requestLoading: requestLoading,
transfer_request: transfer_request
}

+ 19
- 0
utils/util.js View File

@ -0,0 +1,19 @@
const formatTime = date => {
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hour = date.getHours()
const minute = date.getMinutes()
const second = date.getSeconds()
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
module.exports = {
formatTime: formatTime
}

Loading…
Cancel
Save