<template>
  <el-card class="box-card">
    <el-tabs type="border-card" class="topClass" @tab-change="TopChange">
      <el-tab-pane label="订单填写"></el-tab-pane>
      <el-tab-pane label="零担填写"></el-tab-pane>
    </el-tabs>
    <!-- <el-divider content-position="left">
      <span> {{ routerState ? '信息查看' : '工单新增' }}</span>
    </el-divider> -->

    <el-form :model="Indexform" label-width="100px" class="IndexFrom" ref="IndexForm">
      <el-form-item label="异常类型">
        <el-select
          v-model="Indexform.workOrderType"
          clearable
          placeholder="选择工单异常类型"
          @change="abnormalChange"
        >
          <el-option
            v-for="item in IndexException"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
      </el-form-item>

      <el-form-item label="发现节点">
        <el-select
          v-model="Indexform.discoveryNode"
          clearable
          placeholder="选择发现节点"
          @change="DiscoveringNodesChange"
        >
          <el-option
            v-for="item in DiscoveringNodes"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
      </el-form-item>

      <el-form-item label="异常工单号">
        <el-input v-model="Indexform.workOrderNumber" disabled placeholder="异常工单号(自动生成)" clearable />
      </el-form-item>

      <el-tabs type="border-card" class="PackageInformation" v-show="identifying != '2'">
      <el-tab-pane label="包件信息">
        <div class="ResponsibilityBoxS">
          <div><el-button type="primary" @click="AddPackage"> 添加信息 </el-button></div>
          <div class="el_btbox" v-for="(item, index) in PackageInfo" :key="index">
            <div class="leftbox">
              <div class="maxBox">
                <span class="title">包条码:</span>
                <el-input
                  v-model="item.packageCode"
                  placeholder="请输入包条码"
                  clearable
                  :rows="2"
                  @change="ChangePackageInfo(item.packageCode, index)"
                />
              </div>

              <div class="maxBox">
                <span class="title">订单自编码:</span>
                <el-input v-model="item.orderCode" placeholder="请输入订单自编号" clearable />
              </div>

              <div class="maxBox">
                <span class="title">运单号:</span>
                <el-input v-model="item.waybillNumber" placeholder="请输入运单号" clearable />
              </div>

              <div class="maxBox">
                <span class="title">品牌:</span>
                <el-input v-model="item.brandName" placeholder="请输入品牌" clearable />
              </div>
            </div>

            <div class="el-btn">
              <el-button v-if="item.state" type="primary" @click="historicalPackages(index)">
                查看历史包件
              </el-button>
              <el-button type="primary" @click="PackagRemoval(index)"> 移除 </el-button>
            </div>
          </div>
          <div class="NumTotal">
            <span>总件数:{{ NumberPackages }}</span>
          </div>
        </div>
      </el-tab-pane>
    </el-tabs>

      <!-- 必填(提货环节可以不填写运单号) -->
      <!-- <el-form-item label="运单号" v-if="groundlineType != 1">
      <el-input v-model="Indexform.waybillNumber" placeholder="请输入运单号" clearable />
    </el-form-item> -->

      <!-- <el-form-item label="少货件数" v-if="StateType || SelectType == 2">
      <div class="moneyNum">
        <el-input
          @change="ShortageTtems"
          v-model="Indexform.number"
          placeholder="请输入少货件数"
          clearable
        />
        <div class="el_btn" @click="moneyBtnA"><span>编辑</span></div>
      </div>
    </el-form-item> -->

      <!-- <el-form-item label="窜货件数" v-if="StateType || SelectType == 3">
      <div class="moneyNum">
        <el-input
          @change="fleeingTtems"
          v-model="Indexform.number"
          placeholder="请输入窜货件数"
          clearable
        />
        <div class="el_btn" @click="moneyBtnB"><span>编辑</span></div>
      </div>
    </el-form-item> -->

      <!-- <el-form-item
      label="包条码"
      v-if="SelectType == 1 || SelectType == 2 || SelectType == 3 || StateType"
    >
      <el-input
        v-model="Indexform.packageCode"
        placeholder="请输入包条码,多个用逗号隔开"
        clearable
      />
    </el-form-item> -->

      <!-- 必填 -->
      <!-- <el-form-item label="订单自编号">
      <el-input v-model="Indexform.orderCode" placeholder="请输入订单自编号" clearable />
    </el-form-item> -->


      <!-- 必填 -->

      <el-form-item
        label="车次号"
        v-if="
          groundlineSet ||
          groundlineType == 1 ||
          groundlineType == 3 ||
          groundlineType == 4 ||
          groundlineType == 8 ||
          groundlineType == 5 ||
          groundlineType == 7 ||
          groundlineType == 8
        "
      >
        <el-input
          v-model="Indexform.trainNumber"
          placeholder="请输入车次号(干线卸车环节)"
          clearable
          @change="DeliveryTrainnumber"
        />
      </el-form-item>

      <el-form-item
        label="配送时间"
        v-if="
          groundlineSet ||
          groundlineType == 3 ||
          groundlineType == 4 ||
          groundlineType == 8 ||
          groundlineType == 5 ||
          groundlineType == 7 ||
          groundlineType == 8
        "
      >
        <el-date-picker
          v-model="Indexform.deliveryTime"
          type="datetime"
          format="YYYY-MM-DD"
          value-format="YYYY-MM-DD"
          placeholder="请选择配送时间"
        />
      </el-form-item>

            <!-- 必填 -->

            <el-form-item
        label="配送司机"
        v-if="
          groundlineSet ||
          groundlineType == 3 ||
          groundlineType == 4 ||
          groundlineType == 8 ||
          groundlineType == 5 ||
          groundlineType == 7 ||
          groundlineType == 8
        "
      >
        <el-select
          v-model="Indexform.deliveryDriver"
          filterable
          default-first-option
          :reserve-keyword="false"
          placeholder="请输入配送司机"
          @change="changeDeliveryDriver"
        >
          <el-option
            v-for="item in DeliveryDriver"
            :key="item.value"
            :label="item.driverName + '-' + item.trainNumber"
            :value="item.id"
          />
        </el-select>
      </el-form-item>


      <el-form-item label="车辆路线" v-if="groundlineSet || groundlineType == 3">
        <el-input v-model="Indexform.vehicleRoute" placeholder="请输入车辆路线车次号" clearable />
      </el-form-item>

      <el-form-item label="发货时间">
        <el-date-picker
          v-model="Indexform.deliverGoodsTime"
          type="datetime"
          format="YYYY-MM-DD"
          value-format="YYYY-MM-DD"
          placeholder="请选择发货时间"
        />
      </el-form-item>

      <el-form-item
        label="发现时间"
        v-if="
          groundlineSet ||
          groundlineType == 2 ||
          groundlineType == 3 ||
          groundlineType == 4 ||
          groundlineType == 8 ||
          groundlineType == 5 ||
          groundlineType == 7 ||
          groundlineType == 8
        "
      >
        <el-date-picker
          v-model="Indexform.discoveryTime"
          type="datetime"
          format="YYYY-MM-DD HH:mm:ss"
          value-format="YYYY-MM-DD HH:mm:ss"
          placeholder="请选择发现时间"
        />
      </el-form-item>

      <el-form-item label="一级品">
        <el-input v-model="Indexform.first" placeholder="请输入一级品类" clearable />
      </el-form-item>

      <el-form-item label="二级品">
        <el-input v-model="Indexform.secondary" placeholder="请输入二级品类" clearable />
      </el-form-item>

      <el-form-item
        label="入库时间"
        v-if="groundlineSet || groundlineType == 2 || groundlineType == 4"
      >
        <el-date-picker
          v-model="Indexform.warehousingTime"
          type="datetime"
          format="YYYY-MM-DD HH:mm:ss"
          value-format="YYYY-MM-DD HH:mm:ss"
          placeholder="请选择入库"
        />
      </el-form-item>
      <!-- 必填 -->
      <el-form-item label="运单商场">
        <el-input v-model="Indexform.waybillMall" placeholder="请输入运单商场" clearable />
      </el-form-item>
      <!-- <el-form-item label="钉钉流程号">
        <el-input v-model="Indexform.processNumber" placeholder="请输入钉钉流程号" />
      </el-form-item> -->

      <!-- 必填 -->
      <el-form-item label="异常问题描述">
        <el-input v-model="Indexform.problemDescription" placeholder="请输入异常问题" clearable />
      </el-form-item>

      <el-form-item label="处理方">
        <el-select
          v-model="Indexform.processor"
          clearable
          filterable
          multiple
          placeholder="请选择处理方"
        >
          <el-option
            v-for="item in warehouseData"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
      </el-form-item>

      <el-form-item label="调查经过">
        <el-input
          v-model="Indexform.investigationPocess"
          placeholder="请输入调查经过"
          clearable
          :rows="2"
          type="textarea"
        />
      </el-form-item>

      <el-form-item> </el-form-item>

      <el-form-item> </el-form-item>
    </el-form>

    <!-- 必填 -->
    <!-- <div class="el_clzr">
      <el-form-item class="investigate" label="调查经过">
        <el-input
          v-model="Indexform.investigationPocess"
          placeholder="请输入调查经过"
          clearable
          :rows="2"
          type="textarea"
        />
      </el-form-item>

      <el-form-item label="处理方">
        <el-select
          v-model="Indexform.processor"
          clearable
          filterable
          multiple
          placeholder="请选择处理方"
        >
          <el-option
            v-for="item in warehouseData"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
      </el-form-item>
    </div> -->

    <el-tabs type="border-card">
      <el-tab-pane label="责任方选择">
        <div class="ResponsibilityBox">
          <div><el-button type="primary" @click="responsibleParty"> 添加信息 </el-button></div>
          <div class="el_btbox" v-for="(item, index) in FangAddList" :key="index">
            <div class="leftbox">
              <div class="maxBox">
                <span class="title">责任方:</span>

                <!-- 提货环节  -->

                <el-select
                  v-model="item.businessName"
                  clearable
                  placeholder="请选提货择责任方"
                  v-if="groundlineType == 1"
                >
                  <el-option
                    v-for="item in responsible"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>

                <el-select
                  v-else
                  v-model="item.businessName"
                  filterable
                  placeholder="请选择责任方"
                  @change="ResponsiblePartychange(item.businessName, index)"
                >
                  <el-option
                    v-for="item in warehouseData"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
              </div>

              <div class="maxBox">
                <span class="title">责任人：</span>
                <el-select
                  v-if="groundlineType != 1"
                  v-model="item.personResponsibleName"
                  clearable
                  filterable
                  placeholder="请选责任人"
                >
                  <el-option
                    v-for="item in personResponsibleList"
                    :key="item.id"
                    :label="item.name"
                    :value="item.id"
                  />
                </el-select>

                <el-input v-else v-model="item.personResponsibleName" placeholder="请输入责任人" />
            
              </div>
              <div class="maxBox el_zb">
                <span class="title">占比:</span>
                <el-input
                  v-model="item.responsibilityRatio"
                  placeholder="占比 "
                  :rows="2"
                  v-percentage
                  @input="CompanyProportionInput"
                />
                <span>%</span>
              </div>
              <div class="maxBox ">
                <span class="title">三方责任人:</span>
                <el-input  v-model="item.tripartite" placeholder="请输入三方责任人" />
              </div>
              
              <div class="maxBox">
                <span class="title">说明:</span>
                <el-input
                  v-model="item.description"
                  placeholder="请输入说明 "
                  clearable
                  :rows="2"
                />
              </div>
            </div>
            <div class="el-btn">
              <el-button type="primary" @click="ResponsibilityRemoval(index)"> 移除 </el-button>
            </div>
          </div>
          <div class="Proportion">
            <span class="title">公司占比:{{ companyProportion }}%</span>
          </div>
        </div>
      </el-tab-pane>
    </el-tabs>

    <div class="Transport_damage_photos" v-if="SelectType == 1 || SelectType == 3 || StateType">
      <span class="title">{{
        SelectType == 1 ? '运损照片' : SelectType == 3 ? '窜货照片' : '照片'
      }}</span>
      <el-upload
        v-model:file-list="Indexform.packList"
        list-type="picture-card"
        :on-preview="pictureList"
        :on-remove="ImgListRemove"
        :action="doubledCount"
        :on-success="ImgSuccess"
        :before-upload="beforeAvatarUpload"
        :headers="headers"
        multiple
        drag
      >
        <el-icon><Plus /></el-icon>
      </el-upload>

      <el-dialog v-model="dialogImgList" width="30%">
        <el-image
          :src="amplifyurl"
          :zoom-rate="1.2"
          :max-scale="7"
          :min-scale="0.2"
          :preview-src-list="amplifysrcList"
          :initial-index="4"
          fit="cover"
        />
      </el-dialog>
    </div>

    <div class="dialog-footer">
      <el-button @click="Indexdialog = false">取消</el-button>
      <el-button type="primary" @click="ConfirmForm"> 提交 </el-button>
    </div>
  </el-card>

  <!-- <div v-if="routerState" class="foot_btn">
    <el-button type="primary" @click="ConfirmForm">新增记录</el-button>
    <el-button type="primary" @click="ConfirmForm">完结 </el-button>
    <el-button type="primary" @click="ConfirmForm">打回 </el-button>
  </div> -->

  <!-- 少货件数大于3 -->
  <el-dialog
    :show-close="false"
    v-model="ShortageState"
    title="少货件数"
    width="40%"
    @close="ShortageStateFun"
    lock-scroll
    draggable
  >
    <div class="ShortageStatenum" v-for="item in ShortageList">
      <span class="title">件数{{ item.number }}</span
      ><el-input v-model="item.packageCode" placeholder="请输入包条码" />
    </div>

    <template #footer>
      <span class="dialog-footer">
        <el-button @click="ShortageCancellation">取消</el-button>
        <el-button type="primary" @click="ShortageState = false"> 确认信息 </el-button>
      </span>
    </template>
  </el-dialog>

  <!-- 窜货件数大于3 -->
  <el-dialog
    :show-close="false"
    v-model="fleeingState"
    title="窜货件数"
    width="40%"
    @close="fleeingFun"
    lock-scroll
    draggable
  >
    <div class="ShortageStatenum" v-for="item in fleeingList">
      <span class="title">件数{{ item.number }}</span
      ><el-input v-model="item.packageCode" placeholder="请输入包条码" />
    </div>

    <template #footer>
      <span class="dialog-footer">
        <el-button @click="fleeingCancellation">取消</el-button>
        <el-button type="primary" @click="ShortageState = false"> 确认信息 </el-button>
      </span>
    </template>
  </el-dialog>

  <el-dialog v-model="dialogHistoricalPackage" title="查看历史包件" width="30%">
    <el-form-item label="历史包件选择">
      <el-select v-model="HistoricalPackageinput" clearable filterable placeholder="请选择包件">
        <el-option
          v-for="item in HistoricalPackageList"
          :key="item.value"
          :label="item.workOrderNumber"
          :value="item.workOrderId"
        />
      </el-select>
      <el-button @click="ViewPackageDetails(HistoricalPackageinput)">查看详情</el-button>
    </el-form-item>
    <template #footer>
      <span class="dialog-footer">
        <el-button @click="dialogHistoricalPackage = false">取消</el-button>
        <el-button type="primary" @click="HistoricalPackage(HistoricalPackageinput)">
          确定选择
        </el-button>
      </span>
    </template>
  </el-dialog>
