13 Commits ff65196e5e ... 2f7c1ae598

Author SHA1 Message Date
  xiaohaizhao 2f7c1ae598 Merge branch '红色' into 测试 1 month ago
  xiaohaizhao 3b3e4b95e1 添加逾期说明 1 month ago
  xiaohaizhao 03ad37abd0 Merge branch '蓝色' into 测试 2 months ago
  xiaohaizhao a2a4c63020 Merge branch '蓝色' into 测试 2 months ago
  xiaohaizhao 5aabaf1f54 Merge branch '红色' into 测试 2 months ago
  xiaohaizhao 30c0bfd41b Merge branch '蓝色' into 测试 2 months ago
  xiaohaizhao a9508a6ef8 Merge branch '黄色' into 测试 2 months ago
  xiaohaizhao fd2e555647 分享页面签名完成邮件提醒 2 months ago
  xiaohaizhao 5be24dd5c1 Merge branch '蓝色' into 测试 2 months ago
  xiaohaizhao 66351c0862 Merge branch '红色' into 测试 2 months ago
  xiaohaizhao 2bdfd0b10a Merge branch '黄色' into 测试 2 months ago
  xiaohaizhao b3632d09ba 优化流程 2 months ago
  xiaohaizhao 0556c2a9d7 确认单添加分享功能 2 months ago

+ 7 - 1
Eservice/components/signName/index.js

@@ -8,6 +8,10 @@ Component({
     bindData: {
       value: {},
       type: Object
+    },
+    showBut: {
+      type: Boolean,
+      value: true
     }
   },
 
@@ -36,8 +40,10 @@ Component({
           "method": "queryFileLink",
           "content": page.data.bindSignNameData
         })
+        console.log("res.data", res.data)
         this.setData({
-          originFiles: res.data
+          originFiles: res.data,
+          showBut: res.data.length == 0
         })
       }
     },

+ 1 - 1
Eservice/components/signName/index.wxml

@@ -1,5 +1,5 @@
 <view>
-  <t-button style="margin-bottom:10px" size="small" bindtap="signName">点击签字</t-button>
+  <t-button wx:if="{{showBut}}" style="margin-bottom:10px" size="small" bindtap="signName">点击签字</t-button>
   <t-upload
     wx:if="{{originFiles.length > 0}}"
     mediaType="{{['video','image']}}"

+ 69 - 16
Eservice/installConfirmBill/index.js

@@ -1,5 +1,5 @@
 const api = require("../api/api")
