lanan-system-vue/src/views/rescue/rescueCw.vue
2024-08-27 14:46:31 +08:00

455 lines
14 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="客户车牌号" prop="licenseNum">
<el-input
v-model="queryParams.licenseNum"
placeholder="请输入车牌号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="司机名称" prop="driverName">
<el-input
v-model="queryParams.driverName"
placeholder="请输入司机名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="救援车辆" prop="driverCarNum">
<el-input
v-model="queryParams.driverCarNum"
placeholder="请输入救援车辆车牌号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="月份" prop="rescueStartMonth">
<el-date-picker
v-model="queryParams.rescueStartMonth"
value-format="yyyy-MM"
type="month"
placeholder="选择月份"
>
</el-date-picker>
</el-form-item>
<el-form-item label="收费类型" prop="feeType">
<el-select v-model="queryParams.feeType" placeholder="请选择收费类型" clearable>
<el-option
v-for="dict in this.getDictDatas(DICT_TYPE.FEE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="救援时间" prop="maintenanceTime">
<el-date-picker
v-model="time1"
type="daterange"
value-format="yyyy-MM-dd"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
:loading="exportLoading"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<div style="display: flex;justify-content:right;font-weight: bold;font-size: 16px">
<span>
施救总金额:{{ moneyManagementData.allMoney }} 元
</span>
<span style="margin-left: 3%">
出车次数:{{ moneyManagementData.allNum }} 次
</span>
<span style="margin-left: 3%">
提成总金额:{{ moneyManagementData.tcAll }} 元
</span>
<span style="margin-left: 3%">
燃油费小计:{{ moneyManagementData.refuelMoney }} 元
</span>
</div>
<el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
<el-table-column label="序号" align="center">
<template scope="scope">
<span>{{ scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column label="客户车牌号" align="center" prop="licenseNum" width="180"/>
<el-table-column label="司机" align="center" prop="driverName" width="180"/>
<el-table-column label="车牌号" align="center" prop="diverCarNum" width="180"/>
<el-table-column label="救援时间" align="center" prop="rescueTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.rescueTime, '{y}-{m}-{d} {h}:{m}') }}</span>
</template>
</el-table-column>
<el-table-column label="收费类型" align="center" prop="feeType" width="180">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.FEE_TYPE" :value="scope.row.feeType"/>
</template>
</el-table-column>
<el-table-column label="施救金额(元)" align="center" prop="setMoney" width="180"/>
<el-table-column label="过关费(元)" align="center" prop="checkpointMoney" width="180"/>
<el-table-column label="应计提产值(元)" align="center" prop="upMoney" width="180"/>
<el-table-column label="提成比例" align="center" prop="royaltyRatio" width="180"/>
<el-table-column label="提成金额(元)" align="center" prop="royaltyMoney" width="180"/>
<el-table-column label="放空公里数" align="center" prop="emptyingDistance" width="180"/>
<el-table-column label="油补(元)" align="center" prop="oilSubsidy" width="180"/>
<el-table-column label="燃油费(元)" align="center" prop="fuelCost" width="180"/>
<el-table-column label="每公里油耗(L)" align="center" prop="oilConsumption" width="180"/>
<el-table-column label="工资(元)" align="center" prop="grossWages" width="180"/>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import { moneyManagement, moneyManagementData, exportManagement } from '@/api/rescue/info'
import { getmap } from '@/api/Map/map'
import Map from '../../components/Map/index'
export default {
name: 'Info',
dicts: ['dljy_type', 'fee_type', 'car_type', 'yes_no', 'jy_status', 'jy_order_status'],
data() {
return {
// 导出遮罩层
exportLoading: false,
pickerOptions: null,
chooseDriverId: '',
rescueInfoId: '',
// 遮罩层
loading: true,
ztlist: [],
// 选中数组
ids: [],
time1: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 道路救援模块表格数据
infoList: [],
// 弹出层标题
title: '',
// 是否显示弹出层
open: false,
opens: false,
designateFlag: false,
zong: '',
repaymentForm: {},
repaymentOpen: false,
moneyManagementData: {},
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
connectionName: null,
isAppointment: null,
rescueType: null,
feeType: null,
carBrand: null,
destinationInfo: null,
rescueStatus: null,
rescueAmount: null,
rescueStart: null
},
// 表单参数
form: {},
driverList: [],
// 表单校验
rules: {
connectionName: [
{ required: true, message: '联系人名称不能为空', trigger: 'blur' }
],
connectionPhone: [
{ required: true, message: '联系人手机号不能为空', trigger: 'blur' }
],
licenseNum: [
{ required: true, message: '车牌号不能为空', trigger: 'blur' }
],
isAppointment: [
{ required: true, message: '是否为预约单不能为空', trigger: 'change' }
],
rescueType: [
{ required: true, message: '救援类型 1拖车2送油3搭电4换台5扣车不能为空', trigger: 'change' }
],
carType: [
{ required: true, message: '车辆类型 大中小不能为空', trigger: 'change' }
],
rescuePosition: [
{ required: true, message: '救援地点 详细描述不能为空', trigger: 'blur' }
],
feeType: [
{ required: true, message: '收费类型不能为空', trigger: 'change' }
]
}
}
},
components: {
Map
},
created() {
this.getList()
},
methods: {
cancelRepayment() {
this.repaymentForm = {}
this.repaymentOpen = false
},
repaymentSubmit() {
this.$refs['repaymentForm'].validate(valid => {
if (valid) {
returnOrder(this.repaymentForm).then(res => {
this.$modal.msgSuccess('还款成功')
this.repaymentOpen = false
this.repaymentForm = {}
this.getList()
})
}
})
},
repayment(data) {
this.repaymentOpen = true
this.repaymentForm.rescueOrderId = data.rescueOrderId
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
if (rowIndex % 2 === 0) {
return {
rowspan: 2,
colspan: 1
}
} else {
return {
rowspan: 0,
colspan: 0
}
}
}
},
driverOk() {
this.designateFlag = false
designateDriver(this.rescueInfoId, this.chooseDriverId).then(res => {
this.$message.success('指派成功')
this.getList()
})
},
/** 查询道路救援模块列表 */
getList() {
this.loading = true
moneyManagement(this.queryParams).then(response => {
this.infoList = response.data.records
this.total = response.data.total
this.loading = false
})
moneyManagementData(this.queryParams).then(response => {
this.moneyManagementData = response.data
})
},
getDriverList() {
getDriver().then(response => {
this.driverList = response.rows
})
},
// 取消按钮
cancel() {
this.open = false
this.reset()
},
// 表单重置
reset() {
this.form = {
id: null,
connectionName: null,
connectionPhone: null,
licenseNum: null,
isAppointment: null,
rescueTime: null,
rescueType: null,
carType: null,
rescuePosition: null,
rescueLongitude: null,
rescueLatitude: null,
feeType: null,
carBrand: null,
destinationInfo: null,
destinationLongitude: null,
destinationLatitude: null,
rescueStatus: null,
driverId: null,
rescueAmount: null,
createTime: null,
createBy: null,
updateTime: null,
updateBy: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
if (this.time1 && this.time1.length > 0) {
this.queryParams.rescueStart = this.time1[0]
this.queryParams.rescueEnd = this.time1[1]
}
this.queryParams.pageNo = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.time1 = []
this.resetForm('queryForm')
this.queryParams = {}
this.handleQuery()
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加道路救援模块'
},
pickDriver(row) {
},
designateDriver(row) {
this.designateFlag = true
this.rescueInfoId = row.id
this.getDriverList()
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const id = row.id || this.ids
getInfo(id).then(response => {
this.form = response.data
this.open = true
this.title = '修改道路救援模块'
})
},
handleMap(row) {
this.rescueInfoId = row.id
routeInfo(row.id).then(res => {
this.ztlist = res.data
this.none(res.data)
})
getmap(row.id).then(res => {
let datas = []
res.data.forEach(it => {
let temp = [it.longitude, it.latitude]
datas.push(temp)
})
this.$refs.mapComponent.initMap(datas)
})
this.opens = true
},
none(arr) {
let sum = 0
for (var i = 0; i < arr.length; i++) {
sum += arr[i].distanceMeter
}
this.zong = sum
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateInfo(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addInfo(this.form).then(response => {
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids
this.$modal.confirm('是否确认删除道路救援模块编号为"' + ids + '"的数据项?').then(function() {
return delInfo(ids)
}).then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
}).catch(() => {
})
},
/** 导出按钮操作 */
async handleExport() {
try {
this.exportLoading = true
this.queryParams.pageNo = 1
this.queryParams.pageSize = 500
this.$modal.msgError("系统故障联系管理员")
// const data = await exportManagement(this.queryParams)
// this.$download.excel(data, `救援财务报表_${new Date().getTime()}.xlsx`)
} catch {
} finally {
this.exportLoading = false
}
}
}
}
</script>
<style scoped>
.lang-for {
width: 100%;
margin: 10px auto;
}
</style>