</template>

<script setup>
import { ElMessage } from 'element-plus';
import { ElMessageBox } from 'element-plus';
import { useRouter, useRoute } from 'vue-router';
import { getDictionaryBiz } from '@/api/system/dict'; //字典
import { getDetailWarehouse, getDeptWarehouse } from '@/api/basicdata/basicdataWarehouse'; //处理方
import {
  $_getList,
  $_submit,
  $_getDetail,
  $_remove,
  $_getBusinessDepartmentUser,
  $_getAbnormalPackage,
  $_shippingInformation,
} from '@/api/aftersales/aftersalesWorkOrder';
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import { getToken } from '@/utils/auth';
const $router = useRouter();
const $route = useRoute();
const Indexform = ref({
  packList: [],
  decreaseImageEntityList: [], //处理好的图片数据
}); //首页新增表单
const IndexException = ref([]); //异常类型下拉选择
const DiscoveringNodes = ref([]); //发现节点下拉选择
const warehouseData = ref([]); //处理方
const SelectType = ref(null); //类型
const StateType = ref(true); //类型
const HistoricalPackageinput = ref(''); //历史包件选择
const dialogImageUrl = ref(null); //图片
const dialogVisible = ref(null); //图片
const groundlineSet = ref(true); //干线条件都满足
const groundlineType = ref(null); //干线状态
const ShortageState = ref(false); //少货件数弹窗状态
const fleeingState = ref(false); //窜货件数弹窗
const ShortageList = ref([]); //少货件数
const fleeingList = ref([]); //窜货件数
const valueStrictly = ref();
const routerID = ref(null); //路由参数ID
const routerState = ref(''); //路由状态
const personResponsibleList = ref([]); //责任人列表
const companyProportion = ref(0); //公司占比
const identifying = ref(1); //订单，零担状态
const dialogHistoricalPackage = ref(false); //历史包件弹窗
const HistoricalPackageList = ref([]); //历史包件数组
const HistorIndex = ref(0); //历史包件索引
const NumberPackages = ref(0); //包件个数
const dialogImgList = ref(false); //图片预览弹窗
const amplifyurl = ref(''); //当前点击的图片
const amplifysrcList = ref([]); //图片循环列表
const PackageInfo = ref([
  //包件信息
  { packageCode: '', orderCode: '', waybillNumber: '', brandName: '' },
]);
// 责任方列表
const FangAddList = ref([
  { businessName: '', personResponsibleName: '', responsibilityRatio: '', description: '',tripartite:'' },
]);
// 提货责任方
const responsible = ref([
  {
    value: '1',
    label: '工厂',
  },
  {
    value: '2',
    label: '外包搬运',
  },
  {
    value: '3',
    label: '物流',
  },
]);

