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 @@
+
+
+
+
+
+
+ Save
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Buyer
+ Seller
+
+
+
+
+
+
+
+
+ Enabled
+ Disabled
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+ {{ scope.row.name }}
+
+
+
+
+
+ {{ scope.row.email }}
+
+
+
+
+
+ {{ scope.row.orderConfirmationEmail }}
+
+
+
+
+
+ {{ scope.row.phone }}
+
+
+
+
+
+
+
+ Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
-
+
- {{ scope.row.id }}
+ {{ scope.row.name }}
-
+
- {{ scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}') }}
+ {{ scope.row.email }}
-
+
- {{ scope.row.author }}
+ {{ scope.row.orderConfirmationEmail }}
-
+
-
-
-
-
-
-
-
- {{ row.status }}
-
-
-
-
-
-
-
- {{ row.title }}
-
+ {{ scope.row.phone }}
-
+
Edit
@@ -57,7 +41,7 @@