浏览代码

Merge branch 'master' into second-mini

lex-xin 4 月之前
父节点
当前提交
d96bf991f8

+ 17 - 0
miniprogram/api/login.ts

@@ -82,4 +82,21 @@ export const api_userPaymentOrderDetail = (orderNo: string) => {
     url: `/edu-app/userPaymentOrder/detail/${orderNo}`,
     method: "get"
   } as any);
+};
+
+/** 订单取消退款 */
+export const api_userPaymentCancelRefund = (userRefundOrderId: string) => {
+  return request({
+    url: `/edu-app/userPaymentOrder/cancelRefund/${userRefundOrderId}`,
+    method: "post"
+  } as any);
+};
+
+/** 订单申请退款 */
+export const api_userPaymentOrderRefundPayment = (data: any) => {
+  return request({
+    url: `/edu-app/userPaymentOrder/refundPayment`,
+    method: "post",
+    data
+  } as any);
 };

二进制
miniprogram/components/service/images/icon-close.png


+ 4 - 0
miniprogram/components/service/service.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 36 - 0
miniprogram/components/service/service.less

@@ -0,0 +1,36 @@
+/* components/service/service.wxss */
+.service-container {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 999;
+
+  .service-mask {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background-color: rgba(0, 0, 0, 0.7);
+  }
+
+  .service-section {
+    position: absolute;
+    transform: translate(-50%, -50%);
+    top: 50%;
+    left: 50%;
+    text-align: center;
+    .iconImg {
+      width: 590rpx;
+      height: 848.22rpx;
+    }
+
+    .iconClose {
+      margin-top: 40rpx;
+      width: 60rpx;
+      height: 60rpx;
+    }
+  }
+}

+ 32 - 0
miniprogram/components/service/service.ts

@@ -0,0 +1,32 @@
+// components/service/service.ts
+Component({
+
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    popShow: {
+      type: Boolean,
+      default: false
+    }
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+    onClose() {
+      this.triggerEvent('changePop', false)
+    },
+    onOpen() {
+// 
+    }
+  }
+})

+ 9 - 0
miniprogram/components/service/service.wxml

@@ -0,0 +1,9 @@
+<!--components/service/service.wxml-->
+<view class="service-container" wx:if="{{ popShow }}">
+  <view class="service-mask" bind:tap="onClose"></view>
+  <view class="service-section" bind:tap="onClose">
+    <image src="https://oss.dayaedu.com/ktyq/1732155965679.png" data-src="https://oss.dayaedu.com/ktyq/1732155965679.png" mode="aspectFill" catch:tap="onOpen" show-menu-by-longpress="true" catch:longtap="onPerview" class="iconImg"></image>
+
+    <image src="./images/icon-close.png" catch:tap="onClose" class="iconClose"></image>
+  </view>
+</view>

二进制
miniprogram/pages/index/images/icon-service.png


+ 2 - 1
miniprogram/pages/index/index.json

@@ -1,5 +1,6 @@
 {
   "usingComponents": {
-    "navigation-bar": "/components/navigation-bar/navigation-bar"
+    "navigation-bar": "/components/navigation-bar/navigation-bar",
+    "service": "/components/service/service"
   }
 }

+ 17 - 2
miniprogram/pages/index/index.less