const DeliveryDriver = ref([]);
// 图片列表
const fileList = ref([]);
// 字典公共函数
function updateDictionary(targetArray, dictionaryType) {
  getDictionaryBiz(dictionaryType).then(res => {
    console.log(res, '字典');
    res.data.data.forEach(item => {
      targetArray.push({
        value: item.dictKey,
        label: item.dictValue,
      });
    });
  });
}
// 图片上传必须携带TOKEN
const headers = computed(() => {
  return { 'Blade-Auth': 'Bearer ' + getToken() };
});
// 图片上传接口
const doubledCount = computed(() => {
  return '/api/blade-resource/oss/endpoint/put-file';
});
// 图片上传接口

// 图片上传成功回调函数
const ImgSuccess = (response, uploadFile) => {
  if (response.success === true) {
    console.log(response);
    console.log(Indexform.value['packList'], '图片列表');
    amplifysrcList.value.push(response.data.link);
  }
};

// 上传图片规则
const beforeAvatarUpload = rawFile => {
  console.log(rawFile);
  if (rawFile.type !== 'image/png' && rawFile.type !== 'image/jpeg') {
    ElMessage.error('图片格式只能为 png/jpg!');
    return false;
  } else if (rawFile.size / 1024 / 1024 > 10) {
    ElMessage.error('图片大小不能大于10MB!');
    return false;
  }
  return true;
};
// 点击图片列表回调
const pictureList = val => {
  console.log(val, '图片列表');
  dialogImgList.value = true;
  console.log(val, '图片列表');
  amplifyurl.value = val.url;
};
// 点击图片移除
const ImgListRemove = val => {
  console.log(val, '移除图片');
  amplifysrcList.value = amplifysrcList.value.filter(item => item !== val.response.data.link);
};
// 处理方和责任方获取数据
const handle = () => {
  getDeptWarehouse().then(res => {
    res.data.data.forEach(item => {
      warehouseData.value.push({
        value: item.id,
        label: item.name,
      });
    });
  });
};

