list.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <template>
  2. <view>
  3. <van-sticky>
  4. <view class="top-wrap">
  5. <view @click="handleGoSearch">
  6. <van-search disabled use-left-icon-slot shape="round" placeholder="客户名称/社会信用码">
  7. <view slot="left-icon">
  8. <image src="../static/search-icon.png" mode="aspectFill" class="search-icon"></image>
  9. </view>
  10. </van-search>
  11. </view>
  12. <van-tabs id="tabs" :active="status" title-active-color="#3385FF" color="#3385FF" @change="typeChange">
  13. <van-tab :title="item" :name="item" v-for="item in tabList" :key="item"></van-tab>
  14. </van-tabs>
  15. </view>
  16. </van-sticky>
  17. <van-empty description="暂无数据" :image="require('@/static/empty.png')" v-if="finished&&list.length===0"/>
  18. <view class="list" v-else>
  19. <approve-list-item v-for="item in list" :key="item.id" :data="item"></approve-list-item>
  20. </view>
  21. </view>
  22. </template>
  23. <script>
  24. import {apiContractApproveList,apiContractList} from '@/api/approve/contract.js'
  25. import approveListItem from '../components/approveListItem.vue'
  26. export default{
  27. components:{
  28. approveListItem
  29. },
  30. data() {
  31. return {
  32. tabList:[],
  33. status: '待审批',
  34. list:[],
  35. page:1,
  36. finished:false,
  37. }
  38. },
  39. onLoad() {
  40. this.initTabs()//初始化tab 栏
  41. },
  42. onShow() {
  43. this.$nextTick(()=>{
  44. this.selectComponent('#tabs').resize();// 解决初始渲染 vant tab 底部条
  45. })
  46. this.page=1
  47. this.list=[]
  48. if(this.status==='待提交'){
  49. this.getContractList()
  50. }else{
  51. this.getList()
  52. }
  53. },
  54. onPullDownRefresh() {
  55. this.page=1
  56. this.finished=false
  57. this.list=[]
  58. if(this.status==='待提交'){
  59. this.getContractList()
  60. }else{
  61. this.getList()
  62. }
  63. setTimeout(()=>{
  64. uni.stopPullDownRefresh()
  65. },1500)
  66. },
  67. onReachBottom() {
  68. if(this.finished) return
  69. this.page++
  70. if(this.status==='待提交'){
  71. this.getContractList()
  72. }else{
  73. this.getList()
  74. }
  75. },
  76. methods: {
  77. //初始化tab
  78. initTabs(){
  79. // ficc销售 权益销售
  80. const RoleTypeCode=this.$store.state.userInfo.RoleTypeCode
  81. if(RoleTypeCode==='ficc_seller'||RoleTypeCode==='rai_seller'||RoleTypeCode==='ficc_group'||RoleTypeCode==='rai_group'){
  82. this.tabList=['待审批','处理中','已审批','已签回','待提交','已撤回','已作废']
  83. this.status='待审批'
  84. }
  85. // ficc管理员 权益管理员 合规compliance
  86. if(RoleTypeCode==='ficc_admin'||RoleTypeCode==='rai_admin'||RoleTypeCode==='compliance'||RoleTypeCode==='admin'){
  87. this.tabList=['待审批','处理中','已审批','已签回','已作废']
  88. this.status='待审批'
  89. }
  90. },
  91. // 去搜索
  92. handleGoSearch() {
  93. uni.navigateTo({
  94. url: '../search/index?type=contract'
  95. })
  96. },
  97. typeChange(e){
  98. this.status=e.detail.name
  99. this.page=1
  100. this.finished=false
  101. this.list=[]
  102. if(this.status==='待提交'){
  103. this.getContractList()
  104. }else{
  105. this.getList()
  106. }
  107. },
  108. //获取列表数据
  109. async getList(){
  110. const res=await apiContractApproveList({
  111. CurrentIndex:this.page,
  112. Status:this.status,
  113. Keyword:''
  114. })
  115. if(res.code===200){
  116. if(!res.data.List||res.data.List.length===0){
  117. this.finished=true
  118. }else{
  119. let arr=res.data.List.map(item=>{
  120. let backTime=''
  121. if(item.Status==='已撤回'){
  122. backTime=item.ModifyTime
  123. }
  124. return {
  125. title:item.CompanyName,
  126. saller:item.SellerName,
  127. submitTime:this.status==='处理中'?item.ModifyTime:item.CreateTime,
  128. approveTime:item.ApproveTime,
  129. checkBackTime:item.CheckBackFileTime,
  130. backTime:backTime,
  131. cancelTime:item.InvalidTime,
  132. status:item.Status,
  133. applyType:item.ApplyContent,
  134. id:item.ContractApprovalId,
  135. ContractApprovalId:item.ContractApprovalId,
  136. ContractApprovalRecordId:item.ContractApprovalRecordId,
  137. ContractId:item.ContractId,
  138. type:'contract',
  139. }
  140. })
  141. this.list=[...this.list,...arr]
  142. }
  143. }
  144. },
  145. // 获取合同列表
  146. async getContractList(){
  147. const res=await apiContractList({
  148. CurrentIndex:this.page,
  149. Status:this.status,
  150. Keyword:''
  151. })
  152. if(res.code===200){
  153. if(res.data.Paging.IsEnd){
  154. this.finished=true
  155. }
  156. let arr=res.data.List.map(item=>{
  157. let backTime=''
  158. if(item.Status==='已撤回'){
  159. backTime=item.ModifyTime
  160. }
  161. return {
  162. title:item.CompanyName,
  163. saller:item.SellerName,
  164. submitTime:item.CreateTime,
  165. approveTime:item.ApproveTime,
  166. checkBackTime:item.CheckBackFileTime,
  167. backTime:backTime,
  168. cancelTime:item.InvalidTime,
  169. status:item.Status,
  170. applyType:'生成新模板',
  171. id:item.ContractId,
  172. ContractApprovalId:0,
  173. ContractApprovalRecordId:0,
  174. ContractId:item.ContractId,
  175. ModifyTime:item.ModifyTime,
  176. type:'contract',
  177. }
  178. })
  179. this.list=[...this.list,...arr]
  180. }
  181. }
  182. },
  183. }
  184. </script>
  185. <style lang="scss">
  186. .search-icon {
  187. width: 40rpx;
  188. height: 40rpx;
  189. display: block;
  190. position: relative;
  191. top: 4rpx;
  192. margin-right: 10rpx;
  193. }
  194. .list{
  195. padding: 20rpx;
  196. }
  197. </style>