item.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <template>
  2. <MeScroll :up="up" :down="down" @up="upFn" :fixed="false" @down="downFn" @init="initMeScroll">
  3. <scroll-view :scroll-y="true">
  4. <card @deleteItem="deleteItem" :list="list" @cancel="cancel"></card>
  5. </scroll-view>
  6. </MeScroll>
  7. </template>
  8. <script>
  9. import MeScroll from '@/comps/mescroll-uni/mescroll-uni.vue'
  10. import card from './card.vue'
  11. var app=getApp()
  12. export default {
  13. components:{
  14. MeScroll,card
  15. },
  16. props: {
  17. refresh:Boolean,
  18. type: Number,
  19. i: Number,
  20. item:Object
  21. },
  22. watch:{
  23. load() {
  24. this.mescroll.resetUpScroll()
  25. },
  26. },
  27. data() {
  28. return {
  29. isInit: false, // 是否初始化
  30. list: [], // 列表数据
  31. mescroll: null, // mescroll 对象
  32. // 上拉配置参数
  33. up: {
  34. noMoreSize: 4,
  35. auto: true,
  36. page: {
  37. page: 0,
  38. size: 10
  39. }
  40. },
  41. // 下拉配置参数
  42. down: {
  43. use: true,
  44. auto: false
  45. }
  46. }
  47. },
  48. watch:{
  49. type(val) {
  50. if(!this.isInit && val === this.i) {
  51. this.mescroll.resetUpScroll()
  52. }
  53. }
  54. },
  55. mounted() {
  56. if(!this.isInit && this.i === 0) {
  57. this.mescroll.resetUpScroll()
  58. }
  59. },
  60. methods: {
  61. /**
  62. * @param {Object} item 删除订单
  63. */
  64. deleteItem(item){
  65. let that=this
  66. app.globalData.twoFailHint("确定要取消该工单?",function(){
  67. //删除状态
  68. item.status=-1
  69. let operation='estateRepair/addEstateRepair'
  70. app.globalData.postRequest(item, operation, function (res) {
  71. if (res.data.add_result==true) {
  72. app.globalData.oneFailHint("删除成功成功");
  73. that.mescroll.resetUpScroll()
  74. }else{
  75. app.globalData.oneFailHint(res.data.add_result);
  76. }
  77. });
  78. })
  79. },
  80. /**
  81. * 取消订单
  82. * @param {Object} item 订单实体
  83. */
  84. cancel(item){
  85. let that=this
  86. app.globalData.twoFailHint("确定要取消该工单?",function(){
  87. item.handleStatus=-1
  88. let operation='estateRepair/addEstateRepair'
  89. app.globalData.postRequest(item, operation, function (res) {
  90. if (res.data.add_result==true) {
  91. app.globalData.oneFailHint("取消成功");
  92. that.mescroll.resetUpScroll()
  93. }else{
  94. app.globalData.oneFailHint(res.data.add_result);
  95. }
  96. });
  97. })
  98. },
  99. /**
  100. * @param {Object} mescroll 初始化组件
  101. */
  102. initMeScroll(mescroll) {
  103. this.mescroll = mescroll
  104. },
  105. /**
  106. * @param {Object} mescroll 上拉回调
  107. */
  108. upFn(mescroll) {
  109. let that=this
  110. let data={
  111. "page":{
  112. current:mescroll.num,
  113. size:mescroll.size
  114. },
  115. handleStatus:this.item.value
  116. }
  117. //已处理,待评价
  118. if (this.item.value==2) {
  119. //已处理
  120. data.handleStatus=1
  121. //待评价
  122. data.estimateStatus=0
  123. }
  124. let operation='estateRepair/estateRepairList'
  125. try{
  126. app.globalData.postRequest(data, operation, function (res) {
  127. let estateRepairList=res.data.estateRepairList
  128. let length=estateRepairList.records.length
  129. let data=estateRepairList.records
  130. mescroll.endBySize(length, estateRepairList.total);
  131. if(mescroll.num == 1) that.list = []; //如果是第一页需手动制空列表
  132. that.list=that.list.concat(data); //追加新数据
  133. });
  134. }catch(e){
  135. mescroll.endErr();
  136. }
  137. },
  138. /**
  139. * 下拉回调
  140. * */
  141. downFn(mescroll) {
  142. setTimeout(()=>{
  143. this.list=[]
  144. this.mescroll.resetUpScroll()
  145. uni.showToast({
  146. title:"刷新成功",
  147. icon:"none",
  148. duration:2000
  149. })
  150. },1500)
  151. },
  152. }
  153. }
  154. </script>
  155. <style lang="scss" scoped>
  156. view{
  157. box-sizing: border-box;
  158. }
  159. </style>