陈婷婷
8 天以前 f57543e1704e90460474c6170578e00206fca052
运单列表添加分配车辆和司机
3个文件已修改
1个文件已添加
1494 ■■■■■ 已修改文件
src/views/component/printList/hBarPlanPrint.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/logistics/transportGPS/Add_Edit_WL_YayBill.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/logistics/transportGPS/WL_YayBill copy.vue 1323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/logistics/transportGPS/WL_YayBill.vue 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/component/printList/hBarPlanPrint.vue
@@ -71,6 +71,9 @@
              ) AS t
              GROUP BY CEILING(CAST(t.row_num AS FLOAT) / 2)
              ORDER BY orderid;`;
      } else if (this.$route.query.Type == "Cg_ContractTransportBillMainList") {
        sql = "exec h_p_Cg_ContractTransportBillMainList " +
          this.handleMessage.linterid.toString();
      }
      axios
        .get(this.$baseUrl + "/CommonModel/searchMethod", {
src/views/logistics/transportGPS/Add_Edit_WL_YayBill.vue
@@ -38,15 +38,14 @@
                                <el-col :span="6"></el-col>
                            </el-row>
                            <el-row>
                                <el-col :span="6">
                                <!-- <el-col :span="6">
                                    <el-form-item label="客户" prop="HCusName">
                                        <el-input v-model="form.HCusName" placeholder="请输入客户">
                                            <el-button slot="append" icon="el-icon-search"
                                                @click="openDataDialog(7)"></el-button>
                                        </el-input>
                                    </el-form-item>
                                </el-col>
                                </el-col> -->
                                <el-col :span="6">
                                    <el-form-item label="币别" prop="HCurName">
                                        <el-input v-model="form.HCurName" placeholder="请输入币别" />
@@ -166,7 +165,7 @@
                        </div>
                        <!-- 第三块:提货地址、到货地址、组织、要求提货日期、承运商确认日期、物流状态 -->
                        <div class="form-group">
                            <el-row>
                            <!--  <el-row>
                                <el-col :span="6">
                                    <el-form-item label="提货地址" prop="HPickAddr">
                                        <el-input v-model="form.HPickAddr" placeholder="请输入提货地址" />
@@ -177,7 +176,7 @@
                                        <el-input v-model="form.HArriverAddr" placeholder="请输入到货地址" />
                                    </el-form-item>
                                </el-col>
                            </el-row>
                            </el-row>-->
                            <el-row>
                                <el-col :span="6">
                                    <el-form-item label="要求到达日期" prop="HDataForRequestedArrived">
@@ -426,6 +425,17 @@
                            <el-table-column align="center" label="源单单据号" width="120">
                                <template slot-scope="scope">
                                    <span>{{ scope.row.HSourceBillNo }}</span>
                                </template>
                            </el-table-column>
                            <el-table-column align="center" label="客户" prop="HCusName" width="120" />
                            <el-table-column align="center" label="提货地址" width="120">
                                <template slot-scope="scope">
                                    <el-input v-model="scope.row.HPickAddr" placeholder="请输入提货地址" />
                                </template>
                            </el-table-column>
                            <el-table-column align="center" label="到货地址" width="120">
                                <template slot-scope="scope">
                                    <el-input v-model="scope.row.HArriverAddr" placeholder="请输入到货地址" />
                                </template>
                            </el-table-column>
                            <el-table-column align="center" label="物料代码" width="120">
@@ -853,14 +863,14 @@
                    this.form.HInnerBillNo = data.内部单据号
                    this.form.HCarrierID = data.承运商ID
                    this.form.HCarrierName = data.承运商名称
                    this.form.HCusID = data.HCusID
                    this.form.HCusName = data.客户名称
                    // this.form.HCusID = data.HCusID
                    // this.form.HCusName = data.客户名称
                    this.form.HBeginAddr = data.始发地
                    this.form.HBeginAddrName = data.始发地名称
                    this.form.HEndAddr = data.目的地
                    this.form.HEndAddrName = data.目的地名称
                    this.form.HPickAddr = data.提货地址
                    this.form.HArriverAddr = data.到货地址
                    // this.form.HPickAddr = data.提货地址
                    // this.form.HArriverAddr = data.到货地址
                    this.form.HTransType = data.运输方式
                    this.form.HCarTypeID = data.车型ID
                    this.form.HCarTypeName = data.车型名称
@@ -904,6 +914,10 @@
                                "HSourceInterID": result.data[i].源单主内码,
                                "HSourceEntryID": result.data[i].源单子内码,
                                "HSourceBillNo": result.data[i].源单单据,
                                "HCusID": result.data[i].HCusID,
                                "HCusName": result.data[i].客户名称,
                                "HPickAddr": result.data[i].提货地址,
                                "HArriverAddr": result.data[i].到货地址,
                                "HMaterID": result.data[i].HMaterID,
                                "HMaterNumber": result.data[i].物料代码,
                                "HMaterName": result.data[i].物料名称,
@@ -1182,18 +1196,18 @@
        async processSourceDataAsync(deptRow) {
            try {
                // 设置客户信息
                if (!this.form.HCusID && deptRow.length > 0) {
                    this.form.HCusID = deptRow[0]["HCusID"];
                    this.form.HCusName = deptRow[0]["客户"];
                }
                // if (!this.form.HCusID && deptRow.length > 0) {
                //     this.form.HCusID = deptRow[0]["HCusID"];
                //     this.form.HCusName = deptRow[0]["客户"];
                // }
                console.log(deptRow)
                this.form.HMainSourceInterID = deptRow[0]["hmainid"]
                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]["汇率"]
                // 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) {
@@ -1295,16 +1309,14 @@
                        "ListMaterial": ListMaterial
                    },
                });
                console.log(response)
                let result = response.data;
                if (result.count == 1) {
                    let res = result.data;
                    console.log(res)
                    var newRows = [];
                    // 为每个源单行创建对应的子表行
                    for (var materialId in materialMap) {
                        var sourceInfos = materialMap[materialId];
                        console.log("发货通知单数据", dataArray)
                        console.log("1发货通知单数据", dataArray[0])
                        if (res.length === 0) {
                            // 为每个源单行创建一条记录
                            for (var j = 0; j < sourceInfos.length; j++) {
@@ -1332,16 +1344,18 @@
                                var HPackQTY = 0;
                                var rowVolume = 0;
                                // if
                                // console.log(dataArray[j].容器数量 / 托)
                                newRows.push({
                                    "HSourceInterID": sourceInfo.hmainid,
                                    "HSourceEntryID": sourceInfo.hsubid,
                                    "HSourceBillNo": sourceInfo.单据号,
                                    "HCusID": dataArray[j].HCusID,
                                    "HCusName": dataArray[j].客户,
                                    "HMaterID": dataArray[j].HMaterID,
                                    "HMaterNumber": dataArray[j].物料代码,
                                    "HMaterName": dataArray[j].物料名称,
                                    "HUnitID": dataArray[j].HUnitID,
                                    // "HPackV": dataArray[j].托单位体积,
                                    // "HStandardQtyForMouldInPack": dataArray[j].容器数量 / 托,
                                    "HMouldID": 0,
                                    "HMouldNumber": '',
                                    "HMouldName": '',
@@ -1405,13 +1419,15 @@
                                        "HSourceInterID": sourceInfo.hmainid,
                                        "HSourceEntryID": sourceInfo.hsubid,
                                        "HSourceBillNo": sourceInfo.单据号,
                                        "HCusID": materialInfo.HCusID,
                                        "HCusName": materialInfo.客户,
                                        "HMaterID": materialInfo.HMaterID,
                                        "HMaterNumber": materialInfo.物料代码,
                                        "HMaterName": materialInfo.物料名称,
                                        "HUnitID": materialInfo.HUnitID,
                                        "HMouldID": materialInfo.HMouldID,
                                        "HPackV": dataArray[j].托单位体积,
                                        "HStandardQtyForMouldInPack": dataArray[j].容器数量 / 托,
                                        // "HPackV": materialInfo.托单位体积,
                                        // "HStandardQtyForMouldInPack": materialInfo.容器数量 / 托,
                                        "HMouldNumber": materialInfo.HMouldNumber,
                                        "HMouldName": materialInfo.HMouldName,
                                        "HMouldLength": materialInfo.长度,
src/views/logistics/transportGPS/WL_YayBill copy.vue
New file
@@ -0,0 +1,1323 @@
<template>
    <div style="padding: 10px; position: relative;">
        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="78px" class="searchBox">
            <el-form-item label="开始日期" style="margin-left: 100px;">
                <el-date-picker v-model="queryParams.sTime" type="date" placeholder="开始日期" style="width: 150px;">
                </el-date-picker>
            </el-form-item>
            <el-form-item label="结束日期">
                <el-date-picker v-model="queryParams.eTime" type="date" placeholder="结束日期" style="width: 150px;">
                </el-date-picker>
            </el-form-item>
            <el-form-item label="日期间隔">
                <el-select v-model="queryParams.HInitTimeCycle" placeholder="请选择" @change="riqiChange"
                    style="width: 150px;">
                    <el-option v-for="(item, index) in rqsgList" :key="index" :label="item.label" :value="item.value">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="单据号" prop="HBillNo">
                <el-input v-model="queryParams.HBillNo" placeholder="请输入单据号" @keyup.enter.native="handleQuery"
                    style="width: 150px;" />
            </el-form-item>
            <el-form-item label="车牌号" prop="HPlateNumber">
                <el-input v-model="queryParams.HPlateNumber" placeholder="请输入车牌号" @keyup.enter.native="handleQuery"
                    style="width: 120px;" />
            </el-form-item>
            <el-form-item label="组织" prop="HOrgID">
                <el-select v-model="queryParams.HOrgID" placeholder="请选择组织">
                    <el-option v-for="(item, index) in organizationList" :key="index" :label="item.Name"
                        :value="item.ID">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label-width="78px">
                <el-button type="primary" icon="el-icon-search" @click="handleQuery"> 搜 索</el-button>
                <el-button icon="el-icon-circle-close" @click="resetQuery">重 置</el-button>
            </el-form-item>
            <el-collapse v-model="activeSeach">
                <el-collapse-item title="更多" name="1">
                    <el-card class="box-card">
                        <el-form-item label="供应商" prop="HSupName">
                            <el-input v-model="queryParams.HSupName" placeholder="请输入供应商名称"
                                @keyup.enter.native="handleQuery" />
                        </el-form-item>
                        <el-form-item label="物料代码" prop="HMaterNumber">
                            <el-input v-model="queryParams.HMaterNumber" placeholder="请输入物料代码"
                                @keyup.enter.native="handleQuery" />
                        </el-form-item>
                        <el-form-item label="物料名称" prop="HMaterName">
                            <el-input v-model="queryParams.HMaterName" placeholder="请输入物料名称"
                                @keyup.enter.native="handleQuery" />
                        </el-form-item>
                        <div slot="header" class="clearfix"><span>过滤</span></div>
                        <div>
                            <el-row>
                                <el-form-item label-width="0">
                                    <el-row>
                                        <el-col :span="7">
                                            <el-select v-model="queryParams.ColName1" placeholder="请选择"
                                                @change="riqiChange">
                                                <span v-for="(item, index) in btList" :key="index">
                                                    <el-option :label="item.field" :value="item.field"
                                                        v-if="!item.hide"></el-option>
                                                </span>
                                            </el-select>
                                        </el-col>
                                        <el-col :span="6" style="padding: 0 10px;">
                                            <el-select v-model="queryParams.Comparator1" placeholder="请选择"
                                                @change="riqiChange">
                                                <el-option v-for="(item, index) in comparatorList" :key="index"
                                                    :label="item.label" :value="item.value"></el-option>
                                            </el-select>
                                        </el-col>
                                        <el-col :span="11">
                                            <el-input v-model="queryParams.ColContent1" placeholder="请输入" clearable
                                                @keyup.enter.native="handleQuery" />
                                        </el-col>
                                    </el-row>
                                </el-form-item>
                            </el-row>
                            <el-row>
                                <el-form-item label-width="0">
                                    <el-row>
                                        <el-col :span="7">
                                            <el-select v-model="queryParams.ColName2" placeholder="请选择"
                                                @change="riqiChange">
                                                <span v-for="(item, index) in btList" :key="index">
                                                    <el-option :label="item.field" :value="item.field"
                                                        v-if="!item.hide"></el-option>
                                                </span>
                                            </el-select>
                                        </el-col>
                                        <el-col :span="6" style="padding: 0 10px;">
                                            <el-select v-model="queryParams.Comparator2" placeholder="请选择"
                                                @change="riqiChange">
                                                <el-option v-for="(item, index) in comparatorList" :key="index"
                                                    :label="item.label" :value="item.value"></el-option>
                                            </el-select>
                                        </el-col>
                                        <el-col :span="11">
                                            <el-input v-model="queryParams.ColContent2" placeholder="请输入" clearable
                                                @keyup.enter.native="handleQuery" />
                                        </el-col>
                                    </el-row>
                                </el-form-item>
                            </el-row>
                            <el-form-item label-width="0">
                                <el-row>
                                    <el-col :span="7">
                                        <el-select v-model="queryParams.ColName" placeholder="请选择" @change="riqiChange">
                                            <el-option v-for="(item, index) in btList" :key="index" :label="item.field"
                                                :value="item.field"></el-option>
                                        </el-select>
                                    </el-col>
                                    <el-col :span="6" style="padding: 0 10px;">
                                        <el-select v-model="queryParams.Comparator" placeholder="请选择"
                                            @change="riqiChange">
                                            <el-option v-for="(item, index) in comparatorList" :key="index"
                                                :label="item.label" :value="item.value"></el-option>
                                        </el-select>
                                    </el-col>
                                    <el-col :span="11">
                                        <el-input v-model="queryParams.ColContent" placeholder="请输入" clearable
                                            @keyup.enter.native="handleQuery" />
                                    </el-col>
                                </el-row>
                            </el-form-item>
                        </div>
                    </el-card>
                </el-collapse-item>
            </el-collapse>
        </el-form>
        <el-row :gutter="10" class="mb8" style="margin-top: 10px;">
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddEdit(OperationType = 1)"
                    id="btn-Add">新增</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit" size="mini" :disabled="single"
                    @click="handleEdit(row = rowForm, OperationType = 3, copyType = 0)">编辑</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-document-copy" size="mini" :disabled="single"
                    @click="handleEdit(row = rowForm, OperationType = 1, copyType = 1)">复制</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-delete" size="mini" :disabled="single" @click="handleDelete">删除
                </el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="set_CheckBill(0, form = rowForm)">审核</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="set_CheckBill(1, form = rowForm)">反审核</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-circle-check" size="mini" :disabled="single"
                    @click="handleVolume(rowForm)">维护零单占用体积</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-circle-check" size="mini" :disabled="single"
                    @click="set_ConfirmBill">供应商确认</el-button>
            </el-col>
                  <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="hanleCarOrDriver(form = rowForm)">分配车辆和司机</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="openDataDialog(14, form = rowForm)">分配车辆</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="openDataDialog(15, form = rowForm)">分配司机</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-circle-check" size="mini" :disabled="single"
                    @click="set_ConfirmOtherBill(1)">到厂确认</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-circle-check" size="mini" :disabled="single"
                    @click="set_ConfirmOtherBill(2)">提货确认</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-circle-check" size="mini" :disabled="single"
                    @click="set_ConfirmOtherBill(3)">出厂运输确认</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-circle-check" size="mini" :disabled="single"
                    @click="set_ConfirmOtherBill(4)">到货签收确认</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini"
                    @click="handlePush(row = rowForm, OperationType = 4)">下推(费用结算单)</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="set_CloseBills(1, form = rowForm)">关闭</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="set_CloseBills(2, form = rowForm)">反关闭</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="set_DropBill(1, form = rowForm)">作废</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="set_DropBill(2, form = rowForm)">反作废</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-printer" size="mini" @click="get_PrintReport">打印</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-date" size="mini" @click="handleRowHide">隐藏列设置</el-button>
            </el-col>
        </el-row>
        <div class="tableBox" v-loading="loading">
            <el-table :data="tableData" ref="tableData" max-height="710" :summary-method="getSummaries"
                @selection-change="handleSelectionChange" show-summary border @row-click="handleRowClick"
                :row-style="rowStyle" @cell-dblclick="handleDblclick" v-if="tableShow">
                <template v-for="(item, index) in btList">
                    <el-table-column type="selection" width="55" align="center" :fixed="item.fixed"
                        v-if="item.type == 'checkbox'" :key="index" />
                    <el-table-column :align="item.align" :prop="item.field" :label="item.title" :width="item.width"
                        :key="item.id" v-else-if="!item.hide && item.type != 'checkbox'" :sortable="item.sort"
                        show-overflow-tooltip :fixed="item.fixed">
                        <template slot-scope="{row,  column }">
                            <el-checkbox v-model="checked" v-if="item.type == 'checkbox'"></el-checkbox>
                            <div :style="item.style">
                                <span v-if="column.property.includes('日期')">{{ parseTime(row[column.property],
                                    '{y}-{m}-{d}') }}</span>
                                <el-button type="text" @click="handleEdit(row, OperationType = 3)"
                                    v-else-if="column.property == '单据号'">{{
                                        row.单据号
                                    }}</el-button>
                                <span v-else>{{ row[column.label] }}</span>
                            </div>
                        </template>
                    </el-table-column>
                </template>
            </el-table>
            <!-- 记录数、页数、当前页 -->
            <pagination v-show="total > 0" :total="total" :page.sync="page" :limit.sync="pageSize"
                @pagination="handleQuery" />
            <!-- 列设置 -->
            <el-dialog title="隐藏列设置" :visible.sync="openRowHide" width="816px" append-to-body>
                <RowSettings :colName="btResList" :HModName="HModName" @rowEditClose="rowSetClose" v-if="rowHideShow" />
            </el-dialog>
            <!-- 编辑 -->
            <el-dialog title="编辑" :visible.sync="openEdit" width="1480px" append-to-body class="xsckdBox"
                @close="close">
                <Edit :OperationType=OperationType :linterid=this.rowForm.HInterID
                    :HSouceBillType=this.rowForm.HSourceBillType :copyType="copyType" @editClose="editClose"
                    v-if="editShow" />
            </el-dialog>
            <!-- 打印 -->
            <el-dialog title="打印模板选择" :visible.sync="openPrintList" width="800px" append-to-body>
                <PrintList :linterid=this.rowForm.HInterID :MyMsg=this.rowForm.HInterID :Type='HBillType'
                    :HModName="HModName" @rowEditClose="rowSetClose" v-if="printListShow" />
                <!-- <div>111</div> -->
            </el-dialog>
            <el-dialog title="维护零单占用体积" :visible.sync="openVolume" width="580px" append-to-body>
                <el-form ref="form" :model="formVolume" :rules="rulesVolume" label-width="130px">
                    <el-form-item label="单据号">
                        <el-input v-model="formVolume.单据号" placeholder="请输入单据号" disabled />
                    </el-form-item>
                    <el-form-item label="零单占用体积">
                        <el-input-number v-model="formVolume.currentVolume" placeholder="请输入零单占用体积" />
                    </el-form-item>
                </el-form>
                <div slot="footer" class="dialog-footer">
                    <el-button type="primary" @click="set_HScatteredVolumeList">确 定</el-button>
                    <el-button @click="cancelVolume">取 消</el-button>
                </div>
            </el-dialog>
            <!-- 条码明细 -->
            <BarCodeDetail :visible.sync="barCodeDetailShow" ref="barcodeDetail" />
            <!-- 包装容器出入库明细 -->
            <PackStockDetail :visible.sync="packStockDetailShow" ref="packStockDetail" />
            <!-- 下推 -->
            <el-dialog title="下推运单结算单" :visible.sync="openPush" width="1480px" append-to-body class="xsckdBox"
                @close="close">
                <PayMentOtherBillTranEdit :OperationType='4' :propsData='pushData'
                    :HSouceBillType=this.rowForm.HSourceBillType @editClose="pushClose" v-if="pushShow" />
            </el-dialog>
            <el-dialog :title="dialogTitle" :visible.sync="openData" width="1280px" append-to-body>
                <GyCar @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="gyCarShow" />
                <GyDriver @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="gyDriverShow" />
                <div slot="footer" class="dialog-footer">
                    <el-button type="primary" @click="deptClickSub">确 定</el-button>
                    <el-button @click="deptClose">取 消</el-button>
                </div>
            </el-dialog>
        </div>
    </div>
</template>
<script>
import axios from 'axios'
import moment from 'moment';                                              //时间格式化
import RowSettings from '@/views/component/rowSettings'                   //列设置组件
import PrintList from '@/views/component/printList'                       //打印组件
import BarCodeDetail from '@/views/component/BarCodeDetail'               //条码明细组件
import PackStockDetail from '@/views/component/PackStockDetail'           //条码明细组件
import Edit from '@/views/logistics/transportGPS/Add_Edit_WL_YayBill'   //编辑页面组件
import PayMentOtherBillTranEdit from "@/views/logistics/WayBillPaymentBill/Pay_WayBillPaymentBillEdit.vue";  //编辑页面组件
import GyCar from "@/views/basic/gyCar/gyCarList.vue"
import GyDriver from "@/views/system/user/GyDriver.vue"
export default {
    name: 'WL_YayBill',
    components: { BarCodeDetail, PackStockDetail, Edit, RowSettings, PrintList, PayMentOtherBillTranEdit, GyCar, GyDriver },
    data() {
        return {
            baseURL: process.env.VUE_APP_BASE_API,                //后端接口前缀(后端服务器ip地址)
            HModName: "Cg_ContractTransportBillMainList",
            HBillType: "Cg_ContractTransportBillMainList",
            OperationType: null,                                  //保存类型(新增1修改3)
            copyType: 0,                                          //复制标记。打开编辑组件时,用于区分编辑还是复制
            HInterID: null,
            hPriceTypeList: ['成本价', '结算价'],
            rqsgList: [                                           //日期间隔下拉列表数据
                { label: '今天', value: 0 },
                { label: '近两天', value: 1 },
                { label: '近三天', value: 2 },
                { label: '近四天', value: 3 },
                { label: '近五天', value: 4 },
                { label: '近六天', value: 5 },
                { label: '近七天', value: 6 },
                { label: '近30天', value: 29 },
                { label: '近半年', value: 180 },
                { label: '近一年', value: 365 },
            ],
            organizationList: JSON.parse(sessionStorage.getItem('organizationList')),                                 //组织列表
            btList: [],                                           //列表表头字段列表
            comparatorList: [                                     //运算标识下拉列表
                { label: '=', value: '=' },
                { label: '>=', value: '>=' },
                { label: '>', value: '>' },
                { label: '<=', value: '<=' },
                { label: '<', value: '<' },
                { label: '<>', value: '<>' },
                { label: '包含', value: '7' },
                { label: '左包含', value: '8' },
                { label: '右包含', value: '9' },
                { label: '不包含', value: '10' },
            ],
            dialogTitle: '',                                      // 弹窗标题
            title: "",                                            // 弹出层标题
            open: false,                                          // 是否显示弹出层
            loading: true,                                        // 遮罩层
            rowList: [],                                          // 选中行数据集合
            activeSeach: '',
            // addBtnShow: false,                                    //编辑组件容器显示标记
            editShow: false,                                      //编辑组件容器显示标记
            openEdit: false,                                      //编辑组件显示标记
            pushShow: false,
            openPush: false,
            pushData: '',
            openPrintList: false,                                 //打印组件容器显示标记
            printListShow: false,                                 //打印组件显示标记
            openBtnHide: false,                                   //按钮组件容器显示标记
            btnHideShow: false,                                   //按钮组件显示标记
            openRowHide: false,                                   //列设置组件显示标记
            rowHideShow: false,                                   //列设置组件容器显示标记
            barCodeDetailShow: false,                             //条码明细组件容器显示标记
            packStockDetailShow: false,                            //包装容器出入库明细容器显示标记
            openVolume: false,                                    //维护零单占用体积弹窗标记
            openData: false,                                                           //数据弹窗
            dialogTypeNum: null,                                                       //部门弹窗1,仓库弹窗2
            gyCarShow: false,                                                          //车辆数据组件显示标记
            gyDriverShow: false,                                                       //司机数据组件显示标记
            deptform: {},                                                              //弹窗选中数据
            // 查询参数
            sWhere: '',                                                   // 拼接过滤条件
            queryParams: {                                                // form数据
                HBillNo: '',
                HPlateNumber: '',
                HInitTimeCycle: 29,
                sTime: '',
                eTime: '',
                HOrgID: sessionStorage["OrganizationID"] - 0,
                HSupName: null,
                HMaterNumber: '',
                HMaterName: '',
                ColName1: '',
                ColName2: '',
                ColName: '',
                Comparator1: '',
                Comparator2: '',
                Comparator: '',
                ColContent1: '',
                ColContent2: '',
                ColContent: '',
            },
            page: 1,                                                      //page页索引
            pageSize: 0,                                                  //page页面记录数
            total: 0,                                                     //记录合计数
            tableShow: true,                                              // table显示标记
            totalNameList: [],                                            // 需要设置合计行的列数组
            tableData: [],                                                // 列表数据。用于table监听事件
            ids: [],                                                      // 选中行的hmainid数组
            single: true,                                                 // 当选中的行数不为1时为true。用于禁用相关操作
            multiple: true,                                               // 当选中的行数为0时为true。用于禁用相关操作
            lastSelectedRowIndex: null,                                   // 用于记录上次点击的行索引
            lastSelectedRow: null,                                        // 上一次选中的行
            selectedRow: null,                                            // 当前选中的行
            rowForm: {},                                                  // 当选中的只有一行时,更新数据为该选中的行。
            formVolume: {},                                               // 维护零单占用体积表单。
            rulesVolume: {},                                               // 维护零单占用体积表单验证。
            tyResList: [],                                                // 列表数据,用于导出
            titleData: ["HInterID", "HEntryID", "HBillStatus", "HMaterID", "HPreventErrMouldID", "HOrgID"],           // 不需要显示的字段 可扩展
            btResList: [],                                                // 列表表头数据。用于列设置
            dataList: [],                                                 // option记录。用于当option数据无效时,用于列设置
        };
    },
    created() {
        this.riqiChange()
        this.handleQuery();
    },
    methods: {
        //#region 设置表头
        renderHeader(h, { column, $index }) {// 新建一个 span
            let span = document.createElement(span)// 设置表头名称
            span.innerText = column.label
            //临时插入 document
            document.body.appendChild(span)// 重点:获取 span 最小宽度,设置当前列,注意这里加了 20,字段较多时column.minWidth=span.getBoundingClientRect().width + 50.//移除 document 中临时的 span
            document.body.removeChild(span)
            return h(span, column.label)
        },
        //#endregion
        //#region 点击行
        handleRowClick(row, column, event) {
            this.lastSelectedRow = this.selectedRow; // 记录上一次选中的行
            this.selectedRow = row; // 记录当前选中的行
            this.lastSelectedRowIndex = this.tableData.indexOf(row);
            this.$refs.tableData.toggleRowSelection(row);
        },
        //#endregion
        //#region 选中行高亮样式
        rowStyle({ row, rowIndex }) {
            if (this.ids.includes(row.HInterID)) {
                return { "background": "#ecf5ff" }
            }
        },
        //#endregion
        //#region 双击行
        handleDblclick(row, column, cell, event) {
            this.OperationType = 3
            this.handleEdit()
        },
        //#endregion
        //#region 多选框选中数据
        handleSelectionChange(selection) {
            // this.rowForm = {}
            this.rowList = selection
            this.ids = selection.map(item => item.HInterID)
            this.single = selection.length != 1
            this.multiple = !selection.length
            if (!this.single) {
                this.rowForm = selection[0]
            }
        },
        //#endregion
        //#region 根据日期间隔,设置开始日期、结束日期
        riqiChange() {
            const end = new Date();
            const start = new Date();
            start.setTime(start.getTime() - 3600 * 1000 * 24 * this.queryParams.HInitTimeCycle);
            const yyyyS = start.getFullYear();
            const mmS = String(start.getMonth() + 1).padStart(2, '0'); // 月份是从0开始的
            const ddS = String(start.getDate()).padStart(2, '0');
            const yyyyE = end.getFullYear();
            const mmE = String(end.getMonth() + 1).padStart(2, '0'); // 月份是从0开始的
            const ddE = String(end.getDate()).padStart(2, '0');
            this.queryParams.sTime = yyyyS + '-' + mmS + '-' + ddS
            this.queryParams.eTime = yyyyE + '-' + mmE + '-' + ddE
        },
        //#endregion
        //#region 重置
        resetQuery() {
            this.sWhere = ''
            this.queryParams = {
                HBillNo: '',
                HInitTimeCycle: 29,
                HSupName: null,
                HMaterNumber: '',
                HMaterName: '',
                ColName1: '',
                ColName2: '',
                ColName: '',
                Comparator1: '',
                Comparator2: '',
                Comparator: '',
                ColContent1: '',
                ColContent2: '',
                ColContent: '',
            }
            this.riqiChange()
            this.resetForm("queryForm")
            this.handleQuery()
        },
        //#endregion
        //#region 权限判断
        async set_ModCheck(ModRightNameCheck) {
            var Permission = false;
            const res = await axios.get(this.$baseUrl + '/LMES/getReportByModRightNameCheck', {
                params: {
                    "ModRightNameCheck": ModRightNameCheck,
                    "user": sessionStorage["HUserName"],
                },
            }).then(result => {
                if (result.data.count != 1) {
                    Permission = true;
                    this.sWhere = this.sWhere + " and 承运商ID =" + sessionStorage["HSupID"]
                }
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        //#endregion
        //#region 快速过滤
        async handleQuery() {
            this.sWhere = ''
            await this.set_ModCheck("WLYayBill_SUPQuery")
            if (this.queryParams.ColName && this.queryParams.Comparator) {
                var com = "";
                switch (this.queryParams.Comparator) {
                    case "7":
                        com = "like'%" + this.queryParams.ColContent + "%'";
                        break;
                    case "8":
                        com = "like'%" + this.queryParams.ColContent + "'";
                        break;
                    case "9":
                        com = "like'" + this.queryParams.ColContent + "%'";
                        break;
                    case "10":
                        com = "not like'%" + this.queryParams.ColContent + "%'";
                        break;
                    default:
                        com = "" + this.queryParams.Comparator + "'" + this.queryParams.ColContent + "'";
                        break;
                }
                this.sWhere += " and " + this.queryParams.ColName + " " + com;
            }
            if (this.queryParams.ColName1 && this.queryParams.Comparator1) {
                var com1 = "";
                switch (this.queryParams.Comparator1) {
                    case "7":
                        com1 = "like'%" + this.queryParams.ColContent1 + "%'";
                        break;
                    case "8":
                        com1 = "like'%" + this.queryParams.ColContent1 + "'";
                        break;
                    case "9":
                        com1 = "like'" + this.queryParams.ColContent1 + "%'";
                        break;
                    case "10":
                        com1 = "not like'%" + this.queryParams.ColContent1 + "%'";
                        break;
                    default:
                        com1 = "" + this.queryParams.Comparator1 + "'" + this.queryParams.ColContent1 + "'";
                        break;
                }
                this.sWhere += " and " + this.queryParams.ColName1 + " " + com1;
            }
            if (this.queryParams.ColName2 && this.queryParams.Comparator2) {
                var com2 = "";
                switch (this.queryParams.Comparator2) {
                    case "7":
                        com2 = "like'%" + this.queryParams.ColContent2 + "%'";
                        break;
                    case "8":
                        com2 = "like'%" + this.queryParams.ColContent2 + "'";
                        break;
                    case "9":
                        com2 = "like'" + this.queryParams.ColContent2 + "%'";
                        break;
                    case "10":
                        com2 = "not like'%" + this.queryParams.ColContent2 + "%'";
                        break;
                    default:
                        com2 = "" + this.queryParams.Comparator + "'" + this.queryParams.ColContent + "'";
                        break;
                }
                this.sWhere += " and " + this.queryParams.ColName2 + " " + com2;
            }
            if (this.queryParams.sTime) {
                this.queryParams.sTime = moment(this.queryParams.sTime).format('YYYY-MM-DD')
                this.queryParams.eTime = moment(this.queryParams.eTime).format('YYYY-MM-DD')
                this.sWhere += " and CONVERT(varchar(100),日期, 23) >= '" + this.queryParams.sTime + "'" + " and CONVERT(varchar(100),日期, 23) <= '" + this.queryParams.eTime + "'";
            }
            if (this.queryParams.HBillNo) {
                this.sWhere += " and 单据号 like '%" + this.queryParams.HBillNo + "%'";
            }
            if (this.queryParams.HPlateNumber) {
                this.sWhere += " and 车牌号 like '%" + this.queryParams.HPlateNumber + "%'";
            }
            // if (this.queryParams.HOrgID) {
            //     this.sWhere += " and HOrgID = '" + this.queryParams.HOrgID + "'";
            // }
            console.log("swhere", this.sWhere)
            this.clearData()
            this.getList()
        },
        //#endregion
        //#region 查询
        getList() {
            this.pageSize = 50
            if (this.pageSize == 0) {
                this.pageSize = 50
            }
            this.tableShow = false
            this.loading = true
            console.log("swhere", this.sWhere)
            // 列表查询
            axios.get(this.$baseUrl + '/WLYayBillController/GetListPage', {
                params: {
                    "sWhere": this.sWhere,
                    "user": sessionStorage["HUserName"],
                    "page": this.page,
                    "size": this.pageSize
                },
            }).then(response => {
                this.tyResList = response.data.data//总数据
                let data1 = response.data
                let option = []
                if (data1.code == 1) {
                    this.btResList = data1.list             //列表表头数据
                    this.total = data1.count;
                    var data = [];//列字段数据
                    var col = [];
                    var totalArray = [];
                    //给空的数组赋值
                    for (var key in data1.list) {//循序遍历数组
                        data.push({ "id": data1.list[key].ColmCols, "name": data1.list[key].ColmCols, "Type": data1.list[key].ColmType });//从每个对象中提取数据
                    }
                    //在列表左边添加勾选框
                    col.push({ type: 'checkbox', fixed: 'left', totalRowText: '合计' });
                    for (var i = 0; i < data.length; i++) {//遍历data数组重的数据
                        if (this.titleData.indexOf(data[i].name) > -1) {//检查data【i】.name是否在数组中  //计算列
                            col.push({ field: data[i].id, title: data[i].name, align: 'center', hide: true }); //隐藏id列
                        } else if (totalArray.indexOf(data[i].name) > -1 || (data[i].Type == "Decimal" || data[i].Type == "Int32")) { //计算列
                            col.push({ field: data[i].id, title: data[i].name, align: 'center', sort: true, totalRow: true, width: 120 });
                        }
                        else {
                            col.push({ field: data[i].id, title: data[i].name, align: 'center', sort: true, width: 200 });
                        }
                    }
                    option.cols = [col]
                    this.dataList = option
                    option.data = data1.data;
                    var result = data1.data;
                    option.data = result;
                    let HModName = this.HModName
                    this.DisPlay_HideColumn(HModName, sessionStorage["HUserName"], option, this.dataList);
                }
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        //#region 合计行数据处理
        getSummaries(param) {
            const { columns, data } = param;
            const sums = [];
            columns.forEach((column, index) => {
                if (index === 0) {
                    sums[index] = '合计';
                    return;
                }
                const values = data.map(item => Number(item[column.property]));
                if (this.totalNameList[index].totalRow) {
                    if (!values.every(value => isNaN(value))) {
                        sums[index] = values.reduce((prev, curr) => {
                            const value = Number(curr);
                            if (!isNaN(value)) {
                                return prev + curr;
                            } else {
                                return prev;
                            }
                        }, 0)
                    } else {
                        sums[index] = '';
                    }
                }
            }, 1000);
            return sums;
        },
        //#endregion
        //#endregion
        //#region 新增
        handleAddEdit() {
            this.rowForm.HInterID = 0
            this.editShow = true
            this.openEdit = true
        },
        //#endregion
        //#region 编辑
        handleEdit(row) {
            this.rowForm = row
            this.editShow = true
            this.openEdit = true
        },
        editClose(val) {
            this.open = val
            this.editShow = false
            this.openEdit = val
            this.handleQuery()
        },
        //#endregion
        //#region 删除
        handleDelete() {
            this.$modal.confirm('确认要删除吗,删除后不能恢复').then(() => {
                axios.get(this.$baseUrl + "/WLYayBillController/deleteBill", {
                    params: { 'HItemID': this.rowForm.HInterID.toString(), 'user': sessionStorage["HUserName"] }
                }).then(response => {
                    if (response.data.count == 1) {
                        this.handleQuery()
                        this.$modal.msgSuccess("删除成功")
                    } else {
                        this.$modal.msgError("错误:" + result.code + result.Message);
                    }
                }).catch(error => {
                    console.log(error)
                    this.$modal.msgError("接口请求失败!");
                });
            }).catch(() => { })
        },
        //#endregion
        //#region 承运商确认
        set_ConfirmBill() {
            var confirmMes = "";
            if (this.rowForm["承运商确认时间"] != null) {
                confirmMes = "是否更新承运商确认时间?"
            } else {
                confirmMes = "是否确认承运商确认时间?"
            }
            this.$modal.confirm(confirmMes).then(() => {
                axios.get(this.$baseUrl + "/WLYayBillController/ConfrimBillNo", {
                    params: { 'HInterID': this.rowForm.HInterID.toString(), "IsAudit": 0, 'CurUserName': sessionStorage["HUserName"] }
                }).then(response => {
                    let result = response.data
                    if (result.count == 1) {
                        this.handleQuery()
                        this.$modal.msgSuccess(result.Message)
                    } else {
                        this.$modal.msgError(result.code + result.Message);
                    }
                }).catch(error => {
                    console.log(error)
                    this.$modal.msgError("接口请求失败!");
                });
            }).catch(() => { })
        },
        //#endregion
        //#region 其他确认
        set_ConfirmOtherBill(nums) {
            var confirmMes = "";
            if (nums === 1) {
                confirmMes = "是否确认到厂?"
            }
            else if (nums === 2) {
                confirmMes = "是否确认提货?"
            }
            else if (nums === 3) {
                confirmMes = "是否确认出厂运输?"
            }
            else if (nums === 4) {
                confirmMes = "是否确认到货签收?"
            } else {
                confirmMes = "是否确认承运商确认时间?"
            }
            this.$modal.confirm(confirmMes).then(() => {
                axios.get(this.$baseUrl + "/WLYayBillController/ConfrimOtherBillNo", {
                    params: { 'HInterID': this.rowForm.HInterID.toString(), "IsAudit": nums, 'CurUserName': sessionStorage["HUserName"] }
                }).then(response => {
                    let result = response.data
                    if (result.count == 1) {
                        this.handleQuery()
                        this.$modal.msgSuccess(result.Message)
                    } else {
                        this.$modal.msgError(result.code + result.Message);
                    }
                }).catch(error => {
                    console.log(error)
                    this.$modal.msgError("接口请求失败!");
                });
            }).catch(() => { })
        },
        //#endregion
        //#region 维护零单占用体积
        //#region 维护零单占用体积重置
        resetVolume() {
            this.formVolume = {
                HInterID: 0,
                HEntryID0: 0,
                currentVolume: 0,
                单据号: ''
            }
        },
        //#endregion
        //#region 维护零单占用体积重置
        handleVolume(form) {
            this.resetVolume()
            axios.get(this.$baseUrl + "/WLYayBillController/WL_YayBillDetail", {
                params: { 'HID': form.HInterID }
            }).then(response => {
                console.log(response.data.data.h_v_WL_YayBillEdit)
                // this.formVolume = response.data.data.h_v_WL_YayBillEdit[form.HEntryID-1]
                this.formVolume = form
                this.openVolume = true
            })
        },
        //#endregion
        //#region 下推运单费用
        SelectPayWayBill() {
            this.editShow = true
            this.openEdit = true
            this.OperationType = 4
        },
        //关闭下推页面
        pushClose(val) {
            this.open = val
            this.pushShow = false
            this.openPush = val
            this.clearData()
            this.getList()
        },
        //#endregion
        cancelVolume() {
            this.openVolume = false
            this.resetVolume()
        },
        //#region 维护零单占用体积提交
        set_HScatteredVolumeList() {
            axios.get(this.$baseUrl + "/WLYayBillController/updateBillMEs", {
                params: {
                    'HInterID': this.formVolume.HInterID.toString(),
                    "HEntryID": this.formVolume.HEntryID.toString(),
                    "ScatteredVolume": this.formVolume.currentVolume,
                    'CurUserName': sessionStorage["HUserName"]
                }
            }).then(response => {
                let result = response.data
                if (result.count == 1) {
                    this.handleQuery()
                    this.openVolume = true
                    this.$modal.msgSuccess(result.Message)
                } else {
                    this.$modal.msgError(result.code + result.Message);
                }
            }).catch(error => {
                console.log(error)
                this.$modal.msgError("接口请求失败!");
            });
        },
        //#endregion
        //#endregion
        //#region 审核/反审核
        set_CheckBill(num, form) {
            var InterID = form.hmainid || form.HInterID
            //逻辑审核方法
            axios.get(this.$baseUrl + "/WLYayBillController/AuditWLYayBill", {
                params: { "HInterID": InterID, "IsAudit": num, "CurUserName": sessionStorage["HUserName"] }
            }).then(response => {
                let result = response.data
                if (result.code == 1) {
                    this.$modal.msgSuccess(result.Message);
                    this.handleQuery();
                }
                else {
                    this.$modal.msgError("错误:" + result.code + result.Message,);
                }
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        //#endregion
        //#region 打开下推组件弹窗
        handlePush() {
            if (this.rowList && this.rowList.length > 0) {
                var dataArray = [];
                for (var i = 0; i < this.rowList.length; i++) {
                    if (this.rowList[i].单据状态 != "已审核") {
                        this.$modal.msgError("下推失败!所选单据【" + this.rowList[i].单据号 + "】不为已审核状态,不允许下推!")
                        return;
                    }
                    if (this.rowList[i].HQtyMust <= 0) {
                        this.$modal.msgError("下推失败!所选单据【" + this.rowList[i].单据号 + "】对应可下推数量必须大于 0 !")
                        return;
                    }
                    var temp = {
                        "HInterID": this.rowList[i].HInterID
                        , "HEntryID": this.rowList[i].HEntryID
                        , "HBillStatus": this.rowList[i].单据状态
                    }
                    dataArray.push(temp);
                }
                var datajson = {
                    "data": dataArray
                };
                this.pushData = JSON.stringify(datajson)
                this.pushShow = true
                this.openPush = true
            } else {
                this.$modal.msgError("请选择数据下推!")
            }
        },
        //#endregion
        //#region 关闭/反关闭
        set_CloseBills(num) {
            var InterID = form.hmainid || form.HInterID
            //逻辑审核方法
            axios.get(this.$baseUrl + "/Cg_ContractTransportBillEdit/CloseCg_ContractTransportBillEdit", {
                params: { "HInterID": InterID, "Type": num, "CurUserName": sessionStorage["HUserName"] }
            }).then(response => {
                let result = response.data
                if (result.code == 1) {
                    this.$modal.msgSuccess(result.Message);
                    this.handleQuery();
                }
                else {
                    this.$modal.msgError("错误:" + result.code + result.Message,);
                }
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        //#endregion
        //#region 作废/反作废
        set_DropBill(num) {
            var InterID = form.hmainid || form.HInterID
            //逻辑审核方法
            axios.get(this.$baseUrl + "/Cg_ContractTransportBillEdit/DropCg_ContractTransportBillEdit", {
                params: { "HInterID": InterID, "Type": num, "CurUserName": sessionStorage["HUserName"] }
            }).then(response => {
                let result = response.data
                if (result.code == 1) {
                    this.$modal.msgSuccess(result.Message);
                    this.handleQuery();
                }
                else {
                    this.$modal.msgError("错误:" + result.code + result.Message,);
                }
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        //#endregion
        //#region 列设置
        handleRowHide() {
            this.rowHideShow = true
            this.openRowHide = true
        },
        rowSetClose(val) {
            this.rowHideShow = false
            this.tableShow = true
            this.openRowHide = val
            this.handleQuery()
        },
        DisPlay_HideColumn(HModName, user, option, dataOption) {
            this.totalNameList = []
            axios.get(this.$baseUrl + '/Xt_grdAlignment_WMES/grdAlignmentWMESList', {
                params: {
                    "HModName": HModName,
                    "user": user,
                },
            }).then(res => {
                let data1 = res.data
                if (data1.data.length != 0) {
                    var dataCol = [];//数据库查询出的列数据
                    var newCols = [[]];//对应数据库列顺序col
                    newCols[0].push(option.cols[0][0]);//放入第一个checkbox
                    dataCol = data1.data[0].HGridString.split(',');
                    //列设置列数与页面列数是否一致
                    if (dataCol.length == option.cols[0].length - 1) {
                        //遍历寻找列设置对应列按顺序插入
                        for (var j = 0; j < option.cols[0].length - 1; j++) {
                            for (var i = 0; i < option.cols[0].length - 1; i++) {
                                var dataCols = dataCol[j].split('|');
                                //选择与datacols相应列进行修改
                                if (option.cols[0][i + 1]["field"] == dataCols[5]) {
                                    //隐藏列
                                    if (dataCols[1] == 1) {
                                        option.cols[0][i + 1]["hide"] = true;
                                    }
                                    //设置列宽
                                    if (dataCols[3] > 0) {
                                        option.cols[0][i + 1]["width"] = dataCols[3];
                                    }
                                    //设置内容字体大小
                                    if (data1.data[0].HFontSize != 0) {
                                        option.cols[0][i + 1]["style"] = "font-size:" + data1.data[0].HFontSize + "px;";
                                    } else {
                                        option.cols[0][i + 1]["style"] = "font-size:100%";
                                    }
                                    //显示列
                                    if (dataCols[1] == 0 && this.titleData.indexOf(option.cols[0][i + 1]["title"]) == -1) {
                                        option.cols[0][i + 1]["hide"] = false;
                                    }
                                    //统计列
                                    if (dataCols[6] == 1) {
                                        option.cols[0][i + 1]["totalRow"] = true;
                                    } else {
                                        option.cols[0][i + 1]["totalRow"] = false;
                                    }
                                    //字体所在位置(左 居中 右)
                                    switch (dataCols[2]) {
                                        case "L":
                                            option.cols[0][i + 1]["align"] = "left";
                                            break;
                                        case "M":
                                            option.cols[0][i + 1]["align"] = "center";
                                            break;
                                        case "R":
                                            option.cols[0][i + 1]["align"] = "right";
                                            break;
                                    }
                                    //设置表格title属性显示别名
                                    if (dataCols[4] != null && dataCols[4] != "") {
                                        option.cols[0][i + 1]["title"] = dataCols[4];
                                    }
                                    newCols[0].push(option.cols[0][i + 1]);
                                    break;
                                }
                            }
                        }
                        //遍历循环后判断对应列数是否一致
                        if (dataCol.length == newCols[0].length - 1) {
                            option.cols = newCols;
                            //取消冻结列
                            for (var i = 1; i < option.cols[0].length - 1; i++) {
                                if (option.cols[0][i + 1]["fixed"] != null) {
                                    option.cols[0][i + 1]["fixed"] = null;
                                }
                                else {
                                    break;
                                }
                            }
                            //冻结列
                            if (data1.data[0].HFixCols != 0) {
                                for (var i = 0; i < data1.data[0].HFixCols; i++) {
                                    if (dataOption.cols[0].indexOf(option.cols[0][i + 1]["title"]) != -1) {
                                        data1.data[0].HFixCols += 1;
                                    }
                                    option.cols[0][i + 1]["fixed"] = "left";
                                }
                            }
                            //设置列排序
                            for (var i = 1; i < option.cols[0].length; i++) {
                                if (data1.data[0].HSortFlag == "是") {
                                    option.cols[0][i]["sort"] = true;
                                }
                                else {
                                    option.cols[0][i]["sort"] = false;
                                }
                            }
                        }
                    }
                    this.btList = option.cols[0]
                    this.btList.map(item => {
                        if (!item.hide) {
                            this.totalNameList.push(item)
                        }
                    })
                    if (data1.data[0].HPageSize == 0) {
                        this.pageSize = 50
                    } else {
                        this.pageSize = data1.data[0].HPageSize
                    }
                    this.tableData = option.data
                    this.tableShow = true
                    this.loading = false
                } else {
                    this.btList = dataOption.cols[0]
                    this.btList.map(item => {
                        if (!item.hide) {
                            this.totalNameList.push(item)
                        }
                    })
                    this.tableData = dataOption.data
                    this.tableShow = true
                    this.loading = false
                }
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        //#endregion
        //#region 按钮设置
        handleBtnHide() {
            this.btnHideShow = true
            this.openBtnHide = true
        },
        //#endregion
        //#region 导出
        handleExport() {
            const ws = this.$XLSX.utils.json_to_sheet(this.tyResList); // 将数据转换为工作表
            const wb = this.$XLSX.utils.book_new(); // 创建一个新的工作簿
            this.$XLSX.utils.book_append_sheet(wb, ws, "Sheet1"); // 将工作表添加到工作簿中,并命名为"Sheet1"
            this.$XLSX.writeFile(wb, `Cg_ContractTransportBillMainList_${new Date().getTime()}.xlsx`); // 导出文件
        },
        //#endregion
        //#region 打印
        get_PrintReport() {
            if (this.ids.length != 1) {
                this.$modal.msgError("请选择一行数据")
            } else if (this.rowForm.单据状态 != "已审核" && !this.defaintOperationByCompanyName()) {
                this.$modal.msgError("打印失败!原因:单据状态不为'已审核'状态!!");
            } else {
                axios.get(this.$baseUrl + "/Kf_SellOutBill/CheckSellOutBill_IsExist", {
                    params: { "HInterID": this.rowForm.HInterID }
                }).then(response => {
                    var result = response.data
                    if (result.count == 1) {
                        this.printListShow = true
                        this.openPrintList = true
                        // this.$router.push({ path:'/printList', query: { linterid: this.rowForm.hmainid,MyMsg:this.rowForm.hmainid,Type:'Kf_SellOutBillList' }})
                    } else {
                        this.$modal.msgError(result.code + result.Message)
                    }
                }).catch(error => {
                    this.$modal.msgError("接口请求失败!");
                });
            }
            //  var content= ['../../BaseSet/SRM_OpenTmpList.html?linterid=' + data[0].hmainid.toString() + '&MyMsg=' + data[0].hmainid.toString() + '&Type=Kf_SellOutBillList', 'yes']
        },
        //#endregion
        //#region 条码明细
        get_BarCodeDetail() {
            // if (this.selectedRow.length !== 1) {
            //   this.$message.warning('请选择一行数据查看条码明细!')
            //   return
            // }
            this.barCodeDetailShow = true
            this.$nextTick(() => {
                this.$refs.barcodeDetail.open(this.rowForm)
            })
        },
        //#endregion
        //#region 包装容器出入库明细
        get_PackStockDetail() {
            // if (this.selectedRow.length !== 1) {
            //   this.$message.warning('请选择一行数据查看条码明细!')
            //   return
            // }
            this.packStockDetailShow = true
            this.$nextTick(() => {
                this.$refs.packStockDetail.open(this.rowForm)
            })
        },
        //#endregion
        //#region 退出
        close() {
            // this.reset()
            this.tableShow = true
            this.openEdit = false
            this.editShow = false
            this.pushShow = false
            this.openPush = false
            this.handleQuery()
        },
        //#endregion
        //#region 获取公司名,根据公司进行定制化开发
        defaintOperationByCompanyName() {
            var result = false;
            axios.get(this.$baseUrl + '/Xt_getInfo/getCompanyName').then(response => {
                var data1 = response.data
                if (data1.count == 1) {
                    if (data1.data == "水务") {
                        result = true;
                    }
                }
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
            return result;
        },
        //#endregion
        //#region 数据弹窗
        //#region 打开数据列表弹窗
        openDataDialog(num, row) {
            this.showReset()
            if (num == 14) {
                this.dialogTitle = '车辆列表'
                this.gyCarShow = true
                this.openData = true
            } else if (num == 15) {
                this.dialogTitle = '司机列表'
                this.gyDriverShow = true
                this.openData = true
            }
        },
        //#region 将数据弹窗全部取消加载
        showReset() {
            this.gyCarShow = false
            this.gyDriverShow = false
        },
        //#endregion
        //#endregion
        //#region 弹窗数据双击返回表单赋值事件
        async dbEmitData(deptRow, num) {
            let IsAudit = null
            if (num == 14) {
                IsAudit = 1
            } else if (num == 15) {
                IsAudit = 2
            }
            try {
                console.log(deptRow)
                const response = await axios.get(this.baseURL + '/WLYayBillController/selectDriver', {
                    params: {
                        "HInterID": this.rowForm.HInterID.toString(),
                        "HcheckID": deptRow.HItemID,
                        "IsAudit": IsAudit,
                        "CurUserName": sessionStorage["HUserName"]
                    },
                });
                if (response.data.code == 1) {
                    // return response.data.data[0];
                    if (num == 14) {
                        this.gyCarShow = false
                        this.openData = false
                        this.$modal.msgSuccess(response.data.msg || "车辆添加成功");
                        num = 15
                        this.$nextTick(() => {
                            this.gyDriverShow = true
                            this.openData = true
                        })
                    } else if (num == 15) {
                        this.gyDriverShow = false
                        this.openData = false
                        this.$modal.msgSuccess(response.data.msg || "司机添加成功");
                    }
                } else {
                    this.$modal.msgError(response.data.msg || "请先供应商确认");
                }
            } catch (error) {
                this.$modal.msgError("获取源单数据时发生错误,请稍后重试!");
            }
        },
        //#endregion
        //#region 弹窗数据单击事件
        emitData(deptRow, num) {
            this.dialogTypeNum = num
            this.deptform = deptRow
        },
        //#endregion
        //#region 弹窗确定事件
        deptClickSub() {
            this.dbEmitData(this.deptform, this.dialogTypeNum)
            this.deptform = {}
        },
        //#endregion
        //#region 弹窗取消事件
        deptClose() {
            this.deptform = {}
            this.openData = false
        },
        //#endregion
        //#endregion
        //清除选中数据的缓存
        clearData() {
            this.ids = []
            this.multiple = true
            this.single = true
            this.OperationType = 0
            this.copyType = 0
        },
    }
};
</script>
<style>
.xsckdBox .el-date-editor.el-input {
    width: 100%;
}
</style>
src/views/logistics/transportGPS/WL_YayBill.vue
@@ -17,8 +17,14 @@
                </el-select>
            </el-form-item>
            <el-form-item label="单据号" prop="HBillNo">
                <el-input v-model="queryParams.HBillNo" placeholder="请输入单据号" @keyup.enter.native="handleQuery" />
                <el-input v-model="queryParams.HBillNo" placeholder="请输入单据号" @keyup.enter.native="handleQuery"
                    style="width: 150px;" />
            </el-form-item>
            <el-form-item label="车牌号" prop="HPlateNumber">
                <el-input v-model="queryParams.HPlateNumber" placeholder="请输入车牌号" @keyup.enter.native="handleQuery"
                    style="width: 120px;" />
            </el-form-item>
            <el-form-item label="组织" prop="HOrgID">
                <el-select v-model="queryParams.HOrgID" placeholder="请选择组织">
                    <el-option v-for="(item, index) in organizationList" :key="index" :label="item.Name"
@@ -160,7 +166,15 @@
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="openDataDialog(14, form = rowForm)">分配司机</el-button>
                    @click="hanleCarOrDriver(form = rowForm)">分配车辆和司机</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="openDataDialog(14, form = rowForm)">分配车辆</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="openDataDialog(15, form = rowForm)">分配司机</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-circle-check" size="mini" :disabled="single"
@@ -197,6 +211,9 @@
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-edit-outline" size="mini" :disabled="single"
                    @click="set_DropBill(2, form = rowForm)">反作废</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-printer" size="mini" @click="get_PrintReport">打印</el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
@@ -283,6 +300,27 @@
                    <el-button @click="deptClose">取 消</el-button>
                </div>
            </el-dialog>
            <!-- 分配车辆和司机 -->
            <el-dialog title="分配车辆和司机" :visible.sync="openCarDriver" width="500px" append-to-body>
                <el-form ref="carDriverForm" :model="carDriverForm" :rules="carDriverRules" label-width="100px">
                    <el-form-item label="车牌号" prop="CarHNumber">
                        <el-input v-model="carDriverForm.CarHNumber" placeholder="请输入车牌号" />
                    </el-form-item>
                    <el-form-item label="车辆名称" prop="CarHName">
                        <el-input v-model="carDriverForm.CarHName" placeholder="请输入车辆名称" />
                    </el-form-item>
                    <el-form-item label="驾驶员" prop="DriverHName">
                        <el-input v-model="carDriverForm.DriverHName" placeholder="请输入驾驶员" />
                    </el-form-item>
                    <el-form-item label="身份证号" prop="DriverHIDCard">
                        <el-input v-model="carDriverForm.DriverHIDCard" placeholder="请输入身份证号" />
                    </el-form-item>
                </el-form>
                <div slot="footer" class="dialog-footer">
                    <el-button type="primary" @click="submitCarDriver">确 定</el-button>
                    <el-button @click="openCarDriver = false">取 消</el-button>
                </div>
            </el-dialog>
        </div>
    </div>
</template>
@@ -361,6 +399,19 @@
            packStockDetailShow: false,                            //包装容器出入库明细容器显示标记
            openVolume: false,                                    //维护零单占用体积弹窗标记
            openData: false,                                                           //数据弹窗
            openCarDriver: false,                                                      //分配车辆和司机弹窗标记
            carDriverForm: {                                                           //分配车辆和司机表单
                CarHNumber: '',
                CarHName: '',
                DriverHName: '',
                DriverHIDCard: ''
            },
            carDriverRules: {                                                          //分配车辆和司机表单验证
                CarHNumber: [{ required: true, message: '请输入车牌号', trigger: 'blur' }],
                CarHName: [{ required: true, message: '请输入车辆名称', trigger: 'blur' }],
                DriverHName: [{ required: true, message: '请输入驾驶员', trigger: 'blur' }],
                DriverHIDCard: [{ required: true, message: '请输入身份证号', trigger: 'blur' }],
            },
            dialogTypeNum: null,                                                       //部门弹窗1,仓库弹窗2
            gyCarShow: false,                                                          //车辆数据组件显示标记
            gyDriverShow: false,                                                       //司机数据组件显示标记
@@ -369,6 +420,7 @@
            sWhere: '',                                                   // 拼接过滤条件
            queryParams: {                                                // form数据
                HBillNo: '',
                HPlateNumber: '',
                HInitTimeCycle: 29,
                sTime: '',
                eTime: '',
@@ -386,7 +438,6 @@
                ColContent2: '',
                ColContent: '',
            },
            page: 1,                                                      //page页索引
            pageSize: 0,                                                  //page页面记录数
            total: 0,                                                     //记录合计数
@@ -503,8 +554,7 @@
        },
        //#endregion
        //#region 权限判断
        async set_ModCheck(ModRightNameCheck)
        {
        async set_ModCheck(ModRightNameCheck) {
            var Permission = false;
            const res=await axios.get(this.$baseUrl + '/LMES/getReportByModRightNameCheck', {
                params: {
@@ -597,6 +647,10 @@
            if (this.queryParams.HBillNo) {
                this.sWhere += " and 单据号 like '%" + this.queryParams.HBillNo + "%'";
            }
            if (this.queryParams.HPlateNumber) {
                this.sWhere += " and 车牌号 like '%" + this.queryParams.HPlateNumber + "%'";
            }
            // if (this.queryParams.HOrgID) {
            //     this.sWhere += " and HOrgID = '" + this.queryParams.HOrgID + "'";
            // }
@@ -1230,6 +1284,7 @@
                IsAudit = 2
            }
            try {
                console.log(deptRow)
                const response = await axios.get(this.baseURL + '/WLYayBillController/selectDriver', {
                    params: {
                        "HInterID": this.rowForm.HInterID.toString(),
@@ -1283,6 +1338,47 @@
        },
        //#endregion
        //#endregion
        //#region 分配车辆和司机
        hanleCarOrDriver(form) {
            this.carDriverForm = {
                CarHNumber: '',
                CarHName: '',
                DriverHName: '',
                DriverHIDCard: ''
            }
            this.openCarDriver = true
        },
        submitCarDriver() {
            this.$refs.carDriverForm.validate((valid) => {
                if (valid) {
                    axios({
                        method: 'post',
                        url: this.baseURL + "/WLYayBillController/selectDriver1",
                        data: {
                            "CarHNumber": this.carDriverForm.CarHNumber,
                            "CarHName": this.carDriverForm.CarHName,
                            "DriverHName": this.carDriverForm.DriverHName,
                            "DriverHIDCard": this.carDriverForm.DriverHIDCard,
                            "CurUserName": sessionStorage["HUserName"],
                            "HInterID": this.rowForm.HInterID
                        },
                    }).then(response => {
                        let result = response.data
                        if (result.code == 1) {
                            this.$modal.msgSuccess(result.Message || "分配成功");
                            this.openCarDriver = false
                            this.handleQuery()
                        } else {
                            this.$modal.msgError(result.code + result.Message);
                        }
                    }).catch(error => {
                        console.log(error)
                        this.$modal.msgError("接口请求失败!");
                    });
                }
            })
        },
        //#endregion
        //清除选中数据的缓存
        clearData() {
            this.ids = []