item.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <template>
  2. <view class="box-container">
  3. <view class="box-head">
  4. <u-row>
  5. <u-col :span="6">
  6. {{renderItem(item,'taskName','--')}}
  7. </u-col>
  8. <u-col :span="6" style="align-items: flex-end;">
  9. <view class="tip"
  10. :class="{
  11. 'bg-yellow': item.taskSts==0,
  12. 'bg-red': item.taskSts==1,
  13. 'bg-gray': item.taskSts==2,
  14. }"
  15. >
  16. {{renderItem(item,'taskStsName','--')}}
  17. </view>
  18. </u-col>
  19. </u-row>
  20. </view>
  21. <view class="box-body">
  22. <u-row>
  23. <u-col :span="12">
  24. <view class="item">
  25. <view class="label">车辆:</view>
  26. <view class="value primary">{{renderItem(item,'plate','--')}}</view>
  27. </view>
  28. <view class="item">
  29. <view class="label">部门:</view>
  30. <view class="value">{{renderItem(item,'deptName','--')}}</view>
  31. </view>
  32. <view class="item">
  33. <view class="label">司机:</view>
  34. <view class="value primary">{{renderItem(item,'driverName','--')}}, {{renderItem(item,'driverTel','--')}}</view>
  35. </view>
  36. <view class="item">
  37. <view class="label">计划开始时间:</view>
  38. <view class="value ">{{renderItem(item,'planStartTime','--')}}</view>
  39. </view>
  40. <view class="item">
  41. <view class="label">预计完工时间:</view>
  42. <view class="value">{{renderItem(item,'planEndTime','--')}}</view>
  43. </view>
  44. <view class="item">
  45. <view class="label">装料点:</view>
  46. <view class="value fw-700">{{renderItem(item,'loadAddr','--')}}</view>
  47. </view>
  48. <view class="item">
  49. <view class="label">卸料点:</view>
  50. <view class="value fw-700">{{renderItem(item,'unLoadAddr','--')}}</view>
  51. </view>
  52. </u-col>
  53. </u-row>
  54. <u-row>
  55. <u-col :span="6">
  56. <view class="link" @click="goViewRoute(item)">
  57. 查看路线规划
  58. </view>
  59. </u-col>
  60. <u-col :span="6">
  61. <view class="link" @click="goHistory(item,'vehicle')">
  62. 查看实际行驶路线
  63. </view>
  64. </u-col>
  65. </u-row>
  66. </view>
  67. <view class="box-footer" v-if="current==0 && $hasPermi('mobile:index:mine:task:driverExTask')">
  68. <u-row style="justify-content: flex-end;">
  69. <u-col :span="12" style="padding: 20rpx 30rpx;" v-if="item.taskSts==0">
  70. <u-button type="primary" :plain="true" :custom-style="{
  71. width: '100%',
  72. height: '38px'
  73. }" @click="handleOper(item,1)">开始任务
  74. </u-button>
  75. </u-col>
  76. <u-col :span="12" style="padding: 20rpx 30rpx;" v-if="item.taskSts==1">
  77. <u-button type="error" :plain="true" :custom-style="{
  78. width: '100%',
  79. height: '38px',
  80. }" @click="handleOper(item,2)">结束任务
  81. </u-button>
  82. </u-col>
  83. <u-col :span="12" style="padding: 20rpx 30rpx;" v-if="item.taskSts==2">
  84. <u-button type="info" :disabled="true" :plain="true" :custom-style="{
  85. width: '100%',
  86. height: '38px',
  87. }" >已完结
  88. </u-button>
  89. </u-col>
  90. </u-row>
  91. </view>
  92. </view>
  93. </template>
  94. <script>
  95. import { renderItem } from '@/utils/gdtq'
  96. import {cancel} from '@/api/mine/driverTask.js'
  97. export default {
  98. components: {
  99. },
  100. props: {
  101. item: {
  102. type: Object,
  103. default: () => {}
  104. },
  105. current: {
  106. type: Number,
  107. default: 0
  108. }
  109. },
  110. data() {
  111. return {}
  112. },
  113. methods: {
  114. handleOper(item,type) {
  115. this.$emit('handleOper',item,type)
  116. },
  117. // 跳到历史轨迹
  118. goHistory(item,tabStyleType) {
  119. const {vehicleId,realStartTime,realEndTime} = item
  120. if(this.isNull(realStartTime) || this.isNull(realEndTime)) {
  121. this.$modal.msg('暂无实际任务时间!')
  122. return
  123. }
  124. let params = {
  125. tabStyleType
  126. }
  127. if (tabStyleType == 'vehicle') {
  128. params.vehicleId = vehicleId
  129. }
  130. let startTime = this.dayjs(realStartTime).format('YYYY-MM-DD HH:mm');
  131. let endTime = this.dayjs(realEndTime).format('YYYY-MM-DD HH:mm');
  132. params.time = [startTime,endTime]
  133. this.$store.dispatch('setParams',params)
  134. uni.navigateTo({
  135. url: '/pagesMap/pastRoute/pastRoute',
  136. });
  137. },
  138. goViewRoute(row) {
  139. const {routeId} = row
  140. uni.navigateTo({
  141. url: `/pagesMap/viewRoute/viewRoute?id=${routeId}`,
  142. });
  143. }
  144. },
  145. }
  146. </script>
  147. <style lang="scss" scoped>
  148. .box-container {
  149. background: #fff;
  150. margin: 20rpx 10rpx;
  151. border-radius: 10rpx;
  152. font-size: 24rpx;
  153. .box-head {
  154. border-bottom: 1px solid #ddd;
  155. padding: 20rpx;
  156. font-weight: 700;
  157. .tip {
  158. width: 100rpx;
  159. height: 42rpx;
  160. line-height: 42rpx;
  161. font-size: 22rpx;
  162. color: #fff;
  163. text-align: center;
  164. border-radius: 10rpx;
  165. }
  166. }
  167. .box-body {
  168. padding: 20rpx;
  169. .item {
  170. margin: 8rpx 4rpx;
  171. display: flex;
  172. .label {
  173. }
  174. .value {
  175. flex: 1;
  176. }
  177. }
  178. }
  179. .box-footer {
  180. // border-top: 1px solid #ddd;
  181. // padding: 20rpx;
  182. }
  183. }
  184. .primary {
  185. color: $uni-color-primary;
  186. }
  187. .fw-700 {
  188. font-weight: 700;
  189. }
  190. .bg-yellow {
  191. background: #DFD867;
  192. }
  193. .bg-red {
  194. background: #F40808;
  195. }
  196. .bg-gray {
  197. background: #B0B0B0;
  198. }
  199. .link {
  200. color: $uni-color-primary;
  201. text-decoration: underline;
  202. margin: 20rpx 0;
  203. }
  204. </style>