From 3d495a593dc0e8bde469da370e656b01deed2cb1 Mon Sep 17 00:00:00 2001 From: robin <3504557@qq.com> Date: Mon, 5 Nov 2018 18:25:30 +0800 Subject: [PATCH] init --- app.js | 20 + app.json | 38 + app.wxss | 10 + imgs/create.png | Bin 0 -> 11964 bytes imgs/main-bg.jpg | Bin 0 -> 41724 bytes imgs/main.png | Bin 0 -> 1935 bytes imgs/main1.png | Bin 0 -> 2317 bytes imgs/my.png | Bin 0 -> 2008 bytes imgs/my1.png | Bin 0 -> 2811 bytes imgs/saleForecast.png | Bin 0 -> 8004 bytes imgs/tianjia.png | Bin 0 -> 3053 bytes imgs/tuceng.png | Bin 0 -> 21858 bytes imgs/zhuye.png | Bin 0 -> 2049 bytes imgs/zhuye1.png | Bin 0 -> 2486 bytes pages/index/index.js | 179 +++++ pages/index/index.json | 1 + pages/index/index.wxml | 11 + pages/index/index.wxss | 54 ++ pages/logs/logs.js | 15 + pages/logs/logs.json | 3 + pages/logs/logs.wxml | 6 + pages/logs/logs.wxss | 8 + pages/main/main.js | 84 +++ pages/main/main.json | 3 + pages/main/main.wxml | 10 + pages/main/main.wxss | 33 + pages/my/my.js | 66 ++ pages/my/my.json | 1 + pages/my/my.wxml | 2 + pages/my/my.wxss | 1 + pages/saleForecastList/Detail/Detail.js | 730 +++++++++++++++++++ pages/saleForecastList/Detail/Detail.json | 3 + pages/saleForecastList/Detail/Detail.wxml | 168 +++++ pages/saleForecastList/Detail/Detail.wxss | 214 ++++++ pages/saleForecastList/newBill/newBill.js | 628 ++++++++++++++++ pages/saleForecastList/newBill/newBill.json | 3 + pages/saleForecastList/newBill/newBill.wxml | 167 +++++ pages/saleForecastList/newBill/newBill.wxss | 209 ++++++ pages/saleForecastList/query/query.js | 195 +++++ pages/saleForecastList/query/query.json | 3 + pages/saleForecastList/query/query.wxml | 25 + pages/saleForecastList/query/query.wxss | 93 +++ pages/saleForecastList/saleForecastList.js | 206 ++++++ pages/saleForecastList/saleForecastList.json | 3 + pages/saleForecastList/saleForecastList.wxml | 43 ++ pages/saleForecastList/saleForecastList.wxss | 110 +++ pages/selectCustomer/selctCustomer.js | 125 ++++ pages/selectCustomer/selctCustomer.json | 3 + pages/selectCustomer/selctCustomer.wxml | 11 + pages/selectCustomer/selctCustomer.wxss | 26 + project.config.json | 47 ++ utils/dateTimePicker.js | 80 ++ utils/dateTimeUtil.js | 39 + utils/net.js | 151 ++++ utils/util.js | 19 + 55 files changed, 3846 insertions(+) create mode 100644 app.js create mode 100644 app.json create mode 100644 app.wxss create mode 100644 imgs/create.png create mode 100644 imgs/main-bg.jpg create mode 100755 imgs/main.png create mode 100755 imgs/main1.png create mode 100755 imgs/my.png create mode 100755 imgs/my1.png create mode 100755 imgs/saleForecast.png create mode 100755 imgs/tianjia.png create mode 100644 imgs/tuceng.png create mode 100644 imgs/zhuye.png create mode 100644 imgs/zhuye1.png create mode 100644 pages/index/index.js create mode 100644 pages/index/index.json create mode 100644 pages/index/index.wxml create mode 100644 pages/index/index.wxss create mode 100644 pages/logs/logs.js create mode 100644 pages/logs/logs.json create mode 100644 pages/logs/logs.wxml create mode 100644 pages/logs/logs.wxss create mode 100644 pages/main/main.js create mode 100644 pages/main/main.json create mode 100644 pages/main/main.wxml create mode 100644 pages/main/main.wxss create mode 100644 pages/my/my.js create mode 100644 pages/my/my.json create mode 100644 pages/my/my.wxml create mode 100644 pages/my/my.wxss create mode 100644 pages/saleForecastList/Detail/Detail.js create mode 100644 pages/saleForecastList/Detail/Detail.json create mode 100644 pages/saleForecastList/Detail/Detail.wxml create mode 100644 pages/saleForecastList/Detail/Detail.wxss create mode 100644 pages/saleForecastList/newBill/newBill.js create mode 100644 pages/saleForecastList/newBill/newBill.json create mode 100644 pages/saleForecastList/newBill/newBill.wxml create mode 100644 pages/saleForecastList/newBill/newBill.wxss create mode 100644 pages/saleForecastList/query/query.js create mode 100644 pages/saleForecastList/query/query.json create mode 100644 pages/saleForecastList/query/query.wxml create mode 100644 pages/saleForecastList/query/query.wxss create mode 100644 pages/saleForecastList/saleForecastList.js create mode 100644 pages/saleForecastList/saleForecastList.json create mode 100644 pages/saleForecastList/saleForecastList.wxml create mode 100644 pages/saleForecastList/saleForecastList.wxss create mode 100644 pages/selectCustomer/selctCustomer.js create mode 100644 pages/selectCustomer/selctCustomer.json create mode 100644 pages/selectCustomer/selctCustomer.wxml create mode 100644 pages/selectCustomer/selctCustomer.wxss create mode 100644 project.config.json create mode 100644 utils/dateTimePicker.js create mode 100644 utils/dateTimeUtil.js create mode 100644 utils/net.js create mode 100644 utils/util.js diff --git a/app.js b/app.js new file mode 100644 index 0000000..0d282d8 --- /dev/null +++ b/app.js @@ -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 + } +}) \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..a35c8e1 --- /dev/null +++ b/app.json @@ -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" + } + ] + } +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..06c6fc9 --- /dev/null +++ b/app.wxss @@ -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; +} diff --git a/imgs/create.png b/imgs/create.png new file mode 100644 index 0000000000000000000000000000000000000000..0656ecd267cad25de17ce80f45309108033fb693 GIT binary patch literal 11964 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 IDz;Jo2YpP@5dZ)H literal 0 HcmV?d00001 diff --git a/imgs/main-bg.jpg b/imgs/main-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..acc5782f751912dd0c1d0dad3ceb932babaa2e0f GIT binary patch literal 41724 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 T-rg28{euz`$Og_bw(t5Auh!65 literal 0 HcmV?d00001 diff --git a/imgs/my.png b/imgs/my.png new file mode 100755 index 0000000000000000000000000000000000000000..eee6ac44be1d20af0a1fe82426382fe5ec5e2d48 GIT binary patch literal 2008 zcmaJ?YgAKb7LB21G!`rYr3!6h2pArDM?xZx5)vSU1Pl*TNzss8NPy&qSBG0?Y=me6=hW z5CbxWsqiuofk3#eQ>95Di7<&R2h}8*3qvxhwJ;ljh=?|7W%7Ig!e#@xDorGA^1^pG ztV$7y+q^+Y5o%)rr7EFV2c#B@(&WYYa+U%Y9fgfBvS9%=0LidMb%93DHb&xJ>ayXv zYnzP2zJx&ek+@f;B*GMIET{vp8%SY9Ih8@fGFc>Q7==Y+gkotFDw9lMlBskeh03Oc zvFR-A>jwu%(1e?56LugfX|J@!2%?eO2Ota!oukc4u{KR#!{)g@NiBX zhsB6vg@?s#h@sQN7PwqcUZe&z&;nQS2RC+6uB#K&S~xNn(5XHF6mdFGjeVIhTeY|s z)}nf^xr)WT#4O4s!)C~?bN#P#Uf6=0$2EP^weaFi-vb)B*>!MNr#{SOAP{c}`P`T^ zG;b-&uA5 zqi^k|lxJ3auJf^t_t>udYj{>D*!^N~x?#dJFnubyMLmCLx?ymhHDP-(z-KTR2lfx) zu7*6rbaTnq`v;YEk33NL$KMm;<0;Eak+Y2}9W~$Gu(UL;9@-VG_1LlUzP)Sg;dMb0 z^$UBV=S<7jov7~J9ovXT#MzSeQK6JP(KEVls4eK~4DF-87i)b&kwj-;A?ln*;NCN* zL(i;fK#ttUQrC6mk{!!Tcbj^bQXEBAUwiPLxydC1=8~@xrO2ARaF1`M)+-)YUE;Lv zIgj&sQvS|TVf`7!f1)^b>1_-CY)88D zPZs>n&U9yp1t0ZIx|3+Z-#MG^-1y#}`TlbS`rNtBb(m8HHO6a*5})2r>jN?@8$AVW zXFf%meTIkQ3C}!lsxNRovVOj>wwxgR=jK)RGwTThyJVwr-b9J_ za^W1oQO8>QeNTA1hPpJ!kbLZsfLFc6u-{yD-gA^P^V^a6!C7m=@Wr6wOhWVS!ST2u z{^5zVPZ`xP)H7TLs*2$-yZ7Ytlk?#@w>;7Wx@p|v!0itu}v>iwn9k!#l5r+?zEQWf{{y11*EN6h`i zwDr=dS}``XaT}>Tp7#s?Ia}~0$8@_qYWeZ<cD#XwSu-ZDXp=P1fDtnb`hQlIY~fgI;NL(8JL zJ%2MLC$aGd9!M*0<>B(~Q67F9=xE>O$vaWz0}Wj&@<8KREk!@(62~NX~zpfYKGUQ6}FIzlP#AErB1=MRb9_deetE_UAGeagyh5{9qH%{*BWeHO0AGI zCT3@q;>TMn4*L3AZ71 zcYM3&cTv3dH%Cig^k*n=EUG_Kw8Pl|W?@E$TeC{e^|$&_?rp6tD;~iMU^JwweC}AiyXu literal 0 HcmV?d00001 diff --git a/imgs/my1.png b/imgs/my1.png new file mode 100755 index 0000000000000000000000000000000000000000..5ce2436a98448d87c449f0d187b283f1774c7cb9 GIT binary patch literal 2811 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 PzqUGDN4ZMTGUWdNZME1_ literal 0 HcmV?d00001 diff --git a/imgs/tianjia.png b/imgs/tianjia.png new file mode 100755 index 0000000000000000000000000000000000000000..e3e061596c823125286ed4f015e2a7c6a0d9d5fa GIT binary patch literal 3053 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 literal 0 HcmV?d00001 diff --git a/imgs/zhuye.png b/imgs/zhuye.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9fbce73751b8901d9cce5cba34833fea53c09f GIT binary patch literal 2049 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 WGl0zXNDPqwNjW>XlgjOaQ~nELN;gOV literal 0 HcmV?d00001 diff --git a/pages/index/index.js b/pages/index/index.js new file mode 100644 index 0000000..bb74b41 --- /dev/null +++ b/pages/index/index.js @@ -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 + }) + } + } +}) \ No newline at end of file diff --git a/pages/index/index.json b/pages/index/index.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/pages/index/index.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml new file mode 100644 index 0000000..d2a3e93 --- /dev/null +++ b/pages/index/index.wxml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/pages/index/index.wxss b/pages/index/index.wxss new file mode 100644 index 0000000..ddb1f82 --- /dev/null +++ b/pages/index/index.wxss @@ -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%; +} diff --git a/pages/logs/logs.js b/pages/logs/logs.js new file mode 100644 index 0000000..b2b967d --- /dev/null +++ b/pages/logs/logs.js @@ -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)) + }) + }) + } +}) diff --git a/pages/logs/logs.json b/pages/logs/logs.json new file mode 100644 index 0000000..28379bc --- /dev/null +++ b/pages/logs/logs.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "查看启动日志" +} \ No newline at end of file diff --git a/pages/logs/logs.wxml b/pages/logs/logs.wxml new file mode 100644 index 0000000..b5a85ac --- /dev/null +++ b/pages/logs/logs.wxml @@ -0,0 +1,6 @@ + + + + {{index + 1}}. {{log}} + + diff --git a/pages/logs/logs.wxss b/pages/logs/logs.wxss new file mode 100644 index 0000000..94d4b88 --- /dev/null +++ b/pages/logs/logs.wxss @@ -0,0 +1,8 @@ +.log-list { + display: flex; + flex-direction: column; + padding: 40rpx; +} +.log-item { + margin: 10rpx; +} diff --git a/pages/main/main.js b/pages/main/main.js new file mode 100644 index 0000000..64c9d27 --- /dev/null +++ b/pages/main/main.js @@ -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', + }) + }, +}) \ No newline at end of file diff --git a/pages/main/main.json b/pages/main/main.json new file mode 100644 index 0000000..acc0770 --- /dev/null +++ b/pages/main/main.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "首页" +} \ No newline at end of file diff --git a/pages/main/main.wxml b/pages/main/main.wxml new file mode 100644 index 0000000..661bc78 --- /dev/null +++ b/pages/main/main.wxml @@ -0,0 +1,10 @@ + + + + + + + 销售预报 + + + diff --git a/pages/main/main.wxss b/pages/main/main.wxss new file mode 100644 index 0000000..ee35668 --- /dev/null +++ b/pages/main/main.wxss @@ -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; +} \ No newline at end of file diff --git a/pages/my/my.js b/pages/my/my.js new file mode 100644 index 0000000..2a8cba2 --- /dev/null +++ b/pages/my/my.js @@ -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 () { + + } +}) \ No newline at end of file diff --git a/pages/my/my.json b/pages/my/my.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/pages/my/my.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/pages/my/my.wxml b/pages/my/my.wxml new file mode 100644 index 0000000..2447d83 --- /dev/null +++ b/pages/my/my.wxml @@ -0,0 +1,2 @@ + +pages/my/my.wxml diff --git a/pages/my/my.wxss b/pages/my/my.wxss new file mode 100644 index 0000000..1c3fe88 --- /dev/null +++ b/pages/my/my.wxss @@ -0,0 +1 @@ +/* pages/my/my.wxss */ \ No newline at end of file diff --git a/pages/saleForecastList/Detail/Detail.js b/pages/saleForecastList/Detail/Detail.js new file mode 100644 index 0000000..e3be8f6 --- /dev/null +++ b/pages/saleForecastList/Detail/Detail.js @@ -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 + }); + } + } +}) \ No newline at end of file diff --git a/pages/saleForecastList/Detail/Detail.json b/pages/saleForecastList/Detail/Detail.json new file mode 100644 index 0000000..603eeda --- /dev/null +++ b/pages/saleForecastList/Detail/Detail.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "预报详情" +} \ No newline at end of file diff --git a/pages/saleForecastList/Detail/Detail.wxml b/pages/saleForecastList/Detail/Detail.wxml new file mode 100644 index 0000000..cb49fcf --- /dev/null +++ b/pages/saleForecastList/Detail/Detail.wxml @@ -0,0 +1,168 @@ + + + 基本信息 + 订单详细 + + + + + + + + 购货客户 + + + {{customer[customerIndex].Name}} + + + + + 发货时间 + + + {{dateTimeArray1[0][dateTime1[0]]}}-{{dateTimeArray1[1][dateTime1[1]]}}-{{dateTimeArray1[2][dateTime1[2]]}} {{dateTimeArray1[3][dateTime1[3]]}}:{{dateTimeArray1[4][dateTime1[4]]}} + + + + + + 会计单位 + + + {{unit[isUnit].Name}} + + + + + + + 销售部门 + + + {{department[departmentIndex].Name}} + + + + + 销售类型 + + + {{saletype[saletypeIndex].Name}} + + + + + + + + + 送货地址 + + + + + + + + + + + + + + + + + + + {{item.Name}} + + + + 取消 + + + + + + + + + + + 存货名称 + + {{obj[idx].Goods_Name}} + + + + + + 报货数量 + + + + + 辅 数 量 + + + + + + + + 单 价 + + + + + 政策单价 + {{obj[idx].PolicyPrice}} + + + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + {{item.Goods_Name}} + + + + 取消 + + + diff --git a/pages/saleForecastList/Detail/Detail.wxss b/pages/saleForecastList/Detail/Detail.wxss new file mode 100644 index 0000000..d8de5f9 --- /dev/null +++ b/pages/saleForecastList/Detail/Detail.wxss @@ -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); +} diff --git a/pages/saleForecastList/newBill/newBill.js b/pages/saleForecastList/newBill/newBill.js new file mode 100644 index 0000000..e0687fe --- /dev/null +++ b/pages/saleForecastList/newBill/newBill.js @@ -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 + }); + } + } +}) \ No newline at end of file diff --git a/pages/saleForecastList/newBill/newBill.json b/pages/saleForecastList/newBill/newBill.json new file mode 100644 index 0000000..1e7f98e --- /dev/null +++ b/pages/saleForecastList/newBill/newBill.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "预报新建" +} \ No newline at end of file diff --git a/pages/saleForecastList/newBill/newBill.wxml b/pages/saleForecastList/newBill/newBill.wxml new file mode 100644 index 0000000..25f49f9 --- /dev/null +++ b/pages/saleForecastList/newBill/newBill.wxml @@ -0,0 +1,167 @@ + + 基本信息 + 订单详细 + + + + + + + + 购货客户 + + + {{customer[customerIndex].Name}} + + + + + 发货时间 + + + {{dateTimeArray1[0][dateTime1[0]]}}-{{dateTimeArray1[1][dateTime1[1]]}}-{{dateTimeArray1[2][dateTime1[2]]}} {{dateTimeArray1[3][dateTime1[3]]}}:{{dateTimeArray1[4][dateTime1[4]]}} + + + + + + 会计单位 + + + {{unit[isUnit].Name}} + + + + + + + 销售部门 + + + {{department[departmentIndex].Name}} + + + + + 销售类型 + + + {{saletype[saletypeIndex].Name}} + + + + + + + + + 送货地址 + + + + + + + + + + + + + + + + + + + {{item.Name}} + + + + 取消 + + + + + + + + + + + 存货名称 + + {{obj[idx].Goods_Name}} + + + + + + 报货数量 + + + + + 辅 数 量 + + + + + + + + 单 价 + + + + + 政策单价 + {{obj[idx].PolicyPrice}} + + + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + {{item.Goods_Name}} + + + + 取消 + + + diff --git a/pages/saleForecastList/newBill/newBill.wxss b/pages/saleForecastList/newBill/newBill.wxss new file mode 100644 index 0000000..9420370 --- /dev/null +++ b/pages/saleForecastList/newBill/newBill.wxss @@ -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); +} diff --git a/pages/saleForecastList/query/query.js b/pages/saleForecastList/query/query.js new file mode 100644 index 0000000..4c0e52b --- /dev/null +++ b/pages/saleForecastList/query/query.js @@ -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, + }); + } + } +}) \ No newline at end of file diff --git a/pages/saleForecastList/query/query.json b/pages/saleForecastList/query/query.json new file mode 100644 index 0000000..94ff588 --- /dev/null +++ b/pages/saleForecastList/query/query.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "筛选" +} \ No newline at end of file diff --git a/pages/saleForecastList/query/query.wxml b/pages/saleForecastList/query/query.wxml new file mode 100644 index 0000000..6f8f3a8 --- /dev/null +++ b/pages/saleForecastList/query/query.wxml @@ -0,0 +1,25 @@ + + 购货客户 + {{customer[customerIndex].Name}} + + + + + + + + + + + + + + + + + {{item.Name}} + + + + 取消 + diff --git a/pages/saleForecastList/query/query.wxss b/pages/saleForecastList/query/query.wxss new file mode 100644 index 0000000..9e54210 --- /dev/null +++ b/pages/saleForecastList/query/query.wxss @@ -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); +} \ No newline at end of file diff --git a/pages/saleForecastList/saleForecastList.js b/pages/saleForecastList/saleForecastList.js new file mode 100644 index 0000000..09b435d --- /dev/null +++ b/pages/saleForecastList/saleForecastList.js @@ -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); + } + }, +}) \ No newline at end of file diff --git a/pages/saleForecastList/saleForecastList.json b/pages/saleForecastList/saleForecastList.json new file mode 100644 index 0000000..292625b --- /dev/null +++ b/pages/saleForecastList/saleForecastList.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "销售预报" +} \ No newline at end of file diff --git a/pages/saleForecastList/saleForecastList.wxml b/pages/saleForecastList/saleForecastList.wxml new file mode 100644 index 0000000..7715556 --- /dev/null +++ b/pages/saleForecastList/saleForecastList.wxml @@ -0,0 +1,43 @@ + + 未审批 + 已审批 + + + + + + + +