@@ -272,11 +272,26 @@ page {
   width: 100%;
   background-color: #FFFFFF;
   box-shadow: inset 0rpx 2rpx 0rpx 0rpx #F0F0F0;
-  padding: 20rpx 32rpx 58rpx;
+  padding: 20rpx 32rpx 58rpx 32rpx;
   display: flex;
   align-items: center;
   box-sizing: border-box;
-  
+  .orders {
+    display: flex;
+    flex-direction: column;
+    margin-right: 40rpx;
+    image {
+      width: 48rpx;
+      height: 48rpx;
+    }
+    text {
+      font-weight: 500;
+      font-size: 22rpx;
+      color: #131415;
+      line-height: 32rpx;
+      text-align: center;
+    }
+  }
   .btnSection {
     flex: 1 auto;
     button {

+ 12 - 0
miniprogram/pages/index/index.ts

@@ -19,6 +19,7 @@ Page({
     list: [] as any,
     isOverSaled: false, // 是否所有商品都没有库存
     selected: {} as any,
+    showService: false,
   },
 
   /**
@@ -128,6 +129,17 @@ Page({
       url: '../orders/orders',
     })
   },
+  /** 客服 */
+  onService() {
+    this.setData({
+      showService: true
+    })
+  },
+  changePop(event: { detail: any }) {
+    this.setData({
+      showService: event.detail
+    })
+  },
   onBuyShop() {
     // 判断是否登录
     if(!this.isLogin()) {

+ 8 - 1
miniprogram/pages/index/index.wxml

@@ -82,7 +82,12 @@
       </view>
     </view>
 
-    <view class="orders" bind:tap="onOrder">
+    <view class="bottom-section">
+      <view class="orders" bind:tap="onService">
+        <image src="./images/icon-service.png" />
+        <text>客服</text>
+      </view>
+      <view class="orders" bind:tap="onOrder">
         <image src="./images/icon-order.png" />
         <!-- <text>订单</text> -->
       </view>
@@ -131,4 +136,6 @@
       </view>
     </view>
   </view>
+
+  <service popShow="{{ showService }}" bind:changePop="changePop"></service>
 </scroll-view>

+ 3 - 0
miniprogram/pages/login/login.ts

@@ -70,6 +70,7 @@ Page({
         wx.hideLoading()
         if(users.data.code === 200) {
           app.globalData.userInfo = users.data.data
+          wx.hideLoading()
           // 登录成功先跳转到首页
           wx.navigateTo({
             url: '../index/index',
@@ -81,6 +82,8 @@ Page({
         }
       } else {
         app.globalData.isLogin = false;
+        wx.hideLoading()
+        wx.showToast({ title: data.message, icon: "none" })
       }
     } catch(e) {
       console.log('error', e)

二进制
miniprogram/pages/orders/images/icon-close.png


二进制
miniprogram/pages/orders/images/icon-service.png


二进制
miniprogram/pages/orders/images/refounded.png


二进制
miniprogram/pages/orders/images/refounding.png


+ 2 - 1
miniprogram/pages/orders/order-detail.json

@@ -1,5 +1,6 @@
 {
   "usingComponents": {
-    "navigation-bar": "/components/navigation-bar/navigation-bar"
+    "navigation-bar": "/components/navigation-bar/navigation-bar",
+    "service": "/components/service/service"
   }
 }

+ 23 - 1
miniprogram/pages/orders/order-detail.less

@@ -154,6 +154,27 @@ page {
   justify-content: space-between;
   box-sizing: border-box;
 
+  .orders {
+    display: flex;
+    flex-direction: column;
+    margin-right: 40rpx;
+    image {
+      width: 48rpx;
+      height: 48rpx;
+    }
+    text {
+      font-weight: 500;
+      font-size: 22rpx;
+      color: #131415;
+      line-height: 32rpx;
+      text-align: center;
+    }
+  }
+
+  .more {
+    display: flex;
+  }
+
   .price {
     display: flex;
     align-items: center;
@@ -163,6 +184,7 @@ page {
       font-size: 28rpx;
       color: #131415;
       line-height: 40rpx;
+      padding-top: 20rpx;
     }
     .currentPrice {
       font-weight: bold;
@@ -181,7 +203,7 @@ page {
   }
 
   button {
-    margin: 0;
+    margin: 0 0 0 12rpx;
     width: auto;
     background: linear-gradient( 315deg, #FF4A00 0%, #FE8C00 100%);
     border-radius: 16rpx;

+ 20 - 15
miniprogram/pages/orders/order-detail.ts

@@ -19,6 +19,7 @@ Page({
     goodsInfo: {} as any,
     paymentType: null as any, // 支付类型
     paymentChannel: null as any,
+    showService: false,
   },
 
   /**
@@ -40,7 +41,7 @@ Page({
     try {
       // wxlite_payment_service_provider
       const { data } = await api_queryByParamName({
-        paramName: 'wxlite_payment_service_provider'
+        paramName: app.globalData.appId
       });
       if (data.code == 200) {
         const paramValue = data.data.paramValue ? JSON.parse(data.data.paramValue) : {}
@@ -100,20 +101,12 @@ Page({
         if (data.code === 200) {
           const { paymentConfig, paymentType, orderNo } = data.data
           this.onExecutePay(paymentConfig, paymentType, orderNo)
-          
-          // 测试h5页面支付流程
-          // const params = {
-          //   paymentType: 'adapay-cooleshow-6560',
-          //   pay_channel: 'wx_pub',
-          //   wxAppId: 'wxbde13f59d40cb4f2',
-          //   body: 'aaa',
-          //   price: '0.01',
-          //   orderNo,
-          //   userId: app.globalData.userInfo?.id
-          // }
-          // wx.navigateTo({
-          //   url: '../protocol/register?orderInfo=' + encodeURIComponent(JSON.stringify(params))
-          // })
+        } else if(data.code === 5200) {
+          wx.hideLoading()
+          wx.showToast({
+            title: data.message,
+            icon: 'none'
+          })
         } else {
           this.onPayError()
         }
@@ -176,6 +169,18 @@ Page({
       }
     })
   },
+  /** 客服 */
+  onService() {
+    console.log("showService")
+    this.setData({
+      showService: true
+    })
+  },
+  changePop(event: { detail: any }) {
+    this.setData({
+      showService: event.detail
+    })
+  },
   /**
    * 生命周期函数--监听页面初次渲染完成
    */

+ 15 - 8
miniprogram/pages/orders/order-detail.wxml

@@ -40,15 +40,22 @@
   </scroll-view>
 
   <view class="order-btn">
-    <view class="price">
-      <view class="desc">订单金额:</view>
-      <view class="currentPrice">
-        <text class="stuff">¥</text>
-        <text class="priceZ">{{ goodsInfo.integerPart }}</text>
-        <text class="priceF">.{{ goodsInfo.decimalPart }}</text>
+    <view class="orders" bind:tap="onService">
+        <image src="./images/icon-service.png" />
+        <text>客服</text>
       </view>
+    <view class="more">
+      <view class="price">
+        <view class="desc">订单金额:</view>
+        <view class="currentPrice">
+          <text class="stuff">¥</text>
+          <text class="priceZ">{{ goodsInfo.integerPart }}</text>
+          <text class="priceF">.{{ goodsInfo.decimalPart }}</text>
+        </view>
+      </view>
+      <button type="primary" bind:tap="onSubmit">{{ goodsInfo.orderNo ? '继续支付' : '立即支付' }}</button>
     </view>
-
-    <button type="primary" bind:tap="onSubmit">{{ goodsInfo.orderNo ? '继续支付' : '立即支付' }}</button>
   </view>
+
+  <service popShow="{{ showService }}" bind:changePop="changePop"></service>
 </view>

+ 2 - 1
miniprogram/pages/orders/order-result.json

@@ -1,5 +1,6 @@
 {
   "usingComponents": {
-    "navigation-bar": "/components/navigation-bar/navigation-bar"
+    "navigation-bar": "/components/navigation-bar/navigation-bar",
+    "service": "/components/service/service"
   }
 }

+ 92 - 0
miniprogram/pages/orders/order-result.less

@@ -172,6 +172,23 @@ page {
   justify-content: space-between;
   box-sizing: border-box;
 
+  .orders {
+    display: flex;
+    flex-direction: column;
+    margin-right: 40rpx;
+    image {
+      width: 48rpx;
+      height: 48rpx;
+    }
+    text {
+      font-weight: 500;
+      font-size: 22rpx;
+      color: #131415;
+      line-height: 32rpx;
+      text-align: center;
+    }
+  }
+
   .price {
     display: flex;
     align-items: center;
@@ -209,4 +226,79 @@ page {
     color: #FFFFFF;
     line-height: 44rpx;
   }
+}
+
+.useRefound-pop {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+
+  .useRefound-mask {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background-color: rgba(0, 0, 0, 0.6);
+  }
+  .useRefound-container {
+    position: absolute;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    width: 100%;
+    background: linear-gradient( 180deg, #FFDEE7 0%, #FFFFFF 12%, #FFFFFF 100%);
+    background-color: #fff;
+    border-radius: 32rpx 32rpx 0rpx 0rpx;
+    .icon-close {
+      position: absolute;
+      width: 38rpx;
+      height: 38rpx;
+      top: 40rpx;
+      right: 40rpx;
+    }
+    .use-title {
+      font-weight: 600;
+      font-size: 36rpx;
+      color: #131415;
+      line-height: 50rpx;
+      padding-top: 34rpx;
+      padding-bottom: 30rpx;
+      text-align: center;
+    }
+    .use-form {
+      margin: 0 40rpx;
+      background: #F7F8F9;
+      border-radius: 16rpx;
+      padding: 16rpx 16rpx 8rpx;
+      margin-bottom: 80rpx;
+      textarea {
+        height: 140rpx;
+        font-size: 30rpx;
+      }
+      .num {
+        text-align: right;
+        font-size: 26rpx;
+        color: #AAAAAA;
+        line-height: 42rpx;
+      }
+    }
+
+    .btnSection {
+      padding: 0 32rpx 58rpx;
+      button {
+        margin: 0;
+        width: 100%;
+        background: linear-gradient( 270deg, #FF204B 0%, #FE5B71 100%);
+        border-radius: 78rpx;
+        padding: 22rpx 84rpx;
+        font-weight: 500;
+        font-size: 32rpx;
+        color: #FFFFFF;
+        line-height: 44rpx;
+      }
+    }
+  }
 }

+ 98 - 5
miniprogram/pages/orders/order-result.ts

@@ -1,6 +1,6 @@
 // pages/orders/order-detail.ts
 import drawQrcode from "../../utils/weapp.qrcode.esm";
-import { api_userPaymentOrderDetail } from "../../api/login";
+import { api_userPaymentCancelRefund, api_userPaymentOrderDetail, api_userPaymentOrderRefundPayment } from "../../api/login";
 
 // 获取应用实例
 Page({
@@ -30,8 +30,13 @@ Page({
         title: '等待使用',
         content: '请尽快扫描下方二维码进行激活'
       },
+      REFUNDING: {
+        logo: './images/refounding.png',
+        title: '退款中',
+        content: '您的退款申请正在处理,预计7个工作日内完成审核'
+      },
       REFUNDED: {
-        logo: './images/wait.png',
+        logo: './images/refounded.png',
         title: '退款成功',
         content: '您的退款已成功处理,感谢您的理解和支持'
       }
@@ -41,7 +46,10 @@ Page({
     goodsInfo: {} as any,
     orderNo: "" as string,
     showCanvas: false, // 是否显示二维码
-    canvasImg: "" as string
+    canvasImg: "" as string,
+    showService: false,
+    refoundStatus: false,
+    refoundValue: "" // 退款内容
   },
 
   /**
@@ -82,6 +90,7 @@ Page({
           createTime: result.createTime,
           wechatStatus: result.wechatStatus,
           goods: tempGoods,
+          refundOrderId: result.refundOrderId,
           refundTime: result.refundTime,
           refundAmount: this.formatPrice(result.refundAmount || 0, 'ALL'),
           refundStyleStr
@@ -102,7 +111,6 @@ Page({
             })
           }
         }
-        
       }
     } catch (error) {
       console.log(error, "error");
@@ -179,7 +187,9 @@ Page({
   },
   onTimeout() {
     // 轮询10次查询订单状态
-    const { goodsInfo, timerCount, timer } = this.data
+    const goodsInfo = this.data.goodsInfo
+    const timerCount = this.data.timerCount
+    const timer = this.data.timer
     if(goodsInfo.wechatStatus === 'WAIT_PAY' && timerCount <= 10) {
       let count = timerCount
       const tempT = setTimeout(async () => {
@@ -195,5 +205,88 @@ Page({
     } else {
       clearTimeout(timer)
     }
+  },
+  /** 客服 */
+  onService() {
+    this.setData({
+      showService: true
+    })
+  },
+  changePop(event: { detail: any }) {
+    this.setData({
+      showService: event.detail
+    })
+  },
+  /** 申请退款 */
+  async cancelRefound() {
+    try {
+      const {data} = await api_userPaymentCancelRefund(this.data.goodsInfo.refundOrderId)
+      console.log(data, 'data')
+      if(data.code == 200) {
+        wx.showToast({ title: '取消退款成功', icon: 'none' })
+        wx.navigateBack({
+          delta: 1
+        })
+      } else {
+        wx.showToast({ title: data.message, icon: 'none' })
+      }
+    } catch {}
+  },
+  /** 申请退款 */
+  useRefound() {
+    this.setData({
+      refoundStatus: true,
+      refoundValue: ""
+    })
+  },
+  textareaInput(e: { detail: any }) {
+    this.setData({
+      refoundValue: e.detail.value
+    })
+  },
+  onRefoundClose() {
+    this.setData({
+      refoundStatus: false,
+      refoundValue: ''
+    })
+  },
+  async onRefound() {
+    console.log(this.data.refoundValue, 'value')
+    const refoundValue = this.data.refoundValue
+    if(!refoundValue) {
+      wx.showToast({ title: '请输入退款原因', icon: 'none' })
+      return
+    }
+    try {
+      const { goods, orderNo } = this.data.goodsInfo
+      console.log(this.data.goodsInfo, 'goodsInfo')
+      const details: any = []
+      goods.forEach((item: any) => {
+        details.push({
+          num: item.goodsNum,
+          onlyRefund: false,
+          userPaymentOrderDetailId: item.id,
+          refundAmount: item.currentPrice
+        })
+      })
+      const params = {
+        merOrderNo: orderNo,
+        serviceCharge: false,
+        refundReason: refoundValue,
+        serviceChargeFee: 0,
+        userRefundOrderDetails: details
+      }
+      const {data} = await api_userPaymentOrderRefundPayment(params)
+      if(data.code == 200) {
+        wx.showToast({ title: '申请成功', icon: 'none' })
+        setTimeout(() => {
+          wx.navigateBack({
+            delta: 1
+          })
+        }, 2000);
+      } else {
+        wx.showToast({ title: data.message, icon: 'none' })
+      }
+    } catch {}
   }
 })

+ 28 - 3
miniprogram/pages/orders/order-result.wxml

@@ -25,7 +25,7 @@
           </view>
         </view>
       </view>
-      <view class="qrcode-section" wx:if="{{ (goodsInfo.wechatStatus == 'SUCCESS' || goodsInfo.wechatStatus == 'WAIT_USE') && showCanvas }}">
+      <view class="qrcode-section" wx:if="{{ (goodsInfo.wechatStatus == 'PAID' || goodsInfo.wechatStatus == 'WAIT_USE') && showCanvas }}">
         <view class="qrcode-wrap">
           <canvas class='my_draw_canvas' data-type="image" canvas-id='canvasCode' id="canvasCode"></canvas>
         </view>
@@ -47,7 +47,7 @@
 
     <view class="order-time" wx:if="{{ goodsInfo.wechatStatus == 'REFUNDED' }}">
       <view class="order-item">
-        <view class="title">退款时间</view>
+        <view class="title">{{ goodsInfo.wechatStatus == 'REFUNDED' ? '退款时间' : '申请退款时间' }}</view>
         <view class="value">{{ goodsInfo.refundTime }}</view>
       </view>
       <view class="order-item">
@@ -62,6 +62,31 @@
   </scroll-view>
 
   <view class="order-btn" wx:if="{{ goodsInfo.wechatStatus != 'WAIT_PAY' }}">
-    <button type="primary" bind:tap="onSubmit">再来一单</button>
+    <view class="orders" bind:tap="onService">
+      <image src="./images/icon-service.png" />
+      <text>客服</text>
+    </view>
+    <button type="primary" bind:tap="useRefound" wx:if="{{ goodsInfo.wechatStatus == 'WAIT_USE' }}">申请退款</button>
+    <block wx:else>
+      <button type="primary" bind:tap="cancelRefound" wx:if="{{ goodsInfo.wechatStatus == 'REFUNDING' }}">取消退款</button>
+      <button type="primary" wx:else bind:tap="onSubmit">再来一单</button>
+    </block>
+  </view>
+
+  <service popShow="{{ showService }}" bind:changePop="changePop"></service>
+
+  <view class="useRefound-pop" wx:if="{{ refoundStatus }}">
+    <view class="useRefound-mask"></view>
+    <view class="useRefound-container">
+      <image bind:tap="onRefoundClose" class="icon-close" src="./images/icon-close.png"></image>
+      <view class="use-title">选择退款原因</view>
+      <view class="use-form">
+        <textarea placeholder="请输入您的退款原因" maxlength="50" bindinput="textareaInput" value="{{ refoundValue }}"></textarea>
+        <view class="num">{{ refoundValue.length }}/50</view>
+      </view>
+      <view class="btnSection">
+        <button type="primary" bind:tap="onRefound">申请退款</button>
+      </view>
+    </view>
   </view>
 </view>

+ 1 - 3
miniprogram/pages/orders/orders.less

@@ -33,9 +33,7 @@ page {
   display: flex;
   align-items: center;
   justify-content: space-between;
-  padding: 28rpx 50rpx 16rpx;
-  position: relative;
-  z-index: 1;
+  padding: 28rpx 30rpx 16rpx;
 
   >view {
       font-size: 32rpx;

+ 21 - 15
miniprogram/pages/orders/orders.ts

@@ -1,7 +1,6 @@
 import { api_studentOrderPage } from "../../api/login";
 // 获取应用实例
 const app = getApp<IAppOption>()
-// pages/orders/orders.ts
 Page({
 
   /**
@@ -29,10 +28,10 @@ Page({
         id: 4,
         label: "已取消",
       },
-      // {
-      //   id: 5,
-      //   label: "退款中",
-      // },
+      {
+        id: 5,
+        label: "售后",
+      },
       // {
       //   id: 6,
       //   label: "已退款",
@@ -49,7 +48,15 @@ Page({
    * 生命周期函数--监听页面加载
    */
   onLoad() {
-    this.getList()
+  },
+  onShow() {
+    this.setData({
+      page: 1,
+      maxPage: 1,
+      recordList: [],
+    }, () => {
+      this.getList()
+    })
   },
   /** 切换分类 */
   switchTab(e: { currentTarget: { dataset: { idx: any } } }) {
@@ -82,7 +89,7 @@ Page({
         openId: app.globalData.userInfo?.liteOpenid,
         page: currentPage,
         rows: this.data.rows,
-        wechatOrderStatus: tabIdx == 0 ? "" : tabIdx == 1 ? "WAIT_PAY" : tabIdx == 2 ? "WAIT_USE" : tabIdx == 3 ? "PAID" : tabIdx == 4 ? "CLOSED" : "",
+        wechatOrderStatus: tabIdx == 0 ? "" : tabIdx == 1 ? "WAIT_PAY" : tabIdx == 2 ? "WAIT_USE" : tabIdx == 3 ? "PAID" : tabIdx == 4 ? "CLOSED" : tabIdx == 5 ? 'REFUNDING' : "",
       })
       if (data.code == 200) {
         const { rows, total } = data.data;
@@ -98,7 +105,6 @@ Page({
         });
         
         const newList = this.data.recordList.concat(rows);
-        console.log(newList, "newList");
         this.setData(
           {
             recordList: newList,
@@ -122,7 +128,8 @@ Page({
       WAIT_USE: '等待使用',
       PAID: '交易完成',
       CLOSED: '交易取消',
-      REFUNDED: '退款成功'
+      REFUNDING: '售后中',
+      REFUNDED: '售后成功'
     }
     return template[status]
   },
@@ -157,11 +164,11 @@ Page({
   loadMore() {
     const currentPage = this.data.page;
     if (this.data.page >= this.data.maxPage) {
-      wx.showToast({
-        title: "没有更多数据了",
-        icon: "none",
-        duration: 1000,
-      });
+      // wx.showToast({
+      //   title: "没有更多数据了",
+      //   icon: "none",
+      //   duration: 1000,
+      // });
     } else {
       this.setData(
         {
@@ -213,7 +220,6 @@ Page({
   },
   onDetail(e: any) {
     const { dataset } = e.currentTarget
-    console.log(e)
     wx.navigateTo({
       url: '../orders/order-result?orderNo=' + dataset.orderno
     })