diff --git a/mock/config.js b/mock/config.js new file mode 100644 index 0000000..7d111e0 --- /dev/null +++ b/mock/config.js @@ -0,0 +1,15 @@ +// import { param2Obj } from './utils' + +const baseConfig = { + kaptcha: true +} + +export default { + baseconfig: res => { + return { + code: 200, + success: true, + data: baseConfig + } + } +} diff --git a/mock/config.js b/mock/config.js new file mode 100644 index 0000000..7d111e0 --- /dev/null +++ b/mock/config.js @@ -0,0 +1,15 @@ +// import { param2Obj } from './utils' + +const baseConfig = { + kaptcha: true +} + +export default { + baseconfig: res => { + return { + code: 200, + success: true, + data: baseConfig + } + } +} diff --git a/mock/index.js b/mock/index.js new file mode 100644 index 0000000..9eb5a47 --- /dev/null +++ b/mock/index.js @@ -0,0 +1,26 @@ +import Mock from 'mockjs' +import userAPI from './user' +import tableAPI from './table' + +// Fix an issue with setting withCredentials = true, cross-domain request lost cookies +// https://github.com/nuysoft/Mock/issues/300 +Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send +Mock.XHR.prototype.send = function() { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false + } + this.proxy_send(...arguments) +} +// Mock.setup({ +// timeout: '350-600' +// }) + +// User +Mock.mock(/\/user\/login/, 'post', userAPI.login) +Mock.mock(/\/user\/info/, 'get', userAPI.getInfo) +Mock.mock(/\/user\/logout/, 'post', userAPI.logout) + +// Table +Mock.mock(/\/table\/list/, 'get', tableAPI.list) + +export default Mock diff --git a/mock/config.js b/mock/config.js new file mode 100644 index 0000000..7d111e0 --- /dev/null +++ b/mock/config.js @@ -0,0 +1,15 @@ +// import { param2Obj } from './utils' + +const baseConfig = { + kaptcha: true +} + +export default { + baseconfig: res => { + return { + code: 200, + success: true, + data: baseConfig + } + } +} diff --git a/mock/index.js b/mock/index.js new file mode 100644 index 0000000..9eb5a47 --- /dev/null +++ b/mock/index.js @@ -0,0 +1,26 @@ +import Mock from 'mockjs' +import userAPI from './user' +import tableAPI from './table' + +// Fix an issue with setting withCredentials = true, cross-domain request lost cookies +// https://github.com/nuysoft/Mock/issues/300 +Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send +Mock.XHR.prototype.send = function() { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false + } + this.proxy_send(...arguments) +} +// Mock.setup({ +// timeout: '350-600' +// }) + +// User +Mock.mock(/\/user\/login/, 'post', userAPI.login) +Mock.mock(/\/user\/info/, 'get', userAPI.getInfo) +Mock.mock(/\/user\/logout/, 'post', userAPI.logout) + +// Table +Mock.mock(/\/table\/list/, 'get', tableAPI.list) + +export default Mock diff --git a/mock/table.js b/mock/table.js new file mode 100644 index 0000000..810b3c1 --- /dev/null +++ b/mock/table.js @@ -0,0 +1,20 @@ +import Mock from 'mockjs' + +export default { + list: () => { + const items = Mock.mock({ + 'items|30': [{ + id: '@id', + title: '@sentence(10, 20)', + 'status|1': ['published', 'draft', 'deleted'], + author: 'name', + display_time: '@datetime', + pageviews: '@integer(300, 5000)' + }] + }) + return { + code: 20000, + data: items + } + } +} diff --git a/mock/config.js b/mock/config.js new file mode 100644 index 0000000..7d111e0 --- /dev/null +++ b/mock/config.js @@ -0,0 +1,15 @@ +// import { param2Obj } from './utils' + +const baseConfig = { + kaptcha: true +} + +export default { + baseconfig: res => { + return { + code: 200, + success: true, + data: baseConfig + } + } +} diff --git a/mock/index.js b/mock/index.js new file mode 100644 index 0000000..9eb5a47 --- /dev/null +++ b/mock/index.js @@ -0,0 +1,26 @@ +import Mock from 'mockjs' +import userAPI from './user' +import tableAPI from './table' + +// Fix an issue with setting withCredentials = true, cross-domain request lost cookies +// https://github.com/nuysoft/Mock/issues/300 +Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send +Mock.XHR.prototype.send = function() { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false + } + this.proxy_send(...arguments) +} +// Mock.setup({ +// timeout: '350-600' +// }) + +// User +Mock.mock(/\/user\/login/, 'post', userAPI.login) +Mock.mock(/\/user\/info/, 'get', userAPI.getInfo) +Mock.mock(/\/user\/logout/, 'post', userAPI.logout) + +// Table +Mock.mock(/\/table\/list/, 'get', tableAPI.list) + +export default Mock diff --git a/mock/table.js b/mock/table.js new file mode 100644 index 0000000..810b3c1 --- /dev/null +++ b/mock/table.js @@ -0,0 +1,20 @@ +import Mock from 'mockjs' + +export default { + list: () => { + const items = Mock.mock({ + 'items|30': [{ + id: '@id', + title: '@sentence(10, 20)', + 'status|1': ['published', 'draft', 'deleted'], + author: 'name', + display_time: '@datetime', + pageviews: '@integer(300, 5000)' + }] + }) + return { + code: 20000, + data: items + } + } +} diff --git a/mock/user.js b/mock/user.js new file mode 100644 index 0000000..0a1c617 --- /dev/null +++ b/mock/user.js @@ -0,0 +1,70 @@ +import { param2Obj } from './utils' + +const tokens = { + admin: { + token: 'admin-token' + }, + editor: { + token: 'editor-token' + } +} + +const users = { + 'admin-token': { + roles: ['admin'], + btns: ['kaptcha'], + introduction: 'I am a 超级管理员', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'mock Admin' + }, + 'editor-token': { + roles: ['editor'], + btns: [], + introduction: 'I am an editor', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Normal Editor' + } +} + +export default { + login: res => { + const { username } = JSON.parse(res.body) + const data = tokens[username] + + if (data) { + return { + code: 200, + success: true, + data + } + } + return { + code: 60204, + success: false, + message: '账户或密码错误.' + } + }, + getInfo: res => { + const { token } = param2Obj(res.url) + const info = users[token] + + if (info) { + return { + code: 200, + success: true, + data: info + } + } + return { + code: 50008, + success: false, + message: '登录失败,无法获取用户信息.' + } + }, + logout: () => { + return { + code: 200, + success: true + } + } +} diff --git a/mock/config.js b/mock/config.js new file mode 100644 index 0000000..7d111e0 --- /dev/null +++ b/mock/config.js @@ -0,0 +1,15 @@ +// import { param2Obj } from './utils' + +const baseConfig = { + kaptcha: true +} + +export default { + baseconfig: res => { + return { + code: 200, + success: true, + data: baseConfig + } + } +} diff --git a/mock/index.js b/mock/index.js new file mode 100644 index 0000000..9eb5a47 --- /dev/null +++ b/mock/index.js @@ -0,0 +1,26 @@ +import Mock from 'mockjs' +import userAPI from './user' +import tableAPI from './table' + +// Fix an issue with setting withCredentials = true, cross-domain request lost cookies +// https://github.com/nuysoft/Mock/issues/300 +Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send +Mock.XHR.prototype.send = function() { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false + } + this.proxy_send(...arguments) +} +// Mock.setup({ +// timeout: '350-600' +// }) + +// User +Mock.mock(/\/user\/login/, 'post', userAPI.login) +Mock.mock(/\/user\/info/, 'get', userAPI.getInfo) +Mock.mock(/\/user\/logout/, 'post', userAPI.logout) + +// Table +Mock.mock(/\/table\/list/, 'get', tableAPI.list) + +export default Mock diff --git a/mock/table.js b/mock/table.js new file mode 100644 index 0000000..810b3c1 --- /dev/null +++ b/mock/table.js @@ -0,0 +1,20 @@ +import Mock from 'mockjs' + +export default { + list: () => { + const items = Mock.mock({ + 'items|30': [{ + id: '@id', + title: '@sentence(10, 20)', + 'status|1': ['published', 'draft', 'deleted'], + author: 'name', + display_time: '@datetime', + pageviews: '@integer(300, 5000)' + }] + }) + return { + code: 20000, + data: items + } + } +} diff --git a/mock/user.js b/mock/user.js new file mode 100644 index 0000000..0a1c617 --- /dev/null +++ b/mock/user.js @@ -0,0 +1,70 @@ +import { param2Obj } from './utils' + +const tokens = { + admin: { + token: 'admin-token' + }, + editor: { + token: 'editor-token' + } +} + +const users = { + 'admin-token': { + roles: ['admin'], + btns: ['kaptcha'], + introduction: 'I am a 超级管理员', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'mock Admin' + }, + 'editor-token': { + roles: ['editor'], + btns: [], + introduction: 'I am an editor', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Normal Editor' + } +} + +export default { + login: res => { + const { username } = JSON.parse(res.body) + const data = tokens[username] + + if (data) { + return { + code: 200, + success: true, + data + } + } + return { + code: 60204, + success: false, + message: '账户或密码错误.' + } + }, + getInfo: res => { + const { token } = param2Obj(res.url) + const info = users[token] + + if (info) { + return { + code: 200, + success: true, + data: info + } + } + return { + code: 50008, + success: false, + message: '登录失败,无法获取用户信息.' + } + }, + logout: () => { + return { + code: 200, + success: true + } + } +} diff --git a/mock/utils.js b/mock/utils.js new file mode 100644 index 0000000..7d5f7cb --- /dev/null +++ b/mock/utils.js @@ -0,0 +1,14 @@ +export function param2Obj(url) { + const search = url.split('?')[1] + if (!search) { + return {} + } + return JSON.parse( + '{"' + + decodeURIComponent(search) + .replace(/"/g, '\\"') + .replace(/&/g, '","') + .replace(/=/g, '":"') + + '"}' + ) +} diff --git a/mock/config.js b/mock/config.js new file mode 100644 index 0000000..7d111e0 --- /dev/null +++ b/mock/config.js @@ -0,0 +1,15 @@ +// import { param2Obj } from './utils' + +const baseConfig = { + kaptcha: true +} + +export default { + baseconfig: res => { + return { + code: 200, + success: true, + data: baseConfig + } + } +} diff --git a/mock/index.js b/mock/index.js new file mode 100644 index 0000000..9eb5a47 --- /dev/null +++ b/mock/index.js @@ -0,0 +1,26 @@ +import Mock from 'mockjs' +import userAPI from './user' +import tableAPI from './table' + +// Fix an issue with setting withCredentials = true, cross-domain request lost cookies +// https://github.com/nuysoft/Mock/issues/300 +Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send +Mock.XHR.prototype.send = function() { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false + } + this.proxy_send(...arguments) +} +// Mock.setup({ +// timeout: '350-600' +// }) + +// User +Mock.mock(/\/user\/login/, 'post', userAPI.login) +Mock.mock(/\/user\/info/, 'get', userAPI.getInfo) +Mock.mock(/\/user\/logout/, 'post', userAPI.logout) + +// Table +Mock.mock(/\/table\/list/, 'get', tableAPI.list) + +export default Mock diff --git a/mock/table.js b/mock/table.js new file mode 100644 index 0000000..810b3c1 --- /dev/null +++ b/mock/table.js @@ -0,0 +1,20 @@ +import Mock from 'mockjs' + +export default { + list: () => { + const items = Mock.mock({ + 'items|30': [{ + id: '@id', + title: '@sentence(10, 20)', + 'status|1': ['published', 'draft', 'deleted'], + author: 'name', + display_time: '@datetime', + pageviews: '@integer(300, 5000)' + }] + }) + return { + code: 20000, + data: items + } + } +} diff --git a/mock/user.js b/mock/user.js new file mode 100644 index 0000000..0a1c617 --- /dev/null +++ b/mock/user.js @@ -0,0 +1,70 @@ +import { param2Obj } from './utils' + +const tokens = { + admin: { + token: 'admin-token' + }, + editor: { + token: 'editor-token' + } +} + +const users = { + 'admin-token': { + roles: ['admin'], + btns: ['kaptcha'], + introduction: 'I am a 超级管理员', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'mock Admin' + }, + 'editor-token': { + roles: ['editor'], + btns: [], + introduction: 'I am an editor', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Normal Editor' + } +} + +export default { + login: res => { + const { username } = JSON.parse(res.body) + const data = tokens[username] + + if (data) { + return { + code: 200, + success: true, + data + } + } + return { + code: 60204, + success: false, + message: '账户或密码错误.' + } + }, + getInfo: res => { + const { token } = param2Obj(res.url) + const info = users[token] + + if (info) { + return { + code: 200, + success: true, + data: info + } + } + return { + code: 50008, + success: false, + message: '登录失败,无法获取用户信息.' + } + }, + logout: () => { + return { + code: 200, + success: true + } + } +} diff --git a/mock/utils.js b/mock/utils.js new file mode 100644 index 0000000..7d5f7cb --- /dev/null +++ b/mock/utils.js @@ -0,0 +1,14 @@ +export function param2Obj(url) { + const search = url.split('?')[1] + if (!search) { + return {} + } + return JSON.parse( + '{"' + + decodeURIComponent(search) + .replace(/"/g, '\\"') + .replace(/&/g, '","') + .replace(/=/g, '":"') + + '"}' + ) +} diff --git a/src/api/visitor.js b/src/api/visitor.js index 4f4ee4d..1535eed 100644 --- a/src/api/visitor.js +++ b/src/api/visitor.js @@ -28,6 +28,15 @@ }) } +// 查询来访车辆 +export function getVisitorCarList(params) { + return request({ + url: '/visitorCar/listPage', + method: 'post', + params + }) +} + // 查询来访人员详情 export function getVisitorDetail(visitorPersonId) { return request({ @@ -37,5 +46,5 @@ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } }) - } + diff --git a/mock/config.js b/mock/config.js new file mode 100644 index 0000000..7d111e0 --- /dev/null +++ b/mock/config.js @@ -0,0 +1,15 @@ +// import { param2Obj } from './utils' + +const baseConfig = { + kaptcha: true +} + +export default { + baseconfig: res => { + return { + code: 200, + success: true, + data: baseConfig + } + } +} diff --git a/mock/index.js b/mock/index.js new file mode 100644 index 0000000..9eb5a47 --- /dev/null +++ b/mock/index.js @@ -0,0 +1,26 @@ +import Mock from 'mockjs' +import userAPI from './user' +import tableAPI from './table' + +// Fix an issue with setting withCredentials = true, cross-domain request lost cookies +// https://github.com/nuysoft/Mock/issues/300 +Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send +Mock.XHR.prototype.send = function() { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false + } + this.proxy_send(...arguments) +} +// Mock.setup({ +// timeout: '350-600' +// }) + +// User +Mock.mock(/\/user\/login/, 'post', userAPI.login) +Mock.mock(/\/user\/info/, 'get', userAPI.getInfo) +Mock.mock(/\/user\/logout/, 'post', userAPI.logout) + +// Table +Mock.mock(/\/table\/list/, 'get', tableAPI.list) + +export default Mock diff --git a/mock/table.js b/mock/table.js new file mode 100644 index 0000000..810b3c1 --- /dev/null +++ b/mock/table.js @@ -0,0 +1,20 @@ +import Mock from 'mockjs' + +export default { + list: () => { + const items = Mock.mock({ + 'items|30': [{ + id: '@id', + title: '@sentence(10, 20)', + 'status|1': ['published', 'draft', 'deleted'], + author: 'name', + display_time: '@datetime', + pageviews: '@integer(300, 5000)' + }] + }) + return { + code: 20000, + data: items + } + } +} diff --git a/mock/user.js b/mock/user.js new file mode 100644 index 0000000..0a1c617 --- /dev/null +++ b/mock/user.js @@ -0,0 +1,70 @@ +import { param2Obj } from './utils' + +const tokens = { + admin: { + token: 'admin-token' + }, + editor: { + token: 'editor-token' + } +} + +const users = { + 'admin-token': { + roles: ['admin'], + btns: ['kaptcha'], + introduction: 'I am a 超级管理员', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'mock Admin' + }, + 'editor-token': { + roles: ['editor'], + btns: [], + introduction: 'I am an editor', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Normal Editor' + } +} + +export default { + login: res => { + const { username } = JSON.parse(res.body) + const data = tokens[username] + + if (data) { + return { + code: 200, + success: true, + data + } + } + return { + code: 60204, + success: false, + message: '账户或密码错误.' + } + }, + getInfo: res => { + const { token } = param2Obj(res.url) + const info = users[token] + + if (info) { + return { + code: 200, + success: true, + data: info + } + } + return { + code: 50008, + success: false, + message: '登录失败,无法获取用户信息.' + } + }, + logout: () => { + return { + code: 200, + success: true + } + } +} diff --git a/mock/utils.js b/mock/utils.js new file mode 100644 index 0000000..7d5f7cb --- /dev/null +++ b/mock/utils.js @@ -0,0 +1,14 @@ +export function param2Obj(url) { + const search = url.split('?')[1] + if (!search) { + return {} + } + return JSON.parse( + '{"' + + decodeURIComponent(search) + .replace(/"/g, '\\"') + .replace(/&/g, '","') + .replace(/=/g, '":"') + + '"}' + ) +} diff --git a/src/api/visitor.js b/src/api/visitor.js index 4f4ee4d..1535eed 100644 --- a/src/api/visitor.js +++ b/src/api/visitor.js @@ -28,6 +28,15 @@ }) } +// 查询来访车辆 +export function getVisitorCarList(params) { + return request({ + url: '/visitorCar/listPage', + method: 'post', + params + }) +} + // 查询来访人员详情 export function getVisitorDetail(visitorPersonId) { return request({ @@ -37,5 +46,5 @@ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } }) - } + diff --git a/src/views/visitor/visitorCarDetail.vue b/src/views/visitor/visitorCarDetail.vue new file mode 100644 index 0000000..2641204 --- /dev/null +++ b/src/views/visitor/visitorCarDetail.vue @@ -0,0 +1,238 @@ + + + + + + diff --git a/mock/config.js b/mock/config.js new file mode 100644 index 0000000..7d111e0 --- /dev/null +++ b/mock/config.js @@ -0,0 +1,15 @@ +// import { param2Obj } from './utils' + +const baseConfig = { + kaptcha: true +} + +export default { + baseconfig: res => { + return { + code: 200, + success: true, + data: baseConfig + } + } +} diff --git a/mock/index.js b/mock/index.js new file mode 100644 index 0000000..9eb5a47 --- /dev/null +++ b/mock/index.js @@ -0,0 +1,26 @@ +import Mock from 'mockjs' +import userAPI from './user' +import tableAPI from './table' + +// Fix an issue with setting withCredentials = true, cross-domain request lost cookies +// https://github.com/nuysoft/Mock/issues/300 +Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send +Mock.XHR.prototype.send = function() { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false + } + this.proxy_send(...arguments) +} +// Mock.setup({ +// timeout: '350-600' +// }) + +// User +Mock.mock(/\/user\/login/, 'post', userAPI.login) +Mock.mock(/\/user\/info/, 'get', userAPI.getInfo) +Mock.mock(/\/user\/logout/, 'post', userAPI.logout) + +// Table +Mock.mock(/\/table\/list/, 'get', tableAPI.list) + +export default Mock diff --git a/mock/table.js b/mock/table.js new file mode 100644 index 0000000..810b3c1 --- /dev/null +++ b/mock/table.js @@ -0,0 +1,20 @@ +import Mock from 'mockjs' + +export default { + list: () => { + const items = Mock.mock({ + 'items|30': [{ + id: '@id', + title: '@sentence(10, 20)', + 'status|1': ['published', 'draft', 'deleted'], + author: 'name', + display_time: '@datetime', + pageviews: '@integer(300, 5000)' + }] + }) + return { + code: 20000, + data: items + } + } +} diff --git a/mock/user.js b/mock/user.js new file mode 100644 index 0000000..0a1c617 --- /dev/null +++ b/mock/user.js @@ -0,0 +1,70 @@ +import { param2Obj } from './utils' + +const tokens = { + admin: { + token: 'admin-token' + }, + editor: { + token: 'editor-token' + } +} + +const users = { + 'admin-token': { + roles: ['admin'], + btns: ['kaptcha'], + introduction: 'I am a 超级管理员', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'mock Admin' + }, + 'editor-token': { + roles: ['editor'], + btns: [], + introduction: 'I am an editor', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Normal Editor' + } +} + +export default { + login: res => { + const { username } = JSON.parse(res.body) + const data = tokens[username] + + if (data) { + return { + code: 200, + success: true, + data + } + } + return { + code: 60204, + success: false, + message: '账户或密码错误.' + } + }, + getInfo: res => { + const { token } = param2Obj(res.url) + const info = users[token] + + if (info) { + return { + code: 200, + success: true, + data: info + } + } + return { + code: 50008, + success: false, + message: '登录失败,无法获取用户信息.' + } + }, + logout: () => { + return { + code: 200, + success: true + } + } +} diff --git a/mock/utils.js b/mock/utils.js new file mode 100644 index 0000000..7d5f7cb --- /dev/null +++ b/mock/utils.js @@ -0,0 +1,14 @@ +export function param2Obj(url) { + const search = url.split('?')[1] + if (!search) { + return {} + } + return JSON.parse( + '{"' + + decodeURIComponent(search) + .replace(/"/g, '\\"') + .replace(/&/g, '","') + .replace(/=/g, '":"') + + '"}' + ) +} diff --git a/src/api/visitor.js b/src/api/visitor.js index 4f4ee4d..1535eed 100644 --- a/src/api/visitor.js +++ b/src/api/visitor.js @@ -28,6 +28,15 @@ }) } +// 查询来访车辆 +export function getVisitorCarList(params) { + return request({ + url: '/visitorCar/listPage', + method: 'post', + params + }) +} + // 查询来访人员详情 export function getVisitorDetail(visitorPersonId) { return request({ @@ -37,5 +46,5 @@ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } }) - } + diff --git a/src/views/visitor/visitorCarDetail.vue b/src/views/visitor/visitorCarDetail.vue new file mode 100644 index 0000000..2641204 --- /dev/null +++ b/src/views/visitor/visitorCarDetail.vue @@ -0,0 +1,238 @@ + + + + + + diff --git a/src/views/visitor/visitorCarTodayList.vue b/src/views/visitor/visitorCarTodayList.vue new file mode 100644 index 0000000..77ff55f --- /dev/null +++ b/src/views/visitor/visitorCarTodayList.vue @@ -0,0 +1,256 @@ + + + + + + diff --git a/mock/config.js b/mock/config.js new file mode 100644 index 0000000..7d111e0 --- /dev/null +++ b/mock/config.js @@ -0,0 +1,15 @@ +// import { param2Obj } from './utils' + +const baseConfig = { + kaptcha: true +} + +export default { + baseconfig: res => { + return { + code: 200, + success: true, + data: baseConfig + } + } +} diff --git a/mock/index.js b/mock/index.js new file mode 100644 index 0000000..9eb5a47 --- /dev/null +++ b/mock/index.js @@ -0,0 +1,26 @@ +import Mock from 'mockjs' +import userAPI from './user' +import tableAPI from './table' + +// Fix an issue with setting withCredentials = true, cross-domain request lost cookies +// https://github.com/nuysoft/Mock/issues/300 +Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send +Mock.XHR.prototype.send = function() { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false + } + this.proxy_send(...arguments) +} +// Mock.setup({ +// timeout: '350-600' +// }) + +// User +Mock.mock(/\/user\/login/, 'post', userAPI.login) +Mock.mock(/\/user\/info/, 'get', userAPI.getInfo) +Mock.mock(/\/user\/logout/, 'post', userAPI.logout) + +// Table +Mock.mock(/\/table\/list/, 'get', tableAPI.list) + +export default Mock diff --git a/mock/table.js b/mock/table.js new file mode 100644 index 0000000..810b3c1 --- /dev/null +++ b/mock/table.js @@ -0,0 +1,20 @@ +import Mock from 'mockjs' + +export default { + list: () => { + const items = Mock.mock({ + 'items|30': [{ + id: '@id', + title: '@sentence(10, 20)', + 'status|1': ['published', 'draft', 'deleted'], + author: 'name', + display_time: '@datetime', + pageviews: '@integer(300, 5000)' + }] + }) + return { + code: 20000, + data: items + } + } +} diff --git a/mock/user.js b/mock/user.js new file mode 100644 index 0000000..0a1c617 --- /dev/null +++ b/mock/user.js @@ -0,0 +1,70 @@ +import { param2Obj } from './utils' + +const tokens = { + admin: { + token: 'admin-token' + }, + editor: { + token: 'editor-token' + } +} + +const users = { + 'admin-token': { + roles: ['admin'], + btns: ['kaptcha'], + introduction: 'I am a 超级管理员', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'mock Admin' + }, + 'editor-token': { + roles: ['editor'], + btns: [], + introduction: 'I am an editor', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Normal Editor' + } +} + +export default { + login: res => { + const { username } = JSON.parse(res.body) + const data = tokens[username] + + if (data) { + return { + code: 200, + success: true, + data + } + } + return { + code: 60204, + success: false, + message: '账户或密码错误.' + } + }, + getInfo: res => { + const { token } = param2Obj(res.url) + const info = users[token] + + if (info) { + return { + code: 200, + success: true, + data: info + } + } + return { + code: 50008, + success: false, + message: '登录失败,无法获取用户信息.' + } + }, + logout: () => { + return { + code: 200, + success: true + } + } +} diff --git a/mock/utils.js b/mock/utils.js new file mode 100644 index 0000000..7d5f7cb --- /dev/null +++ b/mock/utils.js @@ -0,0 +1,14 @@ +export function param2Obj(url) { + const search = url.split('?')[1] + if (!search) { + return {} + } + return JSON.parse( + '{"' + + decodeURIComponent(search) + .replace(/"/g, '\\"') + .replace(/&/g, '","') + .replace(/=/g, '":"') + + '"}' + ) +} diff --git a/src/api/visitor.js b/src/api/visitor.js index 4f4ee4d..1535eed 100644 --- a/src/api/visitor.js +++ b/src/api/visitor.js @@ -28,6 +28,15 @@ }) } +// 查询来访车辆 +export function getVisitorCarList(params) { + return request({ + url: '/visitorCar/listPage', + method: 'post', + params + }) +} + // 查询来访人员详情 export function getVisitorDetail(visitorPersonId) { return request({ @@ -37,5 +46,5 @@ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } }) - } + diff --git a/src/views/visitor/visitorCarDetail.vue b/src/views/visitor/visitorCarDetail.vue new file mode 100644 index 0000000..2641204 --- /dev/null +++ b/src/views/visitor/visitorCarDetail.vue @@ -0,0 +1,238 @@ + + + + + + diff --git a/src/views/visitor/visitorCarTodayList.vue b/src/views/visitor/visitorCarTodayList.vue new file mode 100644 index 0000000..77ff55f --- /dev/null +++ b/src/views/visitor/visitorCarTodayList.vue @@ -0,0 +1,256 @@ + + + + + + diff --git a/src/views/visitor/visitorDetail.vue b/src/views/visitor/visitorDetail.vue index 93f33ca..a66cdf5 100644 --- a/src/views/visitor/visitorDetail.vue +++ b/src/views/visitor/visitorDetail.vue @@ -39,12 +39,12 @@ - + - + @@ -111,7 +111,6 @@ + + diff --git a/src/views/visitor/visitorCarTodayList.vue b/src/views/visitor/visitorCarTodayList.vue new file mode 100644 index 0000000..77ff55f --- /dev/null +++ b/src/views/visitor/visitorCarTodayList.vue @@ -0,0 +1,256 @@ + + + + + + diff --git a/src/views/visitor/visitorDetail.vue b/src/views/visitor/visitorDetail.vue index 93f33ca..a66cdf5 100644 --- a/src/views/visitor/visitorDetail.vue +++ b/src/views/visitor/visitorDetail.vue @@ -39,12 +39,12 @@ - + - + @@ -111,7 +111,6 @@ + + diff --git a/mock/config.js b/mock/config.js new file mode 100644 index 0000000..7d111e0 --- /dev/null +++ b/mock/config.js @@ -0,0 +1,15 @@ +// import { param2Obj } from './utils' + +const baseConfig = { + kaptcha: true +} + +export default { + baseconfig: res => { + return { + code: 200, + success: true, + data: baseConfig + } + } +} diff --git a/mock/index.js b/mock/index.js new file mode 100644 index 0000000..9eb5a47 --- /dev/null +++ b/mock/index.js @@ -0,0 +1,26 @@ +import Mock from 'mockjs' +import userAPI from './user' +import tableAPI from './table' + +// Fix an issue with setting withCredentials = true, cross-domain request lost cookies +// https://github.com/nuysoft/Mock/issues/300 +Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send +Mock.XHR.prototype.send = function() { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false + } + this.proxy_send(...arguments) +} +// Mock.setup({ +// timeout: '350-600' +// }) + +// User +Mock.mock(/\/user\/login/, 'post', userAPI.login) +Mock.mock(/\/user\/info/, 'get', userAPI.getInfo) +Mock.mock(/\/user\/logout/, 'post', userAPI.logout) + +// Table +Mock.mock(/\/table\/list/, 'get', tableAPI.list) + +export default Mock diff --git a/mock/table.js b/mock/table.js new file mode 100644 index 0000000..810b3c1 --- /dev/null +++ b/mock/table.js @@ -0,0 +1,20 @@ +import Mock from 'mockjs' + +export default { + list: () => { + const items = Mock.mock({ + 'items|30': [{ + id: '@id', + title: '@sentence(10, 20)', + 'status|1': ['published', 'draft', 'deleted'], + author: 'name', + display_time: '@datetime', + pageviews: '@integer(300, 5000)' + }] + }) + return { + code: 20000, + data: items + } + } +} diff --git a/mock/user.js b/mock/user.js new file mode 100644 index 0000000..0a1c617 --- /dev/null +++ b/mock/user.js @@ -0,0 +1,70 @@ +import { param2Obj } from './utils' + +const tokens = { + admin: { + token: 'admin-token' + }, + editor: { + token: 'editor-token' + } +} + +const users = { + 'admin-token': { + roles: ['admin'], + btns: ['kaptcha'], + introduction: 'I am a 超级管理员', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'mock Admin' + }, + 'editor-token': { + roles: ['editor'], + btns: [], + introduction: 'I am an editor', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Normal Editor' + } +} + +export default { + login: res => { + const { username } = JSON.parse(res.body) + const data = tokens[username] + + if (data) { + return { + code: 200, + success: true, + data + } + } + return { + code: 60204, + success: false, + message: '账户或密码错误.' + } + }, + getInfo: res => { + const { token } = param2Obj(res.url) + const info = users[token] + + if (info) { + return { + code: 200, + success: true, + data: info + } + } + return { + code: 50008, + success: false, + message: '登录失败,无法获取用户信息.' + } + }, + logout: () => { + return { + code: 200, + success: true + } + } +} diff --git a/mock/utils.js b/mock/utils.js new file mode 100644 index 0000000..7d5f7cb --- /dev/null +++ b/mock/utils.js @@ -0,0 +1,14 @@ +export function param2Obj(url) { + const search = url.split('?')[1] + if (!search) { + return {} + } + return JSON.parse( + '{"' + + decodeURIComponent(search) + .replace(/"/g, '\\"') + .replace(/&/g, '","') + .replace(/=/g, '":"') + + '"}' + ) +} diff --git a/src/api/visitor.js b/src/api/visitor.js index 4f4ee4d..1535eed 100644 --- a/src/api/visitor.js +++ b/src/api/visitor.js @@ -28,6 +28,15 @@ }) } +// 查询来访车辆 +export function getVisitorCarList(params) { + return request({ + url: '/visitorCar/listPage', + method: 'post', + params + }) +} + // 查询来访人员详情 export function getVisitorDetail(visitorPersonId) { return request({ @@ -37,5 +46,5 @@ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } }) - } + diff --git a/src/views/visitor/visitorCarDetail.vue b/src/views/visitor/visitorCarDetail.vue new file mode 100644 index 0000000..2641204 --- /dev/null +++ b/src/views/visitor/visitorCarDetail.vue @@ -0,0 +1,238 @@ + + + + + + diff --git a/src/views/visitor/visitorCarTodayList.vue b/src/views/visitor/visitorCarTodayList.vue new file mode 100644 index 0000000..77ff55f --- /dev/null +++ b/src/views/visitor/visitorCarTodayList.vue @@ -0,0 +1,256 @@ + + + + + + diff --git a/src/views/visitor/visitorDetail.vue b/src/views/visitor/visitorDetail.vue index 93f33ca..a66cdf5 100644 --- a/src/views/visitor/visitorDetail.vue +++ b/src/views/visitor/visitorDetail.vue @@ -39,12 +39,12 @@ - + - + @@ -111,7 +111,6 @@ + + diff --git a/src/views/visitor/visitorTodayList.vue b/src/views/visitor/visitorTodayList.vue new file mode 100644 index 0000000..4f10726 --- /dev/null +++ b/src/views/visitor/visitorTodayList.vue @@ -0,0 +1,254 @@ + + + + + +