MrShi
2024-04-02 22271e641e4505ba906c3770905b7e84e3ad8d85
wx/pages/policyDetails/policyDetails.vue
@@ -9,13 +9,14 @@
                  <text>保单号:{{info.code ? info.code : '-'}}</text>
               </view>
               <image v-if="info.statusCollect === 2" src="@/static/icon/progress_baozhangzhong@2x.png" mode="widthFix"></image>
               <image v-if="info.statusCollect === 0" src="@/static/icon/progress_daishenhe@2x.png" mode="widthFix"></image>
               <image v-if="info.statusCollect === 0 || info.statusCollect === 22" src="@/static/icon/progress_daishenhe@2x.png" mode="widthFix"></image>
               <image v-if="info.statusCollect === 7" src="@/static/icon/progress_daiqianshu@2x.png" mode="widthFix"></image>
               <image v-if="info.statusCollect === 1" src="@/static/icon/progress_daichudan@2x.png" mode="widthFix"></image>
               <image v-if="info.statusCollect === 5" src="@/static/icon/progress_shenqingtuihui@2x.png" mode="widthFix"></image>
               <image v-if="info.statusCollect === 4" src="@/static/icon/progress_yituihui@2x.png" mode="widthFix"></image>
               <image v-if="info.statusCollect === 6" src="@/static/icon/progress_yiguanbi@2x.png" mode="widthFix"></image>
               <image v-if="info.statusCollect === 6 || info.statusCollect === 25" src="@/static/icon/progress_yiguanbi@2x.png" mode="widthFix"></image>
               <image v-if="info.statusCollect === 3" src="@/static/icon/progress_yiguoqi@2x.png" mode="widthFix"></image>
               <image v-if="info.statusCollect === 26" src="@/static/icon/ic_toubaozhong.png" mode="widthFix"></image>
            </view>
            <view class="box_info_center">
               <view class="box_info_center_x"></view>
@@ -86,36 +87,61 @@
            </view>
         </view>
      </view>
      <view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 100rpx);"></view>
      <!-- 保障中 -->
      <view class="details_footer" v-if="info.statusCollect === 2">
         <u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="查看投保单"></u-button>
         <view style="width: 44rpx; height: 50rpx;"></view>
         <u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="查看保险单"></u-button>
      </view>
      <!-- 待审核 -->
      <view class="details_footer" v-if="info.statusCollect === 0">
         <!-- show = true -->
         <u-button type="primary" shape="circle" color="#437CB3" @click="open1" :plain="true" text="申请退回"></u-button>
      </view>
      <!-- 待签署 -->
      <view class="details_footer" v-if="info.statusCollect === 7">
         <u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="申请退回"></u-button>
         <view style="width: 44rpx; height: 50rpx;"></view>
         <u-button type="primary" shape="circle" color="#437CB3" @click="show1 = true" text="签署投保单"></u-button>
      </view>
      <!-- 待出账 -->
      <view class="details_footer" v-if="info.statusCollect === 1">
         <u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="申请退回"></u-button>
         <view style="width: 44rpx; height: 50rpx;"></view>
         <u-button type="primary" shape="circle" color="#437CB3" text="查看投保单"></u-button>
      </view>
      <!-- 已退回 -->
      <view class="details_footer" v-if="info.statusCollect === 4">
         <u-button type="primary" shape="circle" color="#437CB3" @click="show2 = true" :plain="true" text="关闭订单"></u-button>
         <view style="width: 44rpx; height: 50rpx;"></view>
         <u-button type="primary" shape="circle" color="#437CB3" text="再次投保"></u-button>
      </view>
      <view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 100rpx);" v-if="[2,0,7,1,4,22,25,26].includes(info.statusCollect)"></view>
      <!-- 直保 -->
      <template v-if="info.solutionType === 0">
         <!-- 保障中 -->
         <view class="details_footer" v-if="info.statusCollect === 2">
            <u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="查看投保单" @click="seePdf(info.toubaodanSignedFile.fileurlFull)"></u-button>
            <view style="width: 44rpx; height: 50rpx;"></view>
            <u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="查看保险单" @click="seePdf(info.baoxiandanFile.fileurlFull)"></u-button>
         </view>
         <!-- 待审核 -->
         <view class="details_footer" v-if="info.statusCollect === 0">
            <!-- show = true -->
            <u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="申请退回" @click="show = true"></u-button>
         </view>
         <!-- 待签署 -->
         <view class="details_footer" v-if="info.statusCollect === 7">
            <u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="申请退回" @click="show = true"></u-button>
            <view style="width: 44rpx; height: 50rpx;"></view>
             <!-- @click="show1 = true" -->
            <u-button type="primary" shape="circle" color="#437CB3" text="签署投保单" @click="signApplication"></u-button>
         </view>
         <!-- 待出账 -->
         <view class="details_footer" v-if="info.statusCollect === 1">
            <u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="申请退回" @click="show = true"></u-button>
            <view style="width: 44rpx; height: 50rpx;"></view>
            <u-button type="primary" shape="circle" color="#437CB3" text="查看投保单" @click="seePdf(info.toubaodanSignedFile.fileurlFull)"></u-button>
         </view>
         <!-- 已退回 -->
         <view class="details_footer" v-if="info.statusCollect === 4">
            <u-button type="primary" shape="circle" color="#437CB3" @click="show2 = true" :plain="true" text="关闭订单"></u-button>
         </view>
      </template>
      <!-- 委托投保 -->
      <template v-else>
         <!-- 待签署 -->
         <view class="details_footer" v-if="info.statusCollect === 7">
            <u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="签署确认书" @click="openmessage(2)"></u-button>
            <view style="width: 44rpx; height: 50rpx;"></view>
            <u-button type="primary" shape="circle" color="#437CB3" text="签署申请单" @click="openmessage(3)"></u-button>
         </view>
         <!-- 待审核/待出账 -->
         <view class="details_footer" v-if="info.statusCollect === 0 || info.statusCollect === 1">
            <u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="查看申请单" @click="seePdf(info.shenqingdanFile.fileurlFull)"></u-button>
            <view style="width: 44rpx; height: 50rpx;"></view>
            <u-button type="primary" shape="circle" color="#437CB3" text="查看确认书" @click="seePdf(info.fanganFile.fileurlFull)"></u-button>
         </view>
         <!-- 已退回 -->
         <view class="details_footer" v-if="info.statusCollect === 4">
            <u-button type="primary" shape="circle" color="#437CB3" @click="show2 = true" :plain="true" text="关闭申请"></u-button>
         </view>
         <!-- 投保中 -->
         <view class="details_footer" v-if="info.statusCollect === 26 && info.unionApplyTbdStatus !== 0">
            <u-button type="primary" shape="circle" color="#437CB3" text="签署投保单" @click="openmessage(1)"></u-button>
         </view>
      </template>
      <!-- 申请退回确认弹窗 -->
      <u-modal :show="show" title="温馨提示" :showCancelButton="true" cancelText="我再想想" confirmColor="#437CB3" @cancel="cancel" @confirm="confirm">
         确认申请退回?
