<template>
  <div class="stockManagement_add">
    <el-card shadow="never">
      <header-title title="基本信息"></header-title>
      <basic-information
        ref="basicInformation"
        @onFormChange="formDataChange"
        :myFormData="formData"
        :rules="rules"
      ></basic-information>
      <div class="material">
        <header-title title="产品信息">
          <el-button type="primary" @click="addStock">添加</el-button>
        </header-title>

        <div class="mt10 form-table">
          <el-form
            ref="warehousingMaterialListRef"
            :model="{ warehousingMaterialList: warehousingMaterialList }"
            :show-message="false"
          >
            <el-button
              v-if="warehousingMaterialList.length != 0"
              type="success"
              plain
              style="margin-bottom: 20px; float: right; margin-right: 20px"
              size="mini"
              @click="listSaveArrs"
              >批量保存</el-button
            >
            <el-table
              v-if="isWeight"
              :header-cell-style="rowClass"
              :max-height="300"
              ref="warehousingMaterialListTable"
              :key="formData.extInfo.assetType"
              :data="warehousingMaterialList"
              tooltip-effect="dark"
              style="width: 100%"
              stripe
            >
              <el-table-column
                label="序号"
                type="index"
                width="50"
                align="center"
              >
              </el-table-column>
              <el-table-column
                label="编码"
                prop="assetCode"
                align="center"
                width="130"
                :show-overflow-tooltip="true"
              ></el-table-column>
              <el-table-column
                label="名称"
                align="center"
                width="200"
                prop="assetName"
                :show-overflow-tooltip="true"
              ></el-table-column>
              <el-table-column
                v-for="(item, index) in tableHeader"
                :key="index"
                align="center"
                :label="item.label"
                :width="item.width"
                :prop="item.prop"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="{ row }">
                  <template v-if="item.formatter">{{
                    item.formatter(row)
                  }}</template>
                  <template v-else>{{ row[item.prop] }}</template>
                </template>
              </el-table-column>
              <el-table-column
                label="批次号"
                prop="batchNo"
                width="70"
                align="center"
              >
                <template slot-scope="{ row, $index }">
                  <template v-if="row.isSave">
                    {{ row.batchNo }}
                  </template>
                  <el-form-item
                    v-else
                    :prop="`warehousingMaterialList.${$index}.batchNo`"
                    required
                  >
                    {{ row.batchNo }}
                  </el-form-item>
                </template>
              </el-table-column>

              <el-table-column
                label="最小包装单元"
                align="center"
                prop="minPackingCount"
                width="100"
              >
                <el-table-column label="" prop="minPackingCount" width="100">
                  <template slot-scope="{ row, $index }">
                    <template v-if="row.isSave">
                      {{ row.minPackingCount }}
                    </template>
                    <el-form-item
                      v-else
                      :prop="`warehousingMaterialList.${$index}.minPackingCount`"
                      required
                    >
                      <el-input
                        v-model="row.minPackingCount"
                        @input="minPackingCountChange(row, $event)"
                      >
                      </el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column label="" prop="minPackingCount">
                  <template slot-scope="{ row, $index }">
                    {{ handleRowUnit(row) }} /{{ row.minPackUnit }}
                  </template>
                </el-table-column>
              </el-table-column>
              <el-table-column
                label="包装数量"
                prop="outInNum"
                width="150"
                align="center"
              >
                <template slot-scope="{ row, $index }">
                  <template v-if="row.isSave || formData.bizType == 5">
                    {{ row.outInNum }} {{ row.minPackUnit }}
                  </template>
                  <el-form-item
                    v-else
                    :prop="`warehousingMaterialList.${$index}.outInNum`"
                    required
                  >
                    <el-input
                      v-model="row.outInNum"
                      @input="packNum(row, $event)"
                    >
                      <template slot="append">
                        {{ row.minPackUnit ? row.minPackUnit : '/' }}
                      </template>
                    </el-input>
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column label="计量数量" prop="counts">
                <template slot-scope="{ row, $index }">
                  {{ row.minPackingCount * row.outInNum }}
                </template>
              </el-table-column>
              <el-table-column
                label="计量单位"
                prop="batchNo"
                width="100"
                align="center"
              >
                <!-- v-if="formData.extInfo.assetType == 1" -->

                <template slot-scope="{ row, $index }">
                  <template>
                    {{ row.measuringUnit }}
                  </template>
                </template>
              </el-table-column>

              <el-table-column
                label="重量"
                align="center"
                prop="contentImage"
                :show-overflow-tooltip="true"
              >
                <!-- v-if="formData.extInfo.assetType == 1" -->
                <template slot-scope="{ row, $index }">
                  {{ row.weight }}
                  <template slot="append">
                    {{ handleRowUnit(row) }}
                  </template>
                </template>
              </el-table-column>
              <el-table-column
                label="重量单位"
                align="center"
                prop="contentImage"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="{ row, $index }">
                  {{ row.weightUnit }}
                  <template slot="append"> </template>
                </template>
              </el-table-column>
              <el-table-column
                label="单价"
                prop="univalence"
                width="150"
                align="center"
              >
                <template slot-scope="{ row, $index }">
                  <el-form-item
                    :prop="`warehousingMaterialList.${$index}.univalence`"
                  >
                    <el-input
                      v-model="row.univalence"
                      placeholder="非必填"
                      @input="
                        (value) =>
                          (row.univalence = value.replace(/[^0-9.]+/g, ''))
                      "
                    >
                      <template slot="append">
                        元/{{ handleRowUnit(row) }}
                      </template>
                    </el-input>
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column
                label="金额"
                align="center"
                prop="contentImage"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="{ row, $index }">
                  {{
                    calcSumTotal(
                      row.outInNum,
                      row.minPackingCount,
                      row.univalence,
                      row
                    )
                  }}
                </template>
              </el-table-column>
              <el-table-column
                label="货位"
                prop="warehouseName"
                :show-overflow-tooltip="true"
                width="250"
                required
              >
                <template slot-scope="{ row, $index }">
                  <el-form-item
                    :prop="`warehousingMaterialList.${$index}.houseList`"
                    :required="true"
                  >
                    <div @click="handleWareHouse(row, $index)">
                      <div
                        style="color: #ff4949"
                        v-if="row.houseList.length == 0"
                      >
                        ---（必填）
                      </div>
                      <div v-else>
                        <div
                          class="fontOmitted"
                          v-for="(item, index) in row.houseList"
                          :key="index"
                        >
                          {{ item.warehouseName }}- {{ item.areaName }}-
                          {{ item.shelfCode }}- {{ item.cargoSpaceCode
                          }}<span style="color: #ff4949" v-if="item.num">
                            - {{ item.num }}(数)</span
                          >
                          <br />
                        </div>
                      </div>
                    </div>
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column
                label="质检单"
                v-if="formData.extInfo.assetType === 3"
                prop="contentImage"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="{ row, $index }">
                  <upload @on-success="(data) => (row.contentImage = [data])"
                    ><template slot="placeholder">上传</template></upload
                  >
                </template>
              </el-table-column>

              <el-table-column
                label="操作"
                width="200"
                fixed="right"
                align="center"
              >
                <template slot="header" slot-scope="scope"> 操作 </template>
                <template slot-scope="{ row, $index }">
                  <el-button
                    type="text"
                    v-show="!row.isSave"
                    @click="listSave(row, $index)"
                    >保存</el-button
                  >
                  <el-button
                    type="text"
                    v-show="row.isSave"
                    @click="listEdit(row, $index)"
                    >编辑</el-button
                  >
                  <el-button
                    type="text"
                    v-if="formData.bizType == 5"
                    v-show="!row.isSave"
                    @click="chooseAssets(row, $index)"
                    >选择资产编号</el-button
                  >
                  <el-button type="text" @click="listDel(row, $index)"
                    >删除</el-button
                  >
                </template>
              </el-table-column>
            </el-table>
          </el-form>
        </div>
        <div class="mt20">
          <header-title :title="`包装明细`">
            <div class="switch_right">
              <span v-if="materialCodeReqList.length != 0">
                分拆<el-switch
                  v-model="isDetail"
                  active-color="#13ce66"
                  inactive-color="#ff4949"
                  @change="handleIsDetail"
                  style="margin-left: 10px"
                >
                </el-switch>
              </span>

              <el-button
                style="margin-left: 20px"
                type="text"
                @click="dateSetting"
                v-if="!isSplit && formData.bizType != 5"
                >批量设置{{
                  curDateType === 'manufactureTime' ? '生产日期' : '采购日期'
                }}</el-button
              >
            </div>
          </header-title>

          <el-table
            v-if="showMaterialTable"
            ref="materialCodeReqListTable"
            :data="materialCodeReqList"
            tooltip-effect="dark"
            :key="formData.bizType"
            :header-cell-style="rowClass"
            style="width: 100%"
            stripe
            :max-height="300"
            @selection-change="handleSelectionChange"
          >
            <el-table-column
              v-if="formData.bizType != 5"
              type="selection"
              align="center"
              width="50"
              fixed="left"
            >
            </el-table-column>
            <el-table-column label="序号" type="index" width="50">
            </el-table-column>
            <el-table-column
              label="编码"
              prop="assetCode"
              width="130"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              label="名称"
              prop="assetName"
              width="150"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              label="批次号"
              prop="batchNo"
              width="70"
            ></el-table-column>
            <el-table-column
              :label="`包装编码`"
              prop="onlyCode"
              width="200"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              label="包装数量"
              prop="packingCount"
              width="80"
            ></el-table-column>
            <el-table-column
              label="包装单位"
              prop="packingUnit"
            ></el-table-column>
            <el-table-column
              label="计量数量"
              prop="minPackingCount"
            ></el-table-column>
            <el-table-column
              label="计量单位"
              prop="measuringUnit"
            ></el-table-column>
            <el-table-column label="物料代号" prop="materielCode">
              <template slot-scope="{ row }">
                <el-input
                  v-if="!row.isPack"
                  v-model="row.materielCode"
                ></el-input>
                <span v-else>{{ row.materielCode }}</span>
              </template>
            </el-table-column>
            <el-table-column label="客户代号" prop="clientCode">
              <template slot-scope="{ row }">
                <el-input
                  v-if="!row.isPack"
                  v-model="row.clientCode"
                ></el-input>
                <span v-else> {{ row.clientCode }}</span>
              </template>
            </el-table-column>
            <el-table-column label="刻码" prop="engrave">
              <template slot-scope="{ row }">
                <el-input v-if="!row.isPack" v-model="row.engrave"></el-input>
                <span v-else>{{ row.engrave }}</span>
              </template>
            </el-table-column>
            <el-table-column label="重量" prop="weight" width="100">
              <template slot-scope="{ row }">
                <el-input
                  v-if="!row.isPack"
                  v-model="row.weight"
                  @input="weightInput($event, row)"
                ></el-input>
                <span v-else>{{ row.weight }}</span>
              </template>
            </el-table-column>
            <el-table-column label="重量单位" prop="weightUtil">
              <template slot-scope="{ row }">
                {{ row.weightUtil }}
              </template>
            </el-table-column>

            <el-table-column label="质检结果" prop="result" width="120">
              <template slot-scope="{ row }">
                <DictSelection
                  v-if="!row.isPack"
                  @updateVal="changeWrapStatus($event, row)"
                  dictName="质检结果"
                  clearable
                  v-model="row.result"
                />
                <span v-else>{{ qualityResults[row.result] }}</span>
              </template>
            </el-table-column>
            <el-table-column label="质检状态" prop="status" width="120">
              <template slot-scope="{ row }">
                <!-- <DictSelection
                  dictName="质检状态"
                  clearable
                  v-model="row.status"
                ></DictSelection> -->
                <span>{{ qualityStatus[row.status] }}</span>
              </template>
            </el-table-column>

            <el-table-column
              v-if="formData.bizType != 5"
              label="生产日期"
              prop=""
              width="220"
            >
              <template slot="header" slot-scope="scope">
                <el-select :disabled="isSplit" filterable v-model="curDateType">
                  <el-option
                    value="manufactureTime"
                    label="生产日期"
                  ></el-option>
                  <el-option
                    value="procurementTime"
                    label="采购日期"
                  ></el-option>
                </el-select>
              </template>
              <template slot-scope="{ row }">
                <template v-if="formData.bizType == 5">
                  {{ row[curDateType] }}
                </template>
                <el-date-picker
                  v-else
                  :disabled="row.isPack"
                  size="small"
                  v-model="row[curDateType]"
                  type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  placeholder="选择日期"
                >
                </el-date-picker>
              </template>
            </el-table-column>
            <template v-else>
              <el-table-column
                label="生产日期"
                prop="manufactureTime"
                width="200"
              ></el-table-column>
              <el-table-column
                label="采购日期"
                prop="procurementTime"
                width="200"
              ></el-table-column>
            </template>
            <el-table-column
              v-if="!isSplit"
              label="操作"
              width="80"
              fixed="right"
            >
              <template slot-scope="{ row }">
                <el-button type="text" @click="packCout(row)">
                  {{ !row.isPack ? '保存' : '编辑' }}
                </el-button>
              </template>
            </el-table-column>
          </el-table>
          <!-- </el-tab-pane>
        </el-tabs> -->
        </div>
        <div class="mt20" v-if="isDetail">
          <header-title :title="`物料明细`"> </header-title>
          <el-table
            ref="resultArrayTable"
            :data="resultArray"
            tooltip-effect="dark"
            :key="formData.bizType"
            :header-cell-style="rowClass"
            style="width: 100%"
            stripe
            :max-height="300"
            @selection-change="handleSelectionChange"
          >
            <el-table-column label="序号" type="index" width="50">
            </el-table-column>
            <el-table-column
              label="编码"
              width="150"
              prop="assetCode"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              label="名称"
              prop="assetName"
              width="200"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              label="批次号"
              prop="batchNo"
              width="80"
            ></el-table-column>
            <el-table-column
              label="物料编码"
              prop="no"
              width="200"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              label="计量数量"
              prop="minPackingCount"
              width="90"
            ></el-table-column>
            <el-table-column
              width="80"
              label="计量单位"
              prop="measuringUnit"
            ></el-table-column>
            <el-table-column label="物料代号" prop="materielCode">
              <template slot-scope="{ row }">
                <el-input
                  v-if="!row.isPack"
                  v-model="row.materielCode"
                ></el-input>
                <span v-else>{{ row.materielCode }}</span>
              </template>
            </el-table-column>
            <el-table-column label="客户代号" prop="clientCode">
              <template slot-scope="{ row }">
                <el-input
                  v-if="!row.isPack"
                  v-model="row.clientCode"
                ></el-input>
                <span v-else>{{ row.clientCode }}</span>
              </template>
            </el-table-column>
            <el-table-column label="刻码" prop="engrave">
              <template slot-scope="{ row }">
                <el-input v-if="!row.isPack" v-model="row.engrave"></el-input>
                <span v-else>{{ row.engrave }}</span>
              </template>
            </el-table-column>
            <el-table-column label="重量" prop="weight" width="100">
              <template slot-scope="{ row }">
                <el-input v-if="!row.isPack" v-model="row.weight"></el-input>
                <span v-else>{{ row.weight }}</span>
              </template>
            </el-table-column>
            <el-table-column
              label="重量单位"
              prop="weightUnit"
              width="100"
            ></el-table-column>
            <el-table-column label="质检结果" prop="result" width="120">
              <template slot-scope="{ row }">
                <DictSelection
                  v-if="!row.isPack"
                  @updateVal="changeWrapStatus($event, row)"
                  dictName="质检结果"
                  clearable
                  v-model="row.result"
                />
                <span v-else>{{ qualityResults[row.result] }}</span>
              </template>
            </el-table-column>
            <el-table-column label="质检状态" prop="status" width="120">
              <template slot-scope="{ row }">
                <span>{{ qualityStatus[row.status] }}</span>
              </template>
            </el-table-column>
            <el-table-column label="操作" width="80" fixed="right">
              <template slot-scope="{ row }">
                <el-button type="text" @click="materialBtn(row)">
                  {{ !row.isPack ? '保存' : '编辑' }}
                </el-button>
              </template>
            </el-table-column>
          </el-table>
        </div>
      </div>
      <div class="center mt20">
        <el-button type="primary" @click="handleSave" :loading="saveLoading"
          >保存</el-button
        >
        <el-button @click="$router.go(-1)">返回</el-button>
      </div>
    </el-card>

    <selectType
      :visibleDialog.sync="visibleDialog"
      :title="title"
      :tableHeader="tableHeader"
      :bizScene="formData.bizType"
      :type="[selectEquiType]"
      :loadTree.sync="loadTree"
      @selectTableData="onSelectTableData"
    />
    <WareHouseDailog
      ref="wareHouseDailogRef"
      @houseData="houseData"
    ></WareHouseDailog>
    <ReturnSelect
      ref="returnSelectRef"
      :tableHeader="tableHeader"
      :curDateType="curDateType"
    ></ReturnSelect>
    <el-dialog :visible.sync="dateVisible" title="选择日期" width="400px">
      <el-date-picker
        size="small"
        v-model="batchTime"
        type="datetime"
        style="width: 320px"
        value-format="yyyy-MM-dd HH:mm:ss"
        placeholder="选择日期"
      >
      </el-date-picker>
      <div style="text-align: right; margin-top: 20px">
        <el-button @click="dateVisible = false">取消</el-button>
        <el-button type="primary" @click="dateConfirm" :disabled="!batchTime"
          >确认</el-button
        >
      </div>
    </el-dialog>
  </div>
