<template>
  <view class="addAndEditProduct-container">
    <navBar
      class="nav-bar"
      :statusBar="true"
      :border="false"
      :fixed="true"
      :height="'44px'"
      :rightWidth="40"
      :leftWidth="30"
      :title="isAdd ? '添加商品' : '编辑商品'"
      backgroundColor="#fff"
    >
      <block slot="left">
        <u-icon
          name="arrow-left"
          color="#000"
          size="20"
          @click="pageBack()"
        ></u-icon>
      </block>
      <block slot="right" v-if="!isAdd">
        <text @click="delectCommodity">删除</text>
      </block>
    </navBar>
    <view class="addAndEditProduct-content">
      <u--form
        labelPosition="left"
        :model="form"
        ref="uForm"
        label-width="100"
        :rules="rules"
      >
        <u-form-item
          label="商品名称"
          prop="product_name"
          class="form-item"
          required
        >
          <u--input
            v-model="form.product_name"
            placeholder="请输入商品名称"
            border="none"
            clearable
          ></u--input>
        </u-form-item>
        <u-form-item
          label="商品分类"
          prop="category_name"
          class="form-item"
          required
          @click="hadnerShowClassifyListPopup()"
        >
          <u--input
            v-model="form.category_name"
            disabled
            disabledColor="#ffffff"
            placeholder="请选择商品分类"
            border="none"
            @click="hideKeyboard()"
          ></u--input>
          <u-icon slot="right" name="arrow-right"></u-icon>
        </u-form-item>
        <u-form-item label="商品主图" prop="img" class="form-item" required>
          <!-- <u-upload
            class="shop2-2-upload"
            @afterRead="afterRead($event, 'businessLicense')"
            @delete="deletePic($event, 'businessLicense')"
            accept="image"
            :fileList="form.businessLicenseFiles"
            :max-count="1"
            width="125"
            height="88"
            :maxSize="maxSize"
            @oversize="overSize"
            uploadText="上传图片"
          ></u-upload> -->
          <imgUpload
            :imgArr="primaryImg"
            uploadImgCount="1"
            imgCount="1"
            :imgSize="8"
            :header="header"
            :async="true"
            :config="config"
            :isAdd="isAdd"
            url="https://mall.gpxscs.cn/mobile/shop/oss/upload"
            :formData="formData"
            @result="handerResultUrl($event, 'primary')"
          ></imgUpload>
        </u-form-item>
        <u-form-item label="商品附图" class="form-item">
          <imgUpload
            :imgArr="viceImg"
            uploadImgCount="1"
            imgCount="5"
            :imgSize="8"
            :header="header"
            :async="true"
            :config="config"
            :isAdd="isAdd"
            url="https://mall.gpxscs.cn/mobile/shop/oss/upload"
            :formData="formData"
            @result="handerResultUrl($event, 'vice')"
          ></imgUpload>
        </u-form-item>
        <u-form-item
          label="商品卖点"
          prop="product_tips"
          :class="[
            'form-item',
            { 'form-item-margin-top-20': isUnfold },
            { 'form-item-margin-20': !isUnfold },
          ]"
        >
          <u--textarea
            v-model="form.product_tips"
            placeholder="15字以内突出商品特点"
            count
            :autoHeight="true"
            maxlength="15"
          ></u--textarea>
        </u-form-item>
        <u-form-item
          label="商品类型"
          class="form-item"
          labelWidth="80"
          v-if="form.category_name"
        >
          <u-radio-group v-model="form.kind_id" placement="row" shape="circle">
            <u-radio
              :customStyle="{ marginRight: '28rpx' }"
              v-for="(item, index) in commodityTypeRadioList"
              :key="index"
              :label="item.name"
              :name="item.value"
              :disabled="!categoryVirtualEnable"
            ></u-radio>
          </u-radio-group>
        </u-form-item>

        <u-form-item
          v-if="isUnfold"
          label="商品货号"
          prop="product_number"
          class="form-item"
        >
          <u--input
            v-model="form.product_number"
            placeholder="请输入商品货号"
            border="none"
            clearable
          ></u--input>
        </u-form-item>
        <u-form-item
          v-if="isUnfold"
          label="购买上限"
          prop="product_buy_limit"
          class="form-item"
        >
          <u--input
            v-model="form.product_buy_limit"
            placeholder="请输入购买上限"
            border="none"
            clearable
          ></u--input>
        </u-form-item>
        <u-form-item
          v-if="isUnfold"
          label="开售时间"
          prop="product_state_id"
          class="form-item form-sale-time-item"
        >
          <u-radio-group
            v-model="form.product_state_id"
            placement="row"
            shape="circle"
          >
            <u-radio
              :customStyle="{ marginRight: '28rpx' }"
              v-for="(item, index) in saleTimeRadioList"
              :key="index"
              :label="item.name"
              :name="item.value"
            ></u-radio>
          </u-radio-group>
          <view
            class="sale-time"
            v-if="form.product_state_id == 1002"
            @click="showSaleTime = true"
          >
            {{ form.product_sale_time || "预计上架时间" }}
          </view>
        </u-form-item>
        <u-form-item
          v-if="isUnfold"
          label="库存锁定"
          prop="product_inventory_lock"
          class="form-item"
        >
          <u-radio-group
            v-model="form.product_inventory_lock"
            placement="row"
            shape="circle"
          >
            <u-radio
              :customStyle="{ marginRight: '28rpx' }"
              v-for="(item, index) in inventoryRadioList"
              :key="index"
              :label="item.name"
              :name="item.value"
            ></u-radio>
          </u-radio-group>
        </u-form-item>
        <u-form-item
          v-if="isUnfold"
          style="margin-bottom: 40rpx"
          label="商品描述"
          prop="product_detail"
          class="form-item"
        >
          <u--textarea
            v-model="form.product_detail"
            placeholder="200字以内介绍商品描述"
            count
            :autoHeight="true"
            maxlength="200"
          ></u--textarea>
        </u-form-item>
        <u-form-item
          label="售卖规格"
          class="form-item form-item-specification"
          labelWidth="80"
          @click="handerRightPopup"
          required
        >
          <view class="total-content">
            <view class="total-name">
              共{{ specificationInfoList.length || 1 }}个规格
            </view>
            <u-icon name="arrow-right"></u-icon>
          </view>
          <view class="specification-content">
            <view
              class="specification-item"
              v-for="(item, index) of specificationInfoList"
            >
              <view class="specification-name">{{ item.spec_item_name }}</view>
              <view class="specification-info">
                <view class="info-item">
                  <view class="specification-num">
                    属性编号：{{ item.item_number }}
                  </view>
                  <view class="specification-num">
                    库存：{{ item.item_quantity || item.item_quantity_2 }}
                  </view>
                </view>
                <view class="info-item">
                  <view class="specification-num">
                    市场价：{{
                      item.item_market_price || item.item_market_price_2
                    }}
                  </view>
                  <view class="specification-num">
                    零售价：{{ item.item_unit_price || item.item_unit_price_2 }}
                  </view>
                </view>
              </view>
            </view>
          </view>
        </u-form-item>
      </u--form>
      <view class="tips-content">
        <view class="tips">
          还可以设置购买上限、店内码/货号、商品描述、 开售时间、 库存锁定
        </view>

        <u-button
          :plain="true"
          :hairline="true"
          shape="circle"
          class="btn-unfold"
          @click="isUnfold = !isUnfold"
        >
          <block>
            {{ isUnfold ? "收起部分" : "  展示全部" }}

            <u-icon
              style="display: inline-block; margin-left: 8rpx"
              name="arrow-up"
              color="#000"
              v-if="isUnfold"
              size="12"
            ></u-icon>
            <u-icon
              style="display: inline-block; margin-left: 8rpx"
              name="arrow-down"
              color="#000"
              size="12"
              v-else
            ></u-icon>
          </block>
        </u-button>
      </view>
      <view class="bottom-btn">
        <view class="bottom-list">
          <u-button
            class="bottom-btn-item"
            :hairline="true"
            :plain="true"
            shape="circle"
            @click="handerAddAndEditPopup()"
          >
            {{ isAdd ? "添加" : "保存" }}
          </u-button>
        </view>
      </view>
    </view>
    <u-popup
      class="right-popup"
      zIndex="1200"
      :overlay="false"
      :show="showRightPecificationOfGoodPopup"
      mode="right"
    >
      <specificationOfGood
        :commoditSpecificationBaseInfo="commoditSpecificationBaseInfo"
        :sonSpecificationInfoList="specificationInfoList"
        :productInfoByPid="productInfoByPid"
        :typeId="typeId"
        @handerSpecificationInfoList="handerSpecificationInfoList"
        @pageBack="showRightPecificationOfGoodPopup = false"
        :isAdd="isAdd"
      ></specificationOfGood>
    </u-popup>
    <u-popup
      class="affirm-popup"
      zIndex="10077"
      :show="showBackPopup"
      mode="center"
    >
      <view class="affirm-popup-content">
        <view class="affirm-popup-title">确认退出</view>
        <view class="affirm-popup-tips">
          退出后已编辑商品信息将不被保存，是否退出
        </view>
        <view class="popup-btn-list">
          <u-button
            class="btn-item"
            :hairline="true"
            :plain="true"
            shape="circle"
            @click="showBackPopup = false"
          >
            取消
          </u-button>
          <u-button
            class="btn-item btn-item-2"
            :hairline="true"
            :plain="true"
            shape="circle"
            @click="handerPageBack"
          >
            退出
          </u-button>
        </view>
      </view>
    </u-popup>
    <u-popup
      class="affirm-popup"
      zIndex="10077"
      :show="showDelectPopup"
      mode="center"
    >
      <view class="affirm-popup-content">
        <view class="affirm-popup-title">确认删除</view>
        <view class="affirm-popup-tips">
          确定删除“{{ productItem.product_name }}”这个商品？
        </view>
        <view class="popup-btn-list">
          <u-button
            class="btn-item"
            :hairline="true"
            :plain="true"
            shape="circle"
            @click="showDelectPopup = false"
          >
            取消
          </u-button>
          <u-button
            class="btn-item btn-item-2"
            :hairline="true"
            :plain="true"
            shape="circle"
            @click="handerDelectCommodity"
          >
            删除
          </u-button>
        </view>
      </view>
    </u-popup>
    <tki-tree
      ref="tkitree"
      :range="baTreePickerList"
      :foldAll="true"
      rangeKey="category_name"
      idKey="category_id"
      title="选择商品分类"
      @confirm="treeConfirm"
      @cancel="treeCancel"
    ></tki-tree>
    <u-datetime-picker
      ref="datetimePicker"
      :show="showSaleTime"
      v-model="productSaleTime"
      @cancel="showSaleTime = false"
      @confirm="handerConfirmSaleTime"
      mode="datetime"
    ></u-datetime-picker>
    <u-toast ref="uToast"></u-toast>
    <u-loading-page
      class="loading-page"
      :loading="loadingPage"
      loading-text="加载中..."
    ></u-loading-page>
  </view>