// 获取当前责任方的责任人
const ResponsiblePartychange = (val, index) => {
  FangAddList.value[index].personResponsibleName = null; //清空当前选择的责任人
  $_getBusinessDepartmentUser({
    warehouseId: val,
  }).then(res => {
    console.log(res, '获取责任人列表');
    personResponsibleList.value = res.data.data;
  });
};
const onLoad = () => {
  // DeliveryTrainnumber(); //获取司机
  console.log($route.query.id, '页面初始化');
  routerState.value = $route.query.routerState;
  updateDictionary(IndexException.value, 'pc_work_order'); //异常类型
  updateDictionary(DiscoveringNodes.value, 'pc_discovery_node'); //发现环节
  handle(); //处理方和责任方信息
};
onLoad(); //初始化程序
// 异常类型事件
const abnormalChange = val => {
  console.log(val, '异常事件类型');
  console.log(StateType.value);
  StateType.value = false;
  if (val == 1 || val == 2 || val == 3) {
    SelectType.value = val;
  } else {
    StateType.value = true;
  }
  // 运损无数据默认0
  if (val == 1) {
    Indexform.value.packageCode = 0;
  } else {
    Indexform.value.packageCode = null;
  }
};

// 发现节点事件
const DiscoveringNodesChange = val => {
  groundlineSet.value = false; //干线条件都不满足
  if (val == 1 || val == 2 || val == 3 || val == 4 || val == 5 || val == 8 || val == 7) {
    groundlineType.value = val; //干线状态
    console.log(val);
  } else {
    groundlineSet.value = true; //展示所有搜索框
  }
};

