用车需求合并,拆分

This commit is contained in:
王帅 2025-06-10 10:18:27 +08:00
parent a75b06fc74
commit 0b13636e6f
8 changed files with 343 additions and 31 deletions

View File

@ -71,6 +71,11 @@
<a-input-number v-model="model.validity" placeholder="请输入时效" style="width: 100%" ></a-input-number>
</a-form-model-item>
</a-col>
<a-col :span="8">
<a-form-model-item label="失效日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="failureTime">
<j-date placeholder="请选择失效日期" v-model="model.failureTime" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="8">
<a-form-model-item label="运输方式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="transportMode">
<a-input v-model="model.transportMode" placeholder="请输入运输方式" ></a-input>
@ -138,6 +143,8 @@
carType :[{required: true, message: '请输入车型!'}],
supplierCode :[{required: true, message: '请输入供应商编码!'}],
effectiveDate :[{required: true, message: '请选择生效日期!'}],
failureTime :[{required: true, message: '请选择失效日期!'}],
effectiveDate :[{required: true, message: '请选择生效日期!'}],
validity :[{required: true, message: '请输入时效!'}],
tandardPrice :[{required: true, message: '请输入定标价格!'}],
},

View File

@ -140,11 +140,11 @@
<a>预约入厂</a>
</a-popconfirm>
</a-menu-item> -->
<a-menu-item v-has="'vehicleinout:vehicleInOut:handleConfirm1'">
<!-- <a-menu-item v-has="'vehicleinout:vehicleInOut:handleConfirm1'">
<a-popconfirm title="确定对接人确认吗?" @confirm="() => handleConfirm(record.id, '2')">
<a>对接人确认</a>
</a-popconfirm>
</a-menu-item>
</a-menu-item> -->
<a-menu-item v-has="'vehicleinout:vehicleInOut:handleConfirm3'">
<a-popconfirm title="确定入厂审核吗?" @confirm="() => handleConfirm(record.id, '3')">
<a>入厂审核</a>

View File

@ -42,7 +42,7 @@
<a-table
ref="table"
size="middle"
:scroll="{ y: 300, x:528 }"
:scroll="{ y: 300, x:700 }"
bordered
rowKey="id"
:columns="columns"

View File

