index.ts 11 KB

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