orders.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477
  1. <template>
  2. <view>
  3. <!-- 顶部搜索框区域Start -->
  4. <view class="search">
  5. <search @search="search"></search>
  6. </view>
  7. <!-- 顶部搜索框区域End -->
  8. <!-- 查询区域Start -->
  9. <view class="queryView d-flex">
  10. <view class="d-flex a-center j-center">
  11. <picker @change="bindPickerTypeChange" :value="typeIndex" :range="typeArray">
  12. <view class="d-flex a-center">{{typeArray[typeIndex]}}
  13. <view class="icon iconfont icon-xiala"></view>
  14. </view>
  15. </picker>
  16. </view>
  17. <view class="d-flex a-center j-center">
  18. <picker range-key="label" @change="bindPickerStageChange" :value="stageIndex" :range="stageArray">
  19. <view class="d-flex a-center">{{stageArray[stageIndex].label}}
  20. <view class="icon iconfont icon-xiala"></view>
  21. </view>
  22. </picker>
  23. </view>
  24. <view class="d-flex a-center j-center">
  25. <picker @change="bindPickerYearChange" :value="yearIndex" :range="yearArray">
  26. <view class="d-flex a-center">{{yearArray[yearIndex]}}年 <view class="icon iconfont icon-xiala">
  27. </view>
  28. </view>
  29. </picker>
  30. </view>
  31. <view class="d-flex a-center j-center">
  32. <picker @change="bindPickerMonthChange" :value="monthIndex" :range="monthArray">
  33. <view class="d-flex a-center">{{monthArray[monthIndex]}}月 <view class="icon iconfont icon-xiala">
  34. </view>
  35. </view>
  36. </picker>
  37. </view>
  38. </view>
  39. <!-- 查询区域End -->
  40. <!-- 车险订单Start -->
  41. <template v-if="typeIndex == 0">
  42. <carOrders @searchOrder="closeOrders" :stageIndex="stageIndex" :ordersList="ordersList"
  43. :loadStatus="loadStatus" style="margin-top: 110px;"></carOrders>
  44. </template>
  45. <!-- 车险订单End -->
  46. <!-- 意外险订单Start -->
  47. <template v-if="typeIndex == 1">
  48. 意外险
  49. </template>
  50. <!-- 意外险订单End -->
  51. <!-- 寿险订单Start -->
  52. <template v-if="typeIndex == 2">
  53. 寿险
  54. </template>
  55. <!-- 寿险订单End -->
  56. <template v-if="ordersList.length==0">
  57. <nothingOrder></nothingOrder>
  58. </template>
  59. <!-- 回到顶部 -->
  60. <to-top :showToTop="toTopFlag"></to-top>
  61. </view>
  62. </template>
  63. <script>
  64. import {
  65. mapState,
  66. mapMutations
  67. } from "vuex"
  68. import search from "@/components/modules/orders/search.vue";
  69. import carOrders from "@/components/modules/orders/carOrders.vue";
  70. import nothingOrder from "@/components/modules/orders/nothingOrder.vue";
  71. import toTop from "@/components/modules/orders/to-top.vue";
  72. export default {
  73. components: {
  74. search,
  75. carOrders,
  76. nothingOrder,
  77. toTop
  78. },
  79. data() {
  80. return {
  81. toTopFlag: false, //显示回到顶部按钮
  82. /* 查询区域Start */
  83. typeArray: ['车险', '意外险', '寿险'], //订单的类型
  84. stageArray: [{
  85. "label": '待继续',
  86. "value": '0'
  87. },
  88. {
  89. "label": '核保中',
  90. "value": '1'
  91. },
  92. {
  93. "label": '已核保',
  94. "value": '2'
  95. },
  96. {
  97. "label": '已核保待缴费',
  98. "value": '5'
  99. },
  100. {
  101. "label": '已缴费',
  102. "value": '6'
  103. },
  104. {
  105. "label": '已承保',
  106. "value": '7'
  107. },
  108. {
  109. "label": '待修改',
  110. "value": '3'
  111. },
  112. {
  113. "label": '核保不通过',
  114. "value": '4'
  115. },
  116. {
  117. "label": '已关闭',
  118. "value": '99'
  119. }
  120. ], //订单的阶段
  121. yearArray: [], //订单的查询年份
  122. monthArray: [], //订单的查询月份
  123. // typeIndex:0, //订单的类型选择
  124. // stageIndex:0, //订单的阶段选择
  125. yearIndex: 0, //订单的年份选择
  126. monthIndex: 0, //订单的月份选择
  127. /* 查询区域End */
  128. queryLicenseNo: "",
  129. queryFrameNo: "",
  130. ordersList: [], //获取到的订单列表
  131. loadStatus: 0, //上拉加载状态
  132. // 订单的分页
  133. currentPage: 1, //当前的页数
  134. totalPages: 1, //总共的页数
  135. totalSize: 0, //数据条数
  136. pageSize: 5, //每次请求的条数
  137. }
  138. },
  139. computed: {
  140. ...mapState(['userInfo', 'typeIndex', 'stageIndex'])
  141. },
  142. //上拉加载
  143. onPullDownRefresh() {
  144. // 还原订单数据设置
  145. this.setOrderType(0);
  146. this.setOrderStage(0);
  147. // this.typeIndex = 0;
  148. // this.stageIndex = 0;
  149. this.totalSize = 0;
  150. this.loadStatus = 0;
  151. this.yearIndex = this.yearArray.length - 1; //年份
  152. this.monthArray = [];
  153. if (this.yearIndex == (this.yearArray.length - 1)) {
  154. var month = new Date().getMonth() + 1;
  155. for (var i = 1; i <= month; i++) {
  156. if (i < 10) {
  157. this.monthArray.push('0' + i);
  158. } else {
  159. this.monthArray.push(i);
  160. }
  161. }
  162. this.monthIndex = this.monthArray.length - 1;
  163. } else {
  164. for (var i = 1; i <= 12; i++) {
  165. if (i < 10) {
  166. this.monthArray.push('0' + i);
  167. } else {
  168. this.monthArray.push(i);
  169. }
  170. }
  171. this.monthIndex = 0;
  172. }
  173. this.ordersList = []; //获取到的订单列表
  174. this.currentPage = 1; //当前的页数
  175. this.totalPages = 1; //总共的页数
  176. this.getOrdersList(); //请求订单数据
  177. },
  178. // 页面触底加载
  179. onReachBottom() {
  180. this.currentPage = this.currentPage + 1;
  181. if (this.totalPages >= this.currentPage) {
  182. this.getOrdersList();
  183. } else {
  184. return false;
  185. }
  186. },
  187. // 页面滚动触发
  188. onPageScroll(e) { //根据距离顶部距离是否显示回到顶部按钮
  189. if (e.scrollTop > 600) { //当距离大于600时显示回到顶部按钮
  190. this.toTopFlag = true
  191. } else { //当距离小于600时显示回到顶部按钮
  192. this.toTopFlag = false
  193. }
  194. },
  195. onLoad() {
  196. // 搜索年选项Start
  197. this.yearArray = [(new Date().getFullYear() - 2), (new Date().getFullYear() - 1), new Date().getFullYear(), ]
  198. this.yearIndex = this.yearArray.length - 1;
  199. // 搜索年选项End
  200. // 搜索月选项Start
  201. var month = new Date().getMonth() + 1;
  202. for (var i = 1; i <= month; i++) {
  203. if (i < 10) {
  204. this.monthArray.push('0' + i);
  205. } else {
  206. this.monthArray.push(i);
  207. }
  208. }
  209. this.monthIndex = this.monthArray.length - 1;
  210. // 搜索月选项End
  211. },
  212. onShow() {
  213. this.ordersList = []; //获取到的订单列表
  214. this.currentPage = 1; //当前的页数
  215. this.totalPages = 1; //总共的页数
  216. this.totalSize = 0;
  217. // 获取订单列表Start
  218. this.getOrdersList()
  219. // 获取订单列表End
  220. },
  221. methods: {
  222. ...mapMutations(['setOrderType', 'setOrderStage']),
  223. // 订单类型发生变化
  224. bindPickerTypeChange(e) {
  225. // this.typeIndex = e.target.value;
  226. console.log(e.target.value)
  227. this.setOrderType(e.target.value);
  228. console.log(this.typeIndex)
  229. },
  230. // 订单阶段发生变化
  231. bindPickerStageChange(e) {
  232. this.queryFrameNo = ""
  233. this.queryLicenseNo = "";
  234. // this.stageIndex = e.target.value
  235. this.setOrderStage(e.target.value); //订单阶段
  236. this.totalSize = 0;
  237. this.ordersList = []; //获取到的订单列表
  238. this.currentPage = 1; //当前的页数
  239. this.totalPages = 1; //总共的页数
  240. this.getOrdersList(); //重新查询订单
  241. },
  242. //搜索年发生变化
  243. bindPickerYearChange(e) {
  244. this.queryFrameNo = ""
  245. this.queryLicenseNo = "";
  246. this.yearIndex = e.target.value;
  247. this.monthArray = [];
  248. if (this.yearIndex == (this.yearArray.length - 1)) {
  249. var month = new Date().getMonth() + 1;
  250. for (var i = 1; i <= month; i++) {
  251. if (i < 10) {
  252. this.monthArray.push('0' + i);
  253. } else {
  254. this.monthArray.push(i);
  255. }
  256. }
  257. this.monthIndex = this.monthArray.length - 1;
  258. } else {
  259. for (var i = 1; i <= 12; i++) {
  260. if (i < 10) {
  261. this.monthArray.push('0' + i);
  262. } else {
  263. this.monthArray.push(i);
  264. }
  265. }
  266. this.monthIndex = 0;
  267. }
  268. this.totalSize = 0;
  269. this.ordersList = []; //获取到的订单列表
  270. this.currentPage = 1; //当前的页数
  271. this.totalPages = 1; //总共的页数
  272. this.getOrdersList(); //重新查询订单
  273. },
  274. //搜索月发生变化
  275. bindPickerMonthChange(e) {
  276. this.queryFrameNo = ""
  277. this.queryLicenseNo = "";
  278. this.monthIndex = e.target.value
  279. this.totalSize = 0;
  280. this.ordersList = []; //获取到的订单列表
  281. this.currentPage = 1; //当前的页数
  282. this.totalPages = 1; //总共的页数
  283. this.getOrdersList(); //重新查询订单
  284. },
  285. //验证车架号
  286. isFrameno(str) {
  287. let mPattern = /^([0-9A-Z]){17}$/;
  288. return mPattern.test(str);
  289. },
  290. isCarBrand(str) {
  291. let mPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼A-Z]{1}[A-Z]{1}[A-Z0-9]{4,5}([A-Z0-9挂学警港澳使领]{1}|应急)$/ ||
  292. /^沪[0-9A-Z]{5}$/ || /^陆丰[0-9A-Z]{4}临$/;
  293. return mPattern.test(str.trim())
  294. // return /^陆丰[0-9A-Z]{4}临$/.test(str.trim())
  295. },
  296. search(a) {
  297. // this.stageIndex = this.stageArray.length-1;
  298. if (this.isFrameno(a.trim())) {
  299. this.queryFrameNo = ""
  300. this.queryLicenseNo = "";
  301. this.queryFrameNo = a.trim();
  302. this.totalSize = 0;
  303. this.ordersList = []; //获取到的订单列表
  304. this.currentPage = 1; //当前的页数
  305. this.totalPages = 1; //总共的页数
  306. this.getOrdersList(); //重新查询订单
  307. } else if (this.isCarBrand(a.trim())) {
  308. this.queryFrameNo = ""
  309. this.queryLicenseNo = "";
  310. this.queryLicenseNo = a.trim();
  311. this.totalSize = 0;
  312. this.ordersList = []; //获取到的订单列表
  313. this.currentPage = 1; //当前的页数
  314. this.totalPages = 1; //总共的页数
  315. this.getOrdersList(); //重新查询订单
  316. } else {
  317. return uni.showToast({
  318. icon: "none",
  319. title: "请输入正确的车牌号或车架号",
  320. duration: 1500
  321. })
  322. }
  323. },
  324. //关闭订单后查询
  325. closeOrders() {
  326. this.totalSize = 0;
  327. this.ordersList = []; //获取到的订单列表
  328. this.currentPage = 1; //当前的页数
  329. this.totalPages = 1; //总共的页数
  330. this.getOrdersList(); //重新查询订单
  331. },
  332. //获取订单数据Start
  333. async getOrdersList() {
  334. this.loadStatus = 1; //加载中
  335. var queryStartDate = this.yearArray[this.yearIndex] + '-' + this.monthArray[this.monthIndex] + '-' +
  336. '01';
  337. var formatQueryDate = new Date(queryStartDate);
  338. formatQueryDate.setMonth(formatQueryDate.getMonth() + 1)
  339. formatQueryDate.setTime(formatQueryDate.getTime() - 24 * 60 * 60 * 1000);
  340. var queryEndDate = formatQueryDate.getFullYear() + '-' + (formatQueryDate.getMonth() + 1) + '-' +
  341. formatQueryDate.getDate();
  342. var data = {
  343. "columnFilters": {
  344. "orderstatus": {
  345. "name": "orderstatus",
  346. "value": this.stageArray[this.stageIndex].value
  347. },
  348. "licenseNo": {
  349. "name": "licenseNo",
  350. "value": this.queryLicenseNo
  351. },
  352. "frameNo": {
  353. "name": "frameNo",
  354. "value": this.queryFrameNo
  355. },
  356. "startdate": {
  357. "name": "startdate",
  358. "value": queryStartDate
  359. },
  360. "enddate": {
  361. "name": "enddate",
  362. "value": queryEndDate
  363. },
  364. "userid": {
  365. "name": "userid",
  366. "value": this.userInfo.sysUser.id
  367. },
  368. "quotestatus": {
  369. "name": "quotestatus",
  370. "value": '1'
  371. }
  372. },
  373. "pageNum": this.currentPage,
  374. "pageSize": this.pageSize
  375. };
  376. let res = await this.$http.post('/insOrder/findPage', data);
  377. if (res.code == 200) {
  378. for (var i = 0; i < res.data.content.length; i++) {
  379. //解析每一条订单Start
  380. var singleOrder = {};
  381. singleOrder.orderno = res.data.content[i].orderno;
  382. singleOrder.insuredname = res.data.content[i].insureinfo.name;
  383. singleOrder.inscompany = res.data.content[i].inscompany;
  384. singleOrder.product = res.data.content[i].product;
  385. singleOrder.createtime = res.data.content[i].createtime;
  386. singleOrder.sumpremium = res.data.content[i].sumpremium;
  387. singleOrder.licenseNo = res.data.content[i].carinfo.licenseNo;
  388. singleOrder.orderstatus = res.data.content[i].orderstatus;
  389. singleOrder.quoteno = res.data.content[i].quoteno;
  390. singleOrder.auditopinion = res.data.content[i].auditopinion;
  391. singleOrder.showCompanyList = false;
  392. singleOrder.company = [];
  393. this.ordersList.push(singleOrder)
  394. //解析每一条订单End
  395. }
  396. this.totalPages = res.data.totalPages;
  397. this.totalSize = res.data.totalSize;
  398. this.loadStatus = 0; //上拉加载更多
  399. if ((this.ordersList.length < 5) || (this.ordersList.length == this.totalSize)) {
  400. this.loadStatus = 2; //全部数据加载完毕
  401. }
  402. // 关闭提示
  403. uni.stopPullDownRefresh()
  404. return;
  405. }
  406. },
  407. //获取订单数据End
  408. }
  409. }
  410. </script>
  411. <style>
  412. /* 顶部搜索框区域Start */
  413. .search {
  414. position: fixed;
  415. left: 0;
  416. top: 0;
  417. width: 100%;
  418. background-color: #F8F8F8;
  419. z-index: 999;
  420. }
  421. /* 顶部搜索框区域End */
  422. /* 查询区域Start */
  423. .queryView {
  424. background-color: #fff;
  425. justify-content: space-around;
  426. width: 100%;
  427. height: 90rpx;
  428. margin-top: 10px;
  429. position: fixed;
  430. top: 43px;
  431. left: 0;
  432. z-index: 999;
  433. padding-bottom: 5px;
  434. }
  435. .queryView>view {
  436. border-top: 1px solid #FFC38F;
  437. border-bottom: 1px solid #FFC38F;
  438. border-left: 1px solid #FFC38F;
  439. box-sizing: border-box;
  440. color: #FFC38F;
  441. }
  442. .queryView>view:nth-child(1) {
  443. flex: 3;
  444. }
  445. .queryView>view:nth-child(2) {
  446. flex: 4;
  447. }
  448. .queryView>view:nth-child(3) {
  449. flex: 3;
  450. }
  451. .queryView>view:nth-child(4) {
  452. border-right: 1px solid #FFC38F;
  453. flex: 3;
  454. }
  455. /* 查询区域End */
  456. </style>