index.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. <template>
  2. <view class="registrationRecord-box">
  3. <view class="list-box">
  4. <u--form label-width="auto" ref="uForm" :model="form" labelAlign="right">
  5. <u-subsection :list="list" mode="subsection" :current="curNow" @change="sectionChange"></u-subsection>
  6. <u-cell-group customStyle="margin-top: 2px">
  7. <template>
  8. <u-cell title="申请时间" :border="true" :isLink="true"
  9. @click="$refs.startTimeRef.show()">
  10. <view slot="value">
  11. <u-form-item label="" prop="form.startTime">
  12. <template v-if="form.createTimeEnd">
  13. {{ form.createTimeBegin }} - {{ form.createTimeEnd }}</template>
  14. <template v-else></template>
  15. </u-form-item>
  16. </view>
  17. </u-cell>
  18. <tq-calendar ref="startTimeRef"
  19. @confirm="(e) => {
  20. form.createTimeBegin = e[0]
  21. form.createTimeEnd = e[1]
  22. anewQueryMyList()
  23. }">
  24. </tq-calendar>
  25. </template>
  26. <!-- 用车类型 -->
  27. <template>
  28. <u-cell title="用车类型" :border="true" :isLink="true"
  29. @click="$refs.dictSelectRef.show()">
  30. <view slot="value">
  31. <u-form-item label="" prop="form.applyTypeName">
  32. {{ form.applyTypeName }}
  33. </u-form-item>
  34. </view>
  35. </u-cell>
  36. <tq-dict-select
  37. ref="dictSelectRef"
  38. dictType="matter_type"
  39. @confirm="(data) => {
  40. form.applyType = data.dictValue
  41. form.applyTypeName = data.dictLabel
  42. anewQueryMyList()
  43. }">
  44. </tq-dict-select>
  45. </template>
  46. <template>
  47. <u-cell title="总经办部门领导审核状态" :border="true" :isLink="true"
  48. @click="$refs.deptAuditStatusRef.show()">
  49. <view slot="value">
  50. <u-form-item label="" prop="form.endTime">
  51. {{ form.deptAuditStatusName }}
  52. </u-form-item>
  53. </view>
  54. </u-cell>
  55. <tq-select ref="deptAuditStatusRef"
  56. :columns="deptAuditStatusList"
  57. @confirm="(data) => {
  58. form.deptAuditStatus = data.value
  59. form.deptAuditStatusName = data.label
  60. anewQueryMyList()
  61. }">
  62. </tq-select>
  63. </template>
  64. <template>
  65. <u-cell title="分管总经办领导审核状态" :border="true" :isLink="true"
  66. @click="$refs.leadDeptAuditStatusRef.show()">
  67. <view slot="value">
  68. <u-form-item label="" >
  69. {{ form.leadDeptAuditStatusName }}
  70. </u-form-item>
  71. </view>
  72. </u-cell>
  73. <tq-select ref="leadDeptAuditStatusRef"
  74. :columns="leadDeptAuditStatusList"
  75. @confirm="(data) => {
  76. form.leadDeptAuditStatus = data.value
  77. form.leadDeptAuditStatusName = data.label
  78. anewQueryMyList()
  79. }">
  80. </tq-select>
  81. </template>
  82. <template>
  83. <u-cell title="分管总经办领导审核状态" :border="true" :isLink="true"
  84. @click="$refs.manageAuditStatusRef.show()">
  85. <view slot="value">
  86. <u-form-item label="" >
  87. {{ form.manageAuditStatusName }}
  88. </u-form-item>
  89. </view>
  90. </u-cell>
  91. <tq-select ref="manageAuditStatusRef"
  92. :columns="manageAuditStatusList"
  93. @confirm="(data) => {
  94. form.manageAuditStatus = data.value
  95. form.manageAuditStatusName = data.label
  96. anewQueryMyList()
  97. }">
  98. </tq-select>
  99. </template>
  100. <template>
  101. <u-cell title="订单号" :border="true" :isLink="false"
  102. >
  103. <view slot="value">
  104. <u-input v-model="form.id" :type="number" placeholder="可输入订单号" clearable @confirm="anewQueryMyList" @clear="anewQueryMyList" :border="true" />
  105. </view>
  106. </u-cell>
  107. </template>
  108. </u-cell-group>
  109. </u--form>
  110. </view>
  111. <view class="item-list-box">
  112. <view class="info-box" v-for="(item, index) in queryMyListdata" :key="index">
  113. <u-row customStyle="margin-bottom: 10px">
  114. <u-col span="12">
  115. <view class="demo-layout bg-purple-light">单号:{{ item.id }}</view>
  116. </u-col>
  117. </u-row>
  118. <u-row customStyle="margin-bottom: 10px">
  119. <u-col span="12">
  120. <view class="demo-layout bg-purple-light">申请时间:{{ item.createTime }}</view>
  121. </u-col>
  122. </u-row>
  123. <u-row customStyle="margin-bottom: 10px">
  124. <u-col span="6">
  125. <view class="demo-layout bg-purple-light">申请人:{{ item.applyName }}(工号:{{item.userCode||'-'}})</view>
  126. </u-col>
  127. <u-col span="6">
  128. <view class="demo-layout bg-purple">电话:{{ item.applyTel }}</view>
  129. </u-col>
  130. </u-row>
  131. <u-row customStyle="margin-bottom: 10px">
  132. <u-col span="6">
  133. <view class="demo-layout bg-purple-light">车辆:{{ item.plate }}</view>
  134. </u-col>
  135. <u-col span="6">
  136. <view class="demo-layout bg-purple-light">车辆类型:{{ item.matterType }}</view>
  137. </u-col>
  138. </u-row>
  139. <u-row customStyle="margin-bottom: 10px">
  140. <u-col span="6">
  141. <view class="demo-layout bg-purple-light">车型:{{ item.vehTypeName }}</view>
  142. </u-col>
  143. <u-col span="6">
  144. <view class="demo-layout bg-purple-light">维保类型:维修</view>
  145. </u-col>
  146. </u-row>
  147. <u-row customStyle="margin-bottom: 10px">
  148. <u-col span="12">
  149. <view class="demo-layout bg-purple-light">情况说明:{{ item.remark }}</view>
  150. </u-col>
  151. </u-row>
  152. <!-- 分割 -->
  153. <u-divider text="" customStyle="width: 100%;margin-bottom: 4px;margin-top: -6px;"></u-divider>
  154. <u-row customStyle="margin-bottom: 10px">
  155. <u-col span="12">
  156. <view class="demo-layout bg-purple-light">维修管理员审核状态:{{ item.manageAuditStatus }}</view>
  157. </u-col>
  158. </u-row>
  159. <u-row customStyle="margin-bottom: 10px">
  160. <u-col span="12">
  161. <view class="demo-layout bg-purple-light">说明:{{ item.manageAuditRemark }}</view>
  162. </u-col>
  163. </u-row>
  164. <!-- 分割 -->
  165. <u-divider text="" customStyle="width: 100%;margin-bottom: 4px;margin-top: -6px;"></u-divider>
  166. <u-row customStyle="margin-bottom: 10px">
  167. <u-col span="12">
  168. <view class="demo-layout bg-purple-light">分管总经办领导审核状态:{{ item.leadDeptAuditStatus }}</view>
  169. </u-col>
  170. </u-row>
  171. <u-row customStyle="margin-bottom: 10px">
  172. <u-col span="12">
  173. <view class="demo-layout bg-purple-light">说明:{{ item.leadDeptAuditRemark }}</view>
  174. </u-col>
  175. </u-row>
  176. <!-- 分割 -->
  177. <u-divider text="" customStyle="width: 100%;margin-bottom: 4px;margin-top: -6px;"></u-divider>
  178. <u-row customStyle="margin-bottom: 10px">
  179. <u-col span="12">
  180. <view class="demo-layout bg-purple-light">总经办部门领导审核状态:{{ item.deptAuditStatus }}</view>
  181. </u-col>
  182. </u-row>
  183. <u-row customStyle="margin-bottom: 10px">
  184. <u-col span="12">
  185. <view class="demo-layout bg-purple-light">说明:{{ item.deptAuditRemark }}</view>
  186. </u-col>
  187. </u-row>
  188. <!-- 评价状态:0.不需要评价、1.待评价、2.已评价 string-->
  189. <u-row customStyle="margin-bottom: 10px" v-if="curNow === 0&&item.evaluateStatus ==='1'">
  190. <u-col span="12 ">
  191. <u-button type="primary" text="出发" @click="$refs.ratePopupRef.show(item)">评价</u-button>
  192. </u-col>
  193. </u-row>
  194. </view>
  195. </view>
  196. <u-loadmore :status="status" />
  197. <u-toast ref="uToast" />
  198. <u-calendar :show="calendarShow" mode="range" :defaultDate="defaultDate" :maxDate="maxDate" minDate="2023-10-01"
  199. monthNum="24"
  200. @confirm="calendarChange" @close="calendarShow = false"></u-calendar>
  201. <!-- 评价 -->
  202. <tq-rate-popup ref="ratePopupRef" @confirm="(e) => { postEvaluate(e) }"></tq-rate-popup>
  203. </view>
  204. </template>
  205. <script>
  206. import { repairRecordList, evaluate } from "@/api/wfApi/index";
  207. export default {
  208. data() {
  209. return {
  210. calendarShow: false, // 日历
  211. calendarStart: this.dayjs().subtract(6, 'day').format('YYYY-MM-DD'),// 开始时间
  212. calendarEnd: this.dayjs().subtract(0, 'day').format('YYYY-MM-DD'), // 结束时间
  213. defaultDate: [this.dayjs().subtract(6, 'day').format('YYYY-MM-DD'), this.dayjs().subtract(0, 'day').format('YYYY-MM-DD')],
  214. maxDate: this.dayjs().add(365, 'day').format('YYYY-MM-DD'),
  215. list: ['我的', '全部'],
  216. curNow: 0,
  217. queryMyListdata: [],
  218. form: {
  219. createTimeBegin: '',//开始时间
  220. createTimeEnd: '', //结束时间
  221. applyType: '',//用车类型(字典编码:matter_type)
  222. applyTypeName: '',
  223. deptAuditStatus: '',//总经办部门领导审核状态:1.审核通过、2.审核不通过
  224. deptAuditStatusName: '',
  225. leadDeptAuditStatus: '',//分管总经办领导审核状态:1.审核通过、2.审核不通过
  226. leadDeptAuditStatusName: '',
  227. manageAuditStatus: '',//维修管理员审核状态:1.审核通过、2.审核不通过
  228. manageAuditStatusName: ''
  229. },
  230. // deptAuditStatus 总经办部门领导审核状态:1.审核通过、2.审核不通过
  231. deptAuditStatusList: [
  232. { label: '全部', value: '' },
  233. { label: '审核通过', value: 1 },
  234. { label: '审核不通过', value: 2 },
  235. ],
  236. // leadDeptAuditStatus 分管总经办领导审核状态:1.审核通过、2.审核不通过
  237. leadDeptAuditStatusList: [
  238. { label: '全部', value: '' },
  239. { label: '审核通过', value: 1 },
  240. { label: '审核不通过', value: 2 },
  241. ],
  242. // manageAuditStatus 维修管理员审核状态:1.审核通过、2.审核不通过
  243. manageAuditStatusList: [
  244. { label: '全部', value: '' },
  245. { label: '审核通过', value: 1 },
  246. { label: '审核不通过', value: 2 },
  247. ],
  248. pageIndex: 1,
  249. total: 0,
  250. status: 'nomore' //loading nomore loadmore
  251. }
  252. },
  253. onShow(option) {
  254. this.queryMyListdata = []
  255. this.pageIndex = 1
  256. this.queryMyList();
  257. },
  258. methods: {
  259. calendarChange(e) {
  260. console.info('选择的时间', e)
  261. // 修改日期
  262. this.form.createTimeBegin = e[0]; // 开始时间
  263. this.form.createTimeEnd = e[e.length - 1]; // 结束时间
  264. this.defaultDate = [e[0], e[e.length - 1]]
  265. this.calendarShow = false;
  266. this.anewQueryMyList();
  267. },
  268. anewQueryMyList() {
  269. this.pageIndex = 1;
  270. this.queryMyListdata = [];
  271. this.queryMyList();
  272. },
  273. phoneCall(e) {
  274. uni.makePhoneCall({
  275. phoneNumber: e //仅为示例
  276. });
  277. },
  278. pointAddrParse(e) {
  279. let arr = JSON.parse(e)
  280. let arrStg = ''
  281. for (let item of arr) {
  282. arrStg += item.address + '-'
  283. }
  284. return arrStg.slice(0, -1);
  285. },
  286. sectionChange(index) {
  287. this.curNow = index;
  288. this.anewQueryMyList()
  289. },
  290. toRealMap(item) {
  291. let obj = {
  292. routeId: item.routeId,
  293. classId: item.classId,
  294. startAndEnd: item.startAndEnd
  295. }
  296. let objst = encodeURIComponent(JSON.stringify(obj))
  297. uni.navigateTo({
  298. url: '/newdriversub/setClassPlan/details?item=' + objst
  299. });
  300. },
  301. async queryMyList() {
  302. this.loading = 'loading'
  303. let { createTimeBegin, createTimeEnd } = this.form
  304. let obj = {
  305. ...this.form,
  306. pageIndex: this.pageIndex,
  307. pageSize: 3,
  308. createTimeBegin: createTimeBegin ? createTimeBegin + ':00':'',
  309. createTimeEnd: createTimeEnd ? createTimeEnd + ':59':'',
  310. queryType: this.curNow + 1 //查询类型:1.本人、2.全部
  311. }
  312. for (let key in obj) {
  313. if (obj[key] === '') delete obj[key]
  314. }
  315. let { data, code, page } = await repairRecordList(obj)
  316. if (code == "0") {
  317. let list = data
  318. this.queryMyListdata = this.queryMyListdata.concat(list)
  319. this.total = Number(page.totalCount)
  320. this.loading = 'loadmore'
  321. if (this.queryMyListdata.length >= this.total) {
  322. this.status = 'nomore'
  323. }
  324. console.log('数据', this.queryMyListdata)
  325. }
  326. },
  327. // 操作
  328. async postEvaluate(e) {
  329. let { data, code, msg } = await evaluate(
  330. {
  331. evaluate: e.textarea,
  332. evaluateScore: e.rateNum,
  333. systemFlowVehId: e.item.id, //任务id
  334. })
  335. if (code == "0") {
  336. uni.showToast({
  337. title: msg || '评价成功',
  338. duration: 2000
  339. });
  340. this.anewQueryMyList();
  341. }
  342. }
  343. },
  344. // 触底
  345. onReachBottom() {
  346. console.log('当前条数', this.queryMyListdata.length, '总条数', this.total)
  347. if (this.queryMyListdata.length >= this.total) return;
  348. this.pageIndex++
  349. this.queryMyList();
  350. }
  351. }
  352. </script>
  353. <style lang="scss" scoped>
  354. .registrationRecord-box {
  355. padding: 0 0 10rpx 0;
  356. overflow: unset;
  357. .bg-purple-light{
  358. word-wrap: break-word;
  359. }
  360. .list-box {
  361. border-radius: 10rpx;
  362. background: #fff;
  363. // padding: 20rpx;
  364. position: sticky;
  365. // align-items: center;
  366. // display: flex;
  367. top: 0px;
  368. width: 100%;
  369. z-index: 999;
  370. /deep/ {
  371. .u-form-item__body {
  372. padding: 0;
  373. }
  374. }
  375. }
  376. .item-list-box {
  377. padding: 10rpx 16rpx 0 16rpx;
  378. // background: #fff;
  379. position: relative;
  380. .info-box {
  381. margin-bottom: 20rpx;
  382. border: none;
  383. width: 100%;
  384. // border-radius: 20rpx;
  385. box-shadow: 2rpx 2rpx 5rpx rgba(169, 169, 169, 0.34901960784313724);
  386. // height: 150rpx;
  387. background-color: rgba(255, 255, 255, 1);
  388. display: flex;
  389. align-items: center;
  390. flex-wrap: wrap;
  391. padding: 20rpx;
  392. box-sizing: border-box;
  393. position: relative;
  394. font-size: 24rpx;
  395. }
  396. }
  397. }
  398. </style>