<template>
  <div class="form">
    <van-tabs v-model:active="active">
      <van-tab :title="proxy.t('priceSheet.transactionInformation')" />
      <van-tab :title="proxy.t('priceSheet.quotationDetails')" />
      <van-tab :title="proxy.t('priceSheet.otherCharges')" />
      <van-tab :title="proxy.t('priceSheet.otherInformation')" />
      <div class="common-process-card" v-show="active == 0">
        <div class="common-title">{{ proxy.t("priceSheet.transactionInformation") }}</div>
        <testForm v-model="formData.data" :formOption="formOption" :formConfig="formConfig" :rules="rules" ref="formDom1"> </testForm>
      </div>
      <div class="common-process-card" v-show="active == 1">
        <div class="common-title">{{ proxy.t("priceSheet.quotationDetails") }}</div>
        <testForm v-model="formData.data" :formOption="formGoodsOption" :formConfig="formEmptyConfig" :rules="rules" ref="formDom2"> </testForm>
        <testForm v-model="formData.data" :formOption="formOption" :formConfig="formAmountProductConfig" :rules="rules" ref="formDom3"> </testForm>
      </div>
      <div class="common-process-card" v-show="active == 2">
        <div class="common-title">{{ proxy.t("priceSheet.otherCharges") }}</div>
        <testForm v-model="formData.data" :formOption="formProjectOption" :formConfig="formEmptyConfig" :rules="rules" ref="formDom4"> </testForm>
        <testForm v-model="formData.data" :formOption="formOption" :formConfig="formAmountProjectConfig" :rules="rules" ref="formDom5"> </testForm>
      </div>
      <div class="common-process-card" v-show="active == 3">
        <div class="common-title">{{ proxy.t("priceSheet.otherInformation") }}</div>
        <testForm v-model="formData.data" :formOption="formOption" :formConfig="formDeliveryConfig" :rules="rulesTwo" ref="formDom6"> </testForm>
      </div>
    </van-tabs>
  </div>
</template>

<script setup>
import { ref, getCurrentInstance, onMounted, defineProps, defineExpose, watch, reactive, toRefs } from "vue";
import { useRoute } from "vue-router";
import testForm from "@/components/testForm/index.vue";
import { getUserInfo } from "@/utils/auth";
import { showFailToast } from "vant";

