index.ts 12 KB

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