// 车次号自动带出时间司机
function DeliveryTrainnumber() {
  if(!Indexform.value.trainNumber){
    Indexform.value.deliveryTime=''
    Indexform.value.deliveryDriver=''
    DeliveryDriver.value =[]
  }
  if(!Indexform.value.trainNumber){
    return
  }
  let data = {
    trainNumber: Indexform.value.trainNumber,
    taskTime: Indexform.value.deliveryTime,
  };
  data.current = 1; //页码
  data.size = 999; //条数
  $_shippingInformation(data).then(res => {
    console.log(res, '查询返回值');
    DeliveryDriver.value = res.data.data.records; //获取到的信息
    // 如果是精确搜索自动带入日期
    if (res.data.data.records.length == 1) {
      Indexform.value.deliveryTime = res.data.data.records[0].taskTime; //配送时间
      Indexform.value.deliveryDriver = res.data.data.records[0].id; //配送人
    }
  });
}

// 照片
const handleRemove = (uploadFile, uploadFiles) => {
  console.log(uploadFile, uploadFiles);
};

const handlePictureCardPreview = uploadFile => {
  dialogImageUrl.value = uploadFile.url;
  dialogVisible.value = true;
};

// 添加包件
const AddPackage = () => {
  PackageInfo.value.push({ packageCode: '', orderCode: '', waybillNumber: '', brandName: '' });
};
// 包件移除
const PackagRemoval = val => {
  PackageInfo.value.splice(val, 1); //移除当前点击的按钮
  Statistics();
};
// 责任方添加
const responsibleParty = () => {
  FangAddList.value.push({
    businessName: '',
    personResponsibleName: '',
    tripartite:'',
    responsibilityRatio: '',
    description: '',
  });
};
// 责任移除
const ResponsibilityRemoval = val => {
  FangAddList.value.splice(val, 1); //移除当前点击的按钮
  CompanyProportion();
};
// 顶部标签切换
const TopChange = val => {
  console.log(val);
  if (val == 0) {
    identifying.value = 1;
  } else {
    identifying.value = 2;
  }
};
// 公司占比计算
const CompanyProportion = () => {
  let proportion = 0; //责任比例之和
  FangAddList.value.forEach(item => {
    proportion += Number(item.responsibilityRatio);
  });
  companyProportion.value = 100 - proportion;
};
// 公司占比事件
const CompanyProportionInput = () => {
  CompanyProportion();
};

