index.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <template>
  2. <zj-page-layout
  3. :isScroll="true"
  4. :refresherTriggered="refresherTriggered"
  5. @refresherrefresh="refresherrefresh"
  6. :hasFooter="true"
  7. >
  8. <view class="myInsurance">
  9. <view class="myInsuranceCart" v-for="(item, index) in list" :key="index" @click="gopage(item)">
  10. <view class="myInsuranceCartbuju xiangxia">
  11. <view class="">
  12. {{ item.policyName }}
  13. </view>
  14. <view class="" style="color: red">
  15. {{ { BZZ: '保障中', YSX: '失效', DSX: '待生效' }[item.status] }}
  16. </view>
  17. </view>
  18. <view class="">
  19. <view class="xiangxia"> 所属网点:{{ item.websitName }} </view>
  20. <view class="xiangxia"> 保单类型:{{ { AC: '意外险', EM: '雇主险', IN: '工伤险' }[item.type] }} </view>
  21. <view class="xiangxia"> 保单编号:{{ item.policyNumber }} </view>
  22. <view class="xiangxia"> 保单金额:{{ item.payAmount }} </view>
  23. <view class="xiangxia">
  24. 有效时间:{{ item.startTime ? item.startTime.split(' ')[0] : '' }}~{{
  25. item.endTime ? item.endTime.split(' ')[0] : ''
  26. }}
  27. </view>
  28. </view>
  29. </view>
  30. </view>
  31. <Loading :loadStatus="loadStatus" :dataList="list" />
  32. <zjDialogPicker
  33. ref="websitDialog"
  34. :isShow="isShowWebsitDialog"
  35. :multiple="false"
  36. :styleType="2"
  37. :title="'选择对应网点购买保险'"
  38. :list="baoxiandangqianxianxitishi"
  39. :keyName="'websitName'"
  40. @cancel="isShowWebsitDialog = false"
  41. @confirm="confirmWebsitDialog"
  42. >
  43. </zjDialogPicker>
  44. <template slot="footer" v-if="!!baoxiandangqianxianxitishi.length">
  45. <view class="bottom-container" style="box-sizing: border-box; padding: 20rpx">
  46. <u-button text="去购买" shape="circle" type="primary" @click="isShowWebsitDialog = true"> </u-button>
  47. </view>
  48. </template>
  49. </zj-page-layout>
  50. </template>
  51. <script>
  52. import zjDialogPicker from '@/components/zj-dialog/zj-dialog-picker.vue'
  53. export default {
  54. components: {
  55. zjDialogPicker
  56. },
  57. data() {
  58. return {
  59. loadStatus: 0,
  60. list: [],
  61. websitId: '',
  62. baoxiandangqianxianxitishi: [],
  63. isShowWebsitDialog: false,
  64. refresherTriggered: false
  65. }
  66. },
  67. onShow() {
  68. uni.showLoading({
  69. title: '加载中'
  70. })
  71. this.loadStatus = 1
  72. this.$api.post('/worker/myPolicy', { pageNum: 1, pageSize: -1 }).then(res => {
  73. this.$nextTick(() => {
  74. uni.hideLoading()
  75. })
  76. this.loadStatus = 2
  77. this.list = res?.data?.records || []
  78. })
  79. this.$api.post('/worker/remind').then(res => {
  80. this.baoxiandangqianxianxitishi = res.data
  81. })
  82. },
  83. methods: {
  84. // 触发下拉刷新
  85. refresherrefresh(e) {
  86. this.refresherTriggered = true
  87. this.loadStatus = 1
  88. this.$api.post('/worker/myPolicy', { pageNum: 1, pageSize: -1 }).then(res => {
  89. this.$nextTick(() => {
  90. this.refresherTriggered = false
  91. })
  92. this.loadStatus = 2
  93. this.list = res?.data?.records || []
  94. })
  95. },
  96. confirmWebsitDialog(e) {
  97. this.isShowWebsitDialog = false
  98. this.$navToPage({
  99. url:
  100. '/packageEnter/pages/insurance/myInsuranceBuy/index?websitId=' +
  101. this?.baoxiandangqianxianxitishi?.[e[0]]?.websitId
  102. })
  103. },
  104. gopage(item) {
  105. this.$navToPage({
  106. url: `/packageEnter/pages/insurance/policyParticulars/index?id=${item.id}`
  107. })
  108. }
  109. }
  110. }
  111. </script>
  112. <style lang="scss" scoped>
  113. .myInsurance {
  114. box-sizing: border-box;
  115. padding: 20rpx;
  116. padding-top: 40rpx;
  117. .myInsuranceCart {
  118. width: 100%;
  119. height: auto;
  120. box-sizing: border-box;
  121. padding: 20rpx;
  122. margin-bottom: 20rpx;
  123. box-shadow: 2.8px 2.8px 2.2px rgba(0, 0, 0, 0.02), 6.7px 6.7px 5.3px rgba(0, 0, 0, 0.028),
  124. 12.5px 12.5px 10px rgba(0, 0, 0, 0.035), 22.3px 22.3px 17.9px rgba(0, 0, 0, 0.042),
  125. 41.8px 41.8px 33.4px rgba(0, 0, 0, 0.05), 100px 100px 80px rgba(0, 0, 0, 0.07);
  126. border-radius: 10rpx;
  127. .myInsuranceCartbuju {
  128. display: flex;
  129. justify-content: space-between;
  130. }
  131. .xiangxia {
  132. margin-bottom: 10rpx;
  133. }
  134. }
  135. }
  136. </style>