</template>

<script>
import navBar from "@/components/uni-nav-bar/uni-nav-bar";
import { mapState } from "vuex";
import { GetCommodityClassify } from "@/api/warehouse/classifyList";
import imgUpload from "@/components/poiuy-uImgUpload/imgUpload.vue";
import {
  UpdateCommodityInfo,
  GetCommoditSpecification,
  GetCommodityBaseInfo,
  GetClassifyInfo,
  GetCommoditSpecificationBaseInfo,
} from "@/api/warehouse/commodity";
import { DelectCommodity } from "@/api/warehouse/productList";
import tkiTree from "./components/tree/tree";
import specificationOfGood from "./specificationOfGood.vue";
import store from "../../../store";
export default {
  name: "addAndEditProduct",
  props: {
    productItem: {
      type: Object,
      default: () => ({
        product_id: null,
      }),
    },
    isAdd: {
      type: Boolean,
      default: true,
    },
  },
  components: {
    navBar,
    imgUpload,
    tkiTree,
    specificationOfGood,
  },
  data() {
    return {
      form: {
        product_video: "",
        product_buy_limit: 0, // 购买上限
        product_sale_time: "",
        product_number: "",
        product_name: "", // 商品名称
        kind_id: 1201,
        product_inventory_lock: 1001,
        payment_type_id: 0,
        product_state_id: 1001,
        contract_type_ids: [],
        product_transport_id: [],
        transport_type_id: 38,
        store_category_ids: [],
        product_service: "",
        product_param: "",
        product_detail: "",
        product_id: undefined,
        product_tips: "",
        voucher_activity_id: "",
        category_id: "",
        category_name: "",
        kind_id: 1201,
        coupon_type_id: "",
        store_id: 0,
      },
      productDetail: {
        product_detail: "",
        product_tags: [],
      },
      valid: {
        product_service_contactor_flag: 1,
        product_service_date_flag: 0,
        product_valid_period: 1001,
        product_valid_type: 1001,
      },
      rules: {
        product_name: [
          {
            required: true,
            message: "请输入规格名称",
            // 可以单个或者同时写两个触发验证方式
            trigger: ["change", "blur"],
          },
        ],
        type_category_name: [
          {
            required: true,
            message: "请选择商品分类",
            // 可以单个或者同时写两个触发验证方式
            trigger: ["change", "blur"],
          },
        ],
      },
      maxSize: 10 * 1024 * 1024,
      primaryImg: [],
      header: [],
      config: {
        delIcon: "", //删除图片icon
        resultTip: true, //结果提示
        resultType: "1", //结果展示类型
        loadIcon: "", //加载时的图标
        loadText: "", //加载时的文字
      },
      formData: {
        perm_key: "",
      },
      viceImg: [],
      isUnfold: false,
      saleTimeRadioList: [
        {
          name: "立即开售",
          value: 1001,
        },
        {
          name: "定时开售",
          value: 1002,
        },
      ],
      inventoryRadioList: [
        {
          name: "下单锁定",
          value: 1001,
        },
        {
          name: "支付锁定",
          value: 1002,
        },
      ],
      commodityTypeRadioList: [
        {
          name: "实体商品",
          value: 1201,
        },
        {
          name: "虚拟商品",
          value: 1202,
        },
        {
          name: "电子卡券",
          value: 1203,
        },
      ],
      showSaleTime: false,
      productSaleTime: Number(new Date()),
      baTreePickerList: [],
      showRightPecificationOfGoodPopup: false,
      commoditSpecificationBaseInfo: {},
      selectCommodisItems: [],
      typeId: 0,
      specificationInfoList: [],
      categoryVirtualEnable: false,
      showBackPopup: false,
      loadingPage: false,
      productInfoByPid: {
        shop_product_assist_index: [],
        shop_product_detail: {},
        shop_product_image: [],
        shop_product_index: {},
        shop_product_info: {},
      },
      showDelectPopup: false,
      cheboxList: [],
      productSpec: [],
    };
  },
  computed: {
    ...mapState(["user", "ukey"]),
  },
  onLoad: function (options) {},
  onReady() {},
  onShow() {
    // this.classifyItem = form;
  },

  mounted() {
    this.formData.perm_key = uni.getStorageSync("ukey") || "";
    this.getCommodityClassify();
    if (!this.isAdd) {
      this.form = { ...this.form, ...this.productItem };

      console.log(this.form);

      this.loadingPage = true;
      this.getCommodityBaseInfo(this.productItem.product_id);
    }
  },
  methods: {
    pageBack() {
      this.showBackPopup = true;
    },
    handerPageBack() {
      this.isAdd = true;
      this.$emit("pageBack");
    },
    overSize(e) {
      uni.$u.toast("上传图片大小不能超过10MB!");
    },
    handerResultUrl(e, type) {
      if (type == "primary") {
        this.primaryImg = [...new Set([...this.primaryImg, ...e.all])];
      } else {
        this.viceImg = [...new Set([...this.viceImg, ...e.all])];

        console.log(this.viceImg);
      }
    },
    async getCommodityBaseInfo(product_id) {
      let params = {
        product_id: product_id,
      };

      let res = await GetCommodityBaseInfo(params);
      if (res && res.status == 200) {
        this.productInfoByPid = res.data;

        this.primaryImg = this.productInfoByPid.shop_product_image.map(
          (item) => item.item_image_default
        );

        if (
          this.productInfoByPid.shop_product_image[0].item_image_other.length >
          0
        ) {
          this.viceImg =
            this.productInfoByPid.shop_product_image[0].item_image_other.split(
              ","
            );
        } else {
          this.viceImg = [];
        }

        console.log(this.viceImg);
        await this.getClassifyInfo(
          this.productInfoByPid.shop_product_index.category_id
        );
        await this.getCommoditSpecificationBaseInfo(
          this.productInfoByPid.shop_product_index.type_id,
          product_id
        );
      }
    },
    async getClassifyInfo(category_id) {
      let params = {
        category_id: category_id,
      };
      let res = await GetClassifyInfo(params);
      if (res && res.status == 200) {
        this.form.category_name = res.data.category_name;
        this.form.category_id = res.data.category_id;
      }
    },
    async getCommodityClassify() {
      this.loadingClassIfy = true;
      let res = await GetCommodityClassify();
      if (res && res.status == 200) {
        const classifyList = res.data;
        if (classifyList.length > 0) {
          this.baTreePickerList = classifyList.map((item) => {
            // 创建父节点，并保留所有原始字段
            const parentNode = {
              ...item, // 保留所有原始数据
              children: null, // 先初始化为 null
            };

            // 如果有子分类，递归处理
            if (item.sub && item.sub.length > 0) {
              parentNode.children = item.sub.map((subItem) => ({
                ...subItem, // 保留所有子分类的原始数据
              }));
            }

            return parentNode;
          });
        }
      }
      this.loadingClassIfy = false;
    },
    delectCommodity() {
      this.showDelectPopup = true;
    },
    async handerDelectCommodity() {
      let params = {
        product_ids: this.productItem.product_id.toString(),
      };

      let res = await DelectCommodity(params);
      if (res && res.status == 200) {
        uni.$u.toast("删除成功");
        this.handerPageBack();
      }
    },
    async getCommoditSpecification() {
      let params = {
        product_id: this.productItem.product_id,
      };

      let res = await GetCommoditSpecification(params);
      if (res && res.status == 200) {
        this.selectCommodisItems = res.data;

        // 1. 解析产品规格模板
        this.productSpec = this.productInfoByPid.shop_product_info.product_spec;

        try {
          this.productSpec = JSON.parse(this.productSpec);
          if (!Array.isArray(this.productSpec)) {
            this.productSpec = [this.productSpec]; // 确保是数组格式
          }

          // 2. 创建规格项映射表 {itemId: 完整规格信息}
          const specItemMap = [];
          this.productSpec.forEach((specGroup) => {
            if (specGroup.item && Array.isArray(specGroup.item)) {
              specGroup.item.forEach((item) => {
                specItemMap.push(item.id);
              });
            }
          });

          const specificationInfoList1 = this.selectCommodisItems
            .map((item) => {
              try {
                // 解析规格数据（兼容字符串和对象）
                const itemSpec =
                  typeof item.item_spec === "string"
                    ? JSON.parse(item.item_spec)
                    : item.item_spec;

                if (Array.isArray(itemSpec) && itemSpec.length > 0) {
                  const firstSpec = itemSpec[0];

                  // 匹配规格逻辑
                  if (firstSpec.item && firstSpec.item.id) {
                    const matchedSpec = specItemMap.find(
                      (id) => id == firstSpec.item.id
                    );

                    if (matchedSpec) {
                      return {
                        ...item,
                        spec_item_id: matchedSpec,
                        item_is_default: Boolean(item.item_is_default),
                        // 保留原始数据（调试用）
                      };
                    }
                  }
                }
              } catch (e) {
                console.error(`处理商品 ${item.item_id} 时出错:`, e);
              }
            })
            .filter((item) => item != undefined);

          const specificationInfoList2 =
            this.commoditSpecificationBaseInfo.specs[0].specItems
              .map((item) => {
                if (specItemMap.includes(item.spec_item_id)) {
                  return item;
                }
              })
              .filter((item) => item != undefined);

          this.specificationInfoList = specificationInfoList1.map((item) => {
            // 找到匹配的 specItem
            const matchedSpecItem = specificationInfoList2.find(
              (specItem) => specItem.spec_item_id === item.spec_item_id
            );

            // 如果找到匹配项，则合并
            if (matchedSpecItem) {
              return {
                ...item, // 保留原 item 的所有属性
                ...matchedSpecItem, // 覆盖或添加 specItem 的属性
              };
            }
            return item; // 如果没有匹配项，返回原 item
          });

          this.cheboxList = this.specificationInfoList.map(
            (item) => item.spec_item_id
          );

          if (this.specificationInfoList.length == 0) {
            this.specificationInfoList = this.selectCommodisItems;
            this.cheboxList = [];
          }

          console.log(this.specificationInfoList);
        } catch (e) {
          console.error("解析productSpec失败:", e);
        }
      }

      this.loadingPage = false;
    },
    async getCommoditSpecificationBaseInfo(type_id) {
      let params = {
        type_id: type_id,
      };

      if (!this.isAdd) {
        params.product_id = this.productItem.product_id;
      }

      let res = await GetCommoditSpecificationBaseInfo(params);
      if (res && res.status == 200) {
        this.commoditSpecificationBaseInfo = res.data;

        if (!this.isAdd) {
          this.getCommoditSpecification();
        }
      }
    },
    handerConfirmSaleTime(e) {
      this.productSaleTime = e.value;
      this.form.product_sale_time = this.$u.timeFormat(
        this.productSaleTime,
        "yyyy-mm-dd hh:MM"
      );

      this.showSaleTime = false;
    },
    hadnerShowClassifyListPopup() {
      this.$refs.tkitree._show();
    },
    handerRightPopup() {
      if (this.form.category_name == "") {
        this.$refs.uToast.show({
          message: "请选择分类",
          type: "error",
          duration: 1000,
        });

        return;
      }

      this.showRightPecificationOfGoodPopup = true;
    },
    treeConfirm(list) {
      if (list.length > 1) {
        this.form.category_name = list[1].category_name;
        this.form.category_id = list[1].category_id;
      } else {
        this.form.category_name = list[0].category_name;
        this.form.category_id = list[0].category_id;
      }
      const typeId = list.length > 1 ? list[1].type_id : list[0].type_id;
      this.categoryVirtualEnable =
        list.length > 1
          ? list[1].category_virtual_enable
          : list[0].category_virtual_enable;
      this.typeId = typeId;
      this.getCommoditSpecificationBaseInfo(typeId);
    },
    treeCancel() {
      this.$refs.tkitree._hide();
    },
    handerSpecificationInfoList(specificationInfoList, cheboxList) {
      this.specificationInfoList = specificationInfoList;
      this.cheboxList = cheboxList;
      console.log(this.specificationInfoList);
    },
    handerAddAndEditPopup() {
      this.$refs.uForm.validate().then(async (valid) => {
        if (this.primaryImg.length <= 0) {
          this.$refs.uToast.show({
            message: "请选择上传主图",
            type: "error",
            duration: 1000,
          });

          return;
        }

        if (this.specificationInfoList.length <= 0) {
          this.$refs.uToast.show({
            message: "请选择填写售卖规格信息",
            type: "error",
            duration: 1000,
          });

          return;
        }

        const productItems = this.specificationInfoList.map((item) => {
          const key = String(item.spec_id) || item.spec_item_ids;
          const key2 = String(item.spec_id) + "_" + String(item.spec_item_id);
          const color_img = this.viceImg.map((item) => item.url);
          const mainMColorimg = this.primaryImg.map((item) => item.url);
          var obj = {
            color_img: color_img,
            item_is_default: item.item_is_default,
            item_market_price:
              item.item_market_price_2 || item.item_market_price,
            item_number: item.item_number,
            item_quantity: item.item_quantity_2 || item.item_quantity,
            item_unit_points: "0", //积分
            item_unit_price: item.item_unit_price_2 || item.item_unit_price,
            main_color_img: mainMColorimg.toString(),
          };

          // 判断取消勾选后的场景

          if (this.cheboxList.length > 0) {
            obj.product_spec = JSON.stringify([
              {
                id: item.spec_id,
                name: this.commoditSpecificationBaseInfo.specs[0].spec_name,
                item: {
                  id: item.spec_item_id,
                  name: item.spec_item_name,
                },
              },
            ]);
          } else {
            obj.product_spec = "[]";
          }

          if (this.isAdd) {
            obj.category_id = this.form.category_id;
            obj.siid = String(item.spec_item_id || "");
          }

          if (item.spec_item_name && item.spec_item_id) {
            obj[key] = item.spec_item_name;
            obj[key2] = item.spec_item_id;
          }

          if (!this.isAdd) {
            obj.color_id = 0;
            obj.item_advice_price = 0;
            obj.colorImg = color_img;
            obj.siid = String(item.spec_item_id);
          }

          if (item.item_enable) {
            obj.item_enable = item.item_enable;
          } else {
            obj.item_enable = 1001;
          }

          if (item.item_barcode) {
            obj.item_barcode = item.item_barcode;
          }

          if (item.item_id) {
            obj.item_id = item.item_id;
          }

          return obj;
        });

        var productSpec = this.productSpec;
        if (this.cheboxList.length > 0) {
          productSpec = this.specificationInfoList.reduce((acc, item) => {
            const existingSpec = acc.find((spec) => spec.id === item.spec_id);

            if (existingSpec) {
              existingSpec.item.push({
                id: item.spec_item_id,
                name: item.spec_item_name,
              });
            } else {
              acc.push({
                id: item.spec_id,
                name: this.commoditSpecificationBaseInfo.specs[0].spec_name,
                item: [
                  {
                    id: item.spec_item_id,
                    name: item.spec_item_name,
                  },
                ],
              });
            }

            return acc;
          }, []);
        } else {
          productSpec = [];
        }

        console.log(this.form.product_param);

        let params = {
          productObj: {
            assists: {},
            assistsIndex: [],
            brand_id: 0,
            productBase: {
              category_id: this.form.category_id,
              contract_type_ids: [],
              kind_id: this.form.kind_id || 1201,
              product_detail: "",
              product_inventory_lock: this.form.product_inventory_lock,
              product_name: this.form.product_name,
              product_number: this.form.product_number,
              product_param: this.form.product_param || "",
              product_sale_time: this.form.product_sale_time,
              product_service: this.form.product_service || "",
              product_state_id: this.form.product_state_id,
              product_tips: this.form.product_tips,
              product_transport_id: this.form.product_transport_id,
              product_video: this.form.product_video,
              store_category_ids: this.form.store_category_ids || [],
              text_category_id: this.form.category_name,
              transport_type_id: this.form.transport_type_id,
            },
            productDetail: this.productDetail,
            productSpec: productSpec,
            valid: this.isAdd ? {} : this.valid,
          },
          productItems: productItems,
        };

        console.log("未编辑params", params);

        if (!this.isAdd) {
          var productTransportId =
            this.productInfoByPid.shop_product_index.product_transport_id
              .split(",")
              .map((item) => Number(item));

          var voucherAactivityId =
            this.productInfoByPid.shop_product_index.voucher_activity_id;

          params.productObj.productBase = {
            ...params.productObj.productBase,
            category_name: this.form.category_name,
            coupon_type_id: this.form.coupon_type_id || "",
            payment_type_id: this.form.payment_type_id || 0,
            product_buy_limit: this.form.product_buy_limit,
            product_id: this.form.product_id,
            product_transport_id: productTransportId,
            voucher_activity_id:
              voucherAactivityId || Number(voucherAactivityId),
            store_id: this.form.store_id,
          };

          delete params.productObj.productBase.text_category_id;

          params.productObj.productDetail = {
            product_detail: this.form.product_detail || "",
            product_param: "",
            product_service: "",
            product_tags: [],
          };
        }

        console.log(params);

        let res = await UpdateCommodityInfo({
          productObj: JSON.stringify(params.productObj),
          productItems: JSON.stringify(params.productItems),
        });
        // let res = {};
        if (res && res.status == 200) {
          this.$refs.uToast.show({
            message: this.isAdd ? "添加成功" : "修改成功",
            type: "succeed",
            duration: 1000,
            zIndex: 12000,
            position: "top",
          });
          if (this.isAdd) {
            this.form = {
              product_video: "",
              product_buy_limit: undefined,
              product_sale_time: "",
              product_number: "",
              product_name: "", // 商品名称
              kind_id: 1201,
              product_inventory_lock: 1001,
              payment_type_id: 0,
              product_state_id: 1001,
              contract_type_ids: [],
              product_transport_id: [],
              transport_type_id: 38,
              store_category_ids: [],
              product_service: "",
              product_param: "",
              product_detail: "",
              product_id: undefined,
              product_tips: "",
              voucher_activity_id: "",
              category_id: "",
              category_name: "",
              kind_id: 1201,
            };
            this.primaryImg = [];
            this.viceImg = [];
            this.specificationInfoList = [];
          }
        }
      });
    },
  },
};
</script>

