diff --git a/mock/account.js b/mock/account.js new file mode 100644 index 00000000..4656a7c7 --- /dev/null +++ b/mock/account.js @@ -0,0 +1,114 @@ +import Mock from 'mockjs' + +const List = [] +const count = 100 + +const baseContent = '

I am testing data, I am testing data.

' +const image_uri = 'https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3' + +for (let i = 0; i < count; i++) { + List.push(Mock.mock({ + id: '@increment', + timestamp: +Mock.Random.date('T'), + author: '@first', + reviewer: '@first', + title: '@title(5, 10)', + content_short: 'mock data', + content: baseContent, + forecast: '@float(0, 100, 2, 2)', + importance: '@integer(1, 3)', + 'type|1': ['CN', 'US', 'JP', 'EU'], + 'status|1': ['published', 'draft', 'deleted'], + display_time: '@datetime', + comment_disabled: true, + pageviews: '@integer(300, 5000)', + image_uri, + platforms: ['a-platform'] + })) +} + +export default [ + { + url: '/account/list', + type: 'get', + response: config => { + const { type, page = 1, limit = 20, sort } = config.query + + let mockList = List.filter(item => { + if (type && item.type !== type) return false + return true + }) + + if (sort === '-id') { + mockList = mockList.reverse() + } + + const pageList = mockList.filter((item, index) => index < limit * page && index >= limit * (page - 1)) + + return { + code: 20000, + data: { + total: mockList.length, + items: pageList + } + } + } + }, + + { + url: '/article/detail', + type: 'get', + response: config => { + const { id } = config.query + for (const article of List) { + if (article.id === +id) { + return { + code: 20000, + data: article + } + } + } + } + }, + + { + url: '/article/pv', + type: 'get', + response: _ => { + return { + code: 20000, + data: { + pvData: [ + { key: 'PC', pv: 1024 }, + { key: 'mobile', pv: 1024 }, + { key: 'ios', pv: 1024 }, + { key: 'android', pv: 1024 } + ] + } + } + } + }, + + { + url: '/article/create', + type: 'post', + response: _ => { + return { + code: 20000, + data: 'success' + } + } + }, + + { + url: '/article/update', + type: 'post', + response: _ => { + return { + code: 20000, + data: 'success' + } + } + } +] + diff --git a/mock/index.js b/mock/index.js index 6907e861..0f037da8 100644 --- a/mock/index.js +++ b/mock/index.js @@ -5,8 +5,10 @@ import user from './user' import role from './role' import article from './article' import search from './remote-search' +import account from './account' const mocks = [ + ...account, ...user, ...role, ...article, diff --git a/src/api/account.js b/src/api/account.js new file mode 100644 index 00000000..4176dbd8 --- /dev/null +++ b/src/api/account.js @@ -0,0 +1,47 @@ +import axios from 'axios' + +export function fetchList(query) { + return axios.get('https://users.service.development.therig.onlinefuelslabs.io/account/search', { params: query }) +} + +export function fetchAccount(id) { + return axios.get(`https://users.service.development.therig.onlinefuelslabs.io/account/${id}`) +} + +export function createAccount(data) { + const dto = { + 'name': data.name, + 'type': data.type, + 'email': data.email, + 'platform': data.platform || 'OLFDE', + 'phone': data.phone, + 'status': parseInt(data.status), + 'orderConfirmationEmail': data.orderConfirmationEmail, + 'addressLine1': data.address.addressLine1, + 'addressLine2': data.address.addressLine2, + 'county': data.address.county, + 'country': data.address.country, + 'postCode': data.address.postCode + } + + return axios.post(`https://users.service.development.therig.onlinefuelslabs.io/account/create`, dto) +} + +export function updateAccount(data) { + const dto = { + 'name': data.name, + 'type': data.type, + 'email': data.email, + 'platform': data.platform, + 'phone': data.phone, + 'status': parseInt(data.status), + 'orderConfirmationEmail': data.orderConfirmationEmail, + 'addressLine1': data.address.addressLine1, + 'addressLine2': data.address.addressLine2, + 'county': data.address.county, + 'country': data.address.country, + 'postCode': data.address.postCode + } + + return axios.put(`https://users.service.development.therig.onlinefuelslabs.io/account/${data.id}`, dto) +} diff --git a/src/router/index.js b/src/router/index.js index b065e8a8..93f07d33 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,9 +8,7 @@ import Layout from '@/layout' /* Router Modules */ import componentsRouter from './modules/components' -import chartsRouter from './modules/charts' import tableRouter from './modules/table' -import nestedRouter from './modules/nested' /** * Note: sub-menu only appear when route children.length >= 1 @@ -146,38 +144,42 @@ export const asyncRoutes = [ /** when your routing map is too long, you can split it into small modules **/ componentsRouter, - chartsRouter, - nestedRouter, tableRouter, { - path: '/example', + path: '/accounts', component: Layout, - redirect: '/example/list', - name: 'Example', + redirect: '/accounts/list', + name: 'Accounts', meta: { - title: 'Example', + title: 'Accounts', icon: 'example' }, children: [ { path: 'create', - component: () => import('@/views/example/create'), - name: 'CreateArticle', - meta: { title: 'Create Article', icon: 'edit' } + component: () => import('@/views/accounts/create'), + name: 'CreateAccount', + meta: { title: 'Create Account', icon: 'edit' } }, { - path: 'edit/:id(\\d+)', - component: () => import('@/views/example/edit'), - name: 'EditArticle', - meta: { title: 'Edit Article', noCache: true, activeMenu: '/example/list' }, + path: 'edit/:id', + component: () => import('@/views/accounts/edit'), + name: 'EditAccount', + meta: { title: 'Edit Account', noCache: true, activeMenu: '/accounts/list' }, hidden: true }, { - path: 'list', - component: () => import('@/views/example/list'), - name: 'ArticleList', - meta: { title: 'Article List', icon: 'list' } + path: 'buyer-list', + component: () => import('@/views/accounts/list'), + name: 'BuyerAccountList', + meta: { title: 'Buyer Account List', icon: 'list', type: 'buyer' } + }, + { + path: 'seller-list', + component: () => import('@/views/accounts/list'), + name: 'SellerAccountList', + meta: { title: 'Seller Account List', icon: 'list', type: 'seller' } } ] }, diff --git a/src/views/accounts/components/AccountDetail.vue b/src/views/accounts/components/AccountDetail.vue new file mode 100644 index 00000000..e3d85cae --- /dev/null +++ b/src/views/accounts/components/AccountDetail.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/src/views/accounts/create.vue b/src/views/accounts/create.vue new file mode 100644 index 00000000..d8a74df5 --- /dev/null +++ b/src/views/accounts/create.vue @@ -0,0 +1,13 @@ + + + + diff --git a/src/views/accounts/edit.vue b/src/views/accounts/edit.vue new file mode 100644 index 00000000..748ebb82 --- /dev/null +++ b/src/views/accounts/edit.vue @@ -0,0 +1,13 @@ + + + + diff --git a/src/views/accounts/list.vue b/src/views/accounts/list.vue new file mode 100644 index 00000000..795ace05 --- /dev/null +++ b/src/views/accounts/list.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/views/example/list.vue b/src/views/example/list.vue index 7cdc4ac0..795ace05 100644 --- a/src/views/example/list.vue +++ b/src/views/example/list.vue @@ -1,49 +1,33 @@