Merge branch 'rescue'
This commit is contained in:
commit
6911f25f97
@ -97,7 +97,7 @@
|
|||||||
"chalk": "4.1.0",
|
"chalk": "4.1.0",
|
||||||
"compression-webpack-plugin": "5.0.2",
|
"compression-webpack-plugin": "5.0.2",
|
||||||
"connect": "3.6.6",
|
"connect": "3.6.6",
|
||||||
"eslint": "7.15.0",
|
"eslint": "^6.8.0",
|
||||||
"eslint-config-airbnb-base": "^14.0.0",
|
"eslint-config-airbnb-base": "^14.0.0",
|
||||||
"eslint-plugin-import": "^2.26.0",
|
"eslint-plugin-import": "^2.26.0",
|
||||||
"eslint-plugin-prettier": "^3.1.0",
|
"eslint-plugin-prettier": "^3.1.0",
|
||||||
|
@ -8,6 +8,23 @@ export function listInfo(query) {
|
|||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 根据ID修改发票信息
|
||||||
|
export function updateBilled(data) {
|
||||||
|
return request({
|
||||||
|
url: '/system/rescueInfo/updateBilled',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据ID查询救援信息详细
|
||||||
|
export function getInfoById(id) {
|
||||||
|
return request({
|
||||||
|
url: '/system/rescueInfo/getById',
|
||||||
|
method: 'get',
|
||||||
|
params: { id }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 已撤销订单列表
|
// 已撤销订单列表
|
||||||
export function listByRevoke(query) {
|
export function listByRevoke(query) {
|
||||||
@ -150,3 +167,28 @@ export function confirmReceipt(data){
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 应收款、已收款、代收款统计
|
||||||
|
export function getCountNum(query){
|
||||||
|
return request({
|
||||||
|
url: '/app/rescueInfo/getRescueStatisticsInfoNum',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取所有渠道
|
||||||
|
export function channelList() {
|
||||||
|
return request({
|
||||||
|
url: '/rescue-channel-source/channelList',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取所有来源
|
||||||
|
export function sourceList() {
|
||||||
|
return request({
|
||||||
|
url: '/rescue-channel-source/sourceList',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -148,6 +148,8 @@ export const DICT_TYPE = {
|
|||||||
COMPANY_COST_TYPE: 'company_cost_type',
|
COMPANY_COST_TYPE: 'company_cost_type',
|
||||||
// 救援车车型
|
// 救援车车型
|
||||||
JYC_TYPE: 'jyc_type',
|
JYC_TYPE: 'jyc_type',
|
||||||
|
// 救援车归属
|
||||||
|
RESCUE_CAR_OWN: 'rescue_car_own',
|
||||||
RESCUE_CAR_CATEGORY: 'rescue_car_category',
|
RESCUE_CAR_CATEGORY: 'rescue_car_category',
|
||||||
Drive_Dialy: 'drive_dialy',
|
Drive_Dialy: 'drive_dialy',
|
||||||
Jx_report_state: 'jx_report_state',
|
Jx_report_state: 'jx_report_state',
|
||||||
|
@ -79,31 +79,41 @@
|
|||||||
<dict-tag :type="DICT_TYPE.JYC_TYPE" :value="scope.row.rescueCarType"/>
|
<dict-tag :type="DICT_TYPE.JYC_TYPE" :value="scope.row.rescueCarType"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="车牌号" align="center" prop="rescueCarNum" />
|
<el-table-column label="车牌号" align="center" prop="rescueCarNum" width="120"/>
|
||||||
<el-table-column label="品牌型号" align="center" prop="rescueCarBrand" />
|
<el-table-column label="品牌型号" align="center" prop="rescueCarBrand" width="120"/>
|
||||||
<el-table-column label="车辆种类" align="center" prop="carCategory" />
|
<el-table-column label="车辆种类" align="center" prop="carCategory" />
|
||||||
<el-table-column label="图片" align="center" prop="carImage" width="100">
|
<el-table-column label="图片" align="center" prop="carImage" width="100">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<image-preview :src="scope.row.carImage" :width="50" :height="50"/>
|
<image-preview :src="scope.row.carImage" :width="50" :height="50"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="购买时间" align="center" prop="carBuyTime" width="180">
|
<el-table-column label="保养到期里程" align="center" prop="carMaintenanceMileage" width="120"/>
|
||||||
|
|
||||||
|
<el-table-column label="救援车辆归属" align="center" prop="rescueCarOwn" width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<!-- <dict-tag :options="dict.type.rescue_car_own" :value="scope.row.rescueCarOwn"/> -->
|
||||||
|
<!-- <dict-tag :options="DICT_TYPE.RESCUE_CAR_OWN" :value="scope.row.rescueCarOwn"/> -->
|
||||||
|
<dict-tag :type="DICT_TYPE.RESCUE_CAR_OWN" :value="scope.row.rescueCarOwn"/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column label="购买时间" align="center" prop="carBuyTime" width="130">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ parseTime(scope.row.carBuyTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.carBuyTime, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="保养到期时间" align="center" prop="carKeepTime" width="180">
|
<!-- <el-table-column label="保养到期时间" align="center" prop="carKeepTime" width="180">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ parseTime(scope.row.carKeepTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.carKeepTime, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
|
|
||||||
<el-table-column label="保险到期时间" align="center" prop="carInsuranceTime" width="180">
|
<el-table-column label="保险到期时间" align="center" prop="carInsuranceTime" width="130">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ parseTime(scope.row.carInsuranceTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.carInsuranceTime, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="年检到期时间" align="center" prop="carCheckTime" width="180">
|
<el-table-column label="年检到期时间" align="center" prop="carCheckTime" width="130">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ parseTime(scope.row.carCheckTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.carCheckTime, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
@ -165,6 +175,18 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="救援车辆归属" prop="rescueCarOwn">
|
||||||
|
<el-select v-model="form.rescueCarOwn" placeholder="请选择归属类型">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in this.getDictDatas(DICT_TYPE.RESCUE_CAR_OWN)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="车牌号" prop="rescueCarNum">
|
<el-form-item label="车牌号" prop="rescueCarNum">
|
||||||
<el-input v-model="form.rescueCarNum" placeholder="请输入车牌号" />
|
<el-input v-model="form.rescueCarNum" placeholder="请输入车牌号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -195,14 +217,17 @@
|
|||||||
placeholder="请选择购买时间">
|
placeholder="请选择购买时间">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="保养到期时间" prop="carBuyTime">
|
<el-form-item label="保养到期里程" prop="carMaintenanceMileage">
|
||||||
|
<el-input v-model="form.carMaintenanceMileage" placeholder="请输入保养到期里程" />
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="保养到期时间" prop="carBuyTime">
|
||||||
<el-date-picker clearable
|
<el-date-picker clearable
|
||||||
v-model="form.carKeepTime"
|
v-model="form.carKeepTime"
|
||||||
type="date"
|
type="date"
|
||||||
value-format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd"
|
||||||
placeholder="请选择到期时间">
|
placeholder="请选择到期时间">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<el-form-item label="保险到期时间" prop="carBuyTime">
|
<el-form-item label="保险到期时间" prop="carBuyTime">
|
||||||
<el-date-picker clearable
|
<el-date-picker clearable
|
||||||
v-model="form.carInsuranceTime"
|
v-model="form.carInsuranceTime"
|
||||||
@ -255,7 +280,7 @@
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "RescueCar",
|
name: "RescueCar",
|
||||||
dicts: ['car_own', 'car_use_nature', 'jyc_type', 'car_license_color'],
|
dicts: ['car_own', 'car_use_nature', 'jyc_type', 'car_license_color','rescue_car_own'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
// 遮罩层
|
// 遮罩层
|
||||||
|
@ -81,6 +81,26 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="渠道" >
|
||||||
|
<el-select v-model="queryParams.channel" placeholder="请选择渠道" clearable>
|
||||||
|
<el-option
|
||||||
|
v-for="channel in channelList"
|
||||||
|
:key="channel.id"
|
||||||
|
:label="channel.name"
|
||||||
|
:value="channel.name"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="来源" >
|
||||||
|
<el-select v-model="queryParams.source" placeholder="请选择来源" clearable>
|
||||||
|
<el-option
|
||||||
|
v-for="source in sourceList"
|
||||||
|
:key="source.id"
|
||||||
|
:label="source.name"
|
||||||
|
:value="source.name"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="救援时间" prop="maintenanceTime">
|
<el-form-item label="救援时间" prop="maintenanceTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="time1"
|
v-model="time1"
|
||||||
@ -110,6 +130,15 @@
|
|||||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
<el-row type="flex"
|
||||||
|
justify="center"
|
||||||
|
style="margin:-20px 0 8px;white-space:nowrap;font-size:16px;font-weight:600;">
|
||||||
|
<span style="margin-right:24px;">应收款:{{ countNum.yingskNum }}</span>
|
||||||
|
<span style="margin-right:24px;">已收款:{{ countNum.yiskNum }}</span>
|
||||||
|
<span>待收款:{{ countNum.dskNum }}</span>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
<el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column label="序号" align="center">
|
<el-table-column label="序号" align="center">
|
||||||
<template scope="scope">
|
<template scope="scope">
|
||||||
@ -161,6 +190,18 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="130" label="救援地点" :show-overflow-tooltip="true" align="center" prop="rescuePosition"/>
|
<el-table-column width="130" label="救援地点" :show-overflow-tooltip="true" align="center" prop="rescuePosition"/>
|
||||||
|
<el-table-column width="100" label="出发里程表" align="center" prop="startScale"/>
|
||||||
|
<el-table-column width="100" label="结束里程表" align="center" prop="endScale"/>
|
||||||
|
<el-table-column width="100" label="施救里程数" align="center" prop="endScale">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span
|
||||||
|
v-if="Number.isFinite(scope.row.startScale) &&
|
||||||
|
Number.isFinite(scope.row.endScale) &&
|
||||||
|
scope.row.endScale >= scope.row.startScale">
|
||||||
|
{{ scope.row.endScale - scope.row.startScale }}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="收费类型" align="center" prop="feeType">
|
<el-table-column label="收费类型" align="center" prop="feeType">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<dict-tag :type="DICT_TYPE.FEE_TYPE" :value="scope.row.feeType"/>
|
<dict-tag :type="DICT_TYPE.FEE_TYPE" :value="scope.row.feeType"/>
|
||||||
@ -213,8 +254,39 @@
|
|||||||
<el-table-column label="确认收款备注" align="center" width="100" prop="confirmPaymentPersonRemark" show-overflow-tooltip/>
|
<el-table-column label="确认收款备注" align="center" width="100" prop="confirmPaymentPersonRemark" show-overflow-tooltip/>
|
||||||
<!-- 0是未确认, 1是已确认-->
|
<!-- 0是未确认, 1是已确认-->
|
||||||
|
|
||||||
|
<el-table-column label="是否开票" align="center" width="100" prop="ifBilled" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.ifBilled === '1'" style="color: #67c23a">已开票</span>
|
||||||
|
<span v-else style="color: #e6a23c">未开票</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="开票人" align="center" width="100" prop="billedUsername" />
|
||||||
<el-table-column fixed="right" label="操作" align="center" width="150" class-name="small-padding fixed-width">
|
<el-table-column fixed="right" label="操作" align="center" width="150" class-name="small-padding fixed-width">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
|
<!-- <el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-view"
|
||||||
|
@click="handleShow(scope.row)"
|
||||||
|
>查看
|
||||||
|
</el-button> -->
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-circle-check"
|
||||||
|
@click="showBilled(scope.row)"
|
||||||
|
style="color: #c0c4cc"
|
||||||
|
v-if="scope.row.ifBilled === '1' "
|
||||||
|
>已开票
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-circle-check"
|
||||||
|
@click="unbilled(scope.row)"
|
||||||
|
v-else
|
||||||
|
>未开票
|
||||||
|
</el-button>
|
||||||
<!-- <el-button-->
|
<!-- <el-button-->
|
||||||
<!-- size="mini"-->
|
<!-- size="mini"-->
|
||||||
<!-- type="text"-->
|
<!-- type="text"-->
|
||||||
@ -291,6 +363,300 @@
|
|||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<!-- 未开票对话框 -->
|
||||||
|
<el-dialog title="未开票" :visible.sync="unbilledOpen" width="600px" append-to-body>
|
||||||
|
<!-- 点击显示弹框 记录开票信息(二维码)和备注 -->
|
||||||
|
<el-form ref="unbilledForm" :model="unbilledForm" label-width="120px">
|
||||||
|
<el-form-item label="图片" prop="billedQrcode">
|
||||||
|
<image-upload v-model="unbilledForm.billedQrcode"/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="billedRemark">
|
||||||
|
<el-input
|
||||||
|
v-model="unbilledForm.billedRemark"
|
||||||
|
type="textarea"
|
||||||
|
placeholder="请输入备注"
|
||||||
|
:autosize="{ minRows:2, maxRows:4 }"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="unbilledSubmit">确 定</el-button>
|
||||||
|
<el-button @click="unbilledCancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<!-- 已开票对话框(仅展示)-->
|
||||||
|
<el-dialog
|
||||||
|
title="已开票"
|
||||||
|
:visible.sync="billedOpen"
|
||||||
|
width="600px"
|
||||||
|
append-to-body
|
||||||
|
custom-class="billed-dialog-custom"
|
||||||
|
>
|
||||||
|
<el-form ref="billedFormRef" :model="billedForm" label-width="120px">
|
||||||
|
<!-- 操作人(只读) -->
|
||||||
|
<el-form-item label="操作人">
|
||||||
|
<el-input v-model="billedForm.billedUsername" :disabled="true" placeholder="—" />
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 开票二维码:展示 + 预览 -->
|
||||||
|
<el-form-item label="开票二维码">
|
||||||
|
<el-image
|
||||||
|
v-if="billedForm.billedQrcode"
|
||||||
|
:src="billedForm.billedQrcode"
|
||||||
|
:preview-src-list="[billedForm.billedQrcode]"
|
||||||
|
fit="contain"
|
||||||
|
style="width:160px;height:160px;border:1px solid #eee"
|
||||||
|
/>
|
||||||
|
<span v-else class="text-gray-400">暂无二维码</span>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 发票备注(只读) -->
|
||||||
|
<el-form-item label="发票备注">
|
||||||
|
<el-input
|
||||||
|
v-model="billedForm.billedRemark"
|
||||||
|
type="textarea"
|
||||||
|
:autosize="{ minRows: 2, maxRows: 4 }"
|
||||||
|
:disabled="true"
|
||||||
|
placeholder="—"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="billedOpen = false">关 闭</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<!-- 救援订单详情对话框 -->
|
||||||
|
<el-dialog
|
||||||
|
title="单据详情"
|
||||||
|
:visible.sync="orderDialogVisible"
|
||||||
|
width="80%"
|
||||||
|
v-dialogDrag
|
||||||
|
append-to-body
|
||||||
|
>
|
||||||
|
<el-card class="box-card">
|
||||||
|
<!-- 卡片头 -->
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<i class="el-icon-plus" />
|
||||||
|
<span>工单信息</span>
|
||||||
|
</div>
|
||||||
|
<!-- 卡片内容 -->
|
||||||
|
<div>
|
||||||
|
<el-descriptions
|
||||||
|
class="margin-top"
|
||||||
|
:column="4"
|
||||||
|
:size="'medium'"
|
||||||
|
border
|
||||||
|
style="margin-bottom: 1rem"
|
||||||
|
>
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">客户名称</template>
|
||||||
|
{{ infoList.connectionName }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">客户手机号</template>
|
||||||
|
{{ infoList.connectionPhone }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">客户车牌号</template>
|
||||||
|
{{ infoList.licenseNum }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">司机姓名</template>
|
||||||
|
{{ infoList.driverName }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">司机手机号</template>
|
||||||
|
{{ infoList.driverPhoneNum }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">司机车牌号</template>
|
||||||
|
{{ infoList.driverCarNum }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">车辆种类</template>
|
||||||
|
{{ infoList.carType }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">救援时间</template>
|
||||||
|
{{ infoList.rescueTime }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">救援开始时间</template>
|
||||||
|
<!-- {{ infoList.rescueStartTime }} -->
|
||||||
|
{{ parseTime(infoList.rescueStartTime, '{y}-{m}-{d} {h}:{m}') }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">救援结束时间</template>
|
||||||
|
<!-- {{ infoList.rescueEndTime }} -->
|
||||||
|
{{ parseTime(infoList.rescueEndTime, '{y}-{m}-{d} {h}:{m}') }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">救援类型</template>
|
||||||
|
<dict-tag :type="DICT_TYPE.DLJY_TYPE" :value="infoList.rescueType" />
|
||||||
|
<!-- {{ infoList.rescueType }} -->
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">车辆类型</template>
|
||||||
|
<!-- {{ infoList.carType }} -->
|
||||||
|
<dict-tag :type="DICT_TYPE.RESCUE_CAR_TYPE" :value="infoList.carType"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2">
|
||||||
|
<template slot="label">救援地点</template>
|
||||||
|
{{ infoList.rescuePosition }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">收费类型</template>
|
||||||
|
<!-- {{ infoList.feeType }} -->
|
||||||
|
<dict-tag :type="DICT_TYPE.FEE_TYPE" :value="infoList.carType"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item :span="2">
|
||||||
|
<template slot="label">目的地</template>
|
||||||
|
{{ infoList.destination }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">救援状态</template>
|
||||||
|
<!-- {{ infoList.rescueStatus }} -->
|
||||||
|
<dict-tag :type="DICT_TYPE.JY_STATUS" :value="infoList.rescueStatus"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">路段</template>
|
||||||
|
{{ infoList.sectionRoad }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">订单状态</template>
|
||||||
|
<!-- {{ infoList.orderStatus }} -->
|
||||||
|
<dict-tag :type="DICT_TYPE.JY_ORDER_STATUS" :value="infoList.orderStatus"/>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">应收金额</template>
|
||||||
|
{{ (infoList.setMoney / 100).toFixed(2) }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">实付金额</template>
|
||||||
|
{{ (infoList.payMoney / 100).toFixed(2) }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">收款时间</template>
|
||||||
|
{{ infoList.payTime }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
|
||||||
|
<PrintButton
|
||||||
|
ref="printButton"
|
||||||
|
print-title="救援工单"
|
||||||
|
@click="handlePrint"
|
||||||
|
style="float: left"
|
||||||
|
>
|
||||||
|
<template #printContent>
|
||||||
|
<div class="print-content">
|
||||||
|
<h1 style="text-align: center">救援工单详情</h1>
|
||||||
|
<table class="print-table" border="1" cellspacing="0" cellpadding="8"
|
||||||
|
style="width: 100%; border-collapse: collapse; margin-bottom: 20px;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><strong>客户名称</strong></td>
|
||||||
|
<td>{{ infoList.connectionName }}</td>
|
||||||
|
<td><strong>客户手机号</strong></td>
|
||||||
|
<td>{{ infoList.connectionPhone }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>客户车牌号</strong></td>
|
||||||
|
<td>{{ infoList.licenseNum }}</td>
|
||||||
|
<td><strong>司机姓名</strong></td>
|
||||||
|
<td>{{ infoList.driverName }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>司机手机号</strong></td>
|
||||||
|
<td>{{ infoList.driverPhoneNum }}</td>
|
||||||
|
<td><strong>司机车牌号</strong></td>
|
||||||
|
<td>{{ infoList.driverCarNum }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>车辆种类</strong></td>
|
||||||
|
<td>{{ infoList.carType }}</td>
|
||||||
|
<td><strong>救援时间</strong></td>
|
||||||
|
<td>{{ infoList.rescueTime }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>救援开始时间</strong></td>
|
||||||
|
<!-- <td>{{ infoList.rescueStartTime }}</td> -->
|
||||||
|
<td>{{ parseTime(infoList.rescueStartTime, '{y}-{m}-{d} {h}:{m}') }}</td>
|
||||||
|
<td><strong>救援结束时间</strong></td>
|
||||||
|
<!-- <td>{{ infoList.rescueEndTime }}</td> -->
|
||||||
|
<td>{{ parseTime(infoList.rescueEndTime, '{y}-{m}-{d} {h}:{m}') }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>救援类型</strong></td>
|
||||||
|
<!-- <td>{{ infoList.rescueType }}</td> -->
|
||||||
|
<td><dict-tag :type="DICT_TYPE.DLJY_TYPE" :value="infoList.rescueType" /></td>
|
||||||
|
<td><strong>车辆类型</strong></td>
|
||||||
|
<!-- <td>{{ infoList.carType }}</td> -->
|
||||||
|
<td><dict-tag :type="DICT_TYPE.RESCUE_CAR_TYPE" :value="infoList.carType"/></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>救援地点</strong></td>
|
||||||
|
<td colspan="3">{{ infoList.rescuePosition }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>收费类型</strong></td>
|
||||||
|
<!-- <td>{{ infoList.feeType }}</td> -->
|
||||||
|
<td><dict-tag :type="DICT_TYPE.FEE_TYPE" :value="infoList.carType"/></td>
|
||||||
|
<td><strong>目的地</strong></td>
|
||||||
|
<td>{{ infoList.destination }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>救援状态</strong></td>
|
||||||
|
<!-- <td>{{ infoList.rescueStatus }}</td> -->
|
||||||
|
<td><dict-tag :type="DICT_TYPE.JY_STATUS" :value="infoList.rescueStatus"/></td>
|
||||||
|
<td><strong>路段</strong></td>
|
||||||
|
<td>{{ infoList.sectionRoad }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>订单状态</strong></td>
|
||||||
|
<!-- <td>{{ infoList.orderStatus }}</td> -->
|
||||||
|
<td><dict-tag :type="DICT_TYPE.JY_ORDER_STATUS" :value="infoList.orderStatus"/></td>
|
||||||
|
<td><strong>应收金额</strong></td>
|
||||||
|
<td>{{ (infoList.setMoney / 100).toFixed(2) }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>实付金额</strong></td>
|
||||||
|
<td>{{ (infoList.payMoney / 100).toFixed(2) }}</td>
|
||||||
|
<td><strong>收款时间</strong></td>
|
||||||
|
<td>{{ infoList.payTime }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</PrintButton>
|
||||||
|
|
||||||
|
<el-button @click="orderDialogVisible = false">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 添加或修改道路救援模块对话框 -->
|
<!-- 添加或修改道路救援模块对话框 -->
|
||||||
<el-dialog :title="title" :visible.sync="opens" width="600px" append-to-body>
|
<el-dialog :title="title" :visible.sync="opens" width="600px" append-to-body>
|
||||||
|
|
||||||
@ -499,17 +865,44 @@ import {
|
|||||||
designateDriver,
|
designateDriver,
|
||||||
returnOrder,
|
returnOrder,
|
||||||
watchImg,
|
watchImg,
|
||||||
downloadOrder, confirmReceipt
|
downloadOrder, confirmReceipt,
|
||||||
|
getInfoById,
|
||||||
|
updateBilled,
|
||||||
|
getCountNum,
|
||||||
|
channelList,
|
||||||
|
sourceList
|
||||||
} from '@/api/rescue/info'
|
} from '@/api/rescue/info'
|
||||||
import { getmap } from '@/api/Map/map'
|
import { getmap } from '@/api/Map/map'
|
||||||
import { getInfo as getUserInfo} from '@/api/login'
|
import { getInfo as getUserInfo} from '@/api/login'
|
||||||
import Map from '../../components/Map/index'
|
import Map from '../../components/Map/index'
|
||||||
|
import PrintButton from "@/components/PrintButton";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Info',
|
name: 'Info',
|
||||||
dicts: ['dljy_type', 'fee_type', 'rescue_car_type', 'yes_no', 'jy_status', 'jy_order_status'],
|
dicts: ['dljy_type', 'fee_type', 'rescue_car_type', 'yes_no', 'jy_status', 'jy_order_status'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
channelList:[],
|
||||||
|
sourceList:[],
|
||||||
|
countNum: {
|
||||||
|
yingskNum: 0, // 应收款
|
||||||
|
yiskNum: 0, // 已收款
|
||||||
|
dskNum: 0, // 待收款
|
||||||
|
},
|
||||||
|
billedForm: {
|
||||||
|
billedUsername: '', // 操作人姓名
|
||||||
|
billedQrcode: '', // 开票二维码图片 URL
|
||||||
|
billedRemark: '' // 发票备注
|
||||||
|
},
|
||||||
|
// 表单
|
||||||
|
unbilledForm: {
|
||||||
|
id: '',
|
||||||
|
ifBilled: '',
|
||||||
|
billedUserid: '',
|
||||||
|
billedUsername: '',
|
||||||
|
billedQrcode: '',
|
||||||
|
billedRemark: ''
|
||||||
|
},
|
||||||
// 导出遮罩层
|
// 导出遮罩层
|
||||||
exportLoading: false,
|
exportLoading: false,
|
||||||
chooseDriverId: '',
|
chooseDriverId: '',
|
||||||
@ -533,6 +926,9 @@ export default {
|
|||||||
// 弹出层标题
|
// 弹出层标题
|
||||||
title: '',
|
title: '',
|
||||||
// 是否显示弹出层
|
// 是否显示弹出层
|
||||||
|
orderDialogVisible: false,
|
||||||
|
unbilledOpen: false,
|
||||||
|
billedOpen:false,
|
||||||
open: false,
|
open: false,
|
||||||
opens: false,
|
opens: false,
|
||||||
designateFlag: false,
|
designateFlag: false,
|
||||||
@ -560,7 +956,9 @@ export default {
|
|||||||
orderStatus: null,
|
orderStatus: null,
|
||||||
rescueEnd: null,
|
rescueEnd: null,
|
||||||
rescueStart: null,
|
rescueStart: null,
|
||||||
connectionPhone: null
|
connectionPhone: null,
|
||||||
|
channel: null,
|
||||||
|
source: null
|
||||||
},
|
},
|
||||||
// 表单参数
|
// 表单参数
|
||||||
form: {},
|
form: {},
|
||||||
@ -602,18 +1000,65 @@ export default {
|
|||||||
],
|
],
|
||||||
feeType: [
|
feeType: [
|
||||||
{ required: true, message: '收费类型不能为空', trigger: 'change' }
|
{ required: true, message: '收费类型不能为空', trigger: 'change' }
|
||||||
]
|
],
|
||||||
|
billedQrcode: [{ required: true, message: '请上传二维码图片', trigger: 'change' }],
|
||||||
|
billedRemark: [{ required: false, message: '请输入备注', trigger: 'blur' }]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
Map
|
Map,
|
||||||
|
PrintButton
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getList()
|
this.getList()
|
||||||
|
this.getChannelList()
|
||||||
|
this.getSourceList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
showBilled(row) {
|
||||||
|
this.billedForm.billedUsername = row.billedUsername
|
||||||
|
this.billedForm.billedQrcode = row.billedQrcode
|
||||||
|
this.billedForm.billedRemark = row.billedRemark
|
||||||
|
this.billedOpen = true
|
||||||
|
},
|
||||||
|
// 提交
|
||||||
|
unbilledSubmit() {
|
||||||
|
// 先校验
|
||||||
|
this.$refs.unbilledForm.validate( (valid) => {
|
||||||
|
if (!valid) return;
|
||||||
|
this.unbilledForm.billedUserid = this.loginUserInfo.id
|
||||||
|
this.unbilledForm.billedUsername = this.loginUserInfo.nickname
|
||||||
|
updateBilled(this.unbilledForm).then(response => {
|
||||||
|
this.$message.success('保存成功');
|
||||||
|
this.unbilledOpen = false;
|
||||||
|
this.getList();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
unbilled(row){
|
||||||
|
this.unbilledForm.id = row.rescueOrderId
|
||||||
|
this.unbilledForm.billedQrcode = row.billedQrcode
|
||||||
|
this.unbilledForm.billedRemark = row.billedRemark
|
||||||
|
this.unbilledForm.ifBilled = '1'
|
||||||
|
this.unbilledOpen = true
|
||||||
|
this.getLoginUserInfo()
|
||||||
|
},
|
||||||
|
unbilledCancel() {
|
||||||
|
this.unbilledOpen = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
async handleShow(row){
|
||||||
|
// 打开弹窗
|
||||||
|
this.orderDialogVisible = true
|
||||||
|
console.log(row.id)
|
||||||
|
const res = await getInfoById(row.id)
|
||||||
|
this.infoList = res.data
|
||||||
|
},
|
||||||
|
handlePrint() {
|
||||||
|
this.$refs.printButton.handlePrint();
|
||||||
|
},
|
||||||
watchImg(data) {
|
watchImg(data) {
|
||||||
|
|
||||||
watchImg(data.id).then(response => {
|
watchImg(data.id).then(response => {
|
||||||
@ -718,11 +1163,31 @@ export default {
|
|||||||
this.infoList = response.data.records
|
this.infoList = response.data.records
|
||||||
this.total = response.data.total
|
this.total = response.data.total
|
||||||
this.loading = false
|
this.loading = false
|
||||||
|
this.getStatistic(this.queryParams)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getDriverList() {
|
/** 应收款、已收款、代收款统计 */
|
||||||
getDriver().then(response => {
|
getStatistic(query) {
|
||||||
this.driverList = response.data
|
getCountNum(query).then(res => {
|
||||||
|
this.countNum.yingskNum = res.data.yingskNum ? res.data.yingskNum / 100 : 0
|
||||||
|
this.countNum.yiskNum = res.data.yiskNum ? res.data.yiskNum / 100 : 0
|
||||||
|
this.countNum.dskNum = res.data.dskNum ? res.data.dskNum / 100 : 0
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 获取渠道列表
|
||||||
|
*/
|
||||||
|
getChannelList() {
|
||||||
|
channelList().then(response => {
|
||||||
|
this.channelList = response.data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 获取来源列表
|
||||||
|
*/
|
||||||
|
getSourceList() {
|
||||||
|
sourceList().then(response => {
|
||||||
|
this.sourceList = response.data
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
// 取消按钮
|
// 取消按钮
|
||||||
@ -903,6 +1368,11 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
.billed-dialog-custom >>> .el-dialog__body {
|
||||||
|
max-height: 500px; /* 或者你需要的高度 */
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.lang-for {
|
.lang-for {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 10px auto;
|
margin: 10px auto;
|
||||||
|
@ -35,10 +35,13 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="司机" align="center" prop="realName" />
|
<el-table-column label="司机" align="center" prop="realName" />
|
||||||
<el-table-column label="车牌号" align="center" prop="rescueCarNum" />
|
<el-table-column width="100" label="车牌号" align="center" prop="rescueCarNum" />
|
||||||
<el-table-column label="加油数量(L)" align="center" prop="refuelNum" />
|
<el-table-column width="150" label="加油数量(L)" align="center" prop="refuelNum" />
|
||||||
<el-table-column label="花费(元)" align="center" prop="refuelMoney" />
|
<el-table-column label="花费(元)" align="center" prop="refuelMoney" />
|
||||||
<el-table-column label="当前公里数(km)" align="center" prop="refuelDistance" />
|
<el-table-column width="150" label="当前公里数(km)" align="center" prop="refuelDistance" />
|
||||||
|
<el-table-column width="170" label="距上次加油行驶公里(km)" prop="distancePrevKm" align="center"/>
|
||||||
|
<el-table-column width="150" label="每公里油耗(L/km)" prop="fuelEfficiencyLpkm" align="center"/>
|
||||||
|
<el-table-column width="150" label="每公里成本(元/km)" prop="costPerKm" align="center"/>
|
||||||
<el-table-column label="拍照" align="center" prop="showImage" width="100">
|
<el-table-column label="拍照" align="center" prop="showImage" width="100">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<image-preview :src="scope.row.showImage" :width="50" :height="50"/>
|
<image-preview :src="scope.row.showImage" :width="50" :height="50"/>
|
||||||
@ -49,7 +52,7 @@
|
|||||||
<span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.recordTime, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column width="150" label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
size="mini"
|
size="mini"
|
||||||
|
Loading…
Reference in New Issue
Block a user