index.ts 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  1. import { queryBuyOrder, queryDiamond } from "../../services/api/orders/index"
  2. import { clientType, isEncrypted, marketid, protoHeader, userid, timetample, getEnumList, getErrorMsg } from "../../services/utils";
  3. import { FunCode } from "../../constants/enum/funcode";
  4. import { sendMsgToMQ } from "../../services/api/common/index";
  5. import { isnullstr } from "../../utils/util";
  6. import { hideLoading, showLoading, showToast } from "../../utils/message/index";
  7. import { encryptBody } from "../../utils/websocket/crypto";
  8. Page({
  9. /**
  10. * 页面的初始数据
  11. */
  12. data: {
  13. /// 底部安全区域
  14. safeBottom: getApp().globalData.safeBottom,
  15. /// tabs
  16. tabs: [{id: 1, name: '出售大厅'}, {id: 2, name: '求购大厅'}],
  17. /// tab索引
  18. active: 0,
  19. /// 出售大厅列头
  20. asktitles: [['形状', '尺寸', '分类'],
  21. ['颜色 | 净度 | 切工 | 对称 | 抛光 | 荧光 | 证书', '']],
  22. /// 求购大厅列头
  23. selltitles: [['重量', '形状', '尺寸', '分类'],
  24. ['颜色 | 净度 | 切工 | 对称 | 抛光 | 荧光', '价格']],
  25. /// 钻石分类
  26. categorys: [{ text: '单颗裸钻', value: 2 },
  27. { text: '单颗彩钻', value: 5 }],
  28. category: 2,
  29. /// 钻石形状
  30. shapes: [{ value: 1, text: '圆明亮形' }],
  31. shape: 1,
  32. /// 净度
  33. claritys: [{ text: 'FL', value: 1 }],
  34. clarity: 1,
  35. /// 切工
  36. cuts: [{ text: 'EX', value: 1 }],
  37. cut: 1,
  38. /// 荧光
  39. fluorescences: [{ text: '无', value: 1 }],
  40. fluorescence: 1,
  41. ///出售大厅数据
  42. sellOrders: <GuangZuan.SellOrder[]>[],
  43. /// 求购大厅数据
  44. askOrders: <GuangZuan.BuyOrder[]>[],
  45. /// 显示的值
  46. values: [{ up: [''], dwn: [''] }],
  47. /// 左滑宽度
  48. width: 100,
  49. /// 数据是否为空
  50. isEmpty: true,
  51. /// 商品(查询字段-模糊查询)
  52. zsallproperties: '',
  53. /// 数据缓存
  54. storge: {}
  55. },
  56. /**
  57. * tab触发事件
  58. */
  59. onTabChange(e: any) {
  60. this.setData({ active: e.detail.index })
  61. /// 查询数据
  62. e.detail.index == 0 ? this.queryDiamond() : this.queryBuyOrder()
  63. /// 清空搜索条件
  64. const info = wx.getStorageSync('TradeParams')
  65. if (info) { wx.removeStorageSync('TradeParams') }
  66. },
  67. /// 搜索按钮点击
  68. onClick() {
  69. /// 查询求购数据
  70. this.queryBuyOrder()
  71. },
  72. /**
  73. * 下拉菜单触发时间
  74. */
  75. onDropdownChange(e: any) {
  76. switch (e.target.id) {
  77. case "categorys": /// 钻石分类
  78. this.setData({ category: e.detail })
  79. break;
  80. case "shapes": /// 形状
  81. this.setData({ shape: e.detail })
  82. break;
  83. case "claritys": /// 钻石净度
  84. this.setData({ clarity: e.detail })
  85. break;
  86. case "cuts": /// 切工
  87. this.setData({ cut: e.detail })
  88. break;
  89. default: /// 荧光
  90. this.setData({ fluorescence: e.detail })
  91. break;
  92. }
  93. /// 数据查询
  94. this.data.active == 0 ? this.queryDiamond() : this.queryBuyOrder()
  95. },
  96. /**
  97. * 按钮点击响应事件
  98. */
  99. onButtonPressed(e: any){
  100. /// 获取对应的id
  101. const ids = (<string> e.target.id).split(' ')
  102. let id = (<string> e.target.id).split(' ')[0]
  103. const index = <number> <unknown>ids[1]
  104. switch (id) {
  105. case 'favorite': /// 添加收藏
  106. this.onAddFavorite(index)
  107. break
  108. case 'detail': /// 商品详情
  109. wx.navigateTo({
  110. url: this.data.active === 0 ? '/mHome/pages/goodsdetail/index?goodsno='+this.data.sellOrders[index].goodsno : ('/mTrade/pages/orderdetail/index?item='+JSON.stringify(this.data.askOrders[index]))
  111. })
  112. break;
  113. case 'delisting': /// 摘牌
  114. wx.navigateTo({
  115. url: '/mTrade/pages/delistingsell/index?item='+JSON.stringify(this.data.askOrders[index])
  116. })
  117. break;
  118. case 'listing-buy': /// 我要求购
  119. wx.navigateTo({ url: '/mTrade/pages/listingbuy/index' })
  120. break;
  121. case 'listing-sell': /// 我要出售
  122. wx.navigateTo({ url: '/mTrade/pages/listingsell/index' })
  123. break;
  124. case 'ask-buy': /// 求购信息
  125. wx.navigateTo({ url: '/mTrade/pages/orderdetail/index' })
  126. break;
  127. default:
  128. break;
  129. }
  130. },
  131. onIconClick(e: any) {
  132. switch (e.currentTarget.id) {
  133. case 'listing-buy': /// 挂买
  134. wx.navigateTo({
  135. url: '/mTrade/pages/listingbuy/index'
  136. })
  137. break;
  138. case 'listing-sell': /// 挂卖
  139. wx.navigateTo({
  140. url: '/mTrade/pages/listingsell/index'
  141. })
  142. break;
  143. case 'search': /// 搜索
  144. wx.navigateTo({
  145. url: '/mHome/pages/search/index'
  146. })
  147. break;
  148. default:
  149. break;
  150. }
  151. },
  152. /**
  153. * 添加收藏
  154. */
  155. onAddFavorite(index: number) {
  156. /// loding.....
  157. showLoading(()=>{
  158. /// 委托单号
  159. const wrtradeorderid = this.data.sellOrders[index].wrtradeorderid
  160. /// 参数信息
  161. const info = JSON.stringify({
  162. UserID: userid(),
  163. OperateType: 1,
  164. ClientType: clientType(),
  165. MarketID: marketid(),
  166. ClientSerialNo: timetample().toString(),
  167. WRTradeOrderID: wrtradeorderid,
  168. Header: protoHeader(FunCode.GoodsFavoriteOperateReq)
  169. })
  170. /// 发送请求
  171. sendMsgToMQ({
  172. data: {
  173. data: encryptBody(info),
  174. funCodeReq: FunCode.GoodsFavoriteOperateReq,
  175. funCodeRsp: FunCode.GoodsFavoriteOperateRsp,
  176. isEncrypted: isEncrypted()
  177. },
  178. success: (res) => {
  179. /// 解析对象
  180. const data = JSON.parse(res.data.data)
  181. if (data.RetCode != 0) {
  182. hideLoading(() => {}, getErrorMsg(data.RetCode), 'error')
  183. return
  184. }
  185. /// 操作成功
  186. hideLoading(()=>{}, '请求成功'+res.msg, 'success')
  187. },
  188. fail: (emsg) => {
  189. /// 操作失败
  190. hideLoading(()=>{}, emsg, 'error')
  191. },
  192. complete: () => {
  193. wx.stopPullDownRefresh()
  194. }
  195. })
  196. })
  197. },
  198. /// 查询出售大厅委托单
  199. queryDiamond() {
  200. /// 数据存储
  201. var data = {
  202. /// 钻石分类
  203. zscategory: this.data.category,
  204. /// 形状
  205. zsshapetype: [this.data.shape.toString()],
  206. /// 净度
  207. zsclaritytype: [this.data.clarity],
  208. /// 切工
  209. zscuttype: [this.data.cut],
  210. /// 荧光
  211. zsfluorescencetype: [this.data.fluorescence],
  212. }
  213. /// 获取参数
  214. const info = JSON.parse(wx.getStorageSync('TradeParams'))
  215. /// 钻石查询
  216. queryDiamond({
  217. data: {
  218. ...data,
  219. /// 颜色
  220. zscolortype: info ? info.zscolortype : [null],
  221. /// 货币类型
  222. zscurrencytype: info ? [info.zscurrencytype.toString()] : [''],
  223. /// 证书类型
  224. zscerttype: info ? [info.zscerttype.toString()] : [''],
  225. /// 抛光
  226. zspolishtype: info ? [info.zspolishtype] : [],
  227. /// 对称
  228. zssymmetrytype: info ? [info.zssymmetrytype] : [],
  229. /// 总重量(克拉重量)-从
  230. weight1: info ? info.weight1 : 0.0,
  231. /// 总重量(克拉重量)-至
  232. weight2: info ? info.weight2 : 0
  233. },
  234. /// 加载成功
  235. success: (res) => {
  236. if (res.code != 200) {
  237. /// 加载失败
  238. showToast('请求失败,原因:'+res.msg)
  239. return
  240. }
  241. /// 数据赋值
  242. this.setData({
  243. sellOrders: res.data,
  244. isEmpty: res.data.length === 0,
  245. /// 显示的值
  246. values: res.data.map(obj => {
  247. return {up: [obj.kpweight.toString()+'ct',
  248. isnullstr(obj.zsshapetypedisplay),
  249. isnullstr(obj.sizedisplay),
  250. isnullstr(obj.zscategorydisplay)],
  251. dwn: [isnullstr(obj.zscolortype1display)+' | '+
  252. isnullstr(obj.zsclaritytype1display)+' | '+
  253. isnullstr(obj.zscuttype1display)+' | '+
  254. isnullstr(obj.zssymmetrytype1display)+' | '+isnullstr(obj.zspolishtype1display)+' | '+
  255. isnullstr(obj.zsfluorescencetype1display),
  256. obj.zscurrencytypedisplayunit+obj.price]}
  257. })
  258. })
  259. },
  260. fail: (emsg) => {
  261. /// 加载失败
  262. showToast(emsg, 'error')
  263. },
  264. complete: () => {
  265. /// 停止下拉刷新
  266. wx.stopPullDownRefresh()
  267. }
  268. })
  269. },
  270. /// 查询求购大厅委托单
  271. queryBuyOrder() {
  272. /// loding.....
  273. showLoading(()=>{
  274. /// loding....
  275. queryBuyOrder({
  276. data: {
  277. /// 模糊搜索
  278. zsallproperties: this.data.zsallproperties
  279. },
  280. /// 加载成功
  281. success: (res) => {
  282. if (res.code != 200) {
  283. /// 加载失败
  284. hideLoading(()=>{}, '请求失败,原因:'+res.msg, 'error')
  285. return
  286. }
  287. hideLoading(()=>{
  288. /// 数据赋值
  289. this.setData({
  290. askOrders: res.data,
  291. isEmpty: res.data.length === 0,
  292. /// 显示的值
  293. values: res.data.map(obj => {
  294. return {up: [isnullstr(obj.zsshapetypedisplay),
  295. obj.zssize,
  296. isnullstr(obj.zscategorydisplay)],
  297. dwn: [isnullstr(obj.zscolortypedisplay)+' | '+
  298. isnullstr(obj.zsclaritytypedisplay)+' | '+
  299. isnullstr(obj.zscuttypedisplay)+' | '+
  300. isnullstr(obj.zssymmetrytypedisplay)+' | '+
  301. isnullstr(obj.zspolishtypedisplay)+' | '+
  302. isnullstr(obj.zsfluorescencetypedisplay), '']}
  303. })
  304. })
  305. })
  306. },
  307. fail: (emsg) => {
  308. /// 加载失败
  309. hideLoading(()=>{}, emsg, 'error')
  310. },
  311. complete: () => {
  312. /// 停止下拉刷新
  313. wx.stopPullDownRefresh()
  314. }
  315. })
  316. })
  317. },
  318. /**
  319. * 生命周期函数--监听页面加载
  320. */
  321. onLoad() {
  322. /// 显示默认数据
  323. this.setData({
  324. /// 形状
  325. shapes: getEnumList('ZSShapeType').map(obj => {
  326. return {
  327. value: obj.enumitemname,
  328. text: obj.enumdicname
  329. }
  330. }),
  331. /// 净度
  332. claritys: getEnumList('ZSClarityType').map(obj => {
  333. return {
  334. value: obj.enumitemname,
  335. text: obj.enumdicname
  336. }
  337. }),
  338. /// 切工
  339. cuts: getEnumList('ZSCutType').map(obj => {
  340. return {
  341. value: obj.enumitemname,
  342. text: obj.enumdicname
  343. }
  344. }),
  345. /// 荧光
  346. fluorescences: getEnumList('ZSFluorescenceType').map(obj => {
  347. return {
  348. value: obj.enumitemname,
  349. text: obj.enumdicname
  350. }
  351. }),
  352. })
  353. },
  354. onShow() {
  355. /// 获取参数
  356. const storge = wx.getStorageSync('TradeParams')
  357. if (storge) {
  358. try {
  359. const info = JSON.parse(storge)
  360. if (storge) {
  361. /// 数据缓存
  362. this.setData({
  363. storge: info,
  364. category: info.category,
  365. cut: info.zscuttype,
  366. shape: info.zsshapetype,
  367. clarity: info.zsclaritytype,
  368. fluorescence: info.zsfluorescencetype
  369. })
  370. }
  371. } catch (error) {}
  372. }
  373. /// 查询出售大厅委托单
  374. this.data.active == 0 ? this.queryDiamond() : this.queryBuyOrder()
  375. },
  376. /**
  377. * 生命周期函数--监听页面初次渲染完成
  378. */
  379. onReady() {
  380. },
  381. /**
  382. * 生命周期函数--监听页面隐藏
  383. */
  384. onHide() {
  385. },
  386. /**
  387. * 生命周期函数--监听页面卸载
  388. */
  389. onUnload() {
  390. },
  391. /**
  392. * 页面相关事件处理函数--监听用户下拉动作
  393. */
  394. onPullDownRefresh() {
  395. /// 查询数据
  396. this.data.active == 0 ? this.queryDiamond() : this.queryBuyOrder()
  397. },
  398. /**
  399. * 页面上拉触底事件的处理函数
  400. */
  401. onReachBottom() {
  402. },
  403. /**
  404. * 用户点击右上角分享
  405. */
  406. onShareAppMessage() {
  407. }
  408. })