wangyi
2026-02-28 a1cc3f87d24ae2a19295c7b38faa17228cd863ec
src/views/logistics/transportGPS/Add_Edit_WL_YayBill.vue
@@ -21,7 +21,7 @@
                            <el-col :span="6">
                                <el-form-item label="日期" prop="HDate">
                                    <el-date-picker v-model="form.HDate" type="date" placeholder="选择日期"
                                        value-format="yyyy-MM-dd" disabled> </el-date-picker>
                                        format="yyyy-MM-dd" disabled> </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
@@ -177,36 +177,20 @@
                            <el-col :span="6">
                                <el-form-item label="要求提货日期" prop="HDateForRequestedPick">
                                    <el-date-picker v-model="form.HDateForRequestedPick" type="date"
                                        placeholder="选择要求提货日期" value-format="yyyy-MM-dd">
                                        placeholder="选择要求提货日期" format="yyyy-MM-dd hh:mm:ss">
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="承运商确认日期" prop="HDate_CarrierSure">
                                    <el-date-picker v-model="form.HDate_CarrierSure" type="date" placeholder="选择承运商确认日期"
                                        value-format="yyyy-MM-dd">
                                        format="yyyy-MM-dd hh:mm:ss" disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="分配司机日期" prop="HDate_AllocationDriver">
                                    <el-date-picker v-model="form.HDate_AllocationDriver" type="date"
                                        placeholder="选择分配司机日期" value-format="yyyy-MM-dd">
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="要求到达日期" prop="HDataForRequestedArrived">
                                    <el-date-picker v-model="form.HDataForRequestedArrived" type="date"
                                        placeholder="选择要求到达日期" value-format="yyyy-MM-dd">
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                        </el-row>
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="物流状态" prop="HCarryStatus">
                                    <el-select v-model="form.HCarryStatus" placeholder="请选择物流状态">
                                    <el-select v-model="form.HCarryStatus" placeholder="请选择物流状态" disabled>
                                        <el-option label="申请中" value="1"></el-option>
                                        <el-option label="已审核" value="2"></el-option>
                                        <el-option label="承运商确认" value="3"></el-option>
@@ -219,9 +203,27 @@
                                    </el-select>
                                </el-form-item>
                            </el-col>
                        </el-row>
                    </el-tab-pane>
                    <el-tab-pane label="承运商信息" name="second">
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="分配司机日期" prop="HDate_AllocationDriver">
                                    <el-date-picker v-model="form.HDate_AllocationDriver" type="date"
                                        placeholder="选择分配司机日期" format="yyyy-MM-dd hh:mm:ss" disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="要求到达日期" prop="HDataForRequestedArrived">
                                    <el-date-picker v-model="form.HDataForRequestedArrived" type="date"
                                        placeholder="选择要求到达日期" format="yyyy-MM-dd hh:mm:ss">
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="车辆" prop="HCarName">
                                    <el-input v-model="form.HCarName" placeholder="请输入车辆">
                                    <el-input v-model="form.HCarName" placeholder="请输入车辆" disabled>
                                        <el-button slot="append" icon="el-icon-search"
                                            @click="openDataDialog(14)"></el-button>
                                    </el-input>
