From 98306b8a9aa7a5cc4631100c897118436877a23d Mon Sep 17 00:00:00 2001
From: Ryanwrl <2457055764@qq.com>
Date: Sat, 23 Oct 2021 16:02:55 +0800
Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E8=AE=A2?=
=?UTF-8?q?=E5=8D=95=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/orders.js | 24 ++++
src/config/router.config.js | 15 +++
src/locales/lang/zh-CN/menu.js | 2 +
src/mock/index.js | 1 +
src/mock/services/orders.js | 33 ++++++
.../orderManagement/orderList/OrderList.vue | 112 ++++++++++++++++++
6 files changed, 187 insertions(+)
create mode 100644 src/api/orders.js
create mode 100644 src/mock/services/orders.js
create mode 100644 src/views/orderManagement/orderList/OrderList.vue
diff --git a/src/api/orders.js b/src/api/orders.js
new file mode 100644
index 0000000..de88844
--- /dev/null
+++ b/src/api/orders.js
@@ -0,0 +1,24 @@
+import request from '@/utils/request'
+import { isNumber } from '@/utils/util'
+
+const api = {
+ orderList: '/cms/order',
+ orderDone: '/cms/orderDone'
+}
+
+export function getOrderList (parameter) {
+ if (parameter.search) {
+ const apiSuffix = isNumber(parameter.search)
+ ? 'isbn'
+ : 'title'
+ return request({
+ url: api.orderList + `/${apiSuffix}/${parameter.search}/pageNum/${parameter.pageNo ? parameter.pageNo : 1}/pageSize/${parameter.pageSize ? parameter.pageSize : 20}`,
+ method: 'get'
+ })
+ } else {
+ return request({
+ url: api.orderList + `/info/pageNum/${parameter.pageNo ? parameter.pageNo : 1}/pageSize/${parameter.pageSize ? parameter.pageSize : 20}`,
+ method: 'get'
+ })
+ }
+}
diff --git a/src/config/router.config.js b/src/config/router.config.js
index bbd880a..7edb12a 100644
--- a/src/config/router.config.js
+++ b/src/config/router.config.js
@@ -29,6 +29,21 @@ export const asyncRouterMap = [
meta: { title: 'menu.bookManagement.bookList', keepAlive: false, permission: ['dashboard'] }
}
]
+ },
+ {
+ path: '/orderManagement',
+ name: 'OrderManagement',
+ component: RouteView,
+ redirect: '/orderManagement/orderList',
+ meta: { title: 'menu.orderManagement', keepAlive: true, icon: bxAnaalyse, permission: ['dashboard'] },
+ children: [
+ {
+ path: '/orderManagement/orderList',
+ name: 'OrderList',
+ component: () => import('@/views/orderManagement/orderList/OrderList'),
+ meta: { title: 'menu.orderManagement.orderList', keepAlive: false, permission: ['dashboard'] }
+ }
+ ]
}
]
// children: [
diff --git a/src/locales/lang/zh-CN/menu.js b/src/locales/lang/zh-CN/menu.js
index 658f355..e3a574d 100644
--- a/src/locales/lang/zh-CN/menu.js
+++ b/src/locales/lang/zh-CN/menu.js
@@ -3,6 +3,8 @@ export default {
'menu.home': '主页',
'menu.bookManagement': '书本管理',
'menu.bookManagement.bookList': '书本列表',
+ 'menu.orderManagement': '订单管理',
+ 'menu.orderManagement.orderList': '订单列表',
'menu.dashboard': '仪表盘',
'menu.dashboard.analysis': '分析页',
'menu.dashboard.monitor': '监控页',
diff --git a/src/mock/index.js b/src/mock/index.js
index a0ee230..b38c80a 100644
--- a/src/mock/index.js
+++ b/src/mock/index.js
@@ -16,6 +16,7 @@ if (isMock()) {
require('./services/tagCloud')
require('./services/article')
require('./services/books')
+ require('./services/orders')
Mock.setup({
timeout: 800 // setter delay time
diff --git a/src/mock/services/orders.js b/src/mock/services/orders.js
new file mode 100644
index 0000000..b2ef716
--- /dev/null
+++ b/src/mock/services/orders.js
@@ -0,0 +1,33 @@
+import Mock from 'mockjs2'
+import { builder } from '../util'
+
+const totalCount = 5701
+
+const ordersList = (options) => {
+ const arr = options.url.split('/')
+ const result = []
+ const pageNum = Number(arr[arr.indexOf('pageNum') + 1])
+ const pageSize = Number(arr[arr.indexOf('pageSize') + 1])
+ const totalPage = Math.ceil(totalCount / pageSize)
+ const next = (pageNum >= totalPage ? (totalCount % pageSize) : pageSize) + 1
+ for (let i = 1; i < next; i++) {
+ result.push({
+ isbn: Mock.mock(/^978\d{10}/),
+ title: Mock.mock('@ctitle'),
+ user: Mock.mock('@cname'),
+ price: Mock.mock('@float(1,1000,2,2)'),
+ createTime: Mock.mock("@date('yyyy-MM-dd')"),
+ status: Mock.mock(/[0-2]/)
+ })
+ }
+
+ return builder({
+ pageSize: pageSize,
+ pageNum: pageNum,
+ total: totalCount,
+ pages: totalPage,
+ list: result
+ })
+}
+
+Mock.mock(/.+\/cms\/order\/.+/, 'get', ordersList)
diff --git a/src/views/orderManagement/orderList/OrderList.vue b/src/views/orderManagement/orderList/OrderList.vue
new file mode 100644
index 0000000..397a931
--- /dev/null
+++ b/src/views/orderManagement/orderList/OrderList.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+ {{getOrderStatus(status)}}
+
+
+
+ 完成订单
+ 退款
+
+
+
+
+
+
+
--
Gitee
From ab05c151413cebd2f6b51241f816004d330353ba Mon Sep 17 00:00:00 2001
From: yaoshiliang
Date: Mon, 25 Oct 2021 21:05:17 +0800
Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E5=88=97?=
=?UTF-8?q?=E5=92=8Cmock=E6=95=B0=E6=8D=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/config/router.config.js | 5 +-
src/mock/services/orders.js | 23 +++-
.../orderManagement/orderList/OrderList.vue | 123 ++++++++++++------
3 files changed, 101 insertions(+), 50 deletions(-)
diff --git a/src/config/router.config.js b/src/config/router.config.js
index 7edb12a..e4d9e1f 100644
--- a/src/config/router.config.js
+++ b/src/config/router.config.js
@@ -1,6 +1,5 @@
// eslint-disable-next-line
import { UserLayout, BasicLayout, BlankLayout } from '@/layouts'
-import { bxAnaalyse } from '@/core/icons'
const RouteView = {
name: 'RouteView',
@@ -20,7 +19,7 @@ export const asyncRouterMap = [
name: 'BookManagement',
component: RouteView,
redirect: '/bookManagement/bookList',
- meta: { title: 'menu.bookManagement', keepAlive: true, icon: bxAnaalyse, permission: ['dashboard'] },
+ meta: { title: 'menu.bookManagement', keepAlive: true, icon: 'book', permission: ['dashboard'] },
children: [
{
path: '/bookManagement/bookList',
@@ -35,7 +34,7 @@ export const asyncRouterMap = [
name: 'OrderManagement',
component: RouteView,
redirect: '/orderManagement/orderList',
- meta: { title: 'menu.orderManagement', keepAlive: true, icon: bxAnaalyse, permission: ['dashboard'] },
+ meta: { title: 'menu.orderManagement', keepAlive: true, icon: '', permission: ['dashboard'] },
children: [
{
path: '/orderManagement/orderList',
diff --git a/src/mock/services/orders.js b/src/mock/services/orders.js
index b2ef716..5833f0a 100644
--- a/src/mock/services/orders.js
+++ b/src/mock/services/orders.js
@@ -1,7 +1,7 @@
import Mock from 'mockjs2'
import { builder } from '../util'
-const totalCount = 5701
+const totalCount = 100
const ordersList = (options) => {
const arr = options.url.split('/')
@@ -12,11 +12,22 @@ const ordersList = (options) => {
const next = (pageNum >= totalPage ? (totalCount % pageSize) : pageSize) + 1
for (let i = 1; i < next; i++) {
result.push({
- isbn: Mock.mock(/^978\d{10}/),
- title: Mock.mock('@ctitle'),
- user: Mock.mock('@cname'),
- price: Mock.mock('@float(1,1000,2,2)'),
- createTime: Mock.mock("@date('yyyy-MM-dd')"),
+ orderId: Mock.mock('@id()'),
+ money: Mock.mock('@float(1,100,2,2)'),
+ user: {
+ avatar: '',
+ nickname: Mock.mock('@cname'),
+ openId: Mock.mock('@id')
+ },
+ books: Mock.mock({
+ 'array|1-5': [
+ {
+ isbn: Mock.mock(/^978\d{10}/),
+ num: Mock.mock('@integer(1,10)')
+ }
+ ]
+ }),
+ createTime: Mock.mock('@datetime()'),
status: Mock.mock(/[0-2]/)
})
}
diff --git a/src/views/orderManagement/orderList/OrderList.vue b/src/views/orderManagement/orderList/OrderList.vue
index 397a931..192bb1d 100644
--- a/src/views/orderManagement/orderList/OrderList.vue
+++ b/src/views/orderManagement/orderList/OrderList.vue
@@ -9,16 +9,32 @@
showPagination="auto"
bordered
:pageSize="20"
- rowKey="isbn"
+ rowKey="orderId"
>
-
- {{getOrderStatus(status)}}
-
+
+
+
-
- 完成订单
- 退款
-
+
+ ¥{{ money }}
+
+
+
+ 查看详情
+
+
+ 修改状态
+
+
+ {{ menu }}
+
+
+
+
@@ -28,48 +44,70 @@
import { STable } from '@/components'
import { getOrderList } from '@/api/orders'
+ const statusMap = {
+ 0: {
+ status: 'processing',
+ text: '未完成',
+ dropDownIcon: {
+ type: 'clock-circle',
+ color: '#1890ff'
+ }
+ },
+ 1: {
+ status: 'success',
+ text: '已完成',
+ dropDownIcon: {
+ type: 'check-circle',
+ color: '#52c41a'
+ }
+ },
+ 2: {
+ status: 'error',
+ text: '退款',
+ dropDownIcon: {
+ type: 'close-circle',
+ color: '#f5222d'
+ }
+ }
+ }
+
const columns = [
{
- title: 'ISBN',
- dataIndex: 'isbn',
- scopedSlots: { customRender: 'isbn' },
- align: 'center',
- width: '9rem'
- },
- {
- title: '下单书籍',
- dataIndex: 'title',
- scopedSlots: { customRender: 'title' },
- align: 'center',
- width: '5rem'
+ title: '订单号',
+ dataIndex: 'orderId',
+ scopedSlots: { customRender: 'orderId' },
+ align: 'center'
},
{
- title: '代理商',
- dataIndex: 'user',
+ title: '用户名',
+ dataIndex: 'user.nickname',
scopedSlots: { customRender: 'user' },
- align: 'center',
- width: '5rem'
+ align: 'center'
},
{
title: '下单时间',
dataIndex: 'createTime',
scopedSlots: { customRender: 'createTime' },
- align: 'center',
- width: '5rem'
+ align: 'center'
+ },
+ {
+ title: '交易金额',
+ dataIndex: 'money',
+ scopedSlots: { customRender: 'money' },
+ align: 'center'
},
{
title: '订单状态',
dataIndex: 'status',
scopedSlots: { customRender: 'status' },
- align: 'center',
- width: '10%'
+ align: 'center'
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
- width: '6rem'
+ width: '12rem'
}
]
@@ -78,6 +116,20 @@
components: {
STable
},
+ filters: {
+ statusTextFilter (type) {
+ return statusMap[type].text
+ },
+ statusTypeFilter (type) {
+ return statusMap[type].status
+ },
+ statusIconFilter (type) {
+ return statusMap[type].dropDownIcon.type
+ },
+ statusIconColorFilter (type) {
+ return statusMap[type].dropDownIcon.color
+ }
+ },
data () {
this.columns = columns
return {
@@ -86,7 +138,6 @@
total: null,
loadData: (parameter) => {
const requestParameters = Object.assign({}, parameter, this.queryParam)
- console.log('loadData request parameters:', requestParameters)
return getOrderList(requestParameters).then(res => {
this.total = res.data.total
return res.data
@@ -95,17 +146,7 @@
}
},
methods: {
- getOrderStatus (status) {
- if (status === '0') {
- return '未完成'
- }
- if (status === '1') {
- return '已完成'
- }
- if (status === '2') {
- return '退款'
- }
- }
+
}
}
--
Gitee