index.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. <template>
  2. <view class="page-container">
  3. <!-- 头部筛选 -->
  4. <view class="page-head">
  5. <u-tabs :list="list"
  6. :itemStyle="{
  7. width: '330rpx',
  8. height: '80rpx'
  9. }"
  10. :activeStyle="{
  11. color:'#4573FC'
  12. }"
  13. lineWidth="40"
  14. lineColor="#4573FC"
  15. @click="({index}) => {
  16. current = index
  17. handleQuery()
  18. }"
  19. >
  20. </u-tabs>
  21. <u--form label-width="auto" ref="uForm" :model="params" labelAlign="right">
  22. <u-cell-group customStyle="margin-top: 2px">
  23. <template>
  24. <u-cell title="任务开始时间" :border="true" :isLink="true"
  25. @click="$refs.calendarRef.show()">
  26. <view slot="value">
  27. <u-form-item>
  28. <template v-if="params.startDate">
  29. {{ params.startDate }} - {{ params.endDate }}
  30. </template>
  31. <template v-else></template>
  32. </u-form-item>
  33. </view>
  34. <view v-if="params.startDate" slot="right-icon"
  35. @click.stop="() => {
  36. params.startDate = ''
  37. params.endDate = ''
  38. handleQuery()
  39. }"
  40. >
  41. <u-icon size="16" name="close-circle"></u-icon>
  42. </view>
  43. </u-cell>
  44. <tq-calendar ref="calendarRef"
  45. type="daterange"
  46. @confirm="(e) => {
  47. params.startDate = e[0]
  48. params.endDate = e[1]
  49. handleQuery()
  50. }"
  51. >
  52. </tq-calendar>
  53. </template>
  54. <template>
  55. <u-cell title="车牌号" :border="true" :isLink="true"
  56. @click="$refs.carChooseRef.show()">
  57. <view slot="value">
  58. <u-form-item>
  59. <template v-if="params.plate">
  60. {{ params.plate }}
  61. </template>
  62. <template v-else></template>
  63. </u-form-item>
  64. </view>
  65. <view v-if="params.plate" slot="right-icon"
  66. @click.stop="() => {
  67. params.vehicleId = ''
  68. params.plate = ''
  69. handleQuery()
  70. }"
  71. >
  72. <u-icon size="16" name="close-circle"></u-icon>
  73. </view>
  74. </u-cell>
  75. <tq-car-user ref="carChooseRef"
  76. @confirm="(data) => {
  77. params.vehicleId = data.id
  78. params.plate = data.label
  79. handleQuery()
  80. }"
  81. >
  82. </tq-car-user>
  83. </template>
  84. <template>
  85. <u-cell title="任务状态" :border="true" :isLink="true"
  86. @click="$refs.exStsRef.show()">
  87. <view slot="value">
  88. <u-form-item>
  89. <template v-if="params.taskName">
  90. {{ params.taskName }}
  91. </template>
  92. <template v-else></template>
  93. </u-form-item>
  94. </view>
  95. <view v-if="params.taskName" slot="right-icon"
  96. @click.stop="() => {
  97. params.taskSts = ''
  98. params.taskName = ''
  99. handleQuery()
  100. }"
  101. >
  102. <u-icon size="16" name="close-circle"></u-icon>
  103. </view>
  104. </u-cell>
  105. <tq-select ref="exStsRef"
  106. :columns = "exStsList"
  107. @confirm="(e) => {
  108. params.taskSts = e.value
  109. params.taskName = e.label
  110. handleQuery()
  111. }"
  112. >
  113. </tq-select>
  114. </template>
  115. </u-cell-group>
  116. </u--form>
  117. </view>
  118. <!-- 内容 -->
  119. <view class="page-body">
  120. <scroll-view scroll-y style="height: 100%" enable-back-to-top refresher-enabled
  121. refresher-background="#F6F6F6" :refresher-triggered="refresher" @refresherrefresh="handleRefresher"
  122. @scrolltolower="handleScrollLower">
  123. <template v-for="(e,index) in tableList">
  124. <item :item="e" @getList="handleQuery"
  125. @handleOper="(e,type) => {
  126. $refs.operFormRef.show(e,type)
  127. }"
  128. :key="index"
  129. :current="current"
  130. >
  131. </item>
  132. </template>
  133. <u-empty mode="data" v-if="tableList.length === 0" marginTop="200"></u-empty>
  134. </scroll-view>
  135. </view>
  136. <operForm ref="operFormRef" @getList="handleQuery"></operForm>
  137. </view>
  138. </template>
  139. <script>
  140. import {myTaskList ,driverTaskList} from '@/api/mine/driverTask.js'
  141. import listMixin from '@/utils/mixins/list.js'
  142. import item from './module/item'
  143. import operForm from './module/operForm.vue'
  144. export default {
  145. mixins: [listMixin],
  146. components: {
  147. item,
  148. operForm,
  149. },
  150. data() {
  151. return {
  152. params: {
  153. startDate: '',
  154. endDate: '',
  155. vehicleId: '',
  156. plate: '',
  157. taskSts: '',
  158. taskName: '',
  159. },
  160. list: [
  161. { name: '我的任务'},
  162. { name: '所有任务'},
  163. ],
  164. exStsList: [
  165. // {label: '全部',value: ''},
  166. {label: '未执行',value: '0'},
  167. {label: '执行中',value: '1'},
  168. {label: '已完结',value: '2'},
  169. ],
  170. current: 0,
  171. }
  172. },
  173. onLoad() {
  174. this.setDefalutTime()
  175. this.handleQuery()
  176. },
  177. onShow() {
  178. },
  179. methods: {
  180. setDefalutTime() {
  181. let today = this.dayjs().format('YYYY-MM-DD')
  182. this.params.startDate = today
  183. this.params.endDate = today
  184. },
  185. async handleTableList() {
  186. let ajaxData = {
  187. ...this.params,
  188. page: this.page,
  189. size: this.pageSize
  190. }
  191. let {code,data} = this.current ==0? await myTaskList(ajaxData):await driverTaskList(ajaxData)
  192. if (code == "0" ) {
  193. data.list.map((e) => {
  194. this.tableList.push({
  195. ...e,
  196. });
  197. })
  198. this.total = data.total;
  199. this.refresher = false;
  200. }
  201. },
  202. }
  203. }
  204. </script>
  205. <style lang="scss" scoped>
  206. .disflex {
  207. display: flex;
  208. justify-content: center;
  209. align-items: center;
  210. }
  211. .input-wapper {
  212. padding: 0 20rpx;
  213. position: relative;
  214. .prefix {
  215. position: absolute;
  216. left: 42rpx;
  217. bottom: 12rpx;
  218. }
  219. .suffix {
  220. position: absolute;
  221. right: 42rpx;
  222. bottom: 12rpx;
  223. }
  224. }
  225. .page-container {
  226. font-size: 28rpx;
  227. min-height: 100%;
  228. height: 100%;
  229. position: relative;
  230. overflow: hidden;
  231. .page-head {
  232. background: #fff;
  233. }
  234. .page-body {
  235. width: 100%;
  236. height: calc(100% - 344rpx - 10rpx);
  237. overflow: hidden;
  238. }
  239. }
  240. ::v-deep {
  241. .u-form-item__body {
  242. padding: 0;
  243. }
  244. }
  245. </style>