diff --git a/package.json b/package.json index 0eb0467..9ed0d95 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,8 @@ "vue-meta": "2.4.0", "vue-router": "3.4.9", "vuedraggable": "2.24.3", - "vuex": "3.6.0" + "vuex": "3.6.0", + "weixin-js-sdk": "^1.6.5" }, "devDependencies": { "@vue/cli-plugin-babel": "4.4.6", diff --git a/src/api/bst/order.js b/src/api/bst/order.js index 3398ab3..5ad7482 100644 --- a/src/api/bst/order.js +++ b/src/api/bst/order.js @@ -62,3 +62,12 @@ export function refundOrder(data) { data: data }) } + +// 订单还车审核 +export function verifyOrder(data) { + return request({ + url: '/bst/order/verify', + method: 'put', + data: data + }) +} diff --git a/src/api/bst/orderDevice.js b/src/api/bst/orderDevice.js new file mode 100644 index 0000000..e0265a7 --- /dev/null +++ b/src/api/bst/orderDevice.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询订单设备列表 +export function listOrderDevice(query) { + return request({ + url: '/bst/orderDevice/list', + method: 'get', + params: query + }) +} + +// 查询订单设备详细 +export function getOrderDevice(id) { + return request({ + url: '/bst/orderDevice/' + id, + method: 'get' + }) +} + +// 新增订单设备 +export function addOrderDevice(data) { + return request({ + url: '/bst/orderDevice', + method: 'post', + data: data + }) +} + +// 修改订单设备 +export function updateOrderDevice(data) { + return request({ + url: '/bst/orderDevice', + method: 'put', + data: data + }) +} + +// 删除订单设备 +export function delOrderDevice(id) { + return request({ + url: '/bst/orderDevice/' + id, + method: 'delete' + }) +} diff --git a/src/permission.js b/src/permission.js index c568979..e516486 100644 --- a/src/permission.js +++ b/src/permission.js @@ -1,14 +1,14 @@ -import router from './router' -import store from './store' +import { getToken } from '@/utils/auth' +import { isRelogin } from '@/utils/request' import { Message } from 'element-ui' import NProgress from 'nprogress' import 'nprogress/nprogress.css' -import { getToken } from '@/utils/auth' -import { isRelogin } from '@/utils/request' +import router from './router' +import store from './store' NProgress.configure({ showSpinner: false }) -const whiteList = ['/login', '/register'] +const whiteList = ['/login', '/register', '/liveness'] router.beforeEach((to, from, next) => { NProgress.start() diff --git a/src/router/index.js b/src/router/index.js index 26167ca..5b6b676 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -73,6 +73,13 @@ export const constantRoutes = [ }, ] }, + /** + * 人脸识别 + */ + { + path: '/liveness', + component: () => import('@/views/mobile/liveness/index') + }, /** * 编辑页 */ @@ -102,6 +109,18 @@ export const constantRoutes = [ component: () => import('@/views/bst/order/view/view.vue'), name: 'OrderView', meta: { title: '订单详情' } + }, + { + path: 'device/:id?', + component: () => import('@/views/bst/device/view/view.vue'), + name: 'DeviceView', + meta: { title: '设备详情' } + }, + { + path: 'user/:userId?', + component: () => import('@/views/system/user/view/view.vue'), + name: 'UserView', + meta: { title: '用户详情' } } ] }, diff --git a/src/utils/enums.js b/src/utils/enums.js index c345cf4..d92f2e7 100644 --- a/src/utils/enums.js +++ b/src/utils/enums.js @@ -168,4 +168,27 @@ export const OrderStatus = { } } +// 支付业务类型 +export const PayBstType = { + ORDER: "1", // 订单 +} + +// 分成业务类型 +export const BonusBstType = { + ORDER: "1", // 订单 +} + +// 分成到账类型 +export const BonusArrivalType = { + PLATFORM: "PLATFORM", // 平台 + AGENT: "AGENT", // 代理商 + MCH: "MCH", // 运营商 + JOIN: "JOIN", // 加盟商 + PARTNER: "PARTNER", // 合伙人 + + // 用户列表 + userList() { + return [this.AGENT, this.MCH, this.JOIN, this.PARTNER]; + } +} diff --git a/src/views/bst/bonus/index.vue b/src/views/bst/bonus/index.vue index 3437c5f..61874b0 100644 --- a/src/views/bst/bonus/index.vue +++ b/src/views/bst/bonus/index.vue @@ -140,6 +140,12 @@ export default { mixins: [$showColumns], dicts: ['bonus_status', 'bonus_arrival_type', 'bonus_bst_type'], components: {FormCol, BooleanTag}, + props: { + query: { + type: Object, + default: () => ({}) + } + }, data() { return { // 金额颜色 @@ -211,6 +217,7 @@ export default { }; }, created() { + Object.assign(this.queryParams, this.query); this.getList(); }, methods: { diff --git a/src/views/bst/device/index.vue b/src/views/bst/device/index.vue index 4fec8b9..cf96cc8 100644 --- a/src/views/bst/device/index.vue +++ b/src/views/bst/device/index.vue @@ -212,14 +212,16 @@ {{d.row.areaName | dv}} - + + + + + + - - - {{d.row.remainingPower | fix2 | dv}} % {{d.row.remainEndurance | dv}} KM @@ -242,6 +244,13 @@ + 详情 + + + + + + 开锁 + 锁车 + 响铃 + 重启 + 开坐垫锁 + 刷新 + 出仓 + 入仓 + 禁用 + 启用 + + + + {{ detail.sn | dv }} + {{ detail.mac | dv }} + {{ detail.vehicleNum | dv }} + + + + + + + + + + + + + + + + + + + {{ detail.createTime | dv }} + {{ detail.lastOnlineTime | dv }} + + + + + + {{ detail.longitude | dv }}, {{ detail.latitude | dv }} + {{ detail.lastLocationTime | dv }} + {{ detail.signalStrength | dv }} + {{ detail.satellites | dv }} + + + + + + {{ detail.remainingPower | fix2 | dv }} % + {{ detail.voltage | fix2 | dv }} V + {{ detail.remainEndurance | fix2 | dv }} KM + {{ detail.modelFullVoltage | fix2 | dv }} V + {{ detail.modelLowVoltage | fix2 | dv }} V + {{ detail.modelFullEndurance | dv }} KM + + + + + + + + + + {{ detail.areaName | dv }} + {{ detail.mchName | dv }} + {{ detail.modelName | dv }} + + + + + + {{ detail.orderNo | dv }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/bst/fault/index.vue b/src/views/bst/fault/index.vue index 5600f15..75c1b4d 100644 --- a/src/views/bst/fault/index.vue +++ b/src/views/bst/fault/index.vue @@ -81,13 +81,6 @@ - 详情 - - - - - diff --git a/src/views/bst/pay/index.vue b/src/views/bst/pay/index.vue index 228600c..bfd2549 100644 --- a/src/views/bst/pay/index.vue +++ b/src/views/bst/pay/index.vue @@ -163,6 +163,12 @@ export default { mixins: [$showColumns], dicts: ['pay_status', 'pay_bst_type'], components: {FormCol}, + props: { + query: { + type: Object, + default: () => ({}) + } + }, data() { return { span: 24, @@ -270,6 +276,7 @@ export default { }; }, created() { + Object.assign(this.queryParams, this.query); this.getList(); }, methods: { diff --git a/src/views/bst/realName/index.vue b/src/views/bst/realName/index.vue index ce92a45..c43ae85 100644 --- a/src/views/bst/realName/index.vue +++ b/src/views/bst/realName/index.vue @@ -17,22 +17,6 @@ @keyup.enter.native="handleQuery" /> - - - - - - - - 新增 - - - 删除 - {{d.row[column.key]}} + + + + + + {{d.row[column.key]}} @@ -134,32 +103,6 @@ @pagination="getList" /> - - - - - - - - - - - - - - - - - - - - - - - @@ -178,18 +121,20 @@ export default { name: "RealName", mixins: [$showColumns], components: {FormCol}, + dicts: ['real_name_status'], data() { return { span: 24, // 字段列表 columns: [ - {key: 'id', visible: true, label: '实名认证id', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, - {key: 'userName', visible: true, label: '用户姓名', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'id', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"}, + {key: 'userName', visible: true, label: '姓名', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'idCard', visible: true, label: '身份证', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'picture', visible: true, label: '人脸图像', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'score', visible: true, label: '对比分数', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'mobile', visible: true, label: '手机号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, - {key: 'status', visible: true, label: '实名认证状态:0-未实名 1-已实名', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'status', visible: true, label: '状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'createTime', visible: true, label: '创建时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, ], // 排序方式 orderSorts: ['ascending', 'descending', null], diff --git a/src/views/mobile/liveness/index.vue b/src/views/mobile/liveness/index.vue new file mode 100644 index 0000000..2e3fde5 --- /dev/null +++ b/src/views/mobile/liveness/index.vue @@ -0,0 +1,65 @@ + + + + + + + + 没有反应?点我跳转 + + + + + + + diff --git a/src/views/system/user/view/components/UserStatistics.vue b/src/views/system/user/view/components/UserStatistics.vue new file mode 100644 index 0000000..e1a3635 --- /dev/null +++ b/src/views/system/user/view/components/UserStatistics.vue @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/system/user/view/view.vue b/src/views/system/user/view/view.vue new file mode 100644 index 0000000..1df6cf5 --- /dev/null +++ b/src/views/system/user/view/view.vue @@ -0,0 +1,184 @@ + + + + + + + + 个人信息 + + + + {{ detail.nickName | dv}} + + + + {{ detail.roles.map(role => role.roleName).join(',') }} + + + + + {{ detail.point | fix2 | dv }} % + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file