index.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  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 { queryGZMyPresell, 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'],
  25. /// banner图
  26. banners: [''],
  27. /// 预售认购列表查询
  28. sells: <GuangZuan.GZMyPreSell[]>[],
  29. /// 是否显示弹出层
  30. show: false
  31. },
  32. /**
  33. * 返回上层视图
  34. */
  35. backToParent() {
  36. /// 返回上层视图
  37. wx.navigateBack()
  38. },
  39. /// 我的预售认购列表查询
  40. queryGZMyPresell(presaleapplyid: number) {
  41. /// showLoading
  42. showLoading(() => {
  43. queryGZMyPresell({
  44. data: {
  45. presaleapplyid: presaleapplyid
  46. },
  47. success: (res) => {
  48. /// 获取数据
  49. this.setData({ sells: res.data })
  50. },
  51. complete: () => {
  52. /// hideLoading
  53. hideLoading()
  54. }
  55. })
  56. })
  57. },
  58. onClose() {
  59. if (!this.data.show) {
  60. return
  61. }
  62. /// 关闭弹出层
  63. this.setData({ show: false })
  64. },
  65. /// 显示弹出层
  66. showPopup() {
  67. if (this.data.show) {
  68. return
  69. }
  70. /// 关闭弹出层
  71. this.setData({ show: true })
  72. },
  73. // input输入中
  74. getInputNum (e: any) {
  75. /// 截取2位小数位
  76. let num = getDecimalNum(e.detail)
  77. this.setData({ orderQty: num})
  78. },
  79. /**
  80. * 立即购买
  81. */
  82. doSubmit() {
  83. /// 关闭弹出窗
  84. this.onClose()
  85. /// 合规性校验
  86. if (!this.check()) { return }
  87. /// showLoading
  88. showLoading(() => {
  89. /// 请求参数
  90. const info = JSON.stringify({
  91. Header: protoHeader(FunCode.GZCenterPurchaseOrderReq, marketID(62)),
  92. UserID: userid(),
  93. AccountID: accountid(),
  94. WRTradeOrderID: this.data.item.sellwrtradeorderid.toString(),
  95. OrderQty: Number(this.data.orderQty),
  96. MarketID: marketID(62),
  97. ClientType: clientType(),
  98. ClientOrderTime: formatDateString(new Date().toString()),
  99. ClientSerialNo: timetample().toString()
  100. })
  101. /// 发送请求
  102. sendMsgToMQ({
  103. data: {
  104. data: encryptBody(info),
  105. funCodeReq: FunCode.GZCenterPurchaseOrderReq,
  106. funCodeRsp: FunCode.GZCenterPurchaseOrderRsp,
  107. isEncrypted: isEncrypted()
  108. },
  109. success: (res) => {
  110. /// 解析对象
  111. const data = JSON.parse(res.data.data)
  112. if (data.RetCode != 0) {
  113. hideLoading(() => {}, getErrorMsg(data.RetCode))
  114. return
  115. }
  116. /// 求购发布请求成功
  117. hideLoading(() => {
  118. wx.navigateBack()
  119. }, '立即购买申请成功', 'success')
  120. },
  121. fail: (emsg) => {
  122. hideLoading(()=>{}, emsg)
  123. }
  124. })
  125. }, '提交申请请求中....')
  126. },
  127. /// 获取履约模板信息
  128. queryPermancePlanTmp(performancetemplateid: number) {
  129. /// showLoading
  130. showLoading(() => {
  131. queryPermancePlanTmp({
  132. success: (res) => {
  133. /// 获取数据
  134. this.setData({
  135. tmp: res.data.filter(obj => { return obj.autoid === performancetemplateid })[0]
  136. })
  137. },
  138. complete: () => {
  139. /// hideLoading
  140. hideLoading()
  141. }
  142. })
  143. })
  144. },
  145. /// 合规性校验
  146. check(): Boolean {
  147. if (Number(this.data.orderQty) === 0.0 || this.data.orderQty === '') {
  148. showToast('请输入采购数量。')
  149. return false
  150. }
  151. const { maxbuyqty, minbuyqty } = this.data.item
  152. if (Number(this.data.orderQty)>maxbuyqty || Number(this.data.orderQty)<minbuyqty) {
  153. showToast('采购数量不能大于'+`${maxbuyqty}`+'不能小于'+`${minbuyqty}`)
  154. return false
  155. }
  156. return true
  157. },
  158. /**
  159. * 生命周期函数--监听页面加载
  160. */
  161. onLoad(options: any) {
  162. const obj = JSON.parse(options.item)
  163. /// 解析数据
  164. this.setData({
  165. item: obj,
  166. banners: String(obj.pictureurls).split(',').map(itm => {
  167. return (services.config.openApiUrl+itm).replace('./uploadFile', '/uploadFile')
  168. }) })
  169. // 查询履约模板
  170. this.queryPermancePlanTmp(obj.performancetemplateid)
  171. /// 我的预售认购列表查询
  172. this.queryGZMyPresell(obj.presaleapplyid)
  173. },
  174. /**
  175. * 生命周期函数--监听页面初次渲染完成
  176. */
  177. onReady() {
  178. },
  179. /**
  180. * 生命周期函数--监听页面显示
  181. */
  182. onShow() {
  183. },
  184. /**
  185. * 生命周期函数--监听页面隐藏
  186. */
  187. onHide() {
  188. },
  189. /**
  190. * 生命周期函数--监听页面卸载
  191. */
  192. onUnload() {
  193. },
  194. /**
  195. * 页面相关事件处理函数--监听用户下拉动作
  196. */
  197. onPullDownRefresh() {
  198. },
  199. /**
  200. * 页面上拉触底事件的处理函数
  201. */
  202. onReachBottom() {
  203. },
  204. /**
  205. * 用户点击右上角分享
  206. */
  207. onShareAppMessage() {
  208. }
  209. })