@ -273,10 +273,10 @@
return;
}
let hasEven = this.selectionRows.some(item => {
return item.shipType == '0';
return item.shipType == '2';
});
if (hasEven) {
this.$message.warning("数据中含有整车数据!");
this.$message.warning("数据中含有快递数据!");
return;
}
let hasEven1 = this.selectionRows.some(item => {

View File

@ -68,7 +68,7 @@
</a-col>
<a-col :span="8" v-if="model.id">
<a-form-model-item label="当前状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="currentStatus">
<j-dict-select-tag placeholder="请选择当前状态" v-model="model.currentStatus" dictCode="current_status" disabled></j-dict-select-tag>
<j-dict-select-tag placeholder="请选择当前状态" v-model="model.currentStatus" dictCode="current_status" ></j-dict-select-tag>
</a-form-model-item>
</a-col>
<a-col :span="8">

View File

@ -0,0 +1,190 @@
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- table区域-begin -->
<div>
<a-table
ref="table"
size="middle"
:scroll="{ y: 300, x:1100 }"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="false"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text,record">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</template>
</a-table>
</div>
</a-card>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { postAction,getAction } from '@/api/manage'
export default {
name: 'VehicleDemandHisList',
mixins:[JeecgListMixin, mixinDevice],
components: {
},
data () {
return {
description: '用车需求历史管理页面',
// 表头
columns: [
{
title: '#',
dataIndex: '',
key:'rowIndex',
width:60,
align:"center",
customRender:function (t,r,index) {
return parseInt(index)+1;
}
},
{
title:'发货日期',
align:"center",
dataIndex: 'shipDate',
customRender:function (text) {
return !text?"":(text.length>10?text.substr(0,10):text)
}
},
{
title:'到货日期',
align:"center",
dataIndex: 'deliveryDate'
},
{
title:'发货类型',
align:"center",
dataIndex: 'shipType_dictText',
},
{
title:'预计装车总托数',
align:"center",
dataIndex: 'preTotalPallets',
},
{
title:'实际装车总托数',
align:"center",
dataIndex: 'totalPallets',
},
{
title:'总发货数量',
align:"center",
dataIndex: 'totalShips',
},
{
title:'取货地点',
align:"center",
dataIndex: 'pickUpHub',
},
{
title:'送货地点',
align:"center",
dataIndex: 'deliveryAddress',
},
{
title:'用车需求编号',
align:"center",
dataIndex: 'vdNo',
},
{
title:'当前状态',
align:"center",
dataIndex: 'currentStatus_dictText',
},
],
url: {
list: "/vehicledemanddetail/vehicleDemandDetail/list",
delete: "/vehicledemanddetail/vehicleDemandDetail/delete",
deleteBatch: "/vehicledemanddetail/vehicleDemandDetail/deleteBatch",
exportXlsUrl: "/vehicledemanddetail/vehicleDemandDetail/exportXls",
importExcelUrl: "vehicledemanddetail/vehicleDemandDetail/importExcel",
getByVdNo: "vehicledemanddetail/vehicleDemandDetail/getByVdNo",
},
dictOptions:{},
superFieldList:[],
}
},
created() {
this.getSuperFieldList();
},
computed: {
importExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
},
methods: {
getByVdNo(vdNo){
this.loading = true;
getAction(this.url.getByVdNo,{vdNo: vdNo}).then(res => {
if (res.success) {
this.dataSource = res.result.records;
} else {
this.$message.warning(res.message)
}
}).finally(()=>{
this.loading = false;
})
},
loadData(){},
initDictConfig(){
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'currentStatus',text:'currentStatus'})
fieldList.push({type:'string',value:'deliveryArea',text:'deliveryArea'})
fieldList.push({type:'date',value:'shipDate',text:'shipDate'})
fieldList.push({type:'int',value:'totalShips',text:'totalShips'})
fieldList.push({type:'date',value:'deliveryDate',text:'deliveryDate'})
fieldList.push({type:'string',value:'shipType',text:'shipType'})
fieldList.push({type:'string',value:'vdNo',text:'vdNo'})
fieldList.push({type:'string',value:'deliveryAddress',text:'deliveryAddress'})
fieldList.push({type:'string',value:'pickUpHub',text:'pickUpHub'})
fieldList.push({type:'string',value:'preTotalPallets',text:'preTotalPallets'})
fieldList.push({type:'int',value:'totalPallets',text:'totalPallets'})
fieldList.push({type:'string',value:'pn',text:'pn'})
this.superFieldList = fieldList
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>

View File

@ -43,6 +43,8 @@
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a-button @click="handleAdd" type="primary" icon="plus" style="margin-left: 8px">新增</a-button>
<a-button @click="handleMerge" type="primary" style="margin-left: 8px">合并</a-button>
<a-button @click="handleUnbind" type="primary" style="margin-left: 8px">拆分</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('用车需求')" style="margin-left: 8px">导出</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
@ -87,8 +89,10 @@
:dataSource="dataSource"
:pagination="false"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio'}"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
:customRow="rowClick"
:rowClassName="rowClassName"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
@ -111,7 +115,7 @@
</a-button>
</template>
<span slot="action" slot-scope="text, record">
<span slot="action" slot-scope="text, record" style="background-color: transparent !important;">
<a @click="carCount(record)">用车计算</a>
<a-divider type="vertical" />
@ -137,8 +141,9 @@
<a-row :gutter="24" style="margin-top: 15px;">
<a-col :span="11">
<div class="bordered-container">
<div class="title">用车需求物料明细</div>
<DeliveryDemand ref="deliveryDemand"/>
<div class="title">用车需求历史</div>
<!-- <DeliveryDemand ref="deliveryDemand"/> -->
<VehicleDemandHisList ref="vehicleDemandHisList"/>
</div>
</a-col>
<a-col :span="13" style="margin-right: -30px;">
@ -156,12 +161,13 @@
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { postAction } from '@/api/manage'
import { postAction,getAction } from '@/api/manage'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import moment from 'moment'
import VehicleDemandModal from './modules/VehicleDemandModal'
import DeliveryDemand from '../deliverydemand/DeliveryDemand.vue';
import VehicleDemandCountList from '../vehicledemandcount/VehicleDemandCountList.vue'
import VehicleDemandHisList from './VehicleDemandHisList'
export default {
name: 'VehicleDemandList',
@ -169,7 +175,8 @@
components: {
VehicleDemandModal,
DeliveryDemand,
VehicleDemandCountList
VehicleDemandCountList,
VehicleDemandHisList
},
data () {
return {
@ -178,6 +185,7 @@
shipDate_begin: moment().format('YYYY-MM-DD'),
shipDate_end: moment().format('YYYY-MM-DD'),
},
click: '',
// 表头
columns: [
{
@ -199,21 +207,32 @@
return !text?"":(text.length>10?text.substr(0,10):text)
}
},
{
title:'到货日期',
align:"center",
dataIndex: 'deliveryDate'
},
{
title:'发货类型',
align:"center",
dataIndex: 'shipType_dictText',
// width: 100,
},
{
title:'料号',
align:"center",
dataIndex: 'pn',
// width: 100,
},
// {
// title:'料号',
// align:"center",
// dataIndex: 'pn',
// // width: 100,
// },
{
title:'预计装车总托数',
align:"center",
dataIndex: 'preTotalPallets',
// width: 120,
},
{
title:'实际装车总托数',
align:"center",
dataIndex: 'totalPallets',
// width: 120,
},
@ -229,15 +248,15 @@
// dataIndex: 'deliveryArea'
// },
{
title:'货地点',
title:'货地点',
align:"center",
dataIndex: 'deliveryAddress',
dataIndex: 'pickUpHub',
// width: 80,
},
{
title:'取货仓库',
title:'送货地点',
align:"center",
dataIndex: 'pickUpHub',
dataIndex: 'deliveryAddress',
// width: 80,
},
{
@ -246,6 +265,11 @@
dataIndex: 'vdNo',
// width: 120,
},
{
title:'当前状态',
align:"center",
dataIndex: 'currentStatus_dictText',
},
{
title: '操作',
dataIndex: 'action',
@ -262,7 +286,8 @@
exportXlsUrl: "/vehicle_demand/vehicleDemand/exportXls",
importExcelUrl: "vehicle_demand/vehicleDemand/importExcel",
carCount: "vehicle_demand/vehicleDemand/carCount",
handleMerge: "vehicle_demand/vehicleDemand/handleMerge",
handleUnbind: "vehicle_demand/vehicleDemand/handleUnbind",
},
dictOptions:{},
superFieldList:[],
@ -287,13 +312,88 @@
}
})
},
onSelectChange(selectedRowKeys, selectionRows) {
this.selectedRowKeys = selectedRowKeys;
this.selectionRows = selectionRows;
let vdNo = selectionRows[0].vdNo;
this.$refs.deliveryDemand.getByVdNo(vdNo);
// onSelectChange(selectedRowKeys, selectionRows) {
// this.selectedRowKeys = selectedRowKeys;
// this.selectionRows = selectionRows;
// let vdNo = selectionRows[0].vdNo;
// this.$refs.deliveryDemand.getByVdNo(vdNo);
// this.$refs.vehicleDemandCountList.getByVdNo(vdNo);
// },
rowClick(record){
return {
on: {
click:() => {
this.click = record.id
let vdNo = record.vdNo
this.$refs.vehicleDemandHisList.getByVdNo(vdNo);
this.$refs.vehicleDemandCountList.getByVdNo(vdNo);
},
}
}
},
rowClassName(record){
// if(record.id == this.click){
// return 'clicked-row'
// }
},
handleMerge(){
if (this.selectedRowKeys.length <= 0) {
this.$message.warning("请至少选择一条记录!");
return;
}
postAction(this.url.handleMerge, this.selectedRowKeys).then(res => {
if (res.success){
this.$message.success(res.message);
//清空列表选中
this.onClearSelected()
this.loadData();
}else {
this.$message.error(res.message);
}
})
},
handleUnbind(){
if (this.selectedRowKeys.length <= 0) {
this.$message.warning("请至少选择一条记录!");
return;
}
postAction(this.url.handleUnbind, this.selectedRowKeys).then(res => {
if (res.success){
this.$message.success(res.message);
//清空列表选中
this.onClearSelected()
this.loadData();
}else {
this.$message.error(res.message);
}
})
},
loadData(arg) {
if(!this.url.list){
this.$message.error("请设置url.list属性!")
return
}
//加载数据 若传入参数1则加载第一页的内容
if (arg === 1) {
this.ipagination.current = 1;
}
var params = this.getQueryParams();//查询条件
this.loading = true;
getAction(this.url.list, params).then((res) => {
if (res.success) {
this.dataSource = res.result.records||res.result;
if(this.dataSource.length > 0){
let vdNo = this.dataSource[0].vdNo
this.$refs.vehicleDemandHisList.getByVdNo(vdNo);
this.$refs.vehicleDemandCountList.getByVdNo(vdNo);
}
}else{
this.$message.warning(res.message)
}
}).finally(() => {
this.loading = false
})
},
initDictConfig(){
},
getSuperFieldList(){
@ -339,4 +439,14 @@
font-size: 12px;
padding: 0 10px;
}
::v-deep .clicked-row {
background-color: #507CD1 !important;
color: #fff;
transition: all 0.2s ease-in-out;
}
/* ::v-deep table tbody tr:hover>td {
background-color: transparent !important;
} */
</style>

View File

@ -30,8 +30,8 @@
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="预计装车总托数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totalPallets">
<a-input-number v-model="model.totalPallets" placeholder="请输入预计装车总托数" style="width: 100%" />
<a-form-model-item label="预计装车总托数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="preTotalPallets">
<a-input-number v-model="model.preTotalPallets" placeholder="请输入预计装车总托数" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
@ -39,6 +39,11 @@
<a-input v-model="model.vdNo" placeholder="请输入用车需求编号" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="实际装车总托数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totalPallets">
<a-input-number v-model="model.totalPallets" placeholder="请输入实际装车总托数" style="width: 100%" />
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>