選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

useOrderListItem.ts 5.1KB

2年前
1年前
1年前
1年前
2年前
2年前
2年前
1年前
2年前
1年前
2年前
2年前
1年前
2年前
1年前
2年前
1年前
1年前
2年前
1年前
2年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
1年前
2年前
1年前
2年前
2年前
2年前
1年前
2年前
1年前
2年前
1年前
2年前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. /**
  2. * 订单列表业务逻辑
  3. */
  4. import { reactive, ref, watch, nextTick, onMounted } from "vue";
  5. import { request } from "@/utils/network/request.js";
  6. import { stringToJson } from "@/utils/network/encryption";
  7. import { onLoad, onUnload, onReachBottom, onPullDownRefresh, onShow } from "@dcloudio/uni-app";
  8. import { getItem, StorageKeys, setItem } from "@/utils/storage";
  9. import { hasLogin, msg, timesDiff } from "@/utils/utils";
  10. import { orderList, appPage } from "@/utils/network/api";
  11. import { PageData } from "@/datas/enum";
  12. const tools = require("../../static/etcUtil/tools.js");
  13. export default function useOrderListItem(props) {
  14. //搜索关键字
  15. const searchKeyWords = ref('');
  16. const tabName = ref('小程序');
  17. //订单列表数据
  18. const ordersList = ref([]);
  19. const config = {
  20. emptyHint: {
  21. hint: '~ 暂无订单数据 ~',
  22. icon: '',
  23. mode: 'order'
  24. },
  25. contentTxt: {
  26. contentdown: '~上拉加载更多~',
  27. contentrefresh: '努力加载中...',
  28. contentnomore: '-- 我是有底线的 --'
  29. }
  30. }
  31. //请求参数
  32. const params = reactive({
  33. pageNum: PageData.NUM,
  34. pageSize: PageData.SIZE,
  35. total: 0,
  36. status: 'more',
  37. reload: false,
  38. })
  39. //搜索
  40. const doSearch = () => {
  41. // #ifdef MP-WEIXIN
  42. if (!searchKeyWords.value) {
  43. msg('请输入需要搜索的车牌号!');
  44. return;
  45. }
  46. refreshList(true);
  47. // #endif
  48. // #ifdef MP-ALIPAY
  49. tools.showLoadingAlert("加载中");
  50. refreshList(true);
  51. tools.hideLoadingAlert();
  52. // #endif
  53. }
  54. //订单车牌号输入
  55. const onKeyInput = (event) => {
  56. searchKeyWords.value = event.target.value;
  57. if (searchKeyWords.value == '') {
  58. refreshList(true);
  59. }
  60. }
  61. /* 刷新列表 */
  62. const refreshList = (isLoading) => {
  63. console.log("========", isLoading)
  64. params.pageNum = 1;
  65. params.total = 0;
  66. params.status = 'more';
  67. params.reload = false;
  68. getList();
  69. }
  70. const changeTab = (tabOption) => {
  71. console.log("tabOption", tabOption)
  72. tabName.value = tabOption
  73. refreshList(true)
  74. }
  75. /* 加载更多 */
  76. const loadMore = () => {
  77. if (params.total > ordersList.value.length) {
  78. params.status = 'loading';
  79. params.pageNum++;
  80. getList();
  81. } else {
  82. params.status = 'noMore';
  83. }
  84. }
  85. /* 获取列表数据 */
  86. const getList = async () => {
  87. console.log("props.refresh", props.refresh)
  88. if (!hasLogin()) {
  89. uni.stopPullDownRefresh();
  90. uni.$emit('refreshFinish');
  91. return;
  92. }
  93. let res : any = null;
  94. let newsource = "WECHAT"
  95. // #ifdef MP-ALIPAY
  96. newsource = "ALI"
  97. // #endif
  98. let options = {}
  99. console.log("tabName.value", tabName.value)
  100. options = {
  101. type: 2,
  102. data: {
  103. "opId": getItem(StorageKeys.OpenId),
  104. "source": newsource,
  105. "vehiclePlate": searchKeyWords.value,
  106. "tabIndex": props.index + '',
  107. "pageNo": params.pageNum,
  108. "pageSize": params.pageSize,
  109. "promotionModes": 1,
  110. },
  111. method: 'POST',
  112. showLoading: true
  113. }
  114. try {
  115. request(orderList, options).then((res) => {
  116. uni.hideLoading()
  117. var data = stringToJson(res.bizContent);
  118. console.log("ordersList.value", data)
  119. params.total = data.totalCount;
  120. if (params.pageNum === 1) {
  121. ordersList.value = [];
  122. }
  123. if (params.total > 0) {
  124. const curList = data.data || [];
  125. ordersList.value = params.reload ? curList : ordersList.value.concat(curList);
  126. params.reload = false;
  127. }
  128. if (params.total === ordersList.value.length) {
  129. params.reload = false;
  130. params.status = 'noMore';
  131. }
  132. if (params.pageNum === 1) {
  133. uni.stopPullDownRefresh();
  134. }
  135. // 订单发货后未激活 30天 以后 结束订单功能 insertTime >30 算出来距离今天是负数 updateTime<30(结束订单)
  136. for (var k = 0; k < ordersList.value.length; k++) {
  137. if (ordersList.value[k]['insertTime']) {
  138. if (timesDiff(ordersList.value[k]['insertTime'].replace("T", " ")).days > 30) {
  139. ordersList.value[k]['finishOrder'] = true //可以结束
  140. } else {
  141. ordersList.value[k]['finishOrder'] = false //不可以结束
  142. }
  143. }
  144. if (ordersList.value[k]['updateTime']) {
  145. if (timesDiff(ordersList.value[k]['updateTime'].replace("T", " ")).days <= 30) {
  146. ordersList.value[k]['isUseAgain'] = true //可以再次使用
  147. } else {
  148. ordersList.value[k]['isUseAgain'] = false //不可以再次使用
  149. }
  150. }
  151. }
  152. uni.$emit("refreshOrder");
  153. console.log('输出内容小程序', ordersList)
  154. })
  155. .catch((err) => {
  156. console.log(err);
  157. });
  158. } catch (e) {
  159. uni.stopPullDownRefresh();
  160. }
  161. console.log("订单列表查询", options)
  162. }
  163. watch(() => props.index, () => {
  164. console.log("watch1111")
  165. refreshList(true);
  166. });
  167. // watch(() => props.refresh, (nv) => {
  168. // console.log("watch222222221", props.refresh)
  169. // if (nv) {
  170. // refreshList(false);
  171. // }
  172. // });
  173. onMounted(() => {
  174. if (props.refresh) {
  175. refreshList(false);
  176. }
  177. })
  178. onPullDownRefresh(() => {
  179. refreshList(true);
  180. });
  181. onReachBottom(() => {
  182. loadMore();
  183. });
  184. onShow(() => {
  185. console.log("一进页面就刷新")
  186. refreshList(true);
  187. })
  188. return {
  189. config,
  190. params,
  191. ordersList,
  192. doSearch,
  193. onKeyInput,
  194. refreshList,
  195. changeTab,
  196. tabName
  197. };
  198. }