<template>
  <div>
    <el-card class="box-card">
      <div style="padding: 8px; text-align: center" v-if="formData.data.code || formData.data.wlnCode">
        <span style="font-size: 18px; font-weight: 700">{{ formData.data.code }} </span>
        <span style="font-size: 18px; font-weight: 700" v-if="formData.data.wlnCode"> ({{ formData.data.wlnCode }})</span>
      </div>
      <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="submit">
        <template #type>
          <div style="width: 100%">
            <el-radio-group v-model="formData.data.type">
              <el-radio v-for="(itemType, index) in typeList" :key="index" :label="itemType.dictKey">{{ itemType.dictValue }}</el-radio>
            </el-radio-group>
          </div>
        </template>
        <template #departmentId>
          <div style="width: 100%">
            <el-select v-model="formData.data.departmentId" placeholder="请选择事业部" clearable style="width: 100%">
              <el-option v-for="item in departmentList" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
            </el-select>
          </div>
        </template>
        <template #orderSkuList>
          <div style="width: 100%; padding: 0 20px">
            <el-collapse v-model="activeNames">
              <div v-for="(item, index) in formData.data.orderSkuList" :key="index" style="margin-bottom: 20px">
                <div style="border: 1px solid #edf0f5">
                  <el-table :data="[item]" :row-style="{ height: '35px' }" header-row-class-name="tableHeader">
                    <el-table-column label="产品" width="300">
                      <template #default="{ row }">
                        <div style="width: 100%">
                          <div style="line-height: 35px">
                            <span style="color: black; font-weight: 700">商品名称: </span>
                            <span>{{ item.wlnSkuName }}</span>
                          </div>
                          <div style="line-height: 35px">
                            <span style="color: black; font-weight: 700">品号: </span>
                            <span>{{ item.code }}</span>
                          </div>
                          <div style="line-height: 35px; word-break: break-all">
                            <span style="color: black; font-weight: 700">品名: </span>
                            <span>{{ item.name }}</span>
                          </div>
                          <div style="line-height: 35px; display: flex">
                            <span style="width: 37px; color: black; font-weight: 700">数量: </span>
                            <el-form-item style="width: calc(100% - 37px)">
                              {{ row.quantity }}
                            </el-form-item>
                          </div>
                          <div style="line-height: 35px">
                            <span style="color: black; font-weight: 700">加工费: </span>
                            <span>{{ item.customProcessingFee }}</span>
                          </div>
                          <div style="line-height: 35px">
                            <span style="color: black; font-weight: 700">代发费: </span>
                            <span>{{ item.lssueFee }}</span>
                          </div>
                          <div style="line-height: 35px">
                            <span style="color: black; font-weight: 700">快递包材费: </span>
                            <span>{{ item.deliveryMaterialsFee }}</span>
                          </div>
                          <div style="line-height: 35px">
                            <span style="color: black; font-weight: 700">包装人工费: </span>
                            <span>{{ item.packingLabor }}</span>
                          </div>
                          <div style="line-height: 35px">
                            <span style="color: black; font-weight: 700">管理费: </span>
                            <span>{{ item.managementFee }}</span>
                          </div>
                          <div style="line-height: 35px">
                            <span style="color: black; font-weight: 700">单价: </span>
                            <span>{{ item.unitPrice }}</span>
                          </div>
                          <div style="line-height: 35px">
                            <span style="color: black; font-weight: 700">小计: </span>
                            <span>{{ getSubtotal(item) }}</span>
                          </div>
                          <div style="line-height: 35px">
                            <span style="width: 37px; color: black; font-weight: 700">打印: </span>
                            <el-form-item
                              :prop="'orderSkuList.' + index + '.printType'"
                              :rules="rules.printType"
                              :inline-message="true"
                              style="width: calc(100% - 37px)">
                              {{ dictKeyValue(item.printType, printType) }}
                            </el-form-item>
                          </div>
                        </div>
                      </template>
                    </el-table-column>
                    <el-table-column label="产品图稿" width="400">
                      <template #default="{ row }">
                        <div style="display: flex; width: 100%">
                          <div style="width: 80px">设计图:</div>
                          <div style="width: calc(100% - 80px)">
                            <el-image
                              fit="scale-down"
                              style="width: 148px; height: 148px; margin-right: 10px; cursor: pointer"
                              v-if="row.blueprint"
                              :src="row.blueprint"
                              @click="openFile(row.blueprint)" />
                            <div style="display: flex">
                              <el-button type="primary" @click="clickDrawingFile(index)" text>选择图稿</el-button>
                              <el-upload
                                :show-file-list="false"
                                action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
                                :data="uploadImgData"
                                :before-upload="uploadImgFile"
                                :on-success="
                                  (response, uploadFile) => {
                                    return handleImgSuccess(uploadFile, index);
                                  }
                                "
                                style="width: 100%"
                                accept=".docx,.jpg,.jpeg,.png,.GIF,.JPG,.PNG">
                                <el-button type="primary" style="margin-left: 12px" text>上传图片</el-button>
                              </el-upload>
                            </div>
                          </div>
                        </div>
                        <div style="display: flex; margin-top: 20px; width: 100%">
                          <div style="width: 80px">图稿文件:</div>
                          <div style="width: calc(100% - 80px)">
                            <a
                              style="color: #16e5c1; cursor: pointer; word-break: break-all; margin-right: 10px"
                              @click="openFile(row.productionDocument)"
                              v-if="row.productionDocument">
                              {{ row.productionDocument }}
                            </a>
                            <div style="display: flex">
                              <el-button type="primary" @click="clickDrawingFile(index)" text>选择图稿</el-button>
                              <el-upload
                                :show-file-list="false"
                                action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
                                :data="uploadData"
                                :before-upload="uploadFile"
                                :on-success="
                                  (response, uploadFile) => {
                                    return handleSuccess(uploadFile, index);
                                  }
                                "
                                style="width: 100%">
                                <el-button type="primary" style="margin-left: 12px" text>上传文件</el-button>
                              </el-upload>
                            </div>
                          </div>
                        </div>
                        <div style="font-weight: 700; margin-top: 20px">产品不干胶图稿</div>
                        <div style="display: flex; width: 100%">
                          <div style="width: 80px">不干胶图片:</div>
                          <div style="width: calc(100% - 80px)">
                            <el-image
                              fit="scale-down"
                              style="width: 148px; height: 148px; margin-right: 10px; cursor: pointer"
                              v-if="row.selfAdhesiveStickerFile && row.selfAdhesiveStickerFile.fileUrl"
                              :src="row.selfAdhesiveStickerFile.fileUrl"
                              @click="openFile(row.selfAdhesiveStickerFile.fileUrl)" />
                            <div style="display: flex" v-if="!(route.query && route.query.detailId)">
                              <el-upload
                                :show-file-list="false"
                                action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
                                :data="uploadAdhesiveData"
                                :before-upload="uploadAdhesiveFile"
                                :on-success="
                                  (response, uploadFile) => {
                                    return handleAdhesiveSuccess(uploadFile, index);
                                  }
                                "
                                style="width: 100%">
                                <el-button type="primary" text>上传文件</el-button>
                              </el-upload>
                            </div>
                          </div>
                        </div>
                      </template>
                    </el-table-column>
                    <el-table-column label="包材配件/单品" min-width="400">
                      <template #default="{ row }">
                        <div style="width: 100%">
                          <div style="margin-bottom: 10px">
                            <el-button type="primary" @click="clickPackingFittings(index)">选择包材配件</el-button>
                          </div>
                          <el-table :data="row.orderSkuBomList" :row-style="{ height: '35px' }" header-row-class-name="tableHeader">
                            <el-table-column label="单价¥" width="120">
                              <template #default="props">
                                <div>
                                  <span>{{ moneyFormat(props.row.unitPrice, 2) }}</span>
                                </div>
                              </template>
                            </el-table-column>
                            <el-table-column label="数量" width="100">
                              <template #default="props">
                                <el-form-item
                                  :prop="'orderSkuList.' + index + '.orderSkuBomList.' + props.$index + '.quantity'"
                                  :rules="rules.quantity"
                                  :inline-message="true"
                                  style="width: 100%">
                                  <el-input-number
                                    onmousewheel="return false;"
                                    v-model="props.row.quantity"
                                    placeholder="数量"
                                    style="width: 100%"
                                    :controls="false"
                                    :min="0" />
                                </el-form-item>
                              </template>
                            </el-table-column>
                            <el-table-column label="名称" prop="bomSpecName" min-width="150" />
                            <el-table-column label="总量" width="80">
                              <template #default="props">
                                {{ computeQuantity(index, props.$index) }}
                              </template>
                            </el-table-column>
                            <el-table-column label="小计¥" width="100">
                              <template #default="props">
                                {{ moneyFormat(computeMoney(index, props.$index), 2) }}
                              </template>
                            </el-table-column>
                            <el-table-column label="操作" align="center" fixed="right" width="60">
                              <template #default="props">
                                <el-button type="danger" @click="clickDeletePackingFittings(index, props.$index)" text>删除</el-button>
                              </template>
                            </el-table-column>
                          </el-table>
                        </div>
                      </template>
                    </el-table-column>
                  </el-table>
                  <el-collapse-item :name="index">
                    <template #title>
                      <span>包装</span>
                    </template>
                    <div style="display: flex; padding: 8px 10px 0px">
                      <div style="flex: 1; padding: 0px 10px">
                        <div>包装要求:</div>
                        <div v-html="getStyle(item.packageRemark)"></div>
                      </div>
                    </div>
                  </el-collapse-item>
                </div>
              </div>
            </el-collapse>
          </div>
        </template>
        <template #deliveryTime>
          <div style="width: 100%">
            {{ formData.data.deliveryTime }}
          </div>
        </template>
        <template #expressDeliveryId>
          <div style="width: 100%"></div>
        </template>
        <template #sourcePlatform>
          <div style="width: 100%">
            {{ dictKeyValue(formData.data.sourcePlatform, useUserStore().allDict["source_platform"]) }}
          </div>
        </template>
        <template #shopName>
          <div style="width: 100%">
            {{ dictKeyValue(formData.data.shopName, useUserStore().allDict["shop_name"]) }}
          </div>
        </template>
        <template #totalMonet>
          <div style="width: 100%; margin-left: 30px">
            <div>
              <span style="font-weight: 700; color: #6c88f1">产品总金额: ¥{{ moneyFormat(calculatedAmount("unitPrice"), 2) }}</span>
              <span style="font-weight: 700; color: #6c88f1; margin-left: 40px">
                定制加工费: ¥{{ moneyFormat(calculatedAmount("customProcessingFee"), 2) }}
              </span>
              <span style="font-weight: 700; color: #6c88f1; margin-left: 40px">代发费: ¥{{ moneyFormat(calculatedAmount("lssueFee"), 2) }}</span>
              <span style="font-weight: 700; color: #6c88f1; margin-left: 40px">
                快递包材费: ¥{{ moneyFormat(calculatedAmount("deliveryMaterialsFee"), 2) }}
              </span>
              <span style="font-weight: 700; color: #6c88f1; margin-left: 40px">包装人工费: ¥{{ moneyFormat(calculatedAmount("packingLabor"), 2) }}</span>
              <span style="font-weight: 700; color: #6c88f1; margin-left: 40px">包材费: ¥{{ moneyFormat(calculatedPackagingMaterialCost(), 2) }}</span>
              <span style="font-weight: 700; color: #6c88f1; margin-left: 40px">管理费: ¥{{ moneyFormat(calculatedAmount("managementFee"), 2) }}</span>
              <span style="font-weight: 700; color: #6c88f1; margin-left: 40px">外箱包装费: ¥{{ moneyFormat(calculatedOuterBoxPackingFee(), 2) }}</span>
            </div>
            <div style="padding: 8px 0 0 0">
              <span style="font-weight: 700; color: red">订单总金额(含税): ¥{{ moneyFormat(calculatedTotalAmount(), 2) }}</span>
            </div>
          </div>
        </template>
        <template #attachments>
          <div style="width: 100%">
            <el-upload
              v-model:fileList="fileList"
              action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
              :data="uploadFileData"
              multiple
              :before-upload="beforeUpload"
              :on-success="onSuccessFile"
              :on-preview="onPreviewFile">
              <el-button style="background: #20b2aa; color: #fff; border: 1px solid #20b2aa">上传</el-button>
            </el-upload>
          </div>
        </template>
        <template #remark>
          <div style="margin: 0 2vw">
            <div v-html="getStyle(formData.data.remark)"></div>
          </div>
        </template>
      </byForm>
      <div style="text-align: center; margin: 10px">
        <el-button @click="clickCancel()" size="large">取 消</el-button>
        <el-button type="primary" @click="submitForm('20')" size="large" v-preReClick>提 交</el-button>
      </div>
    </el-card>

    <el-dialog title="选择图稿文件" v-if="openDrawingFile" v-model="openDrawingFile" width="70%">
      <SelectPicture @selectPic="selectPic"></SelectPicture>
      <template #footer>
        <el-button @click="openDrawingFile = false" size="large">关 闭</el-button>
      </template>
    </el-dialog>

    <el-dialog title="选择包材配件" v-if="openPackingFittings" v-model="openPackingFittings" width="90%">
      <SelectBOM :selectStatus="true" :bomClassifyIdList="[2, 3]" @selectBOM="selectPackingFittings"></SelectBOM>
      <template #footer>
        <el-button @click="openPackingFittings = false" size="large">关 闭</el-button>
      </template>
    </el-dialog>
  </div>
