index.vue 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. <template>
  2. <div>
  3. <nav-bar title="订单列表" @click-left="$router.back()">
  4. <van-tabs v-model="formData.listType" @change="handlerOrderStatus">
  5. <van-tab v-for="item in orderLinks" :title="item.name" :key="item.status" />
  6. </van-tabs>
  7. <div class="order-select" v-if="!isIns && $store.getters.isManage">
  8. <van-button
  9. v-for="btn in manageOrderList"
  10. :key="btn.id"
  11. class="manage-btn"
  12. :class="activeBtn === btn.id ? 'activeBtn' : ''"
  13. @click="handlerManage(btn.id)"
  14. >{{ btn.title }}</van-button
  15. >
  16. </div>
  17. </nav-bar>
  18. <div class="order-list">
  19. <order-list-card
  20. @handlerOrder="handlerOrder"
  21. v-for="item in dataList"
  22. :key="item.id"
  23. :status="item.status"
  24. :userId="item.userId"
  25. :productInfo="item.orderProductList[0]"
  26. >
  27. <template #order-head>
  28. <div class="order-place" v-if="isIns && activeBtn === 2">
  29. <div class="order-No">订单号:{{ item.shopOrderNo }}</div>
  30. <div class="order-time-state">
  31. <div class="order-time">下单时间:{{ item.orderTime }}</div>
  32. <div class="order-state">{{ item.status | statusFilters }}</div>
  33. </div>
  34. </div>
  35. <div class="order-team" v-if="activeBtn !== 2 && !isIns">
  36. <div class="order-name">{{ item.clubName }}</div>
  37. <div class="order-author">{{ item.linkMan }}</div>
  38. </div>
  39. </template>
  40. <template #order-foot>
  41. <div class="order-btn-all" v-if="activeBtn === 2">
  42. <order-btn-type
  43. :productInfo="item"
  44. :status="item.status"
  45. :activeBtn="activeBtn"
  46. @orderCancel="orderCancel"
  47. @orderPay="orderPay"
  48. @orderQuery="orderQuery"
  49. @orderConfirm="orderConfirm"
  50. @shareOrder="shareOrder"
  51. />
  52. </div>
  53. </template>
  54. </order-list-card>
  55. </div>
  56. </div>
  57. </template>
  58. <script>
  59. import { orderList, orderInsList } from '@/api/institutionApi/order'
  60. import OrderBtnType from './components/order-btn-type'
  61. import orderIndex from './mixins/order-index'
  62. import { Toast } from 'vant'
  63. export default {
  64. mixins: [orderIndex],
  65. components: { OrderBtnType },
  66. data () {
  67. return {
  68. orderLinks: [
  69. {
  70. status: 0,
  71. icon: '',
  72. link: '',
  73. content: 200,
  74. name: '全部订单'
  75. },
  76. {
  77. status: 1,
  78. icon: '',
  79. link: '',
  80. content: 200,
  81. name: '待确认'
  82. },
  83. {
  84. status: 2,
  85. icon: '',
  86. link: '',
  87. content: 200,
  88. name: '待付款'
  89. },
  90. {
  91. status: 3,
  92. icon: '',
  93. link: '',
  94. content: 200,
  95. name: '待发货'
  96. },
  97. {
  98. status: 4,
  99. icon: '',
  100. link: '',
  101. content: 200,
  102. name: '已发货'
  103. },
  104. {
  105. status: 5,
  106. icon: '',
  107. link: '',
  108. content: 200,
  109. name: '退货/款'
  110. }
  111. ],
  112. manageOrderList: [
  113. {
  114. id: 2,
  115. title: '我的订单'
  116. },
  117. {
  118. id: 3,
  119. title: '团队订单'
  120. }
  121. ],
  122. activeBtn: 2,
  123. active: 0,
  124. formData: {
  125. pageSize: 20,
  126. pageNum: 1,
  127. serviceProviderId: this.$store.getters.userInfo.id, // 1381
  128. groupServiceId: 0,
  129. listType: this.$route.query.active || 0,
  130. orderSubmitType: 1,
  131. type: 2,
  132. orderState: 0
  133. },
  134. dataList: []
  135. }
  136. },
  137. computed: {
  138. isIns () {
  139. return this.$route.query.isIns
  140. },
  141. uId () {
  142. return this.$route.query.uId || 666808
  143. }
  144. },
  145. mounted () {
  146. if (this.isIns) {
  147. this.orderInsList()
  148. } else {
  149. this.handlerManage(this.activeBtn)
  150. }
  151. },
  152. methods: {
  153. async handlerManage (id) {
  154. this.activeBtn = id
  155. this.formData.orderSubmitType = id
  156. const j =
  157. id === 1
  158. ? { id: this.$store.getters.userInfo.id }
  159. : { parentId: this.$store.getters.userInfo.id }
  160. const form = {
  161. ...this.formData,
  162. ...j
  163. }
  164. const data = await orderList(form)
  165. this.dataList = data.list
  166. },
  167. async orderInsList () {
  168. const data = await orderInsList(Object.assign(this.formData, { userId: this.uId }))
  169. this.dataList = data.list
  170. },
  171. handlerOrder (item) {
  172. console.log(item)
  173. this.$router.push(
  174. `/order-detail?shopOrderId=${item[0].shopOrderId}&userId=${item[1]}&isIns=${this.isIns}&activeBtn=${this.activeBtn}`
  175. )
  176. },
  177. async orderList (form) {
  178. const data = await orderList(form)
  179. this.dataList = data
  180. },
  181. handlerOrderStatus ($event) {
  182. if (this.isIns) {
  183. this.formData.orderState = $event
  184. return this.orderInsList()
  185. }
  186. this.handlerManage(this.activeBtn)
  187. },
  188. orderCancel () {
  189. console.log('取消订单')
  190. this.handlerManage(this.activeBtn)
  191. },
  192. orderQuery () {
  193. console.log('查看物流')
  194. },
  195. orderPay () {
  196. console.log('支付订单')
  197. },
  198. orderConfirm () {
  199. this.handlerManage(this.activeBtn)
  200. },
  201. // 分享当前页面
  202. initAppMessageShareData (info) {
  203. this.$wxReady((wx) => {
  204. // 需在用户可能点击分享按钮前就先调用
  205. wx.updateAppMessageShareData({
  206. title: '分享订单', // 分享标题
  207. desc: '分享订单', // 分享描述
  208. link: `https://sell-b.caimei365.com/#/share?type=1&shopOrderId=${info.shopOrderId}&userId=${info.userId}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
  209. imgUrl: 'https://static.caimei365.com/app/mini-distribution/qrcode.png', // 分享图标
  210. fail: () => {
  211. this.initAppMessageShareData(info)
  212. }
  213. })
  214. })
  215. },
  216. shareOrder (info) {
  217. this.initAppMessageShareData(info)
  218. setTimeout(() => {
  219. Toast.success('请点击右上角...进行分享')
  220. }, 1000)
  221. }
  222. }
  223. }
  224. </script>
  225. <style lang="scss" scoped>
  226. .van-tab {
  227. line-height: 0;
  228. }
  229. ::v-deep .van-tab--active {
  230. color: #ff5b00;
  231. font-weight: 600;
  232. }
  233. ::v-deep .van-tabs__line {
  234. background: #ff5b00;
  235. }
  236. .order-list-card {
  237. border-radius: 1.1vw;
  238. margin: 3vw 0;
  239. }
  240. .order-list {
  241. padding: 0 3.2vw 3.2vw 3.2vw;
  242. }
  243. .order-select {
  244. background: #f5f5f5;
  245. padding: 4.3vw 3.2vw;
  246. display: flex;
  247. align-items: center;
  248. .manage-btn {
  249. background: #fff;
  250. color: #666666;
  251. width: 32vw;
  252. height: 9.6vw;
  253. border-radius: 1.1vw;
  254. margin-right: 3.2vw;
  255. &.activeBtn {
  256. color: #fff;
  257. background: #ff5b00;
  258. }
  259. }
  260. }
  261. .order-place {
  262. padding-bottom: 3.2vw;
  263. border-bottom: 1px solid #e1e1e1;
  264. margin-bottom: 5.3vw;
  265. .order-No {
  266. color: #333333;
  267. font-size: 3.7vw;
  268. margin-bottom: 1.3vw;
  269. }
  270. .order-time-state {
  271. @include display-flex-between;
  272. .order-time {
  273. color: #999999;
  274. font-size: 3.5vw;
  275. }
  276. .order-state {
  277. color: #ff2a2a;
  278. font-size: 3.5vw;
  279. }
  280. }
  281. }
  282. .order-team {
  283. display: flex;
  284. justify-content: space-between;
  285. padding-bottom: 3.2vw;
  286. border-bottom: 1px solid #e1e1e1;
  287. margin-bottom: 4.3vw;
  288. .order-name {
  289. color: #333333;
  290. font-size: 4.3vw;
  291. font-weight: 600;
  292. }
  293. .order-author {
  294. padding: 0.5vw 3vw;
  295. background: #ffeee4;
  296. color: #ff5b00;
  297. font-size: 3.7vw;
  298. }
  299. }
  300. .order-btn-all {
  301. margin-top: 4.3vw;
  302. ::v-deep .van-button {
  303. width: 21.3vw;
  304. height: 8.5vw;
  305. border-radius: 1.1vw;
  306. margin-left: 3.2vw;
  307. font-size: 3.5vw;
  308. white-space: nowrap;
  309. margin-bottom: 2vw;
  310. }
  311. }
  312. </style>