|
|
|
<template>
|
|
|
|
<el-card class="box-card">
|
|
|
|
<el-tabs type="border-card" class="topClass" @tab-change="TopChange">
|
|
|
|
<el-tab-pane label="订单填写"></el-tab-pane>
|
|
|
|
<el-tab-pane label="零担填写"></el-tab-pane>
|
|
|
|
</el-tabs>
|
|
|
|
<!-- <el-divider content-position="left">
|
|
|
|
<span> {{ routerState ? '信息查看' : '工单新增' }}</span>
|
|
|
|
</el-divider> -->
|
|
|
|
|
|
|
|
<el-form
|
|
|
|
:model="Indexform"
|
|
|
|
label-width="100px"
|
|
|
|
class="IndexFrom"
|
|
|
|
ref="IndexForm"
|
|
|
|
:rules="rules"
|
|
|
|
>
|
|
|
|
<el-form-item label="异常类型">
|
|
|
|
<el-select
|
|
|
|
v-model="Indexform.workOrderType"
|
|
|
|
clearable
|
|
|
|
placeholder="选择工单异常类型"
|
|
|
|
@change="abnormalChange"
|
|
|
|
>
|
|
|
|
<el-option
|
|
|
|
v-for="item in IndexException"
|
|
|
|
:key="item.value"
|
|
|
|
:label="item.label"
|
|
|
|
:value="item.value"
|
|
|
|
/>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="发现节点">
|
|
|
|
<el-select
|
|
|
|
v-model="Indexform.discoveryNode"
|
|
|
|
clearable
|
|
|
|
placeholder="选择发现节点"
|
|
|
|
@change="DiscoveringNodesChange"
|
|
|
|
>
|
|
|
|
<el-option
|
|
|
|
v-for="item in DiscoveringNodes"
|
|
|
|
:key="item.value"
|
|
|
|
:label="item.label"
|
|
|
|
:value="item.value"
|
|
|
|
/>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="异常工单号">
|
|
|
|
<el-input
|
|
|
|
v-model="Indexform.workOrderNumber"
|
|
|
|
disabled
|
|
|
|
placeholder="异常工单号(自动生成)"
|
|
|
|
clearable
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-tabs type="border-card" class="PackageInformation" v-show="identifying != '2'">
|
|
|
|
<el-tab-pane label="包件信息">
|
|
|
|
<div class="ResponsibilityBoxS">
|
|
|
|
<div><el-button type="primary" @click="AddPackage"> 添加信息 </el-button></div>
|
|
|
|
<div class="el_btbox" v-for="(item, index) in PackageInfo" :key="index">
|
|
|
|
<div class="leftbox">
|
|
|
|
<div class="maxBox">
|
|
|
|
<span class="title">包条码:</span>
|
|
|
|
<el-input
|
|
|
|
v-model="item.packageCode"
|
|
|
|
placeholder="请输入包条码"
|
|
|
|
clearable
|
|
|
|
:rows="2"
|
|
|
|
@change="ChangePackageInfo(item.packageCode, index)"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="maxBox">
|
|
|
|
<span class="title">订单自编码:</span>
|
|
|
|
<el-input v-model="item.orderCode" placeholder="请输入订单自编号" clearable />
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="maxBox">
|
|
|
|
<span class="title">运单号:</span>
|
|
|
|
<el-input v-model="item.waybillNumber" placeholder="请输入运单号" clearable />
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="maxBox">
|
|
|
|
<span class="title">品牌:</span>
|
|
|
|
<el-input v-model="item.brandName" placeholder="请输入品牌" clearable />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="el-btn">
|
|
|
|
<el-button v-if="item.state" type="primary" @click="historicalPackages(index)">
|
|
|
|
查看历史包件
|
|
|
|
</el-button>
|
|
|
|
<el-button type="primary" @click="PackagRemoval(index)"> 移除 </el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="NumTotal">
|
|
|
|
<span>总件数:{{ NumberPackages }}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-tab-pane>
|
|
|
|
</el-tabs>
|
|
|
|
|
|
|
|
<!-- 必填(提货环节可以不填写运单号) -->
|
|
|
|
<!-- <el-form-item label="运单号" v-if="groundlineType != 1">
|
|
|
|
<el-input v-model="Indexform.waybillNumber" placeholder="请输入运单号" clearable />
|
|
|
|
</el-form-item> -->
|
|
|
|
|
|
|
|
<!-- <el-form-item label="少货件数" v-if="StateType || SelectType == 2">
|
|
|
|
<div class="moneyNum">
|
|
|
|
<el-input
|
|
|
|
@change="ShortageTtems"
|
|
|
|
v-model="Indexform.number"
|
|
|
|
placeholder="请输入少货件数"
|
|
|
|
clearable
|
|
|
|
/>
|
|
|
|
<div class="el_btn" @click="moneyBtnA"><span>编辑</span></div>
|
|
|
|
</div>
|
|
|
|
</el-form-item> -->
|
|
|
|
|
|
|
|
<!-- <el-form-item label="窜货件数" v-if="StateType || SelectType == 3">
|
|
|
|
<div class="moneyNum">
|
|
|
|
<el-input
|
|
|
|
@change="fleeingTtems"
|
|
|
|
v-model="Indexform.number"
|
|
|
|
placeholder="请输入窜货件数"
|
|
|
|
clearable
|
|
|
|
/>
|
|
|
|
<div class="el_btn" @click="moneyBtnB"><span>编辑</span></div>
|
|
|
|
</div>
|
|
|
|
</el-form-item> -->
|
|
|
|
|
|
|
|
<!-- <el-form-item
|
|
|
|
label="包条码"
|
|
|
|
v-if="SelectType == 1 || SelectType == 2 || SelectType == 3 || StateType"
|
|
|
|
>
|
|
|
|
<el-input
|
|
|
|
v-model="Indexform.packageCode"
|
|
|
|
placeholder="请输入包条码,多个用逗号隔开"
|
|
|
|
clearable
|
|
|
|
/>
|
|
|
|
</el-form-item> -->
|
|
|
|
|
|
|
|
<!-- 必填 -->
|
|
|
|
<!-- <el-form-item label="订单自编号">
|
|
|
|
<el-input v-model="Indexform.orderCode" placeholder="请输入订单自编号" clearable />
|
|
|
|
</el-form-item> -->
|
|
|
|
|
|
|
|
<!-- 必填 -->
|
|
|
|
|
|
|
|
<el-form-item
|
|
|
|
label="车次号"
|
|
|
|
v-if="
|
|
|
|
groundlineSet ||
|
|
|
|
groundlineType == 1 ||
|
|
|
|
groundlineType == 3 ||
|
|
|
|
groundlineType == 4 ||
|
|
|
|
groundlineType == 8 ||
|
|
|
|
groundlineType == 5 ||
|
|
|
|
groundlineType == 7 ||
|
|
|
|
groundlineType == 8
|
|
|
|
"
|
|
|
|
>
|
|
|
|
<el-input
|
|
|
|
v-model="Indexform.trainNumber"
|
|
|
|
placeholder="请输入车次号(干线卸车环节)"
|
|
|
|
clearable
|
|
|
|
@change="DeliveryTrainnumber"
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item
|
|
|
|
label="配送时间"
|
|
|
|
v-if="
|
|
|
|
groundlineSet ||
|
|
|
|
groundlineType == 3 ||
|
|
|
|
groundlineType == 4 ||
|
|
|
|
groundlineType == 8 ||
|
|
|
|
groundlineType == 5 ||
|
|
|
|
groundlineType == 7 ||
|
|
|
|
groundlineType == 8
|
|
|
|
"
|
|
|
|
>
|
|
|
|
<el-date-picker
|
|
|
|
v-model="Indexform.deliveryTime"
|
|
|
|
type="datetime"
|
|
|
|
format="YYYY-MM-DD"
|
|
|
|
value-format="YYYY-MM-DD"
|
|
|
|
placeholder="请选择配送时间"
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<!-- 必填 -->
|
|
|
|
|
|
|
|
<el-form-item
|
|
|
|
label="配送司机"
|
|
|
|
v-if="
|
|
|
|
groundlineSet ||
|
|
|
|
groundlineType == 3 ||
|
|
|
|
groundlineType == 4 ||
|
|
|
|
groundlineType == 8 ||
|
|
|
|
groundlineType == 5 ||
|
|
|
|
groundlineType == 7 ||
|
|
|
|
groundlineType == 8
|
|
|
|
"
|
|
|
|
>
|
|
|
|
<el-select
|
|
|
|
v-model="Indexform.deliveryDriver"
|
|
|
|
filterable
|
|
|
|
default-first-option
|
|
|
|
:reserve-keyword="false"
|
|
|
|
placeholder="请输入配送司机"
|
|
|
|
@change="changeDeliveryDriver"
|
|
|
|
>
|
|
|
|
<el-option
|
|
|
|
v-for="item in DeliveryDriver"
|
|
|
|
:key="item.value"
|
|
|
|
:label="item.driverName + '-' + item.trainNumber"
|
|
|
|
:value="item.id"
|
|
|
|
/>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="车辆路线" v-if="groundlineSet || groundlineType == 3">
|
|
|
|
<el-input v-model="Indexform.vehicleRoute" placeholder="请输入车辆路线车次号" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="发货时间">
|
|
|
|
<el-date-picker
|
|
|
|
v-model="Indexform.deliverGoodsTime"
|
|
|
|
type="datetime"
|
|
|
|
format="YYYY-MM-DD"
|
|
|
|
value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
placeholder="请选择发货时间"
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item
|
|
|
|
label="发现时间"
|
|
|
|
v-if="
|
|
|
|
groundlineSet ||
|
|
|
|
groundlineType == 2 ||
|
|
|
|
groundlineType == 3 ||
|
|
|
|
groundlineType == 4 ||
|
|
|
|
groundlineType == 8 ||
|
|
|
|
groundlineType == 5 ||
|
|
|
|
groundlineType == 7 ||
|
|
|
|
groundlineType == 8
|
|
|
|
"
|
|
|
|
>
|
|
|
|
<el-date-picker
|
|
|
|
v-model="Indexform.discoveryTime"
|
|
|
|
type="datetime"
|
|
|
|
format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
placeholder="请选择发现时间"
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="一级品">
|
|
|
|
<el-input v-model="Indexform.first" placeholder="请输入一级品类" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="二级品">
|
|
|
|
<el-input v-model="Indexform.secondary" placeholder="请输入二级品类" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item
|
|
|
|
label="入库时间"
|
|
|
|
v-if="groundlineSet || groundlineType == 2 || groundlineType == 4"
|
|
|
|
>
|
|
|
|
<el-date-picker
|
|
|
|
v-model="Indexform.warehousingTime"
|
|
|
|
type="datetime"
|
|
|
|
format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
placeholder="请选择入库"
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
<!-- 必填 -->
|
|
|
|
<el-form-item label="运单商场">
|
|
|
|
<el-input v-model="Indexform.waybillMall" placeholder="请输入运单商场" clearable />
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="合作模式">
|
|
|
|
<el-input
|
|
|
|
v-model="Indexform.typeServiceName"
|
|
|
|
disabled
|
|
|
|
placeholder="请输入运单商场"
|
|
|
|
clearable
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<!-- <el-form-item label="钉钉流程号">
|
|
|
|
<el-input v-model="Indexform.processNumber" placeholder="请输入钉钉流程号" />
|
|
|
|
</el-form-item> -->
|
|
|
|
|
|
|
|
<!-- 必填 -->
|
|
|
|
<!-- <el-form-item label="异常问题描述">
|
|
|
|
<el-input v-model="Indexform.problemDescription" placeholder="请输入异常问题" clearable />
|
|
|
|
</el-form-item> -->
|
|
|
|
|
|
|
|
<el-form-item label="处理方">
|
|
|
|
<el-select
|
|
|
|
v-model="Indexform.processor"
|
|
|
|
clearable
|
|
|
|
filterable
|
|
|
|
multiple
|
|
|
|
placeholder="请选择处理方"
|
|
|
|
>
|
|
|
|
<el-option
|
|
|
|
v-for="item in warehouseData"
|
|
|
|
:key="item.value"
|
|
|
|
:label="item.label"
|
|
|
|
:value="item.value"
|
|
|
|
/>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="调查经过" style="height: auto">
|
|
|
|
<el-input
|
|
|
|
v-model="Indexform.investigationPocess"
|
|
|
|
placeholder="请输入调查经过"
|
|
|
|
clearable
|
|
|
|
:rows="5"
|
|
|
|
type="textarea"
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item> </el-form-item>
|
|
|
|
|
|
|
|
<el-form-item> </el-form-item>
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
<!-- 必填 -->
|
|
|
|
<!-- <div class="el_clzr">
|
|
|
|
<el-form-item class="investigate" label="调查经过">
|
|
|
|
<el-input
|
|
|
|
v-model="Indexform.investigationPocess"
|
|
|
|
placeholder="请输入调查经过"
|
|
|
|
clearable
|
|
|
|
:rows="2"
|
|
|
|
type="textarea"
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<el-form-item label="处理方">
|
|
|
|
<el-select
|
|
|
|
v-model="Indexform.processor"
|
|
|
|
clearable
|
|
|
|
filterable
|
|
|
|
multiple
|
|
|
|
placeholder="请选择处理方"
|
|
|
|
>
|
|
|
|
<el-option
|
|
|
|
v-for="item in warehouseData"
|
|
|
|
:key="item.value"
|
|
|
|
:label="item.label"
|
|
|
|
:value="item.value"
|
|
|
|
/>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</div> -->
|
|
|
|
|
|
|
|
<el-tabs type="border-card">
|
|
|
|
<el-tab-pane label="内部责任划分">
|
|
|
|
<div class="ResponsibilityBox">
|
|
|
|
<div><el-button type="primary" @click="responsibleParty"> 添加信息 </el-button></div>
|
|
|
|
<div class="el_btbox" v-for="(item, index) in FangAddList" :key="index">
|
|
|
|
<div class="leftbox">
|
|
|
|
<div class="maxBox">
|
|
|
|
<span class="title">责任方:</span>
|
|
|
|
|
|
|
|
<!-- 提货环节 -->
|
|
|
|
|
|
|
|
<el-select
|
|
|
|
v-model="item.businessName"
|
|
|
|
clearable
|
|
|
|
placeholder="请选提货择责任方"
|
|
|
|
v-if="groundlineType == 1"
|
|
|
|
>
|
|
|
|
<el-option
|
|
|
|
v-for="item in responsible"
|
|
|
|
:key="item.value"
|
|
|
|
:label="item.label"
|
|
|
|
:value="item.value"
|
|
|
|
/>
|
|
|
|
</el-select>
|
|
|
|
|
|
|
|
<el-select
|
|
|
|
v-else
|
|
|
|
v-model="item.businessName"
|
|
|
|
filterable
|
|
|
|
placeholder="请选择责任方"
|
|
|
|
@change="ResponsiblePartychange(item.businessName, index)"
|
|
|
|
>
|
|
|
|
<el-option
|
|
|
|
v-for="item in warehouseData"
|
|
|
|
:key="item.value"
|
|
|
|
:label="item.label"
|
|
|
|
:value="item.value"
|
|
|
|
/>
|
|
|
|
</el-select>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="maxBox">
|
|
|
|
<span class="title">责任人:</span>
|
|
|
|
<el-select
|
|
|
|
v-if="groundlineType != 1"
|
|
|
|
v-model="item.personResponsibleName"
|
|
|
|
clearable
|
|
|
|
filterable
|
|
|
|
placeholder="请选责任人"
|
|
|
|
>
|
|
|
|
<el-option
|
|
|
|
v-for="item in personResponsibleList"
|
|
|
|
:key="item.id"
|
|
|
|
:label="item.name"
|
|
|
|
:value="item.id"
|
|
|
|
/>
|
|
|
|
</el-select>
|
|
|
|
|
|
|
|
<el-input v-else v-model="item.personResponsibleName" placeholder="请输入责任人" />
|
|
|
|
</div>
|
|
|
|
<div class="maxBox el_zb">
|
|
|
|
<span class="title">占比:</span>
|
|
|
|
<el-input-number
|
|
|
|
:controls="false"
|
|
|
|
v-model="item.responsibilityRatio"
|
|
|
|
placeholder="占比 "
|
|
|
|
:min="0"
|
|
|
|
:max="100"
|
|
|
|
v-percentage
|
|
|
|
@input="CompanyProportionInput"
|
|
|
|
/>
|
|
|
|
<span>%</span>
|
|
|
|
</div>
|
|
|
|
<div class="maxBox">
|
|
|
|
<span class="title">三方责任人:</span>
|
|
|
|
<el-input v-model="item.tripartite" placeholder="请输入三方责任人" />
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="maxBox">
|
|
|
|
<span class="title">说明:</span>
|
|
|
|
<el-input
|
|
|
|
v-model="item.description"
|
|
|
|
placeholder="请输入说明 "
|
|
|
|
clearable
|
|
|
|
:rows="2"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="el-btn">
|
|
|
|
<el-button type="primary" @click="ResponsibilityRemoval(index)"> 移除 </el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="Proportion">
|
|
|
|
<span class="title">公司占比:{{ companyProportion }}%</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-tab-pane>
|
|
|
|
</el-tabs>
|
|
|
|
|
|
|
|
<el-tabs type="border-card" class="el_Processingresults">
|
|
|
|
<el-tab-pane label="处理结果">
|
|
|
|
<div class="selector">
|
|
|
|
<el-select
|
|
|
|
v-model="Indexform.result"
|
|
|
|
multiple
|
|
|
|
filterable
|
|
|
|
default-first-option
|
|
|
|
:reserve-keyword="false"
|
|
|
|
placeholder="请选择处理结果"
|
|
|
|
@change="changeProcessingResults"
|
|
|
|
>
|
|
|
|
<el-option
|
|
|
|
v-for="item in ProcessingResults"
|
|
|
|
:key="item.dictKey"
|
|
|
|
:label="item.dictValue"
|
|
|
|
:value="item.dictKey"
|
|
|
|
/>
|
|
|
|
</el-select>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="ProcessingResults" v-if="ProcessingList.length">
|
|
|
|
<div class="title">处理结果-理赔金额</div>
|
|
|
|
<div class="Listadmiration">
|
|
|
|
<div class="name" v-for="(item, index) in ProcessingList" :key="index">
|
|
|
|
<span style="width: 120px">{{ item.name }}:</span>
|
|
|
|
<div class="payment_right">
|
|
|
|
<el-input-number
|
|
|
|
v-model="item.input"
|
|
|
|
:min="item.min"
|
|
|
|
:max="item.max"
|
|
|
|
@change="TotalChange"
|
|
|
|
/>
|
|
|
|
<div class="Paymentname" @click="PaymentSelection(item)">
|
|
|
|
{{ item.payment ? item.text : '支付方式' }}
|
|
|
|
</div>
|
|
|
|
<div class="el_PaymentUnit">
|
|
|
|
<el-input
|
|
|
|
v-model="item.paymentUnit"
|
|
|
|
placeholder="请输入支付单位"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
<el-date-picker
|
|
|
|
v-model="item.compensationTime"
|
|
|
|
type="datetime"
|
|
|
|
format="YYYY-MM-DD"
|
|
|
|
value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
placeholder="理赔支付时间"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="el_tool">
|
|
|
|
<span>总金额:{{ TotalClaimAmount }}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-tab-pane>
|
|
|
|
</el-tabs>
|
|
|
|
|
|
|
|
<div class="Transport_damage_photos" v-if="SelectType == 1 || SelectType == 3 || StateType">
|
|
|
|
<span class="title">{{
|
|
|
|
SelectType == 1 ? '运损照片' : SelectType == 3 ? '窜货照片' : '照片'
|
|
|
|
}}</span>
|
|
|
|
<el-upload
|
|
|
|
v-model:file-list="Indexform.packList"
|
|
|
|
list-type="picture-card"
|
|
|
|
:on-preview="pictureList"
|
|
|
|
:on-remove="ImgListRemove"
|
|
|
|
:action="doubledCount"
|
|
|
|
:on-success="ImgSuccess"
|
|
|
|
:before-upload="beforeAvatarUpload"
|
|
|
|
:headers="headers"
|
|
|
|
multiple
|
|
|
|
drag
|
|
|
|
>
|
|
|
|
<el-icon><Plus /></el-icon>
|
|
|
|
</el-upload>
|
|
|
|
|
|
|
|
<el-dialog v-model="dialogImgList" width="30%">
|
|
|
|
<el-image
|
|
|
|
:src="amplifyurl"
|
|
|
|
:zoom-rate="1.2"
|
|
|
|
:max-scale="7"
|
|
|
|
:min-scale="0.2"
|
|
|
|
:preview-src-list="amplifysrcList"
|
|
|
|
:initial-index="4"
|
|
|
|
fit="cover"
|
|
|
|
/>
|
|
|
|
</el-dialog>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="dialog-footer">
|
|
|
|
<el-button @click="Indexdialog = false">取消</el-button>
|
|
|
|
<el-button type="primary" @click="ConfirmForm"> 提交 </el-button>
|
|
|
|
</div>
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
<!-- <div v-if="routerState" class="foot_btn">
|
|
|
|
<el-button type="primary" @click="ConfirmForm">新增记录</el-button>
|
|
|
|
<el-button type="primary" @click="ConfirmForm">完结 </el-button>
|
|
|
|
<el-button type="primary" @click="ConfirmForm">打回 </el-button>
|
|
|
|
</div> -->
|
|
|
|
|
|
|
|
<!-- 少货件数大于3 -->
|
|
|
|
<el-dialog
|
|
|
|
:show-close="false"
|
|
|
|
v-model="ShortageState"
|
|
|
|
title="少货件数"
|
|
|
|
width="40%"
|
|
|
|
@close="ShortageStateFun"
|
|
|
|
lock-scroll
|
|
|
|
draggable
|
|
|
|
>
|
|
|
|
<div class="ShortageStatenum" v-for="item in ShortageList">
|
|
|
|
<span class="title">件数{{ item.number }}</span
|
|
|
|
><el-input v-model="item.packageCode" placeholder="请输入包条码" />
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<template #footer>
|
|
|
|
<span class="dialog-footer">
|
|
|
|
<el-button @click="ShortageCancellation">取消</el-button>
|
|
|
|
<el-button type="primary" @click="ShortageState = false"> 确认信息 </el-button>
|
|
|
|
</span>
|
|
|
|
</template>
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
<!-- 窜货件数大于3 -->
|
|
|
|
<el-dialog
|
|
|
|
:show-close="false"
|
|
|
|
v-model="fleeingState"
|
|
|
|
title="窜货件数"
|
|
|
|
width="40%"
|
|
|
|
@close="fleeingFun"
|
|
|
|
lock-scroll
|
|
|
|
draggable
|
|
|
|
>
|
|
|
|
<div class="ShortageStatenum" v-for="item in fleeingList">
|
|
|
|
<span class="title">件数{{ item.number }}</span
|
|
|
|
><el-input v-model="item.packageCode" placeholder="请输入包条码" />
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<template #footer>
|
|
|
|
<span class="dialog-footer">
|
|
|
|
<el-button @click="fleeingCancellation">取消</el-button>
|
|
|
|
<el-button type="primary" @click="ShortageState = false"> 确认信息 </el-button>
|
|
|
|
</span>
|
|
|
|
</template>
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
<el-dialog v-model="dialogHistoricalPackage" title="查看历史包件" width="30%">
|
|
|
|
<el-form-item label="历史包件选择">
|
|
|
|
<el-select v-model="HistoricalPackageinput" clearable filterable placeholder="请选择包件">
|
|
|
|
<el-option
|
|
|
|
v-for="item in HistoricalPackageList"
|
|
|
|
:key="item.value"
|
|
|
|
:label="item.workOrderNumber"
|
|
|
|
:value="item.workOrderId"
|
|
|
|
/>
|
|
|
|
</el-select>
|
|
|
|
<el-button @click="ViewPackageDetails(HistoricalPackageinput)">查看详情</el-button>
|
|
|
|
</el-form-item>
|
|
|
|
<template #footer>
|
|
|
|
<span class="dialog-footer">
|
|
|
|
<el-button @click="dialogHistoricalPackage = false">取消</el-button>
|
|
|
|
<el-button type="primary" @click="HistoricalPackage(HistoricalPackageinput)">
|
|
|
|
确定选择
|
|
|
|
</el-button>
|
|
|
|
</span>
|
|
|
|
</template>
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
<!-- 支付方式选择 -->
|
|
|
|
<el-dialog v-model="ZFdialog" title="支付方式选择" width="45%" class="ZFfsLoad">
|
|
|
|
<el-radio-group v-model="Indexform.compensationMethod">
|
|
|
|
<el-radio
|
|
|
|
:label="item.dictKey"
|
|
|
|
v-for="item in Paymentmethod"
|
|
|
|
:key="item.dictKey"
|
|
|
|
size="large"
|
|
|
|
border
|
|
|
|
>{{ item.dictValue }}</el-radio
|
|
|
|
>
|
|
|
|
</el-radio-group>
|
|
|
|
<template #footer>
|
|
|
|
<span class="dialog-footer">
|
|
|
|
<el-button @click="ZFdialog = false">取消</el-button>
|
|
|
|
<el-button type="primary" @click="PaymentConfirmation(Indexform.compensationMethod)">
|
|
|
|
确定
|
|
|
|
</el-button>
|
|
|
|
</span>
|
|
|
|
</template>
|
|
|
|
</el-dialog>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
import { ElMessage } from 'element-plus';
|
|
|
|
import { ElMessageBox } from 'element-plus';
|
|
|
|
import { useRouter, useRoute } from 'vue-router';
|
|
|
|
import { getDictionaryBiz } from '@/api/system/dict'; //字典
|
|
|
|
import { getDetailWarehouse, getDeptWarehouse } from '@/api/basicdata/basicdataWarehouse'; //处理方
|
|
|
|
import {
|
|
|
|
$_getList,
|
|
|
|
$_submit,
|
|
|
|
$_getDetail,
|
|
|
|
$_remove,
|
|
|
|
$_getBusinessDepartmentUser,
|
|
|
|
$_getAbnormalPackage,
|
|
|
|
$_shippingInformation,
|
|
|
|
} from '@/api/aftersales/aftersalesWorkOrder';
|
|
|
|
import { computeNumber } from '@/utils/util';
|
|
|
|
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
|
|
|
|
import { getToken } from '@/utils/auth';
|
|
|
|
const $router = useRouter();
|
|
|
|
const $route = useRoute();
|
|
|
|
const Indexform = ref({
|
|
|
|
packList: [],
|
|
|
|
decreaseImageEntityList: [], //处理好的图片数据
|
|
|
|
}); //首页新增表单
|
|
|
|
const ProcessingResults = ref([]); //处理结果列表选项
|
|
|
|
const IndexException = ref([]); //异常类型下拉选择
|
|
|
|
const ZFname = ref(''); //支付名字预留状态
|
|
|
|
const DiscoveringNodes = ref([]); //发现节点下拉选择
|
|
|
|
const warehouseData = ref([]); //处理方
|
|
|
|
const SelectType = ref(null); //类型
|
|
|
|
const StateType = ref(true); //类型
|
|
|
|
const HistoricalPackageinput = ref(''); //历史包件选择
|
|
|
|
const dialogImageUrl = ref(null); //图片
|
|
|
|
const dialogVisible = ref(null); //图片
|
|
|
|
const groundlineSet = ref(true); //干线条件都满足
|
|
|
|
const TotalClaimAmount = ref(0); //总金额
|
|
|
|
const groundlineType = ref(null); //干线状态
|
|
|
|
const ShortageState = ref(false); //少货件数弹窗状态
|
|
|
|
const fleeingState = ref(false); //窜货件数弹窗
|
|
|
|
const ShortageList = ref([]); //少货件数
|
|
|
|
const fleeingList = ref([]); //窜货件数
|
|
|
|
const valueStrictly = ref();
|
|
|
|
const routerID = ref(null); //路由参数ID
|
|
|
|
const routerState = ref(''); //路由状态
|
|
|
|
const personResponsibleList = ref([]); //责任人列表
|
|
|
|
const ZFdialog = ref(false); //支付方式弹出
|
|
|
|
const companyProportion = ref(0); //公司占比
|
|
|
|
const identifying = ref(1); //订单,零担状态
|
|
|
|
const dialogHistoricalPackage = ref(false); //历史包件弹窗
|
|
|
|
const HistoricalPackageList = ref([]); //历史包件数组
|
|
|
|
const HistorIndex = ref(0); //历史包件索引
|
|
|
|
const NumberPackages = ref(0); //包件个数
|
|
|
|
const dialogImgList = ref(false); //图片预览弹窗
|
|
|
|
const amplifyurl = ref(''); //当前点击的图片
|
|
|
|
const amplifysrcList = ref([]); //图片循环列表
|
|
|
|
const ProcessingList = ref([]); //处理结果已经选择的列表
|
|
|
|
const Paymentmethod = ref([]); //支付方式
|
|
|
|
|
|
|
|
const rules = reactive({
|
|
|
|
investigationPocess: [{ required: true, message: '请填写', trigger: 'change' }],
|
|
|
|
});
|
|
|
|
|
|
|
|
const PackageInfo = ref([
|
|
|
|
//包件信息
|
|
|
|
{ packageCode: '', orderCode: '', waybillNumber: '', brandName: '', state: false },
|
|
|
|
]);
|
|
|
|
// 责任方列表
|
|
|
|
const FangAddList = ref([
|
|
|
|
{
|
|
|
|
businessName: '',
|
|
|
|
personResponsibleName: '',
|
|
|
|
responsibilityRatio: '',
|
|
|
|
description: '',
|
|
|
|
tripartite: '',
|
|
|
|
},
|
|
|
|
]);
|
|
|
|
// 提货责任方
|
|
|
|
const responsible = ref([
|
|
|
|
{
|
|
|
|
value: '1',
|
|
|
|
label: '工厂',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
value: '2',
|
|
|
|
label: '外包搬运',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
value: '3',
|
|
|
|
label: '物流',
|
|
|
|
},
|
|
|
|
]);
|
|
|
|
|
|
|
|
const DeliveryDriver = ref([]);
|
|
|
|
// 图片列表
|
|
|
|
const fileList = ref([]);
|
|
|
|
// 字典公共函数
|
|
|
|
function updateDictionary(targetArray, dictionaryType) {
|
|
|
|
getDictionaryBiz(dictionaryType).then(res => {
|
|
|
|
console.log(res, '字典');
|
|
|
|
res.data.data.forEach(item => {
|
|
|
|
targetArray.push({
|
|
|
|
value: item.dictKey,
|
|
|
|
label: item.dictValue,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
// 图片上传必须携带TOKEN
|
|
|
|
const headers = computed(() => {
|
|
|
|
return { 'Blade-Auth': 'Bearer ' + getToken() };
|
|
|
|
});
|
|
|
|
// 图片上传接口
|
|
|
|
const doubledCount = computed(() => {
|
|
|
|
return '/api/blade-resource/oss/endpoint/put-file';
|
|
|
|
});
|
|
|
|
// 图片上传接口
|
|
|
|
|
|
|
|
// 图片上传成功回调函数
|
|
|
|
const ImgSuccess = (response, uploadFile) => {
|
|
|
|
if (response.success === true) {
|
|
|
|
console.log(response);
|
|
|
|
console.log(Indexform.value['packList'], '图片列表');
|
|
|
|
amplifysrcList.value.push(response.data.link);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// 上传图片规则
|
|
|
|
const beforeAvatarUpload = rawFile => {
|
|
|
|
console.log(rawFile);
|
|
|
|
if (rawFile.type !== 'image/png' && rawFile.type !== 'image/jpeg') {
|
|
|
|
ElMessage.error('图片格式只能为 png/jpg!');
|
|
|
|
return false;
|
|
|
|
} else if (rawFile.size / 1024 / 1024 > 10) {
|
|
|
|
ElMessage.error('图片大小不能大于10MB!');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
};
|
|
|
|
// 点击图片列表回调
|
|
|
|
const pictureList = val => {
|
|
|
|
console.log(val, '图片列表');
|
|
|
|
dialogImgList.value = true;
|
|
|
|
console.log(val, '图片列表');
|
|
|
|
amplifyurl.value = val.url;
|
|
|
|
};
|
|
|
|
// 点击图片移除
|
|
|
|
const ImgListRemove = val => {
|
|
|
|
console.log(val, '移除图片');
|
|
|
|
amplifysrcList.value = amplifysrcList.value.filter(item => item !== val.response.data.link);
|
|
|
|
};
|
|
|
|
// 处理方和责任方获取数据
|
|
|
|
const handle = () => {
|
|
|
|
getDeptWarehouse().then(res => {
|
|
|
|
res.data.data.forEach(item => {
|
|
|
|
warehouseData.value.push({
|
|
|
|
value: item.id,
|
|
|
|
label: item.name,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
// 获取当前责任方的责任人
|
|
|
|
const ResponsiblePartychange = (val, index) => {
|
|
|
|
FangAddList.value[index].personResponsibleName = null; //清空当前选择的责任人
|
|
|
|
$_getBusinessDepartmentUser({
|
|
|
|
warehouseId: val,
|
|
|
|
}).then(res => {
|
|
|
|
console.log(res, '获取责任人列表');
|
|
|
|
personResponsibleList.value = res.data.data;
|
|
|
|
});
|
|
|
|
};
|
|
|
|
const onLoad = () => {
|
|
|
|
// DeliveryTrainnumber(); //获取司机
|
|
|
|
console.log($route.query.id, '页面初始化');
|
|
|
|
routerState.value = $route.query.routerState;
|
|
|
|
updateDictionary(IndexException.value, 'pc_work_order'); //异常类型
|
|
|
|
updateDictionary(DiscoveringNodes.value, 'pc_discovery_node'); //发现环节
|
|
|
|
handle(); //处理方和责任方信息
|
|
|
|
getDictionaryBiz('result_handling').then(res => {
|
|
|
|
console.log(res, '发现环节');
|
|
|
|
ProcessingResults.value = res.data.data;
|
|
|
|
});
|
|
|
|
// 支付方式字典
|
|
|
|
getDictionaryBiz('payment_method').then(res => {
|
|
|
|
//处理结果字典
|
|
|
|
console.log(res);
|
|
|
|
Paymentmethod.value = res.data.data;
|
|
|
|
});
|
|
|
|
};
|
|
|
|
onLoad(); //初始化程序
|
|
|
|
|
|
|
|
// 处理结果
|
|
|
|
const changeProcessingResults = val => {
|
|
|
|
// 首先删除取消的项目
|
|
|
|
ProcessingList.value = ProcessingList.value.filter(item => val.includes(item.state - 1));
|
|
|
|
|
|
|
|
// 然后添加或保持新的项目
|
|
|
|
val.forEach(num => {
|
|
|
|
let newItem = {
|
|
|
|
input: 0,
|
|
|
|
min: 0,
|
|
|
|
max: 9999999999999,
|
|
|
|
state: num + 1,
|
|
|
|
payment: '',
|
|
|
|
text: '',
|
|
|
|
compensationTime: '',
|
|
|
|
paymentUnit:'',
|
|
|
|
};
|
|
|
|
// 根据num为newItem的name字段赋值
|
|
|
|
switch (num) {
|
|
|
|
case '1':
|
|
|
|
newItem.name = '下补单';
|
|
|
|
break;
|
|
|
|
case '2':
|
|
|
|
newItem.name = '维修/补漆';
|
|
|
|
break;
|
|
|
|
case '3':
|
|
|
|
newItem.name = '客户未要求理赔';
|
|
|
|
break;
|
|
|
|
case '4':
|
|
|
|
newItem.name = '用库存';
|
|
|
|
break;
|
|
|
|
case '5':
|
|
|
|
newItem.name = '赔商家';
|
|
|
|
break;
|
|
|
|
case '6':
|
|
|
|
newItem.name = '赔付运费';
|
|
|
|
break;
|
|
|
|
case '7':
|
|
|
|
newItem.name = '工厂考核';
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 如果列表中不存在则加入新项目
|
|
|
|
if (!ProcessingList.value.some(item => item.state === newItem.state)) {
|
|
|
|
ProcessingList.value.push(newItem);
|
|
|
|
console.log(`添加:${newItem.name}`);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
// 异常类型事件
|
|
|
|
const abnormalChange = val => {
|
|
|
|
console.log(val, '异常事件类型');
|
|
|
|
console.log(StateType.value);
|
|
|
|
StateType.value = false;
|
|
|
|
if (val == 1 || val == 2 || val == 3) {
|
|
|
|
SelectType.value = val;
|
|
|
|
} else {
|
|
|
|
StateType.value = true;
|
|
|
|
}
|
|
|
|
// 运损无数据默认0
|
|
|
|
if (val == 1) {
|
|
|
|
Indexform.value.packageCode = 0;
|
|
|
|
} else {
|
|
|
|
Indexform.value.packageCode = null;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// 发现节点事件
|
|
|
|
const DiscoveringNodesChange = val => {
|
|
|
|
groundlineSet.value = false; //干线条件都不满足
|
|
|
|
if (val == 1 || val == 2 || val == 3 || val == 4 || val == 5 || val == 8 || val == 7) {
|
|
|
|
groundlineType.value = val; //干线状态
|
|
|
|
console.log(val);
|
|
|
|
} else {
|
|
|
|
groundlineSet.value = true; //展示所有搜索框
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// 车次号自动带出时间司机
|
|
|
|
function DeliveryTrainnumber() {
|
|
|
|
if (!Indexform.value.trainNumber && !Indexform.value.deliveryTime) {
|
|
|
|
Indexform.value.deliveryTime = null;
|
|
|
|
Indexform.value.deliveryDriver = '';
|
|
|
|
DeliveryDriver.value = [];
|
|
|
|
}
|
|
|
|
if (!Indexform.value.trainNumber && !Indexform.value.deliveryTime) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
let data = {
|
|
|
|
trainNumber: Indexform.value.trainNumber,
|
|
|
|
taskTime: Indexform.value.deliveryTime,
|
|
|
|
};
|
|
|
|
data.current = 1; //页码
|
|
|
|
data.size = 200; //条数
|
|
|
|
$_shippingInformation(data).then(res => {
|
|
|
|
console.log(res, '查询返回值');
|
|
|
|
DeliveryDriver.value = res.data.data.records; //获取到的信息
|
|
|
|
// 如果是精确搜索自动带入日期
|
|
|
|
if (res.data.data.records.length == 1) {
|
|
|
|
Indexform.value.deliveryTime = res.data.data.records[0].taskTime; //配送时间
|
|
|
|
Indexform.value.deliveryDriver = res.data.data.records[0].id; //配送人
|
|
|
|
Indexform.value.trainNumber = res.data.data.records[0].trainNumber; //车次号
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
// 理赔总金额计算
|
|
|
|
const TotalChange = () => {
|
|
|
|
TotalClaimAmount.value = 0;
|
|
|
|
ProcessingList.value.forEach(item => {
|
|
|
|
console.log(item);
|
|
|
|
TotalClaimAmount.value += item.input;
|
|
|
|
});
|
|
|
|
};
|
|
|
|
// 支付方式选择
|
|
|
|
const PaymentSelection = val => {
|
|
|
|
console.log(val, '支付');
|
|
|
|
console.log(Paymentmethod.value);
|
|
|
|
if (val.payment) {
|
|
|
|
//支付方式回显
|
|
|
|
let data = Paymentmethod.value.find(item => item.dictKey == val.payment);
|
|
|
|
Indexform.value.compensationMethod = data.dictKey;
|
|
|
|
} else {
|
|
|
|
Indexform.value.compensationMethod = null; //清空上一次选择
|
|
|
|
}
|
|
|
|
ZFdialog.value = true; //展开支付方式选择弹窗
|
|
|
|
ZFname.value = val.name; //存放的当前点击的名字
|
|
|
|
};
|
|
|
|
|
|
|
|
// 支付方式选择确定
|
|
|
|
const PaymentConfirmation = val => {
|
|
|
|
console.log(val, '支付方式选择确定');
|
|
|
|
let data = ProcessingList.value.find(item => item.name == ZFname.value);
|
|
|
|
console.log(data, '处理好的');
|
|
|
|
data.text = Paymentmethod.value.find(item => item.dictKey == val).dictValue;
|
|
|
|
data.payment = val;
|
|
|
|
ZFdialog.value = false; //关闭支付方式选择弹窗
|
|
|
|
ElMessage({
|
|
|
|
message: '支付方式选择成功',
|
|
|
|
type: 'success',
|
|
|
|
});
|
|
|
|
console.log(ProcessingList.value, '选择好的支付列表');
|
|
|
|
};
|
|
|
|
|
|
|
|
// 照片
|
|
|
|
const handleRemove = (uploadFile, uploadFiles) => {
|
|
|
|
console.log(uploadFile, uploadFiles);
|
|
|
|
};
|
|
|
|
|
|
|
|
const handlePictureCardPreview = uploadFile => {
|
|
|
|
dialogImageUrl.value = uploadFile.url;
|
|
|
|
dialogVisible.value = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
// 添加包件
|
|
|
|
const AddPackage = () => {
|
|
|
|
PackageInfo.value.push({
|
|
|
|
packageCode: '',
|
|
|
|
orderCode: '',
|
|
|
|
waybillNumber: '',
|
|
|
|
brandName: '',
|
|
|
|
state: false,
|
|
|
|
});
|
|
|
|
};
|
|
|
|
// 包件移除
|
|
|
|
const PackagRemoval = val => {
|
|
|
|
PackageInfo.value.splice(val, 1); //移除当前点击的按钮
|
|
|
|
Statistics();
|
|
|
|
};
|
|
|
|
// 责任方添加
|
|
|
|
const responsibleParty = () => {
|
|
|
|
FangAddList.value.push({
|
|
|
|
businessName: '',
|
|
|
|
personResponsibleName: '',
|
|
|
|
tripartite: '',
|
|
|
|
responsibilityRatio: '',
|
|
|
|
description: '',
|
|
|
|
});
|
|
|
|
};
|
|
|
|
// 责任移除
|
|
|
|
const ResponsibilityRemoval = val => {
|
|
|
|
FangAddList.value.splice(val, 1); //移除当前点击的按钮
|
|
|
|
CompanyProportion();
|
|
|
|
};
|
|
|
|
// 顶部标签切换
|
|
|
|
const TopChange = val => {
|
|
|
|
console.log(val);
|
|
|
|
if (val == 0) {
|
|
|
|
identifying.value = 1;
|
|
|
|
} else {
|
|
|
|
identifying.value = 2;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
// 公司占比计算
|
|
|
|
const CompanyProportion = () => {
|
|
|
|
let proportion = 0; //责任比例之和
|
|
|
|
FangAddList.value.forEach(item => {
|
|
|
|
proportion += Number(item.responsibilityRatio);
|
|
|
|
});
|
|
|
|
companyProportion.value = 100 - proportion;
|
|
|
|
};
|
|
|
|
// 公司占比事件
|
|
|
|
const CompanyProportionInput = () => {
|
|
|
|
CompanyProportion();
|
|
|
|
};
|
|
|
|
|
|
|
|
//表单提交
|
|
|
|
const ConfirmForm = () => {
|
|
|
|
// 提货责任方
|
|
|
|
// 支付方式校验
|
|
|
|
if (ProcessingList.value.length) {
|
|
|
|
for (let item of ProcessingList.value) {
|
|
|
|
if (!item.payment) {
|
|
|
|
ElMessage({
|
|
|
|
message: `请选择${item.name}的支付方式`,
|
|
|
|
type: 'warning',
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log(Indexform.value.businessMame, '提货责任方');
|
|
|
|
let DataSubmit = {
|
|
|
|
personResponsibleDTO: [],
|
|
|
|
packageEntityList: [], ////包件信息
|
|
|
|
decreaseImageEntityList: [], //图片信息
|
|
|
|
processingMoneyEntityList: [], //赔付方式
|
|
|
|
aftersalesProcessingResultsDTO: {}, //处理结果
|
|
|
|
...Indexform.value,
|
|
|
|
}; //解构表单参数
|
|
|
|
|
|
|
|
// 图片类型:10运损,20窜货
|
|
|
|
// decreaseImageEntityList:[
|
|
|
|
// {imageType:10,imageName:'图片名称',imagePath:'图片路径'},
|
|
|
|
// {imageType:10,imageName:'图片名称',imagePath:'图片路径'},
|
|
|
|
// ]
|
|
|
|
console.log(Indexform.value['packList'], '图片列表');
|
|
|
|
// 处理图片(当类型为货损或为窜货才执行下面的东西)
|
|
|
|
if (SelectType.value == 1 || SelectType.value == 3) {
|
|
|
|
if (Indexform.value['packList']) {
|
|
|
|
Indexform.value['packList'].forEach(item => {
|
|
|
|
DataSubmit['decreaseImageEntityList'].push({
|
|
|
|
imageType: SelectType.value == 1 ? 10 : SelectType.value == 3 ? 20 : '',
|
|
|
|
imageName: item.response.data.originalName,
|
|
|
|
imagePath: item.response.data.link,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (SelectType.value == 1 && DataSubmit['decreaseImageEntityList'].length < 2) {
|
|
|
|
ElMessage({
|
|
|
|
message: '货损至少提供2张图片附件',
|
|
|
|
type: 'warning',
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (SelectType.value == 3 && !DataSubmit['decreaseImageEntityList'].length) {
|
|
|
|
ElMessage({
|
|
|
|
message: '窜货必须提供图片附件',
|
|
|
|
type: 'warning',
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log(DataSubmit['decreaseImageEntityList'], '处理好的图片');
|
|
|
|
//司机信息处理
|
|
|
|
if (Indexform.value.deliveryDriver) {
|
|
|
|
console.log(DeliveryDriver.value, '当前全部司机');
|
|
|
|
console.log(Indexform.value.deliveryDriver, '选择的司机信息');
|
|
|
|
Indexform.value.deliveryDriver = DeliveryDriver.value.find(
|
|
|
|
item => item.id == Indexform.value.deliveryDriver
|
|
|
|
).driverName;
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log(Indexform.value.deliveryDriver, '筛选出来的司机');
|
|
|
|
|
|
|
|
let processorEntityList = [];
|
|
|
|
|
|
|
|
//责任方信息处理
|
|
|
|
if (Indexform.value.processor.length) {
|
|
|
|
Indexform.value.processor.forEach(item => {
|
|
|
|
let found = warehouseData.value.find(element => element.value == item.toString());
|
|
|
|
processorEntityList.push({
|
|
|
|
businessName: found ? found.label : '',
|
|
|
|
businessId: item,
|
|
|
|
conditions: 1,
|
|
|
|
typesOf: 2,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
DataSubmit.processorEntityList = processorEntityList;
|
|
|
|
DataSubmit.decreaseImageEntityList = JSON.parse(
|
|
|
|
JSON.stringify(Indexform.value['decreaseImageEntityList'])
|
|
|
|
);
|
|
|
|
console.log(Indexform.value.workOrderNumber, 'Indexform.workOrderNumber12312312');
|
|
|
|
// 包件信息
|
|
|
|
// packageEntityList
|
|
|
|
// 如果存在包件信息进行处理
|
|
|
|
if (PackageInfo.value.length) {
|
|
|
|
PackageInfo.value.forEach(item => {
|
|
|
|
DataSubmit['packageEntityList'].push({
|
|
|
|
number: PackageInfo.value.length, //数量
|
|
|
|
packageCode: item.packageCode, //包件码
|
|
|
|
// warehouseId: '', //仓库ID
|
|
|
|
waybillNumber: item.waybillNumber, //运单号
|
|
|
|
orderCode: item.orderCode, //订单自编码
|
|
|
|
brandName: item.brandName, //品牌
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// DataSubmit['packageEntityList'].push({
|
|
|
|
// workOrderId: Indexform.workOrderNumber, //异常ID
|
|
|
|
// number: PackageInfo.value.length, //数量
|
|
|
|
// packageCode: PackageInfo.value.map(item => item.packageCode).join(','), //包件码
|
|
|
|
// warehouseId: '', //仓库ID
|
|
|
|
// packageImage: Indexform.value['packList'].map(item => item.url).join(','), //包件图片路径
|
|
|
|
// waybillNumber: PackageInfo.value.map(item => item.waybillNumber).join(','), //运单号
|
|
|
|
// orderCode: PackageInfo.value.map(item => item.orderCode).join(','), //订单自编码
|
|
|
|
// });
|
|
|
|
DataSubmit.orderCode = [...new Set(PackageInfo.value.map(item => item.orderCode))].join(',');
|
|
|
|
// 总件数
|
|
|
|
Indexform.value.number = PackageInfo.value.length;
|
|
|
|
console.log(DataSubmit['packageEntityList'], '包件信息');
|
|
|
|
// 调查经过
|
|
|
|
DataSubmit.surveyRecordDTO = {
|
|
|
|
content: Indexform.value.investigationPocess,
|
|
|
|
workOrderId: Indexform.value.workOrderNumber,
|
|
|
|
};
|
|
|
|
console.log(DataSubmit.surveyRecordDTO, '调查经过');
|
|
|
|
// 新责任方处理
|
|
|
|
// FangAddList.value
|
|
|
|
// 不是提货环节
|
|
|
|
if (groundlineType.value != 1) {
|
|
|
|
if (FangAddList.value.length) {
|
|
|
|
// 如果存在责任方
|
|
|
|
FangAddList.value.forEach(item => {
|
|
|
|
DataSubmit['personResponsibleDTO'].push({
|
|
|
|
businessName:
|
|
|
|
warehouseData.value.find(obj => obj.value == item.businessName)?.label || null, //责任方名称
|
|
|
|
businessId:
|
|
|
|
warehouseData.value.find(obj => obj.value == item.businessName)?.value || null,
|
|
|
|
wordOrderId: Indexform.value.workOrderNumber, //异常工单ID
|
|
|
|
description: item.description,
|
|
|
|
personResponsibleId:
|
|
|
|
personResponsibleList.value.find(obj => obj.id == item.personResponsibleName)?.id ||
|
|
|
|
null, //责任人ID personResponsibleList
|
|
|
|
personResponsibleName:
|
|
|
|
personResponsibleList.value.find(obj => obj.id == item.personResponsibleName)?.name ||
|
|
|
|
null, //责任人名称
|
|
|
|
responsibilityRatio: item.responsibilityRatio, //责任比例
|
|
|
|
tripartite: item.tripartite, //三方责任人
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// 提货环节责任人处理
|
|
|
|
FangAddList.value.forEach(item => {
|
|
|
|
DataSubmit['personResponsibleDTO'].push({
|
|
|
|
businessName: responsible.value.find(obj => obj.value == item.businessName)?.label || null, //责任方名称
|
|
|
|
businessId: responsible.value.find(obj => obj.value == item.businessName)?.value || null,
|
|
|
|
wordOrderId: Indexform.value.workOrderNumber, //异常工单ID
|
|
|
|
description: item.description,
|
|
|
|
// personResponsibleId: '',
|
|
|
|
personResponsibleName: item.personResponsibleName, //责任人名称
|
|
|
|
responsibilityRatio: item.responsibilityRatio, //责任比例
|
|
|
|
tripartite: item.tripartite, //三方责任人
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
DataSubmit.companyProportion = companyProportion.value; //公司占比
|
|
|
|
console.log(DataSubmit.companyProportion, '公司占比');
|
|
|
|
console.log(DataSubmit['personResponsibleDTO'], '新责任方处理的数据');
|
|
|
|
//console.log(Indexform.value.duty.length);
|
|
|
|
//责任方信息处理
|
|
|
|
if (FangAddList.value.length) {
|
|
|
|
console.log(warehouseData.value, 'warehouseData.value');
|
|
|
|
FangAddList.value.forEach(item => {
|
|
|
|
console.log(item, 'item');
|
|
|
|
processorEntityList.push({
|
|
|
|
businessName:
|
|
|
|
groundlineType.value != 1
|
|
|
|
? warehouseData.value.find(obj => obj.value == item.businessName)?.label || null
|
|
|
|
: responsible.value.find(obj => obj.value == item.businessName)?.label || null,
|
|
|
|
businessId: item.businessName,
|
|
|
|
conditions: 1,
|
|
|
|
typesOf: 1,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
DataSubmit.identifying = identifying.value; //1订单2零担3库存品
|
|
|
|
|
|
|
|
console.log(processorEntityList, '老责任方处理好的数据');
|
|
|
|
|
|
|
|
// 处理结果填写
|
|
|
|
|
|
|
|
if (ProcessingList.value.length) {
|
|
|
|
let sum = 0; //金额总计
|
|
|
|
for (let i = 0; i < ProcessingList.value.length; i++) {
|
|
|
|
console.log(ProcessingList.value[i].input);
|
|
|
|
sum = computeNumber(sum, '+', ProcessingList.value[i].input).result;
|
|
|
|
}
|
|
|
|
DataSubmit.aftersalesProcessingResultsDTO.money = sum; //金额汇总
|
|
|
|
DataSubmit.aftersalesProcessingResultsDTO.processingMoneyEntityList = ProcessingList.value
|
|
|
|
.map(item => {
|
|
|
|
let match = ProcessingResults.value.find(element => element.dictValue == item.name);
|
|
|
|
if (match) {
|
|
|
|
let paymentMethodMatch = Paymentmethod.value.find(
|
|
|
|
paymentMethod => paymentMethod.dictKey == item.payment
|
|
|
|
);
|
|
|
|
return {
|
|
|
|
resultType: match.dictKey, //赔方式的key
|
|
|
|
money: item.input, //金额
|
|
|
|
typesOf: 1, //固定参数
|
|
|
|
compensationMethod: paymentMethodMatch ? paymentMethodMatch.dictKey : '未知支付方式',
|
|
|
|
compensationMethodName: paymentMethodMatch
|
|
|
|
? paymentMethodMatch.dictValue
|
|
|
|
: '未知支付方式',
|
|
|
|
resultName: item.name, //处理结果名字
|
|
|
|
compensationTime: item.compensationTime, //支付时间
|
|
|
|
paymentUnit:item.paymentUnit,//支付单位
|
|
|
|
};
|
|
|
|
} else {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.filter(item => item !== null);
|
|
|
|
|
|
|
|
DataSubmit.aftersalesProcessingResultsDTO['compensationMethod'] = ProcessingList.value
|
|
|
|
.map(item => item.text)
|
|
|
|
.join(',');
|
|
|
|
|
|
|
|
DataSubmit.aftersalesProcessingResultsDTO['resultType'] = ProcessingList.value
|
|
|
|
.map(item => item.name)
|
|
|
|
.join(','); //处理结果说明文字拼接
|
|
|
|
}
|
|
|
|
|
|
|
|
delete DataSubmit.duty, //移除多余字段
|
|
|
|
delete DataSubmit.packList; //移除图片原始字段
|
|
|
|
delete DataSubmit.processor; //移除多余字段
|
|
|
|
console.log(DataSubmit, '处理好的数据');
|
|
|
|
// 提交表单信息stringify
|
|
|
|
$_submit(DataSubmit).then(res => {
|
|
|
|
if (res.data.code == 200) {
|
|
|
|
ElMessage({
|
|
|
|
message: res.data.msg,
|
|
|
|
type: 'success',
|
|
|
|
});
|
|
|
|
Indexform.value = {}; //重置表单
|
|
|
|
$router.push('/aftersales/aftersalesWorkOrder'); //添加成功跳转到列表
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
// 选择司机带出车次号日期
|
|
|
|
const changeDeliveryDriver = val => {
|
|
|
|
console.log(val);
|
|
|
|
console.log(DeliveryDriver.value, '司机信息');
|
|
|
|
Indexform.value.trainNumber = DeliveryDriver.value.find(res => res.id == val).trainNumber; //车次号
|
|
|
|
Indexform.value.deliveryTime = DeliveryDriver.value.find(res => res.id == val).taskTime; //日期
|
|
|
|
};
|
|
|
|
// 少货件数对应事件
|
|
|
|
const ShortageTtems = val => {
|
|
|
|
ShortageList.value = []; //进入之前重置参数
|
|
|
|
const pattern = /\s+/g;
|
|
|
|
const result = val.replace(pattern, '');
|
|
|
|
console.log(result); // 输出 "33"
|
|
|
|
Indexform.value.number = result;
|
|
|
|
if (Indexform.value.number > 1) {
|
|
|
|
ShortageState.value = true; //数量大于1,开启弹窗输入
|
|
|
|
}
|
|
|
|
for (let i = 0; i < val; i++) {
|
|
|
|
ShortageList.value.push({
|
|
|
|
number: i + 1, //件数
|
|
|
|
packageCode: null, //输入框
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
// 少货关闭回调
|
|
|
|
const ShortageStateFun = () => {
|
|
|
|
ShortageList.value.forEach(item => {
|
|
|
|
if (item.packageCode == null) {
|
|
|
|
Indexform.value.number = null;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
// 少货按钮取消
|
|
|
|
const ShortageCancellation = () => {
|
|
|
|
Indexform.value.number = null; //少货件数
|
|
|
|
ShortageList.value = []; //进入之前重置参数
|
|
|
|
ShortageState.value = false; //关闭弹窗
|
|
|
|
};
|
|
|
|
// 窜货关闭回调
|
|
|
|
const fleeingFun = () => {
|
|
|
|
fleeingList.value.forEach(item => {
|
|
|
|
if (item.packageCode == null) {
|
|
|
|
Indexform.value.number = null;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
// 窜货取消事件
|
|
|
|
const fleeingCancellation = () => {
|
|
|
|
Indexform.value.number = null; //少货件数
|
|
|
|
fleeingList.value = []; //进入之前重置参数
|
|
|
|
fleeingState.value = false; //关闭弹窗
|
|
|
|
};
|
|
|
|
// 窜货输入框
|
|
|
|
const fleeingTtems = val => {
|
|
|
|
fleeingList.value = []; //进入之前重置参数
|
|
|
|
const pattern = /\s+/g;
|
|
|
|
const result = val.replace(pattern, '');
|
|
|
|
console.log(result); // 输出 "33"
|
|
|
|
Indexform.value.number = result;
|
|
|
|
if (Indexform.value.number > 1) {
|
|
|
|
fleeingState.value = true; //数量大于1,开启弹窗输入
|
|
|
|
}
|
|
|
|
for (let i = 0; i < val; i++) {
|
|
|
|
fleeingList.value.push({
|
|
|
|
number: i + 1, //件数
|
|
|
|
packageCode: null, //输入框
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
// 少货编辑
|
|
|
|
const moneyBtnA = () => {
|
|
|
|
if (!Indexform.value.number) {
|
|
|
|
ElMessage({
|
|
|
|
message: '请输入少货数量',
|
|
|
|
type: 'warning',
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
ShortageState.value = true; //开启弹窗输入
|
|
|
|
};
|
|
|
|
// 窜货编辑
|
|
|
|
const moneyBtnB = () => {
|
|
|
|
if (!Indexform.value.number) {
|
|
|
|
ElMessage({
|
|
|
|
message: '请输入窜货数量',
|
|
|
|
type: 'warning',
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
fleeingState.value = true; //开启弹窗输入
|
|
|
|
};
|
|
|
|
// 统计包件个数
|
|
|
|
const Statistics = () => {
|
|
|
|
NumberPackages.value = 0;
|
|
|
|
PackageInfo.value.map(res => {
|
|
|
|
if (res.packageCode) {
|
|
|
|
NumberPackages.value++;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
// 查询包件信息自动回显
|
|
|
|
const ChangePackageInfo = (val, index) => {
|
|
|
|
if (!val) {
|
|
|
|
return;
|
|
|
|
// 如果输入框里面没有值就不请求
|
|
|
|
}
|
|
|
|
PackageInfo.value[index].orderCode = ''; //订单自编码
|
|
|
|
PackageInfo.value[index].waybillNumber = ''; //运单号
|
|
|
|
PackageInfo.value[index].orderId = ''; //运单号
|
|
|
|
PackageInfo.value[index].brandName = ''; //品牌
|
|
|
|
// PackageInfo.value[index].firsts = ''; //一级品
|
|
|
|
// PackageInfo.value[index].second = ''; //二级品
|
|
|
|
// PackageInfo.value[index].mallName = ''; //客户名称
|
|
|
|
// PackageInfo.value[index].mallId = ''; //客户ID
|
|
|
|
|
|
|
|
Statistics(); //调用统计包件信息
|
|
|
|
let data = {
|
|
|
|
packageCode: val,
|
|
|
|
};
|
|
|
|
$_getAbnormalPackage(data).then(res => {
|
|
|
|
console.log(res, '包件信息');
|
|
|
|
console.log(res.data.data, '包件信息');
|
|
|
|
if (res.data.data.length) {
|
|
|
|
const packageData = res.data.data[0];
|
|
|
|
console.log(packageData, '获取的第一个参数');
|
|
|
|
PackageInfo.value[index].orderCode = packageData.orderCode; //订单自编码
|
|
|
|
PackageInfo.value[index].waybillNumber = packageData.waybillNumber; //运单号
|
|
|
|
PackageInfo.value[index].orderId = packageData.orderId; //运单号
|
|
|
|
PackageInfo.value[index].brandName = packageData.brandName; //品牌
|
|
|
|
PackageInfo.value[index].state = false; //状态
|
|
|
|
|
|
|
|
console.log(packageData, '处理的包件参数');
|
|
|
|
console.log(Indexform.value.firsts, '一级品');
|
|
|
|
console.log(Indexform.value.second, '二 级品');
|
|
|
|
const results = res.data.data.filter(item => {
|
|
|
|
return item.workOrderId && item.workOrderNumber;
|
|
|
|
});
|
|
|
|
console.log(results, '筛选后的结果');
|
|
|
|
if (results.length > 0) {
|
|
|
|
HistoricalPackageList.value = results;
|
|
|
|
PackageInfo.value[index].state = true; //状态
|
|
|
|
} else {
|
|
|
|
PackageInfo.value[index].state = false; //状态
|
|
|
|
}
|
|
|
|
// 确保在没有满足条件的元素时,不执行 HistoricalPackageList 和 PackageInfo 的赋值操作
|
|
|
|
Indexform.value.first = packageData.firsts; //一级品
|
|
|
|
Indexform.value.secondary = packageData.second; //二级品
|
|
|
|
Indexform.value.waybillMall = packageData.mallName; //客户名称(运单商场)
|
|
|
|
Indexform.value.typeServiceName = packageData.typeServiceName; //合作模式
|
|
|
|
}
|
|
|
|
// packageCode; //包件码
|
|
|
|
// //订单自编码
|
|
|
|
// orderCode: orderId; //运单号
|
|
|
|
// workOrderId; //工单id
|
|
|
|
// workOrderNumber; //工单名称
|
|
|
|
|
|
|
|
console.log(PackageInfo.value, '处理好的参数');
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
// 查看历史包件
|
|
|
|
const historicalPackages = val => {
|
|
|
|
dialogHistoricalPackage.value = true; //打开历史包件弹窗
|
|
|
|
HistorIndex.value = val;
|
|
|
|
console.log(val);
|
|
|
|
};
|
|
|
|
// 历史包件确定选择
|
|
|
|
const HistoricalPackage = val => {
|
|
|
|
let info = HistoricalPackageList.value.find(obj => obj.workOrderId == val);
|
|
|
|
PackageInfo.value[HistorIndex.value].orderCode = info.orderCode; //订单自编码
|
|
|
|
PackageInfo.value[HistorIndex.value].waybillNumber = info.waybillNumber; //运单号
|
|
|
|
PackageInfo.value[HistorIndex.value].orderId = info.orderId; //运单号
|
|
|
|
PackageInfo.value[HistorIndex.value].brandName = packageData.brandName; //品牌
|
|
|
|
dialogHistoricalPackage.value = false; //关闭历史包件弹窗
|
|
|
|
|
|
|
|
PackageInfo.value[HistorIndex.value].relatedWorkOrdersId = info.workOrderId;
|
|
|
|
console.log(PackageInfo.value, '处理好的参数');
|
|
|
|
};
|
|
|
|
// 历史包件里面的查看
|
|
|
|
const ViewPackageDetails = val => {
|
|
|
|
if (!val) {
|
|
|
|
ElMessage({
|
|
|
|
message: '请选择要查看的数据',
|
|
|
|
type: 'warning',
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
console.log(val);
|
|
|
|
let info = HistoricalPackageList.value.find(obj => obj.workOrderId == val);
|
|
|
|
console.log(info, '筛选的值');
|
|
|
|
$router.push({
|
|
|
|
path: '/aftersales/aftersalesWorkOrderInfo',
|
|
|
|
query: {
|
|
|
|
id: info.workOrderId,
|
|
|
|
name: info.workOrderId + '-信息查看',
|
|
|
|
routerState: 'view',
|
|
|
|
},
|
|
|
|
});
|
|
|
|
dialogHistoricalPackage.value = false; //打开历史包件弹窗
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
.IndexFrom {
|
|
|
|
display: flex;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
justify-content: flex-start;
|
|
|
|
border: 1px solid #ccc;
|
|
|
|
border-bottom: none;
|
|
|
|
.el-form-item {
|
|
|
|
height: 46px;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
margin: 0;
|
|
|
|
margin-bottom: 18px;
|
|
|
|
flex: 1 0 30%;
|
|
|
|
:deep(.el-form-item__label) {
|
|
|
|
width: 100px !important;
|
|
|
|
justify-content: flex-start;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
:deep(.el-form-item__content) {
|
|
|
|
height: 100%;
|
|
|
|
width: 70% !important;
|
|
|
|
flex: none;
|
|
|
|
.el-input {
|
|
|
|
height: 100% !important;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.el-input__wrapper {
|
|
|
|
height: 32px !important;
|
|
|
|
}
|
|
|
|
:deep(.el-input) {
|
|
|
|
width: 100% !important;
|
|
|
|
}
|
|
|
|
:deep(.el-input__wrapper) {
|
|
|
|
height: 30px !important;
|
|
|
|
}
|
|
|
|
:deep(.el-select) {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
:deep(.el-form-item__label) {
|
|
|
|
margin-left: 20px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.el_clzr {
|
|
|
|
margin-top: 40px;
|
|
|
|
|
|
|
|
:deep(.el-select) {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
:deep(.el-input) {
|
|
|
|
height: 38px;
|
|
|
|
}
|
|
|
|
:deep(.el-form-item__label) {
|
|
|
|
margin-left: 20px;
|
|
|
|
font-size: 14px;
|
|
|
|
width: 100px !important;
|
|
|
|
justify-content: flex-start;
|
|
|
|
}
|
|
|
|
.el-form-item {
|
|
|
|
margin: 0;
|
|
|
|
margin-bottom: 34px;
|
|
|
|
}
|
|
|
|
:deep(.el-input__wrapper) {
|
|
|
|
height: 35px !important;
|
|
|
|
}
|
|
|
|
:deep(.el-form-item__content) {
|
|
|
|
height: 100%;
|
|
|
|
width: 90% !important;
|
|
|
|
flex: none;
|
|
|
|
.el-input {
|
|
|
|
height: 100% !important;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.Transport_damage_photos {
|
|
|
|
display: flex;
|
|
|
|
padding: 0 15px;
|
|
|
|
margin-top: 20px;
|
|
|
|
.title {
|
|
|
|
width: 100px;
|
|
|
|
display: block;
|
|
|
|
margin-bottom: 10px;
|
|
|
|
font-size: 14px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.dialog-footer {
|
|
|
|
width: 100%;
|
|
|
|
display: flex;
|
|
|
|
justify-content: flex-end;
|
|
|
|
padding: 0 10px;
|
|
|
|
box-sizing: border-box;
|
|
|
|
padding-right: 36px;
|
|
|
|
}
|
|
|
|
.investigate {
|
|
|
|
:deep(.el-form-item__content) {
|
|
|
|
width: 90% !important;
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.ShortageStatenum {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
margin-bottom: 10px;
|
|
|
|
.title {
|
|
|
|
width: 80px;
|
|
|
|
}
|
|
|
|
.remove {
|
|
|
|
width: 47px;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
cursor: pointer;
|
|
|
|
color: #ff0000;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.moneyNum {
|
|
|
|
display: flex;
|
|
|
|
flex: 1;
|
|
|
|
.el_btn {
|
|
|
|
width: 50px;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
border: 1px solid #ccc;
|
|
|
|
margin-left: 3px;
|
|
|
|
border-radius: 4px;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.ResponsibilityBox {
|
|
|
|
width: 100%;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
.leftbox {
|
|
|
|
width: 80%;
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
.el_zb {
|
|
|
|
width: 140px;
|
|
|
|
margin-right: 50px;
|
|
|
|
text-align: right;
|
|
|
|
:deep(.el-input) {
|
|
|
|
margin-left: 10px;
|
|
|
|
text-align: right;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.maxBox {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
width: 30%;
|
|
|
|
margin-right: 16px;
|
|
|
|
.title {
|
|
|
|
width: 120px;
|
|
|
|
font-size: 14px;
|
|
|
|
color: #606266;
|
|
|
|
}
|
|
|
|
.el-select {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.el-btn {
|
|
|
|
margin-left: 5%;
|
|
|
|
border: none;
|
|
|
|
}
|
|
|
|
.el_btbox {
|
|
|
|
display: flex;
|
|
|
|
margin-top: 10px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.ResponsibilityBoxS {
|
|
|
|
width: 100%;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
margin-bottom: 10px;
|
|
|
|
.leftbox {
|
|
|
|
width: 80%;
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
}
|
|
|
|
.maxBox {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
width: 30%;
|
|
|
|
margin-right: 20px;
|
|
|
|
.title {
|
|
|
|
width: 140px;
|
|
|
|
color: #606266;
|
|
|
|
font-size: 14px;
|
|
|
|
}
|
|
|
|
.el-select {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.el-btn {
|
|
|
|
margin-left: 5%;
|
|
|
|
border: none;
|
|
|
|
}
|
|
|
|
.el_btbox {
|
|
|
|
display: flex;
|
|
|
|
margin-top: 10px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
:deep(.PackageInformation) {
|
|
|
|
margin-bottom: 10px;
|
|
|
|
width: 97%;
|
|
|
|
border-left: none;
|
|
|
|
.el-tabs__header {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.NumTotal {
|
|
|
|
width: 30%;
|
|
|
|
margin-top: 16px;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
span {
|
|
|
|
width: 120px;
|
|
|
|
font-size: 14px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.Proportion {
|
|
|
|
margin-top: 16px;
|
|
|
|
.title {
|
|
|
|
font-size: 14px;
|
|
|
|
color: #606266;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
:deep(.is-active) {
|
|
|
|
border-bottom: 1px solid #e4e7ed !important;
|
|
|
|
}
|
|
|
|
:deep(.topClass) {
|
|
|
|
border-bottom: none;
|
|
|
|
.el-tabs__content {
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.foot_btn {
|
|
|
|
position: fixed;
|
|
|
|
bottom: 0;
|
|
|
|
left: 50%;
|
|
|
|
transform: translate(0, -50%);
|
|
|
|
width: 100%;
|
|
|
|
height: 40px;
|
|
|
|
background-color: #ffffff;
|
|
|
|
border-top: 1px solid #fff;
|
|
|
|
box-shadow: 3px -1px 1px #ccc;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
padding-left: 10px;
|
|
|
|
}
|
|
|
|
:deep(.el-card__body) {
|
|
|
|
margin-bottom: 50px;
|
|
|
|
}
|
|
|
|
:deep(.el-upload-dragger) {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
.box-card {
|
|
|
|
height: 100% !important;
|
|
|
|
overflow-y: scroll;
|
|
|
|
}
|
|
|
|
:deep(.selector) {
|
|
|
|
.el-select {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.ProcessingResults {
|
|
|
|
width: 100%;
|
|
|
|
min-height: 260px;
|
|
|
|
border: 1px solid #ccc;
|
|
|
|
position: relative;
|
|
|
|
padding: 26px;
|
|
|
|
box-sizing: border-box;
|
|
|
|
margin-top: 20px;
|
|
|
|
color: #606266;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
justify-content: space-between;
|
|
|
|
margin-bottom: 16px;
|
|
|
|
.title {
|
|
|
|
position: absolute;
|
|
|
|
top: -20px;
|
|
|
|
left: 20px;
|
|
|
|
font-size: 26px;
|
|
|
|
background-color: #fff;
|
|
|
|
}
|
|
|
|
.Listadmiration {
|
|
|
|
display: flex;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
margin-top: 26px;
|
|
|
|
justify-content: space-between;
|
|
|
|
.name {
|
|
|
|
display: flex;
|
|
|
|
margin-bottom: 20px;
|
|
|
|
height: 30px;
|
|
|
|
width: 42%;
|
|
|
|
justify-content: space-between;
|
|
|
|
.payment_right {
|
|
|
|
display: flex;
|
|
|
|
:deep(.el-input) {
|
|
|
|
height: 100% !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
span {
|
|
|
|
display: block;
|
|
|
|
color: #606266;
|
|
|
|
font-size: 16px;
|
|
|
|
margin-right: 8px;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.lptime,
|
|
|
|
.ZFlptime {
|
|
|
|
display: flex;
|
|
|
|
.name {
|
|
|
|
width: 10%;
|
|
|
|
color: #606266;
|
|
|
|
}
|
|
|
|
.el-input {
|
|
|
|
width: auto;
|
|
|
|
}
|
|
|
|
:deep(.el-input--prefix) {
|
|
|
|
width: 200px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.ZFlptime {
|
|
|
|
margin: 10px 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.Paymentname {
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
border: 1px solid #bfbfbf;
|
|
|
|
margin-left: 2px;
|
|
|
|
border-radius: 4px;
|
|
|
|
width: 100px;
|
|
|
|
font-size: 14px;
|
|
|
|
padding: 10px;
|
|
|
|
cursor: pointer;
|
|
|
|
width: 100px;
|
|
|
|
margin: 0 10px;
|
|
|
|
}
|
|
|
|
.Paymentname:hover {
|
|
|
|
border: 1px solid #172e60;
|
|
|
|
}
|
|
|
|
.el_Processingresults {
|
|
|
|
margin-top: 12px;
|
|
|
|
}
|
|
|
|
.el_PaymentUnit{
|
|
|
|
margin: 0 4px;
|
|
|
|
}
|
|
|
|
</style>
|