//表单提交
const ConfirmForm = () => {
  //  提货责任方

  console.log(Indexform.value.businessMame, '提货责任方');
  let DataSubmit = {
    personResponsibleDTO: [],
    packageEntityList: [], ////包件信息
    decreaseImageEntityList: [], //图片信息
    ...Indexform.value,
  }; //解构表单参数

  // 图片类型:10运损,20窜货
  // decreaseImageEntityList:[
  //   {imageType:10,imageName:'图片名称',imagePath:'图片路径'},
  //   {imageType:10,imageName:'图片名称',imagePath:'图片路径'},
  // ]
  console.log(Indexform.value['packList'], '图片列表');
  // 处理图片(当类型为货损或为窜货才执行下面的东西)
  if (SelectType.value == 1 || SelectType.value == 3) {
    if (Indexform.value['packList']) {
      Indexform.value['packList'].forEach(item => {
        DataSubmit['decreaseImageEntityList'].push({
          imageType: SelectType.value == 1 ? 10 : SelectType.value == 3 ? 20 : '',
          imageName: item.response.data.originalName,
          imagePath: item.response.data.link,
        });
      });
    }
  }
  if (SelectType.value == 1 && DataSubmit['decreaseImageEntityList'].length < 2) {
    ElMessage({
      message: '货损至少提供2张图片附件',
      type: 'warning',
    });
    return;
  }
  if (SelectType.value == 3 && !DataSubmit['decreaseImageEntityList'].length) {
    ElMessage({
      message: '窜货必须提供图片附件',
      type: 'warning',
    });
    return;
  }
  console.log(DataSubmit['decreaseImageEntityList'], '处理好的图片');
  //司机信息处理
  if (Indexform.value.deliveryDriver) {
    console.log(DeliveryDriver.value, '当前全部司机');
    console.log(Indexform.value.deliveryDriver, '选择的司机信息');
    Indexform.value.deliveryDriver = DeliveryDriver.value.find(
      item => item.id == Indexform.value.deliveryDriver
    ).driverName;
  }
  console.log(Indexform.value.deliveryDriver, '筛选出来的司机');

  let processorEntityList = [];

  //处理方信息处理
  if (Indexform.value.processor.length) {
    Indexform.value.processor.forEach(item => {
      let found = warehouseData.value.find(element => element.value == item.toString());
      processorEntityList.push({
        businessName: found ? found.label : '',
        businessId: item,
        conditions: 1,
        typesOf: 2,
      });
    });
  }

  // 提货责任方
  // if (Indexform.value.businessMame) {
  //   const found = responsible.value.find(item => item.value === Indexform.value.businessMame);
  //   if (found) {
  //     processorEntityList.push({
  //       businessName: found.label,
  //       businessId: found.id,
  //       conditions: 1,
  //       typesOf: 1,
  //     });
  //   }
  // }

  DataSubmit.processorEntityList = processorEntityList;
  DataSubmit.decreaseImageEntityList = JSON.parse(
    JSON.stringify(Indexform.value['decreaseImageEntityList'])
  );
  console.log(Indexform.value.workOrderNumber, 'Indexform.workOrderNumber12312312');
  // 包件信息
  // packageEntityList
  // 如果存在包件信息进行处理
  if (PackageInfo.value.length) {
    PackageInfo.value.forEach(item => {
      DataSubmit['packageEntityList'].push({
        number: PackageInfo.value.length, //数量
        packageCode: item.packageCode, //包件码
        // warehouseId: '', //仓库ID
        waybillNumber: item.waybillNumber, //运单号
        orderCode: item.orderCode, //订单自编码
        brandName: item.brandName, //品牌
      });
    });
  }

  // DataSubmit['packageEntityList'].push({
  //   workOrderId: Indexform.workOrderNumber, //异常ID
  //   number: PackageInfo.value.length, //数量
  //   packageCode: PackageInfo.value.map(item => item.packageCode).join(','), //包件码
  //   warehouseId: '', //仓库ID
  //   packageImage: Indexform.value['packList'].map(item => item.url).join(','), //包件图片路径
  //   waybillNumber: PackageInfo.value.map(item => item.waybillNumber).join(','), //运单号
  //   orderCode: PackageInfo.value.map(item => item.orderCode).join(','), //订单自编码
  // });
  DataSubmit.orderCode = [...new Set(PackageInfo.value.map(item => item.orderCode))].join(',');
  // 总件数
  Indexform.value.number = PackageInfo.value.length;
  console.log(DataSubmit['packageEntityList'], '包件信息');
  // 调查经过
  DataSubmit.surveyRecordDTO = {
    content: Indexform.value.investigationPocess,
    workOrderId: Indexform.value.workOrderNumber,
  };
  console.log(DataSubmit.surveyRecordDTO, '调查经过');
  // 新责任方处理
  // FangAddList.value
  // 不是提货环节
  if (groundlineType.value != 1) {
    if (FangAddList.value.length) {
      // 如果存在责任方
      FangAddList.value.forEach(item => {
        DataSubmit['personResponsibleDTO'].push({
          businessName:
            warehouseData.value.find(obj => obj.value == item.businessName)?.label || null, //责任方名称
          businessId:
            warehouseData.value.find(obj => obj.value == item.businessName)?.value || null,
          wordOrderId: Indexform.value.workOrderNumber, //异常工单ID
          description: item.description,
          personResponsibleId:
            personResponsibleList.value.find(obj => obj.id == item.personResponsibleName)?.id ||
            null, //责任人ID   personResponsibleList
          personResponsibleName:
            personResponsibleList.value.find(obj => obj.id == item.personResponsibleName)?.name ||
            null, //责任人名称
          responsibilityRatio: item.responsibilityRatio, //责任比例
          tripartite:item.tripartite,//三方责任人
        });
      });
    }
  } else {
    // 提货环节责任人处理
    FangAddList.value.forEach(item => {
      DataSubmit['personResponsibleDTO'].push({
        businessName:
          warehouseData.value.find(obj => obj.value == item.businessName)?.label || null, //责任方名称
        businessId: warehouseData.value.find(obj => obj.value == item.businessName)?.value || null,
        wordOrderId: Indexform.value.workOrderNumber, //异常工单ID
        description: item.description,
        personResponsibleId: '',
        personResponsibleName: item.personResponsibleName, //责任人名称
        responsibilityRatio: item.responsibilityRatio, //责任比例
        tripartite:item.tripartite,//三方责任人
      });
    });
  }

  // 责任方信息
  // let proportion = 0; //责任比例之和
  // DataSubmit['personResponsibleDTO'].forEach(item => {
  //   proportion += Number(item.responsibilityRatio);
  // });
  // console.log(proportion, '责任比例之和');
  // companyProportion.value = 100 - proportion;
  DataSubmit.companyProportion = companyProportion.value; //公司占比
  console.log(DataSubmit.companyProportion, '公司占比');
  console.log(DataSubmit['personResponsibleDTO'], '新责任方处理的数据');
  //console.log(Indexform.value.duty.length);
  //责任方信息处理
  if (FangAddList.value.length) {
    console.log(warehouseData.value, 'warehouseData.value');
    FangAddList.value.forEach(item => {
      console.log(item, 'item');
      processorEntityList.push({
        businessName:
          warehouseData.value.find(obj => obj.value == item.businessName)?.label || null,
        businessId: item.businessName,
        conditions: 1,
        typesOf: 1,
      });
    });
  }
  DataSubmit.identifying = identifying.value; //1订单2零担3库存品

  console.log(processorEntityList, '老责任方处理好的数据');

  // //责任方信息处理
  // if (Indexform.value.duty.length) {
  //   Indexform.value.forEach(item => {
  //     let found = warehouseData.value.find(element => element.value == item.toString());
  //     processorEntityList.push({
  //       businessName: found ? found.label : '',
  //       businessId: item,
  //       conditions: 1,
  //       typesOf: 1,
  //     });
  //   });
  // }

  delete DataSubmit.duty, //移除多余字段
    delete DataSubmit.packList; //移除图片原始字段
  delete DataSubmit.processor; //移除多余字段
  console.log(DataSubmit, '处理好的数据');
  // 提交表单信息stringify
  $_submit(DataSubmit).then(res => {
    if (res.data.code == 200) {
      ElMessage({
        message: res.data.msg,
        type: 'success',
      });
      Indexform.value = {}; //重置表单
      $router.push('/aftersales/aftersalesWorkOrder'); //添加成功跳转到列表
    }
  });
};
// 选择司机带出车次号日期
const changeDeliveryDriver = val => {
  console.log(val);
  console.log(DeliveryDriver.value, '司机信息');
  Indexform.value.trainNumber = DeliveryDriver.value.find(res => res.id == val).trainNumber; //车次号
  Indexform.value.deliveryTime = DeliveryDriver.value.find(res => res.id == val).taskTime; //日期
};
// 少货件数对应事件
const ShortageTtems = val => {
  ShortageList.value = []; //进入之前重置参数
  const pattern = /\s+/g;
  const result = val.replace(pattern, '');
  console.log(result); // 输出 "33"
  Indexform.value.number = result;
  if (Indexform.value.number > 1) {
    ShortageState.value = true; //数量大于1，开启弹窗输入
  }
  for (let i = 0; i < val; i++) {
    ShortageList.value.push({
      number: i + 1, //件数
      packageCode: null, //输入框
    });
  }
};
// 少货关闭回调
const ShortageStateFun = () => {
  ShortageList.value.forEach(item => {
    if (item.packageCode == null) {
      Indexform.value.number = null;
    }
  });
};
// 少货按钮取消
const ShortageCancellation = () => {
  Indexform.value.number = null; //少货件数
  ShortageList.value = []; //进入之前重置参数
  ShortageState.value = false; //关闭弹窗
};
// 窜货关闭回调
const fleeingFun = () => {
  fleeingList.value.forEach(item => {
    if (item.packageCode == null) {
      Indexform.value.number = null;
    }
  });
};
// 窜货取消事件
const fleeingCancellation = () => {
  Indexform.value.number = null; //少货件数
  fleeingList.value = []; //进入之前重置参数
  fleeingState.value = false; //关闭弹窗
};
// 窜货输入框
const fleeingTtems = val => {
  fleeingList.value = []; //进入之前重置参数
  const pattern = /\s+/g;
  const result = val.replace(pattern, '');
  console.log(result); // 输出 "33"
  Indexform.value.number = result;
  if (Indexform.value.number > 1) {
    fleeingState.value = true; //数量大于1，开启弹窗输入
  }
  for (let i = 0; i < val; i++) {
    fleeingList.value.push({
      number: i + 1, //件数
      packageCode: null, //输入框
    });
  }
};
// 少货编辑
const moneyBtnA = () => {
  if (!Indexform.value.number) {
    ElMessage({
      message: '请输入少货数量',
      type: 'warning',
    });
    return;
  }
  ShortageState.value = true; //开启弹窗输入
};
// 窜货编辑
const moneyBtnB = () => {
  if (!Indexform.value.number) {
    ElMessage({
      message: '请输入窜货数量',
      type: 'warning',
    });
    return;
  }
  fleeingState.value = true; //开启弹窗输入
};
// 统计包件个数
const Statistics = () => {
  NumberPackages.value = 0;
  PackageInfo.value.map(res => {
    if (res.packageCode) {
      NumberPackages.value++;
    }
  });
};