</template>

<script>
  import basicInformation from './components/basicInformation.vue';
  import outin from '@/api/warehouseManagement/outin';
  import selectUpload from '@/components/selectUpload';
  import upload from '@/components/uploadImg';
  import selectTree from '@/components/selectTree';
  import selectType from '../components/selectType.vue';
  import WareHouseDailog from '../components/WareHouseDailog.vue';
  import ReturnSelect from './components/ReturnSelect.vue';
  import { tableHeader } from '../common';
  import { getCode } from '@/api/codeManagement/index.js';
  export default {
    components: {
      selectUpload,
      selectTree,
      selectType,
      WareHouseDailog,
      upload,
      ReturnSelect,
      basicInformation
    },
    data() {
      return {
        showMaterialTable: true, // 缓存包装明细列表
        isSplit: false, // 是否拆分到物料明细
        qualityStatus: {
          0: '未检',
          1: '已检',
          2: '部分检'
        }, // 质检状态 0未检 1已检
        qualityResults: {
          0: '合格',
          1: '不合格',
          3: '让步接收'
        }, // 质检结果 0合格 1不合格 3让步接收
        isWeight: true, // 解决Table数据不显示问题
        resultArray: [], // 物料明细列表
        isDetail: false, // 是否分拆
        saveLoading: false, // 保存状态
        visibleDialog: false, // 添加入库明细弹框
        curDateType: 'manufactureTime', // 当前时间类型（生产日期、采购日期）
        materialCodeReqListSelected: [],
        // warehouseList: [], //仓库数组
        // warehouse: {},
        title: '', // 物品类型名称
        supplierList: [],
        warehousingMaterialList: [], // 产品信息列表
        activeName: 'a',
        loadTree: true,
        selectEquiType: '', // 物品类型ID
        batchTime: '',
        dateVisible: false,
        formData: {
          extInfo: {
            assetType: '', //物品类型id
            assetTypeName: '', //物品类型名称(后台无此字段前端使用)
            deptCode: '', //部门code
            deptName: '', //部门名称
            verifyDeptCode: '', //审核部门编码
            verifyDeptName: '', //审核部门名称
            deliveryName: '', //送货人名称
            deliveryPhone: '', //送货人电话
            documentSource: '', //销售订单
            urgent: '', //紧急状态
            supplierId: '', //供应商ID
            supplierName: '', //供应商名称
            createUserName: '', //创建人名字
            contentImage: [] //图片数组
          },
          fromUser: '', //送货人
          bizType: '', // 入库类型
          verifyId: '', //审核人Id
          verifyName: '', //审核人名称
          createUserId: '', // 创建人id
          clientName: '', // 客户名称
          clientCode: '', // 客户编号
          remark: '' // 备注
        },
        rules: {
          'extInfo.assetType': {
            required: true,
            message: '请选择物品类型',
            trigger: 'change'
          },
          bizType: {
            required: true,
            message: '请选择入库场景',
            trigger: 'change'
          }
        }
      };
    },
    computed: {
      // 条码信息
      materialCodeReqList() {
        return this.warehousingMaterialList
          .map((i) => i.warehouseLedgerDetails || [])
          .flat();
      },
      tableHeader() {
        return tableHeader(this.selectEquiType);
      }
    },
    methods: {
      // 包装维度最小包装单元改变——>总重量
      minPackingCountChange(row, value) {
        row.minPackingCount = value.replace(/^(0+)|[^\d]+/g, '');
        if (row.outInNum >= 0 && value >= 0) {
          this.packNum(row, row.outInNum);
        }
      },
      // 接收表单数据动态数据
      formDataChange(val) {
        this.formData = val;
      },
      // 选择质检结果改变质检状态
      changeWrapStatus(resultValue, row) {
        switch (resultValue) {
          case '':
            // 清空质检状态
            row.status = '0';
            break;
          default:
            // 默认已检质检状态
            row.status = '1';
            break;
        }
      },
      // 添加明细
      async onSelectTableData(val) {
        const res = await getCode('lot_number_code');
        this.warehousingMaterialList.push(
          ...val.map((next) => {
            next.batchNo = res;
            let cur = {};

            next.realInventoryAmount = next.realInventoryAmount || 0;
            cur = {
              ...next,
              cargoSpaceCode: '', //货位编码
              cargoSpaceId: '', //货位id
              shelfId: '', //货架id
              shelfCode: '', //货架名称
              areaId: '', //库区id
              areaName: '', //库区名称
              warehouseId: '', //仓库id
              warehouseName: '', //仓库名称
              assetType: this.formData.extInfo.assetType,
              expirationDate: '',
              outInNum: '',
              minPackingCount: '',
              bizStatus: 1,
              contentImage: [],
              warehouseLedgerDetails: [],
              houseList: []
            };
            return cur;
          })
        );
      },
      // 设置重量
      weightInput(value, row) {
        const newValue = value.replace(/[^\d.]/g, ''); // 保留数字和小数点
        const decimalCount = (newValue.match(/\./g) || []).length; // 计算小数点的个数
        if (decimalCount > 1) {
          // 如果小数点个数大于1，移除多余的小数点
          const lastIndex = newValue.lastIndexOf('.');
          row.weight =
            newValue.slice(0, lastIndex) + newValue.slice(lastIndex + 1);
        } else if (decimalCount === 1) {
          // 如果小数点个数等于1，允许小数点的输入
          row.weight = newValue;
        } else {
          row.weight = newValue === '' ? 0 : parseFloat(newValue); // 如果输入为空，则设为0
        }
      },
      // 分拆包装
      handleIsDetail(event) {
        this.isSplit = event;
        const list = this.materialCodeReqList;
        if (event) {
          let resultArray = [];
          list.forEach((item) => {
            // 包装维度改成已保存状态
            item.isPack = true;
            // 拆分物料维度并生成列表
            for (let i = 1; i <= Number(item.minPackingCount); i++) {
              resultArray.push({
                onlyCode: item.onlyCode,
                no: item.onlyCode + i.toString().padStart(4, '0'),
                assetCode: item.assetCode,
                assetName: item.assetName,
                batchNo: item.batchNo,
                minPackingCount: 1,
                measuringUnit: item.measuringUnit,
                materielCode: item.materielCode,
                clientCode: item.clientCode,
                weight: item.weight / Number(item.minPackingCount),
                weightUnit: item.weightUnit,
                engrave: item.engrave,
                result: item.result,
                status: item.status,
                isPack: false
              });
            }
          });

          this.resultArray = resultArray;
          // 批量修改包装明细
          this.isWeight = false;
          this.bulkEditingWrap();
          this.$nextTick(() => {
            this.isWeight = true;
          });
        } else {
          // 包装维度改成编辑状态
          list.forEach((item) => {
            item.isPack = false;
          });
          // 清空物料维度列表
          this.resultArray = [];
        }
      },
      //包装明细保存
      packCout(row) {
        //true保存==》反之
        if (!row.isPack) {
          row.isPack = true;
          const code = row.assetCode;
          const batchNo = row.batchNo;
          //做防护，防止weight字符串类型
          this.materialCodeReqList.forEach((ele) => {
            ele.weight = Number(ele.weight);
          });
          // 修改产品信息重量（包装维度累计）
          this.isWeight = false;
          this.warehousingMaterialList.forEach((item) => {
            if (item.assetCode == code && item.batchNo == batchNo) {
              let arr = [];
              for (const key in this.materialCodeReqList) {
                if (
                  this.materialCodeReqList[key].assetCode == item.assetCode &&
                  this.materialCodeReqList[key].batchNo == item.batchNo
                ) {
                  arr.push({ ...this.materialCodeReqList[key] });
                }
              }
              const count = arr.reduce(
                (acc, curr) =>
                  Number(this.$math.format(+acc + +curr.weight, 14)),
                0
              );
              this.$set(item, 'weight', count);
            }
          });
          this.$nextTick(() => {
            this.isWeight = true;
          });
        } else {
          row.isPack = false;
        }
      },
      // 批量修改包装明细
      bulkEditingWrap() {
        // 批量修改包装明细列表状态（已保存）
        this.materialCodeReqList.forEach((item) => {
          item.isPack = true;
        });
        // 改变产品明细重量
        this.warehousingMaterialList.forEach((outItem) => {
          let arr = [];
          this.materialCodeReqList.forEach((inneritem) => {
            if (
              inneritem.assetCode == outItem.assetCode &&
              inneritem.batchNo == outItem.batchNo
            ) {
              arr.push(inneritem);
            }
          });
          const count = arr.reduce(
            (acc, curr) => Number(this.$math.format(+acc + +curr.weight, 14)),
            0
          );
          this.$set(outItem, 'weight', count);
        });
      },
      // 批量修改物料明细
      bulkEditingMaterial() {
        // 批量修改物料明细列表状态（已保存）
        this.resultArray.forEach((item) => {
          item.isPack = true;
        });
        // 改变包装明细重量
        this.materialCodeReqList.forEach((outItem) => {
          let arr = [];
          this.resultArray.forEach((inneritem) => {
            if (
              inneritem.assetCode == outItem.assetCode &&
              inneritem.batchNo == outItem.batchNo
            ) {
              arr.push(inneritem);
            }
          });
          const count = arr.reduce(
            (acc, curr) => Number(this.$math.format(+acc + +curr.weight, 14)),
            0
          );
          this.$set(outItem, 'weight', count);
        });
      },
      // 物料明细保存
      materialBtn(row) {
        // true保存 false编辑
        if (!row.isPack) {
          row.isPack = true;
          // 物料维度修改质检改变包装维度质检（结果和状态）
          this.materialCodeReqList.forEach((outItem) => {
            let arr = [];
            this.resultArray.forEach((inneritem) => {
              if (inneritem.onlyCode == outItem.onlyCode) {
                arr.push(inneritem);
              }
            });
            console.log(arr);
            // 首先判断是未填/合格不合格
            let boolen = arr.every((item) => {
              return item.result === '' || item.result === undefined;
            });
            // 判断只要物料全部质检结果(未填)——>包装质检结果(未填) 状态(未检)
            if (boolen) {
              this.$set(outItem, 'result', '');
              this.$set(outItem, 'status', '0');
            } else {
              // 判断只要物料有一个质检结果(不合格)——>包装质检结果(不合格) 状态(已检)
              let boolen = arr.some((item) => {
                return item.result === '1';
              });
              if (boolen) {
                this.$set(outItem, 'result', '1');
                this.$set(outItem, 'status', '1');
              } else {
                // 判断只要物料有一个质检结果(让步接收)——>包装质检结果(让步接收) 状态(已检)
                let boolen = arr.some((item) => {
                  return item.result === '3';
                });
                if (boolen) {
                  // 让步接收 已检
                  this.$set(outItem, 'result', '3');
                  this.$set(outItem, 'status', '1');
                } else {
                  // 判断只要物料有全部质检结果(合格)——>包装质检结果(合格) 状态(已检)
                  let boolen = arr.every((item) => {
                    return item.result === '0';
                  });
                  if (boolen) {
                    // 合格 已检
                    this.$set(outItem, 'result', '0');
                    this.$set(outItem, 'status', '1');
                  } else {
                    // 合格 部分检
                    this.$set(outItem, 'result', '0');
                    this.$set(outItem, 'status', '2');
                  }
                }
              }
            }
            // this.$set(outItem, 'result', boolen ? '1' : '0');
          });
          // 物料维度修改重量改变包装维度重量
          let onlyCode = row.onlyCode;
          this.materialCodeReqList.forEach((item) => {
            if (item.onlyCode === onlyCode) {
              let arr = [];
              for (const key in this.resultArray) {
                if (this.resultArray[key].onlyCode == item.onlyCode) {
                  arr.push({ ...this.resultArray[key] });
                }
              }
              const count = arr.reduce(
                (acc, curr) =>
                  Number(this.$math.format(+acc + +curr.weight, 14)),
                0
              );
              this.$set(item, 'weight', count);
            }
          });
          // 包装维度修改重量改变产品信息
          this.isWeight = false;
          // 批量修改包装明细
          this.bulkEditingWrap();
          this.$nextTick(() => {
            this.isWeight = true;
          });
        } else {
          row.isPack = false;
        }
      },
      // 修改包装数量——>总重量
      packNum(row, value) {
        const total = {
          packingCount: Number(row.minPackingCount),
          outInNum: Number(row.outInNum)
        };
        if (row.measuringUnit == row.weightUnit) {
          row.weight = Number(
            this.$math.format(
              total.packingCount * 1 * total.outInNum.toFixed(2),
              14
            )
          );
        } else {
          const totals = Number(
            this.$math.format(total.packingCount * total.outInNum, 14)
          );
          row.weight = Number(
            this.$math.format(totals * row.netWeight.toFixed(2), 14)
          );
        }
        return (row.outInNum = value.replace(/^(0+)|[^\d]+/g, ''));
      },
      //计算生产设备重量
      deviceWeight(row, num) {
        if (row) {
          return Number(row * num);
        } else {
          return row;
        }
      },
      //计算金额
      calcSumTotal(PackingCount, outInNum, univalence) {
        //最小包装单元,包装数量,单价
        const total = {
          PackingCount: Number(PackingCount),
          outInNum: Number(outInNum),
          univalence: Number(univalence == undefined ? 0 : univalence)
        };
        return this.$math.format(
          total.PackingCount * total.outInNum * total.univalence,
          14
        );
      },
      // 设置单位
      handleRowUnit(row) {
        return row.measuringUnit;
      },
      // 列表样式
      rowClass({ row, column, rowIndex, columnIndex }) {
        if (rowIndex === 1) {
          return {
            display: 'none',
            background: '#EEEEEE',
            border: 'none'
          };
        }

        return { background: '#EEEEEE', border: 'none' };
      },
      calcSum(a, b, c, row) {
        if (
          (Number.isNaN(+a) && a !== '') ||
          (Number.isNaN(+b) && b !== '') ||
          (Number.isNaN(+c) && c !== '')
        ) {
          return '';
        }
        return a * b * c + { yuan: '元', wanyuan: '万元' }[row.univalenceUnit];
        // return a * b * c;
      },
      // 选择资产编号
      chooseAssets(row) {
        this.$refs.returnSelectRef.open(row, (res) => {
          row.outInNum = res.length;

          this.$set(
            row,
            'selfWarehouseLedgerDetails',
            res.map((i) => {
              delete i.updateTime;
              delete i.createTime;
              return i;
            })
          );
        });
      },
      // 仓库编辑
      handleWareHouse(row, idx) {
        this.$refs.wareHouseDailogRef.open(row, idx);
      },
      // 入库操作
      listEdit(row) {
        this.$set(row, 'isSave', false);
        row.selfWarehouseLedgerDetails = row.warehouseLedgerDetails;
        row.warehouseLedgerDetails = [];
      },
      // 包装维度每行保存操作
      listSave(row, index) {
        // bizType 1生产入库 2采购入库 3归还入库 4领料退货入库 5其他入库 6销售退货入库
        // 存储from需要校验字段
        const fileds = [
          // `warehousingMaterialList.${index}.cargoSpaceCode`,
          `warehousingMaterialList.${index}.batchNo`,
          `warehousingMaterialList.${index}.houseList`
        ];
        if (this.formData.bizType != 5) {
          fileds.push(
            ...[
              `warehousingMaterialList.${index}.outInNum`,
              `warehousingMaterialList.${index}.minPackingCount`
            ]
          );
        } else if (
          this.warehousingMaterialList.some(
            (i) => !i.selfWarehouseLedgerDetails?.length
          )
        ) {
          this.$message.error('请选择资产编号！');
          return;
        }
        // 对必填字段进行校验
        Promise.all(
          fileds.map(
            (item) =>
              new Promise(async (resolve, rej) => {
                this.$refs.warehousingMaterialListRef.validateField(
                  item,
                  (err) => {
                    if (err) {
                      rej(err);
                    } else {
                      resolve();
                    }
                  }
                );
              })
          )
        )
          .then((res) => {
            this.$set(row, 'isSave', true);
            if (this.formData.bizType != 5) {
              this.createMaterialCode(row);
            } else {
              // 退还
              this.createMaterialCodeReturn(row);
            }
          })
          .catch((err) => {
            this.$message.error('请填入必填项！');
          });
      },
      listSaveArrs() {
        const rows = this.warehousingMaterialList;
        const indexes = Array.from(
          { length: this.warehousingMaterialList.length },
          (_, index) => index
        );
        rows.forEach((row, i) => {
          const index = indexes[i];
          const fileds = [
            // `warehousingMaterialList.${index}.cargoSpaceCode`,
            `warehousingMaterialList.${index}.batchNo`,
            `warehousingMaterialList.${index}.houseList`
          ];
          if (this.formData.bizType == 1) {
            // fileds.push(...[`warehousingMaterialList.${index}.customCode`]);
          } else if (this.formData.bizType == 2) {
            // fileds.push(...[`warehousingMaterialList.${index}.supplierCode`]);
          }
          if (this.formData.bizType != 5) {
            fileds.push(
              ...[
                `warehousingMaterialList.${index}.outInNum`,
                `warehousingMaterialList.${index}.minPackingCount`
              ]
            );
          } else if (
            this.warehousingMaterialList.some(
              (i) => !i.selfWarehouseLedgerDetails?.length
            )
          ) {
            this.$message.error('请选择资产编号！');
            return;
          }
          Promise.all(
            fileds.map(
              (item) =>
                new Promise(async (resolve, rej) => {
                  this.$refs.warehousingMaterialListRef.validateField(
                    item,
                    (err) => {
                      if (err) {
                        rej(err);
                      } else {
                        resolve();
                      }
                    }
                  );
                })
            )
          )
            .then((res) => {
              this.$set(row, 'isSave', true);
              if (this.formData.bizType != 5) {
                this.createMaterialCode(row);
              } else {
                // 退还
                this.createMaterialCodeReturn(row);
              }
            })
            .catch((err) => {
              // this.$message.error('请填入必填项！');
            });
        });
      },
      // 批量勾选列表
      handleSelectionChange(val) {
        this.materialCodeReqListSelected = val;
      },
      // 打开批量设置日期弹框
      dateSetting() {
        if (!this.materialCodeReqListSelected.length) {
          return this.$message.error(`请选择${this.title}明细！`);
        }
        this.dateVisible = true;
      },
      // 批量确认日期（生产日期、采购日期）
      dateConfirm() {
        this.materialCodeReqListSelected.forEach((item) => {
          this.$set(item, this.curDateType, this.batchTime);
        });
        this.dateVisible = false;
      },
      //入库明细删除
      listDel(row, index) {
        this.warehousingMaterialList.splice(index, 1);
        this.resultArray = [];
        this.isDetail = false;
      },
      // 入库明细生成条码信息
      async createMaterialCode(row) {
        // 添加相同物品、批次号重新更新明细 原料编码
        const list = this.warehousingMaterialList.filter(
          (i) =>
            i.assetCode === row.assetCode &&
            i.batchNo === row.batchNo &&
            i.isSave
        );
        const num = list.reduce((num, pre) => {
          num += row.isUnpack
            ? Number(this.$math.format(pre.outInNum * pre.minPackingCount, 14))
            : pre.outInNum - 0;
          return num;
        }, 0);

        const nums = list.reduce((num, pre) => {
          num += Number(
            this.$math.format(pre.outInNum * pre.minPackingCount, 14)
          );

          return num;
        }, 0);

        const res = await outin.getAssetNum({
          assetCode: row.assetCode,
          batchNum: row.batchNo,
          num: num
        });
        // row.measuringUnit == 'PCS' ? nums :

        list.forEach((item) => {
          if (item.warehouseLedgerDetails?.length) {
            item.warehouseLedgerDetails.forEach((i) => {
              i.onlyCode = res.shift().onlyCode;
            });
          } else {
            this.$set(
              item,
              'warehouseLedgerDetails',
              Array.from(
                new Array(
                  item.isUnpack
                    ? Number(
                        this.$math.format(
                          item.outInNum * item.minPackingCount,
                          14
                        )
                      )
                    : // : item.measuringUnit == 'PCS'
                      // ? +item.outInNum * parseInt(item.minPackingCount)
                      +item.outInNum
                ),
                (val, idx) => {
                  return {
                    ...item,
                    onlyCode: res.shift().onlyCode,
                    bizStatus: 1,
                    contentImage: []
                  };
                }
              )
            );
          }
        });

        // 添加相同物品，重复批次号 重新更新明细 包装编码
        const batchList = this.warehousingMaterialList.filter(
          (i) => i.batchNo === row.batchNo && i.isSave
        );
        if (batchList.length) {
          const num = batchList.reduce((num, pre) => {
            num += +pre.outInNum;
            return num;
          }, 0);
          const res1 = await outin.getAssetNum({
            batchNum: row.batchNo,
            num
          });
          if (res1) {
            batchList.forEach((item) => {
              let num = res1.shift()?.num;
              let minPackingCount = item.minPackingCount;
              if (item.warehouseLedgerDetails?.length) {
                item.warehouseLedgerDetails.forEach((i, index) => {
                  this.$set(i, 'num', num);
                  if (item.measuringUnit == item.weightUnit) {
                    this.$set(i, 'weight', item.minPackingCount);
                  } else {
                    this.$set(
                      i,
                      'weight',
                      Number(
                        this.$math.format(
                          1 * item.minPackingCount * item.netWeight,
                          14
                        )
                      )
                    );
                  }

                  this.$set(i, 'weightUtil', item.weightUnit);

                  this.$set(i, 'packingCount', 1);
                  this.$set(i, 'packingUnit ', item.packingUnit);
                  this.$set(i, 'minPackingCount ', item.minPackingCount);
                  this.$set(i, 'measuringUnit', item.measuringUnit);
                  this.$set(i, 'isPack', false);
                  if (this.formData.extInfo.assetType == 1) {
                    this.$set(i, 'status', '0');
                  } else {
                    this.$set(i, 'result', '0');
                    this.$set(i, 'status', '1');
                  }

                  if (!item.isUnpack) {
                    if (index < item.warehouseLedgerDetails.length - 1) {
                      num = res1.shift()?.num;
                    }
                  } else {
                    // 拆包的包装编码一致
                    minPackingCount--;
                    if (
                      minPackingCount === 0 &&
                      index < item.warehouseLedgerDetails.length - 1
                    ) {
                      minPackingCount = item.minPackingCount;
                      num = res1.shift()?.num;
                    }
                  }
                });
              }
            });
          }
        }
      },
      // 入库明细生成条码信息 退还
      async createMaterialCodeReturn(row) {
        // 添加相同物品重新更新明细 原料编码
        const list = this.warehousingMaterialList.filter(
          (i) => i.batchNo === row.batchNo && i.isSave
        );
        // 退还
        const res = await getAssetNum({
          batchNo: row.batchNo,
          num: list.reduce((num, pre) => {
            num += pre.selfWarehouseLedgerDetails.length;
            return num;
          }, 0)
        });
        if (res?.success) {
          list.forEach((item) => {
            let num = res.data.shift().num;
            let minPackingCount = item.minPackingCount;
            if (item.warehouseLedgerDetails?.length) {
              item.warehouseLedgerDetails.forEach((i, index) => {
                Object.assign(i, {
                  num,
                  batchNo: item.batchNo,
                  cargoSpaceCode: item.cargoSpaceCode, //货位编码
                  cargoSpaceId: item.cargoSpaceId, //货位id
                  shelfId: item.shelfId, //货架id
                  shelfCode: item.shelfCode, //货架名称
                  areaId: item.areaId, //库区id
                  areaName: item.areaName, //库区名称
                  warehouseId: item.warehouseId, //仓库id
                  warehouseName: item.warehouseName //仓库名称
                });

                if (!item.isUnpack) {
                  // 拆包的包装编码一致

                  if (index < item.warehouseLedgerDetails.length - 1) {
                    num = res.data.shift()?.num;
                  }
                } else {
                  minPackingCount--;
                  if (
                    minPackingCount === 0 &&
                    index < item.warehouseLedgerDetails.length - 1
                  ) {
                    minPackingCount = item.minPackingCount;
                    num = res1.data.shift()?.num;
                  }
                }
              });
            } else {
              this.$set(
                item,
                'warehouseLedgerDetails',
                item.selfWarehouseLedgerDetails.map((val, idx) => {
                  let obj = {
                    ...val,
                    bizStatus: 1,
                    minPackingCount: item.minPackingCount,
                    batchNo: item.batchNo,
                    cargoSpaceCode: item.cargoSpaceCode, //货位编码
                    cargoSpaceId: item.cargoSpaceId, //货位id
                    shelfId: item.shelfId, //货架id
                    shelfCode: item.shelfCode, //货架名称
                    areaId: item.areaId, //库区id
                    areaName: item.areaName, //库区名称
                    warehouseId: item.warehouseId, //仓库id
                    warehouseName: item.warehouseName, //仓库名称
                    materialId: item.materialId,
                    num
                  };
                  if (!item.isUnpack) {
                    // 拆包的包装编码一致
                    if (idx < item.warehouseLedgerDetails.length - 1) {
                      num = res.data.shift()?.num;
                    }
                  } else {
                    minPackingCount--;
                    if (
                      minPackingCount === 0 &&
                      idx < item.warehouseLedgerDetails.length - 1
                    ) {
                      minPackingCount = item.minPackingCount;
                      num = res1.data.shift()?.num;
                    }
                  }
                  return obj;
                })
              );
            }
          });
        }
      },
      // 保存入库
      handleSave() {
        this.$refs.basicInformation
          .formValidate()
          .then(async () => {
            if (!this.warehousingMaterialList?.length) {
              return this.$message.error('请添加入库明细！');
            } else if (
              this.warehousingMaterialList.some((item) => !item.isSave)
            ) {
              return this.$message.error('请保存入库明细！');
            }
            console.log(
              'this.warehousingMaterialList---',
              this.warehousingMaterialList
            );
            this.formatWarehouseMaterialList();

            let arr = this.warehousingMaterialList.map((item) => {
              return {
                netWeight: item.netWeight,
                num: item.num,
                batchNo: item.batchNo,
                categoryId:
                  this.formData.bizType == 2
                    ? item.categoryId
                      ? item.categoryId
                      : item.id
                    : item.id,
                count: parseInt(item.outInNum) * parseInt(item.minPackingCount),
                minPackingCount: item.minPackingCount,
                packingCount: item.outInNum,
                price: item.univalence,
                outInDetailRecordAddPOList: item.warehouseLedgerDetails,
                position: `${item.warehouseName}-${item.areaName}-${item.shelfCode}-${item.cargoSpaceCode}`,
                remark: '',
                pathIds: `${item.warehouseId},${item.areaId},${item.shelfId},${item.cargoSpaceId}`,
                pathName: `${item.warehouseName},${item.areaName},${item.shelfCode},${item.cargoSpaceCode}`,
                totalMoney:
                  item.outInNum * item.minPackingCount * item.univalence,
                weightUnit: item.weightUnit,
                customCode: item.customCode,
                supplierCode: item.supplierCode,
                weight: item.weight
              };
            });

            arr.forEach((item) => {
              if (item.outInDetailRecordAddPOList.length > 0) {
                let list = item.outInDetailRecordAddPOList.map((it) => {
                  return this.formatOutInDetailRecordAddPO(it, item);
                });
                item.outInDetailRecordAddPOList = list;
              }
            });
            let obj = { ...this.formData, type: 1 };
            obj.sourceBizNo = this.formData.extInfo.documentSource;

            obj.outInDetailAddPOList = arr;
            console.log('=====>', obj);
            this.saveLoading = true;
            try {
              const res = await outin.save(obj);
              if (res.code == 0) {
                await outin.outApproves({ outInId: res.data });
                this.$message.success('保存成功！');
              }
            } catch (error) {
              console.error('保存失败：', error);
            }
            this.saveLoading = false;
            this.$router.push('/warehouseManagement/stockManagement');
          })
          .catch((error) => {
            console.log(error);
          });
      },
      formatWarehouseMaterialList() {
        for (let key in this.warehousingMaterialList) {
          for (let k in this.warehousingMaterialList[key].houseList) {
            let house = this.warehousingMaterialList[key].houseList[k];
            this.warehousingMaterialList[key].warehouseName =
              house.warehouseName;
            this.warehousingMaterialList[key].areaName = house.areaName;
            this.warehousingMaterialList[key].shelfCode = house.shelfCode;
            this.warehousingMaterialList[key].cargoSpaceCode =
              house.cargoSpaceCode;
            this.warehousingMaterialList[key].warehouseId = house.warehouseId;
            this.warehousingMaterialList[key].areaId = house.areaId;
            this.warehousingMaterialList[key].shelfId = house.shelfId;
            this.warehousingMaterialList[key].cargoSpaceId = house.cargoSpaceId;
            this.warehousingMaterialList[key].num = house.num;
          }
        }
      },
      formatOutInDetailRecordAddPO(it, item) {
        return {
          code: it.onlyCode,
          dateType: this.curDateType === 'manufactureTime' ? 2 : 1,
          dateValue: it[this.curDateType],
          minUnit: it.minPackingCount,
          minPositionId: it.cargoSpaceId,
          name: it.assetName,
          pathIds: item.pathIds,
          unit: it.unit,
          packageNo: it.num,
          clientCode: it.clientCode,
          materielCode: it.materielCode,
          weight: it.weight,
          weightUtil: it.weightUtil,
          engrave: it.engrave,
          materialDetails: this.materialDetails(it.onlyCode),
          packingCount: it.packingCount,
          status: it.status,
          result: it.result
        };
      },
      materialDetails(onlyCode) {
        return this.resultArray.filter((item) => item.onlyCode === onlyCode);
      },
      addStock() {
        this.title = this.formData.extInfo.assetTypeName;
        this.selectEquiType = this.formData.extInfo.assetType;
        if (!this.title) return this.$message.error('请选择入库产品类型');
        if (!this.formData.bizType) {
          return this.$message.error('请选择入库场景');
        }
        this.visibleDialog = true;
      },
      upload(data) {
        this.formData.contentImage = data;
        this.$refs.formName.validateField('contentImage');
      },
      houseData(argum, idx) {
        this.$set(this.warehousingMaterialList[idx], 'houseList', argum);
      }
    },
    watch: {
      // 解决右侧悬浮操作栏不对称问题
      warehousingMaterialList: {
        handler() {
          this.$nextTick(() => {
            this.$refs.warehousingMaterialListTable.doLayout();
          });
        },
        deep: true
      },
      // 解决右侧悬浮操作栏不对称问题
      materialCodeReqList: {
        handler() {
          this.$nextTick(() => {
            this.$refs.materialCodeReqListTable.doLayout();
          });
        },
        deep: true
      },
      // 解决右侧悬浮操作栏不对称问题
      resultArray: {
        handler() {
          this.$nextTick(() => {
            this.$refs.resultArrayTable.doLayout();
          });
        },
        deep: true
      }
    }
  };
