index.ts 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. import { priceCalc } from "../../../services/api/orders/index"
  2. import { getEnumList } from "../../../services/utils"
  3. import { hideLoading, showLoading } from "../../../utils/message/index"
  4. // mHome/pages/calculator/index.ts
  5. Page({
  6. /**
  7. * 页面的初始数据
  8. */
  9. data: {
  10. /// 底部安全区域
  11. safeBottom: getApp().globalData.safeBottom,
  12. /// 窗口高度
  13. windowHeight: getApp().globalData.windowHeight,
  14. /// 形状
  15. zsshapes: [{id: 1, name: '圆形', isCheck: true},
  16. {id: 2, name: '异性', isCheck: false}],
  17. /// 选中形状
  18. zsshape: 1,
  19. /// 当前日期
  20. date: Date(),
  21. /// 颜色
  22. zscolors: [ {id: 1, name: 'D', isCheck: true} ],
  23. /// 选中形状
  24. zscolor: 'D',
  25. /// 净度
  26. zsclaritys: [ {id: 1, name: 'IF', isCheck: true} ],
  27. /// 选中净度
  28. zsclarity: 'IF',
  29. /// 重量
  30. weight: 1.0,
  31. /// 汇率
  32. dayrate: 1.0,
  33. /// 折扣
  34. discount: 0.0,
  35. /// 国际报价
  36. doller: '0.0',
  37. /// 国际人民币报价
  38. rmb: '0.0',
  39. /// 美元
  40. disdoller: '0.0',
  41. /// 人民币
  42. disrmb: '0.0',
  43. /// 克拉单价
  44. unitPrice: 0.0,
  45. /// 选项
  46. options: [
  47. { text: '-', value: 0 },
  48. { text: '+', value: 1 }
  49. ],
  50. /// 选项值
  51. value: 0
  52. },
  53. /// 钻石价格计算器
  54. priceCalc() {
  55. /// showLoding....
  56. showLoading(()=>{
  57. /// 折扣
  58. const discount = Number((this.data.value === 0 ? '-' : '+')+this.data.discount.toString())/100
  59. const rate = Number(this.data.dayrate)
  60. const weight = Number(this.data.weight)
  61. /// 进行查询
  62. priceCalc({
  63. data: {
  64. zsshape: this.data.zsshape,
  65. zscolor: this.data.zscolor,
  66. zsclarity: this.data.zsclarity,
  67. weight: weight,
  68. rate: 1.0
  69. },
  70. /// 查询成功
  71. success: (res) => {
  72. if (res.code != 200) {
  73. hideLoading(()=>{}, '查询失败', 'error')
  74. return
  75. }
  76. hideLoading(()=>{
  77. const dollar = Number(res.data[0].dollar)
  78. console.log(dollar)
  79. this.setData({
  80. doller: dollar.toFixed(2),
  81. rmb: (dollar*rate).toFixed(2),
  82. disdoller: (dollar*(1+discount)*weight).toFixed(2),
  83. disrmb: (dollar*(1+discount)*weight*rate).toFixed(2)
  84. })
  85. })
  86. },
  87. /// 查询失败
  88. fail: (emsg) => {
  89. hideLoading(()=>{}, '计算失败,原因:' + emsg, 'error')
  90. }
  91. })
  92. }, '计算中....')
  93. },
  94. /**
  95. * 返回上层视图
  96. */
  97. backToParent() {
  98. /// 返回上层视图
  99. wx.navigateBack()
  100. },
  101. /**
  102. * 按钮点击响应事件
  103. */
  104. /// 形状按钮点击事件
  105. onButtonPressed(e: any) {
  106. /// 获取对应的id
  107. const ids = (<string> e.target.id).split(' ')
  108. let id = (<string> e.target.id).split(' ')[0]
  109. const index = <number> <unknown>ids[1]
  110. switch (id) {
  111. case 'zsshape': /// 形状
  112. this.setData({
  113. zsshapes: this.data.zsshapes.map(item => {
  114. if (item.id == index) {
  115. item.isCheck = true
  116. /// 设置形状
  117. this.setData({ zsshape: item.id })
  118. } else {
  119. item.isCheck = false
  120. }
  121. return item
  122. })
  123. })
  124. break;
  125. case 'zscolor': /// 颜色
  126. this.setData({
  127. zscolors: this.data.zscolors.map(item => {
  128. if (item.id == index) {
  129. item.isCheck = true
  130. /// 设置形状
  131. this.setData({ zscolor: item.name })
  132. } else {
  133. item.isCheck = false
  134. }
  135. return item
  136. }) })
  137. break;
  138. case 'zsclarity': /// 净度
  139. this.setData({
  140. zsclaritys: this.data.zsclaritys.map(item => {
  141. if (item.id == index) {
  142. item.isCheck = true
  143. /// 设置形状
  144. this.setData({ zsclarity: item.name })
  145. } else {
  146. item.isCheck = false
  147. }
  148. return item
  149. }) })
  150. break;
  151. default: /// 计算
  152. this.priceCalc()
  153. break;
  154. }
  155. },
  156. /**
  157. * 生命周期函数--监听页面加载
  158. */
  159. onLoad() {
  160. /// 显示默认数据
  161. this.setData({
  162. /// 颜色
  163. zscolors: getEnumList('ZSColorType').map(obj => {
  164. return { id: obj.enumitemname, name: obj.enumdicname, isCheck: false }
  165. }),
  166. /// 净度
  167. zsclaritys: getEnumList('ZSClarityType').map(obj => {
  168. return { id: obj.enumitemname, name: obj.enumdicname, isCheck: false }
  169. }),
  170. })
  171. },
  172. /**
  173. * 生命周期函数--监听页面初次渲染完成
  174. */
  175. onReady() {},
  176. /**
  177. * 生命周期函数--监听页面显示
  178. */
  179. onShow() {},
  180. /**
  181. * 生命周期函数--监听页面隐藏
  182. */
  183. onHide() {},
  184. /**
  185. * 生命周期函数--监听页面卸载
  186. */
  187. onUnload() {},
  188. /**
  189. * 页面相关事件处理函数--监听用户下拉动作
  190. */
  191. onPullDownRefresh() {},
  192. /**
  193. * 页面上拉触底事件的处理函数
  194. */
  195. onReachBottom() {},
  196. /**
  197. * 用户点击右上角分享
  198. */
  199. onShareAppMessage() {}
  200. })