-
+let circulation = null;
 Page({
     data: {
         timerid: null,
@@ -9,21 +9,42 @@ Page({
             "usetype": "signature",
         },
         paidServiceAmount: 0,
-        SignName: true
+        SignName: true,
+        disabled: ""
+    },
+    onLoad(options) {
+        //分享进入
+        if (options.userMsg) {
+            this.setData({
+                disabled: " stopClick"
+            })
+        } else {
+            circulation = setInterval(() => {
+                this.updateDetail();
+            }, 5000);
+        }
+        this.data.bindSignNameData.ownerid = options.id
+        this.setData({
+            id: options.id,
+            bindSignNameData: this.data.bindSignNameData
+        })
+        getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
+        this.billData();
     },
-
     async billData() {
         const res = await api._post({
             "id": "20230211105803",
             "content": {
-                "sa_workorder_confirmationid": this.data.id
+                "sa_workorder_confirmationid": this.data.id,
+                nocache: true
             }
         })
         this.setData({
             mainData: res.data,
             sa_serviceorderid: res.data.workorder.sa_serviceorderid || "0",
             sa_orderid: res.data.workorder.sa_orderid || "0",
-            stopClick: res.data.status !== '新建' ? 'stopClick' : this.data.stopClick
+            stopClick: res.data.status !== '新建' ? 'stopClick' : this.data.stopClick,
+            isSign: res.data.attinfos.some(v => v.usetype == 'signature')
         })
         this.setInputData()
     },
@@ -178,26 +199,58 @@ Page({
             urls: [this.data.mainData.attinfos[index].url],
         })
     },
-    /**
-     * 生命周期函数--监听页面加载
-     */
-    onLoad(options) {
-        this.data.bindSignNameData.ownerid = options.id
-        this.setData({
-            id: options.id,
-            bindSignNameData: this.data.bindSignNameData
-        })
-        getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
+    onShareAppMessage() {
+        return {
+            title: '工单评价',
+            path: `Eservice/installConfirmBill/index?id=${ this.data.id }&userMsg=${JSON.stringify(wx.getStorageSync('userMsg'))}&languagecode=${JSON.stringify(wx.getStorageSync('languagecode'))}&auth=${JSON.stringify(wx.getStorageSync('auth'))}&site=${JSON.stringify(wx.getStorageSync('siteP'))}&templetList=${JSON.stringify(wx.getStorageSync('templetList'))}`
+        }
     },
     onShow() {
         this.setData({
             SignName: true
         })
-        this.billData()
+        if (this.data.mainData) this.billData()
     },
     onHide() {
         this.setData({
             SignName: false
         })
     },
+    onUnload() {
+        clearInterval(circulation)
+    },
+    async updateDetail() {
+        if (this.data.mainData.status != '新建') return;
+        const res = await api._post({
+            "id": "20230211105803",
+            "content": {
+                "sa_workorder_confirmationid": this.data.id,
+                nocache: true
+            }
+        })
+        try {
+            if (res.data.attinfos.length != this.data.mainData.attinfos.length || res.data.attinfos[0].url != this.data.mainData.attinfos[0].url) {
+                this.setData({
+                    SignName: false
+                })
+                this.setData({
+                    SignName: true
+                })
+            }
+        } catch (error) {
+            this.setData({
+                SignName: false
+            })
+            this.setData({
+                SignName: true
+            })
+        }
+        this.setData({
+            "mainData.responsescore": res.data.responsescore,
+            "mainData.attitudescore": res.data.attitudescore,
+            "mainData.attinfos": res.data.attinfos,
+            isSign: res.data.attinfos.some(v => v.usetype == 'signature')
+        })
+        this.setInputData()
+    },
 })

+ 1 - 1
Eservice/installConfirmBill/index.scss

@@ -58,7 +58,7 @@ page {
 .footer {
   display: flex;
   justify-content: space-between;
-  padding: 0 30rpx;
+  padding: 0 20rpx;
   position: fixed;
   width: 100vw;
   height: 130rpx;

+ 35 - 39
Eservice/installConfirmBill/index.wxml

@@ -1,12 +1,8 @@
-<view class="{{stopClick}}">
-    <view class="title colorInfo">
-        {{language['单据信息']||'单据信息'}}
-    </view>
+<view class="{{stopClick + disabled }}">
+    <view class="title colorInfo">{{language['单据信息']||'单据信息'}}</view>
     <t-cell title="{{language['服务单号']||'服务单号'}}" note="{{mainData.workorder.servicebillno}}" hover />
     <t-cell title="{{language['确认日期']||'确认日期'}}" note="{{mainData.workorder.createdate}}" hover />
-    <view class="title colorInfo">
-        {{language['服务信息']||'服务信息'}}
-    </view>
+    <view class="title colorInfo">{{language['服务信息']||'服务信息'}}</view>
     <t-cell title="{{language['服务分类']||'服务分类'}}" note="{{mainData.workorder.servicetype}}" hover />
     <t-cell title="{{language['应用系统']||'应用系统'}}" note="{{mainData.workorder.class1}}" hover />
     <t-cell title="{{language['客诉大类']||'客诉大类'}}" note="{{mainData.workorder.class2}}" hover />
@@ -14,15 +10,11 @@
     <t-cell title="{{language['项目名称']||'项目名称'}}" note="{{mainData.workorder.projectname}}" hover />
     <t-cell title="{{language['业务员']||'业务员'}}" note="{{mainData.workorder.saler_name}}" hover />
     <t-cell title="{{language['服务企业']||'服务企业'}}" note="{{mainData.workorder.enterprisename}}" hover />
-    <view class="title colorInfo">
-        {{language['现场联系人信息']||'现场联系人信息'}}
-    </view>
+    <view class="title colorInfo">{{language['现场联系人信息']||'现场联系人信息'}}</view>
     <t-cell title="{{language['姓名']||'姓名'}}" note="{{mainData.workorder.scenecontact}}" hover />
     <t-cell title="{{language['电话']||'电话'}}" note="{{mainData.workorder.scenecontactphonenumber}}" hover />
     <t-cell title="{{language['地址']||'地址'}}" note="{{mainData.workorder.address}}" hover />
-    <view class="title colorInfo">
-        {{language['产品']||'产品'}}
-    </view>
+    <view class="title colorInfo">{{language['产品']||'产品'}}</view>
     <t-tabs defaultValue="{{1}}" t-class="custom-tabs">
         <t-tab-panel label="{{language['产品信息']||'产品信息'}}" value="1">
             <view class="panel">
@@ -30,18 +22,16 @@
                     <product-card style="flex:1" slot="content" data="{{item}}" changeQty="{{false}}" bind:delete="deleteMaterial" bind:input="qtyChange"></product-card>
                 </card>
                 <view class="flex-align-center flex-around panel">
-                    <t-button size="extra-small" variant="primary" bind:tap="addProduct">{{language['添加产品']||'添加产品'}}</t-button>
+                    <t-button size="extra-small" variant="primary" bind:tap="addProduct">
+                        {{language['添加产品']||'添加产品'}}
+                    </t-button>
                 </view>
             </view>
         </t-tab-panel>
     </t-tabs>
-    <view class="title colorInfo">
-        {{language['客诉情况']||'客诉情况'}}
-    </view>
-    <t-textarea style="margin-bottom:1px" label="{{language['客诉内容']||'客诉内容'}}" value="{{mainData.workorder.reason}}" bind:blur="inputChange" t-class="external-class" placeholder="{{language['请输入客诉内容']||'请输入客诉内容'}}"disableDefaultPadding="{{true}}" autosize />
-    <view class="title colorInfo">
-        {{language['维修信息确认']||'维修信息确认'}}
-    </view>
+    <view class="title colorInfo">{{language['客诉情况']||'客诉情况'}}</view>
+    <t-textarea style="margin-bottom:1px" label="{{language['客诉内容']||'客诉内容'}}" value="{{mainData.workorder.reason}}" bind:blur="inputChange" t-class="external-class" placeholder="{{language['请输入客诉内容']||'请输入客诉内容'}}" disableDefaultPadding="{{true}}" autosize />
+    <view class="title colorInfo">{{language['维修信息确认']||'维修信息确认'}}</view>
     <t-cell title="{{language['是否需要拆卸配件或整拆']||'是否需要拆卸配件或整拆'}}" note="{{node1}}" hover />
     <t-textarea style="margin-bottom:1px" label="{{language['维修方案及周期']||'维修方案及周期'}}" value="{{node2}}" data-name="与现场协商确认维修方案" bind:blur="inputChange" t-class="external-class" placeholder="{{language['维修方案']||'维修方案'}}" disableDefaultPadding="{{true}}" autosize />
     <t-cell title="{{language['是否有偿服务']||'是否有偿服务'}}" note="{{paidServiceAmount > 0?(language['是']||'是'):(language['否']||'否')}}" hover />
@@ -49,23 +39,20 @@
     <t-textarea style="margin-bottom:1px" label="{{language['实施内容']||'实施内容'}}" value="{{node3}}" data-name="实施内容" bind:blur="inputChange" t-class="external-class" placeholder="{{language['实施内容']||'实施内容'}}" disableDefaultPadding="{{true}}" autosize />
     <t-textarea style="margin-bottom:1px" label="{{language['服务测试内容描述']||'服务测试内容描述'}}" value="{{node4}}" data-name="与现场协商试运行" bind:blur="inputChange" t-class="external-class" placeholder="{{language['服务测试内容描述']||'服务测试内容描述'}}" disableDefaultPadding="{{true}}" autosize />
     <t-textarea style="margin-bottom:1px" label="{{language['现场交代事项']||'现场交代事项'}}" value="{{node5}}" data-name="现场交代事项" bind:blur="inputChange" t-class="external-class" placeholder="{{language['现场交代事项']||'现场交代事项'}}" disableDefaultPadding="{{true}}" autosize />
-
-    <view class="title colorInfo">
-        {{language['评价']||'评价'}}
-    </view>
+</view>
+<view class="{{stopClick}}">
+    <view class="title colorInfo">{{language['评价']||'评价'}}</view>
     <view class="demo-rate">
         <view class="demo-rate__title">{{language['反应速度']||'反应速度'}}</view>
-        <!-- 实心评分,设置属性:variant-->
+        <!-- 实心评分,设置属性:variant -->
         <t-rate value="{{mainData.responsescore}}" data-name="responsescore" variant="filled" bind:change="onChange" />
     </view>
     <view class="demo-rate">
         <view class="demo-rate__title">{{language['配合态度']||'配合态度'}}</view>
-        <!-- 实心评分,设置属性:variant-->
+        <!-- 实心评分,设置属性:variant -->
         <t-rate value="{{mainData.attitudescore}}" data-name="attitudescore" variant="filled" bind:change="onChange" />
     </view>
-    <view class="title colorInfo">
-        {{language['客户签字']||'客户签字'}}
-    </view>
+    <view class="title colorInfo">{{language['客户签字']||'客户签字'}}</view>
     <card>
         <view style="flex:1" slot="content">
             <!-- <upload id="upload"></upload> -->
@@ -73,15 +60,24 @@
         </view>
     </card>
 </view>
-
-<view style="height: 130rpx;" />
-<view class="footer">
-    <view class="count">
-    </view>
+<view style="height: 150rpx;" />
+<view class="footer" wx:if="{{!disabled}}">
+    <view class="count"></view>
     <view class="but-box">
-        <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="createImage">{{language['单据预览']||'单据预览'}}</van-button>
-        <van-button custom-class='but' wx:else bind:click="checkImage">{{language['查看单据']||'查看单据'}}</van-button>
-        <van-button custom-class='but delete' wx:if="{{mainData.status == '新建'}}" bind:click="delete">{{language['删除']||'删 除'}}</van-button>
-        <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="submit">{{language['提交']||'提 交'}}</van-button>
+        <van-button custom-class='but' open-type='share' wx:if="{{mainData.status == '新建'}}">
+            {{language['转发客户']||'转发客户'}}
+        </van-button>
+        <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="createImage">
+            {{language['单据预览']||'单据预览'}}
+        </van-button>
+        <van-button custom-class='but' wx:else bind:click="checkImage">
+            {{language['查看单据']||'查看单据'}}
+        </van-button>
+        <van-button custom-class='but delete' wx:if="{{mainData.status == '新建'}}" bind:click="delete">
+            {{language['删除']||'删 除'}}
+        </van-button>
+        <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="submit">
+            {{language['提交']||'提 交'}}
+        </van-button>
     </view>
 </view>

+ 71 - 18
Eservice/materielConfirmBill/index.js

@@ -1,4 +1,5 @@
 const api = require("../api/api")
+let circulation = null;
 
 Page({
   data: {
@@ -10,18 +11,38 @@ Page({
       "usetype": "signature",
     },
     SignName: true,
-    paidServiceAmount: 0
+    paidServiceAmount: 0,
+    disabled: ""
+  },
+  onLoad(options) {
+    //分享进入
+    if (options.userMsg) {
+      this.setData({
+        disabled: " stopClick"
+      })
+    } else {
+      circulation = setInterval(() => {
+        this.updateDetail();
+      }, 5000);
+    }
+    this.data.bindSignNameData.ownerid = options.id
+    this.setData({
+      stopClick: options.class,
+      id: options.id,
+      bindSignNameData: this.data.bindSignNameData
+    })
+    getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
+    this.billData();
   },
   async billData() {
     const res = await api._post({
       "id": "20230211105803",
       "content": {
-        "sa_workorder_confirmationid": this.data.id
+        "sa_workorder_confirmationid": this.data.id,
+        nocache: true
       }
     })
-
     let ishave = false
-
     res.data.confirmationcontent.forEach(item => {
       if (item.nextTreatmentTime) {
         ishave = true
@@ -61,10 +82,10 @@ Page({
         res.data.confirmationcontent.push(e)
       }, this)
     }
-    console.log(res.data)
     this.setData({
       mainData: res.data,
-      stopClick: res.data.status !== '新建' ? 'stopClick' : this.data.stopClick
+      stopClick: res.data.status !== '新建' ? 'stopClick' : this.data.stopClick,
+      isSign: res.data.attinfos.some(v => v.usetype == 'signature')
     })
     this.setInputData()
   },
@@ -204,27 +225,59 @@ Page({
       url: '/Eservice/webView/index',
     })
   },
-  onLoad(options) {
-    this.data.bindSignNameData.ownerid = options.id
-    this.setData({
-      stopClick: options.class,
-      id: options.id,
-      bindSignNameData: this.data.bindSignNameData
-    })
-    getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
-  },
-  onReady() {
-
+  onShareAppMessage() {
+    return {
+      title: '工单评价',
+      path: `Eservice/materielConfirmBill/index?id=${ this.data.id }&userMsg=${JSON.stringify(wx.getStorageSync('userMsg'))}&languagecode=${JSON.stringify(wx.getStorageSync('languagecode'))}&auth=${JSON.stringify(wx.getStorageSync('auth'))}&site=${JSON.stringify(wx.getStorageSync('siteP'))}&templetList=${JSON.stringify(wx.getStorageSync('templetList'))}`
+    }
   },
   onShow() {
     this.setData({
       SignName: true
     })
-    this.billData()
+    if (this.data.mainData) this.billData()
   },
   onHide() {
     this.setData({
       SignName: false
     })
   },
+  onUnload() {
+    clearInterval(circulation)
+  },
+  async updateDetail() {
+    if (this.data.mainData.status != '新建') return;
+    const res = await api._post({
+      "id": "20230211105803",
+      "content": {
+        "sa_workorder_confirmationid": this.data.id,
+        nocache: true
+      }
+    })
+    try {
+      if (res.data.attinfos.length != this.data.mainData.attinfos.length || res.data.attinfos[0].url != this.data.mainData.attinfos[0].url) {
+        this.setData({
+          SignName: false
+        })
+        this.setData({
+          SignName: true
+        })
+      }
+    } catch (error) {
+      this.setData({
+        SignName: false
+      })
+      this.setData({
+        SignName: true
+      })
+    }
+    this.setData({
+      "mainData.responsescore": res.data.responsescore,
+      "mainData.attitudescore": res.data.attitudescore,
+      "mainData.satisfaction": res.data.satisfaction,
+      "mainData.attinfos": res.data.attinfos,
+      isSign: res.data.attinfos.some(v => v.usetype == 'signature')
+    })
+    this.setInputData()
+  },
 })

+ 1 - 3
Eservice/materielConfirmBill/index.scss

@@ -56,12 +56,10 @@ page {
   border: 0;
 }
 
-
-
 .footer {
   display: flex;
   justify-content: space-between;
-  padding: 0 30rpx;
+  padding: 0 20rpx;
   position: fixed;
   width: 100vw;
   height: 130rpx;

+ 26 - 31
Eservice/materielConfirmBill/index.wxml

@@ -1,41 +1,30 @@
-<!--pages/trainConfirmBill/index.wxml-->
-<view class="{{stopClick}}">
-  <view class="title colorInfo">
-    {{language['单据信息']||'单据信息'}}
-  </view>
+<view class="{{stopClick + disabled }}">
+  <view class="title colorInfo">{{language['单据信息']||'单据信息'}}</view>
   <t-cell title="{{language['服务单号']||'服务单号'}}" note="{{mainData.workorder.servicebillno}}" hover />
   <t-cell title="{{language['项目名称']||'项目名称'}}" note="{{mainData.workorder.projectname}}" hover />
   <t-cell title="{{language['是否有偿服务']||'是否有偿服务'}}" note="{{paidServiceAmount > 0?(language['是']||'是'):(language['否']||'否')}}" hover />
   <t-cell title="是否质保期内" note="{{inqualityguaranteeperiod ==1 ?(language['是']||'是'):(language['否']||'否')}}" hover />
   <t-cell title="申请原因" note="{{mainData.reason}}" hover />
-
-  <view class="title colorInfo">
-    {{language['客户信息']||'客户信息'}}
-  </view>
+  <view class="title colorInfo">{{language['客户信息']||'客户信息'}}</view>
   <t-cell title="{{language['联系企业']||'联系企业'}}" note="{{mainData.workorder.abbreviation}}" hover />
   <t-cell title="{{language['联系方式']||'联系方式'}}" note="{{mainData.workorder.scenecontactphonenumber}}" hover />
   <t-cell title="{{language['地址']||'地址'}}" note="{{mainData.workorder.province + mainData.workorder.city + mainData.workorder.county + mainData.workorder.address}}" hover />
-
-  <view class="title colorInfo">
-    {{language['应用信息']||'应用信息'}}
-  </view>
+  <view class="title colorInfo">{{language['应用信息']||'应用信息'}}</view>
   <t-cell title="{{language['应用系统']||'应用系统'}}" note="{{mainData.workorder.class1}}" hover />
   <t-cell title="{{language['客诉大类']||'客诉大类'}}" note="{{mainData.workorder.class2}}" hover />
   <t-cell title="{{language['服务方式']||'服务方式'}}" note="{{mainData.workorder.type}}" hover />
-
   <view class="title colorInfo" wx:if="{{mainData.trainertitems.length}}">
     {{language['产品']||'产品'}}
   </view>
   <card style="margin-top:10px" wx:for="{{mainData.trainertitems}}" wx:key="itemid">
     <product-card model='3' style="flex:1" slot="content" data="{{item}}" changeQty="{{false}}" />
   </card>
-
-  <view class="title colorInfo">
-    {{language['评价']||'评价'}}
-  </view>
+</view>
+<view class="{{stopClick}}">
+  <view class="title colorInfo">{{language['评价']||'评价'}}</view>
   <view class="demo-rate">
     <view class="demo-rate__title">{{language['反应速度']||'反应速度'}}</view>
-    <!-- 实心评分,设置属性:variant-->
+    <!-- 实心评分,设置属性:variant -->
     <t-rate value="{{mainData.responsescore}}" data-name="responsescore" variant="filled" bind:change="onChange" />
   </view>
   <view class="demo-rate">
@@ -46,10 +35,7 @@
     <view class="demo-rate__title">{{language['满意态度']||'满意态度'}}</view>
     <t-rate value="{{mainData.satisfaction}}" data-name="satisfaction" variant="filled" bind:change="onChange" />
   </view>
-
-  <view class="title colorInfo">
-    {{language['客户签字']||'客户签字'}}
-  </view>
+  <view class="title colorInfo">{{language['客户签字']||'客户签字'}}</view>
   <card>
     <view style="flex:1" slot="content">
       <!-- <upload id="upload"></upload> -->
@@ -57,15 +43,24 @@
     </view>
   </card>
 </view>
-
 <view style="height: 150rpx;" />
-<view class="footer">
-  <view class="count">
-  </view>
+<view class="footer" wx:if="{{!disabled}}">
+  <view class="count"></view>
   <view class="but-box">
-    <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="createImage">{{language['单据预览']||'单据预览'}}</van-button>
-    <van-button custom-class='but' wx:else bind:click="checkImage">{{language['查看单据']||'查看单据'}}</van-button>
-    <van-button custom-class='but delete' wx:if="{{mainData.status == '新建'}}" bind:click="delete">{{language['删除']||'删 除'}}</van-button>
-    <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="submit">{{language['提交']||'提 交'}}</van-button>
+    <van-button custom-class='but' open-type='share' wx:if="{{mainData.status == '新建'}}">
+      {{language['转发客户']||'转发客户'}}
+    </van-button>
+    <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="createImage">
+      {{language['单据预览']||'单据预览'}}
+    </van-button>
+    <van-button custom-class='but' wx:else bind:click="checkImage">
+      {{language['查看单据']||'查看单据'}}
+    </van-button>
+    <van-button custom-class='but delete' wx:if="{{mainData.status == '新建'}}" bind:click="delete">
+      {{language['删除']||'删 除'}}
+    </van-button>
+    <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="submit">
+      {{language['提交']||'提 交'}}
+    </van-button>
   </view>
 </view>

+ 73 - 27
Eservice/serviceConfirmBill/index.js

@@ -1,4 +1,5 @@
-const api = require("../api/api")
+const api = require("../api/api");
+let circulation = null;
 
 Page({
   data: {
@@ -9,19 +10,38 @@ Page({
       "ownerid": 0,
       "usetype": "signature",
     },
-    paidServiceAmount: 0
+    paidServiceAmount: 0,
+    disabled: ""
+  },
+  onLoad(options) {
+    //分享进入
+    if (options.userMsg) {
+      this.setData({
+        disabled: " stopClick"
+      })
+    } else {
+      circulation = setInterval(() => {
+        this.updateDetail();
+      }, 5000);
+    }
+    this.data.bindSignNameData.ownerid = options.id
+    this.setData({
+      stopClick: options.class || '',
+      id: options.id,
+      bindSignNameData: this.data.bindSignNameData
+    })
+    getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
+    this.billData()
   },
-
   async billData() {
     const res = await api._post({
       "id": "20230211105803",
       "content": {
-        "sa_workorder_confirmationid": this.data.id
+        "sa_workorder_confirmationid": this.data.id,
+        nocache: true
       }
     })
-
     let ishave = false
-
     res.data.confirmationcontent.forEach(item => {
       if (item.nextTreatmentTime) {
         ishave = true
@@ -61,10 +81,10 @@ Page({
         res.data.confirmationcontent.push(e)
       }, this)
     }
-    console.log(res.data)
     this.setData({
       mainData: res.data,
-      stopClick: res.data.status !== '新建' ? 'stopClick' : this.data.stopClick
+      stopClick: res.data.status !== '新建' ? 'stopClick' : this.data.stopClick,
+      isSign: res.data.attinfos.some(v => v.usetype == 'signature')
     })
     this.setInputData()
   },
@@ -111,9 +131,6 @@ Page({
       "content": this.data.mainData
     })
   },
-
-
-
   // 改变评分
   onChange(e) {
     this.data.mainData[e.currentTarget.dataset.name] = e.detail.value
@@ -122,7 +139,6 @@ Page({
     });
     this.updateBill()
   },
-
   async submit() {
     this.createImage(true);
     const res = await api._post({
@@ -138,7 +154,6 @@ Page({
       })
       this.billData()
     }
-
   },
   async delete() {
     const res = await api._post({
@@ -198,7 +213,7 @@ Page({
   },
   createImage(active = false) {
     let token = wx.getStorageSync('userMsg').token
-    let parentid = wx.getStorageSync('siteP').appfolderid
+    let parentid = this.data.appfolderid || wx.getStorageSync('siteP').appfolderid
     let url = `${getApp().globalData.http.baseUrl}/yosweb/#/printTable?token=${token}&parentid=${parentid}&ownerid=${this.data.mainData.sa_workorder_confirmationid}${active==true?'&action=1':''}`
     this.setData({
       url: url
@@ -207,27 +222,58 @@ Page({
       url: '/Eservice/webView/index',
     })
   },
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad(options) {
-    this.data.bindSignNameData.ownerid = options.id
-    this.setData({
-      stopClick: options.class,
-      id: options.id,
-      bindSignNameData: this.data.bindSignNameData
-    })
-    getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
+  onShareAppMessage() {
+    return {
+      title: '工单评价',
+      path: `Eservice/serviceConfirmBill/index?id=${ this.data.id }&userMsg=${JSON.stringify(wx.getStorageSync('userMsg'))}&languagecode=${JSON.stringify(wx.getStorageSync('languagecode'))}&auth=${JSON.stringify(wx.getStorageSync('auth'))}&site=${JSON.stringify(wx.getStorageSync('siteP'))}&templetList=${JSON.stringify(wx.getStorageSync('templetList'))}`
+    }
   },
   onShow() {
     this.setData({
       SignName: true
     })
-    this.billData()
+    if (this.data.mainData) this.billData()
   },
   onHide() {
     this.setData({
       SignName: false
     })
-  }
+  },
+  onUnload() {
+    clearInterval(circulation)
+  },
+  async updateDetail() {
+    if (this.data.mainData.status != '新建') return;
+    const res = await api._post({
+      "id": "20230211105803",
+      "content": {
+        "sa_workorder_confirmationid": this.data.id,
+        nocache: true
+      }
+    })
+    try {
+      if (res.data.attinfos.length != this.data.mainData.attinfos.length || res.data.attinfos[0].url != this.data.mainData.attinfos[0].url) {
+        this.setData({
+          SignName: false
+        })
+        this.setData({
+          SignName: true
+        })
+      }
+    } catch (error) {
+      this.setData({
+        SignName: false
+      })
+      this.setData({
+        SignName: true
+      })
+    }
+    this.setData({
+      "mainData.responsescore": res.data.responsescore,
+      "mainData.attitudescore": res.data.attitudescore,
+      "mainData.attinfos": res.data.attinfos,
+      isSign: res.data.attinfos.some(v => v.usetype == 'signature')
+    })
+    this.setInputData()
+  },
 })

+ 2 - 1
Eservice/serviceConfirmBill/index.scss

@@ -61,7 +61,7 @@ page {
 .footer {
   display: flex;
   justify-content: space-between;
-  padding: 0 30rpx;
+  padding: 0 20rpx;
   position: fixed;
   width: 100vw;
   height: 130rpx;
@@ -91,6 +91,7 @@ page {
       font-weight: bold;
       color: #FFFFFF;
       margin-left: 8rpx;
+      
     }
 
     .delete {

+ 6 - 5
Eservice/serviceConfirmBill/index.wxml

@@ -1,5 +1,4 @@
-<!--pages/trainConfirmBill/index.wxml-->
-<view class="{{stopClick}}">
+<view class="{{stopClick + disabled }}">
   <view class="title colorInfo">
     {{language['单据信息']||'单据信息'}}
   </view>
@@ -35,7 +34,9 @@
   <t-textarea style="margin-bottom:1px" label="{{language['事项说明']||'事项说明'}}" value="{{explain}}" data-name="explain" bind:blur="inputChange" t-class="external-class" placeholder="{{language['原因及处理措施']||'原因及处理措施'}}" disableDefaultPadding="{{true}}" autosize />
   <t-cell title="{{language['希望下次回访时间']||'希望下次回访时间'}}" data-name="nextRebackTime" note="{{nextRebackTime}}" bind:click="showNextTimePicker" hover />
   <t-textarea style="margin-bottom:1px" label="{{language['文字说明']||'文字说明'}}" value="{{text}}" data-name="text" bind:blur="inputChange" t-class="external-class" placeholder="{{language['文字说明']||'请输入文字说明'}}" disableDefaultPadding="{{true}}" autosize />
+</view>
 
+<view class="{{stopClick}}">
   <view class="title colorInfo">
     {{language['评价']||'评价'}}
   </view>
@@ -54,17 +55,17 @@
   </view>
   <card>
     <view style="flex:1" slot="content">
-      <!-- <upload id="upload"></upload> -->
-      <sign-name wx:if="{{SignName}}" bindData="{{bindSignNameData}}"></sign-name>
+      <sign-name wx:if="{{SignName}}" showBut="{{!isSign}}" bindData="{{bindSignNameData}}"></sign-name>
     </view>
   </card>
 </view>
 
 <view style="height: 150rpx;" />
-<view class="footer">
+<view class="footer" wx:if="{{!disabled}}">
   <view class="count">
   </view>
   <view class="but-box">
+    <van-button custom-class='but' open-type='share' wx:if="{{mainData.status == '新建'}}">{{language['转发客户']||'转发客户'}}</van-button>
     <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="createImage">{{language['单据预览']||'单据预览'}}</van-button>
     <van-button custom-class='but' wx:else bind:click="checkImage">{{language['查看单据']||'查看单据'}}</van-button>
     <van-button custom-class='but delete' wx:if="{{mainData.status == '新建'}}" bind:click="delete">{{language['删除']||'删 除'}}</van-button>

+ 17 - 3
Eservice/signName/index.js

@@ -41,7 +41,7 @@ Page({
    * 生命周期函数--监听页面加载
    */
   onLoad: function (options) {
-    getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
+    getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
     this.setData({
       id: options.id
     })
@@ -53,8 +53,8 @@ Page({
         this.data.canvasWidth = rect.width * this.data.dpr
         this.data.canvasHeight = rect.height * this.data.dpr
         this.setData({
-          canvasWidth:this.data.canvasWidth,
-          canvasHeight:this.data.canvasHeight
+          canvasWidth: this.data.canvasWidth,
+          canvasHeight: this.data.canvasHeight
         })
       })
       .exec()
@@ -520,6 +520,9 @@ Page({
       })
       return
     }
+    wx.showLoading({
+      mask: true
+    })
     // console.log('===============')
     const self = this
     this.data.offCtx.rotate(-90 * Math.PI / 180);
@@ -570,6 +573,7 @@ Page({
       },
       fail(res) {
         console.log(res)
+        wx.hideLoading()
       }
     })
   },
@@ -593,6 +597,7 @@ Page({
           that.data.attachmentids.push(rs.data.attachmentids[0])
           that.filebindData()
         }).catch(err => {
+          wx.hideLoading()
           console.log(err)
         })
       }
@@ -610,6 +615,15 @@ Page({
         "attachmentids": this.data.attachmentids
       }
     })
+    wx.hideLoading()
     wx.navigateBack()
+    if (pages.data.disabled) api._post({
+      "id": 2025032710574302,
+      "content": {
+        "sa_workorderid": pages.data.bindSignNameData.ownerid
+      },
+    }).then(res => {
+      console.log("邮件通知", res)
+    })
   },
 })

+ 71 - 16
Eservice/trainConfirmBill/index.js

@@ -1,24 +1,44 @@
 const api = require("../api/api")
+let circulation = null;
 
 Page({
-
-    /**
-     * 页面的初始数据
-     */
     data: {
         timerid: null,
         bindSignNameData: {
             "ownertable": "sa_workorder_confirmation",
             "ownerid": 0,
             "usetype": "signature",
+        },
+        SignName: true,
+        paidServiceAmount: 0,
+        disabled: ""
+    },
+    onLoad(options) {
+        //分享进入
+        if (options.userMsg) {
+            this.setData({
+                disabled: " stopClick"
+            })
+        } else {
+            circulation = setInterval(() => {
+                this.updateDetail();
+            }, 5000);
         }
+        this.data.bindSignNameData.ownerid = options.id
+        this.setData({
+            stopClick: options.class,
+            id: options.id,
+            bindSignNameData: this.data.bindSignNameData
+        })
+        getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
+        this.billData();
     },
-
     async billData() {
         const res = await api._post({
             "id": "20230211105803",
             "content": {
-                "sa_workorder_confirmationid": this.data.id
+                "sa_workorder_confirmationid": this.data.id,
+                nocache: true
             }
         })
         console.log('详情', res)
@@ -26,7 +46,8 @@ Page({
             mainData: res.data,
             sa_serviceorderid: res.data.workorder.sa_serviceorderid || '0',
             sa_orderid: res.data.workorder.sa_orderid || '0',
-            stopClick: res.data.status !== '新建' ? 'stopClick' : this.data.stopClick
+            stopClick: res.data.status !== '新建' ? 'stopClick' : this.data.stopClick,
+            isSign: res.data.attinfos.some(v => v.usetype == 'signature')
         })
         this.setInputData()
     },
@@ -217,24 +238,58 @@ Page({
             url: '/Eservice/webView/index',
         })
     },
-    onLoad(options) {
-        this.data.bindSignNameData.ownerid = options.id
-        this.setData({
-            stopClick: options.class,
-            id: options.id,
-            bindSignNameData: this.data.bindSignNameData
-        })
-        getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
+    onShareAppMessage() {
+        return {
+            title: '工单评价',
+            path: `Eservice/trainConfirmBill/index?id=${ this.data.id }&userMsg=${JSON.stringify(wx.getStorageSync('userMsg'))}&languagecode=${JSON.stringify(wx.getStorageSync('languagecode'))}&auth=${JSON.stringify(wx.getStorageSync('auth'))}&site=${JSON.stringify(wx.getStorageSync('siteP'))}&templetList=${JSON.stringify(wx.getStorageSync('templetList'))}`
+        }
     },
     onShow() {
         this.setData({
             SignName: true
         })
-        this.billData()
+        if (this.data.mainData) this.billData()
     },
     onHide() {
         this.setData({
             SignName: false
         })
     },
+    onUnload() {
+        clearInterval(circulation)
+    },
+    async updateDetail() {
+        if (this.data.mainData.status != '新建') return;
+        const res = await api._post({
+            "id": "20230211105803",
+            "content": {
+                "sa_workorder_confirmationid": this.data.id,
+                nocache: true
+            }
+        })
+        try {
+            if (res.data.attinfos.length != this.data.mainData.attinfos.length || res.data.attinfos[0].url != this.data.mainData.attinfos[0].url) {
+                this.setData({
+                    SignName: false
+                })
+                this.setData({
+                    SignName: true
+                })
+            }
+        } catch (error) {
+            this.setData({
+                SignName: false
+            })
+            this.setData({
+                SignName: true
+            })
+        }
+        this.setData({
+            "mainData.responsescore": res.data.responsescore,
+            "mainData.attitudescore": res.data.attitudescore,
+            "mainData.attinfos": res.data.attinfos,
+            isSign: res.data.attinfos.some(v => v.usetype == 'signature')
+        })
+        this.setInputData()
+    },
 })

+ 1 - 1
Eservice/trainConfirmBill/index.scss

@@ -59,7 +59,7 @@ page {
 .footer {
   display: flex;
   justify-content: space-between;
-  padding: 0 30rpx;
+  padding: 0 20rpx;
   position: fixed;
   width: 100vw;
   height: 130rpx;

+ 36 - 37
Eservice/trainConfirmBill/index.wxml

@@ -1,28 +1,19 @@
-<!--pages/trainConfirmBill/index.wxml-->
-<view class="{{stopClick}}">
-  <view class="title colorInfo">
-    {{language['单据信息']||'单据信息'}}
-  </view>
+<view class="{{stopClick + disabled }}">
+  <view class="title colorInfo">{{language['单据信息']||'单据信息'}}</view>
   <t-cell title="{{language['服务单号']||'服务单号'}}" note="{{mainData.workorder.servicebillno}}" hover />
   <t-cell title="{{language['确认日期']||'确认日期'}}" note="{{mainData.workorder.createdate}}" hover />
-  <view class="title colorInfo">
-    {{language['服务信息']||'服务信息'}}
-  </view>
+  <view class="title colorInfo">{{language['服务信息']||'服务信息'}}</view>
   <t-cell title="{{language['服务分类']||'服务分类'}}" note="{{mainData.workorder.servicetype}}" hover />
   <t-cell title="{{language['应用系统']||'应用系统'}}" note="{{mainData.workorder.class1}}" hover />
   <t-cell title="{{language['工单负责人']||'工单负责人'}}" note="{{mainData.workorder.projectleader}}" hover />
   <t-cell title="{{language['项目名称']||'项目名称'}}" note="{{mainData.workorder.projectname}}" hover />
   <t-cell title="{{language['业务员']||'业务员'}}" note="{{mainData.workorder.saler_name}}" hover />
   <t-cell title="{{language['服务企业']||'服务企业'}}" note="{{mainData.workorder.enterprisename}}" hover />
-  <view class="title colorInfo">
-    {{language['现场联系人信息']||'现场联系人信息'}}
-  </view>
+  <view class="title colorInfo">{{language['现场联系人信息']||'现场联系人信息'}}</view>
   <t-cell title="{{language['姓名']||'姓名'}}" note="{{mainData.workorder.scenecontact}}" hover />
   <t-cell title="{{language['电话']||'电话'}}" note="{{mainData.workorder.scenecontactphonenumber}}" hover />
   <t-cell title="{{language['地址']||'地址'}}" note="{{mainData.workorder.address}}" hover />
-  <view class="title colorInfo">
-    {{language['培训信息']||'培训信息'}}
-  </view>
+  <view class="title colorInfo">{{language['培训信息']||'培训信息'}}</view>
   <t-tabs defaultValue="{{0}}" t-class="custom-tabs">
     <t-tab-panel label="{{language['培训人员']||'培训人员'}}" value="0">
       <view class="panel">
@@ -30,7 +21,9 @@
           <menber-card style="flex:1" slot="content" data="{{item}}" bind:delete="deleteMenber"></menber-card>
         </card>
         <view class="flex-align-center flex-around panel">
-          <t-button size="extra-small" variant="primary" bind:tap="addTrainers">{{language['添加人员']||'添加人员'}}</t-button>
+          <t-button size="extra-small" variant="primary" bind:tap="addTrainers">
+            {{language['添加人员']||'添加人员'}}
+          </t-button>
         </view>
       </view>
     </t-tab-panel>
@@ -40,32 +33,30 @@
           <product-card style="flex:1" slot="content" data="{{item}}" changeQty="{{true}}" bind:delete="deleteMaterial" bind:input="qtyChange"></product-card>
         </card>
         <view class="flex-align-center flex-around panel">
-          <t-button size="extra-small" variant="primary" bind:tap="addProduct">{{language['添加物料']||'添加物料'}}</t-button>
+          <t-button size="extra-small" variant="primary" bind:tap="addProduct">
+            {{language['添加物料']||'添加物料'}}
+          </t-button>
         </view>
       </view>
     </t-tab-panel>
   </t-tabs>
-  <view class="title colorInfo">
-    {{language['工序内容填写']||'工序内容填写'}}
-  </view>
+  <view class="title colorInfo">{{language['工序内容填写']||'工序内容填写'}}</view>
   <t-textarea style="margin-bottom:1px" label="{{language['现场培训内容']||'现场培训内容'}}" data-name="现场培训内容" value="{{trainerContent}}" bind:blur="inputChange" t-class="external-class" placeholder="{{language['现场培训内容']||'请输入现场培训内容'}}" disableDefaultPadding="{{true}}" autosize />
   <t-textarea label="{{language['现场互动及测试培训效果']||'现场互动及测试培训效果'}}" data-name="现场互动及测试培训效果" value="{{trainerResult}}" bind:blur="inputChange" t-class="external-class" placeholder="{{language['现场互动及测试培训效果']||'请输入现场互动及测试培训效果'}}" disableDefaultPadding="{{true}}" autosize />
-  <view class="title colorInfo">
-    {{language['评价']||'评价'}}
-  </view>
+</view>
+<view class="{{stopClick}}">
+  <view class="title colorInfo">{{language['评价']||'评价'}}</view>
   <view class="demo-rate">
     <view class="demo-rate__title">{{language['反应速度']||'反应速度'}}</view>
-    <!-- 实心评分,设置属性:variant-->
+    <!-- 实心评分,设置属性:variant -->
     <t-rate value="{{mainData.responsescore}}" data-name="responsescore" variant="filled" bind:change="onChange" />
   </view>
   <view class="demo-rate">
     <view class="demo-rate__title">{{language['配合态度']||'配合态度'}}</view>
-    <!-- 实心评分,设置属性:variant-->
+    <!-- 实心评分,设置属性:variant -->
     <t-rate value="{{mainData.attitudescore}}" data-name="attitudescore" variant="filled" bind:change="onChange" />
   </view>
-  <view class="title colorInfo">
-    {{language['客户签字']||'客户签字'}}
-  </view>
+  <view class="title colorInfo">{{language['客户签字']||'客户签字'}}</view>
   <card>
     <view style="flex:1" slot="content">
       <!-- <upload id="upload"></upload> -->
@@ -73,16 +64,24 @@
     </view>
   </card>
 </view>
-
-
-<view style="height: 130rpx;" />
-<view class="footer">
-  <view class="count">
-  </view>
+<view style="height: 150rpx;" />
+<view class="footer" wx:if="{{!disabled}}">
+  <view class="count"></view>
   <view class="but-box">
-    <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="createImage">{{language['单据预览']||'单据预览'}}</van-button>
-    <van-button custom-class='but' wx:else bind:click="checkImage">{{language['查看单据']||'查看单据'}}</van-button>
-    <van-button custom-class='but delete' wx:if="{{mainData.status == '新建'}}" bind:click="delete">{{language['删除']||'删 除'}}</van-button>
-    <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="submit">{{language['提交']||'提 交'}}</van-button>
+    <van-button custom-class='but' open-type='share' wx:if="{{mainData.status == '新建'}}">
+      {{language['转发客户']||'转发客户'}}
+    </van-button>
+    <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="createImage">
+      {{language['单据预览']||'单据预览'}}
+    </van-button>
+    <van-button custom-class='but' wx:else bind:click="checkImage">
+      {{language['查看单据']||'查看单据'}}
+    </van-button>
+    <van-button custom-class='but delete' wx:if="{{mainData.status == '新建'}}" bind:click="delete">
+      {{language['删除']||'删 除'}}
+    </van-button>
+    <van-button custom-class='but' wx:if="{{mainData.status == '新建'}}" bind:click="submit">
+      {{language['提交']||'提 交'}}
+    </van-button>
   </view>
 </view>

+ 8 - 0
Eservice/workOrderDetail/index.scss

@@ -13,6 +13,14 @@ page {
   margin-right: 5px;
 }
 
+.tijiao {
+  color: #67C23A !important;
+}
+
+.xinjian {
+  color: #3874f6 !important;
+}
+
 .flex-column-between {
   height: 100%;
   display: flex;

+ 1 - 1
Eservice/workOrderDetail/index.wxml

@@ -85,7 +85,7 @@
       <view style="padding:10px;text-align:center;color:#999" wx:if="{{confirmBills.length === 0}}">
         {{language['暂无更多服务确认单']||'暂无更多服务确认单'}}
       </view>
-      <t-cell wx:for="{{confirmBills}}" wx:key="sa_workorder_confirmationid" note="{{language[item.status]||item.status}}" title="{{item.confirmationno}}" data-item="{{item}}" hover arrow bind:click="toConfirmBill"></t-cell>
+      <t-cell wx:for="{{confirmBills}}" wx:key="sa_workorder_confirmationid" t-class-note="{{item.status=='提交'?'tijiao':'xinjian'}}" note="{{language[item.status]||item.status}}" title="{{item.confirmationno}}" data-item="{{item}}" hover arrow bind:click="toConfirmBill"></t-cell>
     </t-tab-panel>
   </t-tabs>
 </view>

+ 6 - 4
app.js

@@ -6,20 +6,22 @@ import {
 } from './utils/language';
 App({
     onLaunch(options) {
+        console.log("options.query", options.query)
         //小程序跳转进入
         if (options.query.userMsg) {
             let userMsg = JSON.parse(options.query.userMsg)
             wx.removeStorageSync('userMsg');
+            wx.setStorageSync('userMsg', userMsg);
+            console.log("userMsg", wx.getStorageSync('userMsg'))
+            wx.setStorageSync('userrole', userMsg.usertype == 1 ? '业务员' : '经销商');
             wx.removeStorageSync('auth');
             wx.removeStorageSync('userauth');
+            wx.setStorageSync('auth', JSON.parse(options.query.auth));
             wx.removeStorageSync('userrole');
             wx.removeStorageSync('templetList');
-            wx.setStorageSync('userMsg', userMsg);
-            wx.setStorageSync('userrole', userMsg.usertype == 1 ? '业务员' : '经销商');
-            wx.setStorageSync('auth', JSON.parse(options.query.auth));
+            wx.removeStorageSync('siteP');
             wx.setStorageSync('siteP', JSON.parse(options.query.site));
             wx.setStorageSync('templetList', JSON.parse(options.query.templetList));
-            console.log("options.query.templetList", options.query.templetList)
             wx.removeStorageSync('languagecode');
             wx.setStorageSync('languagecode', options.query.languagecode);
             //获取用户权限 

+ 4 - 0
packageA/receivables/detail.js

@@ -55,6 +55,10 @@ Page({
       title: '逾期金额',
       width: 200,
       key: 'overdueamount'
+    }, {
+      title: '逾期说明',
+      width: 400,
+      key: 'overdueexplanation'
     }],
     sumWidth: 0,
     "content": {

+ 18 - 1
project.private.config.json

@@ -7,6 +7,23 @@
   },
   "libVersion": "3.7.1",
   "condition": {
-    "miniprogram": {}
+    "miniprogram": {
+      "list": [
+        {
+          "name": "Eservice/installConfirmBill/index",
+          "pathName": "Eservice/installConfirmBill/index",
+          "query": "id=691",
+          "scene": null,
+          "launchMode": "default"
+        },
+        {
+          "name": "Eservice/trainConfirmBill/index",
+          "pathName": "Eservice/trainConfirmBill/index",
+          "query": "id=690",
+          "launchMode": "default",
+          "scene": null
+        }
+      ]
+    }
   }
 }