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.

398 lines
9.2 KiB

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