history.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. <template>
  2. <view class="history-container">
  3. <view class="tabs">
  4. <view class="tab" :class="tabIdx===1?'active':''" @click="tabclick(1)">安全巡检</view>
  5. <view class="tab" :class="tabIdx===2?'active':''" @click="tabclick(2)">隐患记录</view>
  6. <view class="tab" :class="tabIdx===3?'active':''" @click="tabclick(3)">满意度评价</view>
  7. </view>
  8. <view class="item-list" v-if="total>0">
  9. <view class="check" v-if="tabIdx===1">
  10. <uni-list :border="true">
  11. <uni-list-item v-for="(item,index) in items" :key="index"
  12. :title="item.checklistTitle"
  13. :note="item.recordTime"
  14. :rightText="item.accountName"
  15. @click="showDangerDetail(item)"
  16. clickable/>
  17. </uni-list>
  18. </view>
  19. <view class="check" v-if="tabIdx===2">
  20. <uni-list :border="true">
  21. <view class="item" v-for="(item,index) in items" :key="index">
  22. <uni-list-chat
  23. :avatar-circle="true"
  24. :title="item.dangerTitle"
  25. :avatar="item.scenePhoto"
  26. :note="item.curAccountName"
  27. clickable @click="linkTo(item)">
  28. <view class="chat-custom-right">
  29. <text class="chat-custom-text">{{item.dangerDeadLine}}</text>
  30. <view class="bottom">
  31. <text class="status" :class="'status'+item.status">{{dangerStatus(item.status)}}</text>
  32. <text class="level" :class="'level-'+item.dangerLevel">{{dangerLevelFilter(item.dangerLevel)}}</text>
  33. </view>
  34. </view>
  35. </uni-list-chat>
  36. </view>
  37. </uni-list>
  38. </view>
  39. </view>
  40. <template v-else>
  41. <view class="isEmpty" >
  42. <p class="word">没有数据 ^_^ </p>
  43. </view>
  44. </template>
  45. </view>
  46. </template>
  47. <script>
  48. import {getDangerByPage} from '@/api/aqpt/dangerApi.js'
  49. import {getchecklistByPage} from '@/api/openApi.js'
  50. export default {
  51. data() {
  52. return {
  53. conditions:{
  54. page:1,
  55. limit:15,
  56. },
  57. total:0,
  58. items:[],
  59. tabIdx:1
  60. }
  61. },
  62. onShow() {
  63. this.init()
  64. },
  65. onLoad() {
  66. uni.$on('type',(tabIdx)=>{
  67. if(tabIdx){
  68. this.tabclick(tabIdx)
  69. }
  70. })
  71. },
  72. methods: {
  73. dangerStatus(i) {
  74. if (i >= 0) {
  75. const strs = ['待提交','待评审','待整改','待验收','已完成']
  76. return strs[i]
  77. } else {
  78. return '已撤销'
  79. }
  80. },
  81. dangerLevelFilter(val){
  82. let levels=['未知','一般隐患','重大隐患'];
  83. return levels[val]
  84. },
  85. init(){
  86. this.items=[]
  87. this.total=0
  88. this.conditions={
  89. limit:15,
  90. page:1
  91. }
  92. this.getData()
  93. this.clearDetail()
  94. },
  95. tabclick(tabIdx){
  96. this.tabIdx=tabIdx
  97. this.init()
  98. },
  99. getData(){
  100. if(this.tabIdx===1){
  101. getchecklistByPage(this.conditions).then((res)=>{
  102. let items=JSON.parse(JSON.stringify(this.items))
  103. this.items=items.concat(res.data)
  104. this.total=res.total
  105. })
  106. }
  107. if(this.tabIdx===2){
  108. getDangerByPage(this.conditions).then((res)=>{
  109. let items=JSON.parse(JSON.stringify(this.items))
  110. this.items=items.concat(res.data)
  111. this.total=res.total
  112. })
  113. }
  114. },
  115. changePageNumber({type,current}){
  116. this.conditions.page=current
  117. this.getData()
  118. },
  119. clearDetail(){
  120. if(uni.getStorageSync('detail-info')){
  121. uni.removeStorageSync('detail-info')
  122. }
  123. },
  124. linkTo(item){
  125. uni.setStorageSync('detail-info',item)
  126. uni.navigateTo({
  127. url:'/pages/history/detail/detail'
  128. })
  129. },
  130. showDangerDetail(item){
  131. uni.navigateTo({
  132. url:`/pages/app_views/checkList/index/index?type=history&id=${item.checklistId}&recordId=${item.recordId}`
  133. })
  134. },
  135. isEmpty(val){
  136. if(val!=="undefined"&&val!==undefined&&val!==""&&val!==null){
  137. return false
  138. }
  139. return true
  140. }
  141. },
  142. onUnload() {
  143. uni.$off('type')
  144. },
  145. onPullDownRefresh() {
  146. this.init()
  147. },
  148. onReachBottom() {
  149. if(this.total>=this.conditions.page*this.conditions.limit){
  150. this.conditions.page++
  151. this.getData()
  152. }
  153. }
  154. }
  155. </script>
  156. <style lang="scss" scoped>
  157. .history-container{
  158. padding-bottom: 100rpx;
  159. .tabs{
  160. padding: 10rpx 0;
  161. .tab{
  162. display: inline-block;
  163. padding: 10rpx 15rpx;
  164. background-color: #6e94ce;
  165. color: #fff;
  166. margin-left: 20rpx;
  167. &.active{
  168. background-color: #3384FF;
  169. }
  170. }
  171. }
  172. }
  173. .isEmpty{
  174. width: 100%;
  175. height: 100vh;
  176. background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNzkgODYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjM4Ljg1JSIgeTE9IjAlIiB4Mj0iNjEuMTUlIiB5Mj0iMTAwJSI+PHN0b3Agc3RvcC1jb2xvcj0iI0ZDRkNGRCIgb2Zmc2V0PSIwJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNFRUVGRjMiIG9mZnNldD0iMTAwJSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMCUiIHkxPSI5LjUlIiB5Mj0iOTAuNSUiPjxzdG9wIHN0b3AtY29sb3I9IiNGQ0ZDRkQiIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRTlFQkVGIiBvZmZzZXQ9IjEwMCUiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJjIiBkPSJNMCAwaDE3djM2SDB6Ii8+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZD0iTTM5LjUgODZDNjEuMzE1IDg2IDc5IDgzLjkxIDc5IDgxLjMzM1M1Ny4zMTUgNzggMzUuNSA3OCAwIDc4Ljc1NiAwIDgxLjMzM0MwIDgzLjkxMSAxNy42ODUgODYgMzkuNSA4NnoiIGZpbGw9IiNGN0Y4RkMiLz48cGF0aCBmaWxsPSIjRTVFN0U5IiBkPSJNMTMgNDVoNDBMNDIgNThIMnpNNjUuNTUxIDI5Ljk4bC0xNi4zMTMtNy42MDctMi44NDEtNS43MzggMTYuMzEzIDcuNjA3eiIvPjxwYXRoIGZpbGw9IiNFREVFRjIiIGQ9Ik02NS41NTEgMjkuOThsLTM0LjQ0LTE2LjA1OS0xNS4yMTQgMzIuNjI3IDM0LjQ0IDE2LjA2eiIvPjxwYXRoIGZpbGw9InVybCgjYSkiIHRyYW5zZm9ybT0icm90YXRlKDI1IDI3LjQ0NiAtNDMuNDE2KSIgZD0iTTM4IDdoMTd2MzZIMzh6Ii8+PHBhdGggZmlsbD0iI0Y4RjlGQiIgZD0iTTE1LjcwNSA2LjczN2wxNS40MDcgNy4xODQgMTUuNjQ2LS40MjctMTUuNDA3LTcuMTg1eiIvPjxwYXRoIGZpbGw9InVybCgjYikiIGQ9Ik0xMyA0NWg0MHYzNkgxM3oiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MyA0NSkiPjxtYXNrIGlkPSJkIiBmaWxsPSIjZmZmIj48dXNlIHhsaW5rOmhyZWY9IiNjIi8+PC9tYXNrPjx1c2UgZmlsbD0iI0UwRTNFOSIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTcgMCkiIHhsaW5rOmhyZWY9IiNjIi8+PHBhdGggZmlsbD0iI0Q1RDdERSIgbWFzaz0idXJsKCNkKSIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjQgMCkiIGQ9Ik03IDBoMTdsLTQgMTgtMjAtMnoiLz48L2c+PHBhdGggZmlsbD0iI0Y4RjlGQiIgZD0iTTcwIDQ1SDUzbDkgMTNoMTd6Ii8+PC9nPjwvc3ZnPg==);
  177. background-size: contain;
  178. background-repeat: no-repeat;
  179. position: relative;
  180. background-color: #fff;
  181. /* #ifndef MP-WEIXIN */
  182. height: calc( 100vh - 100px);
  183. /* #endif */
  184. .word{
  185. width: 100%;
  186. text-align: center;
  187. position: absolute;
  188. top: 80vh;
  189. left: 0;
  190. color: #999;
  191. font-size: 28rpx;
  192. letter-spacing: 2rpx;
  193. }
  194. }
  195. .item-list{
  196. .chat-custom-right{
  197. .chat-custom-text{
  198. font-size: 24rpx;
  199. font-family: PingFang SC;
  200. font-weight: 400;
  201. line-height: 28rpx;
  202. color: #666666;
  203. }
  204. .bottom{
  205. text-align: right;
  206. padding-top: 10rpx;
  207. .status{
  208. font-size: 28rpx;
  209. line-height: 1;
  210. display: inline-block;
  211. border: 1px solid #13ce66;
  212. color: #13ce66;
  213. padding: 8rpx 10rpx;
  214. border-radius: 4rpx;
  215. }
  216. .level{
  217. line-height: 1;
  218. display: inline-block;
  219. font-size: 28rpx;
  220. color: #666666;
  221. margin-left: 10rpx;
  222. border: 1px solid transparent;
  223. padding: 8rpx 10rpx;
  224. border-radius: 4rpx;
  225. &-1{
  226. color:#13ce66 ;
  227. border-color: #13ce66;
  228. }
  229. &-2{
  230. color: red;
  231. border-color: red;
  232. }
  233. }
  234. }
  235. }
  236. }
  237. </style>