index.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <template>
  2. <view class="content">
  3. <view class="head">
  4. <view class="head-lf">
  5. <view class="name">{{heandName}}</view>
  6. </view>
  7. <view class="head-rt">
  8. <view class="message zhcx-iconfont zhcx-icon-xiaoxi1">
  9. <view class="dot">
  10. <!-- <text>9</text> -->
  11. </view>
  12. </view>
  13. <view class="scanCode zhcx-iconfont zhcx-icon-saomiao" @click="scanCode" />
  14. </view>
  15. </view>
  16. <uni-notice-bar showIcon
  17. text="智慧安全助理通告,智慧安全助理通告,智慧安全助理通告"
  18. scrollable single/>
  19. <view class="list-box workbench">
  20. <view class="title">
  21. <text class="tl-1">移动</text>
  22. <text>工作台</text>
  23. </view>
  24. <view class="list">
  25. <view class="item col-4" v-for="item in items" :key="item.id" @click="linkTo(item.id)">
  26. <view class="icon">
  27. <text class="zhcx-iconfont" :class="item.icon" :style="{color:item.color?item.color:'#17b18f'}"></text>
  28. </view>
  29. <view class="text">{{item.name}}</view>
  30. </view>
  31. </view>
  32. </view>
  33. <view class="banner">
  34. <swiper :autoplay="true" :interval="3000" :duration="500" circular>
  35. <swiper-item>
  36. <view class="swiper-item">
  37. <image class="bannerImage" src="https://dfs.xazhyc.com/group1/M00/00/01/rBAACGIV34aAElXbAAA37O8IABU50.jpeg"></image>
  38. </view>
  39. </swiper-item>
  40. <swiper-item>
  41. <view class="swiper-item">
  42. <image class="bannerImage" src="https://dfs.xazhyc.com/group1/M00/00/01/rBAACGIV352ASQByAAB8a11R5uQ99.jpeg" ></image>
  43. </view>
  44. </swiper-item>
  45. </swiper>
  46. </view>
  47. <view class="handle-table">
  48. <view class="handle-table-title">
  49. <view class="title-lf">
  50. <text>待办任务</text>
  51. <text>【{{taskInfo.total}}】</text>
  52. </view>
  53. <view class="title-rt" @click="showMoreTask">
  54. <text>查看全部</text>
  55. </view>
  56. </view>
  57. <view class="handle-table-list">
  58. <view class="item"
  59. v-for="item in taskInfo.items"
  60. :key="item.taskId"
  61. @click="showTaskDetail(item)">
  62. <view class="cont">
  63. <view class="tag" :class="[formatTaskTage(item.taskTypeId)]">
  64. <text>{{item.taskTypeId|formatTaskType}}</text>
  65. </view>
  66. <view class="name">{{item.taskTitle}}</view>
  67. </view>
  68. <view class="time">{{item.expectedEndTime|distanceTime}}</view>
  69. </view>
  70. </view>
  71. </view>
  72. </view>
  73. </template>
  74. <script>
  75. import {distanceTime,isEmpty} from '@/libs/index.js';
  76. import {taskType} from '@/libs/enum'
  77. import {getCheckTaskByPage} from '@/api/task'
  78. export default {
  79. filters:{
  80. distanceTime(val){
  81. return distanceTime(val)
  82. },
  83. formatTaskType(val){
  84. return taskType(val)
  85. }
  86. },
  87. data() {
  88. return {
  89. heandName:"",
  90. items: [{
  91. id: 1,name: '全部风险点',color: "#00bfff",
  92. icon: "zhcx-icon-tupian"
  93. },
  94. {
  95. id: 3,
  96. name: '隐患上报',
  97. icon: "zhcx-icon-common_emergency"
  98. },
  99. {
  100. id: 4,
  101. name: '立即巡检',
  102. icon: "zhcx-icon-saomiao"
  103. },
  104. {
  105. id: 5,
  106. name: '检查记录',
  107. icon: "zhcx-icon-common_ledger"
  108. },
  109. {
  110. id: 6,
  111. name: '预警中心',
  112. icon: "zhcx-icon-common_warning"
  113. }
  114. ],
  115. taskInfo:{
  116. total:0,
  117. items:[]
  118. }
  119. }
  120. },
  121. onShow() {
  122. let userInfo=uni.getStorageSync('accountInfo');
  123. if(!isEmpty(userInfo)){
  124. userInfo=JSON.parse(userInfo);
  125. let executeAccountId=userInfo.userId;
  126. this.heandName=userInfo.ocName||userInfo.groupName;
  127. getCheckTaskByPage({
  128. page:1,
  129. limit:6,
  130. isWaiting:1,
  131. executeAccountId
  132. }).then((res)=>{
  133. this.taskInfo.total=res.total;
  134. this.taskInfo.items=res.data;
  135. })
  136. }
  137. },
  138. methods: {
  139. scanCode(){
  140. // 允许从相机和相册扫码
  141. uni.scanCode({
  142. success: function (res) {
  143. let ids = res.result
  144. uni.navigateTo({
  145. url: '/views/entRiskPointCheck/index?id=' + ids
  146. })
  147. },
  148. fail(msg) {
  149. console.log(msg)
  150. uni.showToast({
  151. icon:'none',
  152. mask:true,
  153. title:'扫码失败'
  154. })
  155. }
  156. });
  157. },
  158. showMoreTask(){
  159. uni.navigateTo({
  160. url: "/views/task/taskList"
  161. })
  162. },
  163. linkTo(id) {
  164. switch (id) {
  165. case 1:
  166. uni.navigateTo({
  167. url: '/views/entRiskPoint/index?id=2',
  168. })
  169. return;
  170. case 3:
  171. uni.navigateTo({
  172. url: '/views/danger/riskPointDanger?id=2',
  173. })
  174. return;
  175. case 4:
  176. this.scanCode();
  177. return;
  178. case 5:
  179. uni.navigateTo({
  180. url: '/views/checkRecord/checkRecord',
  181. })
  182. return;
  183. case 6:
  184. uni.navigateTo({
  185. url: '/views/warning/index',
  186. })
  187. return;
  188. }
  189. },
  190. formatTaskTage(val){
  191. let type="";
  192. switch(val){
  193. case 1 :
  194. type="warn";
  195. break;
  196. // case 2 :
  197. // type="success";
  198. // break;
  199. case 3 :
  200. type="purple";
  201. break;
  202. case 4 :
  203. type="danger";
  204. break;
  205. }
  206. return type;
  207. },
  208. showTaskDetail(item){
  209. let riskPointId=item.riskPointId;
  210. uni.navigateTo({
  211. url:'/views/task/detail/detail?id='+item.taskId+'&riskPointId='+riskPointId
  212. })
  213. }
  214. }
  215. }
  216. </script>
  217. <style lang="scss" scoped>
  218. @import url('./index.css');
  219. </style>