Ver Fonte

新增BA报单列表

kevin_zhangl há 3 anos atrás
pai
commit
a8bfbe24e7

+ 14 - 4
src/api/shop.js

@@ -62,10 +62,20 @@ export function createArticle(data) {
   })
 }
 
-export function updateArticle(data) {
+// BA报单列表
+export function fetchBaDecOrderList(query) {
   return request({
-    url: '/v1/article/update',
-    method: 'post',
-    data
+    url: '/v1/shop/ba-dec-order-list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 下载BA报单PDF
+export function downloadBaDecOrder(orderSn) {
+  return request({
+    url: `/v1/shop/ba-dec-order-export/${orderSn}`,
+    method: 'get',
+    params: { }
   })
 }

+ 1 - 0
src/lang/en.js

@@ -240,6 +240,7 @@ export default {
     totalPrice: 'Total Price',
     orderCode: 'Order Code',
     orderType: 'Order Type',
+    decCode: 'Dec Code',
     memberCode: 'Member Code',
     memberName: 'Member Name',
     recipientName: 'Recipient Name',

+ 1 - 0
src/lang/zh.js

@@ -241,6 +241,7 @@ export default {
     totalPrice: '商品总价',
     orderCode: '订单编号',
     orderType: '订单类型',
+    decCode: '报单编号',
     memberCode: '会员编号',
     memberName: '会员姓名',
     recipientName: '收货人',

+ 1 - 1
src/router/modules/config.js

@@ -14,7 +14,7 @@ const configRouter = {
       path: 'shipping-address-list',  // 收货地址列表
       component: () => import('@/views/config/shipping-address-list'),
       name: 'ShippingAddressList',
-      meta: { title: 'config', icon: 'user' }
+      meta: { title: 'shippingAddressList', icon: 'user' }
     },
   ]
 }

+ 6 - 0
src/router/modules/shop.js

@@ -46,6 +46,12 @@ const shopRouter = {
       component: () => import('@/views/shop/order-list'),
       name: 'OrderList',
       meta: { title: 'orderList', icon: 'el-icon-goods' }
+    },
+    {
+      path: 'ba-dec-order-list', // BA报单列表
+      component: () => import('@/views/shop/ba-dec-order-list'),
+      name: 'BaDecOrderList',
+      meta: { title: 'baDecOrderList', icon: 'el-icon-goods' }
     }
   ]
 }

+ 170 - 0
src/views/shop/ba-dec-order-list.vue

@@ -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>

+ 5 - 0
src/views/shop/dec-order-list.vue

@@ -51,6 +51,11 @@
           <span>{{ row.TOTAL_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="190px" align="center" :label="$t('shop.orderCode')" prop="ORDER_SN">
         <template slot-scope="{row}">
           <span>{{ row.ORDER_SN }}</span>