// 查询包件信息自动回显
const ChangePackageInfo = (val, index) => {
  if (!val) {
    return;
    // 如果输入框里面没有值就不请求
  }
  PackageInfo.value[index].orderCode = ''; //订单自编码
  PackageInfo.value[index].waybillNumber = ''; //运单号
  PackageInfo.value[index].orderId = ''; //运单号
  PackageInfo.value[index].brandName = ''; //品牌
  // PackageInfo.value[index].firsts = ''; //一级品
  // PackageInfo.value[index].second = ''; //二级品
  // PackageInfo.value[index].mallName = ''; //客户名称
  // PackageInfo.value[index].mallId = ''; //客户ID
  
  Statistics(); //调用统计包件信息
  let data = {
    packageCode: val,
  };
  $_getAbnormalPackage(data).then(res => {
    console.log(res, '包件信息');
    console.log(res.data.data, '包件信息');
    if (res.data.data.length) {
      const packageData = res.data.data[0];
      PackageInfo.value[index].orderCode = packageData.orderCode; //订单自编码
      PackageInfo.value[index].waybillNumber = packageData.waybillNumber; //运单号
      PackageInfo.value[index].orderId = packageData.orderId; //运单号
      PackageInfo.value[index].brandName = packageData.brandName; //品牌
      PackageInfo.value[index].state = false; //状态
      Indexform.value.first=packageData.first;//一级品
      Indexform.value.secondary=packageData.secondary;//二级品
      console.log(packageData,'处理的包件参数');
      console.log(Indexform.value.firsts,'一级品');
      console.log(Indexform.value.second,'二 级品');
      res.data.data.find(item => {
        if (item.workOrderId && item.workOrderNumber) {
          HistoricalPackageList.value = res.data.data;
          PackageInfo.value[index].state = true; //状态
        }
      });
    }
    // packageCode; //包件码
    // //订单自编码
    // orderCode: orderId; //运单号
    // workOrderId; //工单id
    // workOrderNumber; //工单名称
    console.log(PackageInfo.value, '处理好的参数');
  });
};

// 查看历史包件
const historicalPackages = val => {
  dialogHistoricalPackage.value = true; //打开历史包件弹窗
  HistorIndex.value = val;
  console.log(val);
};
// 历史包件确定选择
const HistoricalPackage = val => {
  let info = HistoricalPackageList.value.find(obj => obj.workOrderId == val);
  PackageInfo.value[HistorIndex.value].orderCode = info.orderCode; //订单自编码
  PackageInfo.value[HistorIndex.value].waybillNumber = info.waybillNumber; //运单号
  PackageInfo.value[HistorIndex.value].orderId = info.orderId; //运单号
  PackageInfo.value[HistorIndex.value].brandName = packageData.brandName; //品牌
  dialogHistoricalPackage.value = false; //关闭历史包件弹窗

  PackageInfo.value[HistorIndex.value].relatedWorkOrdersId = info.workOrderId;
  console.log(PackageInfo.value, '处理好的参数');
};
// 历史包件里面的查看
const ViewPackageDetails = val => {
  if (!val) {
    ElMessage({
      message: '请选择要查看的数据',
      type: 'warning',
    });
    return;
  }
  console.log(val);
  let info = HistoricalPackageList.value.find(obj => obj.workOrderId == val);
  console.log(info, '筛选的值');
  $router.push({
    path: '/aftersales/aftersalesWorkOrderInfo',
    query: {
      id: info.workOrderId,
      name: info.workOrderId + '-信息查看',
      routerState: 'view',
    },
  });
  dialogHistoricalPackage.value = false; //打开历史包件弹窗
};
</script>