@@ -229,52 +231,80 @@
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="司机" prop="HDriverName">
                                    <el-input v-model="form.HDriverName" placeholder="请输入司机">
                                    <el-input v-model="form.HDriverName" placeholder="请输入司机" disabled>
                                        <el-button slot="append" icon="el-icon-search"
                                            @click="openDataDialog(15)"></el-button>
                                    </el-input>
                                </el-form-item>
                            </el-col>
                        </el-row>
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="到厂确认人" prop="HSurer_Arrive">
                                    <el-input v-model="form.HSurer_Arrive" placeholder="请输入到厂确认人" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="到厂确认时间" prop="HDate_Arrive">
                                    <el-date-picker v-model="form.HDate_Arrive" type="date" format="yyyy-MM-dd HH:mm:ss"
                                        placeholder="选择到厂确认时间" disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="提货确认人" prop="HSurer_Pick">
                                    <el-input v-model="form.HSurer_Pick" placeholder="请输入提货确认" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="提货确认时间" prop="HDate_Pick">
                                    <el-date-picker v-model="form.HDate_Pick" type="date" format="yyyy-MM-dd hh:mm:ss"
                                        placeholder="选择提货确认时间" disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                        </el-row>
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="出厂运输确认人" prop="HSurer_Trans">
                                    <el-input v-model="form.HSurer_Trans" placeholder="请输入到厂确认人" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="出厂运输确认时间" prop="HDate_Trans">
                                    <el-date-picker v-model="form.HDate_Trans" type="date" format="yyyy-MM-dd hh:mm:ss"
                                        placeholder="选择到出厂运输确认时间" disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="签收确认人" prop="HSurer_Receive">
                                    <el-input v-model="form.HSurer_Receive" placeholder="请输入签收确认人" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="签收确认时间" prop="HDate_Receive">
                                    <el-date-picker v-model="form.HDate_Receive" type="date"
                                        format="yyyy-MM-dd hh:mm:ss" placeholder="选择签收确认时间" disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                        </el-row>
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="核算人" prop="HSurer_Accounting">
                                    <el-input v-model="form.HSurer_Accounting" placeholder="请输入核算人" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="核算时间" prop="HDate_Accounting">
                                    <el-date-picker v-model="form.HDate_Accounting" type="date"
                                        format="yyyy-MM-dd hh:mm:ss" placeholder="选择核算时间" disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                        </el-row>
                    </el-tab-pane>
                    <!-- <el-tab-pane label="附件信息" name="second">
                        <div style="padding: 10px;">
                            <el-upload class="upload-demo" ref="upload" action="" :on-change="handleFileChange"
                                :show-file-list="false" :on-remove="handleFileRemove" :file-list="uploadFiles"
                                :auto-upload="false" multiple>
                                <el-button slot="trigger" size="small" type="primary">选择文件</el-button>
                                <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload"
                                    :loading="uploadLoading">上传文件</el-button>
                            </el-upload>
                            <el-table :data="uploadFiles" style="width: 100%" border>
                                <el-table-column prop="name" label="文件名">
                                </el-table-column>
                                <el-table-column prop="type" label="文件类型">
                                    <template slot-scope="scope">
                                        {{ scope.row.name.substring(scope.row.name.lastIndexOf('.') + 1).toLowerCase()
                                        }}
                                    </template>
</el-table-column>
<el-table-column prop="size" label="大小">
    <template slot-scope="scope">
                                        {{ (scope.row.size / 1024).toFixed(1) + ' KB' }}
                                    </template>
</el-table-column>
<el-table-column prop="status" label="状态">
    <template slot-scope="scope">
                                        <span v-if="scope.row.status == 'ready'">未上传</span>
                                    </template>
</el-table-column>
<el-table-column label="操作" width="180">
    <template slot-scope="scope">
                                        <el-button size="mini" type="primary"
                                            @click="flieUpload(scope.row)">上传</el-button>
                                        <el-button size="mini" type="danger" @click="deleteFile(index)">删除</el-button>
                                    </template>
</el-table-column>
</el-table>
</div>
</el-tab-pane> -->
                    <el-tab-pane label="制单信息" name="third">
                        <el-row>
                            <el-col :span="6">
@@ -340,72 +370,7 @@
                                </el-form-item>
                            </el-col>
                        </el-row>
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="到厂确认人" prop="HSurer_Arrive">
                                    <el-input v-model="form.HSurer_Arrive" placeholder="请输入到厂确认人" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="到厂确认时间" prop="HDate_Arrive">
                                    <el-date-picker v-model="form.HDate_Arrive" type="date" placeholder="选择到厂确认时间"
                                        disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="提货确认人" prop="HSurer_Pick">
                                    <el-input v-model="form.HSurer_Pick" placeholder="请输入提货确认" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="提货确认时间" prop="HDate_Pick">
                                    <el-date-picker v-model="form.HDate_Pick" type="date" placeholder="选择提货确认时间"
                                        disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                        </el-row>
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="出厂运输确认人" prop="HSurer_Trans">
                                    <el-input v-model="form.HSurer_Trans" placeholder="请输入到厂确认人" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="出厂运输确认时间" prop="HDate_Trans">
                                    <el-date-picker v-model="form.HDate_Trans" type="date" placeholder="选择到出厂运输确认时间"
                                        disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="签收确认人" prop="HSurer_Receive">
                                    <el-input v-model="form.HSurer_Receive" placeholder="请输入签收确认人" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="签收确认时间" prop="HDate_Receive">
                                    <el-date-picker v-model="form.HDate_Receive" type="date" placeholder="选择签收确认时间"
                                        disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                        </el-row>
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="核算人" prop="HSurer_Accounting">
                                    <el-input v-model="form.HSurer_Accounting" placeholder="请输入核算人" disabled />
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="核算时间" prop="HDate_Accounting">
                                    <el-date-picker v-model="form.HDate_Accounting" type="date" placeholder="选择核算时间"
                                        disabled>
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                        </el-row>
                    </el-tab-pane>
                </el-tabs>
                <el-card class="box-card">