@@ -128,11 +154,15 @@
      <u-modal :show="show1" title="获取验证码" :showCancelButton="true" confirmColor="#437CB3" @cancel="cancel1" @confirm="confirm1">
         <view class="code">
            <view class="code_input">
               <input type="text" placeholder="输入验证码" />
               <input type="text" v-model="code" placeholder="输入验证码" />
            </view>
            <view class="code_text">
               <text class="code_text_error">验证码错误</text>
               <text>获取验证码</text>
               <text class="code_text_error" v-if="error === 1">验证码不能为空</text>
               <text class="code_text_error" v-else-if="error === 2">验证码错误</text>
               <text v-else></text>
               <text @click="send" v-if="num === 0">获取验证码</text>
               <text v-else>{{num}}</text>
            </view>
         </view>
      </u-modal>
@@ -140,6 +170,7 @@
</template>
<script>
   import { mapState } from 'vuex'
   export default {
      data() {
         return {
@@ -150,8 +181,17 @@
            list: [],
            show: false,
            show1: false,
            show2: false
            show2: false,
            type: null,
            code: '',
            num: 0,
            error: false,
            timer: null
         };
      },
      computed: {
         ...mapState(['userInfo'])
      },
      onLoad(options) {
         this.orderId = options.orderId
@@ -162,6 +202,55 @@
         this.applyDetailPage()
      },
      methods: {
         send () {
            this.$u.api.sendSms({
               phone: this.userInfo.mobile
            }).then(res => {
               if (res.code === 200) {
                  this.num = 60
                  this.setTime()
               }
            })
         },
         setTime () {
            this.timer = setInterval(() => {
               if (this.num === 0) {
                  clearInterval(this.timer)
                  this.timer = null
                  return
               }
               this.num = this.num - 1
            }, 1000)
         },
         // 打开发送验证码弹窗
         openmessage(type) {
            this.code = ''
            clearInterval(this.timer)
            this.error = ''
            this.timer = null
            this.num = 0
            this.type = type
            this.show1 = true
         },
         signApplication() {
            uni.navigateTo({
               url: `/pages/webView/webView?url=https://web.sandbox.junziqian.com/signInfo/viewDetail?ts=1711966477502&signNo=SSN1774742154020143104&sign=GHW6wWRJfEZiXO-gXZwTezR5CYUvhwbmoWHlPsqUCLA`
            })
         },
         // 查看pdf
         seePdf(url) {
            if(!url) return;
            uni.downloadFile({
                url,
                success: function (res) {
                  var filePath = res.tempFilePath;
                  uni.openDocument({
                     filePath: filePath,
                     success: function (res) {}
                  })
                }
            })
         },
         // 获取详情
         getDetails() {
            this.$u.api.insuranceApplyById(this.orderId)
@@ -191,23 +280,6 @@
               }
            })
         },
         open1() {
            uni.navigateToMiniProgram({
                appId: 'wxf7fd282cd119885f', // 要打开的小程序的appid
                path: 'pages/index/index', // 打开的页面路径,可选
                extraData: {
                    // 需要传递给目标小程序的数据,可选
                },
                success(res) {
                    // 打开成功的回调,可选
                    console.log('打开成功');
                },
                fail(err) {
                    // 打开失败的回调,可选
                    console.log('打开失败', err);
                }
            });
         },
         IdCard(UUserCard) {
            let idcard = UUserCard.toString();
            //获取年龄
@@ -221,38 +293,111 @@
            return age;
         },
         confirm() {
            this.show = false
            this.$u.api.applyOpt({
               applyId: this.info.id,
               optIllustration: '',
               optType: 1
            }).then(res => {
               if (res.code === 200) {
                  this.getDetails()
                  this.show = false
               }
            })
         },
         cancel() {
            this.show = false
         },
         confirm1() {
            this.show1 = false
            if (!this.code) {
               this.error = 1
               return
            }
            // 签署投保单
            if (this.type === 1) {
               this.$u.api.validateCode({
                  code: this.code
               }).then(res => {
                  if (res.code === 200) {
                     this.error = ''
                     this.show1 = false
                     this.$u.api.getSignLink(this.info.id)
                        .then(url => {
                           if (url.code === 200) {
                              uni.navigateTo({
                                 url: `/pages/webView/webView?url=${url.data}`
                              })
                           }
                        })
                  } else {
                     this.error = 2
                  }
               })
            // 确认书
            } else if (this.type === 2) {
               this.$u.api.signTBQRSLink({
                  businessId: this.info.id,
                  code: this.code
               }).then(res => {
                  if (res.code === 200) {
                     this.error = ''
                     this.show1 = false
                     uni.navigateTo({
                        url: `/pages/webView/webView?url=${res.data}`
                     })
                  } else {
                     this.error = 2
                  }
               })
            // 签署申请单
            } else if (this.type === 3) {
               this.$u.api.getMemberListOnlineSignLink({
                  businessId: this.info.id,
                  code: this.code
               }).then(res => {
                  if (res.code === 200) {
                     this.error = ''
                     this.show1 = false
                     uni.navigateTo({
                        url: `/pages/webView/webView?url=${res.data}`
                     })
                  } else {
                     this.error = 2
                  }
               })
            }
         },
         cancel1() {
            this.show1 = false
         },
         confirm2() {
            this.show2 = false
            this.$u.api.applyOpt({
               applyId: this.info.id,
               optType: 2
            }).then(res => {
               if (res.code === 200) {
                  this.show2 = false
                  this.getDetails()
               }
            })
         },
         cancel2() {
            this.show2 = false
         },
         returnStyle(type) {
            if ([2].includes(type)) {
            if ([2,26].includes(type)) {
               return 'linear-gradient( 180deg, #E5F7F1 0%, rgba(255,255,255,0) 100%);'
            } else if ([0,7,1].includes(type)) {
            } else if ([0,7,1,22].includes(type)) {
               return 'linear-gradient( 180deg, #FFF2E3 0%, rgba(255,255,255,0) 100%);'
            } else if ([5,4,6,3].includes(type)) {
            } else if ([5,4,6,3,25].includes(type)) {
               return '#f7f7f7'
            }
         },
         returnStyle1(type) {
            if ([2].includes(type)) {
            if ([2,26].includes(type)) {
               return 'linear-gradient( 180deg, #E5F7F1 0%, rgba(255,255,255,0) 100%);'
            } else if ([0,7,1].includes(type)) {
            } else if ([0,7,1,22].includes(type)) {
               return 'linear-gradient( 180deg, #FFF2E3 0%, rgba(255,255,255,0) 100%);'
            } else if ([5,4,6,3].includes(type)) {
            } else if ([5,4,6,3,25].includes(type)) {
               return '#ffffff'
            }
         }