You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

410 lines
9.4 KiB

1 year ago
1 year ago
1 year ago
  1. // pages/rentManagement/rentManagement.js
  2. const app = getApp()
  3. const WXAPI = require('../../utils/request')
  4. var util = require('../../utils/util');
  5. const moment = require('../../utils/moment')
  6. function getChild(nodes, item, arr) {
  7. for (let el of nodes) {
  8. if (el.id === item) {
  9. arr.push(el.id);
  10. if (el.children) {
  11. childNodesDeep(el.children, arr);
  12. }
  13. } else if (el.children) {
  14. getChild(el.children, item, arr);
  15. }
  16. }
  17. return arr;
  18. }
  19. function childNodesDeep(nodes, arr) {
  20. if (nodes)
  21. nodes.forEach((ele) => {
  22. arr.push(ele.id);
  23. if (ele.children) {
  24. childNodesDeep(ele.children, arr);
  25. }
  26. });
  27. }
  28. Page({
  29. /**
  30. * 页面的初始数据
  31. */
  32. data: {
  33. showOne:false,
  34. list:[],
  35. pageNum:1,
  36. pageStatus:true,
  37. searchValue:'',
  38. search:{
  39. name:''
  40. },
  41. show:false,
  42. radio:'2',
  43. leases:{},
  44. selectKey:'',
  45. selectRoomName:'',
  46. pid:'',
  47. siteOrder:{}
  48. },
  49. /**
  50. * 生命周期函数--监听页面加载
  51. */
  52. onLoad: function (options) {
  53. this.getLeasesList()
  54. this.getTree()
  55. },
  56. confirmMethods(event) {
  57. this.confimPay()
  58. },
  59. selectRoomMethods(){
  60. this.setData({
  61. showOne:true
  62. })
  63. },
  64. // 清空选择的房源
  65. clearSelect(){
  66. this.setData({
  67. pid:'',
  68. selectKey:'',
  69. selectRoomName:''
  70. })
  71. },
  72. onClose() {
  73. this.setData({ show: false });
  74. },
  75. onCloseOne() {
  76. this.setData({ showOne: false });
  77. },
  78. getTree() {
  79. var _this = this
  80. WXAPI.getTree('').then(res => {
  81. var list=res.data.sort((pre, cur)=>pre.id - cur.id)
  82. var newArr = util.uniqueArray(list, "id");
  83. var setting = {
  84. data: {
  85. simpleData: {
  86. idKey: 'id',
  87. pIdKey: 'pid'
  88. },
  89. key: {
  90. children: 'children'
  91. }
  92. }
  93. }
  94. var dataList = this.transformTozTreeFormat(setting, newArr)
  95. this.setData({
  96. dataList: dataList
  97. })
  98. })
  99. },
  100. transformTozTreeFormat(setting, sNodes) {
  101. var i, l,
  102. key = setting.data.simpleData.idKey,
  103. parentKey = setting.data.simpleData.pIdKey,
  104. childKey = setting.data.key.children
  105. if (!key || key == "" || !sNodes) return [];
  106. var r = [];
  107. var tmpMap = [];
  108. for (i = 0, l = sNodes.length; i < l; i++) {
  109. tmpMap[sNodes[i][key]] = sNodes[i];
  110. }
  111. for (i = 0, l = sNodes.length; i < l; i++) {
  112. if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) {
  113. if (!tmpMap[sNodes[i][parentKey]][childKey])
  114. tmpMap[sNodes[i][parentKey]][childKey] = [];
  115. tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]);
  116. } else {
  117. r.push(sNodes[i]);
  118. }
  119. }
  120. return r;
  121. },
  122. handleSelect(e) {
  123. wx.showToast({
  124. title: `已选择${e.detail.item.name}`,
  125. icon: 'none',
  126. duration: 1000
  127. })
  128. let item = getChild(this.data.dataList,e.detail.item.id,[])
  129. this.setData({
  130. selectKey: item,
  131. selectRoomName: e.detail.item.name,
  132. pid:e.detail.item.id,
  133. showOne: false
  134. })
  135. this.getLeasesList()
  136. },
  137. validObject(obj) {
  138. let objectData = new Object()
  139. for (let i in obj) {
  140. if (obj[i] != '' && obj[i]) {
  141. objectData[i] = obj[i]
  142. }
  143. }
  144. return objectData;
  145. },
  146. // 获取对应租约
  147. getLeasesList(){
  148. let siteIds = this.data.selectKey
  149. let QData = {}
  150. if(this.data.selectKey){
  151. QData = this.validObject({
  152. name:this.data.search.name,
  153. siteIds:JSON.stringify(siteIds)
  154. })
  155. }else{
  156. QData = this.validObject({
  157. name:this.data.search.name
  158. })
  159. }
  160. let data={
  161. orderBy: "create_time desc",
  162. pageNum: this.data.pageNum,
  163. pageSize: 10,
  164. q:JSON.stringify(QData)
  165. }
  166. WXAPI.getLeasesList(data).then(res=>{
  167. if(res.success){
  168. if(res.data.list.length<10){
  169. this.setData({
  170. pageStatus:false
  171. })
  172. }else{
  173. this.setData({
  174. pageStatus:true
  175. })
  176. }
  177. res.data.list.map(li=>{
  178. li.signingTime = moment(li.signingTime).format('YYYY-MM-DD')
  179. li.contractTime = moment(li.contractTime).format('YYYY-MM-DD')
  180. li.expand = JSON.parse(li.expand)
  181. })
  182. let list = []
  183. if(this.data.pageNum === 1){
  184. list = res.data.list
  185. }else{
  186. list = this.data.list.concat(res.data.list)
  187. }
  188. wx.showToast({
  189. title: `已为您搜索到${res.data.total}条记录`,
  190. duration:2000,
  191. icon:'none'
  192. })
  193. this.setData({
  194. list
  195. })
  196. }else{
  197. wx.showToast({
  198. title: '获取合约失败',
  199. mask:true,
  200. duration:'2000',
  201. icon:'none'
  202. })
  203. }
  204. })
  205. },
  206. onChange(event) {
  207. let search={
  208. name:event.detail
  209. }
  210. this.setData({
  211. search: search
  212. })
  213. },
  214. onClick(e) {
  215. this.setData({
  216. pageNum:1
  217. })
  218. this.getLeasesList()
  219. },
  220. onChangeRadio(event){
  221. this.setData({
  222. radio: event.detail,
  223. });
  224. },
  225. rentMethods(e){
  226. let leases = e.currentTarget.dataset.item
  227. let data={
  228. q:JSON.stringify({
  229. sid:leases.siteId
  230. })
  231. }
  232. WXAPI.getItemsPay(data).then(res2=>{
  233. if(res2.success){
  234. this.setData({
  235. siteOrder:res2.data.list[0]
  236. })
  237. }else{
  238. wx.showToast({
  239. title: res2.message,
  240. duration:200,
  241. icon:'none'
  242. })
  243. }
  244. })
  245. this.setData({
  246. show:true,
  247. leases
  248. })
  249. },
  250. confimPay(){
  251. let leases =this.data.leases
  252. let userInfo = wx.getStorageSync('userInfo')
  253. var data = {
  254. description: "交租",
  255. productName: "交租",
  256. total: parseInt(leases.monthRent)*100,//parseInt(this.data.leases.expand.rent)*100,
  257. userId: leases.cardId,
  258. cardId:leases.cardId,
  259. openid:wx.getStorageSync('openid'),
  260. appid:'wx20de9fe5943934a1',
  261. uid:userInfo.id,
  262. eid:userInfo.enterpriseId,
  263. orderType:1,
  264. payType:this.data.radio,
  265. expand:JSON.stringify({
  266. phone:leases.phone,
  267. nickname:leases.name
  268. })
  269. }
  270. WXAPI.miniPrepayOrder(data).then(res=>{
  271. // if(this.data.radio == '0'){
  272. // wx.requestPayment({
  273. // timeStamp: res.data.data.timeStamp,
  274. // appid: res.data.data.appId,
  275. // nonceStr: res.data.data.nonceStr,
  276. // package: res.data.data.package,
  277. // signType: res.data.data.signType,
  278. // totalFee: parseInt(leases.monthRent)*100,
  279. // paySign: res.data.data.paySign,
  280. // success (res1) {
  281. // wx.showToast({
  282. // title: "支付成功",
  283. // duration: 2000,
  284. // icon: 'success'
  285. // })
  286. // let dataOne={
  287. // code: "wx/updatePrepayStatus",
  288. // signature:wx.getStorageSync('signature'),
  289. // data: {
  290. // orderNo: res.data.data.orderNo,
  291. // status:0
  292. // }
  293. // }
  294. // WXAPI.sendCommandOne(dataOne).then(res2=>{
  295. // })
  296. // },
  297. // fail (res1) {
  298. // wx.showToast({
  299. // title: "支付失败",
  300. // duration: 2000,
  301. // icon: 'none'
  302. // })
  303. // let dataOne={}
  304. // if(res1.errMsg == 'requestPayment:fail cancel'){
  305. // dataOne={
  306. // code: "wx/updatePrepayStatus",
  307. // signature:wx.getStorageSync('signature'),
  308. // data: {
  309. // orderNo: res.data.data.orderNo,
  310. // status:8
  311. // }
  312. // }
  313. // }else{
  314. // dataOne={
  315. // code: "wx/updatePrepayStatus",
  316. // signature:wx.getStorageSync('signature'),
  317. // data: {
  318. // orderNo: res.data.data.orderNo,
  319. // status:6
  320. // }
  321. // }
  322. // }
  323. // WXAPI.sendCommandOne(dataOne).then(res2=>{
  324. // })
  325. // }
  326. // })
  327. // }else{
  328. let dataOne={
  329. code: "wx/updatePrepayStatus",
  330. data: {
  331. orderNo: res.data.data.orderNo,
  332. status:0
  333. }
  334. }
  335. WXAPI.sendCommand(dataOne).then(res2=>{
  336. if(res2.success){
  337. wx.showToast({
  338. title: "支付成功",
  339. duration: 2000,
  340. icon: 'success'
  341. })
  342. }else{
  343. wx.showToast({
  344. title: res2.message,
  345. duration: 2000,
  346. icon: 'error'
  347. })
  348. }
  349. })
  350. // }
  351. })
  352. },
  353. /**
  354. * 生命周期函数--监听页面初次渲染完成
  355. */
  356. onReady: function () {
  357. },
  358. /**
  359. * 生命周期函数--监听页面显示
  360. */
  361. onShow: function () {
  362. },
  363. /**
  364. * 生命周期函数--监听页面隐藏
  365. */
  366. onHide: function () {
  367. },
  368. /**
  369. * 生命周期函数--监听页面卸载
  370. */
  371. onUnload: function () {
  372. },
  373. /**
  374. * 页面相关事件处理函数--监听用户下拉动作
  375. */
  376. onPullDownRefresh: function () {
  377. },
  378. /**
  379. * 页面上拉触底事件的处理函数
  380. */
  381. onReachBottom: function () {
  382. if(this.data.pageStatus){
  383. let page = this.data.pageNum+1
  384. this.setData({
  385. pageNum:page
  386. })
  387. this.getLeasesList()
  388. }
  389. },
  390. /**
  391. * 用户点击右上角分享
  392. */
  393. onShareAppMessage: function () {
  394. }
  395. })