</script>

<style lang="scss" scoped>
  ::v-deep.form-table {
    .el-form-item {
      margin-bottom: 0;
    }
    .el-input__inner {
      padding: 0 10px;
    }
    ::-webkit-scrollbar {
      width: 8px;
      height: 8px;
      background-color: transparent;
    }
  }
  .p20 {
    padding: 20px;
  }
  .el-select,
  .el-date-editor {
    width: 100%;
  }
  .el-form-item {
    margin-bottom: 22px;
  }
  .material {
    margin-top: 20px;
    .flex {
      display: flex;
      justify-content: space-between;
      font-size: 14px;
      align-items: center;
      .red {
        color: #ff4949;
      }
    }
  }
  .mt10 {
    margin-top: 10px;
  }
  .mt20 {
    margin-top: 20px;
  }
  .center {
    text-align: center;
  }

  .switch_left li {
    border-right: 1px solid rgba(222, 222, 222, 1);
    border-left: 1px solid rgba(222, 222, 222, 1);
  }
  .fontOmitted {
    text-overflow: ellipsis;
    overflow: hidden;
    word-break: break-all;
    white-space: nowrap;
  }
  .table-fixed {
    .el-table__fixed-right {
      height: 100% !important;
    }
    .el-table__fixed-left {
      height: 100% !important;
    }
    .el-table__fixed {
      height: 100% !important;
    }
  }
</style>
