Handy_Cao 3 роки тому
батько
коміт
702552cdb8
100 змінених файлів з 3000 додано та 508 видалено
  1. 7 3
      GuangZuan/miniprogram/app.json
  2. 1 1
      GuangZuan/miniprogram/components/button-back/index.ts
  3. 1 1
      GuangZuan/miniprogram/components/statusbar/index.ts
  4. 45 0
      GuangZuan/miniprogram/config/proto/mtp.proto
  5. 4 0
      GuangZuan/miniprogram/constants/enum/funcode.ts
  6. 1 1
      GuangZuan/miniprogram/layouts/view/index.ts
  7. 60 1
      GuangZuan/miniprogram/mHome/pages/bond/detail/index.less
  8. 59 6
      GuangZuan/miniprogram/mHome/pages/bond/detail/index.ts
  9. 26 0
      GuangZuan/miniprogram/mHome/pages/bond/detail/index.wxml
  10. 2 3
      GuangZuan/miniprogram/mHome/pages/bond/list/index.less
  11. 81 7
      GuangZuan/miniprogram/mHome/pages/bond/list/index.ts
  12. 7 1
      GuangZuan/miniprogram/mHome/pages/bond/list/index.wxml
  13. 128 46
      GuangZuan/miniprogram/mHome/pages/goodsdetail/index.less
  14. 36 2
      GuangZuan/miniprogram/mHome/pages/goodsdetail/index.ts
  15. 89 214
      GuangZuan/miniprogram/mHome/pages/goodsdetail/index.wxml
  16. 122 2
      GuangZuan/miniprogram/mHome/pages/inspection/detail/index.less
  17. 75 6
      GuangZuan/miniprogram/mHome/pages/inspection/detail/index.ts
  18. 88 4
      GuangZuan/miniprogram/mHome/pages/inspection/detail/index.wxml
  19. 28 0
      GuangZuan/miniprogram/mHome/pages/inspection/list/index.less
  20. 92 7
      GuangZuan/miniprogram/mHome/pages/inspection/list/index.ts
  21. 10 1
      GuangZuan/miniprogram/mHome/pages/inspection/list/index.wxml
  22. 0 0
      GuangZuan/miniprogram/mHome/pages/jewelry/list/index.json
  23. 0 0
      GuangZuan/miniprogram/mHome/pages/jewelry/list/index.less
  24. 19 5
      GuangZuan/miniprogram/mHome/pages/jewelry/list/index.ts
  25. 3 3
      GuangZuan/miniprogram/mHome/pages/jewelry/list/index.wxml
  26. 1 1
      GuangZuan/miniprogram/mMine/pages/address/operate/index.ts
  27. 0 1
      GuangZuan/miniprogram/mMine/pages/inoutgold/index.ts
  28. 15 0
      GuangZuan/miniprogram/mMine/pages/myinventorys/list/index.less
  29. 19 1
      GuangZuan/miniprogram/mMine/pages/myinventorys/list/index.ts
  30. 4 0
      GuangZuan/miniprogram/mMine/pages/myinventorys/list/index.wxml
  31. 3 0
      GuangZuan/miniprogram/mMine/pages/myorders/dlistingsdetail/index.json
  32. 1 0
      GuangZuan/miniprogram/mMine/pages/myorders/dlistingsdetail/index.less
  33. 66 0
      GuangZuan/miniprogram/mMine/pages/myorders/dlistingsdetail/index.ts
  34. 2 0
      GuangZuan/miniprogram/mMine/pages/myorders/dlistingsdetail/index.wxml
  35. 1 1
      GuangZuan/miniprogram/mMine/pages/myorders/his/index.wxml
  36. 42 1
      GuangZuan/miniprogram/mMine/pages/myorders/list/index.ts
  37. 2 2
      GuangZuan/miniprogram/mMine/pages/myorders/list/index.wxml
  38. 3 0
      GuangZuan/miniprogram/mMine/pages/myorders/mydelistingapplydetail/index.json
  39. 192 0
      GuangZuan/miniprogram/mMine/pages/myorders/mydelistingapplydetail/index.less
  40. 74 0
      GuangZuan/miniprogram/mMine/pages/myorders/mydelistingapplydetail/index.ts
  41. 113 0
      GuangZuan/miniprogram/mMine/pages/myorders/mydelistingapplydetail/index.wxml
  42. 3 1
      GuangZuan/miniprogram/mMine/pages/myperformance/breach/index.json
  43. 85 4
      GuangZuan/miniprogram/mMine/pages/myperformance/breach/index.less
  44. 110 2
      GuangZuan/miniprogram/mMine/pages/myperformance/breach/index.ts
  45. 36 6
      GuangZuan/miniprogram/mMine/pages/myperformance/breach/index.wxml
  46. 172 4
      GuangZuan/miniprogram/mMine/pages/myperformance/detail/index.less
  47. 204 3
      GuangZuan/miniprogram/mMine/pages/myperformance/detail/index.ts
  48. 99 6
      GuangZuan/miniprogram/mMine/pages/myperformance/detail/index.wxml
  49. 0 4
      GuangZuan/miniprogram/mMine/pages/myperformance/his/index.less
  50. 5 7
      GuangZuan/miniprogram/mMine/pages/myperformance/his/index.ts
  51. 8 8
      GuangZuan/miniprogram/mMine/pages/myperformance/list/index.less
  52. 18 9
      GuangZuan/miniprogram/mMine/pages/myperformance/list/index.ts
  53. 5 5
      GuangZuan/miniprogram/mMine/pages/myperformance/list/index.wxml
  54. 57 4
      GuangZuan/miniprogram/mMine/pages/myperformance/modify/index.less
  55. 86 3
      GuangZuan/miniprogram/mMine/pages/myperformance/modify/index.ts
  56. 34 5
      GuangZuan/miniprogram/mMine/pages/myperformance/modify/index.wxml
  57. 2 1
      GuangZuan/miniprogram/mTrade/pages/listingbuy/index.json
  58. 2 11
      GuangZuan/miniprogram/mTrade/pages/listingbuy/index.less
  59. 9 6
      GuangZuan/miniprogram/mTrade/pages/listingbuy/index.ts
  60. 14 9
      GuangZuan/miniprogram/mTrade/pages/listingbuy/index.wxml
  61. 2 1
      GuangZuan/miniprogram/mTrade/pages/listingsell/index.json
  62. 9 5
      GuangZuan/miniprogram/mTrade/pages/listingsell/index.ts
  63. 9 1
      GuangZuan/miniprogram/mTrade/pages/listingsell/index.wxml
  64. 1 2
      GuangZuan/miniprogram/pages/circle/index.ts
  65. 21 11
      GuangZuan/miniprogram/pages/home/index.ts
  66. 2 2
      GuangZuan/miniprogram/pages/home/index.wxml
  67. 14 1
      GuangZuan/miniprogram/pages/login/index.ts
  68. 61 24
      GuangZuan/miniprogram/pages/mine/index.less
  69. 19 4
      GuangZuan/miniprogram/pages/mine/index.ts
  70. 28 11
      GuangZuan/miniprogram/pages/mine/index.wxml
  71. 1 3
      GuangZuan/miniprogram/pages/register/index.ts
  72. 13 0
      GuangZuan/miniprogram/pages/trade/index.less
  73. 26 5
      GuangZuan/miniprogram/pages/trade/index.ts
  74. 4 1
      GuangZuan/miniprogram/pages/trade/index.wxml
  75. 5 0
      GuangZuan/miniprogram/services/api/common/index.ts
  76. 6 0
      GuangZuan/miniprogram/services/api/orders/index.ts
  77. 1 1
      GuangZuan/miniprogram/services/socket/quote/index.ts
  78. 79 2
      GuangZuan/miniprogram/services/utils.ts
  79. 0 0
      GuangZuan/miniprogram/stores/cache/index.ts
  80. 0 0
      GuangZuan/miniprogram/stores/cache/type.ts
  81. 0 0
      GuangZuan/miniprogram/stores/index.ts
  82. 1 8
      GuangZuan/miniprogram/stores/state/index.ts
  83. 0 3
      GuangZuan/miniprogram/stores/state/type.ts
  84. 0 0
      GuangZuan/miniprogram/stores/store.ts
  85. 0 0
      GuangZuan/miniprogram/stores/utils/object/index.ts
  86. 0 0
      GuangZuan/miniprogram/stores/utils/system/index.ts
  87. 0 0
      GuangZuan/miniprogram/stores/utils/timer/index.ts
  88. 0 0
      GuangZuan/miniprogram/stores/utils/util.ts
  89. 0 0
      GuangZuan/miniprogram/stores/utils/uuid/index.ts
  90. 0 0
      GuangZuan/miniprogram/stores/utils/websocket/crypto.ts
  91. 0 0
      GuangZuan/miniprogram/stores/utils/websocket/index.ts
  92. 0 0
      GuangZuan/miniprogram/stores/utils/websocket/interface.ts
  93. 0 0
      GuangZuan/miniprogram/stores/utils/websocket/package.ts
  94. 28 0
      GuangZuan/miniprogram/utils/util.ts
  95. 1 1
      GuangZuan/miniprogram/utils/websocket/crypto.ts
  96. 1 1
      GuangZuan/project.config.json
  97. 71 1
      GuangZuan/project.private.config.json
  98. 32 0
      GuangZuan/typings/types/model/common.d.ts
  99. 90 0
      GuangZuan/typings/types/model/order.d.ts
  100. 4 1
      GuangZuan/typings/types/model/trade.d.ts

+ 7 - 3
GuangZuan/miniprogram/app.json

@@ -49,7 +49,7 @@
         "pages/msg/msgdetail/index",
         "pages/goodsdetail/index",
         "pages/cerserach/index",
-        "pages/jewelry/index"
+        "pages/jewelry/list/index"
       ]
     },
     {
@@ -72,7 +72,9 @@
         "pages/myperformance/modify/index",
         "pages/myperformance/breach/index",
         "pages/modifypwd/index",
-        "pages/inoutgold/index"
+        "pages/inoutgold/index",
+        "pages/myorders/mydelistingapplydetail/index",
+        "pages/myorders/dlistingsdetail/index"
       ]
     },
     {
@@ -105,6 +107,7 @@
     "van-field": "@vant/weapp/field/index",
     "van-config-provider": "@vant/weapp/config-provider/index",
     "van-icon": "@vant/weapp/icon/index",
+    "van-dialog": "@vant/weapp/dialog/index",
     "van-skeleton": "@vant/weapp/skeleton/index",
     "van-tab": "@vant/weapp/tab/index",
     "van-tabs": "@vant/weapp/tabs/index",
@@ -144,5 +147,6 @@
       }
     ]
   },
-  "sitemapLocation": "sitemap.json"
+  "sitemapLocation": "sitemap.json",
+  "lazyCodeLoading": "requiredComponents"
 }

+ 1 - 1
GuangZuan/miniprogram/components/button-back/index.ts