<style scoped lang="scss">
.IndexFrom {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  border: 1px solid #ccc;
  border-bottom: none;
  .el-form-item {
    height: 46px;
    display: flex;
    align-items: center;
    margin: 0;
    margin-bottom: 18px;
    flex: 1 0 30%;
    :deep(.el-form-item__label) {
      width: 100px !important;
      justify-content: flex-start;
    }
  }
  :deep(.el-form-item__content) {
    height: 100%;
    width: 70% !important;
    flex: none;
    .el-input {
      height: 100% !important;
      display: flex;
      align-items: center;
    }
  }
  .el-input__wrapper {
    height: 32px !important;
  }
  :deep(.el-input) {
    width: 100% !important;
  }
  :deep(.el-input__wrapper) {
    height: 30px !important;
  }
  :deep(.el-select) {
    width: 100%;
  }
  :deep(.el-form-item__label) {
    margin-left: 20px;
  }
}
.el_clzr {
  margin-top: 40px;

  :deep(.el-select) {
    width: 100%;
  }
  :deep(.el-input) {
    height: 38px;
  }
  :deep(.el-form-item__label) {
    margin-left: 20px;
    font-size: 14px;
    width: 100px !important;
    justify-content: flex-start;
  }
  .el-form-item {
    margin: 0;
    margin-bottom: 34px;
  }
  :deep(.el-input__wrapper) {
    height: 35px !important;
  }
  :deep(.el-form-item__content) {
    height: 100%;
    width: 90% !important;
    flex: none;
    .el-input {
      height: 100% !important;
      display: flex;
      align-items: center;
    }
  }
}
.Transport_damage_photos {
  display: flex;
  padding: 0 15px;
  margin-top: 20px;
  .title {
    width: 100px;
    display: block;
    margin-bottom: 10px;
    font-size: 14px;
  }
}
.dialog-footer {
  width: 100%;
  display: flex;
  justify-content: flex-end;
  padding: 0 10px;
  box-sizing: border-box;
  padding-right: 36px;
}
.investigate {
  :deep(.el-form-item__content) {
    width: 90% !important;
    box-sizing: border-box;
  }
}
.ShortageStatenum {
  display: flex;
  align-items: center;
  margin-bottom: 10px;
  .title {
    width: 80px;
  }
  .remove {
    width: 47px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: #ff0000;
  }
}
.moneyNum {
  display: flex;
  flex: 1;
  .el_btn {
    width: 50px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #ccc;
    margin-left: 3px;
    border-radius: 4px;
    cursor: pointer;
  }
}
.ResponsibilityBox {
  width: 100%;
  display: flex;
  flex-direction: column;
  .leftbox {
    width: 80%;
    display: flex;
    justify-content: space-between;
    .el_zb {
      width: 140px;
      margin-right: 50px;
      text-align: right;
      :deep(.el-input) {
        margin-left: 10px;
        text-align: right;
      }
    }
  }
  .maxBox {
    display: flex;
    align-items: center;
    width: 30%;
    margin-right: 16px;
    .title {
      width: 120px;
      font-size: 14px;
      color: #606266;
    }
    .el-select {
      width: 100%;
    }
  }
  .el-btn {
    margin-left: 5%;
    border: none;
  }
  .el_btbox {
    display: flex;
    margin-top: 10px;
  }
}
.ResponsibilityBoxS {
  width: 100%;
  display: flex;
  flex-direction: column;
  margin-bottom: 10px;
  .leftbox {
    width: 80%;
    display: flex;
    justify-content: space-between;
  }
  .maxBox {
    display: flex;
    align-items: center;
    width: 30%;
    margin-right: 20px;
    .title {
      width: 140px;
      color: #606266;
      font-size: 14px;
    }
    .el-select {
      width: 100%;
    }
  }
  .el-btn {
    margin-left: 5%;
    border: none;
  }
  .el_btbox {
    display: flex;
    margin-top: 10px;
  }
}
:deep(.PackageInformation) {
  margin-bottom: 10px;
  width: 97%;
  border-left: none;
  .el-tabs__header{
  }
}
.NumTotal {
  width: 30%;
  margin-top: 16px;
  display: flex;
  align-items: center;
  span {
    width: 120px;
    font-size: 14px;
  }
}
.Proportion {
  margin-top: 16px;
  .title {
    font-size: 14px;
    color: #606266;
  }
}

:deep(.is-active) {
  border-bottom: 1px solid #e4e7ed !important;
}
:deep(.topClass) {
  border-bottom: none;
  .el-tabs__content {
    padding: 0;
  }
}
.foot_btn {
  position: fixed;
  bottom: 0;
  left: 50%;
  transform: translate(0, -50%);
  width: 100%;
  height: 40px;
  background-color: #ffffff;
  border-top: 1px solid #fff;
  box-shadow: 3px -1px 1px #ccc;
  display: flex;
  align-items: center;
  padding-left: 10px;
}
:deep(.el-card__body) {
  margin-bottom: 50px;
}
:deep(.el-upload-dragger) {
  display: flex;
  align-items: center;
  justify-content: center;
}
.box-card {
  height: 100% !important;
  overflow-y: scroll;
}
</style>
