You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1902 lines
50 KiB
1902 lines
50 KiB
<template> |
|
<!-- <div class="el-Cart-button"> |
|
|
|
<div class="el-Cart-button-left"> |
|
<el-button type="primary" @click="AddInfo" |
|
><el-icon><Plus /></el-icon>新 增</el-button |
|
> |
|
</div> |
|
|
|
<div class="el-Cart-button-right"> |
|
|
|
<button @click="refresh"> |
|
<el-icon color="#ccc"><Refresh /></el-icon> |
|
</button> |
|
|
|
<button @click="menu = true"> |
|
<el-icon color="#ccc"><Operation /></el-icon> |
|
</button> |
|
|
|
<button @click="search"> |
|
<el-icon color="#ccc"><Search /></el-icon> |
|
</button> |
|
</div> |
|
</div> --> |
|
|
|
<!-- <el-table |
|
v-loading="loading" |
|
element-loading-text="数据正在更新中..." |
|
:data="ElData" |
|
border |
|
style="width: 100%" |
|
ref="tableRef" |
|
@select-all="selectAll" |
|
@select="selectChange" |
|
> |
|
<el-table-column type="selection" width="55" fixed /> |
|
<el-table-column type="index" fixed width="50" height="100" label="#" align="center" /> |
|
|
|
|
|
|
|
<el-table-column |
|
:prop="item.prop" |
|
:label="item.label" |
|
:width="item.width" |
|
:fixed="item.fixed" |
|
align="center" |
|
v-for="(item) in ElmenuData" |
|
:key="item.label" |
|
> |
|
<el-table-column |
|
:prop="item.prop" |
|
:label="item.label" |
|
:width="item.width" |
|
:fixed="item.fixed" |
|
align="center" |
|
> |
|
|
|
<template #header> |
|
<el-input |
|
clearable |
|
v-if="item.type == 4" |
|
v-model="item.values" |
|
:placeholder="`请输入${item.label}`" |
|
/> |
|
<el-select |
|
v-model="item.values" |
|
class="m-2" |
|
placeholder="请选择" |
|
size="large" |
|
v-if="item.type == 6" |
|
@change="TcChenge($event, item)" |
|
:clearable="true" |
|
> |
|
<el-option |
|
v-for="item in item.checkarr" |
|
:key="item.value" |
|
:label="item.label" |
|
:value="item.value" |
|
/> |
|
</el-select> |
|
</template> |
|
|
|
<template #default="props"> |
|
|
|
<div class="ElBtnClass" v-if="item.type == 10"> |
|
<el-button @click="view(props.row)">查看</el-button> |
|
<el-button @click="ViewEvent(props.row)">编辑</el-button> |
|
<el-button @click="ViewEvent(props.row)">回复</el-button> |
|
<el-button @click="Delete(props.row)">删除</el-button> |
|
<el-button @click="CompletionButton(props.row)">完结</el-button> |
|
</div> |
|
<span v-if="item.type == 4">{{ |
|
props.row[item.prop] != null ? props.row[item.prop] : '/' |
|
}}</span> |
|
</template> |
|
</el-table-column> |
|
</el-table-column> |
|
</el-table> --> |
|
|
|
<basic-container> |
|
<div class="avue-crud"> |
|
<!-- 搜索模块 --> |
|
<el-row v-if="!search"> |
|
<!-- 查询模块 --> |
|
<el-form :inline="true" :model="query" class="el-fr-d"> |
|
<el-form-item label="交期:" class="el-times"> |
|
<!-- <el-input v-model="query.stockupArea" placeholder="请输入备货区"></el-input>--> |
|
<el-date-picker |
|
v-model="stockupDate" |
|
type="daterange" |
|
unlink-panels |
|
range-separator="至" |
|
start-placeholder="开始时间" |
|
end-placeholder="结束时间" |
|
:shortcuts="shortcuts" |
|
clearable |
|
/> |
|
</el-form-item> |
|
<el-form-item label="创建时间:" class="el-times"> |
|
<!-- <el-input v-model="query.stockupArea" placeholder="请输入备货区"></el-input>--> |
|
<el-date-picker |
|
v-model="stockupDate" |
|
type="daterange" |
|
unlink-panels |
|
range-separator="至" |
|
start-placeholder="开始时间" |
|
end-placeholder="结束时间" |
|
:shortcuts="shortcuts" |
|
clearable |
|
/> |
|
</el-form-item> |
|
<!-- 查询按钮 --> |
|
<el-form-item class="el-btn"> |
|
<el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button> |
|
<el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button> |
|
</el-form-item> |
|
</el-form> |
|
</el-row> |
|
|
|
<!-- 控件模块 --> |
|
<el-row> |
|
<div class="avue-crud__header"> |
|
<!-- 头部左侧按钮模块 --> |
|
<div class="avue-crud__left"> |
|
<el-button type="primary" @click="AddInfo"> |
|
<el-icon><Plus /></el-icon>新 增</el-button |
|
> |
|
</div> |
|
<!-- 头部右侧按钮模块 --> |
|
<div class="avue-crud__right"> |
|
<el-button icon="el-icon-refresh" @click="searchChange" circle></el-button> |
|
<el-button icon="Operation" @click="showdrawer(true)" circle></el-button> |
|
<el-button icon="Search" @click="searchHide" circle></el-button> |
|
</div> |
|
</div> |
|
</el-row> |
|
|
|
<!-- 首页表格 --> |
|
<el-row> |
|
<!-- 列表模块 --> |
|
<tablecmt |
|
:columnList="columnList" |
|
:tableData="data" |
|
:loading="loadingObj.list" |
|
@inputTxt="inputsc" |
|
@timeCheck="timesc" |
|
@btnCheck="btnsc" |
|
@selectCheck="selectsc" |
|
@selection="selectionChange" |
|
> |
|
<template #default="slotProps"> |
|
<template v-if="slotProps.scope.column.label === '操作'"> |
|
<div class="ElBtnClass"> |
|
<el-button @click="view(slotProps.scope)">查看</el-button> |
|
<el-button @click="ViewEvent(slotProps.scope)">编辑</el-button> |
|
<el-button @click="ViewEvent(slotProps.scope)">回复</el-button> |
|
<el-button @click="Delete(slotProps.scope)">删除</el-button> |
|
<el-button @click="CompletionButton(slotProps.scope)">完结</el-button> |
|
</div> |
|
</template> |
|
</template> |
|
</tablecmt> |
|
</el-row> |
|
|
|
<!-- 分页模块 --> |
|
<el-row class="el-fy"> |
|
<div class="avue-crud__pagination flex-c-sb" style="width: 100%"> |
|
<div></div> |
|
<el-pagination |
|
align="right" |
|
background |
|
@size-change="sizeChange" |
|
@current-change="currentChange" |
|
:current-page="page.currentPage" |
|
:page-sizes="[30, 50, 80, 120]" |
|
:page-size="page.pageSize" |
|
layout="total, sizes, prev, pager, next, jumper" |
|
:total="page.total" |
|
> |
|
</el-pagination> |
|
</div> |
|
</el-row> |
|
</div> |
|
|
|
<!-- 新增弹窗 --> |
|
<el-dialog v-model="Indexdialog" :title="FromDisabled ? '详情' : '新增'" width="60%"> |
|
<el-form :model="Indexform" label-width="100px" class="IndexFrom" ref="IndexForm"> |
|
<el-form-item label="异常类型"> |
|
<el-select |
|
v-model="Indexform.workOrderType" |
|
:disabled="FromDisabled" |
|
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" |
|
:disabled="FromDisabled" |
|
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="FromDisabled" |
|
placeholder="请输入异常工单号" |
|
clearable |
|
/> |
|
</el-form-item> |
|
<!-- 必填 --> |
|
<el-form-item label="运单号"> |
|
<el-input |
|
v-model="Indexform.waybillNumber" |
|
:disabled="FromDisabled" |
|
placeholder="请输入云单号" |
|
clearable |
|
/> |
|
</el-form-item> |
|
|
|
<el-form-item label="少货件数"> |
|
<el-input |
|
v-model="Indexform.waybillNumber" |
|
:disabled="FromDisabled" |
|
placeholder="请输入少货件数" |
|
clearable |
|
/> |
|
</el-form-item> |
|
|
|
<el-form-item label="窜货件数"> |
|
<el-input |
|
v-model="Indexform.waybillNumber" |
|
:disabled="FromDisabled" |
|
placeholder="请输入窜货件数" |
|
clearable |
|
/> |
|
</el-form-item> |
|
|
|
<el-form-item |
|
label="包条码" |
|
v-if="SelectType == 1 || SelectType == 2 || SelectType == 3 || StateType" |
|
> |
|
<el-input |
|
v-model="Indexform.waybillNumber" |
|
:disabled="FromDisabled" |
|
placeholder="请输入包条码,多个用逗号隔开" |
|
clearable |
|
/> |
|
</el-form-item> |
|
|
|
<!-- 必填 --> |
|
<el-form-item label="订单自编号"> |
|
<el-input |
|
v-model="Indexform.orderCode" |
|
:disabled="FromDisabled" |
|
placeholder="请输入订单自编号" |
|
clearable |
|
/> |
|
</el-form-item> |
|
|
|
<el-form-item |
|
label="车次号" |
|
v-if="groundlineSet || groundlineType == 1 || groundlineType == 3 || groundlineType == 4" |
|
> |
|
<el-input |
|
v-model="Indexform.trainNumber" |
|
placeholder="请输入车次号(干线卸车环节)" |
|
clearable |
|
:disabled="FromDisabled" |
|
/> |
|
</el-form-item> |
|
<!-- 必填 --> |
|
<el-form-item label="一级品"> |
|
<el-input |
|
v-model="Indexform.first" |
|
:disabled="FromDisabled" |
|
placeholder="请输入一级品类" |
|
clearable |
|
/> |
|
</el-form-item> |
|
<!-- 必填 --> |
|
<el-form-item label="二级品"> |
|
<el-input |
|
v-model="Indexform.secondary" |
|
:disabled="FromDisabled" |
|
placeholder="请输入二级品类" |
|
clearable |
|
/> |
|
</el-form-item> |
|
|
|
<el-form-item label="车辆路线"> |
|
<el-input |
|
v-model="Indexform.vehicleRoute" |
|
placeholder="请输入车辆路线车次号(通过车次号自动带出车辆路线)" |
|
clearable |
|
:disabled="FromDisabled" |
|
/> |
|
</el-form-item> |
|
|
|
<el-form-item label="送货时间"> |
|
<el-date-picker |
|
v-model="Indexform.deliverGoodsTime" |
|
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="发现时间" |
|
v-if="groundlineSet || groundlineType == 2 || groundlineType == 3 || groundlineType == 4" |
|
> |
|
<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="请选择发现时间" |
|
:disabled="FromDisabled" |
|
/> |
|
</el-form-item> |
|
|
|
<el-form-item |
|
label="配送时间" |
|
v-if="groundlineSet || groundlineType == 3 || groundlineType == 4" |
|
> |
|
<el-date-picker |
|
v-model="Indexform.deliveryTime" |
|
type="datetime" |
|
format="YYYY-MM-DD HH:mm:ss" |
|
value-format="YYYY-MM-DD HH:mm:ss" |
|
placeholder="请选择入库" |
|
:disabled="FromDisabled" |
|
/> |
|
</el-form-item> |
|
|
|
<el-form-item label="入库时间" v-if="groundlineSet || groundlineType == 2"> |
|
<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="请选择入库" |
|
:disabled="FromDisabled" |
|
/> |
|
</el-form-item> |
|
<!-- 必填 --> |
|
<el-form-item label="运单商场"> |
|
<el-input |
|
v-model="Indexform.waybillMall" |
|
:disabled="FromDisabled" |
|
placeholder="请输入运单商场" |
|
clearable |
|
/> |
|
</el-form-item> |
|
|
|
<el-form-item |
|
label="配送司机" |
|
v-if="groundlineSet || groundlineType == 3 || groundlineType == 4" |
|
> |
|
<el-input |
|
v-model="Indexform.deliveryDriver" |
|
:disabled="FromDisabled" |
|
placeholder="请输入配送司机" |
|
clearable |
|
/> |
|
</el-form-item> |
|
<!-- 必填 --> |
|
<el-form-item label="异常问题描述"> |
|
<el-input |
|
v-model="Indexform.problemDescription" |
|
:disabled="FromDisabled" |
|
placeholder="请输入异常问题" |
|
clearable |
|
/> |
|
</el-form-item> |
|
<el-form-item |
|
label="责任人(库内作业环节)" |
|
v-if="groundlineSet || groundlineType == 2 || groundlineType == 3 || groundlineType == 4" |
|
> |
|
<el-input |
|
v-model="Indexform.personResponsible" |
|
:disabled="FromDisabled" |
|
placeholder="请输入责任人" |
|
clearable |
|
/> |
|
</el-form-item> |
|
|
|
<el-form-item label="备注"> |
|
<el-input |
|
v-model="Indexform.remarks" |
|
:disabled="FromDisabled" |
|
placeholder="请输入备注" |
|
clearable |
|
/> |
|
</el-form-item> |
|
</el-form> |
|
<!-- 必填 --> |
|
<div class="el_clzr"> |
|
<el-form-item label="处理方"> |
|
<el-select |
|
v-model="Indexform.processor" |
|
:disabled="FromDisabled" |
|
clearable |
|
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="责任方"> |
|
<el-select |
|
v-model="Indexform.duty" |
|
:disabled="FromDisabled" |
|
clearable |
|
multiple |
|
placeholder="请选择责任方" |
|
> |
|
<el-option |
|
v-for="item in warehouseData" |
|
:key="item.value" |
|
:label="item.label" |
|
:value="item.value" |
|
/> |
|
</el-select> |
|
</el-form-item> |
|
</div> |
|
<div class="Transport_damage_photos" v-if="SelectType == 1 || SelectType == 3 || StateType"> |
|
<span class="title">运损照片</span> |
|
<el-upload |
|
v-model:file-list="fileList" |
|
action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15" |
|
list-type="picture-card" |
|
:on-preview="handlePictureCardPreview" |
|
:on-remove="handleRemove" |
|
> |
|
<el-icon><Plus /></el-icon> |
|
</el-upload> |
|
|
|
<el-dialog v-model="dialogVisible"> |
|
<img w-full :src="dialogImageUrl" alt="图片" /> |
|
</el-dialog> |
|
</div> |
|
<template #footer> |
|
<span class="dialog-footer" v-if="!FromDisabled"> |
|
<el-button @click="Indexdialog = false">取消</el-button> |
|
<el-button type="primary" @click="ConfirmForm"> 提交 </el-button> |
|
</span> |
|
</template> |
|
</el-dialog> |
|
|
|
<!-- 完结弹窗 --> |
|
|
|
<el-dialog |
|
:style="{ height: eightyPercentHeight + 'px', overflowY: 'scroll' }" |
|
v-model="enddialog" |
|
title="完结" |
|
width="70%" |
|
:before-close="handleClose" |
|
> |
|
<el-form :model="endFrom" label-width="90px" class="endClass"> |
|
<el-form-item label="运单商场"> |
|
<el-input v-model="endFrom.name" placeholder="请输入运单商场" /> |
|
</el-form-item> |
|
|
|
<el-form-item label="运单号"> |
|
<el-input v-model="endFrom.name" placeholder="请输入运单号" /> |
|
</el-form-item> |
|
|
|
<el-form-item label="订单自编号"> |
|
<el-input v-model="endFrom.name" placeholder="请输入订单自自编号" /> |
|
</el-form-item> |
|
|
|
<el-form-item label="包条码"> |
|
<el-input v-model="endFrom.name" placeholder="请输入包条码" /> |
|
</el-form-item> |
|
|
|
<el-form-item label="品类"> |
|
<el-input v-model="endFrom.name" placeholder="请输入品类" /> |
|
</el-form-item> |
|
|
|
<el-form-item label="异常状态"> |
|
<el-input v-model="endFrom.name" placeholder="异常状态" /> |
|
</el-form-item> |
|
|
|
<el-form-item label="运损发现节点"> |
|
<el-select v-model="endFrom.a" class="m-2" placeholder="Select"> |
|
<el-option |
|
v-for="item in TransportLossNode" |
|
:key="item.value" |
|
:label="item.label" |
|
:value="item.value" |
|
/> |
|
</el-select> |
|
</el-form-item> |
|
|
|
<el-form-item label="车次号"> |
|
<el-input v-model="endFrom.name" placeholder="请输入车次号" /> |
|
</el-form-item> |
|
<el-form-item label="运损发现时间"> |
|
<el-date-picker |
|
v-model="endFrom.warehousingTime" |
|
type="datetime" |
|
format="YYYY-MM-DD HH:mm:ss" |
|
value-format="YYYY-MM-DD HH:mm:ss" |
|
placeholder="请选择运损发现时间" |
|
:disabled="FromDisabled" |
|
/> |
|
</el-form-item> |
|
<el-form-item label="送货时间"> |
|
<el-date-picker |
|
v-model="endFrom.warehousingTime" |
|
type="datetime" |
|
format="YYYY-MM-DD HH:mm:ss" |
|
value-format="YYYY-MM-DD HH:mm:ss" |
|
placeholder="请选择送货时间" |
|
:disabled="FromDisabled" |
|
/> |
|
</el-form-item> |
|
|
|
<div class="selector"> |
|
<span class="title">处理方</span> |
|
|
|
<el-select |
|
v-model="endFrom.value" |
|
multiple |
|
filterable |
|
default-first-option |
|
:reserve-keyword="false" |
|
placeholder="请选择处理方" |
|
> |
|
<el-option |
|
v-for="item in optionss" |
|
:key="item.value" |
|
:label="item.label" |
|
:value="item.value" |
|
/> |
|
</el-select> |
|
</div> |
|
|
|
<div class="selector"> |
|
<span class="title">责任方</span> |
|
<el-select |
|
v-model="endFrom.value" |
|
multiple |
|
filterable |
|
default-first-option |
|
:reserve-keyword="false" |
|
placeholder="请选择处理方" |
|
> |
|
<el-option |
|
v-for="item in optionss" |
|
:key="item.value" |
|
:label="item.label" |
|
:value="item.value" |
|
/> |
|
</el-select> |
|
</div> |
|
|
|
<!-- <el-form-item label="处理结果"> --> |
|
<div class="selector"> |
|
<span class="title">处理结果</span> |
|
<el-select |
|
v-model="endFrom.value" |
|
multiple |
|
filterable |
|
default-first-option |
|
:reserve-keyword="false" |
|
placeholder="请选择处理方" |
|
@change="changeProcessingResults" |
|
> |
|
<el-option |
|
v-for="item in ProcessingResults" |
|
:key="item.value" |
|
:label="item.label" |
|
:value="item.value" |
|
/> |
|
</el-select> |
|
</div> |
|
<!-- </el-form-item> --> |
|
</el-form> |
|
|
|
<div class="ProcessingResults"> |
|
<div class="title">处理结果-理赔金额</div> |
|
<div class="Listadmiration"> |
|
<div class="name" v-for="(item, index) in ProcessingList" :key="index"> |
|
<span>{{ item.name }}:</span> |
|
<el-input-number |
|
v-model="item.input" |
|
:min="item.min" |
|
:max="item.max" |
|
@change="handleChange" |
|
/> |
|
</div> |
|
|
|
<!-- <div class="name"> |
|
<span>下补单:</span> |
|
<el-input-number v-model="endFrom.num" :min="1" :max="10" @change="handleChange" /> |
|
</div> |
|
<div class="name"> |
|
<span>赔付运费:</span> |
|
<el-input-number v-model="endFrom.num" :min="1" :max="10" @change="handleChange" /> |
|
</div> |
|
<div class="name"> |
|
<span>维修:</span> |
|
<el-input-number v-model="endFrom.num" :min="1" :max="10" @change="handleChange" /> |
|
</div> |
|
<div class="name"> |
|
<span>用库存:</span> |
|
<el-input-number v-model="endFrom.num" :min="1" :max="10" @change="handleChange" /> |
|
</div> |
|
<div class="name"> |
|
<span>赔商家:</span> |
|
<el-input-number v-model="endFrom.num" :min="1" :max="10" @change="handleChange" /> |
|
</div> --> |
|
</div> |
|
|
|
<div class="lptime"> |
|
<span class="name">理赔支付时间</span> |
|
<el-date-picker |
|
v-model="endFrom.warehousingTime" |
|
type="datetime" |
|
format="YYYY-MM-DD HH:mm:ss" |
|
value-format="YYYY-MM-DD HH:mm:ss" |
|
placeholder="请选择运理赔支付时间" |
|
:disabled="FromDisabled" |
|
/> |
|
</div> |
|
</div> |
|
|
|
<!-- 图片 --> |
|
<div class="Transport_damage_photos" v-if="SelectType == 1 || SelectType == 3 || StateType"> |
|
<span class="title">图片</span> |
|
<el-upload |
|
v-model:file-list="fileList" |
|
action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15" |
|
list-type="picture-card" |
|
:on-preview="handlePictureCardPreview" |
|
:on-remove="handleRemove" |
|
> |
|
<el-icon><Plus /></el-icon> |
|
</el-upload> |
|
|
|
<el-dialog v-model="dialogVisible"> |
|
<img w-full :src="dialogImageUrl" alt="Preview Image" /> |
|
</el-dialog> |
|
</div> |
|
<el-form-item label="备注"> |
|
<el-input v-model="endFrom.name" placeholder="请输入备注" /> |
|
</el-form-item> |
|
<!-- 表格 --> |
|
<div class="recordCl"> |
|
<el-row> |
|
<!-- 列表模块 --> |
|
<tablecmt |
|
:columnList="recordList" |
|
:tableData="recorddata" |
|
:loading="loadingObj.list" |
|
@inputTxt="recordinputsc" |
|
@timeCheck="recordtimesc" |
|
@btnCheck="recordbtnsc" |
|
@selectCheck="recordselectsc" |
|
@selection="recordselectionChange" |
|
> |
|
<template #default="slotProps"> |
|
<template v-if="slotProps.scope.column.label === '操作'"> |
|
<div class="ElBtnClass"> |
|
<el-button @click="view(slotProps.scope)">查看</el-button> |
|
<el-button @click="ViewEvent(slotProps.scope)">编辑</el-button> |
|
<el-button @click="ViewEvent(slotProps.scope)">回复</el-button> |
|
<el-button @click="Delete(slotProps.scope)">删除</el-button> |
|
<el-button @click="CompletionButton(slotProps.scope)">完结</el-button> |
|
</div> |
|
</template> |
|
</template> |
|
</tablecmt> |
|
</el-row> |
|
</div> |
|
<div class="el_Completion"> |
|
<span class="title">完结信息</span> |
|
<div class="el-ckbtn"> |
|
<el-button type="primary" @click="AddCompensation">添加赔款方</el-button> |
|
<el-button type="primary" @click="AddPayee">添加收款方</el-button> |
|
</div> |
|
<div class="payanindemnity" v-for="(item, index) in CompensationParty" :key="index"> |
|
<span class="title">{{ item.state == 0 ? '赔款方' : '收款方' }}{{ item.cld }}</span> |
|
<div class="sk_input"><el-input v-model="item.name" placeholder="赔款方" /></div> |
|
<div class="sk_input"><el-input v-model="item.reason" placeholder="原因" /></div> |
|
<div class="sk_input"><el-input v-model="item.nunm" placeholder="金额" /></div> |
|
<el-button type="danger" round @click="payremove(item.state, index)">移除</el-button> |
|
</div> |
|
</div> |
|
|
|
<div> |
|
<span>仲裁原因</span> |
|
<el-input |
|
style="margin-top: 12px" |
|
v-model="endFrom.textarea" |
|
:rows="5" |
|
type="textarea" |
|
placeholder="请输入仲裁原因" |
|
/> |
|
</div> |
|
|
|
<template #footer> |
|
<span class="dialog-footer"> |
|
<el-button @click="enddialog = false">取消</el-button> |
|
<el-button type="primary" @click="dialogVisible = false"> 确定 </el-button> |
|
</span> |
|
</template> |
|
</el-dialog> |
|
</basic-container> |
|
|
|
<!-- <div class="page"> |
|
<el-pagination |
|
v-model:current-page="currentPage" |
|
v-model:page-size="pageSize" |
|
:page-sizes="pageList" |
|
:disabled="disabled" |
|
:background="background" |
|
layout="total, sizes, prev, pager, next, jumper" |
|
:total="total" |
|
@size-change="PageSizeChange" |
|
@current-change="SizeChange" |
|
/> |
|
</div> --> |
|
</template> |
|
|
|
<script setup> |
|
import { ElMessage } from 'element-plus'; |
|
import { ElMessageBox } from 'element-plus'; |
|
import { Plus } from '@element-plus/icons-vue'; |
|
import { $_getList, $_submit, $_getDetail, $_remove } from '@/api/aftersales/aftersalesWorkOrder'; |
|
import { getDictionaryBiz } from '@/api/system/dict'; //字典 |
|
import { getDetailWarehouse, getDeptWarehouse } from '@/api/basicdata/basicdataWarehouse'; //处理方 |
|
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue'; |
|
import { columnList, recordList } from '@/option/aftersales/vueTvemp.js'; |
|
import { processRowProperty } from '@/utils/util'; |
|
import dayjs from 'dayjs'; |
|
const currentPage = ref(1); // 默认页码 |
|
const pageSize = ref(30); // 默认每一页几条 |
|
const total = ref(0); //页码总页数 |
|
const pageList = ref([5, 10, 50, 100, 200]); // 选择每页显示多少条 |
|
const background = ref(true); // 是否开启背景颜色 |
|
const disabled = ref(false); // 是否禁止使用页码功能 |
|
const loading = ref(false); //首页表格加载效果 |
|
const Indexdialog = ref(false); //新增弹窗 |
|
const Indexform = ref({}); //首页新增表单 |
|
const IndexException = ref([]); //异常类型下拉选择 |
|
const DiscoveringNodes = ref([]); //发现节点下拉选择 |
|
const warehouseData = ref([]); //处理方 |
|
const IndexForm = ref(null); //首页表实例 |
|
const FromDisabled = ref(false); //详情禁止输入框 |
|
const SelectType = ref(null); //类型 |
|
const StateType = ref(true); //类型 |
|
const dialogImageUrl = ref(''); |
|
const dialogVisible = ref(false); |
|
const groundlineType = ref(null); //干线状态 |
|
const groundlineSet = ref(true); //干线条件都满足 |
|
const enddialog = ref(false); //完结弹窗 |
|
const endFrom = ref({}); //完结弹窗表单 |
|
const screenHeight = ref(0); // 屏幕高度 |
|
const eightyPercentHeight = ref(0); // 80% 高度 |
|
const list = ref([]); |
|
const options = ref([]); |
|
const ProcessingList = ref([]); //赔付方式列表 |
|
const CompensationParty = ref([{ name: '', state: 0, num: 0, reason: '', cld: 1 }]); //赔付款方 |
|
const details = reactive({ |
|
/** 是否开启搜索 */ |
|
search: true, |
|
/** 表格搜索条件 */ |
|
query: {}, |
|
/** 时间快捷选择设置 */ |
|
shortcuts: [ |
|
{ |
|
text: '最近一周', |
|
value: () => { |
|
const end = new Date(); |
|
const start = new Date(); |
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); |
|
return [start, end]; |
|
}, |
|
}, |
|
{ |
|
text: '最近一个月', |
|
value: () => { |
|
const end = new Date(); |
|
const start = new Date(); |
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); |
|
return [start, end]; |
|
}, |
|
}, |
|
{ |
|
text: '最近三个月', |
|
value: () => { |
|
const end = new Date(); |
|
const start = new Date(); |
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); |
|
return [start, end]; |
|
}, |
|
}, |
|
], |
|
/** 时间选择器数据 */ |
|
stockupDate: [], |
|
/** 列表 */ |
|
columnList, |
|
|
|
/** 列表数据 */ |
|
data: [{}], |
|
// 处理记录 |
|
recordList, |
|
// 处理记录数据 |
|
recorddata: [{}], |
|
/** 页面loading */ |
|
loadingObj: { |
|
/** 列表加载loading */ |
|
list: false, |
|
packageListLoading: false, |
|
}, |
|
/** 列表复选框选中的数据 */ |
|
selectionList: [], |
|
/** 是否显示设置表格 */ |
|
drawerShow: false, |
|
/** 分页参数 */ |
|
page: { |
|
currentPage: 1, |
|
pageSize: 50, |
|
total: 0, |
|
}, |
|
|
|
/** 弹出层显示 */ |
|
popUpShow: { |
|
/** 包件明细 */ |
|
packageOrderListlVisited: false, |
|
/** 二维码 */ |
|
QRCodeVisible: false, |
|
/** 修改客户信息 */ |
|
editClientInfoVisible: false, |
|
}, |
|
/** 列表Dom节点 */ |
|
listNode: '', |
|
form: {}, |
|
/** 全屏 */ |
|
fullscreenObj: { |
|
/** 包明细 */ |
|
packageOrderListlVisited: false, |
|
}, |
|
}); |
|
|
|
const { |
|
search, |
|
query, |
|
shortcuts, |
|
stockupDate, |
|
data, |
|
loadingObj, |
|
selectionList, |
|
drawerShow, |
|
page, |
|
trickleLoadingPage, |
|
zeroAdditionalRecordingInfo, |
|
popUpShow, |
|
recorddata, |
|
} = toRefs(details); |
|
|
|
const ProcessingResults = [ |
|
{ |
|
value: '0', |
|
label: '维修', |
|
}, |
|
{ |
|
value: '1', |
|
label: '补漆', |
|
}, |
|
{ |
|
value: '2', |
|
label: '下补单', |
|
}, |
|
{ |
|
value: '3', |
|
label: '赔付运费', |
|
}, |
|
{ |
|
value: '4', |
|
label: '用库存', |
|
}, |
|
{ |
|
value: '5', |
|
label: '赔商家', |
|
}, |
|
{ |
|
value: '6', |
|
label: '赔客户', |
|
}, |
|
]; |
|
const fileList = ref([ |
|
{ |
|
name: 'food.jpeg', |
|
url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100', |
|
}, |
|
{ |
|
name: 'plant-1.png', |
|
url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100', |
|
}, |
|
]); |
|
|
|
const TransportLossNode = ref([ |
|
{ label: '在库操作环节', value: 1 }, |
|
{ label: '干线卸车环节', value: 2 }, |
|
{ label: '入库环节', value: 3 }, |
|
{ label: '配送环节', value: 4 }, |
|
{ label: '中转卸车环节', value: 5 }, |
|
{ label: '安装环节', value: 6 }, |
|
]); |
|
|
|
// 按钮配置 |
|
const ElButtonS = ref([ |
|
// 1.link 切换按钮样式(文本模式-false ,按钮模式-tre) |
|
// 2.class 按钮样式名(用于切换按钮样式) |
|
// 3.space 是否开启按钮文子直接间距(true开启 ,false关闭) |
|
// 4.size 按钮尺寸默认小尺寸('large'| 'default'| 'small') |
|
// 5.icon 按钮图标 |
|
// 6.table 按钮名称 |
|
{ |
|
link: false, |
|
class: 'el-btn-view', |
|
space: true, |
|
size: 'small', |
|
icon: 'el-icon-view', |
|
table: '详情', |
|
}, |
|
]); |
|
|
|
const ElData = ref([]); // 首页表格数据 |
|
// 首页表格菜单 |
|
const ElmenuData = ref([ |
|
{ |
|
prop: 'workOrderType', |
|
label: '异常类型', |
|
type: 6, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'discoveryNode', |
|
label: '发现节点', |
|
type: 1, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'workOrderNumber', |
|
label: '异常工单号', |
|
type: 1, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'waybillNumber', |
|
label: '运单号', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'orderCode', |
|
label: '订单自编号', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'trainNumber', |
|
label: '车次号', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'first', |
|
label: '一级品', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'secondary', |
|
label: '二级品', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'vehicleRoute', |
|
label: '车辆线路', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'deliverGoodsTime', |
|
label: '送货时间', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'discoveryTime', |
|
label: '发现时间', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'warehousingTime', |
|
label: '入库时间', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'waybillMall', |
|
label: '运单商场', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'deliveryTime', |
|
label: '配送时间', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'deliveryDriver', |
|
label: '配送司机', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'workOrderStatus', |
|
label: '工单状态', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'customerServiceName', |
|
label: '归属客服名称', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'overTime', |
|
label: '完结时间', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'problemDescription', |
|
label: '异常问题描述', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'personResponsible', |
|
label: '责任人(库内作业环节)', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'processNumber', |
|
label: '钉钉流程号', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'reviewedBy', |
|
label: '审核人', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'auditTime', |
|
label: '审核时间', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'entryTime', |
|
label: '财务入账时间', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: 'remarks', |
|
label: '备注', |
|
type: 1, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
header: true, |
|
}, |
|
{ |
|
prop: '', |
|
label: '操作', |
|
type: 10, |
|
values: '', |
|
width: '200', |
|
checkarr: [], |
|
fixed: 'right', |
|
sortable: true, |
|
header: true, |
|
}, |
|
]); |
|
|
|
const IndexTable = val => { |
|
let data = { |
|
...val, |
|
}; |
|
columnList[2].checkarr = [];//重置下拉搜索框 |
|
columnList[3].checkarr = []; |
|
data.current = page.value.currentPage; //页码 |
|
data.size = page.value.pageSize; //条数 |
|
updateDictionary(columnList[2].checkarr, 'pc_work_order'); //异常类型 |
|
updateDictionary(columnList[3].checkarr, 'pc_discovery_node'); //发现环节 |
|
$_getList(data).then(res => { |
|
console.log(res, '页面初始化'); |
|
page.value.total = res.data.data.total; //总页数 |
|
console.log(columnList[3].checkarr, 'columnList[3].checkarr'); |
|
if (res.data.data.records.length) { |
|
res.data.data.records.forEach(item => { |
|
console.log(item.discoveryNode, 'item.discoveryNode'); |
|
// 对为null的数据进行处理 |
|
for (const property in item) { |
|
if (item[property] == null) { |
|
item[property] = '/'; |
|
} |
|
} |
|
// 对状态进行处理 |
|
if (item.workOrderType == 1) { |
|
item.workOrderTypeName = columnList[2].checkarr[0].label; //货损 |
|
} else if (item.workOrderType == 2) { |
|
item.workOrderTypeName = columnList[2].checkarr[1].label; //少货 |
|
} else if (item.workOrderType == 3) { |
|
item.workOrderTypeName = columnList[2].checkarr[2].label; //窜货 |
|
} else if (item.workOrderType == 4) { |
|
item.workOrderTypeName = columnList[2].checkarr[3].label; //加急 |
|
} else if (item.workOrderType == 5) { |
|
item.workOrderTypeName = columnList[2].checkarr[4].label; //其他 |
|
} |
|
|
|
if (item.discoveryNode == 1) { |
|
item.discoveryNodeName = columnList[3].checkarr[0].label; //提货环节 |
|
} else if (item.discoveryNode == 2) { |
|
item.discoveryNodeName = columnList[3].checkarr[1].label; //发货环节 |
|
} else if (item.discoveryNode == 3) { |
|
item.discoveryNodeName = columnList[3].checkarr[2].label; //干线卸车环节 |
|
} else if (item.discoveryNode == 4) { |
|
item.discoveryNodeName = columnList[3].checkarr[3].label; //库内作业环节 |
|
} else if (item.discoveryNode == 5) { |
|
item.discoveryNodeName = columnList[3].checkarr[4].label; //配送装车环节 |
|
} else if (item.discoveryNode == 6) { |
|
item.discoveryNodeName = columnList[3].checkarr[5].label; //其他 |
|
} else if (item.discoveryNode == 7) { |
|
item.discoveryNodeName = columnList[3].checkarr[6].label; //配送签收环节 |
|
} else if (item.discoveryNode == 8) { |
|
item.discoveryNodeName = columnList[3].checkarr[7].label; //安装环节 |
|
} |
|
}); |
|
details.data = res.data.data.records; |
|
|
|
loading.value = false; //关闭加载效果 |
|
} else { |
|
details.data = res.data.data.records = res.data.data.records; |
|
} |
|
}); |
|
}; |
|
|
|
// 页面初始化 |
|
const OnLoad = async () => { |
|
details.loadingObj = true; |
|
// 在组件挂载后获取屏幕高度 |
|
screenHeight.value = window.innerHeight; |
|
// 计算80%的高度 |
|
eightyPercentHeight.value = screenHeight.value * 0.8; |
|
loading.value = true; //开启加载效果 |
|
let data = {}; |
|
console.log(page, 'page'); |
|
data.current = page.value.currentPage; //页码 |
|
data.size = page.value.pageSize; //条数 |
|
console.log(data, '要提交的数据'); |
|
|
|
updateDictionary(columnList[2].checkarr, 'pc_work_order'); //异常类型 |
|
updateDictionary(columnList[3].checkarr, 'pc_discovery_node'); //发现环节 |
|
IndexTable(); |
|
}; |
|
|
|
OnLoad(); |
|
// 字典公共函数 |
|
function updateDictionary(targetArray, dictionaryType) { |
|
getDictionaryBiz(dictionaryType).then(res => { |
|
console.log(res, '字典'); |
|
res.data.data.forEach(item => { |
|
targetArray.push({ |
|
value: item.dictKey, |
|
label: item.dictValue, |
|
}); |
|
}); |
|
}); |
|
} |
|
// 字典请求函数 |
|
const AddInfo = () => { |
|
Indexform.value = {}; //清空表单 |
|
IndexException.value = []; |
|
DiscoveringNodes.value = []; |
|
Indexdialog.value = true; //开启新增弹窗 |
|
FromDisabled.value = false; //禁用输入框 |
|
updateDictionary(IndexException.value, 'pc_work_order'); //异常类型 |
|
updateDictionary(DiscoveringNodes.value, 'pc_discovery_node'); //发现环节 |
|
getDeptWarehouse({}).then(res => { |
|
console.log(res, '处理方'); |
|
res.data.data.forEach(item => { |
|
warehouseData.value.push({ |
|
value: item.id, |
|
label: item.name, |
|
}); |
|
}); |
|
}); |
|
}; |
|
|
|
// 首页新增表单确定 |
|
const ConfirmForm = () => { |
|
console.log(Indexform.value.processor, 'Indexform.value.processor'); |
|
FromDisabled.value = false; //启用输入框 |
|
let processorEntityList = []; |
|
let ProcessingParty = { |
|
//处理方 |
|
businessName: warehouseData.value.find(row => row.value == Indexform.value.processor)?.label, |
|
businessId: Indexform.value.processor, |
|
conditions: 1, |
|
typesOf: 2, |
|
}; |
|
processorEntityList.push(ProcessingParty); |
|
let ResponsibleParty = { |
|
//责任方 |
|
businessName: warehouseData.value.find(row => row.value == Indexform.value.duty).label, |
|
businessId: Indexform.value.duty, |
|
conditions: 1, |
|
typesOf: 1, |
|
}; |
|
processorEntityList.push(ResponsibleParty); |
|
Indexform.value.processorEntityList = processorEntityList; |
|
let DataSubmit = { ...Indexform.value }; |
|
delete DataSubmit.duty, //移除多余字段 |
|
delete DataSubmit.processor; //移除多余字段 |
|
console.log(DataSubmit, '处理好的表单信息'); |
|
Indexdialog.value = false; //关闭表单弹窗 |
|
$_submit(DataSubmit).then(res => { |
|
if (res.data.code == 200) { |
|
ElMessage({ |
|
message: res.data.msg, |
|
type: 'success', |
|
}); |
|
IndexTable(); |
|
} |
|
}); |
|
}; |
|
|
|
// 首页查看详情按钮 |
|
const view = val => { |
|
console.log(val, '当前行数据'); |
|
FromDisabled.value = true; //禁用输入框 |
|
updateDictionary(IndexException.value, 'pc_work_order'); //异常类型 |
|
updateDictionary(DiscoveringNodes.value, 'pc_discovery_node'); //发现环节 |
|
getDeptWarehouse({}).then(res => { |
|
res.data.data.forEach(item => { |
|
warehouseData.value.push({ |
|
value: item.id, |
|
label: item.name, |
|
}); |
|
}); |
|
}); |
|
$_getDetail({ |
|
id: val.row.id, |
|
}).then(res => { |
|
console.log(res, '查看详情返回值'); |
|
if (res.data.data) { |
|
Indexform.value = res.data.data; |
|
Indexdialog.value = true; //展开弹窗 |
|
} |
|
}); |
|
}; |
|
// 首页删除 |
|
const Delete = val => { |
|
ElMessageBox.confirm(`是否删除该条数据?`) |
|
.then(() => { |
|
$_remove({ |
|
ids: val.id, |
|
}).then(res => { |
|
console.log(res, '删除成功后的返回值'); |
|
if (res.data.code == 200) { |
|
ElMessage({ |
|
message: res.data.msg, |
|
type: 'success', |
|
}); |
|
|
|
OnLoad(); //添加成功初始化程序 |
|
} |
|
}); |
|
}) |
|
.catch(() => { |
|
// catch error |
|
}); |
|
}; |
|
// 完结按钮 |
|
const CompletionButton = () => { |
|
enddialog.value = true; //开启完结弹窗 |
|
}; |
|
// 异常类型事件 |
|
const abnormalChange = val => { |
|
console.log(val); |
|
StateType.value = false; |
|
if (val == 1 || val == 2 || val == 3) { |
|
SelectType.value = val; |
|
} else { |
|
StateType.value = true; |
|
} |
|
}; |
|
// 添加赔款方 |
|
const AddCompensation = () => { |
|
console.log('添加赔款方'); |
|
let som = 1; |
|
CompensationParty.value.forEach(item => { |
|
if (item.state == 0) { |
|
som++; |
|
} |
|
}); |
|
CompensationParty.value.push({ name: '', state: 0, num: 0, reason: '', cld: som }); |
|
}; |
|
// 添加收款方 |
|
const AddPayee = () => { |
|
let som = 1; |
|
CompensationParty.value.forEach(item => { |
|
if (item.state == 1) { |
|
som++; |
|
} |
|
}); |
|
CompensationParty.value.push({ name: '', state: 1, num: 0, reason: '', cld: som }); |
|
}; |
|
// 移除按钮 |
|
const payremove = (state, val) => { |
|
// 判断赔付方,至少保留一条数据 |
|
let som = 0; |
|
if (state == 0) { |
|
CompensationParty.value.forEach(item => { |
|
if (item.state == 0) { |
|
som++; |
|
} |
|
}); |
|
if (som == 1) { |
|
ElMessage({ |
|
message: '赔款必填最少一条', |
|
type: 'warning', |
|
}); |
|
return; |
|
} |
|
} |
|
CompensationParty.value.splice(val, 1); |
|
}; |
|
// 发现节点事件 |
|
const DiscoveringNodesChange = val => { |
|
groundlineSet.value = false; //干线条件都满足 |
|
if (val == 1 || val == 2 || val == 3 || val == 4 || val == 5) { |
|
groundlineType.value = val; //干线状态 |
|
} else { |
|
groundlineSet.value = true; //展示所有搜索框 |
|
} |
|
}; |
|
// 照片 |
|
const handleRemove = (uploadFile, uploadFiles) => { |
|
console.log(uploadFile, uploadFiles); |
|
}; |
|
|
|
const handlePictureCardPreview = uploadFile => { |
|
dialogImageUrl.value = uploadFile.url; |
|
dialogVisible.value = true; |
|
}; |
|
|
|
/** 表格表头输入框搜索 */ |
|
const inputsc = (index, row) => { |
|
details.query[row.prop] = index; |
|
IndexTable(details.query); |
|
}; |
|
|
|
/** 表格表头时间选择 */ |
|
const timesc = (index, row) => { |
|
console.log(index, row); |
|
if (!!index) { |
|
index = dayjs(index).format('YYYY-MM-DD'); |
|
} |
|
details.query[row.prop] = index; |
|
if (!index) { |
|
delete details.query[row.prop]; |
|
} |
|
}; |
|
|
|
/** 表格表头输入框搜索 */ |
|
const btnsc = val => { |
|
console.log(val); |
|
}; |
|
|
|
|
|
|
|
// // 下拉框搜索公共函数 |
|
// const updateDetailQuery = (index, propName, obj) => { |
|
// // 更新或删除查询参数 |
|
// if (index) { |
|
// obj[propName] = index; |
|
// } else { |
|
// delete obj[propName]; |
|
// } |
|
// }; |
|
// const processRowProperty = (index, row, details) => { |
|
// const nameRegex = /(\w+)Name$/; // 捕获以'Name'结尾的属性名 |
|
// const match = row.prop.match(nameRegex); |
|
|
|
// // 如果属性以'Name'结尾,则更新相应的查询参数 |
|
// if (match) { |
|
// const basePropName = match[1]; // 获取不包含'Name'的属性名 |
|
// updateDetailQuery(index, basePropName, details.query); |
|
// } else { |
|
// updateDetailQuery(index, row.prop, details.query); |
|
// } |
|
// // 如果提供的index为假值,从query中删除原始属性 |
|
// if (!index) { |
|
// delete details.query[row.prop]; |
|
// } |
|
// }; |
|
|
|
|
|
/** 表格表头下拉框选择 */ |
|
const selectsc = (index, row) => { |
|
console.log('index :>> ', index); |
|
console.log('row :>> ', row); |
|
|
|
processRowProperty(index, row, details); |
|
console.log(details.query, details.query); |
|
IndexTable(details.query); |
|
}; |
|
|
|
function onLoad() {} |
|
|
|
/** 表格表头复选框选择 */ |
|
const selectionChange = list => { |
|
console.log(list); |
|
details.selectionList = list; |
|
}; |
|
|
|
/** 页码改变执行的回调 */ |
|
const currentChange = () => { |
|
console.log(''); |
|
}; |
|
|
|
const changeProcessingResults = val => { |
|
// 首先删除取消的项目 |
|
ProcessingList.value = ProcessingList.value.filter(item => val.includes(item.state - 1)); |
|
|
|
// 然后添加或保持新的项目 |
|
val.forEach(num => { |
|
let newItem = { input: '', min: 0, max: 1000, state: num + 1 }; |
|
// 根据num为newItem的name字段赋值 |
|
switch (num) { |
|
case '0': |
|
newItem.name = '维修'; |
|
break; |
|
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; |
|
default: |
|
console.log('未知的编号:', num); |
|
return; // 如果不是我们想处理的num,跳过之后的逻辑 |
|
} |
|
|
|
// 如果列表中不存在则加入新项目 |
|
if (!ProcessingList.value.some(item => item.state === newItem.state)) { |
|
ProcessingList.value.push(newItem); |
|
console.log(`添加:${newItem.name}`); |
|
} |
|
}); |
|
}; |
|
|
|
// 处理结果选择事件 |
|
</script> |
|
|
|
<style scoped lang="scss"> |
|
.el-card { |
|
height: 100%; |
|
:deep(.el-card__body) { |
|
height: 100%; |
|
display: flex; |
|
flex-direction: column; |
|
} |
|
} |
|
.page { |
|
height: 30px; |
|
flex: 1; |
|
display: flex; |
|
align-items: flex-end; |
|
padding-bottom: 14px; |
|
justify-content: flex-end; |
|
} |
|
:deep(.el-Cart-button) { |
|
margin-bottom: 8px; |
|
display: flex; |
|
justify-content: space-between; |
|
} |
|
.el-Cart-button-right { |
|
display: flex; |
|
margin: 0 0px; |
|
justify-content: space-between; |
|
} |
|
.el-Cart-button-right { |
|
display: flex; |
|
margin: 0 0px; |
|
justify-content: space-between; |
|
align-items: center; |
|
button { |
|
background-color: transparent; |
|
border-radius: 50%; |
|
width: 30px; |
|
height: 30px; |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
border: 1px solid #ccc; |
|
margin-right: 8px; |
|
|
|
&:hover { |
|
background-color: #172e601f; |
|
i { |
|
color: #0e2549; |
|
} |
|
} |
|
// 去掉最后一个按钮右侧边距 |
|
&:last-child { |
|
margin-right: 0; |
|
} |
|
} |
|
} |
|
.IndexFrom { |
|
display: flex; |
|
flex-wrap: wrap; |
|
.el-form-item { |
|
margin: 10px; |
|
width: 31%; |
|
height: 46px; |
|
display: flex; |
|
align-items: center; |
|
} |
|
.el-form-item__content { |
|
.el-input { |
|
height: 36px; |
|
width: 206px; |
|
} |
|
} |
|
.el-input__wrapper { |
|
height: 32px !important; |
|
} |
|
:deep(.el-input) { |
|
width: 100% !important; |
|
} |
|
:deep(.el-input__wrapper) { |
|
height: 30px !important; |
|
} |
|
:deep(.el-select) { |
|
width: 100%; |
|
} |
|
} |
|
.Transport_damage_photos { |
|
padding: 6px; |
|
.title { |
|
font-size: 14px; |
|
margin-bottom: 9px; |
|
display: block; |
|
} |
|
} |
|
.endClass { |
|
display: flex; |
|
flex-wrap: wrap; |
|
align-items: center; |
|
.el-form-item { |
|
margin: 6px; |
|
width: 32%; |
|
} |
|
.el-select { |
|
width: 100%; |
|
} |
|
:deep(.el-input) { |
|
width: 100%; |
|
} |
|
:deep(.el-input__wrapper) { |
|
height: 26px; |
|
} |
|
.Transport_damage_photos { |
|
.title { |
|
font-size: 14px; |
|
} |
|
} |
|
} |
|
.ProcessingResults { |
|
width: 100%; |
|
height: 260px; |
|
border: 1px solid #ccc; |
|
position: relative; |
|
padding: 26px; |
|
box-sizing: border-box; |
|
margin-top: 20px; |
|
.title { |
|
position: absolute; |
|
top: -20px; |
|
left: 20px; |
|
font-size: 26px; |
|
background-color: #fff; |
|
} |
|
} |
|
.selector { |
|
display: flex; |
|
width: 100%; |
|
padding: 16px; |
|
padding-left: 6px; |
|
.title { |
|
width: 108px; |
|
} |
|
} |
|
.Listadmiration { |
|
display: flex; |
|
flex-wrap: wrap; |
|
.name { |
|
display: flex; |
|
margin: 10px 5%; |
|
span { |
|
display: block; |
|
width: 90px; |
|
} |
|
} |
|
} |
|
.ElBtnClass { |
|
button { |
|
border: none; |
|
padding: 0; |
|
background-color: transparent; |
|
} |
|
button:hover { |
|
background-color: transparent; |
|
} |
|
} |
|
:deep(.el-card) { |
|
height: 100%; |
|
} |
|
.avue-crud { |
|
height: 100%; |
|
display: flex; |
|
flex-direction: column; |
|
} |
|
:deep(.el-card__body) { |
|
height: 100%; |
|
} |
|
.lptime { |
|
margin-top: 30px; |
|
padding-left: 50px; |
|
display: flex; |
|
flex-direction: column; |
|
font-size: 14px; |
|
:deep(.el-input__wrapper) { |
|
height: 30px; |
|
} |
|
.name { |
|
margin-bottom: 10px; |
|
} |
|
} |
|
.recordCl { |
|
height: 200px; |
|
overflow-y: scroll; |
|
} |
|
.el_Completion { |
|
padding: 10px 0; |
|
.title { |
|
font-size: 14px; |
|
} |
|
} |
|
.el-ckbtn { |
|
margin-top: 10px; |
|
} |
|
.payanindemnity { |
|
display: flex; |
|
align-items: center; |
|
margin-top: 20px; |
|
.title { |
|
width: 76px; |
|
height: 100%; |
|
display: flex; |
|
display: block; |
|
align-items: center; |
|
} |
|
.sk_input { |
|
margin: 0 5px; |
|
width: 300px; |
|
} |
|
.el-button { |
|
background-color: #ff0000; |
|
border: none; |
|
} |
|
} |
|
.el_clzr { |
|
margin-top: 24px; |
|
padding: 0 18px; |
|
padding-left: 8px; |
|
|
|
:deep(.el-select) { |
|
width: 100%; |
|
} |
|
:deep(.el-input) { |
|
height: 38px; |
|
} |
|
} |
|
.el-fy{ |
|
flex: 1; |
|
display: flex; |
|
align-items: flex-end; |
|
margin-bottom: 10px; |
|
} |
|
</style>
|
|
|