|
@@ -1,15 +1,18 @@
|
|
|
import ColHeader from '@/components/col-header'
|
|
|
import ColResult from '@/components/col-result'
|
|
|
-import { Button, Cell, CellGroup, Image, List, Tab, Tabs } from 'vant'
|
|
|
+import request from '@/helpers/request'
|
|
|
+import { Button, Cell, CellGroup, Dialog, Image, List, Tab, Tabs } from 'vant'
|
|
|
import { defineComponent } from 'vue'
|
|
|
import styles from './index.module.less'
|
|
|
+import { orderState } from '@/views/shop-mall/shop-mall'
|
|
|
+import { cartConfirm } from '@/views/cart/cart'
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'shop-order',
|
|
|
data() {
|
|
|
return {
|
|
|
- active: '0',
|
|
|
- list: [1],
|
|
|
+ active: -1,
|
|
|
+ list: [],
|
|
|
dataShow: true, // 判断是否有数据
|
|
|
loading: false,
|
|
|
finished: false,
|
|
@@ -18,13 +21,76 @@ export default defineComponent({
|
|
|
groupStatus: 'APPLY',
|
|
|
page: 1,
|
|
|
rows: 20
|
|
|
+ },
|
|
|
+ page: {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ watch: {
|
|
|
+ active(val) {
|
|
|
+ this.init()
|
|
|
+ this.getList()
|
|
|
+ }
|
|
|
+ },
|
|
|
methods: {
|
|
|
- getList() {},
|
|
|
+ init() {
|
|
|
+ this.page.pageNum = 1
|
|
|
+ this.finished = false
|
|
|
+ this.list = []
|
|
|
+ this.dataShow = true
|
|
|
+ },
|
|
|
+ async getList() {
|
|
|
+ if (this.loading) return console.log(this.loading)
|
|
|
+ this.loading = true
|
|
|
+ try {
|
|
|
+ let { code, data } = await request.get('/api-mall-portal/order/list', {
|
|
|
+ params: {
|
|
|
+ ...this.page,
|
|
|
+ status: this.active
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ if (code === 200 && data.list) {
|
|
|
+ this.page.pageNum = data.totalPage
|
|
|
+ this.list = [].concat(this.list as any, data.list)
|
|
|
+ }
|
|
|
+ if (this.list.length >= data.total) {
|
|
|
+ this.finished = true
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.list.length === 0) {
|
|
|
+ this.dataShow = false
|
|
|
+ }
|
|
|
+ } catch (error) {}
|
|
|
+ this.loading = false
|
|
|
+ },
|
|
|
onClickRight() {
|
|
|
this.$router.push('/afterSale')
|
|
|
+ },
|
|
|
+
|
|
|
+ async cancelOrder(item: any) {
|
|
|
+ let dialog = await Dialog.confirm({
|
|
|
+ title: '提示',
|
|
|
+ message: '确认取消订单?',
|
|
|
+ confirmButtonText: '取消订单',
|
|
|
+ confirmButtonColor: 'var(--van-primary)'
|
|
|
+ })
|
|
|
+ if (dialog === 'confirm') {
|
|
|
+ let { code, data } = await request.post(
|
|
|
+ '/api-mall-portal/order/cancelUserOrder',
|
|
|
+ { params: { orderId: item.id } }
|
|
|
+ )
|
|
|
+ if (code === 200) {
|
|
|
+ this.init()
|
|
|
+ this.getList()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ payOrder(item: any) {
|
|
|
+ cartConfirm.orderInfo = item
|
|
|
+ this.$router.push({ path: '/cartConfirmAgin' })
|
|
|
}
|
|
|
},
|
|
|
render() {
|
|
@@ -40,9 +106,9 @@ export default defineComponent({
|
|
|
color="var(--van-primary)"
|
|
|
lineWidth={28}
|
|
|
>
|
|
|
- <Tab name="0" title="全部"></Tab>
|
|
|
- <Tab name="1" title="处理中"></Tab>
|
|
|
- <Tab name="2" title="已处理"></Tab>
|
|
|
+ <Tab name={-1} title="全部"></Tab>
|
|
|
+ <Tab name={1} title="处理中"></Tab>
|
|
|
+ <Tab name={2} title="已处理"></Tab>
|
|
|
</Tabs>
|
|
|
)
|
|
|
}}
|
|
@@ -50,72 +116,61 @@ export default defineComponent({
|
|
|
|
|
|
{this.dataShow ? (
|
|
|
<List
|
|
|
- v-model:loading={this.loading}
|
|
|
+ loading={this.loading}
|
|
|
finished={this.finished}
|
|
|
finishedText=" "
|
|
|
class={[styles.goodsList]}
|
|
|
onLoad={this.getList}
|
|
|
>
|
|
|
{this.list.map((item: any) => (
|
|
|
- <CellGroup class={styles.cellGroup}>
|
|
|
+ <CellGroup
|
|
|
+ class={styles.cellGroup}
|
|
|
+ onClick={() => {
|
|
|
+ this.$router.push({
|
|
|
+ path: '/shopOrderDetail',
|
|
|
+ query: { id: item.id }
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ >
|
|
|
<Cell
|
|
|
- title="2022年5月6日20:58:42"
|
|
|
+ title={item.createTime}
|
|
|
titleClass={styles.payTime}
|
|
|
- value="待支付"
|
|
|
+ value={orderState[item.status]}
|
|
|
valueClass={styles.payStatus}
|
|
|
></Cell>
|
|
|
- <Cell
|
|
|
- center
|
|
|
- v-slots={{
|
|
|
- icon: () => (
|
|
|
- <Image
|
|
|
- class={styles.goodsImg}
|
|
|
- src="https://cdn.jsdelivr.net/npm/@vant/assets/cat.jpeg"
|
|
|
- fit="cover"
|
|
|
- />
|
|
|
- ),
|
|
|
- default: () => (
|
|
|
- <div class={styles.goodsContainer}>
|
|
|
- <div class={[styles.goodsTitle, 'van-ellipsis']}>
|
|
|
- 次中音号降调JBBR-1220次中音号降调JBBR-1220次中音号降调JBBR-1220
|
|
|
- </div>
|
|
|
- <div class={styles.model}>型号:默认</div>
|
|
|
- <div class={styles.goodsPrice}>
|
|
|
- <span class={styles.price}>
|
|
|
- <i>¥</i>2,5000.0
|
|
|
- </span>
|
|
|
- <span class={styles.num}>x1</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- )
|
|
|
- }}
|
|
|
- ></Cell>
|
|
|
- <Cell
|
|
|
- center
|
|
|
- v-slots={{
|
|
|
- icon: () => (
|
|
|
- <Image
|
|
|
- class={styles.goodsImg}
|
|
|
- src="https://cdn.jsdelivr.net/npm/@vant/assets/cat.jpeg"
|
|
|
- fit="cover"
|
|
|
- />
|
|
|
- ),
|
|
|
- default: () => (
|
|
|
- <div class={styles.goodsContainer}>
|
|
|
- <div class={styles.goodsTitle}>
|
|
|
- 次中音号降调JBBR-1220
|
|
|
- </div>
|
|
|
- <div class={styles.model}>型号:默认</div>
|
|
|
- <div class={styles.goodsPrice}>
|
|
|
- <span class={styles.price}>
|
|
|
- <i>¥</i>2,5000.0
|
|
|
- </span>
|
|
|
- <span class={styles.num}>x 1</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- )
|
|
|
- }}
|
|
|
- ></Cell>
|
|
|
+ {item.orderItemList
|
|
|
+ ? item.orderItemList.map((n: any) => (
|
|
|
+ <Cell
|
|
|
+ center
|
|
|
+ v-slots={{
|
|
|
+ icon: () => (
|
|
|
+ <Image
|
|
|
+ class={styles.goodsImg}
|
|
|
+ src={n.productPic}
|
|
|
+ fit="cover"
|
|
|
+ />
|
|
|
+ ),
|
|
|
+ default: () => (
|
|
|
+ <div class={styles.goodsContainer}>
|
|
|
+ <div class={[styles.goodsTitle, 'van-ellipsis']}>
|
|
|
+ {n.productName}
|
|
|
+ </div>
|
|
|
+ <div class={styles.model}>{n.productAttr}</div>
|
|
|
+ <div class={styles.goodsPrice}>
|
|
|
+ <span class={styles.price}>
|
|
|
+ <i>¥</i>
|
|
|
+ {((n.productPrice * 100) / 100).toFixed(2)}
|
|
|
+ </span>
|
|
|
+ <span class={styles.num}>
|
|
|
+ x{n.productQuantity}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ ></Cell>
|
|
|
+ ))
|
|
|
+ : null}
|
|
|
<Cell
|
|
|
center
|
|
|
v-slots={{
|
|
@@ -126,19 +181,40 @@ export default defineComponent({
|
|
|
class={styles.price}
|
|
|
style={{ paddingLeft: '5px' }}
|
|
|
>
|
|
|
- <i>¥</i>2,5000.0
|
|
|
+ <i>¥</i>
|
|
|
+ {((item.payAmount * 100) / 100).toFixed(2)}
|
|
|
</span>
|
|
|
</div>
|
|
|
),
|
|
|
default: () => (
|
|
|
<div class={styles.btnList}>
|
|
|
{/* <span class={styles.sureGoods}>已确认收货</span> */}
|
|
|
- <Button size="small" round>
|
|
|
- 取消订单
|
|
|
- </Button>
|
|
|
- <Button size="small" round type="primary">
|
|
|
- 继续支付
|
|
|
- </Button>
|
|
|
+
|
|
|
+ {item.status === 0 || item.status === 6 ? (
|
|
|
+ <>
|
|
|
+ <Button
|
|
|
+ size="small"
|
|
|
+ round
|
|
|
+ onClick={(e: Event) => {
|
|
|
+ e.stopPropagation()
|
|
|
+ this.cancelOrder(item)
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 取消订单
|
|
|
+ </Button>
|
|
|
+ <Button
|
|
|
+ size="small"
|
|
|
+ round
|
|
|
+ type="primary"
|
|
|
+ onClick={(e: Event) => {
|
|
|
+ e.stopPropagation()
|
|
|
+ this.payOrder(item)
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 继续支付
|
|
|
+ </Button>
|
|
|
+ </>
|
|
|
+ ) : null}
|
|
|
</div>
|
|
|
)
|
|
|
}}
|