@@ -1,4 +1,4 @@
-import { getStatusBarHeight } from '../../store/index'
+import { getStatusBarHeight } from '../../stores/index'
 
 Component({
     externalClasses: ['custom-class'],

+ 1 - 1
GuangZuan/miniprogram/components/statusbar/index.ts

@@ -1,4 +1,4 @@
-import { getStatusBarHeight } from '../../store/index'
+import { getStatusBarHeight } from '../../stores/index'
 
 Component({
     externalClasses: ['custom-class'],

+ 45 - 0
GuangZuan/miniprogram/config/proto/mtp.proto

@@ -2147,4 +2147,49 @@ message ChannelOrderRsp {
 	optional string RetDesc = 3; // string 描述信息
 	optional uint64 OrderID = 4; // uint64 一级生成的订单号
 	optional string OrderTime = 5; // string 接收委托交易的时间
+}
+// 出境检测会员操作请求
+message CJJCMemberOperateReq {
+	optional MessageHead Header = 1;
+  optional uint32 UserID = 2; // 用户ID,必填
+  optional uint64 OperateID = 3; // 操作人ID,必填,LoginAccount的LoginID
+  optional string OperateAccount = 4; // 操作人账户,LoginAccount的LoginCode,LoginCode为空则填LoginID,必
+  optional uint64 OrderID = 5; // 单据ID,必填
+  optional uint32 OperateType = 6; // 操作类型,必填,1:撤回2:确认发货3:确认检测结果
+  optional string Remark = 7; // 备注
+  optional uint32 ClientType = 8; // 终端类型
+  optional string ClientSerialNo = 9; // 客户端流水号
+}
+// 出境检测会员操作响应
+message CJJCMemberOperateRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+  optional uint32 UserID = 4; // 用户ID
+  optional uint64 AccountID = 5; // 资金账号
+  optional string ClientSerialNo = 6; // 客户端流水号
+}
+// 保税服务会员操作请求
+message BSFWMemberOperateReq {
+	optional MessageHead Header = 1;
+		optional uint32 UserID = 2; // 用户ID,必填
+		optional uint64 OperateID = 3; // 操作人ID,必填,LoginAccount的LoginID
+		optional string OperateAccount = 4; // 操作人账户,LoginAccount的LoginCode,LoginCode为空则填LoginID,必
+		optional uint64 OrderID = 5; // 单据ID,必填
+		optional uint32 OperateType = 6; // 操作类型,必填,1:上传发货单2:上传盖章单据3:确认预付款
+		repeated FileDetail FileDetails = 7; // 文件列表
+		optional string Remark = 8; // 备注
+		optional uint32 GZBSDeliveryType = 9; // 收货方式,OperateType=1:上传发货单时必填,枚举“GZBSDeliveryType”
+		optional string OtherLogistics = 10; // 指定其它物流,OperateType=1:上传发货单时填写
+    optional uint32 ClientType = 11; // 终端类型
+    optional string ClientSerialNo = 12; // 客户端流水号
+}
+// 保税服务会员操作响应
+message BSFWMemberOperateRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+  optional uint32 UserID = 4; // 用户ID
+  optional uint64 AccountID = 5; // 资金账号
+  optional string ClientSerialNo = 6; // 客户端流水号
 }

+ 4 - 0
GuangZuan/miniprogram/constants/enum/funcode.ts

@@ -73,4 +73,8 @@ export enum FunCode {
     WRListingCancelOrderRsp             = 1441797, // 挂牌撤单应答
     ReceiptZSOutApplyReq                = 1376463, // 钻石出库申请接口请求
     ReceiptZSOutApplyRsp                = 1376464, // 钻石出库申请接口响应
+    CJJCMemberOperateReq                = 1114117, // 出境检测会员操作请求(1114117)
+    CJJCMemberOperateRsp                = 1114118, // 出境检测会员操作响应(1114118)
+    BSFWMemberOperateReq                = 1114119, // 保税服务会员操作请求(1114119)
+    BSFWMemberOperateRsp                = 1114120, // 保税服务会员操作响应(1114120)
 }

+ 1 - 1
GuangZuan/miniprogram/layouts/view/index.ts

@@ -1,4 +1,4 @@
-import { getStatusBarHeight } from '../../store/index'
+import { getStatusBarHeight } from '../../stores/index'
 
 Component({
     externalClasses: ['custom-class'],

+ 60 - 1
GuangZuan/miniprogram/mHome/pages/bond/detail/index.less

@@ -6,7 +6,7 @@
   .title-view {
     margin: 10px;
     background-color: #f0f0f0;
-    height: 100px;
+    height: 70px;
     border-radius: 10px;
     display: flex;
     align-items: center;
@@ -33,4 +33,63 @@
       border-bottom: 1px solid #ddd;
     }
   }
+
+  .order-info {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    margin: 15px 5px;
+    
+    text {
+      color: #333;
+      font-size: 14px;
+    }
+  }
+}
+
+.item-view {
+  margin: 10px;
+  border-radius: 10px;
+  display: flex;
+  align-items: center;
+  align-content: center;
+  flex-direction: column;
+  padding: 5px 10px;
+  border: 1px solid #ddd;
+
+  .item-view-up, .item-view-mid, .item-view-dwn {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    align-items: center;
+    height: 50%;
+    width: 100%;
+    align-content: center;
+    height: 25px;
+
+    text {
+      color: #333;
+      font-size: 13px;
+      /*超出隐藏*/
+      overflow: hidden;
+        /*溢出不换行*/
+      white-space: nowrap;
+      /*溢出显示用省略号*/
+      text-overflow: ellipsis;
+      text-align: center;
+    }
+
+    :first-child {
+      text-align: left;
+    }
+
+    :last-child {
+      text-align: right;
+    }
+  }
+
+  .item-view-up {
+    border-bottom: 1px solid #ddd;
+    padding-bottom: 5px;
+  }
 }

+ 59 - 6
GuangZuan/miniprogram/mHome/pages/bond/detail/index.ts

@@ -1,4 +1,8 @@
-// mHome/pages/bond/detail/index.ts
+import Toast from "../../../../miniprogram_npm/@vant/weapp/toast/toast"
+import { queryGZBSFWOrderDetail } from "../../../../services/api/trade/index"
+import { userid } from "../../../../services/utils"
+import { isnullstr } from "../../../../utils/util"
+
 Page({
 
   /**
@@ -6,9 +10,14 @@ Page({
    */
   data: {
     /// 列头
-    titles: [['净重(ct)', '净重(g)', '毛重(g)', '总量(USD', '单价(USD/ct)'],
-              ['内容', '备注', '彩钻颜色']],
-              
+    titles: [['净重(ct)| 净重(g)| 毛重(g)| 总量(USD)| 单价(USD/ct)'], 
+             ['内容 | 备注 | 彩钻颜色']],
+    /// 是否空数据
+    isEmpty: true,
+    /// 数据
+    details: <GuangZuan.GZBSFWOrderDetail[]>[],
+    /// 显示的值
+    values: [{ up: [''], dwn: [''] }]
   },
 
    /**
@@ -19,12 +28,55 @@ Page({
     wx.navigateBack()
   },
 
-
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad() {
+    /// 查询保税服务单据
+    this.queryGZBSFWOrderDetail()
+  },
 
+  /// 查询保税服务单据明细
+  queryGZBSFWOrderDetail () {
+    /// loding.....
+    Toast.loading({message: '加载中...'})
+    /// 发送查询请求
+    queryGZBSFWOrderDetail({
+      data: {
+        /// 模糊搜索
+        userid: userid()
+      }, 
+      /// 加载成功
+      success: (res) => {
+        if (res.code != 200) {
+          /// 加载失败
+          Toast.success({ message: '加载失败...'});
+          return
+        }
+        /// 数据赋值
+        this.setData({ 
+          bonds: res.data,
+          /// 显示的值
+          values: res.data.map(obj => {
+            return {up: [obj.netweigthct.toString()+' | '+ 
+                         obj.netweigthgm.toString()+' | '+
+                         obj.grossweightgm.toString()+' | '+'--'+' | '+
+                         obj.perprice.toString()], 
+                    dwn: [isnullstr(obj.ordercontent)+' | '+ isnullstr(obj.remark)+' | '+ obj.colorinfo]}
+          })
+        })
+      },
+      fail: (emsg) => {
+        /// 加载失败
+        Toast.fail({ message: '加载失败...'+emsg});
+      },
+      complete: () => {
+        /// 数据赋值
+        this.setData({  isEmpty: this.data.values.length == 0 })
+        /// 停止下拉刷新
+        wx.stopPullDownRefresh()
+      }
+    })
   },
 
   /**
@@ -59,7 +111,8 @@ Page({
    * 页面相关事件处理函数--监听用户下拉动作
    */
   onPullDownRefresh() {
-
+    /// 查询保税服务单据
+    this.queryGZBSFWOrderDetail()
   },
 
   /**

+ 26 - 0
GuangZuan/miniprogram/mHome/pages/bond/detail/index.wxml

@@ -6,6 +6,12 @@
     <text slot="title" style="color: white;">保税详情</text>
   </van-nav-bar>
 
+  <!-- 单据信息 --> 
+  <view class="order-info">
+    <text class="order-info--orderno">单据信息:GZDEBSFW202211001</text>
+    <text class="order-info--status">预付款确认中</text>
+  </view>
+
   <!-- 列头 --> 
   <view class="title-view">
     <view class="title-view-up">
@@ -16,3 +22,23 @@
     </view>
   </view>
 </view>
+
+<!-- 内容滚动视图 --> 
+<scroll-view class="content-view" style="padding-bottom: {{safeBottom+48}}px;">
+  <!-- 数据 --> 
+  <van-swipe-cell wx:for="{{values}}" wx:for-item="itm" wx:for-index="idx" wx:key="applyid">
+    <view class="item-view">
+      <view class="item-view-up">
+        <text wx:for="{{itm.up}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
+      </view>
+      <view class="item-view-dwn">
+        <text wx:for="{{itm.dwn}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
+      </view>
+    </view>
+  </van-swipe-cell>
+</scroll-view>
+
+<!-- 无数据 --> 
+<van-empty wx:if="{{isEmpty}}" class="custom-image" description="无数据"/>
+<!-- toast --> 
+<van-toast id="van-toast" />

+ 2 - 3
GuangZuan/miniprogram/mHome/pages/bond/list/index.less

@@ -87,14 +87,13 @@
   }
 }
 
-.right {
+.van-swipe-cell__right {
   height: inherit;
-  width: 130px;
   color: white;
   display: flex;
 
   .item {
-    width: 65px;
+    width: 50px;
     text-align: center;
     display: flex;
     justify-content: center;

+ 81 - 7
GuangZuan/miniprogram/mHome/pages/bond/list/index.ts

@@ -1,8 +1,8 @@
-// mHome/pages/bond/list/index.ts
-
+import { FunCode } from "../../../../constants/enum/funcode"
 import Toast from "../../../../miniprogram_npm/@vant/weapp/toast/toast"
+import { sendMsgToMQ } from "../../../../services/api/common/index"
 import { queryGZBSFWOrder } from "../../../../services/api/trade/index"
-import { getExecutestatus, userid } from "../../../../services/utils"
+import { clientType, getExecutestatus, isEncrypted, loginCode, loginid, protoHeader, timetample, userid } from "../../../../services/utils"
 import { isnullstr } from "../../../../utils/util"
 
 Page({
@@ -17,12 +17,13 @@ Page({
     active: 0,
     /// 列头
     titles: [['总净重(ct)| 总净重(g)| 总毛重(g)', '单据编号'],
-             ['总值(USD)| 单价(USD/ct)', '状态'],
-             ['内容 | 备注']],
+             ['总值(USD)| 单价(USD/ct)', '状态'], ['内容 | 备注']],
     /// 是否空数据
     isEmpty: true,
     /// 数据信息
     bonds: <GuangZuan.GZBSFWOrder[]>[],
+    /// 左滑宽度
+    width: 100,
     /// 显示的值
     values: [{ up: [''], mid: [''], dwn: [''] }]
   },
@@ -35,6 +36,31 @@ Page({
     wx.navigateBack()
   },
 
+  onButtonPressed(e: any) {
+    /// 获取对应的id
+    const ids = (<string> e.target.id).split(' ')
+    let id = (<string> e.target.id).split(' ')[0]
+    const index = <number> <unknown>ids[1]
+    /// 单号
+    const orderid = this.data.bonds[index].orderid
+
+    switch (id) {
+      case 'detail':     /// 详情
+        wx.navigateTo({
+          url: "/mHome/pages/bond/detail/index?item="+JSON.stringify(this.data.bonds[index])
+        })
+        break;
+      case 'confirmprepayment':  /// 确认预付款
+        this.doBSFWOperator(3, orderid)
+        break;
+      case 'confirmpayment':     /// 确认付款
+        this.doBSFWOperator(4, orderid)
+        break;
+      default:
+        break;
+    }
+  },
+
   /**
    * tab触发事件
    */
@@ -55,7 +81,8 @@ Page({
     queryGZBSFWOrder({
       data: {
         /// 模糊搜索
-        userid: userid()
+        userid: userid(),
+        executestatus: this.data.active+1
       },
       /// 加载成功
       success: (res) => {
@@ -95,6 +122,52 @@ Page({
   },
 
   /**
+   * 保税服务操作
+   */
+  doBSFWOperator(operator: number, orderid: number) {
+    /// loding.....
+    Toast.loading({ message: '操作请求中.....'})
+    /// 参数信息
+    const params = {
+      UserID: userid(),
+      OperateID: loginid(),
+      ClientType: clientType,
+      ClientSerialNo: timetample().toString,
+      OperateAccount: loginCode(),
+      OrderID: orderid,
+      OperateType: operator,
+      Header: protoHeader(FunCode.BSFWMemberOperateReq)
+    }
+
+    /// 发送请求
+    sendMsgToMQ({
+      data: {
+        data: JSON.stringify(params),
+        funCodeReq: FunCode.BSFWMemberOperateReq,
+        funCodeRsp: FunCode.BSFWMemberOperateRsp,
+        isEncrypted: isEncrypted()
+      },
+      success: (res) => {
+        if (res.code != 0) {
+          Toast.fail({message: '操作申请失败, 原因:'+res.msg})
+          return
+        }
+        /// 操作成功
+        Toast.success('操作成功')
+        /// 重新获取数据
+        this.queryGZBSFWOrder()
+      },
+      fail: (emsg) => {
+        /// 操作失败
+        Toast.fail('操作失败,原因:'+emsg)
+      }, complete: () => {
+        /// hideLoading
+        Toast.clear()
+      }
+    })
+  },
+
+  /**
    * 生命周期函数--监听页面加载
    */
   onLoad() {
@@ -134,7 +207,8 @@ Page({
    * 页面相关事件处理函数--监听用户下拉动作
    */
   onPullDownRefresh() {
-
+    /// 查询保税服务单据
+    this.queryGZBSFWOrder()
   },
 
   /**

+ 7 - 1
GuangZuan/miniprogram/mHome/pages/bond/list/index.wxml

@@ -30,7 +30,7 @@
 <!-- 内容滚动视图 --> 
 <scroll-view class="content-view" style="padding-bottom: {{safeBottom+48}}px;">
   <!-- 数据 --> 
-  <van-swipe-cell wx:for="{{values}}" wx:for-item="itm" wx:for-index="idx" wx:key="applyid">
+  <van-swipe-cell wx:for="{{values}}" wx:for-item="itm" wx:for-index="idx" right-width="{{ width }}" wx:key="orderid">
     <view class="item-view">
       <view class="item-view-up">
         <text wx:for="{{itm.up}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
@@ -42,6 +42,12 @@
         <text wx:for="{{itm.dwn}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
       </view>
     </view>
+    <!-- 取消收藏 --> 
+    <view slot="right" class="van-swipe-cell__right">
+      <view class="item detail" id="detail {{ idx }}" style="background-color: yellowgreen; color: white;" bindtap="onButtonPressed">详情</view>
+      <view class="item confirmprepayment" id="confirmprepayment {{ idx }}" style="background-color: darkgreen; color: white;" bindtap="onButtonPressed" wx:if="{{ orders[idx].gzbsstatus === 4 }}">确认预付款</view>
+      <view class="item confirmpayment" id="confirmpayment {{ idx }}" style="background-color: maroon; color: white;" bindtap="onButtonPressed" wx:if="{{ orders[idx].gzbsstatus === 11 }}">确认付款</view>
+    </view>
   </van-swipe-cell>
 </scroll-view>
 

+ 128 - 46
GuangZuan/miniprogram/mHome/pages/goodsdetail/index.less

@@ -1,70 +1,152 @@
 .container {
+  width: 100%;
   display: flex;
   flex-direction: column;
+  align-content: center;
   align-items: center;
 
-  .goods-img {
-    width: 90%;
+  .topView {
+    position: sticky;
+    top: 0;
+    z-index: 999;
+    width: 100%;
   }
-  
-  .color-diamond, .bulk-diamond, .single-diamond, .bulk-workblank-diamond, .jewelry-diamond {
-    display: flex;
-    flex-direction: column;
+
+  .banner {
+    height: 210px;
     width: 100%;
-    margin-top: 10px;
-    background-color: #eee;
 
-    view:nth-child(1) {
-      margin-top: 0px;
+    .swiper-item, image {
+      width: 100%;
     }
+  }
 
-    view:nth-child(2) {
-      margin-bottom: 10px;
+  .attribute-info {
+    border-top: 10px solid #f0f0f0;
+  }
+
+  .attribute-info, .seller-info  {
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    align-content: center;
+    align-items: center;
+    margin-bottom: 10px;
+
+    .title {
+      padding: 10px 5px;
+      width: 100%;
+      color: #333;
+      font-size: 20px;
     }
-    
-    .color-diamond-shape, .color-diamond-type, .bulk-diamond-type, .bulk-diamond-shape, .single-diamond-type, .single-diamond-shape, .bulk-workblank-diamond-type, .bulk-workblank-diamond-shape, .jewelry-diamond-shape, .jewelry-diamond-type {
-      padding-bottom: 10px;
-      display: flex;
-      flex-direction: column;
-      padding-left: 2.5%;
+
+    .attribute-info__item, .content__item{
       width: 100%;
-      background-color: white;
-      margin-top: 10px;
-
-      view {
-        display: flex;
-        flex-direction: row;
-        justify-content: space-between;
-
-        text:nth-child(2) {
-          width: 40%;
-        }
-
-        text {
-          font-size: 15px;
-          color: #333;
-          padding-top: 7.5px;
-          text-align: left;
-        }
+      padding-left: 15px;
+      height: 44px;
+      border-bottom: 1px solid #f0f0f0;
+      display: flex;
+      flex-direction: row;
+      justify-content: start;
+      align-items: center;
+      align-content: center;
+
+      .title {
+        font-size: 14px;
+        width: 80px;
+        color: #666;
+      }
+
+      .value {
+        font-size: 14px;
+        color: #333;
+      }
+    }
+
+    .content {
+      width: 95%;
+      background-color: #f0f0f0;
+      border-radius: 10px;
+      padding: 10px 0px;
+      
+      &__item {
+        height: 30px;
+        padding-left: 5px;
+      }
+
+      .title {
+        font-size: 14px;
+        width: 50px;
+        color: #666;
+      }
+
+      .value {
+        font-size: 14px;
+        color: #333;
       }
     }
   }
 
-  .seller-info {
+  .price-info {
+    width: 100%;
     display: flex;
     flex-direction: column;
-    justify-content: space-between;
-    width: 95%;
-    margin-top: 10px;
+    align-content: center;
+    align-items: center;
+    padding: 10px 0px;
 
-    text {
-      padding-top: 7.5px;
-      font-size: 15px;
-      color: #333;
+    border-bottom: 5px solid #f0f0f0;
+
+    .content__item {
+      display: flex;
+      flex-direction: row;
+      justify-content: start;
+      align-items: center;
+      align-content: center;
+      width: 95%;
+      height: 30px;
+
+      text {
+        color: #333;
+        padding: 5px 0px;
+      }
+
+      &__price {
+        font-size: 18px;
+      }
+      
+      &__rate {
+        font-size: 14px;
+        margin-left: 15px;
+      }
+
+      &__name {
+        font-size: 20px;
+        padding: 5px 0px;
+      }
+
+      &__weight, &__gprice, &__market-price {
+        font-size: 14px;
+      }
+
+      &__weight, &__gprice {
+        width: 50%;
+      }
     }
   }
 
-  van-button {
-    margin-top: 20px;
+  .button-view {
+    border-radius: 10px;
+    width: 95%;
+    padding-top: 15px;
+    display: flex;
+    flex-direction: row;
+    align-content: center;
+    align-items: center;
+    justify-content: space-between;
+
+    van-button {
+      width: 90%;
+    }
   }
 }

+ 36 - 2
GuangZuan/miniprogram/mHome/pages/goodsdetail/index.ts

@@ -1,4 +1,4 @@
-// mHome/pages/goodsdetail/index.ts
+import { getGoods } from "../../../services/api/orders/index"
 
 Page({
 
@@ -8,6 +8,10 @@ Page({
   data: {
     /// 底部安全区域
     safeBottom: getApp().globalData.safeBottom,
+    /// 商品信息
+    goods: <GuangZuan.GetGoods>({}),
+    /// 商品编号
+    goodsno: ''
   },
 
   /**
@@ -19,9 +23,39 @@ Page({
   },
 
   /**
+   * 获取商品数据信息
+   */
+  getGoods() {
+    /// loding....
+    wx.showLoading({title: '加载中.....'})
+    /// 发送请求
+    getGoods({
+      data: {
+        goodsno: this.data.goodsno
+      },
+      success: (res) => {
+        this.setData({ goods: res.data })
+      },
+      fail: (emsg) => {
+        wx.showToast({title: '数据请求失败,原因:'+emsg})
+      },
+      complete: () => {
+        /// hideLoading
+        wx.hideLoading()
+      }
+    })
+  },
+
+  /**
    * 生命周期函数--监听页面加载
    */
-  onLoad() {},
+  onLoad(options: any) {
+    console.log(options)
+    /// 商品编号
+    this.setData({ goodsno: options.goodsno })
+    /// 获取商品数据
+    this.getGoods()
+  },
 
   /**
    * 生命周期函数--监听页面初次渲染完成

+ 89 - 214
GuangZuan/miniprogram/mHome/pages/goodsdetail/index.wxml

@@ -1,239 +1,114 @@
-<!-- 导航栏 -->
-<van-nav-bar custom-style="background-color: #E92020">
-  <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
-  <text slot="title" style="color: white;">商品详情</text>
-</van-nav-bar>
+<view class="container">
+  <view class="topView">
+    <!-- 导航栏 -->
+    <van-nav-bar custom-style="background-color: #E92020">
+      <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
+      <text slot="title" style="color: white;">商品详情</text>
+    </van-nav-bar>
+  </view>
 
-<view class="container" style="position: relative; bottom:{{safeBottom}}px;">
-  <!-- 图片信息 -->
-  <image class="goods-img" mode="widthFix" src="https://t7.baidu.com/it/u=963301259,1982396977&fm=193&f=GIF"></image>
+  <!-- banner轮播图 -->
+  <swiper class="banner" wx:if="{{banners.count != 0}}" indicator-active-color="orange" indicator-dots autoplay interval="5000" circular>
+    <swiper-item class="banner_item" wx:for="4" wx:key="index" id="{{item}}">
+      <view class="swiper-item">
+        <image src='https://img.yzcdn.cn/vant/cat.jpeg' mode="widthFix"></image>
+      </view>
+    </swiper-item>
+  </swiper>
 
-  <!-- 成批裸钻CSZS001000001 -->
-  <view class="bulk-diamond" wx:if="{{false}}">
-    <!-- 形状 -->
-    <view class="bulk-diamond-type">
-      <view>
-        <text>成批裸钻CSZS001000001</text>
-      </view>
-      <view>
-        <text>总价:¥10023.23</text>
-        <text>总重量:10.04 CT</text>
+  <!-- 价格信息 -->
+  <view class="price-info">
+    <view class="content__item">
+        <text class="content__item__price">¥{{ goods.price }}</text>
+        <text class="content__item__rate">汇率: 6.9762</text>
       </view>
-      <view>
-        <text>克拉单价:¥10213.92</text>
-        <text>单颗均重:0.51   CT</text>
+      <view class="content__item">
+        <text class="content__item__name">【{{ goods.zscategorydisplay }}】商品编号:{{ goods.goodsno }}</text>
       </view>
-      <view>
-        <text>市场价: ¥10213.92</text>
-        <text>仓库: SZ00001</text>
-      </view>
-    </view>
-  
-    <!-- 形状 -->
-    <view class="bulk-diamond-shape">
-      <view>
-        <text>形状:圆明亮形(Round)</text>
-        <text>净度:FL</text>
+      <view class="content__item">
+        <text class="content__item__weight">重量:{{ goods.weightavg }} 克拉</text>
+        <text class="content__item__gprice">克拉单价:$ {{ goods.priceper }}</text>
       </view>
-      <view>
-        <text>颜色:浅(Light)-Orange-蓝色</text>
-        <text>对称度:EX</text>
+      <view class="content__item">
+        <text class="content__item__market-price">市场价:¥{{ goods.marketprice }}</text>
       </view>
-      <view>
-        <text>莹光:微弱( faint)</text>
-        <text>抛光:P</text>
-      </view>
-      <view>
-        <text>尺寸:1.21*1.33*1.34</text>
-        <text>证书类型:GIA</text>
-      </view>
-    </view>
   </view>
 
-  <!-- 单颗裸钻CSZS001000001 -->
-  <view class="single-diamond" wx:if="{{false}}">
-    <!-- 形状 -->
-    <view class="single-diamond-type">
-      <view>
-        <text>单颗裸钻CSZS001000001</text>
-      </view>
-      <view>
-        <text>总价:¥10023.23</text>
-        <text>总重量:10.04 CT</text>
-      </view>
-      <view>
-        <text>克拉单价:¥10213.92</text>
-        <text>单颗均重:0.51   CT</text>
-      </view>
-      <view>
-        <text>市场价: ¥10213.92</text>
-        <text>仓库: SZ00001</text>
-      </view>
-    </view>
-  
-    <!-- 形状 -->
-    <view class="single-diamond-shape">
-      <view>
-        <text>形状:圆明亮形(Round)</text>
-        <text>净度:FL</text>
+  <!-- 卖家信息 -->
+  <view class="seller-info">
+    <text class="title">【卖家信息】</text>
+    <view class="content">
+      <view class="content__item">
+        <text class="title">名称:</text>
+        <text class="value">{{ goods.sellusername}}</text>
       </view>
-      <view>
-        <text>颜色:浅(Light)-Orange-蓝色</text>
-        <text>对称度:EX</text>
+      <view class="content__item">
+        <text class="title">电话:</text>
+        <text class="value">{{ goods.mobile }}</text>
       </view>
-      <view>
-        <text>莹光:微弱( faint)</text>
-        <text>抛光:P</text>
+      <view class="content__item">
+        <text class="title">仓库:</text>
+        <text class="value">{{ goods.warehousenamedisplay }}</text>
       </view>
-      <view>
-        <text>尺寸:1.21*1.33*1.34</text>
-        <text>证书类型:GIA</text>
+      <view class="content__item">
+        <text class="title">履约:</text>
+        <text class="value">中国-广东省-广州市-南沙XXXxxxxX仓库</text>
       </view>
     </view>
   </view>
 
-  <!-- 成批毛坯CSZS001000001 -->
-  <view class="bulk-workblank-diamond" wx:if="{{false}}">
-    <!-- 形状 -->
-    <view class="bulk-workblank-diamond-type">
-      <view>
-        <text>成批毛坯CSZS001000001</text>
-      </view>
-      <view>
-        <text>总价:¥10023.23</text>
-        <text>总重量:10.04 CT</text>
-      </view>
-      <view>
-        <text>克拉单价:¥10213.92</text>
-        <text>单颗均重:0.51   CT</text>
-      </view>
-      <view>
-        <text>市场价: ¥10213.92</text>
-        <text>仓库: SZ00001</text>
-      </view>
+  <!-- 钻石属性 -->
+  <view class="attribute-info">
+    <text class="title">【钻石属性】</text>
+    <view class="attribute-info__item">
+      <text class="title">形状:</text>
+      <text class="value">{{ goods.zspolishtype2display }}</text>
     </view>
-  
-    <!-- 形状 -->
-    <view class="bulk-workblank-diamond-shape">
-      <view>
-        <text>晶型:圆明亮形(Round)</text>
-      </view>
-      <view>
-        <text>颜色:浅(Light)-Orange-蓝色</text>
-        <text>净度:EX</text>
-      </view>
-      <view>
-        <text>莹光:微弱( faint)</text>
-      </view>
-      <view>
-        <text>原产地:1.21*1.33*1.34</text>
-      </view>
-      <view>
-        <text>金伯利证书编号:1.21*1.33*1.34</text>
-      </view>
-      <view>
-        <text>金伯利证书重量:1.21*1.33*1.34</text>
-      </view>
+    <view class="attribute-info__item">
+      <text class="title">颜色:</text>
+      <text class="value">{{ goods.zscolortype1display }}~{{goods.zscolortype2display}}</text>
     </view>
-  </view>
-
-   <!-- 钻石首饰CSZS001000001 -->
-  <view class="jewelry-diamond" wx:if="{{true}}">
-    <!-- 形状 -->
-    <view class="jewelry-diamond-type">
-      <view>
-        <text>钻石首饰CSZS001000001</text>
-      </view>
-      <view>
-        <text>总价:¥10023.23</text>
-        <text>总重量:10.04 CT</text>
-      </view>
-      <view>
-        <text>克拉单价:¥10213.92</text>
-        <text>单颗均重:0.51   CT</text>
-      </view>
-      <view>
-        <text>市场价: ¥10213.92</text>
-        <text>款式: SZ00001</text>
-      </view>
-      <view>
-        <text>仓库: ¥10213.92</text>
-      </view>
+    <view class="attribute-info__item">
+      <text class="title">净度:</text>
+      <text class="value">{{ goods.zsclaritytype1display }}~{{goods.zsclaritytype2display}}</text>
     </view>
-  
-    <!-- 形状 -->
-    <view class="jewelry-diamond-shape">
-      <view>
-        <text>形状:圆明亮形(Round)</text>
-        <text>颜色:FL</text>
-      </view>
-      <view>
-        <text>尺寸:浅(Light)-Orange-蓝色</text>
-        <text>对称度:EX</text>
-      </view>
-      <view>
-        <text>切工:微弱( faint)</text>
-        <text>抛光:P</text>
-      </view>
-      <view>
-        <text>莹光:1.21*1.33*1.34</text>
-        <text>净度:GIA</text>
-      </view>
-      <view>
-        <text>证书类型:GIA</text>
-        <text>镶嵌材料:人造钻石1</text>
-      </view>
+    <view class="attribute-info__item">
+      <text class="title">切工:</text>
+      <text class="value">{{ goods.zscuttype1display }}~{{goods.zscuttype2display}}</text>
     </view>
-  </view>
-
-  <!-- 彩色裸钻CSZS001000001 -->
-  <view class="color-diamond" wx:if="{{false}}">
-    <!-- 形状 -->
-    <view class="color-diamond-type">
-      <view>
-        <text>彩色裸钻CSZS001000001</text>
-      </view>
-      <view>
-        <text>价格:¥10023.23</text>
-        <text>克拉重量:EX</text>
-      </view>
-      <view>
-        <text>克拉单价:¥10213.92</text>
-        <text>仓库:SZ00001</text>
-      </view>
-      <view>
-        <text>市场价: ¥10213.92</text>
-      </view>
+    <view class="attribute-info__item">
+      <text class="title">抛光:</text>
+      <text class="value">{{ goods.zspolishtype1display }}~{{goods.zspolishtype2display}}</text>
     </view>
-  
-    <!-- 形状 -->
-    <view class="color-diamond-shape">
-      <view>
-        <text>形状:圆明亮形(Round)</text>
-        <text>净度:FL</text>
-      </view>
-      <view>
-        <text>颜色:浅(Light)-Orange-蓝色</text>
-        <text>对称度:EX</text>
-      </view>
-      <view>
-        <text>莹光:微弱( faint)</text>
-        <text>抛光:P</text>
-      </view>
-      <view>
-        <text>尺寸:1.21*1.33*1.34</text>
-        <text>证书类型:GIA</text>
-      </view>
+    <view class="attribute-info__item">
+      <text class="title">荧光:</text>
+      <text class="value">{{ goods.zsfluorescencetype1display }}~{{goods.zsfluorescencetype2display}}</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">尺寸:</text>
+      <text class="value">{{ goods.sizedisplay }}</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">证书类型:</text>
+      <text class="value">{{ goods.zscategorydisplay }}</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">证书编号:</text>
+      <text class="value">{{ goods.cerno }}</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">镶嵌材料:</text>
+      <text class="value">{{ goods.settingmaterial }}</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">配石描述:</text>
+      <text class="value">{{ goods.stonedesc }}</text>
     </view>
   </view>
 
-  <!-- 卖家信息 -->
-  <view class="seller-info"> 
-    <text>卖家名称:EFGH钻石贸易商</text>
-    <text>联系电话:13752388452</text>
-    <text>备注:国际知名专家鉴定,纯天然钻石</text>
+   <!-- 按钮 -->
+   <view class="button-view">
+    <van-icon name="star-o" size="20"/>
+    <van-button custom-class="excute" id="excute" round color="linear-gradient(to right, #4bb0ff, #F7A657)" block bind:click="onButtonPressed">立即购买</van-button>
   </view>
-
-  <!-- 关闭 -->
-  <van-button type="danger" block style="width: 90%;" round bind:click="backToParent">关闭</van-button>
 </view>

+ 122 - 2
GuangZuan/miniprogram/mHome/pages/inspection/detail/index.less

@@ -3,10 +3,77 @@
   top: 0px;
   z-index: 999;
 
+  .orderinfo {
+    display: flex;
+    flex-direction: column;
+    margin: 5px 10px;
+
+    .title_item {
+      display: flex;
+      flex-direction: row;
+      justify-content: start;
+      align-items: center;
+      align-content: center;
+
+      text {
+        color: #333;
+        font-size: 14px;
+      }
+
+      text:nth-child(3) {
+        margin-left: 15px;
+      }
+
+      .ordertitle {
+        color: #333;
+        font-size: 20px;
+        font-weight: bold;
+      }
+    }
+
+    .orderinfo_item {
+      display: flex;
+      flex-direction: row;
+      justify-content: space-between;
+      align-items: center;
+      align-content: center;
+      height: 25px;
+
+      .orderinfo_left, .orderinfo_right {
+        width: 50%;
+        display: flex;
+        flex-direction: row;
+        justify-content: space-between;
+        align-items: center;
+        align-content: center;
+      }
+
+      .orderinfo_left {
+        margin-right: 10px;
+      }
+
+      .orderinfo_right {
+        margin-left: 10px;
+      }
+
+      text {
+        font-size: 14px;
+      }
+
+      text:nth-child(1) {
+        color: #666;
+      }
+
+      text:nth-child(2) {
+        color: #333;
+      }
+    }
+  }
+
   .title-view {
     margin: 10px;
     background-color: #f0f0f0;
-    height: 100px;
+    height: 70px;
     border-radius: 10px;
     display: flex;
     align-items: center;
@@ -14,7 +81,7 @@
     flex-direction: column;
     padding: 5px 10px;
   
-    .title-view-up, .title-view-down {
+    .title-view-up, .title-view-mid, .title-view-down {
       display: flex;
       flex-direction: row;
       justify-content: space-between;
@@ -33,4 +100,57 @@
       border-bottom: 1px solid #ddd;
     }
   }
+
+  .ordertitle {
+    color: #333;
+    font-size: 20px;
+    font-weight: bold;
+  }
+}
+
+.item-view {
+  margin: 10px;
+  border-radius: 10px;
+  display: flex;
+  align-items: center;
+  align-content: center;
+  flex-direction: column;
+  padding: 5px 10px;
+  border: 1px solid #ddd;
+
+  .item-view-up, .item-view-mid, .item-view-dwn {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    align-items: center;
+    height: 50%;
+    width: 100%;
+    align-content: center;
+    height: 25px;
+
+    text {
+      color: #333;
+      font-size: 13px;
+      /*超出隐藏*/
+      overflow: hidden;
+        /*溢出不换行*/
+      white-space: nowrap;
+      /*溢出显示用省略号*/
+      text-overflow: ellipsis;
+      text-align: center;
+    }
+
+    :first-child {
+      text-align: left;
+    }
+
+    :last-child {
+      text-align: right;
+    }
+  }
+
+  .item-view-up {
+    border-bottom: 1px solid #ddd;
+    padding-bottom: 5px;
+  }
 }

+ 75 - 6
GuangZuan/miniprogram/mHome/pages/inspection/detail/index.ts

@@ -1,4 +1,8 @@
-// mHome/pages/inspection/detail/index.ts
+import Toast from "../../../../miniprogram_npm/@vant/weapp/toast/toast"
+import { queryGZCJJCOrderDetail } from "../../../../services/api/trade/index"
+import { getExecutestatus, userid } from "../../../../services/utils"
+import { isnullstr } from "../../../../utils/util"
+
 Page({
 
   /**
@@ -6,8 +10,17 @@ Page({
    */
   data: {
     /// 列头
-    titles: [['货物编号', '形状', '重量(ct)', '参考货值(USD)'],
-              ['彩钻信息', '其他']],
+    titles: [['货物编号', '形状 | 重量(ct)| 参考货值(USD)'],
+              ['刻印服务 | 是否披露 | 服务类别 | 原证书号'],
+              ['彩钻信息 | 其他']],
+    /// 单据信息
+    order: <GuangZuan.GZCJJCOrder>{},
+    /// 数据信息
+    orders: <GuangZuan.GZCJJCOrderDetail[]>[],
+    /// 显示的值
+    values: [{ up: [''], mid: [''], dwn: [''] }],
+    /// 状态
+    status: ''
   },
 
   /**
@@ -18,12 +31,67 @@ Page({
     wx.navigateBack()
   },
 
+  /**
+   * 查询出境检测单据明细
+   */
+  queryGZCJJCOrderDetail() {
+    /// loding.....
+    Toast.loading({message: '加载中...'})
+    /// 发送查询
+    queryGZCJJCOrderDetail({
+      data: {
+        /// 模糊搜索
+        userid: userid(),
+        orderid: this.data.order.orderid
+      },
+      /// 加载成功
+      success: (res) => {
+        if (res.code != 200) {
+          /// 加载失败
+          Toast.success({ message: '加载失败,原因:'+res.msg});
+          return
+        }
+        /// 数据赋值
+        this.setData({ 
+          orders: res.data,
+          /// 显示的值
+          values: res.data.map(obj => {
+            return {up: [obj.gzno, 
+                         obj.gzcjshapetypestring+' | '+obj.weight.toString()+' | '+obj.amount.toFixed(2)], 
+                    mid: [obj.gzcjmarktype+' | '+obj.gzcjpublishtypestring+' | '+obj.gzcjservicetypestring+' | '+obj.origincertno],
+                    dwn: [obj.colorinfo.toString()+' | '+
+                          isnullstr(obj.remark)]}
+          })
+        })
+      },
+      fail: (emsg) => {
+        /// 加载失败
+        Toast.fail({ message: '加载失败...'+emsg});
+      },
+      complete: () => {
+        /// 数据赋值
+        this.setData({  isEmpty: this.data.values.length == 0 })
+        /// 停止下拉刷新
+        wx.stopPullDownRefresh()
+      }
+    })
+  },
 
   /**
    * 生命周期函数--监听页面加载
    */
-  onLoad() {
-
+  onLoad(options: any) {
+    /// 传参信息
+    const item: GuangZuan.GZCJJCOrder = JSON.parse(options.item ?? '')
+    /// 单据信息
+    if (item) {
+      this.setData({ 
+        order: item,
+        status: getExecutestatus(item.executestatus)
+      })
+    }
+    /// 获取明细数据信息
+    this.queryGZCJJCOrderDetail()
   },
 
   /**
@@ -58,7 +126,8 @@ Page({
    * 页面相关事件处理函数--监听用户下拉动作
    */
   onPullDownRefresh() {
-
+    /// 获取明细数据信息
+    this.queryGZCJJCOrderDetail()
   },
 
   /**

+ 88 - 4
GuangZuan/miniprogram/mHome/pages/inspection/detail/index.wxml

@@ -3,24 +3,108 @@
   <!-- 导航栏 -->
   <van-nav-bar custom-style="background-color: #E92020">
     <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
-    <text slot="title" style="color: white;">保税详情</text>
+    <text slot="title" style="color: white;">出境详情</text>
   </van-nav-bar>
 
+  <!-- 单据信息 -->
+  <view class="orderinfo">
+    <view class="title_item">
+      <text class="ordertitle">【单据信息】</text>
+      <text>{{order.orderid}}</text>
+      <text>{{ status }}</text>
+    </view>
+    <view class="orderinfo_item">
+      <text>送检账户</text>
+      <text>{{order.gzcjaccount}}</text>
+    </view>
+    <view class="orderinfo_item">
+      <text>公司名称(中文)</text>
+      <text>{{order.companynamecn}}</text>
+    </view>
+    <view class="orderinfo_item">
+      <text>公司名称(英文)</text>
+      <text>{{order.companynameen}}</text>
+    </view>
+    <view class="orderinfo_item">
+      <text>地址(中文)</text>
+      <text>{{order.addresscn}}</text>
+    </view>
+    <view class="orderinfo_item">
+      <text>地址(英文)</text>
+      <text>{{order.addressen}}</text>
+    </view>
+    <view class="orderinfo_item">
+      <view class="orderinfo_left">
+        <text>联系人姓名</text>
+        <text>{{order.contactname}}</text>
+      </view>
+      <view class="orderinfo_right">
+        <text>联系人职位</text>
+        <text>{{order.contactposition}}</text>
+      </view>
+    </view>
+    <view class="orderinfo_item">
+      <view class="orderinfo_left">
+        <text>联系人电话</text>
+        <text>{{order.contactphoneno}}</text>
+      </view>
+      <view class="orderinfo_right">
+        <text>邮箱</text>
+        <text>{{order.email}}</text>
+      </view>
+    </view>
+    <view class="orderinfo_item">
+      <view class="orderinfo_left">
+        <text>货物品类</text>
+        <text>{{order.gzcjcategorytypedisplay}}</text>
+      </view>
+      <view class="orderinfo_right">
+        <text>成品钻石加工国</text>
+        <text>{{order.processingcountry}}</text>
+      </view>
+    </view>
+    <view class="orderinfo_item">
+      <text>天然钻石毛坯原产地</text>
+      <text>{{order.zsorigin}}</text>
+    </view>
+    <view class="orderinfo_item">
+      <text>完成检测后收货方式</text>
+      <text>{{order.gzcjdeliverytypedisplay}}</text>
+    </view>
+  </view>
+
+  <text class="ordertitle">【钻石信息】</text>
+
   <!-- 列头 --> 
   <view class="title-view">
     <view class="title-view-up">
       <text wx:for="{{titles[0]}}" wx:for-item="itm" wx:for-index="idx" wx:key="idx">{{itm}}</text>
     </view>
-    <view class="title-view-down">
+    <view class="title-view-mid" wx:if="{{order.gzcjaccounttype != 1}}">
       <text wx:for="{{titles[1]}}" wx:for-item="itm" wx:for-index="idx" wx:key="idx">{{itm}}</text>
     </view>
+    <view class="title-view-down">
+      <text wx:for="{{titles[2]}}" wx:for-item="itm" wx:for-index="idx" wx:key="idx">{{itm}}</text>
+    </view>
   </view>
 </view>
 
 <!-- 内容 --> 
 <scroll-view class="container">
-
-  
+<!-- 数据 --> 
+<van-swipe-cell wx:for="{{values}}" wx:for-item="itm" wx:for-index="idx" wx:key="orderid" right-width="{{ width }}" id="{{idx}}">
+    <view class="item-view">
+      <view class="item-view-up">
+        <text wx:for="{{itm.up}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
+      </view>
+      <view class="item-view-mid" wx:if="{{order.gzcjaccounttype != 1}}">
+        <text wx:for="{{itm.mid}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
+      </view>
+      <view class="item-view-dwn">
+        <text wx:for="{{itm.dwn}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
+      </view>
+    </view>
+  </van-swipe-cell>
 </scroll-view>
 
  <!--  无数据  -->

+ 28 - 0
GuangZuan/miniprogram/mHome/pages/inspection/list/index.less

@@ -84,4 +84,32 @@
       width: 25%;
     }
   }
+}
+
+.van-swipe-cell__right {
+  height: inherit;
+  color: white;
+  display: flex;
+
+  .item {
+    width: 50px;
+    text-align: center;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    font-size: 12px;
+  }
+}
+
+.buttom_view {
+  position: fixed;
+  bottom: 10px;
+  z-index: 999;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  margin-top: 20px;
+  align-items: center;
+  align-content: center;
+  width: 100%;
 }

+ 92 - 7
GuangZuan/miniprogram/mHome/pages/inspection/list/index.ts

@@ -1,6 +1,8 @@
+import { FunCode } from "../../../../constants/enum/funcode"
 import Toast from "../../../../miniprogram_npm/@vant/weapp/toast/toast"
+import { sendMsgToMQ } from "../../../../services/api/common/index"
 import { queryGZCJJCOrder } from "../../../../services/api/trade/index"
-import { userid, getExecutestatus } from "../../../../services/utils"
+import { userid, getExecutestatus, isEncrypted, protoHeader, loginid, clientType, timetample, loginCode } from "../../../../services/utils"
 import { isnullstr } from "../../../../utils/util"
 
 // mHome/pages/inspection/list/index.ts
@@ -16,13 +18,15 @@ Page({
     active: 0,
     /// 列头
     titles: [['货物品类', '送检账户', '单据编号'],
-             ['总重量(粒) 总重量(ct) 总参考值(USD)', '状态']],
+             ['总重量(粒)| 总重量(ct)| 总参考值(USD)', '状态']],
     /// 是否空数据
     isEmpty: true,
     /// 数据信息
     orders: <GuangZuan.GZCJJCOrder[]>[],
     /// 显示的值
-    values: [{ up: [''], dwn: [''] }]
+    values: [{ up: [''], dwn: [''] }],
+    /// 左滑宽度
+    width: 100,
   },
 
   /**
@@ -35,6 +39,40 @@ Page({
     this.queryGZCJJCOrder()
   },
 
+  onButtonPressed(e: any) {
+    /// 获取对应的id
+    const ids = (<string> e.target.id).split(' ')
+    let id = (<string> e.target.id).split(' ')[0]
+    const index = <number> <unknown>ids[1]
+    /// 单号
+    const orderid = this.data.orders[index].orderid
+
+    switch (id) {
+      case 'detail':     /// 详情
+        wx.navigateTo({
+          url: "/mHome/pages/inspection/detail/index?item="+JSON.stringify(this.data.orders[index])
+        })
+        break;
+      case 'cancel':            /// 撤销
+        this.doCJJCOperator(1, orderid)
+        break;
+      case 'confirmsend':       /// 确认发货
+        this.doCJJCOperator(2, orderid)
+        break;
+      case 'confirmresult':     /// 确认检测结果
+        this.doCJJCOperator(3, orderid)
+        break;
+      case 'confirmprepayment':  /// 确认预付款
+        this.doCJJCOperator(4, orderid)
+        break;
+      case 'confirmpayment':     /// 确认付款
+        this.doCJJCOperator(5, orderid)
+        break;
+      default:
+        break;
+    }
+  },
+
    /**
    * 返回上层视图
    */
@@ -53,7 +91,8 @@ Page({
     queryGZCJJCOrder({
       data: {
         /// 模糊搜索
-        userid: userid()
+        userid: userid(),
+        executestatus: this.data.active+1
       },
       /// 加载成功
       success: (res) => {
@@ -70,9 +109,9 @@ Page({
             return {up: [obj.gzcjcategorytypedisplay, 
                          obj.gzcjaccount, 
                         isnullstr(obj.orderno)], 
-                    dwn: [obj.totalnumber.toString()+'粒'+' '+
-                          obj.totalgrossweight.toString()+'ct'+' | '+
-                          obj.totalweightgm.toString()+'USD',
+                    dwn: [obj.totalnumber.toString()+'()'+' | '+
+                          obj.totalgrossweight.toString()+'(ct)'+' | '+
+                          obj.totalweightgm.toString()+'(USD)',
                           getExecutestatus(obj.executestatus)]}
           })
         })
@@ -91,6 +130,52 @@ Page({
   },
 
   /**
+   * 出境检测操作请求
+   */
+  doCJJCOperator(operator: number, orderid: number) {
+    /// loding.....
+    Toast.loading({ message: '操作请求中.....'})
+
+    /// 参数信息
+    const params = {
+      UserID: userid(),
+      OperateID: loginid(),
+      ClientType: clientType,
+      ClientSerialNo: timetample().toString,
+      OperateAccount: loginCode(),
+      OrderID: orderid,
+      OperateType: operator,
+      Header: protoHeader(FunCode.CJJCMemberOperateReq)
+    }
+    /// 发送请求
+    sendMsgToMQ({
+      data: {
+        data: JSON.stringify(params),
+        funCodeReq: FunCode.CJJCMemberOperateReq,
+        funCodeRsp: FunCode.CJJCMemberOperateRsp,
+        isEncrypted: isEncrypted()
+      },
+      success: (res) => {
+        if (res.code != 0) {
+          Toast.fail({message: '操作申请失败, 原因:'+res.msg})
+          return
+        }
+        /// 操作成功
+        Toast.success('操作成功')
+        /// 重新获取数据
+        this.queryGZCJJCOrder()
+      },
+      fail: (emsg) => {
+        /// 操作失败
+        Toast.fail('操作失败,原因:'+emsg)
+      }, complete: () => {
+        /// hideLoading
+        Toast.clear()
+      }
+    })
+  },
+
+  /**
    * 生命周期函数--监听页面加载
    */
   onLoad() {

+ 10 - 1
GuangZuan/miniprogram/mHome/pages/inspection/list/index.wxml

@@ -27,7 +27,7 @@
 <!-- 内容滚动视图 --> 
 <scroll-view class="content-view" style="padding-bottom: {{safeBottom+48}}px;">
   <!-- 数据 --> 
-  <van-swipe-cell wx:for="{{values}}" wx:for-item="itm" wx:for-index="idx" wx:key="applyid">
+  <van-swipe-cell wx:for="{{values}}" wx:for-item="itm" wx:for-index="idx" wx:key="orderid" right-width="{{ width }}" id="{{idx}}">
     <view class="item-view">
       <view class="item-view-up">
         <text wx:for="{{itm.up}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
@@ -36,6 +36,15 @@
         <text wx:for="{{itm.dwn}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
       </view>
     </view>
+    <!-- 取消收藏 --> 
+    <view slot="right" class="van-swipe-cell__right">
+      <view class="item detail" id="detail {{ idx }}" style="background-color: yellowgreen; color: white;" bindtap="onButtonPressed">详情</view>
+      <view class="item cancel" id="cancel {{ idx }}" style="background-color: rebeccapurple; color: white;" bindtap="onButtonPressed" wx:if="{{ (orders[idx].gzcjstatus === 1) || (orders[idx].gzcjstatus === 22) }}">撤销</view>
+      <view class="item confirmsend" id="confirmsend {{ idx }}" style="background-color: goldenrod; color: white;" bindtap="onButtonPressed" wx:if="{{ orders[idx].gzcjstatus === 2 }}">确认发货</view>
+      <view class="item confirmresult" id="confirmresult {{ idx }}" style="background-color: forestgreen; color: white;" bindtap="onButtonPressed" wx:if="{{ orders[idx].gzcjstatus === 8 }}">确认检测结果</view>
+      <view class="item confirmprepayment" id="confirmprepayment {{ idx }}" style="background-color: darkgreen; color: white;" bindtap="onButtonPressed" wx:if="{{ orders[idx].gzcjstatus === 10 }}">确认预付款</view>
+      <view class="item confirmpayment" id="confirmpayment {{ idx }}" style="background-color: maroon; color: white;" bindtap="onButtonPressed" wx:if="{{ orders[idx].gzcjstatus === 13 }}">确认付款</view>
+    </view>
   </van-swipe-cell>
 </scroll-view>
 

+ 0 - 0
GuangZuan/miniprogram/mHome/pages/jewelry/index.json → GuangZuan/miniprogram/mHome/pages/jewelry/list/index.json


+ 0 - 0
GuangZuan/miniprogram/mHome/pages/jewelry/index.less → GuangZuan/miniprogram/mHome/pages/jewelry/list/index.less


+ 19 - 5
GuangZuan/miniprogram/mHome/pages/jewelry/index.ts → GuangZuan/miniprogram/mHome/pages/jewelry/list/index.ts

@@ -1,5 +1,5 @@
-import Toast from "../../../miniprogram_npm/@vant/weapp/toast/toast";
-import { querySellOrder } from "../../../services/api/orders/index";
+import Toast from "../../../../miniprogram_npm/@vant/weapp/toast/toast";
+import { querySellOrder } from "../../../../services/api/orders/index";
 
 // mHome/pages/jewelry/index.ts
 Page({
@@ -29,6 +29,17 @@ Page({
     /// 返回上层视图
     wx.navigateBack()
   },
+
+  /**
+   * 点击项选中
+   */
+  onItemClick(e: any) {
+    console.log(e)
+    wx.navigateTo({
+      url: "/mHome/pages/goodsdetail/index?goodsno="+this.data.sellOrders[e.currentTarget.dataset.num].goodsno
+    })
+  },
+
   /**
    * 搜索
    */
@@ -63,15 +74,18 @@ Page({
         }
         /// 数据赋值
         this.setData({ 
-          sellOrders: this.data.page == 1 ? res.data : this.data.sellOrders.concat(res.data),
-          isEmpty: this.data.page == 1 ? res.data.length == 0 : this.data.sellOrders.length == 0
+          sellOrders: this.data.page == 1 ? res.data : this.data.sellOrders.concat(res.data)
         })
       },
       fail: (emsg) => {
         /// 加载失败
         Toast.fail({ message: '加载失败,原因:'+emsg});
       },
-      complete: () => {}
+      complete: () => {
+        this.setData({
+          isEmpty: this.data.sellOrders.length === 0
+        })
+      }
     })
   },
 

+ 3 - 3
GuangZuan/miniprogram/mHome/pages/jewelry/index.wxml → GuangZuan/miniprogram/mHome/pages/jewelry/list/index.wxml

@@ -7,17 +7,17 @@
   </van-nav-bar>
 
   <!-- 搜索视图 -->
-  <van-search model:value="{{result}}" use-action-slot background="#4fc08d" shape="round" placeholder="搜索首饰" bind:change="onChange">
+  <van-search model:value="{{result}}" use-action-slot background="#2270D9" shape="round" placeholder="搜索首饰" bind:change="onChange">
     <view slot="action" bind:tap="onSearch" style="color: white;">搜索</view>
   </van-search> 
 </view>
 
 <!-- 商品卡片 -->
 <view class="goodscard" style="padding-bottom: {{safeBottom}}px;">
-  <view class="goodscard-item" wx:for="{{sellOrders}}" wx:for-item="itm" wx:for-index="idx" wx:key="idx">
+  <view class="goodscard-item" wx:for="{{sellOrders}}" wx:for-item="itm" wx:for-index="idx" wx:key="idx" data-num="{{ idx }}" bindtap="onItemClick">
     <image class="goods-icon" mode="widthFix" src="https://img.yzcdn.cn/vant/cat.jpeg"></image>
     <text class="goods-title">{{itm.zsstyletypedisplay}}{{itm.totalqty}}ct{{itm.stonedesc}}</text>
-    <text class="goods-price">¥{{itm.price}}</text>
+    <text class="goods-price">¥{{ itm.price }}</text>
   </view>
 </view>
 

+ 1 - 1
GuangZuan/miniprogram/mMine/pages/address/operate/index.ts

@@ -270,7 +270,7 @@ Page({
   /**
    * 生命周期函数--监听页面加载
    */
-  onLoad(options) {
+  onLoad(options: any) {
     /// 传参信息
     const d: GuangZuan.UserReceiveInfo = JSON.parse(options.id ?? '')
     this.setData({

+ 0 - 1
GuangZuan/miniprogram/mMine/pages/inoutgold/index.ts

@@ -77,7 +77,6 @@ Page({
           Toast({message: '图片上传失败,原因:'+res.errMsg})
           return
         }
-        console.log(res)
         // 上传完成需要更新 fileList
         const { fileList = [] } = this.data;
         fileList.push({ ...file, url: res.data});

+ 15 - 0
GuangZuan/miniprogram/mMine/pages/myinventorys/list/index.less

@@ -98,3 +98,18 @@
     }
   }
 }
+
+.van-swipe-cell__right {
+  height: inherit;
+  color: white;
+  display: flex;
+
+  .item {
+    width: 50px;
+    text-align: center;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    font-size: 12px;
+  }
+}

+ 19 - 1
GuangZuan/miniprogram/mMine/pages/myinventorys/list/index.ts

@@ -1,6 +1,6 @@
 import { queryMyWRPosition } from "../../../../services/api/orders/index";
 import { userid } from "../../../../services/utils";
-import Toast from '@vant/weapp/toast/toast';
+import Toast from "../../../../miniprogram_npm/@vant/weapp/toast/toast";
 import { isnullstr } from "../../../../utils/util";
 
 Page({
@@ -36,6 +36,24 @@ Page({
     wx.navigateBack()
   },
 
+  onButtonPressed(e: any) {
+    /// 获取对应的id
+    const ids = (<string> e.target.id).split(' ')
+    let id = (<string> e.target.id).split(' ')[0]
+    const index = <number> <unknown>ids[1]
+
+    switch (id) {
+      case 'detail':     /// 详情
+        wx.navigateTo({
+          url: "/mHome/pages/goodsdetail/index?goodsno="+this.data.datas[index].goodsno
+        })
+        break;
+    
+      default:
+        break;
+    }
+  },
+
   /**
    * tab触发事件
    */

+ 4 - 0
GuangZuan/miniprogram/mMine/pages/myinventorys/list/index.wxml

@@ -35,6 +35,10 @@
         <text wx:for="{{itm.dwn}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
       </view>
     </view>
+    <!-- 取消收藏 --> 
+    <view slot="right" class="van-swipe-cell__right">
+      <view class="item detail" id="detail {{idx}}" style="background-color: yellowgreen; color: white;" bindtap="onButtonPressed">详情</view>
+    </view>
   </van-swipe-cell>
 </scroll-view>
 

+ 3 - 0
GuangZuan/miniprogram/mMine/pages/myorders/dlistingsdetail/index.json

@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}

+ 1 - 0
GuangZuan/miniprogram/mMine/pages/myorders/dlistingsdetail/index.less

@@ -0,0 +1 @@
+/* mMine/pages/myorders/dlistingsdetail/index.wxss */

+ 66 - 0
GuangZuan/miniprogram/mMine/pages/myorders/dlistingsdetail/index.ts

@@ -0,0 +1,66 @@
+// mMine/pages/myorders/dlistingsdetail/index.ts
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage() {
+
+  }
+})

+ 2 - 0
GuangZuan/miniprogram/mMine/pages/myorders/dlistingsdetail/index.wxml

@@ -0,0 +1,2 @@
+<!--mMine/pages/myorders/dlistingsdetail/index.wxml-->
+<text>mMine/pages/myorders/dlistingsdetail/index.wxml</text>

+ 1 - 1
GuangZuan/miniprogram/mMine/pages/myorders/his/index.wxml

@@ -21,7 +21,7 @@
     <view class="title-view-up">
       <text wx:for="{{titles[0]}}" wx:for-item="itm" wx:for-index="idx" wx:key="idx">{{itm}}</text>
     </view>
-    <view class="title-view-down">
+    <view class="title-view-dwn">
       <text wx:for="{{titles[1]}}" wx:for-item="itm" wx:for-index="idx" wx:key="idx">{{itm}}</text>
     </view>
   </view>

+ 42 - 1
GuangZuan/miniprogram/mMine/pages/myorders/list/index.ts

@@ -119,12 +119,53 @@ Page({
    * 按钮点击响应事件
    */
   onButtonPressed(e: any) {
-    switch (e.target.id) {
+    
+    /// 获取对应的id
+    const ids = (<string> e.target.id).split(' ')
+    let id = (<string> e.target.id).split(' ')[0]
+    const index = <number> <unknown>ids[1]
+    switch (id) {
       case 'his':  /// 历史订单
         wx.navigateTo({
           url: '/mMine/pages/myorders/his/index'
         })
         break;
+      case 'detail':  /// 详情
+        switch (this.data.active) {
+          case 4:  /// 询价消息详情
+            wx.navigateTo({
+              url: '/mMine/pages/myorders/mydelistingapplydetail/index?item='+JSON.stringify(this.data.myDelistingApplys[index])
+            })
+            break;
+          case 3:  /// 我的询价详情
+            wx.navigateTo({
+              url: '/mMine/pages/myorders/mydelistingapplydetail/index?item='+JSON.stringify(this.data.myDelistingApplys[index])
+            })
+            break;
+          case 2:  /// 我的摘牌
+            wx.navigateTo({
+              url: '/mHome/pages/goodsdetail/index?item='+JSON.stringify(this.data.buyorders[index].wrtradeorderid)
+            })
+            break;
+          case 1:  /// 求购挂牌
+            wx.navigateTo({
+              url: '/mMine/pages/myorders/dlistingsdetail/index?item='+JSON.stringify(this.data.dlistings[index])
+            })
+            break;
+          case 0:  /// 出售挂牌
+            wx.navigateTo({
+              url: '/mHome/pages/goodsdetail/index?goodsno='+this.data.sellorders[index].goodsno
+            })
+            break;
+          default:
+            
+            break;
+        }
+        break;
+      case 'cancel':  /// 撤销
+        break;
+      case 'shelves':  /// 下架
+        break;
       default:
         break;
     }

+ 2 - 2
GuangZuan/miniprogram/mMine/pages/myorders/list/index.wxml

@@ -51,8 +51,8 @@
     </view>
     <view slot="right" class="van-swipe-cell__right">
       <view class="item detail" id="detail {{idx}}" style="background-color: yellowgreen; color: white;" bindtap="onButtonPressed">详情</view>
-      <view wx:if="{{active == 0}}" class="item detail" id="detail {{idx}}" style="background-color: rebeccapurple; color: white;" bindtap="onButtonPressed">下架</view>
-      <view wx:if="{{active == 1 || active == 3}}" class="item detail" id="detail {{idx}}" style="background-color: forestgreen; color: white;" bindtap="onButtonPressed">撤销</view>
+      <view wx:if="{{active === 0}}" class="item shelves" id="shelves {{idx}}" style="background-color: rebeccapurple; color: white;" bindtap="onButtonPressed">下架</view>
+      <view wx:if="{{active === 1 || active === 3}}" class="item cancel" id="cancel {{idx}}" style="background-color: forestgreen; color: white;" bindtap="onButtonPressed">撤销</view>
     </view>
   </van-swipe-cell>
 </scroll-view>

+ 3 - 0
GuangZuan/miniprogram/mMine/pages/myorders/mydelistingapplydetail/index.json

@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}

+ 192 - 0
GuangZuan/miniprogram/mMine/pages/myorders/mydelistingapplydetail/index.less

@@ -0,0 +1,192 @@
+/* mMine/pages/myorders/MyDelistingApplyDetail/index.wxss */
+
+.container {
+  width: 100%;
+  display: flex;
+  flex-direction: column;
+  align-content: center;
+  align-items: center;
+
+  .topView {
+    position: sticky;
+    top: 0;
+    z-index: 999;
+    width: 100%;
+  }
+
+  .attribute-info {
+    border-top: 10px solid #f0f0f0;
+  }
+
+  .attribute-info, .seller-info, .buyinfo-info {
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    align-content: center;
+    align-items: center;
+    margin-bottom: 10px;
+
+    .title {
+      padding: 10px 5px;
+      width: 100%;
+      color: #333;
+      font-size: 20px;
+    }
+
+    .attribute-info__item, .content__item{
+      width: 100%;
+      padding-left: 15px;
+      height: 44px;
+      border-bottom: 1px solid #f0f0f0;
+      display: flex;
+      flex-direction: row;
+      justify-content: start;
+      align-items: center;
+      align-content: center;
+
+      .title {
+        font-size: 14px;
+        width: 80px;
+        color: #666;
+      }
+
+      .value {
+        font-size: 14px;
+        color: #333;
+      }
+    }
+
+    .content {
+      width: 95%;
+      background-color: #f0f0f0;
+      border-radius: 10px;
+      padding: 10px 0px;
+      
+      &__item {
+        height: 30px;
+        padding-left: 5px;
+      }
+
+      .title {
+        font-size: 14px;
+        width: 50px;
+        color: #666;
+      }
+
+      .value {
+        font-size: 14px;
+        color: #333;
+      }
+    }
+  }
+
+  .buyinfo-info {
+    .title-view {
+      display: flex;
+      flex-direction: row;
+      width: 100%;
+      align-items: center;
+      align-content: center;
+
+      .title {
+        width: 120px;
+      }
+
+      .wrstandname {
+        font-size: 14px;
+        color: #333;
+      }
+    }
+
+    .buyinfo-detail-info {
+      width: 90%;
+      background-color: #f0f0f0;
+      padding: 10px;
+      display: flex;
+      flex-direction: column;
+      align-content: center;
+      border-radius: 10px;
+  
+      .item {
+        height: 25px;
+        width: 100%;
+        display: flex;
+        flex-direction: row;
+        justify-content: space-between;
+  
+        text {
+          color: #333;
+          font-size: 14px;
+          text-align: left;
+        }
+  
+        text:nth-child(2) {
+          width: 45%;
+        }
+      }
+    }
+  }
+
+  .price-info {
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    align-content: center;
+    align-items: center;
+    padding: 10px 0px;
+
+    border-bottom: 5px solid #f0f0f0;
+
+    .content__item {
+      display: flex;
+      flex-direction: row;
+      justify-content: start;
+      align-items: center;
+      align-content: center;
+      width: 95%;
+      height: 30px;
+
+      text {
+        color: #333;
+        padding: 5px 0px;
+      }
+
+      &__price {
+        font-size: 18px;
+      }
+      
+      &__rate {
+        font-size: 14px;
+        margin-left: 15px;
+      }
+
+      &__name {
+        font-size: 20px;
+        padding: 5px 0px;
+      }
+
+      &__weight, &__gprice, &__market-price {
+        font-size: 14px;
+      }
+
+      &__weight, &__gprice {
+        width: 50%;
+      }
+    }
+  }
+
+  .button-view {
+    border-radius: 10px;
+    width: 95%;
+    padding-top: 15px;
+    display: flex;
+    flex-direction: row;
+    align-content: center;
+    align-items: center;
+    justify-content: space-between;
+
+    van-button {
+      width: 46%;
+    }
+  }
+}

+ 74 - 0
GuangZuan/miniprogram/mMine/pages/myorders/mydelistingapplydetail/index.ts

@@ -0,0 +1,74 @@
+// mMine/pages/myorders/MyDelistingApplyDetail/index.ts
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+
+  },
+
+   /**
+   * 返回上层视图
+   */
+  backToParent() {
+    /// 返回上层视图
+    wx.navigateBack()
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage() {
+
+  }
+})

+ 113 - 0
GuangZuan/miniprogram/mMine/pages/myorders/mydelistingapplydetail/index.wxml

@@ -0,0 +1,113 @@
+<!--mMine/pages/myorders/MyDelistingApplyDetail/index.wxml-->
+<view class="container">
+  <view class="topView">
+    <!-- 导航栏 -->
+    <van-nav-bar custom-style="background-color: #E92020">
+      <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
+      <text slot="title" style="color: white;">询价消息</text>
+    </van-nav-bar>
+  </view>
+
+  <view class="buyinfo-info">
+    <view class="title-view">
+      <text class="title">【我的求购】</text>
+      <text class="wrstandname">单颗裸钻-人民币:{{}}</text>
+    </view>
+    <!-- 履约信息 --> 
+    <view class="buyinfo-detail-info">
+      <view class="item">
+        <text>形状:圆明亮形, 心形, 三角形</text>
+        <text>尺寸:1.20-1.33</text>
+      </view>
+      <view class="item">
+        <text>颜色:F-K</text>
+        <text>净度:VVS-SI2</text>
+      </view>
+      <view class="item">
+        <text>切工:VG-F</text>
+        <text>对称:EX-GF</text>
+      </view>
+      <view class="item">
+        <text>抛光:EX-G</text>
+        <text>荧光:无-极强</text>
+      </view>
+      <view class="item">
+        <text>履约:</text>
+      </view>
+    </view>
+  </view>
+
+  <!-- 卖家信息 -->
+  <view class="seller-info">
+    <text class="title">【卖家信息】</text>
+    <view class="content">
+      <view class="content__item">
+        <text class="title">名称:</text>
+        <text class="value">xxxx钻石贸易商</text>
+      </view>
+      <view class="content__item">
+        <text class="title">电话:</text>
+        <text class="value">13888888888</text>
+      </view>
+      <view class="content__item">
+        <text class="title">仓库:</text>
+        <text class="value">中国-广东省-广州市-南沙XXXxxxxX仓库</text>
+      </view>
+      <view class="content__item">
+        <text class="title">履约:</text>
+        <text class="value">中国-广东省-广州市-南沙XXXxxxxX仓库</text>
+      </view>
+    </view>
+  </view>
+
+  <!-- 钻石属性 -->
+  <view class="attribute-info">
+    <text class="title">【钻石属性】</text>
+    <view class="attribute-info__item">
+      <text class="title">形状:</text>
+      <text class="value">圆明亮形(Round)</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">形状:</text>
+      <text class="value">圆明亮形(Round)</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">颜色:</text>
+      <text class="value">E</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">净度:</text>
+      <text class="value">FL</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">切工:</text>
+      <text class="value">EX</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">抛光:</text>
+      <text class="value">EX</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">荧光:</text>
+      <text class="value">微弱(faint)</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">尺寸:</text>
+      <text class="value">1.22 * 1.35 * 1.36</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">证书类型:</text>
+      <text class="value">GIA</text>
+    </view>
+    <view class="attribute-info__item">
+      <text class="title">证书编号:</text>
+      <text class="value">223848856</text>
+    </view>
+  </view>
+
+   <!-- 按钮 -->
+   <view class="button-view">
+    <van-button custom-class="excute" id="excute" round color="linear-gradient(to right, #4bb0ff, #F7A657)" block bind:click="onButtonPressed">拒绝</van-button>
+    <van-button custom-class="excute" id="excute" round color="linear-gradient(to right, #4bb0ff, #F7A657)" block bind:click="onButtonPressed">立即购买</van-button>
+  </view>
+</view>

+ 3 - 1
GuangZuan/miniprogram/mMine/pages/myperformance/breach/index.json

@@ -1,5 +1,7 @@
 {
-  "usingComponents": {},
+  "usingComponents": {
+    "van-uploader": "@vant/weapp/uploader/index"
+  },
   "navigationStyle": "custom",
   "navigationBarTitleText": "违约申请"
 }

+ 85 - 4
GuangZuan/miniprogram/mMine/pages/myperformance/breach/index.less

@@ -1,5 +1,86 @@
-.topView {
-  position: sticky;
-  top: 0;
-  z-index: 999;
+.container {
+  width: 100%;
+  display: flex;
+  flex-direction: column;
+  align-content: center;
+  align-items: center;
+
+  .topView {
+    position: sticky;
+    top: 0;
+    z-index: 999;
+    width: 100%;
+  }
+
+  .remark-info, .credentials-info, .step-info {
+    display: flex;
+    flex-direction: row;
+    justify-content: start;
+    align-content: center;
+    align-items: center;
+    margin-bottom: 20px;
+    width: 95%;
+
+    text:nth-child(1) {
+      width: 80px;
+      color: #333;
+      font-size: 14px;
+    }
+
+    text:nth-child(2) {
+      width: 100%;
+      color: #333;
+      font-size: 14px;
+      margin-left: 15px;
+    }
+
+    textarea {
+      border: 1px solid #f0f0f0;
+      border-radius: 10px;
+      color: #333;
+      padding: 10px;
+      margin-right: 5px;
+      font-size: 14px;
+    }
+
+    .credentials-top-view {
+      display: flex;
+      flex-direction: column;
+      width: 80%;
+      height: 160px;
+      border-radius: 10px;
+
+      .value {
+        width: 100%;
+        height: 30px;
+        color: #888;
+      }
+
+      .upload {
+        padding-top: 10px 0px 0px 0px;
+        display: flex;
+        justify-content: left;
+        align-items: center;
+      }
+    }
+  }
+
+  .step-info {
+    margin: 20px 0px;
+  }
+
+  .button-view {
+    border-radius: 10px;
+    width: 95%;
+    padding-top: 15px;
+    display: flex;
+    flex-direction: row;
+    align-content: center;
+    align-items: center;
+    justify-content: space-between;
+  }
+
+  van-button {
+    width: 100%;
+  }
 }

+ 110 - 2
GuangZuan/miniprogram/mMine/pages/myperformance/breach/index.ts

@@ -1,10 +1,113 @@
+import { sendMsgToMQ } from "../../../../services/api/common/index"
+import Toast from "../../../../miniprogram_npm/@vant/weapp/toast/toast";
+import { FunCode } from "../../../../constants/enum/funcode"
+import { accountid, isEncrypted, protoHeader, userid } from "../../../../services/utils";
+import services from "../../../../services/index"
+
 Page({
 
   /**
    * 页面的初始数据
    */
   data: {
+    /// 履约单据信息
+    order: <GuangZuan.MyPerformanc>({}),
+    /// 备注信息
+    remark: '',
+    /// 文件上传列表
+    fileList: [],
+    /// 上传的文件路径
+    filePath: ''
+  },
+
+  /// 照片上传
+  afterRead(e: any) {
+    const { file } = e.detail;
+    // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
+    wx.uploadFile({
+      url: services.config.uploadUrl,
+      filePath: file.url,
+      name: 'file',
+      formData: { user: 'test' },
+      success: (res) => {
+        if (res.statusCode != 200) {
+          Toast({message: '图片上传失败,原因:'+res.errMsg})
+          return
+        }
+        // 上传完成需要更新 fileList
+        const { fileList = [] } = this.data;
+        fileList.push({ ...file, url: res.data});
+        this.setData({ fileList });
+        /// 设置文件路径
+        this.setData({ filePath: JSON.parse(res.data)[0].filePath })
+      },
+    });
+  },
 
+  /// 删除图片
+  deleteImage(e: any) {
+    const {index} = e.detail.index
+    // 上传完成需要更新 fileList
+    const { fileList = [] } = this.data;
+    fileList.splice(index, 1)
+    this.setData({ fileList });
+  },
+
+  /**
+   * 违约申请
+   */
+  doBreach() {
+    /// 校验失败
+    if (!this.check()) { return  }
+    /// loding.....
+    Toast.loading({ message: '违约申请请求中.....'})
+    /// 参数信息
+    const params = {
+      PerformancePlanID: this.data.order.performanceplanid,
+      BreachType: this.data.order.buyaccountid === accountid() ? 2 : 1,
+      ApplyRemark: this.data.remark,
+      Applicant: userid(),
+      Header: protoHeader(FunCode.PerformanceContractedApplyReq)
+    }
+    /// 发送请求
+    sendMsgToMQ({
+      data: {
+        data: JSON.stringify(params),
+        funCodeReq: FunCode.PerformanceContractedApplyReq,
+        funCodeRsp: FunCode.PerformanceContractedApplyRsp,
+        isEncrypted: isEncrypted()
+      },
+      success: (res) => {
+        if (res.code != 0) {
+          Toast.fail({message: '操作申请失败, 原因:'+res.msg})
+          return
+        }
+        /// 操作成功
+        Toast.success('操作成功')
+        /// 返回上层视图
+        wx.navigateBack()
+      },
+      fail: (emsg) => {
+        /// 操作失败
+        Toast.fail('操作失败,原因:'+emsg)
+      }, complete: () => {
+        /// hideLoading
+        Toast.clear()
+      }
+    })
+  },
+
+  check(): boolean {
+    if (this.data.remark === '') {
+      Toast.fail({message: '请输入备注!'})
+      return false
+    }
+
+    if (this.data.filePath === '') {
+      Toast.fail({message: '请上传附件!'})
+      return false
+    }
+    return true
   },
 
   /**
@@ -18,8 +121,13 @@ Page({
   /**
    * 生命周期函数--监听页面加载
    */
-  onLoad() {
-
+  onLoad(options: any) {
+    const myPerformanc: GuangZuan.MyPerformanc = JSON.parse(options.id ?? '')
+    if (myPerformanc) {
+      this.setData({
+        order: myPerformanc
+      })
+    }
   },
 
   /**

+ 36 - 6
GuangZuan/miniprogram/mMine/pages/myperformance/breach/index.wxml

@@ -1,7 +1,37 @@
-<view class="topView">
-  <!-- 导航栏 -->
-  <van-nav-bar custom-style="background-color: #E92020">
-    <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
-    <text slot="title" style="color: white;">违约申请</text>
-  </van-nav-bar>
+<view class="container">
+  <view class="topView">
+    <!-- 导航栏 -->
+    <van-nav-bar custom-style="background-color: #E92020">
+      <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
+      <text slot="title" style="color: white;">违约申请</text>
+    </van-nav-bar>
+  </view>
+
+  <view class="step-info">
+    <text>当前步骤: </text>
+    <text>{{ order.deliverygoodsname}}  {{order.curstepname}}</text>
+  </view>
+
+  <view class="remark-info">
+    <text>*备注:</text>
+    <textarea model:value="{{ remark }}" class="text-area" placeholder="请输入备注信息"></textarea>
+  </view>
+
+  <!-- 凭证 -->
+  <view class="credentials-info">
+      <text>*附件</text>
+      <view class="credentials-top-view">
+        <text class="value">请上传相关截图</text>
+        <!-- 凭证图片 -->
+        <view class="upload"><van-uploader max-count="1" deletable="{{true}}" file-list="{{ fileList }}" bind:after-read="afterRead" bind:delete="deleteImage"></van-uploader></view> 
+      </view>
+    </view>
+
+  <!-- 按钮 -->
+  <view class="button-view">
+    <van-button custom-class="excute" id="excute" round color="linear-gradient(to right, #4bb0ff, #F7A657)" block bind:click="doBreach">申请违约</van-button>
+  </view>
 </view>
+
+<!-- toast --> 
+<van-toast id="van-toast" />

+ 172 - 4
GuangZuan/miniprogram/mMine/pages/myperformance/detail/index.less

@@ -1,5 +1,173 @@
-.topView {
-  position: sticky;
-  top: 0;
-  z-index: 999;
+.container {
+  width: 100%;
+  display: flex;
+  flex-direction: column;
+  align-content: center;
+  align-items: center;
+
+  .topView {
+    position: sticky;
+    top: 0;
+    z-index: 999;
+    width: 100%;
+  }
+
+  .goods-info, .perform-info, .perexcute-info {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+    align-items: center;
+    align-content: center;
+    margin: 10px 5px;
+    width: 100%;
+
+    text:nth-child(1) {
+      font-size: 20px;
+      color: #333;
+      font-weight: bold;
+    }
+
+    text:nth-child(2) {
+      color: #666;
+      font-size: 14px;
+    }
+  }
+
+  .title-view, .item-view {
+    margin: 0px 10px;
+    background-color: #f0f0f0;
+    border-radius: 10px;
+    display: flex;
+    align-items: center;
+    align-content: center;
+    flex-direction: column;
+    padding: 10px 10px;
+    width: 90%;
+  
+    .title-view-up, .title-view-dwn, .item-view-up, .item-view-dwn {
+      display: flex;
+      flex-direction: row;
+      justify-content: space-between;
+      align-items: center;
+      width: 100%;
+      align-content: center;
+      margin: 5px 0px;
+  
+      text {
+        color: #666;
+        font-size: 13px;
+        text-align: center;
+      }
+  
+      :first-child {
+        text-align: left;
+      }
+  
+      :last-child {
+        width: 30%;
+        text-align: right;
+      }
+    }
+  
+    .title-view-up, .item-view-up {
+      border-bottom: 1px solid #ddd;
+      padding-bottom: 5px;
+    }
+  }
+
+  .item-view {
+    background-color: #fff;
+    border: 1px solid #eee;
+    margin: 5px 0px;
+    margin-left: 10px;
+  }
+
+  .perform-detail-info {
+    width: 90%;
+    background-color: #f0f0f0;
+    padding: 10px;
+    display: flex;
+    flex-direction: column;
+    align-content: center;
+    border-radius: 10px;
+
+    .item {
+      width: 100%;
+      display: flex;
+      flex-direction: row;
+      justify-content: space-between;
+      margin: 5px 0px;
+
+      text {
+        color: #333;
+        font-size: 14px;
+        text-align: left;
+      }
+
+      text:nth-child(2) {
+        width: 45%;
+      }
+    }
+  }
+
+  .planstep-info {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    align-content: center;
+    border: 1px solid #387BDC;
+    width: 90%;
+    border-radius: 10px;
+    margin: 5px 0px;
+    color: #333;
+    font-size: 14px;
+
+    &__up, &__mid, &__dwn {
+      width: 100%;
+      display: flex;
+      flex-direction: row;
+      justify-content: space-between;
+      align-items: center;
+      align-content: center;
+      text-align: center;
+      padding: 10px 0px;
+
+      text:nth-child(1) {
+        margin-left: 15px;
+      }
+      text:nth-last-child(1) {
+        margin-right: 15px;
+      }
+    }
+
+    &__up {
+      color: #fff;
+      border-radius: 10px 10px 0px 0px;
+    }
+
+    .stepindex {
+      width: 30px;
+      height: 30px;
+      border-radius: 15px;
+      background-color: #fff;
+      color: #666;
+      text-align: center;
+    }
+  }
+
+  .button-view {
+    border-radius: 10px;
+    width: 95%;
+    padding-top: 15px;
+    display: flex;
+    flex-direction: row;
+    align-content: center;
+    align-items: center;
+    justify-content: space-between;
+
+    van-button {
+      width: 48%;
+    }
+  }
 }

+ 204 - 3
GuangZuan/miniprogram/mMine/pages/myperformance/detail/index.ts

@@ -1,10 +1,40 @@
+
+import { sendMsgToMQ } from "../../../../services/api/common/index"
+import Toast from "../../../../miniprogram_npm/@vant/weapp/toast/toast";
+import { FunCode } from "../../../../constants/enum/funcode"
+import { accountid, getPerformancestatus, getStepStatus, getSteptype, isEncrypted, protoHeader, userid } from "../../../../services/utils";
+import { queryWrPerformancePlanStep } from "../../../../services/api/orders/index";
+import { formatDateString, isnullstr } from "../../../../utils/util";
+
 Page({
 
   /**
    * 页面的初始数据
    */
   data: {
-
+    /// 列头
+    titles: [['重量 | 形状 | 款式 | 尺寸', ' 编号'], 
+             ['颜色 | 净度 | 对称 | 抛光 | 荧光 | 证书', '价格']],
+    /// 显示的值
+    values: [{ up: [''], dwn: [''] }],
+    /// 履约单据信息
+    order: <GuangZuan.MyPerformanc>({}),
+    /// 延期备注
+    remark: '',
+    /// 延期天数
+    delaydays: 0,
+    /// 是否显示延期申请
+    showDelay: false,
+    /// 是否显示立即执行
+    showExculate: false,
+    /// 履约步骤信息
+    steps: <GuangZuan.WrPerformancePlanStep[]>[],
+    /// 步骤信息
+    stepsValues:[{}],
+    /// 状态
+    status: '',
+    /// 当前执行步骤
+    step: ''
   },
 
   /**
@@ -16,10 +46,181 @@ Page({
   },
 
   /**
-   * 生命周期函数--监听页面加载
+   * 延期申请
+   */
+  doDelay() {
+    this.setData({ showDelay: false})
+    /// 合规性校验
+    if (!this.check(true)) { return  }
+    /// loding.....
+    Toast.loading({ message: '延期申请请求中.....'})
+    /// 参数信息
+    const params = {
+      PerformancePlanStepID: this.data.order.curstepid,
+      delaydays: this.data.delaydays,
+      applyremark: this.data.remark,
+      applicant: userid(),
+      Header: protoHeader(FunCode.PerformanceDelayApplyReq)
+    }
+
+    /// 发送请求
+    sendMsgToMQ({
+      data: {
+        data: JSON.stringify(params),
+        funCodeReq: FunCode.PerformanceDelayApplyReq,
+        funCodeRsp: FunCode.PerformanceDelayApplyReq,
+        isEncrypted: isEncrypted()
+      },
+      success: (res) => {
+        if (res.code != 0) {
+          Toast.fail({message: '操作申请失败, 原因:'+res.msg})
+          return
+        }
+        /// 操作成功
+        Toast.success('操作成功')
+        /// 返回上层视图
+        wx.navigateBack()
+      },
+      fail: (emsg) => {
+        /// 操作失败
+        Toast.fail('操作失败,原因:'+emsg)
+      }, complete: () => {
+        /// hideLoading
+        Toast.clear()
+      }
+    })
+  },
+
+  /**
+   * 立即执行
    */
-  onLoad() {
+  doExculpate() {
+    this.setData({ showDelay: false})
+    /// 合规性校验
+    if (!this.check(false)) { return  }
+    /// loding.....
+    Toast.loading({ message: '立即执行请求中.....'})
+    /// 参数信息
+    const params = {
+      PerformancePlanStepID: this.data.order.curstepid,
+      PerformanceExecuteSide: this.data.order.buyaccountid === accountid() ? 1 : 2,
+      StepRemark: this.data.remark,
+      Header: protoHeader(FunCode.PerformanceManualConfirmReq)
+    }
+
+    /// 发送请求
+    sendMsgToMQ({
+      data: {
+        data: JSON.stringify(params),
+        funCodeReq: FunCode.PerformanceManualConfirmReq,
+        funCodeRsp: FunCode.PerformanceManualConfirmRsp,
+        isEncrypted: isEncrypted()
+      },
+      success: (res) => {
+        if (res.code != 0) {
+          Toast.fail({message: '操作申请失败, 原因:'+res.msg})
+          return
+        }
+        /// 操作成功
+        Toast.success('操作成功')
+        /// 返回上层视图
+        wx.navigateBack()
+      },
+      fail: (emsg) => {
+        /// 操作失败
+        Toast.fail('操作失败,原因:'+emsg)
+      }, complete: () => {
+        /// hideLoading
+        Toast.clear()
+      }
+    })
+  },
 
+  onClose() {
+    /// 关闭
+    this.setData({
+      showDelay: false,
+      showExculate: false
+    })
+  },
+
+  onShowDelay() {
+    /// 关闭
+    this.setData({ showDelay: true })
+  },
+
+  onShowExculate() {
+    /// 关闭
+    this.setData({ showExculate: true })
+  },
+
+  check(isDelay: boolean): boolean {
+    if (this.data.delaydays === 0 && isDelay) {
+      Toast.fail({message: '请输入延期天数!'})
+      return false
+    }
+
+    if (this.data.remark === '') {
+      Toast.fail({message: '请输入备注!'})
+      return false
+    }
+    return true
+  },
+
+  /**
+   * 查询履约信息
+   */
+  queryWrPerformancePlanStep() {
+    /// loding.....
+    wx.showLoading({title: '加载中.....'})
+    /// 发送请求
+    queryWrPerformancePlanStep({
+      data: {
+        planid: <number><unknown>this.data.order.performanceplanid
+      },
+      success: (res) => {
+        this.setData({ 
+          steps: res.data,
+          stepsValues: res.data.map(itm => {
+            return { stepindex: itm.stepindex,
+                     steptypename: itm.steptypename, 
+                     stepstatus: itm.stepstatus,
+                     stepstatusdisplay: getStepStatus(itm.stepstatus),
+                     starttime: formatDateString(itm.starttime, 'YYYY-MM-DD'),
+                     endtime: formatDateString(itm.endtime, 'YYYY-MM-DD'),
+                     remaindays: itm.stepstatus === 2 ? `剩余${itm.remaindays}天` : ((itm.stepstatus === 3 || itm.stepstatus === 6) ? `${itm.stepdays}` : ''),
+                     stepdays: itm.stepdays,
+                     bgcolor: itm.stepstatus === 2 ? '#2794FF' : ((itm.stepstatus === 3 || itm.stepstatus === 6) ? '#89C5FF' : '#DDE3E8')
+                    }
+          })
+        })
+      },
+      fail: (emsg) => {
+        Toast.fail({message: '数据请求失败,原因:'+emsg})
+      },
+      complete: () => {
+        /// 清除Toast
+        wx.hideLoading()
+      }
+    })
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad(options: any) {
+    const obj: GuangZuan.MyPerformanc = JSON.parse(options.id ?? '')
+    if (obj) {
+      this.setData({
+        order: obj,
+        values: [{up: [`${isnullstr(obj.warehousenamedisplay)} | ${isnullstr(obj.zsshapetypedisplay)} | ${isnullstr(obj.zsstyletypedisplay)} | ${isnullstr(obj.sizedisplay)}`, `${isnullstr(obj.goodsno)}`], 
+                  dwn: [`${isnullstr(obj.zscolortype1display)}~${isnullstr(obj.zscolortype2display)} | ${isnullstr(obj.zscuttype1display)}~${isnullstr(obj.zscuttype2display)} | ${isnullstr(obj.zssymmetrytype1display)}~${isnullstr(obj.zssymmetrytype2display)} | ${isnullstr(obj.zspolishtype1display)}~${isnullstr(obj.zspolishtype2display)} | ${isnullstr(obj.zsfluorescencetype1display)}~${isnullstr(obj.zsfluorescencetype2display)} | ${isnullstr(obj.zscerttypedisplay)}`, obj.price.toFixed(2)]}],
+        status: getPerformancestatus(obj.performancestatus),
+        step: getSteptype(obj.steptypeid)
+      })
+    }
+    /// 查询履约信息
+    this.queryWrPerformancePlanStep()
   },
 
   /**

+ 99 - 6
GuangZuan/miniprogram/mMine/pages/myperformance/detail/index.wxml

@@ -1,7 +1,100 @@
-<view class="topView">
-  <!-- 导航栏 -->
-  <van-nav-bar custom-style="background-color: #E92020">
-    <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
-    <text slot="title" style="color: white;">履约详情</text>
-  </van-nav-bar>
+<view class="container">
+  <view class="topView">
+    <!-- 导航栏 -->
+    <van-nav-bar custom-style="background-color: #E92020">
+      <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
+      <text slot="title" style="color: white;">履约详情</text>
+    </van-nav-bar>
+  </view>
+
+  <view class="goods-info">
+    <text>【商品信息】</text>
+    <text>成交单号:{{order.relatedorderid}}</text>
+  </view>
+
+  <!-- 列头 --> 
+  <view class="title-view">
+    <view class="title-view-up">
+      <text wx:for="{{titles[0]}}" wx:for-item="itm" wx:for-index="idx" wx:key="idx">{{itm}}</text>
+    </view>
+    <view class="title-view-dwn">
+      <text wx:for="{{titles[1]}}" wx:for-item="itm" wx:for-index="idx" wx:key="idx">{{itm}}</text>
+    </view>
+  </view>
+
+  <!-- 数据 --> 
+  <van-swipe-cell wx:for="{{values}}" wx:for-item="itm" wx:if-index="idx" wx:key="idx">
+    <view class="item-view">
+      <view class="item-view-up">
+        <text wx:for="{{itm.up}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
+      </view>
+      <view class="item-view-dwn">
+        <text wx:for="{{itm.dwn}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
+      </view>
+    </view>
+  </van-swipe-cell>
+
+  <view class="perform-info">
+    <text>【履约信息】</text>
+    <text>成交单号:{{order.performanceplanid}}</text>
+  </view>
+
+  <!-- 履约信息 --> 
+  <view class="perform-detail-info">
+    <view class="item">
+      <text>履约货款:{{order.amount}}</text>
+      <text>履约状态:{{order.performancestatus}}</text>
+    </view>
+    <view class="item">
+      <text>买方已付:{{order.buypaidamount}}</text>
+      <text>卖方已收:{{order.sellreceivedamount}}</text>
+    </view>
+    <view class="item sellerinfo">
+      <text>卖方信息:{{order.sellerinfo}}</text>
+    </view>
+    <view class="item buyerinfo">
+      <text>买方信息:{{order.buyerinfo}}</text>
+    </view>
+  </view>
+
+  <view class="perexcute-info">
+    <text>【执行信息】</text>
+    <text>{{ status }}:{{ step }}</text>
+  </view>
+
+  <view class="planstep-info" wx:for="{{ stepsValues }}" wx:for-item="itm" wx:for-index="idx" wx:key="performancestepid">
+      <view class="planstep-info__up" style="background-color: {{ itm.bgcolor }};">
+        <text class="stepindex">{{ itm.stepindex }}</text>
+        <text class="steptypename">{{ itm.steptypename }}</text>
+        <text class="stepstatus">{{ itm.stepstatusdisplay }}</text>
+      </view>
+      <view class="planstep-info__mid">
+        <text class="starttime" wx:if="{{ itm.stepstatus != 2 }}">{{ itm.starttime }}</text>
+        <text class="remaindays">{{ itm.remaindays}}</text>
+        <text class="endtime" wx:if="{{ itm.stepstatus != 2 }}">{{ itm.endtime }}</text>
+      </view>
+      <view class="planstep-info__dwn" wx:if="{{ itm.stepstatus === 1 }}">
+        <text class="remaindays">{{itm.stepdays}}天</text>
+      </view>
+    </view>
+
+  <!-- 按钮 -->
+  <view class="button-view">
+    <van-button custom-class="delay" id="delay" round color="linear-gradient(to right, #4bb0ff, #6149f6)" block bind:click="onShowDelay">延期申请</van-button>
+    <van-button custom-class="excute" id="excute" round color="linear-gradient(to right, #4bb0ff, #F7A657)" block bind:click="onShowExculate">立即执行</van-button>
+  </view>
 </view>
+
+<!-- 是否申请延期 -->
+<van-dialog use-slot title="是否申请延期?" show="{{ showDelay }}" show-cancel-button  bind:close="onClose" bind:getuserinfo="doDelay">
+  <van-field label="天数:" model:value="{{delaydays}}" placeholder="请输入申请延期天数" type="number" border="{{ false }}"/>
+  <van-field label="备注:" model:value="{{remark}}" autosize placeholder="请输入备注信息" border="{{ false }}"/>
+</van-dialog>
+
+<!-- 是否申请延期 -->
+<van-dialog use-slot title="是否手动执行当前步骤?" show="{{ showExculate }}" show-cancel-button  bind:close="onClose" bind:getuserinfo="doExculpate">
+  <van-field label="备注:" model:value="{{remark}}" autosize placeholder="请输入备注信息" border="{{ false }}"/>
+</van-dialog>
+
+<!-- toast --> 
+<van-toast id="van-toast" />

+ 0 - 4
GuangZuan/miniprogram/mMine/pages/myperformance/his/index.less

@@ -89,10 +89,6 @@
   .item-view-up {
     border-bottom: 1px solid #ddd;
     padding-bottom: 5px;
-
-    text {
-      width: 25%;
-    }
   }
 }
 

+ 5 - 7
GuangZuan/miniprogram/mMine/pages/myperformance/his/index.ts

@@ -18,7 +18,7 @@ Page({
     /// 当前页签
     page: 1,
     /// 列头
-    titles: [['价格', '已付金额', '剩余冻结金额', '当前步骤', '剩余天数'], 
+    titles: [['价格 | 已付金额 | 剩余冻结金额', '当前步骤 | 剩余天数'], 
              ['形状 | 颜色 | 重量 | 对手方', '状态']],
     /// 查询数据
     datas: <GuangZuan.MyPerformanc[]>[],
@@ -50,11 +50,10 @@ Page({
           datas: res.data,
           /// 显示的值
           values: res.data.map(obj => {
-            return {up: [obj.zscurrencytypedisplayunit+obj.price.toString(), 
-                         (this.data.active == 0 ? obj.buypaidamount : obj.sellreceivedamount).toString(), 
-                         (this.data.active == 0 ? obj.buyerfreezeamount : obj.sellerfreezeamount).toString(), 
-                        getSteptype(obj.steptypeid), 
-                        obj.remaindays.toString()], 
+            return {up: [obj.zscurrencytypedisplayunit+obj.price.toString()+' | '+ 
+                        obj.zscurrencytypedisplayunit+(this.data.active == 0 ? obj.buypaidamount : obj.sellreceivedamount).toString()+' | '+ 
+                         obj.zscurrencytypedisplayunit+(this.data.active == 0 ? obj.buyerfreezeamount : obj.sellerfreezeamount).toString(), 
+                        getSteptype(obj.steptypeid)+' | '+ obj.remaindays.toString()+'天'], 
                     dwn: [isnullstr(obj.zsshapetypedisplay)+' | '+
                           isnullstr(obj.zscolortype1display)+' | '+
                           '--'+' | '+
@@ -82,7 +81,6 @@ Page({
    * tabbar点击事件
    */
   onTabChange(e: any) {
-    console.log(e)
     /// 设置激活项
     this.setData({ active: e.detail.index })
     /// 查询履约数据

+ 8 - 8
GuangZuan/miniprogram/mMine/pages/myperformance/list/index.less

@@ -20,7 +20,7 @@
       align-items: center;
       width: 100%;
       align-content: center;
-      height: 25px;
+      height: 30px;
   
       text {
         color: #666;
@@ -67,10 +67,9 @@
     flex-direction: row;
     justify-content: space-between;
     align-items: center;
-    height: 50%;
     width: 100%;
     align-content: center;
-    height: 25px;
+    height: 30px;
 
     text {
       color: #333;
@@ -89,7 +88,7 @@
     }
 
     :last-child {
-      width: 25%;
+      width: 30%;
       text-align: right;
     }
   }
@@ -97,13 +96,14 @@
   .item-view-up {
     border-bottom: 1px solid #ddd;
     padding-bottom: 5px;
-
-    text {
-      width: 25%;
-    }
   }
 }
 
+/* 选中时添加这个 样式 */
+.active {
+  background: #E6F1FF;
+}
+
 .van-swipe-cell__right {
   height: inherit;
   color: white;

+ 18 - 9
GuangZuan/miniprogram/mMine/pages/myperformance/list/index.ts

@@ -18,12 +18,12 @@ Page({
     /// 当前页签
     page: 1,
     /// 列头
-    titles: [['价格', '已付金额', '剩余冻结金额', '当前步骤', '剩余天数'], 
+    titles: [['价格 | 已付金额 | 剩余冻结金额', '当前步骤 | 剩余天数'], 
              ['形状 | 颜色 | 重量 | 对手方', '状态']],
     /// 查询数据
     datas: <GuangZuan.MyPerformanc[]>[],
     /// 显示的值
-    values: [{ up: [''], dwn: [''] }],
+    values: [{ up: [''], dwn: [''], isChecked: false }],
     /// 左滑宽度
     width: 150
   },
@@ -50,16 +50,15 @@ Page({
           datas: res.data,
           /// 显示的值
           values: res.data.map(obj => {
-            return {up: [obj.zscurrencytypedisplayunit+obj.price.toFixed(2), 
-                         (this.data.active == 0 ? obj.buypaidamount : obj.sellreceivedamount).toFixed(2), 
-                         (this.data.active == 0 ? obj.buyerfreezeamount : obj.sellerfreezeamount).toFixed(2), 
-                        getSteptype(obj.steptypeid), 
-                        obj.remaindays.toString()], 
+            return {up: [obj.zscurrencytypedisplayunit+obj.price.toFixed(2)+' | '+ 
+                         obj.zscurrencytypedisplayunit+(this.data.active == 0 ? obj.buypaidamount : obj.sellreceivedamount).toFixed(2)+' | '+
+                         obj.zscurrencytypedisplayunit+(this.data.active == 0 ? obj.buyerfreezeamount : obj.sellerfreezeamount).toFixed(2), 
+                        getSteptype(obj.steptypeid)+' | '+  obj.remaindays.toString()+"天"], 
                     dwn: [isnullstr(obj.zsshapetypedisplay)+' | '+
                           isnullstr(obj.zscolortype1display)+' | '+
                           '--'+' | '+
                           isnullstr(obj.accountname),
-                        getPerformancestatus(obj.performancestatus)]}
+                        getPerformancestatus(obj.performancestatus)], isChecked: false}
           })
         })
       },
@@ -78,11 +77,21 @@ Page({
     })
   },
 
+  /**
+   * 每行选中触发事件
+   */
+  onSelectItem(e: any) {
+    var obj = this.data.values[e.currentTarget.id]
+    obj.isChecked = !obj.isChecked
+    this.data.values[e.currentTarget.id] = obj
+    /// 数据赋值
+    this.setData({ values: this.data.values })
+  },
+
   /**  
    * tabbar点击事件
    */
   onTabChange(e: any) {
-    console.log(e)
     /// 设置激活项
     this.setData({ active: e.detail.index })
     /// 查询履约数据

+ 5 - 5
GuangZuan/miniprogram/mMine/pages/myperformance/list/index.wxml

@@ -29,8 +29,8 @@
 <!-- 内容滚动视图 --> 
 <scroll-view class="content-view">
   <!-- 数据 --> 
-  <van-swipe-cell wx:for="{{values}}" wx:for-item="itm" wx:if-index="idx" wx:key="idx" right-width="{{ 150 }}">
-    <view class="item-view">
+  <van-swipe-cell wx:for="{{ values }}" wx:for-item="itm" wx:for-index="idx" id="{{idx}}" wx:key="idx" right-width="{{ 150 }}" bind:click="onSelectItem">
+    <view class="item-view {{ values[idx].isChecked ? 'active' : '' }}">
       <view class="item-view-up">
         <text wx:for="{{itm.up}}" wx:for-item="data" wx:for-index="idx" wx:key="idx">{{data}}</text>
       </view>
@@ -39,9 +39,9 @@
       </view>
     </view>
     <view slot="right" class="van-swipe-cell__right">
-      <view class="item detail" id="detail {{idx}}" style="background-color: yellowgreen;" bindtap="onButtonPressed">详情</view>
-      <view class="item breach" id="breach {{idx}}" style="background-color: red;" bindtap="onButtonPressed">违约</view>
-      <view class="item modify" id="modify {{idx}}" style="background-color: olivedrab;" bindtap="onButtonPressed">修改</view>
+      <view class="item detail" id="detail {{ idx }}" style="background-color: yellowgreen;" bindtap="onButtonPressed">详情</view>
+      <view class="item breach" id="breach {{ idx }}" style="background-color: red;" bindtap="onButtonPressed">违约</view>
+      <view class="item modify" id="modify {{ idx }}" style="background-color: olivedrab;" bindtap="onButtonPressed">修改</view>
     </view>
   </van-swipe-cell>
 </scroll-view>

+ 57 - 4
GuangZuan/miniprogram/mMine/pages/myperformance/modify/index.less

@@ -1,5 +1,58 @@
-.topView {
-  position: sticky;
-  top: 0;
-  z-index: 999;
+.container {
+  width: 100%;
+  display: flex;
+  flex-direction: column;
+  align-content: center;
+  align-items: center;
+
+  .topView {
+    position: sticky;
+    top: 0;
+    z-index: 999;
+    width: 100%;
+  }
+
+  .contract-info, .address-info, .invoice-info {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    align-content: center;
+    align-items: center;
+    margin-bottom: 10px;
+    width: 95%;
+
+    text {
+      width: 80px;
+      color: #333;
+      font-size: 14px;
+    }
+
+    textarea {
+      border: 1px solid #f0f0f0;
+      border-radius: 10px;
+      color: #333;
+      padding: 10px;
+      margin-right: 5px;
+      font-size: 14px;
+    }
+  }
+
+  .contract-info {
+    margin-top: 10px;
+  }
+
+  .button-view {
+    border-radius: 10px;
+    width: 95%;
+    padding-top: 15px;
+    display: flex;
+    flex-direction: row;
+    align-content: center;
+    align-items: center;
+    justify-content: space-between;
+
+    van-button {
+      width: 100%;
+    }
+  }
 }

+ 86 - 3
GuangZuan/miniprogram/mMine/pages/myperformance/modify/index.ts

@@ -1,10 +1,22 @@
+import { sendMsgToMQ } from "../../../../services/api/common/index"
+import Toast from "../../../../miniprogram_npm/@vant/weapp/toast/toast";
+import { FunCode } from "../../../../constants/enum/funcode"
+import { accountid, isEncrypted, protoHeader } from "../../../../services/utils";
+
 Page({
 
   /**
    * 页面的初始数据
    */
   data: {
-
+    /// 单据信息
+    order: <GuangZuan.MyPerformanc>({}),
+    /// 联系信息
+    contract: '',
+    /// 地址信息
+    address: '',
+    /// 发票信息
+    invoice: ''
   },
 
   /**
@@ -16,10 +28,81 @@ Page({
   },
 
   /**
-   * 生命周期函数--监听页面加载
+   * 修改申请
    */
-  onLoad() {
+  doModify() {
+    // 校验失败
+    if (!this.check()) { return  }
+    /// loding.....
+    Toast.loading({ message: '修改申请请求中.....'})
+
+    const json = {
+      ContactInfo: `ContactInfo:${this.data.contract}`+`ReceiveInfo:${this.data.address}`+`ReceiptInfo:${this.data.invoice}`
+    }
+    /// 参数信息
+    const params = {
+      PerformancePlanID: this.data.order.performanceplanid,
+      AccountID: accountid(),
+      ContactInfo: JSON.stringify(json),
+      Header: protoHeader(FunCode.PerformanceModifyContactReq)
+    }
+    /// 发送请求
+    sendMsgToMQ({
+      data: {
+        data: JSON.stringify(params),
+        funCodeReq: FunCode.PerformanceModifyContactReq,
+        funCodeRsp: FunCode.PerformanceModifyContactRsp,
+        isEncrypted: isEncrypted()
+      },
+      success: (res) => {
+        if (res.code != 0) {
+          Toast.fail({message: '修改申请失败, 原因:'+res.msg})
+          return
+        }
+        /// 操作成功
+        Toast.success('修改申请成功')
+        /// 返回上层视图
+        wx.navigateBack()
+      },
+      fail: (emsg) => {
+        /// 操作失败
+        Toast.fail('修改申请失败,原因:'+emsg)
+      }, complete: () => {
+        /// hideLoading
+        Toast.clear()
+      }
+    })
+  },
 
+  check(): boolean {
+    if (this.data.contract === '') {
+      Toast.fail({message: '请输入联系信息!'})
+      return false
+    }
+
+    if (this.data.address === '') {
+      Toast.fail({message: '请选择收货地址信息!'})
+      return false
+    }
+
+    if (this.data.invoice === '') {
+      Toast.fail({message: '请选择发票信息!'})
+      return false
+    }
+    return true
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad(options: any) {
+    /// 数据解析
+    const myPerformanc: GuangZuan.MyPerformanc = JSON.parse(options.id ?? '')
+    if (myPerformanc) {
+      this.setData({
+        order: myPerformanc
+      })
+    }
   },
 
   /**

+ 34 - 5
GuangZuan/miniprogram/mMine/pages/myperformance/modify/index.wxml

@@ -1,7 +1,36 @@
-<view class="topView">
+<view class="container">
   <!-- 导航栏 -->
-  <van-nav-bar custom-style="background-color: #E92020">
-    <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
-    <text slot="title" style="color: white;">修改信息</text>
-  </van-nav-bar>
+  <view class="topView">
+    <van-nav-bar custom-style="background-color: #E92020">
+      <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
+      <text slot="title" style="color: white;">修改信息</text>
+    </van-nav-bar>
+  </view>
+
+  <view class="contract-info">
+    <text>联络信息:</text>
+    <textarea model:value="{{ contract }}" class="text-area" placeholder="请输入联络信息"></textarea>
+    <view style="width: 20px;"/>
+  </view>
+
+  <view class="address-info">
+    <text>收货地址:</text>
+    <textarea class="text-area" model:value="{{ address }}" placeholder="请输入收货地址"></textarea>
+    <van-icon id="address" name="plus" size="20"></van-icon>
+  </view>
+
+  <view class="invoice-info">
+    <text>发票信息:</text>
+    <textarea class="text-area" model:value="{{ invoice }}" placeholder="请输入发票信息"></textarea>
+    <van-icon id="invoice" name="plus" size="20"></van-icon>
+  </view>
+
+  <!-- 按钮 -->
+  <view class="button-view">
+    <van-button custom-class="excute" id="excute" round color="linear-gradient(to right, #4bb0ff, #F7A657)" block bind:click="doModify">修改信息</van-button>
+  </view>
 </view>
+
+<!-- toast --> 
+<van-toast id="van-toast" />
+

+ 2 - 1
GuangZuan/miniprogram/mTrade/pages/listingbuy/index.json

@@ -5,5 +5,6 @@
     "van-radio-group": "@vant/weapp/radio-group/index"
   },
   "navigationBarTitleText": "我要求购",
-  "enablePullDownRefresh": false
+  "enablePullDownRefresh": false,
+  "navigationStyle": "custom"
 }

+ 2 - 11
GuangZuan/miniprogram/mTrade/pages/listingbuy/index.less

@@ -4,12 +4,6 @@
   width: 100%;
 }
 
-.tab-view {
-  position: sticky;
-  top: 0;
-  z-index: 999;
-}
-
 .cell-view {
   display: flex;
   border-bottom: 1px solid #f0f0f0;
@@ -93,17 +87,14 @@
   margin-top: 20px;
 
   button {
-    width: 45%;
+    width: 80%;
     color: white;
+    border-radius: 10px;
   }
 
   button:nth-child(1) {
     background-color: red;
   }
-  
-  button:nth-child(2) {
-    background-color: purple;
-  }
 }
 
 num-range {

+ 9 - 6
GuangZuan/miniprogram/mTrade/pages/listingbuy/index.ts

@@ -7,11 +7,7 @@ Page({
     /// 底部安全区域
     safeBottom: getApp().globalData.safeBottom,
     /// tabs
-    tabs: [{id: 1, name: '成批裸钻'}, 
-           {id: 2, name: '单颗裸钻'}, 
-           {id: 3, name: '成批毛坯'}, 
-           {id: 4, name: '钻石首饰'}, 
-           {id: 5, name: '彩色钻石'}],
+    tabs: [{id: 2, name: '单颗裸钻'}, {id: 5, name: '单颗彩钻'}],
     /// tab索引
     active: 0,
     /// 款式
@@ -106,13 +102,20 @@ Page({
 
   /// 单选框
   onChange(e: any) {
-    console.log(e)
     switch (e.target.id) {
       default:
         break;
     }
   },
 
+  /**
+   * 返回上层视图
+   */
+  backToParent() {
+    /// 返回上层视图
+    wx.navigateBack()
+  },
+
   /// 形状按钮点击事件
   onButtonPressed(e: any) {
     const ids = (<string> e.target.id).split(' ')

+ 14 - 9
GuangZuan/miniprogram/mTrade/pages/listingbuy/index.wxml

@@ -1,12 +1,18 @@
-<!-- TabBar选项 -->
-<view style="position: sticky; top:0; z-index: 999;">
-  <van-tabs animated swipeable bind:change="onTabChange" color="#2270D9" title-active-color="#2270D9" title-inactive-color="#8F8AA6">
-    <van-tab wx:for="{{tabs}}" wx:for-item="itm" wx:key="id" id="{{itm.id}}" title="{{itm.name}}"/>
-  </van-tabs>
+<view class="container" style="position: absolute; z-index: 999; top: 0px;">
+  <!-- 导航栏 -->
+    <van-nav-bar custom-style="background-color: #E92020">
+      <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
+      <text slot="title" style="color: white;">我要求购</text>
+    </van-nav-bar>
+  </view>
+  <!-- tabs -->
+  <view class="tab-view">
+    <van-tabs swipeable bind:change="onTabChange" color="#2270D9" title-active-color="#2270D9" title-inactive-color="#8F8AA6">
+      <van-tab wx:for="{{tabs}}" wx:for-item="itm" wx:key="id" id="{{itm.id}}" title="{{itm.name}}"/>
+    </van-tabs>  
 </view>
 
-<view class="container" style="position: relative; padding-bottom: {{safeBottom}}px;"> 
-
+<view class="scroll-view" style="position: relative; padding-bottom: {{safeBottom}}px;"> 
   <!-- 货币 -->
   <view class="cell-view currency"> 
     <text>货币</text>
@@ -112,8 +118,7 @@
 
   <!-- 提交按钮视图 -->
   <view class="submit-view" style="position: relative; padding-bottom: {{safeBottom}}px;">
-    <button bindtap="toSubmit">卖出</button>
-    <button bindtap="toSubmit">取消</button>
+    <button bindtap="toSubmit">发布求购</button>
   </view>
 </view>
 

+ 2 - 1
GuangZuan/miniprogram/mTrade/pages/listingsell/index.json

@@ -1,4 +1,5 @@
 {
   "usingComponents": {},
-  "navigationBarTitleText": "我要出售"
+  "navigationBarTitleText": "我要出售",
+  "navigationStyle": "custom"
 }

+ 9 - 5
GuangZuan/miniprogram/mTrade/pages/listingsell/index.ts

@@ -5,11 +5,7 @@ Page({
    */
   data: {
     /// tabs
-    tabs: [{id: 1, name: '成批裸钻'}, 
-           {id: 2, name: '单颗裸钻'}, 
-           {id: 3, name: '成批毛坯'}, 
-           {id: 4, name: '钻石首饰'}, 
-           {id: 5, name: '彩色钻石'}],
+    tabs: [{id: 2, name: '单颗裸钻'}, {id: 5, name: '单颗彩钻'}],
     /// tab索引
     active: 0,
     /// 列头
@@ -17,6 +13,14 @@ Page({
   },
 
   /**
+   * 返回上层视图
+   */
+  backToParent() {
+    /// 返回上层视图
+    wx.navigateBack()
+  },
+
+  /**
    * tab触发事件
    */
   onTabChange(e: any) {

+ 9 - 1
GuangZuan/miniprogram/mTrade/pages/listingsell/index.wxml

@@ -1,3 +1,11 @@
+
+<view class="container">
+  <!-- 导航栏 -->
+  <van-nav-bar custom-style="background-color: #E92020">
+    <van-icon slot="left" name="arrow-left" size="25px" color="white" bind:click="backToParent"/>
+    <text slot="title" style="color: white;">我要出售</text>
+  </van-nav-bar>
+</view>
 <!-- tabs -->
 <view class="tab-view">
   <van-tabs swipeable bind:change="onTabChange" color="#2270D9" title-active-color="#2270D9" title-inactive-color="#8F8AA6">
@@ -5,7 +13,7 @@
   </van-tabs>  
 </view>
 
-<scroll-view class="scroll-view" scroll-x enable-flex>
+<scroll-view class="scroll-view">
   <!-- 列头 -->
   <view class="title-view" style="width: 100%;">
     <text class="title-view-text" wx:for="{{titles}}" wx:for-index="idx" wx:for-item="itm" wx:key="idx" id="idx">{{itm}}</text>

+ 1 - 2
GuangZuan/miniprogram/pages/circle/index.ts

@@ -1,5 +1,5 @@
 import { queryMyFavorite } from "../../services/api/orders/index"
-import Toast from '@vant/weapp/toast/toast';
+import Toast from "../../miniprogram_npm/@vant/weapp/toast/toast"
 import { clientType, isEncrypted, marketid, protoHeader, userid, timetample } from "../../services/utils";
 import { sendMsgToMQ } from "../../services/api/common/index";
 import { FunCode } from "../../constants/enum/funcode";
@@ -107,7 +107,6 @@ Page({
           Toast.fail({message: '请求失败,原因:'+res.msg})
           return 
         }
-        console.log(res)
         /// 操作成功
         Toast.success({message: '请求成功'})
         /// 更新数据

+ 21 - 11
GuangZuan/miniprogram/pages/home/index.ts

@@ -19,7 +19,7 @@ Page({
     /// 功能菜单
     menus: [{id: 1, icon: '', title: '钻石搜索', path: '/mHome/pages/search/index'}, 
             {id: 2, icon: '', title: '挂牌大厅', path: 'pages/trade/index'}, 
-            {id: 3, icon: '', title: '钻石首饰', path: '/mHome/pages/jewelry/index'}, 
+            {id: 3, icon: '', title: '钻石首饰', path: '/mHome/pages/jewelry/list/index'}, 
             {id: 4, icon: '', title: '出境检测', path: '/mHome/pages/inspection/list/index'}, 
             {id: 5, icon: '', title: '保税服务', path: '/mHome/pages/bond/list/index'}],
     /// 统计
@@ -50,11 +50,7 @@ Page({
              return (services.config.openApiUrl+item.imagepath).replace('./uploadFile', '/uploadFile')
           })
         })
-      },
-      fail:(emsg) => {
-        console.log('首页数据获取失败,原因:'+emsg)
-      },
-      complete:() => {}
+      }
     })
   },
 
@@ -73,11 +69,7 @@ Page({
                      res.data.transactionsonsale, 
                      loginQuery().exchangeRateConfigs[0].exchangerate]
         this.setData({ homedata: array })
-      },
-      fail:(emsg) => {
-        console.log('首页数据获取失败,原因:'+emsg)
-      },
-      complete:() => {}
+      }
     })
   },
 
@@ -124,6 +116,24 @@ Page({
     })
   },
 
+  /**
+   * 计算器跳转
+   */
+  goToCalculator() {
+    wx.navigateTo({
+      url: '/mHome/pages/calculator/index'
+    })
+  },
+
+  /**
+   * 证书查询
+   */
+  goToCerserach() {
+    wx.navigateTo({
+      url: '/mHome/pages/cerserach/index'
+    })
+  },
+
   /// 进入公告消息详情页
   goToMsgDetail(r: any) {
     let jsonStr = JSON.stringify(this.data.msgs[r.currentTarget.id])

+ 2 - 2
GuangZuan/miniprogram/pages/home/index.wxml

@@ -38,9 +38,9 @@
 </scroll-view>
 
 <!-- 证书查询  -->
-<view class="certsearch" style="background-image: url('../../images/home-zscx.png'); background-size: 100% 100%; width: 50px; height: 50px;" url="/mHome/pages/cerserach/index"></view>
+<view class="certsearch" style="background-image: url('../../images/home-zscx.png'); background-size: 100% 100%; width: 50px; height: 50px;" bindtap="goToCerserach"></view>
 <!-- 计算器  -->
-<view class="calculator" style="background-image: url('../../images/home-jsq.png'); background-size: 100% 100%; width: 50px; height: 50px;"  url="/mHome/pages/calculator/index"></view>
+<view class="calculator" style="background-image: url('../../images/home-jsq.png'); background-size: 100% 100%; width: 50px; height: 50px;" bindtap="goToCalculator" ></view>
 <!-- toast --> 
 <van-toast id="van-toast" />
 

+ 14 - 1
GuangZuan/miniprogram/pages/login/index.ts

@@ -1,8 +1,9 @@
 // pages/login/index.ts
 import {login, loginQuery} from '../../services/api/account/index'
 import { appConfig } from '../../config/index'
-import { getDivisions, loginid, taAccounts } from '../../services/utils'
+import { getDivisions, loginid, setAllEnums, taAccounts } from '../../services/utils'
 import Toast from '../../miniprogram_npm/@vant/weapp/toast/toast'
+import { getAllEnums } from '../../services/api/common/index'
 
 Page({
 
@@ -101,6 +102,8 @@ Page({
         wx.setStorageSync('LoginQuery', res.data)
         /// 存储市场ID
         wx.setStorageSync('MarketID', res.data.markets[0].marketid)
+        /// 获取所有的枚举值
+        this.getAllEnums()
         
         /// 登录失败
         if (res.code != 200) { 
@@ -126,6 +129,16 @@ Page({
     })
   },
 
+  /// 获取所有的枚举值
+  getAllEnums() {
+    /// 发送请求
+    getAllEnums({
+      success: (res) => {
+        setAllEnums(res.data)
+      }
+    })
+  },
+
   /**
    * 生命周期函数--监听页面加载
    */

+ 61 - 24
GuangZuan/miniprogram/pages/mine/index.less

@@ -5,38 +5,75 @@
   justify-content: center;
 
   .minetop {
-    height: 250rpx;
     justify-content: space-around;
     display: flex;
+    flex-direction: column;
     align-items: center;
-    background-image: url('../../images/mine-bg.png');
-    background-size: 100% 100%;
-    width: 100%;
-  
-    van-image {
-      margin-left: 15px;
-    }
-  
-    .userinfo {
-      display: grid;
-      width: 100%;
-      padding-left: 15px;
-  
-      view {
+    height: 160px;
+
+    .taaccount-info {
+      display: flex;
+      flex-direction: row;
+      justify-content: space-around;
+      align-items: center;
+      align-content: center;
+      width: 90%;
+
+      .item {
         display: flex;
-        justify-content: space-between;
-  
+        flex-direction: column;
+
+        text {
+          text-align: center;
+          height: 25px;
+        }
+
         text:nth-child(1) {
-          width: 120px;
+          color: #666;
+          font-size: 14px;
+        }
+
+        text:nth-child(2) {
+          color: #333;
+          font-size: 18px;
         }
       }
-  
-      text {
-        color: #333;
-        text-align: left;
+    }
+
+    .user-info {
+      display: flex;
+      flex-direction: row;
+      width: 95%;
+      justify-content: space-between;
+      align-items: center;
+      align-content: center;
+      margin-top: 10px;
+
+      van-image {
+        margin-left: 15px;
+      }
+    
+      .userinfo {
+        display: grid;
         width: 100%;
-        padding: 5px 0px;
-        font-size: 14px;
+        padding-left: 15px;
+    
+        .userinfo-vip, .userinfo-account {
+          display: flex;
+          justify-content: space-between;
+          
+          text:nth-child(1) {
+            width: 60%;
+          }
+        }
+    
+        text {
+          color: #333;
+          text-align: left;
+          width: 100%;
+          padding: 5px 0px;
+          font-size: 14px;
+        }
       }
     }
   }

+ 19 - 4
GuangZuan/miniprogram/pages/mine/index.ts

@@ -1,6 +1,7 @@
 // pages/mine/index.ts
 import Dialog from '@vant/weapp/dialog/dialog';
 import Toast from '../../miniprogram_npm/@vant/weapp/toast/toast';
+import { accountid, loginid, loginQuery, taAccount, userid } from '../../services/utils';
 
 Page({
 
@@ -24,7 +25,19 @@ Page({
     /// 微信头像 
     avatarUrl: "",
     /// 微信昵称
-    nickName: ""
+    nickName: loginQuery().userInfo.customername,
+    /// 资金账户信息
+    ta: <GuangZuan.TaAccount>({}),
+    /// 登录账号
+    loginid: loginid(),
+    /// 是否脱敏显示
+    isOpenEye: false
+  },
+
+  onEye() {
+    this.setData({
+      isOpenEye: !this.data.isOpenEye
+    })
   },
 
   /**
@@ -59,10 +72,12 @@ Page({
     /// 获取微信头像
     let url = wx.getStorageSync('avatarUrl')
     if (url) {
-      this.setData({
-        avatarUrl: url
-      })
+      this.setData({ avatarUrl: url })
     }
+    this.setData({
+      /// 设置账户信息
+      ta: taAccount(accountid())
+    })
   },
 
   /**

+ 28 - 11
GuangZuan/miniprogram/pages/mine/index.wxml

@@ -5,18 +5,35 @@
 
 <view class="container">
   <!-- 我的顶部视图 -->
-  <view class="minetop" style="background-image: url('../../images/mine-bg.png'); background-size: 100% 100%; width: 100%; height: 220px;">
-    <van-image src="{{avatarUrl}}" round width="50" height="50"></van-image>
-    <view class="userinfo">
-      <view class="userinfo-vip">
-        <text>VIP</text>
-        <text>永久</text>
+  <view class="minetop" style="background-image: url('../../images/mine-bg.png'); background-size: 100% 100%; width: 100%; ">
+    <view class="user-info">
+      <van-image src="{{avatarUrl}}" round width="50" height="50"></van-image>
+      <view class="userinfo">
+        <view class="userinfo-vip">
+          <text>{{ isOpenEye ? nickName : '******' }}</text>
+          <text>资金账户</text>
+        </view>
+        <view class="userinfo-account">
+          <text>{{ isOpenEye ? loginid : '******' }}</text>
+          <text>{{ isOpenEye ? ta.accountid : '******' }}</text>
+        </view>
       </view>
-      <view class="userinfo-account">
-        <text>elena</text>
-        <text>21000001</text>
+      <!-- 闭眼 -->
+      <van-icon id="eye" name="{{ isOpenEye ? 'eye-o' : 'closed-eye'}}" size="20" bind:click="onEye"/>
+    </view>
+    <view class="taaccount-info">
+      <view class="item">
+        <text>余额</text>
+        <text>{{ isOpenEye ? ta.balance : '******'}}</text>
+      </view>
+      <view class="item">
+        <text>冻结</text>
+        <text>{{ isOpenEye ? ta.freezemargin : '******' }}</text>
+      </view>
+      <view class="item">
+        <text>可用</text>
+        <text>{{ isOpenEye ? ta.currentbalance : '******' }}</text>
       </view>
-      <text>深圳水贝珠宝有限公司</text>
     </view>
   </view>
 
@@ -40,7 +57,7 @@
   </van-cell-group>
 
   <!-- 登出按钮  -->
-  <view class="loginOut-view"><van-button custom-class="loginOut" round bindtap="onLoginOut">系统登出</van-button></view>
+  <view class="loginOut-view"><van-button custom-class="loginOut" round bindtap="onLoginOut">退出登录</van-button></view>
 </view>
 
 <!-- 对话弹框  -->

+ 1 - 3
GuangZuan/miniprogram/pages/register/index.ts

@@ -76,9 +76,7 @@ Page({
     this.setData({ isShowArea: false })
   },
 
-  changeArea(e: any) {
-    console.log(e.detail.values)
-  },
+  changeArea() {},
 
   /// 显示地址选择组件
   showArea() {

+ 13 - 0
GuangZuan/miniprogram/pages/trade/index.less

@@ -3,6 +3,19 @@
   top: 0px;
   z-index: 999;
 
+  .tab-view {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    align-content: center;
+    align-items: center;
+    margin-right: 12px;
+
+    van-tabs {
+      width: 320px;
+    }
+  }
+
   .title-view {
     margin: 10px 5px;
     background-color: #f0f0f0;

+ 26 - 5
GuangZuan/miniprogram/pages/trade/index.ts

@@ -1,5 +1,5 @@
 import { queryBuyOrder, queryDiamond } from "../../services/api/orders/index"
-import Toast from '@vant/weapp/toast/toast';
+import Toast from "../../miniprogram_npm/@vant/weapp/toast/toast"
 import { clientType, isEncrypted, marketid, protoHeader, userid, timetample } from "../../services/utils";
 import { FunCode } from "../../constants/enum/funcode";
 import { sendMsgToMQ } from "../../services/api/common/index";
@@ -71,7 +71,7 @@ Page({
                    { text: '强', value: 4 },
                    { text: '极强', value: 5 }],
     fluorescence: 1,
-    /// 大厅数据
+    /// 大厅数据
     sellOrders: <GuangZuan.SellOrder[]>[],
     /// 买大厅数据
     askOrders: <GuangZuan.BuyOrder[]>[],
@@ -150,14 +150,14 @@ Page({
         this.onAddFavorite(index)
         break
       case 'goods-info':  /// 商品详情
-        wx.navigateTo({ url: '/mHome/pages/goodsdetail/index' })
+        wx.navigateTo({ url: '/mHome/pages/goodsdetail/index?goodsno='+ this.data.sellOrders[index].goodsno})
         break;
       case 'search':
         wx.navigateTo({ url: '/mHome/pages/search/index' })
         break;
       case 'delisting': /// 摘牌
         wx.navigateTo({
-          url: this.data.active == 0 ? '/mTrade/pages/delistingbuy/index' : '/mTrade/pages/delistingsell/index'
+          url: '/mTrade/pages/delistingbuy/index?item='+JSON.stringify(this.data.sellOrders[index])
         })
         break;
       case 'listing-buy':  /// 我要求购
@@ -180,6 +180,28 @@ Page({
     }
   },
 
+  onIconClick(e: any) {
+    switch (e.currentTarget.id) {
+      case 'listing-buy':  /// 挂买
+        wx.navigateTo({
+          url: '/mTrade/pages/listingbuy/index'
+        })
+        break;
+      case 'listing-sell':  /// 挂卖
+        wx.navigateTo({
+          url: '/mTrade/pages/listingsell/index'
+        })
+        break;
+      case 'search':  /// 搜索
+        wx.navigateTo({
+          url: '/mHome/pages/search/index'
+        })
+        break;
+      default:
+        break;
+    }
+  },
+
   /**
    * 添加收藏
    */
@@ -214,7 +236,6 @@ Page({
           Toast.fail({message: '请求失败,原因:'+res.msg})
           return 
         }
-        console.log(res)
         /// 操作成功
         Toast.success({message: '请求成功'})
       },

+ 4 - 1
GuangZuan/miniprogram/pages/trade/index.wxml

@@ -5,9 +5,12 @@
 
   <!-- tabs -->
   <view class="tab-view">
-    <van-tabs sticky animated bind:change="onTabChange" color="#2270D9" title-active-color="#2270D9" title-inactive-color="#8F8AA6">
+    <van-tabs custom-class="van-tabs"  sticky animated bind:change="onTabChange" color="#2270D9" title-active-color="#2270D9" title-inactive-color="#8F8AA6">
       <van-tab wx:for="{{tabs}}" wx:for-item="itm" wx:key="id" id="{{itm.id}}" title="{{itm.name}}"/>
     </van-tabs>  
+    <van-icon id="listing-buy" name="plus" size="20" bind:click="onIconClick"/>
+    <van-icon id="listing-sell" name="minus" size="20" bind:click="onIconClick"/>
+    <van-icon id="search" name="search" size="20" bind:click="onIconClick"/>
   </view>
 
   <!-- 下拉菜单 -->

+ 5 - 0
GuangZuan/miniprogram/services/api/common/index.ts

@@ -36,4 +36,9 @@ export function queryGetDivisions(params: HttpRequest<{req: GuangZuan.GetDivisio
 export function sendMsgToMQ(params: HttpRequest<{req: GuangZuan.SendMsgToMQReq, rsp: GuangZuan.SendMsgToMQRsp}>) {
   console.log(params.data)
   return httpRequest(service.config.goAccess+'/MQ/SendMsgToMQ', 'POST', params)
+}
+
+/* 获取所有枚举信息 */
+export function getAllEnums(params: HttpRequest<{req: GuangZuan.AllEnumsReq, rsp: GuangZuan.AllEnums[]}>) {
+  return httpRequest(service.config.goCommonSearchUrl+'/Common/GetAllEnums', 'GET', params)
 }

+ 6 - 0
GuangZuan/miniprogram/services/api/orders/index.ts

@@ -87,6 +87,12 @@ export function queryWarehouseInfo(params: HttpRequest<{req: GuangZuan.Warehouse
   return httpRequest(service.config.goCommonSearchUrl+'/Guangzuan/QueryWarehouseInfo', 'GET', params)
 }
 
+/* 查询履约信息详情 */
+export function queryWrPerformancePlanStep(params: HttpRequest<{req: GuangZuan.WrPerformancePlanStepReq, rsp: GuangZuan.WrPerformancePlanStep[]}>) {
+  return httpRequest(service.config.goCommonSearchUrl+'/WrTrade2/QueryWrPerformancePlanStep', 'GET', params)
+}
+
+
 
 
 

+ 1 - 1
GuangZuan/miniprogram/services/socket/quote/index.ts

@@ -4,7 +4,7 @@ import { FunCode } from '../../../constants/enum/funcode'
 import { QuoteRequest } from './interface'
 import { subscribeListToByteArrary } from './build/encode'
 import { parseSubscribeRsp } from './build/decode'
-import { globalCache } from '../../../store/index'
+import { globalCache } from '../../../stores/index'
 import socket from '../index'
 
 /**

+ 79 - 2
GuangZuan/miniprogram/services/utils.ts

@@ -1,6 +1,6 @@
 import { queryGetDivisions } from "./api/common/index";
 import { getTaAccounts } from './api/account/index';
-import { v4 } from "../store/utils/uuid/index";
+import { v4 } from "../stores/utils/uuid/index";
 import { IMessageHead } from './../services/socket/trade/protobuf/proto';
 import Toast from "../miniprogram_npm/@vant/weapp/toast/toast";
 
@@ -55,6 +55,33 @@ export function getSteptype(typeid: number): string {
   }
 }
 
+/// 获取履约步骤类型ID
+export function getStepStatus(stepstatus: number): string {
+  switch (stepstatus) {
+    case 1:
+      return '待开始'
+      break;
+    case 2:
+        return '进行中'
+        break;
+    case 3:
+      return '已完成'
+      break;
+    case 4:
+      return '延期(进行中)'
+      break;
+    case 5:
+        return '失败'
+        break;
+    case 6:
+      return '自动完成'
+      break;
+    default:
+      return '超时关闭'
+      break;
+  }
+}
+
 /// 获取履约状态
 export function getPerformancestatus(status: number): string {
   switch (status) {
@@ -113,7 +140,7 @@ export function getDivisions() {
     enableAuthorization: false,
     success: (res) => {
       /// 数据缓存
-      wx.setStorageSync('GetDivisions', res.data)
+      setDivisions(res.data)
     },
     fail: () => {
       Toast('地区信息获取失败')
@@ -139,6 +166,14 @@ export function taAccounts() {
   })
 }
 
+/// 获取当前对应的资金账户
+export function taAccount(accountid: number): GuangZuan.TaAccount {
+  const tas = <GuangZuan.TaAccount[]>wx.getStorageSync('GetTaAccounts') 
+  return tas.filter(obj => {
+    return obj.accountid === accountid
+  })[0]
+}
+
 /// 获取登录Loginid
 export function loginid() {
   return wx.getStorageSync('LoginID')
@@ -169,6 +204,11 @@ export function isEncrypted() {
   return false
 }
 
+/// 存储地区信息
+export function setDivisions(datas: GuangZuan.GetDivisions[]) {
+   wx.setStorageSync('GetDivisions', datas)
+} 
+
 /// 获取地区信息
 export function divisions() {
   return wx.getStorageSync('GetDivisions')
@@ -201,4 +241,41 @@ export function timetample() {
 export function loginQuery(): GuangZuan.LoginQuery {
   const data = <GuangZuan.LoginQuery>wx.getStorageSync('LoginQuery')
   return data
+}
+
+/// 获取登录账号
+export function loginCode(): string {
+  const code = (<GuangZuan.LoginQuery>wx.getStorageSync('LoginQuery')).loginAccount.logincode
+  return code === '' ? loginid() : code
+}
+
+/// 存储所有的枚举信息
+export function setAllEnums(enums: GuangZuan.AllEnums[]) {
+  wx.setStorageSync('AllEnums', enums)
+}
+
+export function getAllEnums(): GuangZuan.AllEnums[] {
+  const objs = <[GuangZuan.AllEnums]>wx.getStorageSync('AllEnums')
+  return objs
+}
+
+export function getEnumList(enumdiccode: string): GuangZuan.AllEnums[] {
+  const objs = getAllEnums().filter(obj => {
+    return obj.enumdiccode === enumdiccode
+  })
+  return objs
+}
+
+/// 获取对应枚举的值
+export function getEnumdicValue(enumdiccode: string, enumdicname: string): number {
+  const objs = getEnumList(enumdiccode)
+  if (objs.length != 0) {
+    const enums = objs.filter(obj => {
+      return obj.enumdicname === enumdicname
+    })
+    return enums.filter(obj => {
+      return obj.enumdicname === enumdicname
+    })[0].enumitemname
+  }
+  return 0
 }

+ 0 - 0
GuangZuan/miniprogram/store/cache/index.ts → GuangZuan/miniprogram/stores/cache/index.ts


+ 0 - 0
GuangZuan/miniprogram/store/cache/type.ts → GuangZuan/miniprogram/stores/cache/type.ts


+ 0 - 0
GuangZuan/miniprogram/store/index.ts → GuangZuan/miniprogram/stores/index.ts


+ 1 - 8
GuangZuan/miniprogram/store/state/index.ts → GuangZuan/miniprogram/stores/state/index.ts

@@ -1,4 +1,3 @@
-import { mergeObj } from '../../utils/object/index'
 import { StateData } from './type'
 
 /**
@@ -8,7 +7,6 @@ const initData: StateData = {
     systemInfo: {
         statusBarHeight: 0,
     },
-    shoppingCart: [],
     referralCode: '',
 };
 
@@ -23,17 +21,12 @@ function useState() {
         data[key] = value;
     }
 
-    const clear = (): void => {
-        mergeObj(data, initData);
-    }
-
     return {
         get value(): StateData {
             return data;
         },
         getItem,
-        setItem,
-        clear
+        setItem
     }
 }
 

+ 0 - 3
GuangZuan/miniprogram/store/state/type.ts → GuangZuan/miniprogram/stores/state/type.ts

@@ -1,5 +1,3 @@
-import { GoodsDetail } from '../../services/api/goods/type'
-
 export interface SystemInfo {
     statusBarHeight: number
 }
@@ -9,6 +7,5 @@ export interface SystemInfo {
  */
 export interface StateData {
     systemInfo: SystemInfo;
-    shoppingCart: GoodsDetail.GoodsSku[]; // 临时购物车
     referralCode: string; // 推荐码
 }

+ 0 - 0
GuangZuan/miniprogram/store/store.ts → GuangZuan/miniprogram/stores/store.ts


+ 0 - 0
GuangZuan/miniprogram/store/utils/object/index.ts → GuangZuan/miniprogram/stores/utils/object/index.ts


+ 0 - 0
GuangZuan/miniprogram/store/utils/system/index.ts → GuangZuan/miniprogram/stores/utils/system/index.ts


+ 0 - 0
GuangZuan/miniprogram/store/utils/timer/index.ts → GuangZuan/miniprogram/stores/utils/timer/index.ts


+ 0 - 0
GuangZuan/miniprogram/store/utils/util.ts → GuangZuan/miniprogram/stores/utils/util.ts


+ 0 - 0
GuangZuan/miniprogram/store/utils/uuid/index.ts → GuangZuan/miniprogram/stores/utils/uuid/index.ts


+ 0 - 0
GuangZuan/miniprogram/store/utils/websocket/crypto.ts → GuangZuan/miniprogram/stores/utils/websocket/crypto.ts


+ 0 - 0
GuangZuan/miniprogram/store/utils/websocket/index.ts → GuangZuan/miniprogram/stores/utils/websocket/index.ts


+ 0 - 0
GuangZuan/miniprogram/store/utils/websocket/interface.ts → GuangZuan/miniprogram/stores/utils/websocket/interface.ts


+ 0 - 0
GuangZuan/miniprogram/store/utils/websocket/package.ts → GuangZuan/miniprogram/stores/utils/websocket/package.ts


+ 28 - 0
GuangZuan/miniprogram/utils/util.ts

@@ -1,3 +1,5 @@
+import moment from 'moment'
+
 export const formatTime = (date: Date) => {
   const year = date.getFullYear()
   const month = date.getMonth() + 1
@@ -19,6 +21,32 @@ export function formatDate(date: Date) {
   return `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`;
 }
 
+/**
+ * 日期格式化
+ * @param value 
+ * @param format 
+ * @returns 
+ */
+export function formatDateString(value?: string, format = 'YYYY-MM-DD HH:mm:ss') {
+  if (value) {
+      return moment(value).format(format)
+  }
+  return handleNoneValue()
+}
+
+/**
+ * 处理空值的情况
+ * @param value 值
+ * @param suffix 后缀名
+ * @returns 
+ */
+export function handleNoneValue<T>(value?: T, suffix = '') {
+  if (value == null || String(value) === '') {
+      return '--'
+  }
+  return value + suffix
+}
+
 const formatNumber = (n: number) => {
   const s = n.toString()
   return s[1] ? s : '0' + s

+ 1 - 1
GuangZuan/miniprogram/utils/websocket/crypto.ts

@@ -1,4 +1,4 @@
-import CryptoJS from 'crypto-js';
+import CryptoJS from '../../stores/utils/websocket/node_modules/crypto-js';
 
 /** AES密钥 */
 const aeskey: CryptoJS.lib.WordArray = CryptoJS.enc.Utf8.parse('F7A72DE7D6264530F01BA49BC73EB873');

+ 1 - 1
GuangZuan/project.config.json

@@ -22,7 +22,7 @@
     "preloadBackgroundData": false,
     "minified": true,
     "autoAudits": false,
-    "uglifyFileName": false,
+    "uglifyFileName": true,
     "uploadWithSourceMap": true,
     "enhance": true,
     "showShadowRootInWxmlPanel": true,

+ 71 - 1
GuangZuan/project.private.config.json

@@ -2,7 +2,7 @@
   "projectname": "GuangZuan",
   "setting": {
     "compileHotReLoad": false,
-    "bigPackageSizeSupport": false,
+    "bigPackageSizeSupport": true,
     "urlCheck": false
   },
   "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
@@ -29,6 +29,76 @@
           "query": "",
           "launchMode": "default",
           "scene": null
+        },
+        {
+          "name": "保税详情",
+          "pathName": "mHome/pages/bond/detail/index",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "出境检测",
+          "pathName": "mHome/pages/inspection/list/index",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "出境详情",
+          "pathName": "mHome/pages/inspection/detail/index",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "我的",
+          "pathName": "pages/mine/index",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "履约详情",
+          "pathName": "mMine/pages/myperformance/detail/index",
+          "query": "id=undefined",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "履约修改",
+          "pathName": "mMine/pages/myperformance/modify/index",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "违约申请",
+          "pathName": "mMine/pages/myperformance/breach/index",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "商品详情",
+          "pathName": "mHome/pages/goodsdetail/index",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "询价消息&询价详情",
+          "pathName": "mMine/pages/myorders/mydelistingapplydetail/index",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "我的履约",
+          "pathName": "mMine/pages/myperformance/list/index",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
         }
       ]
     }

+ 32 - 0
GuangZuan/typings/types/model/common.d.ts

@@ -198,4 +198,36 @@ declare namespace GuangZuan {
   interface SendMsgToMQRsp {
     
   }
+
+  /// 获取所有枚举信息-请求
+  interface AllEnumsReq {
+    /// 起始自增ID
+    autoid?: number
+  }
+
+  /// 获取所有枚举信息
+  interface AllEnums {
+    /// 自增ID
+    autoid: number
+    /// 银行服务对应值
+    bankmappedvalue: string
+    /// 所属枚举代码
+    enumdiccode: string
+    /// 所属枚举ID
+    enumdicid: number
+    /// 枚举项名称
+    enumdicname: string
+    /// 枚举项值
+    enumitemname: number
+    /// 枚举项状态 - 1.启用 2.不启用
+    enumitemstatus: number
+    /// 通用值 - [币种通用简写]
+    enumitemvalue: string
+    /// 参数1[币种:币种小数位]
+    param1: string
+    /// 参数1[币种:币种显示单位]
+    param2: string
+    /// 备注
+    remark: string
+  }
 }

+ 90 - 0
GuangZuan/typings/types/model/order.d.ts

@@ -973,6 +973,8 @@ declare namespace GuangZuan {
     buypaidamount: number
     /// 当前步骤ID
     curstepid: string
+    /// 当前步骤名称
+    curstepname: string
     /// 商品编号
     goodsno: string
     /// 溢短金额
@@ -1003,6 +1005,8 @@ declare namespace GuangZuan {
     sizedisplay: string
     /// 履约步骤类型ID - 1:买方支付 2:卖方收款 3:买方自提 4:卖方发货 5:买方确认货 6:卖方发票 7:买方确认票 8:仓单转移 9:释放卖方冻结 10:货款溢短 11:生成合同[中江] 12:运费 90:确认支付 91. 确认放行 92买方支付(直接扣款) 用于-1模板“
     steptypeid: number
+    /// 是否被选中
+    isChecked: boolean
     /// 
     warehousenamedisplay: string
     /// 
@@ -1813,4 +1817,90 @@ declare namespace GuangZuan {
     /// 会员/投资者ID推送方式 为 个人时,填写投资者ID
     userid: number
   }
+
+  /// 查询履约信息详情-请求
+  interface WrPerformancePlanStepReq {
+    /// 履约计划id(performanceplanid)
+    planid: number
+    /// 当前步骤id
+    curstepid?: number
+  }
+
+  /// 查询履约信息详情-应答
+  interface WrPerformancePlanStep {
+    /// 延期申请天数
+    delaydays: number
+    /// 品种代码
+    deliverygoodscode: string
+    /// 品种ID
+    deliverygoodsid: number
+    /// 品种名称
+    deliverygoodsname: string
+    /// 结束日期
+    endtime: string
+    /// 单位名称
+    enumdicname: string
+    /// 步骤执行方 - 1:买方 2:卖方
+    executeside: number
+    /// 处理状态 - 1:开始 2:结束 3:冻结请求 4:冻结返回成功 5:冻结返回失败 6:扣款请求 7:扣款返回成功 8:扣款返回失败 9:仓单转移请求 10:仓单转移返回成功 11:仓单转移返回失败 12:加钱请求 13:加钱返回成功 14:加钱返回失败 15:解冻仓单头寸请求 16:解冻仓单头寸返回成功 17:解冻仓单头寸返回失败 18:解冻库位请求 19:解冻库位返回成功 20:解冻库位返回失败
+    handlestatus: number
+    /// 是否自动 - 0:不自动 1:自动
+    isauto: number
+    /// 是否最后收款步骤 - 0:不是 1:是 (暂时不用,由服务自己判断是否为最后一步付款或收款)
+    islastreceivestep: number
+    /// 现货商品最小变动值
+    minivalue: number
+    /// 选择项比较串【{选择项ID}+{冒号}+选择项值 } ,逗号分隔,头尾加逗号】-- 所有选择项拼接,用于比
+    optioncompare: string
+    /// 超期天数 = 当前时间(数据库时间) - 结束日期
+    overdays: number
+    /// 履约步骤ID(131+Unix秒时间戳(10位)+xxxxxx)
+    performancestepid: string
+    /// 所属履约计划ID
+    planid: string
+    /// 实际完成金额
+    realamount: number
+    /// 关联单号
+    relatedorderid: string
+    /// 剩余天数
+    remaindays: number
+    /// 错误备注
+    remark: string
+    /// 开始日期
+    starttime: string
+    /// 步骤金额
+    stepamount: number
+    /// 距离上一步天数(分钟)
+    stepdays: number
+    /// 步骤序号
+    stepindex: number
+    /// 步骤启动类型 - 1:系统自动 2:手动
+    steplanchtype: number
+    /// 步骤备注
+    stepremark: string
+    /// 步骤状态 - 1:待开始 2:进行中 3:已完成 4:延期(进行中) 5:失败 6:自动完成 7:超时关闭
+    stepstatus: number
+    /// 履约步骤类型ID - 1:买方支付 2:卖方收款 3:买方自提 4:卖方发货 5:买方确认货 6:卖方发票 7:买方确认票 8:仓单转移 9:释放卖方冻结 10:货款溢短 11:生成合同[中江] 12:运费 90:确认支付 91. 确认放行 92买方支付(直接扣款) 用于-1模板“
+    steptypeid: number
+    /// 步骤名称
+    steptypename: string
+    /// 步骤值
+    stepvalue: number
+    /// 仓库ID
+    warehouseid: number
+    /// 仓库名称
+    warehousename: string
+    /// 仓单要素类型ID(212+Unix秒时间戳(10位)+xxxxxx)
+    wrfactortypeid: string
+    /// 仓单要素类型名称(选择项要素的名称合并显示,逗号分隔)
+    wrfactortypename: string
+    /// 现货商品代码
+    wrstandardcode: string
+    /// 现货商品ID
+    wrstandardid: number
+    /// 商品名称
+    wrstandardname: string
+    /// 商品
+    wrtypename: string
+  }
 }

+ 4 - 1
GuangZuan/typings/types/model/trade.d.ts

@@ -53,6 +53,8 @@ declare namespace GuangZuan {
     pagesize?: number,
     /// 页码
     page?: number
+    /// 执行状态 - 1:未生效 2:进行中 3:已结束
+    executestatus?: number
   }
 
   /// 查询保税服务单据
@@ -211,6 +213,8 @@ declare namespace GuangZuan {
     page?: number
     /// 每页条数
     pagesize?: number
+    /// 执行状态 - 1:未生效 2:进行中 3:已结束
+    executestatus?: number
   }
 
   /// 查询出境检测单据
@@ -295,7 +299,6 @@ declare namespace GuangZuan {
     weightrange: string
     /// 天然钻石毛坯原产地
     zsorigin: string
-    
   }
 
   /// 查询出境检测单据明细(批次信息)请求