</template>

<script setup>
import byForm from "/src/components/byForm/index";
import { ElMessage } from "element-plus";
import { useRouter, useRoute } from "vue-router";
import useTagsViewStore from "/src/store/modules/tagsView";
import SelectPicture from "/src/components/select-picture/index.vue";
import SelectBOM from "/src/views/group/BOM/management/index";
import refreshStore from "/src/store/modules/refresh";

const { proxy } = getCurrentInstance();
const router = useRouter();
const route = useRoute();
const submit = ref(null);
const departmentList = ref([]);
const activeNames = ref([]);
const formOption = reactive({
  inline: true,
  labelWidth: "120px",
  itemWidth: 100,
  rules: [],
  labelPosition: "right",
});
const formData = reactive({
  data: {
    remark: "",
    type: 1,
    orderSkuList: [],
    fileList: [],
  },
});
const formConfig = computed(() => {
  return [
    formData.data.source !== 2
      ? {
          type: "title",
          title: "类型",
          label: "",
        }
      : {},

    formData.data.source !== 2
      ? {
          type: "slot",
          prop: "type",
          slotName: "type",
          label: "订单类型",
        }
      : {},

    formData.data.source !== 2
      ? {
          type: "slot",
          prop: "departmentId",
          slotName: "departmentId",
          label: "事业部",
          itemWidth: 25,
        }
      : {},
    {
      type: "title",
      title: "产品",
      label: "",
    },
    {
      type: "slot",
      prop: "orderSkuList",
      slotName: "orderSkuList",
    },
    {
      type: "title",
      title: "贸易",
      label: "",
    },
    {
      type: "slot",
      slotName: "deliveryTime",
      label: "交货时间",
      itemWidth: 25,
    },
    {
      type: "slot",
      label: "选择快递",
      slotName: "expressDeliveryId",
      itemWidth: 25,
    },
    {
      type: "slot",
      label: "店铺来源",
      slotName: "sourcePlatform",
      itemWidth: 25,
    },
    {
      type: "slot",
      label: "店铺名称",
      slotName: "shopName",
      itemWidth: 25,
    },
    {
      type: "title",
      title: "总计",
      label: "",
    },
    {
      type: "slot",
      prop: "totalMonet",
      slotName: "totalMonet",
    },
    {
      type: "title",
      title: "附件",
      label: "",
    },
    {
      type: "slot",
      slotName: "attachments",
      label: "附件",
    },
    {
      type: "title",
      title: "订单备注",
      label: "",
    },
    {
      type: "slot",
      slotName: "remark",
    },
  ];
});
const rules = ref({
  province: [{ required: true, message: "请输入省", trigger: "blur" }],
  detailedAddress: [{ required: true, message: "请输入详细地址", trigger: "blur" }],
  consignee: [{ required: true, message: "请输入联系人", trigger: "blur" }],
  consigneeNumber: [{ required: true, message: "请输入联系电话", trigger: "blur" }],
  deliveryTime: [{ required: true, message: "请选择交货时间", trigger: "change" }],
  //   expressDeliveryId: [{ required: true, message: "请选择快递", trigger: "change" }],
  sourcePlatform: [{ required: true, message: "请选择店铺来源", trigger: "change" }],
  shopName: [{ required: true, message: "请选择店铺", trigger: "change" }],
  quantity: [{ required: true, message: "请输入数量", trigger: "blur" }],
  type: [{ required: true, message: "请选择订单类型", trigger: "change" }],
  departmentId: [{ required: true, message: "请选择事业部", trigger: "change" }],
});
const getDemandData = () => {
  proxy.post("/department/page", { pageNum: 1, pageSize: 999 }).then((res) => {
    if (res.rows && res.rows.length > 0) {
      departmentList.value = res.rows.map((item) => {
        return {
          dictKey: item.id,
          dictValue: item.name,
        };
      });
    }
  });
};
getDemandData();
const drawingFileIndex = ref(0);
const openDrawingFile = ref(false);
const clickDrawingFile = (index) => {
  drawingFileIndex.value = index;
  openDrawingFile.value = true;
};
const selectPic = (row) => {
  formData.data.orderSkuList[drawingFileIndex.value].blueprint = row.imgUrl;
  formData.data.orderSkuList[drawingFileIndex.value].productionDocument = row.fileUrl;
  ElMessage({ message: "选择完成", type: "success" });
  openDrawingFile.value = false;
};
const openFile = (path) => {
  window.open(path);
};
const submitForm = (status) => {
  submit.value.handleSubmit(() => {
    if (formData.data.orderSkuList && formData.data.orderSkuList.length > 0) {
      for (let i = 0; i < formData.data.orderSkuList.length; i++) {
        if (!formData.data.orderSkuList[i].blueprint) {
          return ElMessage("请选择设计图");
        }
        if (!formData.data.orderSkuList[i].productionDocument) {
          return ElMessage("请选择生产文件");
        }
        let packagingMaterialCost = 0;
        if (formData.data.orderSkuList[i].quantity) {
          if (formData.data.orderSkuList[i].orderSkuBomList && formData.data.orderSkuList[i].orderSkuBomList.length > 0) {
            for (let j = 0; j < formData.data.orderSkuList[i].orderSkuBomList.length; j++) {
              if (formData.data.orderSkuList[i].orderSkuBomList[j].quantity && formData.data.orderSkuList[i].orderSkuBomList[j].unitPrice) {
                packagingMaterialCost = Number(
                  Math.round(
                    (packagingMaterialCost +
                      formData.data.orderSkuList[i].orderSkuBomList[j].quantity * formData.data.orderSkuList[i].orderSkuBomList[j].unitPrice) *
                      100
                  ) / 100
                );
              }
            }
          }
        }
        formData.data.orderSkuList[i].packagingMaterialCost = packagingMaterialCost;
      }
      formData.data.productTotalAmount = calculatedAmount("unitPrice");
      formData.data.customProcessingFee = calculatedAmount("customProcessingFee");
      formData.data.lssueFee = calculatedAmount("lssueFee");
      formData.data.deliveryMaterialsFee = calculatedAmount("deliveryMaterialsFee");
      formData.data.packingLabor = calculatedAmount("packingLabor");
      formData.data.managementFee = calculatedAmount("managementFee");
      formData.data.outerBoxPackingFee = calculatedOuterBoxPackingFee();
      formData.data.packagingMaterialCost = calculatedPackagingMaterialCost();
      formData.data.totalAmount = calculatedTotalAmount();
      if (fileList.value && fileList.value.length > 0) {
        formData.data.fileList = fileList.value.map((item) => {
          return {
            id: item.raw.id,
            fileName: item.raw.fileName,
            fileUrl: item.raw.fileUrl,
          };
        });
      } else {
        formData.data.fileList = [];
      }
      formData.data.status = status;
      let type = "add";
      if (formData.data.id) {
        type = "edit";
      }
      proxy.post("/orderInfo/" + type, formData.data).then(() => {
        ElMessage({
          message: type == "add" ? "添加成功" : "编辑成功",
          type: "success",
        });
        refreshStore().setRefresh("order");
        clickCancel();
      });
    } else {
      return ElMessage("请添加产品");
    }
  });
};
const clickCancel = () => {
  const useTagsStore = useTagsViewStore();
  useTagsStore.delVisitedView(router.currentRoute.value);
  router.replace({
    path: "/subsidiary/order/subsidiary-order-management",
  });
};
onMounted(() => {
  if (route.query && (route.query.id || route.query.detailId)) {
    getOrderDetail({ id: route.query.id || route.query.detailId });
  }
});
const getOrderDetail = (parameter) => {
  proxy.post("/orderInfo/detail", parameter).then((res) => {
    formData.data = res;
    if (route.query.detailId) {
      let allIndex = [];
      for (let i = 0; i < formData.data.orderSkuList.length; i++) {
        allIndex.push(i);
      }
      activeNames.value = allIndex;
      formOption.disabled = true;
    }
    let list = [formData.data.id];
    if (formData.data.orderSkuList && formData.data.orderSkuList.length > 0) {
      list = list.concat(formData.data.orderSkuList.map((item) => item.id));
      proxy.post("/fileInfo/getList", { businessIdList: list }).then((fileObj) => {
        if (fileObj[formData.data.id] && fileObj[formData.data.id].length > 0) {
          let file = fileObj[formData.data.id].filter((item) => item.businessType == "0");
          if (file && file.length > 0) {
            fileList.value = file.map((item) => {
              return {
                raw: item,
                name: item.fileName,
                url: item.fileUrl,
              };
            });
          } else {
            fileList.value = [];
          }
        }
        for (let i = 0; i < formData.data.orderSkuList.length; i++) {
          if (fileObj[formData.data.orderSkuList[i].id] && fileObj[formData.data.orderSkuList[i].id].length > 0) {
            formData.data.orderSkuList[i].selfAdhesiveStickerFile = {
              id: fileObj[formData.data.orderSkuList[i].id][0].id,
              fileName: fileObj[formData.data.orderSkuList[i].id][0].fileName,
              fileUrl: fileObj[formData.data.orderSkuList[i].id][0].fileUrl,
            };
          }
        }
      });
    }
  });
};
const getStyle = (text) => {
  if (text) {
    return text.replace(/\n|\r\n/g, "<br>");
  } else {
    return "";
  }
};
const printType = ref([
  {
    dictKey: 1,
    dictValue: "单面",
  },
  {
    dictKey: 2,
    dictValue: "双面",
  },
]);
const typeList = ref([
  {
    dictKey: 1,
    dictValue: "自主订单",
  },
  {
    dictKey: 2,
    dictValue: "委外订单",
  },
]);
const uploadData = ref({});
const uploadFile = async (file) => {
  const res = await proxy.post("/fileInfo/getSing", { fileName: file.name });
  uploadData.value = res.uploadBody;
  file.id = res.id;
  file.fileName = res.fileName;
  file.fileUrl = res.fileUrl;
  return true;
};
const handleSuccess = (UploadFile, index) => {
  formData.data.orderSkuList[index].productionDocument = UploadFile.raw.fileUrl;
};
const uploadImgData = ref({});
const uploadImgFile = async (file) => {
  const res = await proxy.post("/fileInfo/getSing", { fileName: file.name });
  uploadImgData.value = res.uploadBody;
  file.id = res.id;
  file.fileName = res.fileName;
  file.fileUrl = res.fileUrl;
  return true;
};
const handleImgSuccess = (UploadFile, index) => {
  formData.data.orderSkuList[index].blueprint = UploadFile.raw.fileUrl;
};
const computeQuantity = (index, indexSKU) => {
  let quantity = 0;
  if (formData.data.orderSkuList[index].quantity && formData.data.orderSkuList[index].orderSkuBomList[indexSKU].quantity) {
    quantity = Number(
      Math.round(formData.data.orderSkuList[index].orderSkuBomList[indexSKU].quantity * formData.data.orderSkuList[index].quantity * 100) / 100
    );
  }
  return quantity;
};
const computeMoney = (index, indexSKU) => {
  let money = 0;
  if (
    formData.data.orderSkuList[index].quantity &&
    formData.data.orderSkuList[index].orderSkuBomList[indexSKU].quantity &&
    formData.data.orderSkuList[index].orderSkuBomList[indexSKU].unitPrice
  ) {
    money = Number(
      Math.round(
        formData.data.orderSkuList[index].orderSkuBomList[indexSKU].quantity *
          formData.data.orderSkuList[index].orderSkuBomList[indexSKU].unitPrice *
          formData.data.orderSkuList[index].quantity *
          100
      ) / 100
    );
  }
  return money;
};
const clickDeletePackingFittings = (index, indexTwo) => {
  formData.data.orderSkuList[index].orderSkuBomList.splice(indexTwo, 1);
};
const rowIndex = ref(null);
const openPackingFittings = ref(false);
const clickPackingFittings = (index) => {
  rowIndex.value = index;
  openPackingFittings.value = true;
};
const selectPackingFittings = (data) => {
  if (formData.data.orderSkuList[rowIndex.value].orderSkuBomList && formData.data.orderSkuList[rowIndex.value].orderSkuBomList.length > 0) {
    let list = formData.data.orderSkuList[rowIndex.value].orderSkuBomList.filter((item) => item.bomSpecId === data.id);
    if (list && list.length > 0) {
      return ElMessage("包材配件已添加");
    }
    formData.data.orderSkuList[rowIndex.value].orderSkuBomList.push({
      bomSpecId: data.id,
      unitPrice: data.internalSellingPrice,
      quantity: undefined,
      bomSpecName: data.name,
    });
  } else {
    formData.data.orderSkuList[rowIndex.value].orderSkuBomList = [
      {
        bomSpecId: data.id,
        unitPrice: data.internalSellingPrice,
        quantity: undefined,
        bomSpecName: data.name,
      },
    ];
  }
  ElMessage({ message: "添加成功", type: "success" });
};
const getSubtotal = (item) => {
  let money = 0;
  if (item.quantity) {
    money = Number(
      Math.round(
        (item.customProcessingFee + item.deliveryMaterialsFee + item.lssueFee + item.packingLabor + item.managementFee + item.unitPrice) * item.quantity * 100
      ) / 100
    );
  }
  return money;
};
const calculatedAmount = (label) => {
  let money = 0;
  if (formData.data.orderSkuList && formData.data.orderSkuList.length > 0) {
    for (let i = 0; i < formData.data.orderSkuList.length; i++) {
      if (formData.data.orderSkuList[i].quantity && formData.data.orderSkuList[i][label]) {
        money = Number(Math.round((money + formData.data.orderSkuList[i][label] * formData.data.orderSkuList[i].quantity) * 100) / 100);
      }
    }
  }
  return money;
};
const calculatedPackagingMaterialCost = () => {
  let money = 0;
  if (formData.data.orderSkuList && formData.data.orderSkuList.length > 0) {
    for (let i = 0; i < formData.data.orderSkuList.length; i++) {
      if (formData.data.orderSkuList[i].orderSkuBomList && formData.data.orderSkuList[i].orderSkuBomList.length > 0) {
        for (let j = 0; j < formData.data.orderSkuList[i].orderSkuBomList.length; j++) {
          if (formData.data.orderSkuList[i].orderSkuBomList[j].quantity && formData.data.orderSkuList[i].orderSkuBomList[j].unitPrice) {
            money = Number(
              Math.round(
                (money +
                  formData.data.orderSkuList[i].orderSkuBomList[j].quantity *
                    formData.data.orderSkuList[i].orderSkuBomList[j].unitPrice *
                    formData.data.orderSkuList[i].quantity) *
                  100
              ) / 100
            );
          }
        }
      }
    }
  }
  return money;
};
const calculatedTotalAmount = () => {
  let money = 0;
  money = Number(
    Math.round(
      (calculatedAmount("unitPrice") +
        calculatedAmount("customProcessingFee") +
        calculatedAmount("lssueFee") +
        calculatedAmount("deliveryMaterialsFee") +
        calculatedAmount("packingLabor") +
        calculatedAmount("managementFee") +
        calculatedOuterBoxPackingFee() +
        calculatedPackagingMaterialCost()) *
        100
    ) / 100
  );
  return money;
};
const fileList = ref([]);
const uploadFileData = ref({});
const beforeUpload = async (file) => {
  const res = await proxy.post("/fileInfo/getSing", { fileName: file.name });
  uploadFileData.value = res.uploadBody;
  file.id = res.id;
  file.fileName = res.fileName;
  file.fileUrl = res.fileUrl;
  file.uploadState = true;
  return true;
};
const onSuccessFile = (any, UploadFile) => {
  UploadFile.raw.uploadState = false;
};
const onPreviewFile = (file) => {
  window.open(file.raw.fileUrl, "_blank");
};
const uploadAdhesiveData = ref({});
const uploadAdhesiveFile = async (file) => {
  const res = await proxy.post("/fileInfo/getSing", { fileName: file.name });
  uploadAdhesiveData.value = res.uploadBody;
  file.id = res.id;
  file.fileName = res.fileName;
  file.fileUrl = res.fileUrl;
  return true;
};
const handleAdhesiveSuccess = (UploadFile, index) => {
  formData.data.orderSkuList[index].selfAdhesiveStickerFile = {
    id: UploadFile.raw.id,
    fileName: UploadFile.raw.fileName,
    fileUrl: UploadFile.raw.fileUrl,
  };
};
const calculatedOuterBoxPackingFee = () => {
  let money = 0;
  if (formData.data.orderPackageBomList && formData.data.orderPackageBomList.length > 0) {
    for (let i = 0; i < formData.data.orderPackageBomList.length; i++) {
      if (formData.data.orderPackageBomList[i].costPrice && formData.data.orderPackageBomList[i].quantity) {
        money = Number(Math.round((money + formData.data.orderPackageBomList[i].costPrice * formData.data.orderPackageBomList[i].quantity) * 100) / 100);
      }
    }
  }
  return money;
};
</script>

<style lang="scss" scoped>
::v-deep(.el-input-number .el-input__inner) {
  text-align: left;
}
:deep(.el-dialog) {
  margin-top: 10px !important;
  margin-bottom: 10px !important;
}
:deep(.ql-editor) {
  height: auto;
}
:deep(.el-collapse-item__header) {
  justify-content: center;
}
:deep(.el-collapse-item__arrow) {
  margin: 0;
}
:deep(.el-table__cell) {
  vertical-align: top;
}
</style>