@@ -470,7 +435,11 @@
                                </template>
                            </el-table-column>
                            <el-table-column align="center" label="包装容器数量" width="120">
                                <template slot-scope="scope">{{ scope.row.HMouldQty }}</template>
                                <template slot-scope="scope">
                                    <el-input-number v-model="scope.row.HMouldQty" :min="0" style="width: 90px;"
                                        controls-position="right"
                                        @change="changeHMouldQty(scope.row)"></el-input-number>
                                </template>
                            </el-table-column>
                            <el-table-column align="center" label="物料数量" width="120">
                                <template slot-scope="scope">
@@ -485,9 +454,9 @@
                                </template>
                            </el-table-column>
                            <el-table-column align="center" label="零单占用体积" width="120">
                                <template slot-scope="scope">
                                    <el-input-number v-model="scope.row.HScatteredVolume" :min="0" style="width: 90px;"
                                        controls-position="right"></el-input-number>
                                <template slot-scope="scope">{{ scope.row.HScatteredVolume }}
                                    <!-- <el-input-number v-model="scope.row.HScatteredVolume" :min="0" style="width: 90px;"
                                        controls-position="right"></el-input-number> -->
                                </template>
                            </el-table-column>
                            <el-table-column align="center" label="操作" width="55" fixed="right">
@@ -817,7 +786,7 @@
                        this.form.HSurer_Accounting = data.核算人
                        this.form.HDate_Accounting = data.核算时间
                    }
                    this.form.HOrgID = data.HOrgID.toString()
                    this.form.HOrgID = data.HOrgID
                    this.form.HExRate = !data.汇率 ? 0 : data.汇率
                    this.form.HMainSourceInterID = data.HMainSourceInterID
                    this.form.HMainSourceEntryID = data.HMainSourceEntryID
@@ -839,7 +808,7 @@
                    this.form.HCarTypeName = data.车型名称
                    this.form.HCarTypeMaxVolume = data.车型最大容积
                    this.form.HTotalVolume = data.总体积
                    this.form.HLoadingRate = data.装载率
                    this.form.HLoadingRate = (data.装载率 * 100).toFixed(2) + '%'
                    this.form.HContractTransportInterID = data.承运合同ID
                    this.form.HContractTransportEntryID = data.承运合同子ID
                    this.form.HContractTransportBillNo = data.承运合同单据号