<style lang="scss" scoped>
@import "@/styles/variables.scss";

.addAndEditProduct-container {
  width: 100vw;
  height: calc(100vh - 120rpx);
  background: #f5f6fa;
  overflow: auto;

  .nav-bar {
    ::v-deep.uni-navbar__content {
      z-index: 1100;
    }
  }

  .addAndEditProduct-content {
    .u-form {
      background: #f5f6fa;

      .form-item {
        background: #fff;
        padding: 0 40rpx;
      }

      .form-item-margin-top-20 {
        margin-top: 40rpx;
      }

      .form-item-margin-20 {
        margin: 40rpx 0;
      }

      .form-sale-time-item {
        ::v-deep.u-form-item__body__right__content__slot {
          display: flex;
          flex-flow: column;
          align-items: normal;
        }

        .sale-time {
          margin: 40rpx 0;
          background: #eeeeee;
          padding: 20rpx;
          color: #6666;
        }
      }

      .form-item-specification {
        ::v-deep.u-form-item__body__right__content__slot {
          display: flex;
          flex-flow: column;
          align-items: normal;
        }

        .total-content {
          display: flex;
          justify-content: space-between;
          margin: 8px 0 8px 8px;
          font-weight: bold;
        }

        .specification-content {
          background: #f5f6fa;
          border-radius: 16rpx;

          .specification-item {
            display: flex;
            flex-flow: column;
            justify-content: space-between;
            padding: 8px;

            .specification-name {
              margin: 3px 0;
              font-size: 16px;
              font-weight: bold;
            }

            .specification-info {
              display: flex;
              justify-content: space-between;
              height: 96rpx;
              font-size: 24rpx;
              color: #626262;
            }

            .info-item {
              display: flex;
              flex-flow: column;
              justify-content: space-around;
            }
          }
        }
      }
    }

    .tips-content {
      padding: 40rpx 20rpx;
      background: #f5f6fa;

      .tips {
        font-size: 28rpx;
        color: #666666;
      }

      .btn-unfold {
        margin: 52rpx auto 20rpx;
        width: 200rpx;
        font-size: 24rpx;
        height: 60rpx;

        &::after {
          border: none;
        }
      }
    }
  }

  .affirm-popup {
    ::v-deep.u-popup__content {
      border-radius: 16rpx;
    }

    ::v-deep.u-fade-enter-to {
      z-index: 10076 !important;
    }

    .affirm-popup-content {
      width: 600rpx;

      .affirm-popup-title {
        padding: 40rpx;
        text-align: center;
        font-weight: bold;
      }

      .affirm-popup-tips {
        padding: 0 60rpx;
        font-size: 28rpx;
        text-align: center;
      }

      .popup-btn-list {
        display: flex;
        margin: 50rpx;

        .btn-item {
          width: 46%;
          height: 80rpx;
          border-color: #909193;

          &::after {
            border: none;
          }
        }

        .btn-item-2 {
          background: $base-color;
          color: #fff;
          border: none;
        }
      }
    }
  }

  .add-popup {
    ::v-deep.u-popup__content {
      border-radius: 16rpx;
    }

    ::v-deep.u-fade-enter-to {
      z-index: 10076 !important;
    }

    .add-popup-content {
      width: 700rpx;

      .add-popup-title {
        padding: 40rpx;
        text-align: center;
        font-weight: bold;
        font-size: 36rpx;
      }

      .add-tips {
        padding: 0 24rpx;
        text-align: center;
        color: red;
      }

      .u-form {
        margin: 0 40rpx;

        .form-item {
          margin: 28rpx 0;
        }
      }

      .popup-btn-list {
        display: flex;
        margin: 50rpx;

        .btn-item {
          width: 46%;
          height: 80rpx;
          border-color: #909193;

          &::after {
            border: none;
          }
        }

        .btn-item-2 {
          background: $base-color;
          color: #fff;
          border: none;
        }
      }
    }
  }

  .bottom-btn {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 20rpx;
    background: #fff;
    border-top: 2rpx solid $uni-border-color;
    z-index: 2;

    .bottom-list {
      display: flex;
      align-items: center;
      justify-content: flex-end;

      .bottom-btn-item {
        font-size: 28rpx;
        border-color: $base-color;
        color: #fff;
        background: $base-color;

        .bottom-icon {
          margin-right: 8rpx;
        }

        &::after {
          border: none;
        }
      }
    }
  }

  .loading-page {
    z-index: 1099;
  }
}
</style>
