679 lines
21 KiB
Vue
679 lines
21 KiB
Vue
|
|
<template>
|
|||
|
|
<div class="app-container">
|
|||
|
|
<el-splitter>
|
|||
|
|
<el-splitter-panel size="40%">
|
|||
|
|
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" label-width="90">
|
|||
|
|
<el-row >
|
|||
|
|
|
|||
|
|
<el-col :span="10">
|
|||
|
|
<el-form-item label="单据号" prop="billNoCk">
|
|||
|
|
<el-input
|
|||
|
|
v-model="queryParams.billNoCk"
|
|||
|
|
placeholder="请输入单据号"
|
|||
|
|
clearable
|
|||
|
|
@keyup.enter="handleQuery"
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="14" >
|
|||
|
|
<el-form-item>
|
|||
|
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
|||
|
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
|
|||
|
|
</el-form>
|
|||
|
|
|
|||
|
|
<!-- @selection-change="printSelectionChange" -->
|
|||
|
|
<el-table v-loading="loading" highlight-current-row :data="billList" @row-dblclick="billClick" >
|
|||
|
|
<!-- <el-table-column type="selection" width="55" align="center" /> -->
|
|||
|
|
<el-table-column label="单据号" align="center" prop="billNoCk" width="150" />
|
|||
|
|
<el-table-column label="库存状态" align="center" >
|
|||
|
|
<template #default="scope">
|
|||
|
|
<span>{{ isChukuFun(scope.row.isChuku) }}</span>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column>
|
|||
|
|
<el-table-column label="理货员" align="center" prop="ckLihuoY" />
|
|||
|
|
<!-- <el-table-column label="入库类型" align="center" prop="rkTypeName" width="100"/> -->
|
|||
|
|
<el-table-column label="出库时间" align="center" prop="lyTime" width="170">
|
|||
|
|
<template #default="scope">
|
|||
|
|
<span>{{ parseTime(scope.row.lyTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column>
|
|||
|
|
<!-- <el-table-column label="操作" align="center" width="180">
|
|||
|
|
<template #default="scope">
|
|||
|
|
<el-button link type="primary" @click="delieryReceipt(scope.row.billNo)">生成配送单</el-button>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column> -->
|
|||
|
|
<!-- <el-table-column label="所属仓库" align="center" prop="cangkuName" /> -->
|
|||
|
|
</el-table>
|
|||
|
|
<!-- 分页暂时注释掉 -->
|
|||
|
|
<!-- <pagination
|
|||
|
|
v-show="total>0"
|
|||
|
|
:total="total"
|
|||
|
|
v-model:page="queryParams.pageNum"
|
|||
|
|
v-model:limit="queryParams.pageSize"
|
|||
|
|
@pagination="getList"
|
|||
|
|
/> -->
|
|||
|
|
<!-- <el-pagination background layout="prev, pager, next" :total="total" v-model:page="queryParams.pageNum" @pagination="getList"/> -->
|
|||
|
|
</el-splitter-panel>
|
|||
|
|
<el-splitter-panel :min="200">
|
|||
|
|
<el-row :gutter="10" class="mb8">
|
|||
|
|
<el-col :span="1.5">
|
|||
|
|
<el-button
|
|||
|
|
type="primary"
|
|||
|
|
plain
|
|||
|
|
icon="plus"
|
|||
|
|
size="mini"
|
|||
|
|
@click="delieryReceipt()"
|
|||
|
|
:disabled="multiple"
|
|||
|
|
>生成配送单</el-button>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
<el-table v-loading="detailLoading" show-overflow-tooltip :data="stockList" @selection-change="handleSelectionChange">
|
|||
|
|
<el-table-column type="selection" width="55" align="center" />
|
|||
|
|
<el-table-column label="库存状态" align="center" >
|
|||
|
|
<template #default="scope">
|
|||
|
|
<span>{{ isChukuFun(scope.row.isChuku) }}</span>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column>
|
|||
|
|
<el-table-column label="项目号" align="center" prop="xmNo" width="150"/>
|
|||
|
|
<el-table-column label="项目描述" align="center" prop="xmMs" width="250"/>
|
|||
|
|
<el-table-column label="物料号" align="center" prop="wlNo" width="100"/>
|
|||
|
|
<el-table-column label="物料描述" align="center" prop="wlMs" width="250"/>
|
|||
|
|
<el-table-column label="供应商名称" align="center" prop="gysMc" width="200"/>
|
|||
|
|
<el-table-column label="合同单价" align="center" prop="htDj" />
|
|||
|
|
<el-table-column label="订单编号" align="center" prop="sapNo" width="150"/>
|
|||
|
|
<el-table-column label="计量单位" align="center" prop="dw" />
|
|||
|
|
<el-table-column label="实际入库数量" align="center" prop="realQty" width="120"/>
|
|||
|
|
<el-table-column label="库位码" align="center" prop="pcode" width="120"/>
|
|||
|
|
<el-table-column label="托盘码" align="center" prop="trayCode" />
|
|||
|
|
<el-table-column label="身份码" align="center" prop="entityId" width="200"/>
|
|||
|
|
<el-table-column label="入库类型" align="center" prop="rkTypeName" width="150"/>
|
|||
|
|
<el-table-column label="物资类型" align="center" prop="wlTypeName" width="120"/>
|
|||
|
|
<el-table-column label="所属仓库" align="center" prop="cangkuName" width="150"/>
|
|||
|
|
<el-table-column label="入库时间" align="center" prop="rkTime" width="200">
|
|||
|
|
<template #default="scope">
|
|||
|
|
<span>{{ parseTime(scope.row.rkTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column>
|
|||
|
|
<!-- <el-table-column label="还料时间" align="center" prop="returnTime" width="200">
|
|||
|
|
<template #default="scope">
|
|||
|
|
<span>{{ parseTime(scope.row.returnTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column> -->
|
|||
|
|
<el-table-column label="出库时间" align="center" prop="lyTime" width="200">
|
|||
|
|
<template #default="scope">
|
|||
|
|
<span>{{ parseTime(scope.row.lyTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column>
|
|||
|
|
<!-- <el-table-column label="库龄" align="center" prop="stockAge" /> -->
|
|||
|
|
<el-table-column label="理货员" align="center" prop="lihuoYName" />
|
|||
|
|
<!-- <el-table-column label="现场图片" align="center" v-if="isExamine==1">
|
|||
|
|
<template #default="scope">
|
|||
|
|
<el-image :src="scope.row.scenePhotoUrl" style="width:50px;height: 50px;"
|
|||
|
|
:zoom-rate="1.2"
|
|||
|
|
:max-scale="7"
|
|||
|
|
:min-scale="0.2"
|
|||
|
|
:preview-src-list="srcList"
|
|||
|
|
show-progress
|
|||
|
|
:initial-index="4"
|
|||
|
|
:preview-teleported="true"
|
|||
|
|
@click="preview(scope.row.scenePhotoUrl)"/>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column> -->
|
|||
|
|
<el-table-column label="备注" align="center" prop="remark" width="200"/>
|
|||
|
|
<!-- fixed="right" -->
|
|||
|
|
|
|||
|
|
</el-table>
|
|||
|
|
|
|||
|
|
</el-splitter-panel>
|
|||
|
|
</el-splitter>
|
|||
|
|
<el-dialog title="生成配送单" v-model="dialogPicDetailVisible">
|
|||
|
|
<div class="container">
|
|||
|
|
<div class="billBox"><span>出库单号:</span><span>{{ detailQueryParams.billNoCk }}</span></div>
|
|||
|
|
<el-form :model="delieryData" ref="form" :rules="rules" label-width="100">
|
|||
|
|
<el-divider content-position="left">配送信息</el-divider>
|
|||
|
|
<el-row>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="起点" prop="originName">
|
|||
|
|
<el-input
|
|||
|
|
v-model="delieryData.originName"
|
|||
|
|
placeholder="请输入起点"
|
|||
|
|
clearable
|
|||
|
|
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="终点" prop="destName">
|
|||
|
|
<el-input
|
|||
|
|
v-model="delieryData.destName"
|
|||
|
|
placeholder="请输入终点"
|
|||
|
|
clearable
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
<el-row>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="配送人" prop="shipperName">
|
|||
|
|
<el-select v-model="delieryData.shipperName" placeholder="请选择配送人" clearable >
|
|||
|
|
<el-option v-for="dict in personList" :key="dict.userId" :label="dict.userName" :value="dict.userName" />
|
|||
|
|
</el-select>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="配送人电话" prop="shipperPhone">
|
|||
|
|
<el-input
|
|||
|
|
v-model="delieryData.shipperPhone"
|
|||
|
|
placeholder="请输入配送人电话"
|
|||
|
|
clearable
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
<el-row>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="收货人" prop="receiverName">
|
|||
|
|
<el-input
|
|||
|
|
v-model="delieryData.receiverName"
|
|||
|
|
placeholder="请输入收货人"
|
|||
|
|
clearable
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="收货人电话" prop="receiverPhone">
|
|||
|
|
<el-input
|
|||
|
|
v-model="delieryData.receiverPhone"
|
|||
|
|
placeholder="请输入收货人电话"
|
|||
|
|
clearable
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
<el-row>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="接收单位" prop="receiverOrgName">
|
|||
|
|
<el-input
|
|||
|
|
v-model="delieryData.receiverOrgName"
|
|||
|
|
placeholder="请输入接收单位"
|
|||
|
|
clearable
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="配送日期" prop="deliveryDate">
|
|||
|
|
|
|||
|
|
<el-date-picker
|
|||
|
|
v-model="delieryData.deliveryDate"
|
|||
|
|
type="date"
|
|||
|
|
format="YYYY-MM-DD"
|
|||
|
|
value-format="YYYY-MM-DD"
|
|||
|
|
style="width: 100%;"
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
<el-divider content-position="left">货物信息</el-divider>
|
|||
|
|
<el-row>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="重量" prop="deliveryTon">
|
|||
|
|
<el-input
|
|||
|
|
v-model="delieryData.deliveryTon"
|
|||
|
|
|
|||
|
|
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="体积" prop="goodsSize">
|
|||
|
|
<el-input
|
|||
|
|
v-model="delieryData.goodsSize"
|
|||
|
|
|
|||
|
|
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
<el-row>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="公里数" prop="totalKm">
|
|||
|
|
<el-input
|
|||
|
|
v-model="delieryData.totalKm"
|
|||
|
|
placeholder="请输入公里数"
|
|||
|
|
clearable
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="4" :offset="1">
|
|||
|
|
<el-button type="primary" @click="calculateFun(null)">计算</el-button>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
<el-divider content-position="left">计算信息</el-divider>
|
|||
|
|
<el-row>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="推荐车型" prop="vehicleTypeId">
|
|||
|
|
<el-select v-model="delieryData.vehicleTypeId" placeholder="请选择推荐车型" clearable @change="changeCarType">
|
|||
|
|
<el-option v-for="dict in carTypeList" :key="dict.id" :label="dict.typeName" :value="dict.id" />
|
|||
|
|
</el-select>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="12">
|
|||
|
|
<el-form-item label="建议费用" prop="suggestFee">
|
|||
|
|
<el-input
|
|||
|
|
v-model="delieryData.suggestFee"
|
|||
|
|
placeholder=""
|
|||
|
|
clearable
|
|||
|
|
disabled
|
|||
|
|
/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
</el-form>
|
|||
|
|
</div>
|
|||
|
|
<template #footer>
|
|||
|
|
<div class="dialog-footer">
|
|||
|
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
|||
|
|
<el-button @click="cancel">取 消</el-button>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
</el-dialog>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script setup name="outWarehouse">
|
|||
|
|
// wisdomDelStock
|
|||
|
|
import {listBill,listStock,calculate,addDelivery} from "@/api/outWarehouse/outWarehouse";
|
|||
|
|
import { listType } from "@/api/document/type"
|
|||
|
|
// import { getToken } from "@/utils/auth";
|
|||
|
|
// import {warehousingDict} from "@/api/information/warehousingtype"; //入库类型
|
|||
|
|
// import {materialtypeDict} from "@/api/information/materialtype"; //物资类型
|
|||
|
|
// import {warehouseDict} from "@/api/information/warehouseinfo"; //所属仓库
|
|||
|
|
import {listUser} from "@/api/system/user"; //理货员
|
|||
|
|
// import {getKwList} from "@/api/information/pcdedetail"; //库位下拉数据
|
|||
|
|
import { Plus } from '@element-plus/icons-vue'
|
|||
|
|
// import { onMounted, onUnmounted } from "vue";
|
|||
|
|
// import AMapLoader from "@amap/amap-jsapi-loader";
|
|||
|
|
|
|||
|
|
// let map = null;
|
|||
|
|
|
|||
|
|
// onMounted(() => {
|
|||
|
|
// AMapLoader.load({
|
|||
|
|
// key: "5617ac0ab71c7044bf96edb81b4efc9a", // 申请好的Web端开发者Key,首次调用 load 时必填
|
|||
|
|
// version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
|
|||
|
|
// plugins: [], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
|
|||
|
|
// })
|
|||
|
|
// .then((AMap) => {
|
|||
|
|
// map = new AMap.Map("container", {
|
|||
|
|
// // 设置地图容器id
|
|||
|
|
// viewMode: "3D", // 是否为3D地图模式
|
|||
|
|
// zoom: 11, // 初始化地图级别
|
|||
|
|
// center: [116.397428, 39.90923], // 初始化地图中心点位置
|
|||
|
|
// });
|
|||
|
|
// })
|
|||
|
|
// .catch((e) => {
|
|||
|
|
// console.log(e);
|
|||
|
|
// });
|
|||
|
|
// });
|
|||
|
|
|
|||
|
|
// onUnmounted(() => {
|
|||
|
|
// map?.destroy();
|
|||
|
|
// });
|
|||
|
|
const { proxy } = getCurrentInstance();
|
|||
|
|
|
|||
|
|
const billList = ref([]); //单据列表
|
|||
|
|
const stockList = ref([]); //明细列表
|
|||
|
|
|
|||
|
|
const loading = ref(true);
|
|||
|
|
const detailLoading = ref(false); //加载列表详情
|
|||
|
|
const showSearch = ref(true);
|
|||
|
|
|
|||
|
|
const total = ref(0); //单据
|
|||
|
|
const detailTotal = ref(0); //明细
|
|||
|
|
|
|||
|
|
const printList = ref([]) //要打印的数据列表
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
const rkTime = ref([])
|
|||
|
|
const isExamine = ref(0) //是否需要开启审核 1开启;0不开启
|
|||
|
|
|
|||
|
|
|
|||
|
|
const srcList = ref([])
|
|||
|
|
const personList = ref([]); //理货员下拉数据
|
|||
|
|
const carTypeList = ref([]) //推荐车型下拉数据
|
|||
|
|
// const itemList = ref([])
|
|||
|
|
// const fileList = ref([])
|
|||
|
|
|
|||
|
|
const dialogPicDetailVisible = ref(false)
|
|||
|
|
const multiple = ref(true)
|
|||
|
|
|
|||
|
|
|
|||
|
|
const data = reactive({
|
|||
|
|
fileList:[],
|
|||
|
|
form: {},
|
|||
|
|
//配送单提交的数据
|
|||
|
|
delieryData:{
|
|||
|
|
deliveryTon:0, //重量
|
|||
|
|
goodsSize:0, //体积
|
|||
|
|
items:[]
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
queryParams: {
|
|||
|
|
// keyword:"",
|
|||
|
|
// pageNum: 1,
|
|||
|
|
// pageSize: 10,
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
detailQueryParams:{
|
|||
|
|
pageNum: 1,
|
|||
|
|
pageSize: 200,
|
|||
|
|
id:null,
|
|||
|
|
billNoCk:""
|
|||
|
|
},
|
|||
|
|
rules: {
|
|||
|
|
originName: [{ required: true, message: "起点不能为空", trigger: "change" }],
|
|||
|
|
destName: [{ required: true, message: "终点不能为空", trigger: "change" }],
|
|||
|
|
shipperName: [{ required: true, message: "配送人不能为空", trigger: "change" }],
|
|||
|
|
receiverName: [{ required: true, message: "收货人不能为空", trigger: "change" }],
|
|||
|
|
receiverPhone: [{ required: true, message: "收货人电话不能为空", trigger: "change" }],
|
|||
|
|
deliveryTon: [{ required: true, message: "重量不能为空", trigger: "change" }],
|
|||
|
|
goodsSize: [{ required: true, message: "体积不能为空", trigger: "change" }],
|
|||
|
|
totalKm: [{ required: true, message: "公里数不能为空", trigger: "change" }],
|
|||
|
|
vehicleTypeId: [{ required: true, message: "推荐车型不能为空", trigger: "change" }],
|
|||
|
|
suggestFee: [{ required: true, message: "建议费用不能为空", trigger: "change" }],
|
|||
|
|
deliveryDate:[{ required: true, message: "配送日期不能为空", trigger: "change" }]
|
|||
|
|
},
|
|||
|
|
switchRules:{
|
|||
|
|
toCangku:[{ required: true, message: "目标仓库不能为空", trigger: "change" }],
|
|||
|
|
toPcode:[{ required: true, message: "目标存放位置不能为空", trigger: "change" }],
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
const { queryParams,detailQueryParams,delieryData,rules } = toRefs(data);
|
|||
|
|
//生成配送单弹框
|
|||
|
|
function delieryReceipt(){
|
|||
|
|
|
|||
|
|
dialogPicDetailVisible.value = true
|
|||
|
|
//理货员下拉数据
|
|||
|
|
listUser().then(response=>{
|
|||
|
|
personList.value = response.rows
|
|||
|
|
})
|
|||
|
|
//车型下拉数据
|
|||
|
|
listType({pageNum:1,pageSize:1000}).then(response => {
|
|||
|
|
carTypeList.value = response.rows
|
|||
|
|
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//双击单据,查询明细
|
|||
|
|
function billClick(row){
|
|||
|
|
//console.log(row)
|
|||
|
|
// return
|
|||
|
|
|
|||
|
|
if(row.billNoCk){
|
|||
|
|
detailLoading.value = true;
|
|||
|
|
// detailQueryParams.value.id = row.id
|
|||
|
|
// detailQueryParams.value.billNoCk = row.billNoCk
|
|||
|
|
// detailList()
|
|||
|
|
let detailList = row.detailList
|
|||
|
|
for(let i=0;i<detailList.length;i++){
|
|||
|
|
detailList[i].deliveryTon = (Number(detailList[i].weightKg) * Number(detailList[i].realQty)).toFixed(3);
|
|||
|
|
detailList[i].goodsSize = (Number(detailList[i].volumeM3) * Number(detailList[i].realQty)).toFixed(3);
|
|||
|
|
}
|
|||
|
|
stockList.value = detailList
|
|||
|
|
// detailTotal.value = response.total;
|
|||
|
|
detailLoading.value = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
//查询明细列表数据方法(不查了,改成从数据里直接取了)
|
|||
|
|
function detailList(){
|
|||
|
|
listStock(detailQueryParams.value).then(response => {
|
|||
|
|
// console.log(response)
|
|||
|
|
// return
|
|||
|
|
for(let i=0;i<response.rows.length;i++){
|
|||
|
|
response.rows[i].deliveryTon = (Number(response.rows[i].weightKg) * Number(response.rows[i].realQty)).toFixed(3);
|
|||
|
|
response.rows[i].goodsSize = (Number(response.rows[i].volumeM3) * Number(response.rows[i].realQty)).toFixed(3);
|
|||
|
|
}
|
|||
|
|
stockList.value = response.rows
|
|||
|
|
detailTotal.value = response.total;
|
|||
|
|
detailLoading.value = false;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
function isChukuFun(isChuku){
|
|||
|
|
// scope.row.isChuku==0?"已入库":(scope.row.isChuku==1?"已出库":"审批中")
|
|||
|
|
return "已出库"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
function preview(url){
|
|||
|
|
srcList.value = [url]
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/** 查询库存单据主列表 */
|
|||
|
|
function getList() {
|
|||
|
|
loading.value = true;
|
|||
|
|
// console.log(333333)
|
|||
|
|
listBill(queryParams.value).then(response => {
|
|||
|
|
// console.log(response)
|
|||
|
|
billList.value = response.data;
|
|||
|
|
// total.value = response.total;
|
|||
|
|
loading.value = false;
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
/** 搜索按钮操作 */
|
|||
|
|
function handleQuery() {
|
|||
|
|
|
|||
|
|
if(rkTime.value && rkTime.value.length>0){
|
|||
|
|
queryParams.value.startTime = rkTime.value[0]
|
|||
|
|
queryParams.value.endTime = rkTime.value[1]
|
|||
|
|
}else{
|
|||
|
|
queryParams.value.startTime = ""
|
|||
|
|
queryParams.value.endTime = ""
|
|||
|
|
}
|
|||
|
|
queryParams.value.pageNum = 1;
|
|||
|
|
if(printList.value.length>0){
|
|||
|
|
queryParams.value.ids = printList.value.map( item => item.id )
|
|||
|
|
}
|
|||
|
|
// console.log(queryParams.value)
|
|||
|
|
getList();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** 重置按钮操作 */
|
|||
|
|
function resetQuery() {
|
|||
|
|
proxy.resetForm("queryRef");
|
|||
|
|
rkTime.value = []
|
|||
|
|
// queryParams.value.startTime = ""
|
|||
|
|
// queryParams.value.endTime = ""
|
|||
|
|
handleQuery();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 多选框选中数据
|
|||
|
|
function handleSelectionChange(selection) {
|
|||
|
|
|
|||
|
|
|
|||
|
|
// console.log(selection)
|
|||
|
|
delieryData.value.deliveryTon = 0
|
|||
|
|
delieryData.value.goodsSize = 0
|
|||
|
|
if(selection.length>0){
|
|||
|
|
for(let i=0;i<selection.length;i++){
|
|||
|
|
delieryData.value.deliveryTon += Number(selection[i].deliveryTon)
|
|||
|
|
delieryData.value.goodsSize += Number(selection[i].goodsSize)
|
|||
|
|
selection[i].rkInfoId = selection[i].id
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
delieryData.value.items = selection
|
|||
|
|
// selection.forEach(element => {
|
|||
|
|
// delieryData.value.deliveryTon += Number(element.deliveryTon)
|
|||
|
|
// delieryData.value.goodsSize += Number(element.goodsSize)
|
|||
|
|
|
|||
|
|
// });
|
|||
|
|
}else{
|
|||
|
|
delieryData.value.deliveryTon = 0
|
|||
|
|
delieryData.value.goodsSize = 0
|
|||
|
|
delieryData.value.items = []
|
|||
|
|
}
|
|||
|
|
delieryData.value.deliveryTon = delieryData.value.deliveryTon.toFixed(3) / 1000
|
|||
|
|
delieryData.value.goodsSize = delieryData.value.goodsSize.toFixed(3)
|
|||
|
|
|
|||
|
|
// this.ids = selection.map(item => item.id)
|
|||
|
|
// single.value = selection.length!==1
|
|||
|
|
multiple.value = !selection.length
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
//根据重量、体积、公里数计算车型、费用
|
|||
|
|
function calculateFun(vehicleTypeId){
|
|||
|
|
if(!delieryData.value.deliveryTon || !delieryData.value.goodsSize || !delieryData.value.totalKm){
|
|||
|
|
proxy.$modal.msgWarning("请输入公里数、重量、体积");
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
let info = {
|
|||
|
|
weightTon:0,
|
|||
|
|
volumeM3:0,
|
|||
|
|
distanceKm:0,
|
|||
|
|
vehicleTypeId:vehicleTypeId
|
|||
|
|
}
|
|||
|
|
info.weightTon = delieryData.value.deliveryTon
|
|||
|
|
info.volumeM3 = delieryData.value.goodsSize
|
|||
|
|
info.distanceKm = delieryData.value.totalKm
|
|||
|
|
if(vehicleTypeId){
|
|||
|
|
info.vehicleTypeId = vehicleTypeId
|
|||
|
|
}
|
|||
|
|
calculate(info).then(response=>{
|
|||
|
|
// 检查后端是否返回了错误信息
|
|||
|
|
if(response.data.errorMessage) {
|
|||
|
|
// 如果有错误信息,显示给用户,并清空相关字段
|
|||
|
|
proxy.$modal.msgError(response.data.errorMessage);
|
|||
|
|
if(!vehicleTypeId){
|
|||
|
|
delieryData.value.vehicleTypeId = null;
|
|||
|
|
}
|
|||
|
|
delieryData.value.suggestFee = null;
|
|||
|
|
delieryData.value.vehicleTypeName = null;
|
|||
|
|
} else {
|
|||
|
|
// 没有错误信息,正常处理返回的车型信息
|
|||
|
|
if(!vehicleTypeId){
|
|||
|
|
delieryData.value.vehicleTypeId = response.data.vehicleTypeId;
|
|||
|
|
}
|
|||
|
|
delieryData.value.suggestFee = response.data.suggestFee;
|
|||
|
|
delieryData.value.vehicleTypeName = response.data.vehicleTypeName;
|
|||
|
|
}
|
|||
|
|
// console.log(response)
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
//切换车型
|
|||
|
|
function changeCarType(id){
|
|||
|
|
if(!delieryData.value.totalKm || !delieryData.value.deliveryTon || !delieryData.value.goodsSize){
|
|||
|
|
proxy.$modal.msgWarning("请输入公里数、重量、体积");
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
calculateFun(id)
|
|||
|
|
}
|
|||
|
|
// 取消按钮
|
|||
|
|
function cancel() {
|
|||
|
|
dialogPicDetailVisible.value = false
|
|||
|
|
reset()
|
|||
|
|
}
|
|||
|
|
function reset() {
|
|||
|
|
delieryData.value = {
|
|||
|
|
originName: null,
|
|||
|
|
destName: null,
|
|||
|
|
shipperName: null,
|
|||
|
|
shipperPhone: null,
|
|||
|
|
receiverName: null,
|
|||
|
|
receiverPhone: null,
|
|||
|
|
receiverOrgName: null,
|
|||
|
|
deliveryDate: null,
|
|||
|
|
deliveryTon: null,
|
|||
|
|
goodsSize: null,
|
|||
|
|
totalKm: null,
|
|||
|
|
vehicleTypeId: null,
|
|||
|
|
suggestFee: null,
|
|||
|
|
vehicleTypeName: null
|
|||
|
|
}
|
|||
|
|
// this.resetForm("form")
|
|||
|
|
proxy.resetForm("queryRef");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function submitForm() {
|
|||
|
|
proxy.$refs["form"].validate(valid => {
|
|||
|
|
// console.log(delieryData.value)
|
|||
|
|
// return
|
|||
|
|
if (valid) {
|
|||
|
|
addDelivery(delieryData.value).then(response => {
|
|||
|
|
proxy.$modal.msgSuccess("操作成功")
|
|||
|
|
dialogPicDetailVisible.value = false
|
|||
|
|
getList()
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//数据列表
|
|||
|
|
getList();
|
|||
|
|
|
|||
|
|
</script>
|
|||
|
|
<style scoped>
|
|||
|
|
.el-table .warning-row {
|
|||
|
|
--el-table-tr-bg-color: var(--el-color-warning-light-9);
|
|||
|
|
}
|
|||
|
|
.el-table .success-row {
|
|||
|
|
--el-table-tr-bg-color: var(--el-color-success-light-9);
|
|||
|
|
}
|
|||
|
|
.titleBox{
|
|||
|
|
text-align: center;
|
|||
|
|
}
|
|||
|
|
.topBox{
|
|||
|
|
margin-bottom: 10px;
|
|||
|
|
display: flex;
|
|||
|
|
}
|
|||
|
|
.bottomBox{
|
|||
|
|
margin-top: 20px;
|
|||
|
|
}
|
|||
|
|
.oneLineBox{
|
|||
|
|
display: flex;
|
|||
|
|
}
|
|||
|
|
.everyBox{
|
|||
|
|
width: 30%;
|
|||
|
|
}
|
|||
|
|
.examine{
|
|||
|
|
margin-top: 20px;
|
|||
|
|
height: 100px;
|
|||
|
|
background-color: #ededed;
|
|||
|
|
padding: 20px 0 0 20px;
|
|||
|
|
border-radius: 10px;
|
|||
|
|
}
|
|||
|
|
.billBox{
|
|||
|
|
font-weight: bold;
|
|||
|
|
}
|
|||
|
|
</style>
|
|||
|
|
|