// 接收父组件的传值
const props = defineProps({
  queryData: Object,
});
const refProps = toRefs(props);
const proxy = getCurrentInstance().proxy;
const route = useRoute();
const active = ref(0);
const tabsChange = () => {
  active.value++;
};
const formData = reactive({
  data: {
    quotationProductList: [],
    quotationPayList: [],
  },
});
const formDom1 = ref(null);
const formDom2 = ref(null);
const formDom3 = ref(null);
const formDom4 = ref(null);
const formDom5 = ref(null);
const formDom6 = ref(null);
const formOption = reactive({
  readonly: false,
  disabled: false,
  labelAlign: "top",
  scroll: true,
  labelWidth: "62pk",
  hiddenSubmitBtn: true,
});
const formConfig = reactive([
  {
    type: "picker",
    label: proxy.t("priceSheet.contractTemplateId"),
    prop: "contractTemplateId",
    itemType: "onePicker",
    showPicker: false,
    fieldNames: {
      text: "label",
      value: "value",
    },
    data: [],
    changeFn: (val, data) => {
      proxy.formChange(val, data, formData);
      formData.data.sellCorporationId = "";
      formData.data.sellCountryName = "";
      formData.data.sellProvinceName = "";
      formData.data.sellCityName = "";
      formData.data.sellAddress = "";
      formData.data.sellContactName = "";
      formData.data.sellContactNumber = "";
      if (val.selectedValues[0]) {
        proxy.post("/contractTemplate/detail", { id: val.selectedValues[0] }).then((res) => {
          formData.data.sellCorporationId = res.data.corporationId;
          if (res.data.corporationId) {
            proxy.post("/corporation/detail", { id: res.data.corporationId }).then((detailCorporation) => {
              let sellCity = "";
              if (detailCorporation.data.countryEnStr) {
                formData.data.sellCountryName = detailCorporation.data.countryEnStr;
                sellCity = detailCorporation.data.countryEnStr;
              }
              if (detailCorporation.data.provinceEnStr) {
                formData.data.sellProvinceName = detailCorporation.data.provinceEnStr;
                sellCity = sellCity + " " + detailCorporation.data.provinceEnStr;
              }
              if (detailCorporation.data.cityEnStr) {
                formData.data.sellCityName = detailCorporation.data.cityEnStr;
                sellCity = sellCity + " " + detailCorporation.data.cityEnStr;
              }
              if (detailCorporation.data.addressEn) {
                formData.data.sellAddress = detailCorporation.data.addressEn;
              }
              formData.data.sellCity = sellCity;
              formDom1.value.formDataShowLabelOne();
            });
          }
          formData.data.sellContactName = res.data.contactName;
          formData.data.sellContactNumber = res.data.contactNumber;
          formDom1.value.formDataShowLabelOne();
        });
      }
      data.showPicker = false;
    },
  },
  {
    type: "title",
    title: proxy.t("priceSheet.sellerInformation"),
  },
  {
    type: "picker",
    label: proxy.t("priceSheet.sellCorporationId"),
    prop: "sellCorporationId",
    itemType: "onePicker",
    showPicker: false,
    fieldNames: {
      text: "label",
      value: "value",
    },
    data: [],
    readonly: true,
  },
  {
    type: "input",
    label: proxy.t("priceSheet.cityText"),
    prop: "sellCity",
    itemType: "text",
    readonly: true,
  },
  {
    type: "input",
    label: proxy.t("priceSheet.address"),
    prop: "sellAddress",
    itemType: "textarea",
  },
  {
    type: "input",
    label: proxy.t("priceSheet.contactName"),
    prop: "sellContactName",
    itemType: "text",
  },
  {
    type: "input",
    label: proxy.t("priceSheet.contactNumber"),
    prop: "sellContactNumber",
    itemType: "text",
  },
  {
    type: "title",
    title: proxy.t("priceSheet.buyerInformation"),
  },
  {
    type: "picker",
    label: proxy.t("priceSheet.buyCorporationId"),
    prop: "buyCorporationId",
    itemType: "onePicker",
    showPicker: false,
    fieldNames: {
      text: "label",
      value: "value",
    },
    data: [],
    changeFn: (val, data) => {
      proxy.formChange(val, data, formData);
      formData.data.buyContactName = "";
      formData.data.buyContactNumber = "";
      if (val.selectedValues[0]) {
        proxy.post("/customer/detail", { id: val.selectedValues[0] }).then((res) => {
          if (res.data.customerUserList && res.data.customerUserList.length > 0) {
            formData.data.buyContactName = res.data.customerUserList[0].name;
            if (res.data.customerUserList[0].contactJson) {
              let contactJson = JSON.parse(res.data.customerUserList[0].contactJson);
              if (contactJson && contactJson.length > 0) {
                formData.data.buyContactNumber = contactJson[0].contactNo;
              }
            }
          }
          let countryCityName = "";
          if (res.data.countryName) {
            countryCityName = res.data.countryName;
            if (res.data.provinceName) {
              countryCityName = countryCityName + " " + res.data.provinceName;
              if (res.data.cityName) {
                countryCityName = countryCityName + " " + res.data.cityName;
              }
            }
          }
          formData.data.countryCityName = countryCityName;
          if (res.data.cityId) {
            formData.data.countryCity = res.data.cityId;
          } else if (res.data.provinceId) {
            formData.data.countryCity = res.data.provinceId;
          } else if (res.data.countryId) {
            formData.data.countryCity = res.data.countryId;
          } else {
            formData.data.countryCity = "";
          }
          formData.data.countryId = res.data.countryId;
          formData.data.provinceId = res.data.provinceId;
          formData.data.cityId = res.data.cityId;
          formData.data.buyPostalCode = res.data.zipCode;
          formData.data.buyAddress = res.data.address;
        });
      } else {
        formData.data.countryId = "";
        formData.data.provinceId = "";
        formData.data.cityId = "";
        formData.data.buyPostalCode = "";
        formData.data.buyAddress = "";
      }
      data.showPicker = false;
    },
  },
  {
    type: "cascader",
    label: proxy.t("priceSheet.cityText"),
    prop: "countryCity",
    itemType: "city",
    showPicker: false,
  },
  {
    type: "input",
    label: proxy.t("priceSheet.address"),
    prop: "buyAddress",
    itemType: "textarea",
  },
  {
    type: "input",
    label: proxy.t("priceSheet.postalCode"),
    prop: "buyPostalCode",
    itemType: "text",
  },
  {
    type: "input",
    label: proxy.t("priceSheet.contactName"),
    prop: "buyContactName",
    itemType: "text",
  },
  {
    type: "input",
    label: proxy.t("priceSheet.contactNumber"),
    prop: "buyContactNumber",
    itemType: "text",
  },
]);
const formGoodsOption = reactive({
  readonly: false,
  disabled: false,
  labelAlign: "top",
  scroll: true,
  labelWidth: "62pk",
  hiddenSubmitBtn: true,
  btnConfig: {
    isNeed: true,
    prop: "quotationProductList",
    plain: true,
    listTitle: proxy.t("priceSheet.commodityInformation"),
    listConfig: [
      {
        type: "picker",
        label: proxy.t("priceSheet.productId"),
        prop: "productId",
        itemType: "onePicker",
        showPicker: false,
        readonly: false,
        fieldNames: {
          text: "label",
          value: "value",
        },
        data: [],
        changeFn: (val, data, index, indexTwo, propName) => {
          let selectList = formData.data[propName].filter((item, itemIndex) => item[data.prop] === val.selectedValues[0] && itemIndex !== index);
          if (selectList && selectList.length > 0) {
            return showFailToast(proxy.t("priceSheet.productRepeat"));
          }
          formData.data[propName][index][data.prop] = val.selectedValues[0];
          let list = data.data.filter((item) => item[data.fieldNames.value] == val.selectedValues[0]);
          if (list && list.length > 0) {
            formData.data[propName][index][data.prop + "Name"] = list[0][data.fieldNames.text];
            let name = list[0].name;
            if (list[0].standardJson) {
              let standardJson = JSON.parse(list[0].standardJson);
              if (standardJson && standardJson.englishName) {
                name = standardJson.englishName;
              }
            }
            formData.data[propName][index].productName = name;
            formData.data[propName][index].productModel = list[0].spec;
          } else {
            formData.data[propName][index][data.prop + "Name"] = "";
          }
          formData.data[propName][index].quantity = null;
          formData.data[propName][index].price = null;
          formData.data[propName][index].amount = null;
          formData.data[propName][index].remark = null;
          data.showPicker = false;
        },
      },
      {
        type: "input",
        label: proxy.t("priceSheet.productName"),
        prop: "productName",
        itemType: "text",
      },
      {
        type: "input",
        label: proxy.t("priceSheet.productModel"),
        prop: "productModel",
        itemType: "text",
      },
      {
        type: "input",
        label: proxy.t("priceSheet.quantity"),
        prop: "quantity",
        itemType: "number",
        changeFn: () => {
          calculatedAmount();
        },
      },
      {
        type: "input",
        label: proxy.t("priceSheet.price"),
        prop: "price",
        itemType: "number",
        changeFn: () => {
          calculatedAmount();
        },
      },
    ],
    clickFn: () => {
      if (formData.data.quotationProductList && formData.data.quotationProductList.length > 0) {
        formData.data.quotationProductList.push({
          productId: null,
          productName: null,
          productModel: null,
          quantity: null,
          price: null,
          amount: null,
          remark: null,
        });
      } else {
        formData.data.quotationProductList = [
          {
            productId: null,
            productName: null,
            productModel: null,
            quantity: null,
            price: null,
            amount: null,
            remark: null,
          },
        ];
      }
    },
    deleteFn: (index) => {
      formData.data.quotationProductList.splice(index, 1);
      handleChangeAmount();
    },
  },
});
const formEmptyConfig = reactive([]);
const formAmountProductConfig = reactive([
  {
    type: "input",
    label: proxy.t("priceSheet.amountProduct"),
    prop: "amountProduct",
    itemType: "text",
    readonly: true,
    placeholder: proxy.t("priceSheet.amountProductPlaceholder"),
  },
]);
const formAmountProjectConfig = reactive([
  {
    type: "input",
    label: proxy.t("priceSheet.amountProject"),
    prop: "amountProject",
    itemType: "text",
    readonly: true,
    placeholder: proxy.t("priceSheet.amountProjectPlaceholder"),
  },
]);
const formProjectOption = reactive({
  readonly: false,
  disabled: false,
  labelAlign: "top",
  scroll: true,
  labelWidth: "62pk",
  hiddenSubmitBtn: true,
  btnConfig: {
    isNeed: true,
    prop: "quotationPayList",
    plain: true,
    listTitle: proxy.t("priceSheet.chargeItem"),
    listConfig: [
      {
        type: "input",
        label: proxy.t("priceSheet.chargeItem"),
        prop: "payName",
        itemType: "text",
      },
      {
        type: "input",
        label: proxy.t("priceSheet.amount"),
        prop: "amount",
        itemType: "number",
        changeFn: () => {
          handleChangeAmount();
        },
      },
      {
        type: "input",
        label: proxy.t("priceSheet.remark"),
        prop: "remark",
        itemType: "textarea",
      },
    ],
    clickFn: () => {
      if (formData.data.quotationPayList && formData.data.quotationPayList.length > 0) {
        formData.data.quotationPayList.push({
          payName: null,
          amount: null,
          remark: null,
        });
      } else {
        formData.data.quotationPayList = [
          {
            payName: null,
            amount: null,
            remark: null,
          },
        ];
      }
    },
    deleteFn: (index) => {
      formData.data.quotationPayList.splice(index, 1);
      handleChangeAmount();
    },
  },
});
const formDeliveryConfig = reactive([
  {
    type: "title",
    title: proxy.t("priceSheet.quotedAmount"),
  },
  {
    type: "picker",
    label: proxy.t("priceSheet.currency"),
    prop: "currency",
    itemType: "onePicker",
    showPicker: false,
    fieldNames: {
      text: "label",
      value: "value",
    },
    data: [],
  },
  {
    type: "input",
    label: proxy.t("priceSheet.amountAll"),
    prop: "amount",
    itemType: "text",
    readonly: true,
    placeholder: proxy.t("priceSheet.amountAllPlaceholder"),
  },
  {
    type: "input",
    label: proxy.t("priceSheet.effective"),
    prop: "effective",
    itemType: "digit",
  },
  {
    type: "picker",
    label: proxy.t("priceSheet.paymentMethod"),
    prop: "paymentMethod",
    itemType: "onePicker",
    showPicker: false,
    fieldNames: {
      text: "label",
      value: "value",
    },
    data: [],
  },
  {
    type: "input",
    label: proxy.t("priceSheet.advanceRatio"),
    prop: "advanceRatio",
    itemType: "number",
    inputFn: (val) => {
      if (val) {
        if (val > 100) {
          formData.data.advanceRatio = 100;
        } else if (val < 0) {
          formData.data.advanceRatio = 0;
        }
      }
    },
  },
  {
    type: "title",
    title: proxy.t("priceSheet.deliveryInformation"),
  },
  {
    type: "picker",
    label: proxy.t("priceSheet.tradeMethods"),
    prop: "tradeMethods",
    itemType: "onePicker",
    showPicker: false,
    fieldNames: {
      text: "label",
      value: "value",
    },
    data: [],
  },
  {
    type: "picker",
    label: proxy.t("priceSheet.transportMethod"),
    prop: "transportMethod",
    itemType: "onePicker",
    showPicker: false,
    fieldNames: {
      text: "label",
      value: "value",
    },
    data: [],
  },
  {
    type: "input",
    label: proxy.t("priceSheet.transportRemark"),
    prop: "transportRemark",
    itemType: "text",
  },
  {
    type: "input",
    label: proxy.t("priceSheet.remarks"),
    prop: "remark",
    itemType: "textarea",
  },
  {
    type: "input",
    label: proxy.t("priceSheet.warranty"),
    prop: "warranty",
    itemType: "digit",
  },
]);
const rules = {
  contractTemplateId: [{ required: true, message: proxy.t("priceSheet.contractTemplateIdMsg") }],
  sellCorporationId: [{ required: true, message: proxy.t("priceSheet.sellCorporationIdMsg") }],
  buyCorporationId: [{ required: true, message: proxy.t("priceSheet.buyCorporationIdMsg") }],
  sellCity: [{ required: true, message: proxy.t("priceSheet.cityMsg") }],
  countryCity: [{ required: true, message: proxy.t("priceSheet.cityMsg") }],
  sellAddress: [{ required: true, message: proxy.t("priceSheet.addressMsg") }],
  buyAddress: [{ required: true, message: proxy.t("priceSheet.addressMsg") }],
  sellContactName: [{ required: true, message: proxy.t("priceSheet.contactNameMsg") }],
  sellContactNumber: [{ required: true, message: proxy.t("priceSheet.contactNumberMsg") }],
  // buyPostalCode: [{ required: true, message: proxy.t("priceSheet.postalCodeMsg") }],
  buyContactName: [{ required: true, message: proxy.t("priceSheet.contactNameMsg") }],
  buyContactNumber: [{ required: true, message: proxy.t("priceSheet.contactNumberMsg") }],
  productId: [{ required: true, message: proxy.t("priceSheet.productIdMsg") }],
  productName: [{ required: true, message: proxy.t("priceSheet.productNameMsg") }],
  productModel: [{ required: true, message: proxy.t("priceSheet.productModelMsg") }],
  quantity: [{ required: true, message: proxy.t("priceSheet.quantityMsg") }],
  price: [{ required: true, message: proxy.t("priceSheet.priceMsg") }],
  payName: [{ required: true, message: proxy.t("priceSheet.chargeItemMsg") }],
  amount: [{ required: true, message: proxy.t("priceSheet.amountMsg") }],
};
const rulesTwo = {
  currency: [{ required: true, message: proxy.t("priceSheet.currencyMsg") }],
  effective: [{ required: true, message: proxy.t("priceSheet.effectiveMsg") }],
  paymentMethod: [{ required: true, message: proxy.t("priceSheet.paymentMethodMsg") }],
  advanceRatio: [{ required: true, message: proxy.t("priceSheet.advanceRatioMsg") }],
  tradeMethods: [{ required: true, message: proxy.t("priceSheet.tradeMethodsMsg") }],
  transportMethod: [{ required: true, message: proxy.t("priceSheet.transportMethodMsg") }],
  transportRemark: [{ required: true, message: proxy.t("priceSheet.transportRemarkMsg") }],
  remark: [{ required: true, message: proxy.t("priceSheet.remarksMsg") }],
};
const getDict = () => {
  let query = {
    pageNum: 1,
    pageSize: 999,
    tenantId: getUserInfo().tenantId,
  };
  proxy.post("/contractTemplate/page", { pageNum: 1, pageSize: 999 }).then((res) => {
    if (res.data.rows && res.data.rows.length > 0) {
      formConfig[0].data = res.data.rows.map((item) => {
        return {
          ...item,
          label: item.templateName,
          value: item.id,
        };
      });
    }
  });
  proxy.post("/corporation/page", { pageNum: 1, pageSize: 999 }).then((res) => {
    if (res.data.rows && res.data.rows.length > 0) {
      formConfig[2].data = res.data.rows.map((item) => {
        return {
          ...item,
          label: item.name,
          value: item.id,
        };
      });
    }
  });
  proxy.post("/productInfo/page", { pageNum: 1, pageSize: 9999, definition: "1" }).then((res) => {
    if (res.data.rows && res.data.rows.length > 0) {
      formGoodsOption.btnConfig.listConfig[0].data = res.data.rows.map((item) => {
        return {
          ...item,
          label: item.name,
          value: item.id,
        };
      });
    }
  });
  proxy.post("/dictTenantData/page", { ...query, dictCode: "account_currency" }).then((res) => {
    if (res.data.rows && res.data.rows.length > 0) {
      formDeliveryConfig[1].data = res.data.rows.map((item) => {
        return {
          label: item.dictValue,
          value: item.dictKey,
        };
      });
    }
  });
  proxy.post("/dictTenantData/page", { ...query, dictCode: "funds_payment_method" }).then((res) => {
    if (res.data.rows && res.data.rows.length > 0) {
      formDeliveryConfig[4].data = res.data.rows.map((item) => {
        return {
          label: item.dictValue,
          value: item.dictKey,
        };
      });
    }
  });
  proxy.post("/dictTenantData/page", { ...query, dictCode: "trade_mode" }).then((res) => {
    if (res.data.rows && res.data.rows.length > 0) {
      formDeliveryConfig[7].data = res.data.rows.map((item) => {
        return {
          label: item.dictValue,
          value: item.dictKey,
        };
      });
    }
  });
  proxy.post("/dictTenantData/page", { ...query, dictCode: "shipping_method" }).then((res) => {
    if (res.data.rows && res.data.rows.length > 0) {
      formDeliveryConfig[8].data = res.data.rows.map((item) => {
        return {
          label: item.dictValue,
          value: item.dictKey,
        };
      });
    }
  });
  if (["10", "20"].includes(route.query.processType)) {
    proxy.post("/customer/page", { pageNum: 1, pageSize: 999 }).then((res) => {
      if (res.data.rows && res.data.rows.length > 0) {
        formConfig[8].data = res.data.rows.map((item) => {
          return {
            ...item,
            label: item.name,
            value: item.id,
          };
        });
      }
    });
  } else {
    proxy.post("/customer/privateSeaPage", { pageNum: 1, pageSize: 999 }).then((res) => {
      if (res.data.rows && res.data.rows.length > 0) {
        formConfig[8].data = res.data.rows.map((item) => {
          return {
            ...item,
            label: item.name,
            value: item.id,
          };
        });
      }
    });
  }
};
getDict();
const calculatedAmount = () => {
  if (formData.data.quotationProductList && formData.data.quotationProductList.length > 0) {
    for (let i = 0; i < formData.data.quotationProductList.length; i++) {
      let money = 0;
      if (formData.data.quotationProductList[i].quantity && formData.data.quotationProductList[i].price) {
        money = Number(
          Math.round(Number(formData.data.quotationProductList[i].quantity) * Number(formData.data.quotationProductList[i].price) * 10000) / 10000
        );
      }
      formData.data.quotationProductList[i].amount = money;
    }
  }
  handleChangeAmount();
};
const handleChangeAmount = () => {
  let money = 0;
  let amountProduct = 0;
  let amountProject = 0;
  if (formData.data.quotationProductList && formData.data.quotationProductList.length > 0) {
    for (let i = 0; i < formData.data.quotationProductList.length; i++) {
      if (formData.data.quotationProductList[i].amount) {
        money = Number(Math.round((Number(money) + Number(formData.data.quotationProductList[i].amount)) * 10000) / 10000);
        amountProduct = Number(Math.round((Number(amountProduct) + Number(formData.data.quotationProductList[i].amount)) * 10000) / 10000);
      }
    }
  }
  if (formData.data.quotationPayList && formData.data.quotationPayList.length > 0) {
    for (let i = 0; i < formData.data.quotationPayList.length; i++) {
      if (formData.data.quotationPayList[i].amount) {
        money = Number(Math.round((Number(money) + Number(formData.data.quotationPayList[i].amount)) * 10000) / 10000);
        amountProject = Number(Math.round((Number(amountProject) + Number(formData.data.quotationPayList[i].amount)) * 10000) / 10000);
      }
    }
  }
  formData.data.amount = money;
  formData.data.amountProduct = amountProduct;
  formData.data.amountProject = amountProject;
};
const handleSubmit = async () => {
  const flag = await formDom1.value.validateForm().then((status) => {
    if (status) {
      active.value = 0;
      return false;
    } else {
      if (!(formData.data.quotationProductList && formData.data.quotationProductList.length > 0)) {
        active.value = 1;
        showFailToast(proxy.t("priceSheet.pleaseAddProduct"));
        return false;
      }
      return formDom2.value.validateForm().then((status1) => {
        if (status1) {
          active.value = 1;
          return false;
        } else {
          return formDom4.value.validateForm().then((status2) => {
            if (status2) {
              active.value = 2;
              return false;
            } else {
              return formDom6.value.validateForm().then((status3) => {
                if (status3) {
                  active.value = 3;
                  return false;
                } else {
                  return true;
                }
              });
            }
          });
        }
      });
    }
  });
  if (flag) {
    return formData.data;
  }
};
const status = ref(false);
watch(
  refProps.queryData,
  () => {
    if (refProps.queryData.value && ["10", "20", "30"].includes(route.query.processType)) {
      for (const key in refProps.queryData.value) {
        formData.data[key] = refProps.queryData.value[key];
      }
      formDom1.value.formDataShowLabelOne();
      formDom2.value.formDataListShowLabelOne();
      formDom6.value.formDataShowLabelOne();
      if (!formData.data.sellCity) {
        let sellCity = "";
        if (formData.data.sellCountryName) {
          sellCity = formData.data.sellCountryName;
        }
        if (formData.data.sellProvinceName) {
          sellCity = sellCity + " " + formData.data.sellProvinceName;
        }
        if (formData.data.sellCityName) {
          sellCity = sellCity + " " + formData.data.sellCityName;
        }
        formData.data.sellCity = sellCity;
      }
      if (["10", "20"].includes(route.query.processType)) {
        formOption.readonly = true;
        formGoodsOption.readonly = true;
        formGoodsOption.btnConfig.isNeed = false;
        formProjectOption.readonly = true;
        formProjectOption.btnConfig.isNeed = false;
      }
      handleChangeAmount();
      if (status.value) {
        if (!formData.data.countryCityName) {
          if (formData.data.countryId) {
            let countryCityName = "";
            formData.data.countryCity = formData.data.countryId;
            proxy.post("/customizeArea/list", { parentId: "0" }).then((res) => {
              let list = res.data.filter((item) => item.id == formData.data.countryId);
              if (list && list.length > 0) {
                countryCityName = list[0].name;
                formData.data.countryCityName = countryCityName;
              }
              if (formData.data.provinceId) {
                formData.data.countryCity = formData.data.provinceId;
                proxy.post("/customizeArea/list", { parentId: formData.data.countryId }).then((res) => {
                  let list = res.data.filter((item) => item.id == formData.data.provinceId);
                  if (list && list.length > 0) {
                    countryCityName = countryCityName + " " + list[0].name;
                    formData.data.countryCityName = countryCityName;
                  }
                  if (formData.data.cityId) {
                    formData.data.countryCity = formData.data.cityId;
                    proxy.post("/customizeArea/list", { parentId: formData.data.provinceId }).then((res) => {
                      let list = res.data.filter((item) => item.id == formData.data.cityId);
                      if (list && list.length > 0) {
                        countryCityName = countryCityName + " " + list[0].name;
                        formData.data.countryCityName = countryCityName;
                      }
                    });
                  }
                });
              }
            });
          }
        }
        status.value = false;
      }
    }
  },
  {
    deep: true,
  }
);
defineExpose({
  handleSubmit,
  tabsChange,
});
onMounted(() => {});
</script>
<style lang="scss" scoped></style>