index.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. import { accountid, clientType, getErrorMsg, isEncrypted, marketID, protoHeader, timetample, userid } from "../../../../services/utils"
  2. import { hideLoading, showLoading, showToast } from "../../../../utils/message/index"
  3. import { encryptBody } from "../../../../utils/websocket/crypto"
  4. import { FunCode } from "../../../../constants/enum/funcode"
  5. import { sendMsgToMQ } from "../../../../services/api/common/index"
  6. import { formatDateString, getDecimalNum } from "../../../../utils/util"
  7. import { queryPermancePlanTmp } from "../../../../services/api/orders/index"
  8. import services from "../../../../services/index"
  9. Page({
  10. /**
  11. * 页面的初始数据
  12. */
  13. data: {
  14. navTitle: '预售详情',
  15. /// 底部安全区域
  16. safeBottom: getApp().globalData.safeBottom,
  17. /// 数据信息
  18. item: {},
  19. /// 认购数量
  20. orderQty: '',
  21. /// 选中履约模板
  22. tmp: <GuangZuan.PermancePlanTmp>({}),
  23. /// 颜色
  24. colors: ['rebeccapurple', 'green', 'hotpink', 'orange', 'darkgoldenrod', 'firebrick', 'forestgreen', 'darksalmon', 'goldenrod', 'khaki', 'rosybrown', 'sandybrown', 'hotpink', 'orange', 'darkgoldenrod'],
  25. /// banner图
  26. banners: [''],
  27. /// 是否显示弹出层
  28. show: false
  29. },
  30. /**
  31. * 返回上层视图
  32. */
  33. backToParent() {
  34. /// 返回上层视图
  35. wx.navigateBack()
  36. },
  37. onClose() {
  38. if (!this.data.show) {
  39. return
  40. }
  41. /// 关闭弹出层
  42. this.setData({ show: false })
  43. },
  44. /// 显示弹出层
  45. showPopup() {
  46. if (this.data.show) {
  47. return
  48. }
  49. /// 关闭弹出层
  50. this.setData({ show: true })
  51. },
  52. // input输入中
  53. getInputNum (e: any) {
  54. /// 截取2位小数位
  55. let num = getDecimalNum(e.detail)
  56. this.setData({ orderQty: num})
  57. },
  58. /**
  59. * 立即购买
  60. */
  61. doSubmit() {
  62. /// 关闭弹出窗
  63. this.onClose()
  64. /// 合规性校验
  65. if (!this.check()) { return }
  66. /// showLoading
  67. showLoading(() => {
  68. /// 请求参数
  69. const info = JSON.stringify({
  70. Header: protoHeader(FunCode.GZPresaleOrderReq, marketID(63)),
  71. UserID: userid(),
  72. AccountID: accountid(),
  73. WRTradeOrderID: this.data.item.sellwrtradeorderid.toString(),
  74. OrderQty: Number(this.data.orderQty),
  75. MarketID: marketID(63),
  76. ClientType: clientType(),
  77. ClientOrderTime: formatDateString(new Date().toString()),
  78. ClientSerialNo: timetample().toString()
  79. })
  80. /// 发送请求
  81. sendMsgToMQ({
  82. data: {
  83. data: encryptBody(info),
  84. funCodeReq: FunCode.GZPresaleOrderReq,
  85. funCodeRsp: FunCode.GZPresaleOrderRsp,
  86. isEncrypted: isEncrypted()
  87. },
  88. success: (res) => {
  89. /// 解析对象
  90. const data = JSON.parse(res.data.data)
  91. if (data.RetCode != 0) {
  92. hideLoading(() => {}, getErrorMsg(data.RetCode))
  93. return
  94. }
  95. /// 求购发布请求成功
  96. hideLoading(() => {
  97. wx.navigateBack()
  98. }, '立即购买申请成功', 'success')
  99. },
  100. fail: (emsg) => {
  101. hideLoading(()=>{}, emsg)
  102. }
  103. })
  104. }, '提交申请中....')
  105. },
  106. /// 获取履约模板信息
  107. queryPermancePlanTmp(performancetemplateid: number) {
  108. /// showLoading
  109. showLoading(() => {
  110. queryPermancePlanTmp({
  111. success: (res) => {
  112. /// 获取数据
  113. this.setData({
  114. tmp: res.data.filter(obj => { return obj.autoid === performancetemplateid })[0]
  115. })
  116. },
  117. complete: () => {
  118. /// hideLoading
  119. hideLoading()
  120. }
  121. })
  122. })
  123. },
  124. /// 合规性校验
  125. check(): Boolean {
  126. if (Number(this.data.orderQty) === 0.0 || this.data.orderQty === '') {
  127. showToast('请输入认购数量。')
  128. return false
  129. }
  130. const { maxbuyqty, minbuyqty } = this.data.item
  131. if (Number(this.data.orderQty)>maxbuyqty || Number(this.data.orderQty)<minbuyqty) {
  132. showToast('不能小于'+`${minbuyqty}`+'认购数量不能大于'+`${maxbuyqty}`)
  133. return false
  134. }
  135. return true
  136. },
  137. /**
  138. * 生命周期函数--监听页面加载
  139. */
  140. onLoad(options: any) {
  141. const obj = JSON.parse(options.item)
  142. /// 解析数据
  143. this.setData({
  144. item: obj,
  145. banners: String(obj.pictureurls).split(',').map(itm => {
  146. return (services.config.openApiUrl+itm).replace('./uploadFile', '/uploadFile')
  147. })
  148. })
  149. /// 查询履约模板
  150. this.queryPermancePlanTmp(obj.performancetemplateid)
  151. },
  152. /**
  153. * 生命周期函数--监听页面初次渲染完成
  154. */
  155. onReady() {
  156. },
  157. /**
  158. * 生命周期函数--监听页面显示
  159. */
  160. onShow() {
  161. },
  162. /**
  163. * 生命周期函数--监听页面隐藏
  164. */
  165. onHide() {
  166. },
  167. /**
  168. * 生命周期函数--监听页面卸载
  169. */
  170. onUnload() {
  171. },
  172. /**
  173. * 页面相关事件处理函数--监听用户下拉动作
  174. */
  175. onPullDownRefresh() {
  176. },
  177. /**
  178. * 页面上拉触底事件的处理函数
  179. */
  180. onReachBottom() {
  181. },
  182. /**
  183. * 用户点击右上角分享
  184. */
  185. onShareAppMessage() {
  186. }
  187. })