@@ -976,7 +945,7 @@
                this.gyCarShow = true
                this.openData = true
            } else if (num == 15) {
                this.dialogTitle = '车辆列表'
                this.dialogTitle = '司机列表'
                this.gyDriverShow = true
                this.openData = true
            } else if (num == 16) {
@@ -1063,12 +1032,14 @@
                this.gyDriverShow = false
                this.openData = false
            } else if (num == 16) {
                console.log(deptRow)
                this.form.HContractTransportBillNo = deptRow.单据号
                this.form.HContractTransportInterID = deptRow.HInterID
                this.form.HContractTransportEntryID = deptRow.HInterID
                this.form.HDistance = deptRow.距离
                this.form.HTransportTimes = deptRow.运输时效
                this.form.HTransportTyep = deptRow.运输类型
                this.form.HTransType = deptRow.运输类型
                this.form.HSSID = deptRow.结算方式
                this.form.HSSName = deptRow.结算方式名称
                this.form.HCurID = deptRow.币别
@@ -1089,7 +1060,7 @@
                this.editData[this.zbIndex].HMouldHeight = deptRow.高度
                this.editData[this.zbIndex].HMouldFoldHeight = deptRow.折叠高度
                this.editData[this.zbIndex].HSNP = deptRow.容器包装产品数量
                this.editData[this.zbIndex].HVolume = (this.editData[this.zbIndex].HMouldLength * this.editData[this.zbIndex].HMouldWidth * this.editData[this.zbIndex].HMouldHeight).toFixed(2) - 0
                this.editData[this.zbIndex].HVolume = (this.editData[this.zbIndex].HMouldLength * this.editData[this.zbIndex].HMouldWidth * this.editData[this.zbIndex].HMouldHeight * this.editData[this.zbIndex].HMouldQty).toFixed(2) - 0
                this.form.HTotalVolume = 0
                this.editData.map(item => {
                    this.form.HTotalVolume = item.HVolume + this.form.HTotalVolume
@@ -1161,6 +1132,9 @@
                this.form.HMainSourceEntryID = deptRow[0]["hsubid"]
                this.form.HMainSourceBillType = deptRow[0]["HBillType"]
                this.form.HMainSourceBillNo = deptRow[0]["单据号"]
                this.form.HCurName = deptRow[0]["币别"]
                this.form.HCurID = deptRow[0]["HCurID"]
                this.form.HExRate = deptRow[0]["汇率"]
                // 检查是否所有记录属于同一客户
                for (var i = 0; i < deptRow.length; i++) {
                    if (deptRow[i]["HCusID"] != this.form.HCusID) {
@@ -1518,6 +1492,12 @@
                this.editData = editData.filter(function (item) {
                    return checkedSysZb.indexOf(item.index) == -1
                });
                this.form.HTotalVolume = 0
                if (this.editData.length > 0) {
                    this.editData.map(item => {
                        this.form.HTotalVolume = item.HVolume + this.form.HTotalVolume
                    })
                }
            }
        },
        //#endregion
@@ -1665,7 +1645,22 @@
            });
        },
        //#endregion
        // 包装容器数量计算体积
        changeHMouldQty(row) {
            this.zbIndex = row.index - 1
            let Volume = ((this.editData[this.zbIndex].HMouldLength * this.editData[this.zbIndex].HMouldWidth * this.editData[this.zbIndex].HMouldHeight * this.editData[this.zbIndex].HMouldQty).toFixed(2)) - 0
            if (!Volume) {
                this.editData[this.zbIndex].HVolume = 0
            } else {
                this.editData[this.zbIndex].HVolume = Volume
            }
            this.form.HTotalVolume = 0
            this.editData.map(item => {
                this.form.HTotalVolume = item.HVolume + this.form.HTotalVolume
            })
            this.calculateLoadingRate(parseFloat(this.form.HTotalVolume || 0));
        },
        //#endregion
        // 计算装载率函数
        calculateLoadingRate(totalVolume) {
            var maxVolume = parseFloat(this.form.HCarTypeMaxVolume) || 0;
@@ -1690,7 +1685,6 @@
                    }
                }
            });
            tableData.forEach(function (row) {
                if (row.HSourceInterID && row.HSourceEntryID) {
                    var key = row.HSourceInterID + '_' + row.HSourceEntryID;
@@ -1728,17 +1722,29 @@
                }
            }
            if (exceedSources.length > 0) {
                let num = null
                var message = '物料数量之和超过源单数量:';
                exceedSources.forEach(function (item, index) {
                    num = item.sourceQty
                    message += (index + 1) + '. 源单号:' + item.sourceBillNo +
                        ',源单数量:' + item.sourceQty +
                        ',当前数量:' + item.currentTotal;
                });
                });
                this.$nextTick(() => {
                    this.editData[selRow.index - 1].HQty = num
                    this.changeHMouldQty(selRow)
                })
                this.$modal.msgError(message);
                return true; // 表示有超出
            }
            this.editData[selRow.index-1].HMouldQty = Math.ceil(selRow.HQty / this.editData[selRow.index-1].HSNP)
            let MouldQty = Math.ceil(selRow.HQty / this.editData[selRow.index - 1].HSNP)
            if (!MouldQty||MouldQty=='Infinity') {
                this.editData[selRow.index - 1].HMouldQty = 0
            } else {
                this.editData[selRow.index - 1].HMouldQty = MouldQty
            }
            this.changeHMouldQty(selRow)
            return false; // 表示没有超出
        },
        //#region 附件上传相关方法