|
|
@@ -0,0 +1,170 @@
|
|
|
+<template>
|
|
|
+ <div class="app-container">
|
|
|
+ <el-table
|
|
|
+ :key="tableKey"
|
|
|
+ v-loading="listLoading"
|
|
|
+ :data="list"
|
|
|
+ border
|
|
|
+ fit
|
|
|
+ highlight-current-row
|
|
|
+ style="width: 100%;"
|
|
|
+ >
|
|
|
+ <el-table-column width="130px" align="center" :label="$t('shop.productCode')" prop="SKU_CODE">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.SKU_CODE }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="250px" align="center" :label="$t('shop.productName')" prop="GOODS_TITLE">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span style="height: auto; display:-webkit-box; overflow: hidden; text-overflow: ellipsis; -webkit-box-orient:vertical; -webkit-line-clamp:1;">
|
|
|
+ {{ row.GOODS_TITLE }}
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="120px" align="center" :label="$t('shop.productBV')" prop="REAL_PV">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row | bvFilter }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="120px" align="center" :label="$t('shop.productPrice')" prop="REAL_PRICE">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.REAL_PRICE }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="80px" align="center" :label="$t('shop.qty')" prop="BUY_NUMS">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.BUY_NUMS }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="120px" align="center" :label="$t('shop.totalPrice')" prop="TOTAL_AMOUNT">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.TOTAL_AMOUNT }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="80px" align="center" :label="$t('shop.taxRate')" prop="TAX_RATE">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.TAX_RATE / 100 }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="120px" align="center" :label="$t('shop.taxAmount')" prop="TAX_AMOUNT">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.TAX_AMOUNT }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="200px" align="center" :label="$t('shop.decCode')" prop="DEC_SN">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.DEC_SN }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="200px" align="center" :label="$t('shop.orderCode')" prop="ORDER_SN">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.ORDER_SN }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="230px" align="center" :label="$t('shop.memberCode')" prop="USER_NAME">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.USER_NAME }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="230px" align="center" :label="$t('shop.memberName')" prop="REAL_NAME">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.REAL_NAME }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="150px" align="center" :label="$t('shop.shippingAddress')" prop="FULL_ADDRESS">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.FULL_ADDRESS }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="150px" align="center" :label="$t('shop.createdTime')" prop="CREATED_AT">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <span>{{ row.CREATED_AT | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column class-name="status-col" align="center" width="100" :label="$t('shop.payStatus')" prop="STATUS">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <el-tag :type="row.STATUS | statusFilter">
|
|
|
+ {{ row.STATUS }}
|
|
|
+ </el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="100px" align="center" :label="$t('shop.action')" class-name="small-padding fixed-width">
|
|
|
+ <template slot-scope="{row}">
|
|
|
+ <el-button type="primary" size="mini" @click="handleDownload(row.ORDER_SN)">{{ $t('shop.download') }}</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import {downloadBaDecOrder, fetchBaDecOrderList} from '@/api/shop'
|
|
|
+import waves from '@/directive/waves'
|
|
|
+import tool from '@/utils/tool'
|
|
|
+import Pagination from '@/components/Pagination'
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'baDecOrderList',
|
|
|
+ components: { Pagination },
|
|
|
+ directives: { waves },
|
|
|
+ filters: {
|
|
|
+ bvFilter(row) {
|
|
|
+ return tool.calculateBV(row.REAL_PV, row.BUY_NUMS)
|
|
|
+ },
|
|
|
+ taxAmountFilter(row) {
|
|
|
+ return tool.calculateTax(row.REAL_PV, row.BUY_NUMS)
|
|
|
+ },
|
|
|
+ statusFilter(status) {
|
|
|
+ const statusMap = {
|
|
|
+ Unpaid: 'info',
|
|
|
+ Paid: 'success'
|
|
|
+ }
|
|
|
+ return statusMap[status]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ tableKey: 0,
|
|
|
+ list: null,
|
|
|
+ total: 0,
|
|
|
+ listLoading: true,
|
|
|
+ listQuery: {
|
|
|
+ page: 1,
|
|
|
+ pageSize: 20
|
|
|
+ },
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ // 列表查询
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getList() {
|
|
|
+ this.listLoading = true
|
|
|
+ fetchBaDecOrderList(this.listQuery).then(response => {
|
|
|
+ this.list = response.data.list
|
|
|
+ this.total = parseInt(response.data.totalCount)
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ this.listLoading = false
|
|
|
+ }, 1.5 * 1000)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleDownload(orderSn) {
|
|
|
+ this.downloadLoading = true
|
|
|
+ downloadBaDecOrder(orderSn).then(response => {
|
|
|
+ const { fileUrl, targetName } = response.data
|
|
|
+ const downloadElement = document.createElement('a')
|
|
|
+ downloadElement.target = '_blank'
|
|
|
+ downloadElement.href = process.env.VUE_APP_BASE_API + '/' + fileUrl
|
|
|
+ downloadElement.download = targetName
|
|
|
+ downloadElement.click()
|
|
|
+ })
|
|
|
+
|
|
|
+ this.downloadLoading = false
|
|
|
+ },
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|