Commit a64306eb authored by jiaorz's avatar jiaorz

1

parents 006672e5 09484cbc
<template>
<div id="app">
<router-view></router-view>
<keep-alive>
<router-view />
</keep-alive>
<!-- <router-view></router-view> -->
</div>
</template>
......
......@@ -112,7 +112,7 @@ export function jobs(obj) {
// 添加员工
export function addEditor(obj) {
return fetch({
url: '/api/admin/postion/admin/addUserPostion',
url: '/api/admin/postion/admin/updUserPostion',
method: 'post',
data: obj
});
......@@ -177,4 +177,67 @@ export function updUserChange(params) {
method: 'post',
data: params
});
}
// 离职后在职
export function updAddPositionChangeRecord(params) {
return fetch({
url: 'api/admin/postion/admin/updAddPositionChangeRecord',
method: 'post',
data: params
});
}
// 信息修改
// export function updUserPostion(params) {
// return fetch({
// url: 'api/admin/postion/admin/updUserPostion',
// method: 'post',
// data: params
// });
// }
// 股东列表
export function stockholderList(query) {
return fetch({
url: 'api/admin/appShareholder/page',
method: 'post',
data: query
});
}
// 新增股东
export function addUserPostion(query) {
return fetch({
url: 'api/admin/appShareholder/addUserPostion',
method: 'post',
data: query
});
}
// 批量导入股东
export function exports(query) {
return fetch({
url: 'api/admin/appShareholder/export',
method: 'post',
data: query
});
}
// 编辑股东信息
export function updUserPostionEditor(query) {
return fetch({
url: 'api/admin/appShareholder/updUserPostion',
method: 'post',
data: query
});
}
// 股东信息变更记录
export function findShareholderChangeRecord(query) {
return fetch({
url: 'api/admin/appShareholder/findShareholderChangeRecord',
method: 'get',
params: query
});
}
\ No newline at end of file
......@@ -17,4 +17,24 @@ export function vehicleInfoExcel(params) {
params: params,
responseType: 'blob'
});
}
\ No newline at end of file
}
//订单统计
export function received_statistics(params) {
return fetch({
url: 'api/order/admin/order/received_statistics',
method: 'post',
timeout:'50000',
data: params
});
}
// 订单统计导出
export function excelExport(query) {
return fetch({
url: 'api/order/admin/order/received_statistics/export',
method: 'post',
data: query,
responseType: 'blob'
});
}
\ No newline at end of file
......@@ -582,13 +582,13 @@ export const asyncRouterMap = [{
component: _import('appManagement/selectedActivities/index'),
name: '首页精选活动',
authority: 'selectedActivities'
},
{
path: 'pushManagement',
component: _import('appManagement/pushManagement/index'),
name: '消息推送',
authority: 'pushManagement'
}
// {
// path: 'pushManagement',
// component: _import('appManagement/pushManagement/index'),
// name: '消息推送',
// authority: 'pushManagement'
// }
]
},
{
......@@ -801,6 +801,12 @@ export const asyncRouterMap = [{
component: _import('interior/employeesInput'),
name: '员工录入',
authority: 'employeesInput'
},
{
path: 'shareholder',
component: _import('interior/shareholder'),
name: '股东列表',
authority: 'shareholder'
}
]
}
......
......@@ -399,6 +399,8 @@
const set = this.$refs;
set[formName].validate(valid => {
if (valid) {
console.log(this.form);
editObj(this.form).then(response => {
if (response.status === 200) {
this.bannerDialogVisible = false;
......
......@@ -53,13 +53,21 @@
<el-table-column prop="companyName" label="公司" align="center"></el-table-column>
<el-table-column prop="memberAmount" label="会员费" align="center"></el-table-column>
<el-table-column prop="rentVehilceAmount" label="租车费" align="center"></el-table-column>
<el-table-column prop="depositAmount" label="押金" align="center"></el-table-column>
<el-table-column prop="noDeductibleAmount" label="不计免赔费" align="center"></el-table-column>
<el-table-column prop="travelAmount" label="旅游费" align="center"></el-table-column>
<el-table-column prop="rentDays" label="租借天数" align="center"></el-table-column>
<!-- <el-table-column prop="extralAmount" label="其他费用" align="center"></el-table-column> -->
<el-table-column prop="departureNum" label="出车服务次数" align="center"></el-table-column>
<el-table-column prop="arrivalNum" label="收车服务次数" align="center"></el-table-column>
<el-table-column prop="lossSpecifiedAmount" label="定损金额" align="center"></el-table-column>
<el-table-column prop="lateFeeAmount" label="违约金额" align="center"></el-table-column>
<el-table-column label="押金" align="center">
<template scope="scope">
<span>{{ Math.round((scope.row.depositAmount+scope.row.depositRefundAmount)*100)/100}}</span>
</template>
</el-table-column>
<el-table-column prop="depositRefundAmount" label="已退押金" align="center"></el-table-column>
</el-table>
<el-pagination
......
This diff is collapsed.
This diff is collapsed.
......@@ -253,7 +253,9 @@
<el-row>
<el-col :span="6">
<el-form-item label="注册终端:">
<span>{{userDetails.channel == 1 ? 'app' : '小程序'}}</span>
<span v-if="userDetails.channel == 1">安卓</span>
<span v-else-if="userDetails.channel == 2">小程序</span>
<span v-else-if="userDetails.channel == 3">ios</span>
</el-form-item>
</el-col>
<el-col :span="8">
......
<template>
<ve-line :data="chartData"></ve-line>
<div class="app-container calendar-list-container">
<div class="filter-container" v-loading="loading">
<el-form ref="listQuery" :model="listQuery" label-width="100px" :inline="true">
<el-row>
<el-form-item label="时间">
<!-- <el-date-picker
v-model="time"
placeholder="请选择时间"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>-->
<el-date-picker
v-model="time"
type="daterange"
placeholder="请选择时间范围"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="changeTime"
></el-date-picker>
</el-form-item>
<el-form-item label="统计周期">
<el-radio-group v-model="listQuery.statisticalWay">
<el-radio-button :label="1"></el-radio-button>
<el-radio-button :label="2"></el-radio-button>
<el-radio-button :label="3"></el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="订单状态">
<el-select v-model="listQuery.orderState" clearable placeholder="请选择">
<!-- <el-option :value='null'>全部</el-option> -->
<el-option v-for="item in orderArr" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="订单来源">
<el-select v-model="listQuery.orderOrigin" clearable placeholder="请选择">
<el-option label="全部" :value="null"></el-option>
<el-option v-for="item in orderOriginArr" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="支付方式">
<el-select v-model="listQuery.payWay" clearable placeholder="请选择">
<el-option label="全部" :value="null"></el-option>
<el-option v-for="item in payWayArr" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<p style="border-top:1px solid #d9d9d9;padding:30px 0 10px 0">统计项目</p>
<div style="margin-bottom:20px">
<el-checkbox-group v-model="listQuery.statisticalSigns">
<span v-for="(item,index) in checkArr" :key="index" class="checkStyle">
<el-checkbox :label="item.id">{{item.name}}</el-checkbox>
<p v-show="item.id== 'ad_oavga' || item.id== 'ce_tavga' || item.id== 'bd_rvavga'"></p>
</span>
</el-checkbox-group>
</div>
<el-button type="primary" @click="search">搜索</el-button>
<el-button type="primary" @click="clearSearch">清空搜索</el-button>
<el-button type="primary" :loading="excelLoading" @click="downloadExcel">导出报表</el-button>
</el-row>
</el-form>
<div v-for="(item,index) in chartArr" :key="index">
<p style="text-align:center">{{checkArr.filter(val => val.id == item.title)[0].name}}</p>
<ve-line
:data="item"
:extend="extend"
:settings="chartSettings"
:legend-visible="false"
:data-zoom="dataZoom"
></ve-line>
</div>
</div>
</div>
</template>
<script>
export default {
data: function () {
return {
chartData: {
columns: ['日期', '访问用户', '下单用户', '下单率'],
rows: [
{ '日期': '1/0', '访问用户': 1393, '下单用户': 1093, '下单率': 0.32 },
{ '日期': '1/1', '访问用户': 1393, '下单用户': 1093, '下单率': 0.32 },
{ '日期': '1/2', '访问用户': 3530, '下单用户': 3230, '下单率': 0.26 },
{ '日期': '1/3', '访问用户': 2923, '下单用户': 2623, '下单率': 0.76 },
{ '日期': '1/4', '访问用户': 1723, '下单用户': 1423, '下单率': 0.49 },
{ '日期': '1/5', '访问用户': 3792, '下单用户': 3492, '下单率': 0.323 },
{ '日期': '1/6', '访问用户': 4593, '下单用户': 4293, '下单率': 0.78 }
]
}
}
}
}
</script>
\ No newline at end of file
import {
received_statistics,
excelExport
} from 'api/statistics/vehicleStatistics'
import { formatDate } from 'utils/dateFormattor'
import { objDeepCopy } from '../../utils'
export default {
data: function() {
this.extend = {
// 'xAxis.0.axisLabel.rotate': 45
}
this.dataZoom = [
{
type: 'slider',
start: 0,
end: 30
}
]
this.chartSettings = {
labelMap: {
orderAmount: '金额',
orderNum: '订单量'
}
}
return {
excelLoading: false,
loading: true,
time: null,
checkArr: [
{ name: '订单总额 ', id: 'aa_ota' },
{ name: '订单量 ', id: 'ab_otq' },
{ name: '订单平均量 ', id: 'ac_oavgq' },
{ name: '订单平均金额 ', id: 'ad_oavga' },
{ name: '租车订单总额 ', id: 'ba_rvta' },
{ name: '租车订单量', id: 'bb_rvtq' },
{ name: '租车订单平均量 ', id: 'bc_rvavgq' },
{ name: '租车平均金额 ', id: 'bd_rvavga' },
{ name: '旅游订单总额', id: 'ca_tta' },
{ name: '旅游订单量 ', id: 'cb_ttq' },
{ name: '旅游订单平均量 ', id: 'cd_tavgq' },
{ name: '旅游平均金额 ', id: 'ce_tavga' },
{ name: '会员订单总额 ', id: 'da_mta' },
{ name: '普通会员订单总额 ', id: 'db_cmta' },
{ name: '普通会员订单量 ', id: 'dc_cmtq' },
{ name: '黄金会员订单总额 ', id: 'dd_gmta' },
{ name: '黄金会员订单量 ', id: 'de_mgtq' },
{ name: '钻石会员订单总额 ', id: 'df_dmta' },
{ name: '钻石会员订单量 ', id: 'dg_dmtq' },
{ name: '会员平均金额 ', id: 'dh_mavga' },
],
//快捷筛选
listQuery: {
startDate: null, //开始时间
endDate: null, //结束时间
page: 1, //当前页
limit: 10, //每页条数
statisticalWay: 1, //统计方式
orderState: '', //订单状态
orderOrigin: null, //来源
payWay: null, //支付方式
statisticalSigns: ['aa_ota'] //筛选
},
//订单状态
orderArr: [
{
name: '全部',
id: ''
},
{
name: '未支付',
id: 0
},
{
name: '已支付',
id: 1
}
],
//订单来源
orderOriginArr: [
{
name: 'APP',
id: 1
},
{
name: '小程序',
id: 2
},
{
name: '后台',
id: 3
}
],
//支付方式
payWayArr: [
{
name: '微信公众号支付',
id: 1
},
{
name: '支付宝即时到账',
id: 2
}
],
chartData: {
columns: ['dateStr', 'orderAmount'],
rows: []
},
chartArr: {}
}
},
created() {
this.getList()
},
methods: {
//时间关闭
changeTime(val) {
if (!val) {
this.time = null
this.listQuery.endDate = null
this.listQuery.startDate = null
}
},
//导出
downloadExcel() {
this.excelLoading = true
var u = navigator.userAgent,
app = navigator.appVersion
excelExport(this.listQuery, { responseType: 'arraybuffer' }).then(
res => {
const content = res
const blob = new Blob([content], {
type: 'application/vnd.ms-excel'
})
const fileName = '订单统计.xlsx'
if (u.indexOf('Edge') > -1) {
window.navigator.msSaveBlob(blob, fileName)
} else {
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
}
this.excelLoading = false
}
)
},
//搜索
search() {
if (!!this.time && !!this.time[0]) {
this.listQuery.startDate =
formatDate(new Date(this.time[0]), 'yyyy-MM-dd') +
' 00:00:00'
this.listQuery.endDate =
formatDate(new Date(this.time[1]), 'yyyy-MM-dd') +
' 23:59:59'
}
this.getList()
},
//清空搜索
clearSearch() {
this.listQuery = {
startDate: null, //开始时间
endDate: null, //结束时间
page: 1, //当前页
limit: 10, //每页条数
statisticalWay: 1, //统计方式
orderState: '', //订单状态
orderOrigin: null, //来源
payWay: null, //支付方式
statisticalSigns: ['aa_ota'] //筛选
}
this.time = null
this.getList()
},
getList() {
this.loading = true
received_statistics(this.listQuery).then(data => {
if (data.status == 200) {
let info = data.data
let params = {}
let choose = this.listQuery.statisticalSigns
let way = this.listQuery.statisticalWay
var x
var y
let dateIndex = way == 1 ? 2 : way == 2 ? 1 : 1
let orderIndex = way == 1 ? 3 : way == 2 ? 2 : 2
for (let i = 0; i < choose.length; i++) {
if (info[choose[i]] != '') {
params[choose[i]] = {
columns: [
Object.keys(info[choose[i]][0])[dateIndex], //年费
Object.keys(info[choose[i]][0])[orderIndex] //金额
],
rows: info[choose[i]].sort(function(a, b) {
if (way === 1) {
x = a.date
y = b.date
}
if (way === 2) {
x = a.weekOfYear
y = b.weekOfYear
}
if (way === 3) {
x = a.month
y = b.month
}
return x < y ? -1 : x > y ? 1 : 0
}),
title: choose[i]
}
}
}
this.chartArr = params
}
setTimeout(() => {
this.loading = false
}, 300)
})
}
}
}
</script>
<style scoped>
.checkStyle {
margin-right: 30px;
/* display: inline-block; */
line-height: 40px;
}
</style>
\ No newline at end of file
......@@ -92,7 +92,9 @@
</el-table-column>
<el-table-column width="110" align="center" label="注册终端">
<template scope="scope">
<span>{{scope.row.channel}}</span>
<span v-if="scope.row.channel == 1">安卓</span>
<span v-else-if="scope.row.channel == 2">小程序</span>
<span v-else-if="scope.row.channel == 3">ios</span>
</template>
</el-table-column>
<el-table-column width="90" align="center" label="来源">
......@@ -148,9 +150,9 @@
<el-button size="small" class="el-button el-button--text el-button--small" @click="viewDetails(scope.row)">
查看详情
</el-button>
<el-button size="small" class="el-button el-button--text el-button--small" v-if="admin_btn_user_postion_put"
<!-- <el-button size="small" class="el-button el-button--text el-button--small" v-if="admin_btn_user_postion_put"
@click="peopleSetting(scope.row)">身份设置
</el-button>
</el-button> -->
<el-button class="el-button el-button--text el-button--small" v-if="scope.row.status!=1&&userList_btn_edit"
size="small" @click=" setMember(scope.row)">设置会员信息
</el-button>
......@@ -226,7 +228,9 @@
<el-row>
<el-col :span="6">
<el-form-item label="注册终端:">
<span>{{userDetails.channel == 1 ? 'app' : '小程序'}}</span>
<span v-if="userDetails.channel == 1">安卓</span>
<span v-else-if="userDetails.channel == 2">小程序</span>
<span v-else-if="userDetails.channel == 3">ios</span>
</el-form-item>
</el-col>
<el-col :span="8">
......@@ -1127,7 +1131,7 @@
listKey.lastTime = listKey.lastTime ? timestamp2Date(listKey.lastTime) : '';
listKey.createTime = listKey.createTime ? timestamp2Date(listKey.createTime * 1000) : '';
listKey.buyCount = listKey.buyCount ? listKey.buyCount : 0;
listKey.channel = this.terminal[listKey.channel];
// listKey.channel = this.terminal[listKey.channel];
listKey.source = this.source[listKey.source];
listKey.validTime = listKey.validTime ? ((listKey.validTime == 0) ? '永久' : listKey.validTime) : '无';
listKey.visible2 = false
......
......@@ -681,6 +681,7 @@
<el-row>
<el-col :span="12">
<el-form-item label="交强险单号" prop="strongInsuranceNo">
<el-input v-model.number="form.strongInsuranceNo" placeholder="请输入交强险单号"></el-input>
<el-input v-model.text="form.strongInsuranceNo" @input="handleInput" placeholder="请输入交强险单号"></el-input>
</el-form-item>
</el-col>
......@@ -1094,6 +1095,7 @@ export default {
strongInsuranceCompany: undefined,
strongInsuranceEndDate: undefined,
strongInsuranceNo: undefined,
strongInsuranceCompany: undefined
strongInsuranceCompany: undefined,
insurancePDF:undefined
},
......@@ -1862,6 +1864,7 @@ export default {
}
},
methods: {
handleInput(e){
this.form.strongInsuranceNo=e.target.value.replace(/[^\d]/g,'');
},
......@@ -2455,6 +2458,7 @@ export default {
},
beforeAvatarUpload(file) {
const isJPG =
file.type === 'image/jpeg' || file.type === 'image/gif'
file.type === 'image/jpeg' || file.type === 'image/gif' || file.type === 'image/pdf'
const isLt2M = file.size / 1024 / 1024 < 10
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment