<!--
 * @Descripttion:
 * @version:
 * @Author: kBank
 * @Date: 2022-10-31 13:55:20
-->
<template>
  <div class="page">
    <div class="topbox">
      <div
        class="levelList_i"
        :class="tabActive == item.id ? 'act' : ''"
        v-for="(item, index) in topList"
        :key="index"
        @click.prevent="handleLink(item.id)"
      >
        {{ item.name }}
      </div>
    </div>
    <div class="main">
      <div class="contain">
        <el-form ref="form" :rules="rules" :model="form" label-width="auto">
          <div v-show="tabActive == 0">
            <el-row :gutter="10">
              <el-col class="el-col-40">
                <el-form-item :label="'产品名称'" prop="productName">
                  <el-input
                    clearable
                    v-model="form.productName"
                    :disabled="methods"
                    :placeholder="'请输入'"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col class="el-col-20">
                <el-form-item :label="'产品编号'" prop="productCode">
                  <el-input
                    clearable
                    v-model="form.productCode"
                    disabled
                    :placeholder="'请输入'"
                  ></el-input>
                </el-form-item>
              </el-col>
              <!-- <el-col class="el-col-20">
                <el-form-item :label="'划线价'"
                              prop="retailPrice">
                  <el-input clearable
                            v-model="form.retailPrice"
                            :disabled="methods"
                            :placeholder="'请输入'"></el-input>
                </el-form-item>
              </el-col> -->
              <el-col class="el-col-20">
                <el-form-item label="供货价格" prop="supplyPrice">
                  <el-input
                    clearable
                    v-model="form.supplyPrice"
                    :disabled="methods"
                    :placeholder="'请输入'"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col class="el-col-20">
                <el-form-item label="零售价格" prop="retailPrice">
                  <el-input
                    clearable
                    v-model="form.retailPrice"
                    :disabled="methods"
                    :placeholder="'请输入'"
                  ></el-input>
                </el-form-item>
              </el-col>
              <!-- <el-col class="el-col-20">
                <el-form-item :label="'发货类型'" prop="shippingChannel">
                  <el-select
                    clearable
                    :disabled="methods"
                    v-model="form.shippingChannel"
                  >
                    <el-option
                      v-for="item in fhTypeList"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col> -->
              <el-col class="el-col-20">
                <el-form-item label="供货数量" prop="supplyQuantity">
                  <el-input
                    clearable
                    v-model="form.supplyQuantity"
                    :disabled="methods"
                    :placeholder="'请输入'"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col class="el-col-20">
                <el-form-item label="销售模式" prop="saleModel">
                  <el-select
                    clearable
                    v-model="form.saleModel"
                    :disabled="methods"
                  >
                    <el-option
                      v-for="item in xsList"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <!-- <el-col class="el-col-20">
                <el-form-item :label="'发货类型'"
                              prop="shippingChannel">
                  <el-select clearable
                             v-model="form.shippingChannel"
                             :disabled="methods">
                    <el-option v-for="item in fhTypeList"
                               :key="item.value"
                               :label="item.label"
                               :value="item.value"></el-option>
                  </el-select>
                </el-form-item>
              </el-col> -->
              <el-col class="el-col-20">
                <el-form-item label="保质期" prop="shelfLife">
                  <el-input
                    clearable
                    oninput="value=value.replace(/[^\d]/g,'')"
                    v-model="form.shelfLife"
                    :disabled="methods"
                    :placeholder="'请输入'"
                  >
                    <i slot="suffix" class="neibu">{{ '天' }} </i>
                  </el-input>
                </el-form-item>
              </el-col>
              <el-col class="el-col-20">
                <el-form-item :label="'单位'" prop="unit">
                  <el-select clearable v-model="form.unit" :disabled="methods">
                    <el-option
                      v-for="item in dwList"
                      :key="item.pkId"
                      :label="item.name"
                      :value="item.pkId"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col class="el-col-20">
                <el-form-item :label="'重量'" prop="weight">
                  <el-input
                    clearable
                    oninput="value=value.replace(/[^\d.]/g,'')"
                    v-model="form.weight"
                    :disabled="methods"
                    :placeholder="'请输入'"
                  >
                    <i slot="suffix" class="neibu">KG </i>
                  </el-input>
                </el-form-item>
              </el-col>
              <!-- <el-col class="el-col-20">
                <el-form-item :label="'邮费重量'"
                              prop="postageWeight">
                  <el-input clearable
                            oninput="value=value.replace(/[^\d.]/g,'')"
                            v-model="form.postageWeight"
                            :disabled="methods"
                            :placeholder="'请输入'">
                    <i slot="suffix"
                       class="neibu">KG </i>
                  </el-input>
                </el-form-item>
              </el-col> -->
              <!-- <el-col class="el-col-20">
                <el-form-item :label="'产品属性'"
                              prop="productAttr">
                  <el-select clearable
                             v-model="form.productAttr"
                             :disabled="methods">
                    <el-option v-for="item in productTypeList"
                               :key="item.value"
                               :label="item.label"
                               :value="item.value"></el-option>
                  </el-select>
                </el-form-item>
              </el-col> -->
              <el-col class="el-col-20">
                <el-form-item :label="'所属分类'" prop="pkClassify">
                  <el-select
                    clearable
                    v-model="form.pkClassify"
                    :disabled="methods"
                  >
                    <el-option
                      v-for="item in classifyList"
                      :key="item.pkId"
                      :label="item.name"
                      :value="item.pkId"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col class="el-col-20">
                <el-form-item :label="'排列序号'" prop="sort">
                  <el-input
                    clearable
                    oninput="value = value.replace(/[^\d]/g,'')"
                    v-model="form.sort"
                    :disabled="methods"
                    :placeholder="'请输入'"
                  >
                  </el-input>
                </el-form-item>
              </el-col>
              <el-col class="el-col-20">
                <el-form-item :label="'长'" prop="length">
                  <el-input
                    clearable
                    oninput="value=value.replace(/[^\d.]/g,'')"
                    v-model="form.length"
                    :disabled="methods"
                    :placeholder="'请输入'"
                  >
                    <i slot="suffix" class="neibu">CM </i>
                  </el-input>
                </el-form-item>
              </el-col>
              <el-col class="el-col-20">
                <el-form-item :label="'宽'" prop="width">
                  <el-input
                    clearable
                    oninput="value=value.replace(/[^\d.]/g,'')"
                    v-model="form.width"
                    :disabled="methods"
                    :placeholder="'请输入'"
                  >
                    <i slot="suffix" class="neibu">CM </i>
                  </el-input>
                </el-form-item>
              </el-col>
              <el-col class="el-col-20">
                <el-form-item :label="'高'" prop="height">
                  <el-input
                    clearable
                    oninput="value=value.replace(/[^\d.]/g,'')"
                    v-model="form.height"
                    :disabled="methods"
                    :placeholder="'请输入'"
                  >
                    <i slot="suffix" class="neibu">CM </i>
                  </el-input>
                </el-form-item>
              </el-col>
              <el-col class="el-col-20">
         
          </el-col>
              <!-- 复购类型暂时隐藏 -->
              <!-- <el-col class="el-col-20">
                <el-form-item :label="'复购类型'">
                  <el-select clearable
                             :disabled="methods"
                             v-model="form.repurchaseType">
                    <el-option v-for="item in repurchaseTypeList"
                               :key="item.value"
                               :label="item.label"
                               :value="item.value"></el-option>
                  </el-select>
                </el-form-item>
              </el-col> -->
              <!-- <el-col class="el-col-20">
                <el-form-item label="产品基本信息">
                  <el-select clearable
                             v-model="form.productId">
                    <el-option v-for="item in productList"
                               :key="item.pkId"
                               :label="item.productName"
                               :value="item.pkId"></el-option>
                  </el-select>
                </el-form-item>
              </el-col> -->
              <el-col class="el-col-40">
                <el-form-item :label="'产品主图'" prop="cover">
                  <el-upload
                    :headers="headers"
                    :disabled="methods"
                    :class="{
                      uploadIconOne: showImg,
                      uploadIcon: noneUploadImg,
                    }"
                    :action="uploadImgUrl"
                    :file-list="form.coverList"
                    :on-success="handlePictureSuccess"
                    :on-change="uploadImgChange"
                    list-type="picture-card"
                    :limit="1"
                    :on-remove="handleRemove"
                  >
                    <i class="el-icon-plus"></i>
                  </el-upload>
                  <div class="jy">建议尺寸452×452，大小为200K</div>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <div v-show="tabActive == 1">
            <el-form-item :label="'规格'">
              <el-tag
                :key="item.pkId"
                v-for="(item, index) in ggList"
                :closable="!methods"
                class="elTag"
                v-show="item.checked"
                :disable-transitions="false"
                @close="handleClose(item.pkId)"
              >
                {{ item.typeName }}
              </el-tag>
              <el-button
                class="button-new-tag"
                v-show="!methods"
                size="small"
                @click="openDiag = true"
                >{{ '添加' }}</el-button
              >
            </el-form-item>
          </div>
        </el-form>
      </div>
      <div class="footer" v-show="!methods">
        <el-button size="small" class="thebtn2">
          {{ '取消' }}</el-button
        >
        <el-button size="small" @click="submit('form')" class="thebtn1">
          {{ '确认' }}</el-button
        >
      </div>
    </div>
    <el-dialog
      :title="'添加'"
      :visible.sync="openDiag"
      :close-on-click-modal="false"
      width="30%"
      center
    >
      <el-checkbox-group v-model="form.checkList" class="check">
        <el-checkbox
          v-for="(item, index) in ggList"
          class="check_i"
          :key="item.pkId"
          :label="item.pkId"
          >{{ item.typeName }}</el-checkbox
        >
      </el-checkbox-group>
      <span slot="footer" class="dialog-footer">
        <el-button @click="openDiag = false">{{ '取消' }}</el-button>
        <el-button type="primary" @click="checkTrue">{{
          '确认'
        }}</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import { getToken } from "@/utils/auth";
import { mapGetters } from 'vuex'
import * as api from "@/api/product.js";

export default {
  name: "jcsz",
  data() {
    return {
      rules: {
        shippingChannel: [
          {
            required: true,
            message: '请输入发货类型',
            trigger: "change",
          },
        ],
        unit: [{ required: true, message: "请选择单位", trigger: "change" }],
        productName: [
          { required: true, message: "请输入产品名称", trigger: "blur" },
        ],
        productCode: [
          { required: true, message: "请输入产品编号", trigger: "blur" },
        ],
        retailPrice: [
          { required: true, message: '请输入划线价', trigger: "blur" },
        ],
        shelfLife: [
          { required: true, message: '请输入保质期', trigger: "blur" },
        ],
        weight: [{ required: true, message: "请输入重量", trigger: "blur" }],
        postageWeight: [
          { required: true, message: '请输入邮费重量', trigger: "blur" },
        ],
        productAttr: [
          {
            required: true,
            message: '请选择产品属性',
            trigger: "change",
          },
        ],
        pkClassify: [
          {
            required: true,
            message: '请选择所属分类',
            trigger: "change",
          },
        ],
        sort: [
          { required: true, message: '请输入排列序号', trigger: "blur" },
        ],
        length: [{ required: true, message: "请输入长", trigger: "blur" }],
        width: [{ required: true, message: "请输入宽", trigger: "blur" }],
        height: [{ required: true, message: "请输入高", trigger: "blur" }],
        supplyPrice: [
          { required: true, message: '请输入', trigger: "blur" },
        ],
        retailPrice: [
          { required: true, message: '请输入', trigger: "blur" },
        ],
        supplyQuantity: [
          { required: true, message: '请输入', trigger: "blur" },
        ],
        saleModel: [
          { required: true, message: '请选择', trigger: "change" },
        ],
        pkCubasdoc: [
          { required: true, message: '请选择', trigger: "change" },
        ],
        cover: [
          { required: true, message: "请上传产品主图", trigger: "change" },
        ],
        pkSpecsType: [
          { required: true, message: "请选择规格", trigger: "change" },
        ],

        isFresh: [
          {
            required: true,
            message: '冷链运输',
            trigger: "change",
          },
        ],

        // isPrize: [
        //   {
        //     required: true,
        //     message: '抽奖礼品',
        //     trigger: 'change',
        //   },
        // ],
        // isGift: [
        //   { required: true, message: '请选择特惠礼品', trigger: 'change' },
        // ],
        // isPickUp: [
        //   { required: true, message: '请选择提货商品', trigger: 'change' },
        // ],
        // isMerge: [
        //   {
        //     required: true,
        //     message: '请选择合并发货',
        //     trigger: 'change',
        //   },
        // ],
        // isBarCode: [
        //   { required: true, message: '请选择条码管理', trigger: 'change' },
        // ],
        // ysList: [
        //   { required: true, message: '请选择运输方式', trigger: 'change' },
        // ],
      },
      ggList: [],
      // 规格名称弹框
      openDiag: false,
      showImg: true, //默认展示
      noneUploadImg: false, //
      uploadImgUrl: process.env.VUE_APP_BASE_API + "/system/upload",
      headers: {
        Authorization: getToken(),
      },
      form: {
        sort: "",
        sptw: "",
        checkList: [],
        ysList: [],
        coverList: [],
        sort: "",
        postageWeight: "",
        height: "",
        width: "",
        length: "",
        weight: "",
        shelfLife: "",
        pkSpecsType: [],
      },
      tabActive: 0,
      agreeList: [
        {
          text: '允许',
          val: 0,
        },
        {
          text: '禁止',
          val: 1,
        },
      ],
      topList: [
        {
          name: '基础设置',
          id: 0,
        },
        {
          name: '规格明细',
          id: 1,
        },
        // {
        //   name: '拓展设置',
        //   id: 2,
        // },
      ],
      productTypeList: [],
      fhTypeList: [],
      dwList: [],
      xsList: [],
      classifyList: [],
      transportTypeList: [],
      productId: "",
      methods: true,
      wahtMethods: 0,
      repurchaseTypeList: [],
      productList: [],
    };
  },
  computed: {
    ...mapGetters(["user"]),
  },
  mounted() {
    if (this.$route.query.productId) {
      this.productId = this.$route.query.productId;
    }
    this.methods = this.$route.query.methods ? false : true;
    this.wahtMethods = this.$route.query.methods;

    // 获取规格list
    this.getGg();
    // // 产品属性枚举
    this.getProductType();
    // 发货类型
    this.getShipping();
    // 单位
    this.getUnit();
    // 销售模式
    this.getXsModel();
    // 所属分类
    this.getClassifyAll();
    // 运输方式
    this.getTransportType();
    // 复购类型
    this.getRepurchaseType();
    // this.getProduct()
    if (this.wahtMethods == 1 || this.wahtMethods == 4) {
      this.getProductCode();
    }
  },
  methods: {
    
    // getProduct() {
    //   api.productFind1().then((res) => {
    //     this.productList = res.rows
    //   })
    // },
    getRepurchaseType() {
      api.repurchaseType().then((res) => {
        this.repurchaseTypeList = res.data;
      });
      
    },
    getProductCode() {
      let that = this
      api.getProductCode().then((res) => {
        setTimeout(()=>{
          that.form.productCode = res.msg;
        },100)
       
      });
    },
    getAllData() {
      api.thProductDetail({ productId: this.productId }).then((res) => {
        this.form = res.data;
        if (res.data.cover) {
          this.noneUploadImg = true;
        }
        this.form.coverList = [{ url: res.data.cover }];
        this.form = res.data;
        //  let ysList =
        this.$set(this.form, "ysList", [
          res.data.isLandTrans == 0 ? 1 : "",
          res.data.isAirTrans == 0 ? 2 : "",
          res.data.isOceanTrans == 0 ? 3 : "",
        ]);
        // this.form.checkList = this.form.pkSpecsType
        this.$set(this.form, "checkList", this.form.pkSpecsType);
        this.ggList.forEach((item) => {
          this.form.pkSpecsType.forEach((child) => {
            if (item.pkId == child) {
              // item.checked = true
              this.$set(item, "checked", true);
            }
          });
        });
        this.$forceUpdate();
      });
    },
    // 运输方式单独三个字段
    changeYsfs(val) {
      // 有陆运
      if (val.indexOf(1) > -1) {
        this.form.isLandTrans = 0;
      } else {
        this.form.isLandTrans = 1;
      }
      // 有空运
      if (val.indexOf(2) > -1) {
        this.form.isAirTrans = 0;
      } else {
        this.form.isAirTrans = 1;
      }
      // 海运
      if (val.indexOf(3) > -1) {
        this.form.isOceanTrans = 0;
      } else {
        this.form.isOceanTrans = 1;
      }
    },
    // 运输方式
    getTransportType() {
      api.transportType().then((res) => {
        this.transportTypeList = res.data;
      });
    },
    // 所属分类
    getClassifyAll() {
      api.classifyAll().then((res) => {
        this.classifyList = res.data;
      });
    },
    // 选完规格
    checkTrue() {
      this.ggList.forEach((item) => {
        item.checked = false;
      });
      this.ggList.forEach((item) => {
        this.form.checkList.forEach((child) => {
          if (item.pkId == child) {
            item.checked = true;
          }
        });
      });
      this.openDiag = false;
      this.form.pkSpecsType = this.form.checkList;
      this.$refs[form].clearValidate();
    },
    // 获取规格
    getGg() {
      api.findAll().then((res) => {
        res.data.forEach((item) => {
          item.checked = false;
        });
        this.ggList = res.data;
        if (this.productId) {
          this.getAllData();
        }
        if (this.$route.query.data) {
          this.form = JSON.parse(this.$route.query.data);
          if (this.form.cover) {
            this.noneUploadImg = true;
          }
          this.form.coverList = [{ url: this.form.cover }];
          this.$set(this.form, "checkList", this.form.pkSpecsType);
          this.ggList.forEach((item) => {
            this.form.pkSpecsType.forEach((child) => {
              if (item.pkId == child) {
                // item.checked = true
                this.$set(item, "checked", true);
              }
            });
          });
          this.$forceUpdate();
        }
      });
    },
    // 产品属性枚举
    getProductType() {
      api.productType().then((res) => {
        this.productTypeList = res.data;
      });
    },
    // 发货类型
    getShipping() {
      api.getShipping().then((res) => {
        this.fhTypeList = res.data;
      });
    },
    // 单位
    getUnit() {
      api.unitAll().then((res) => {
        this.dwList = res.data;
      });
    },
    // 销售模式
    getXsModel() {
      api.saleModel().then((res) => {
        this.xsList = res.data;
      });
    },
    // 移除规格
    handleClose(pkId) {
      // 引藏全规格中选中字段
      this.ggList.forEach((item) => {
        if (item.pkId == pkId) {
          item.checked = false;
        }
      });
      // 移除表单选中
      this.form.checkList.splice(this.form.checkList.indexOf(pkId), 1);
      this.$forceUpdate();
    },
    submit(form) {
      if (this.form.pkSpecsType.length == 0) {
        this.$message({
          message: "请选择规格",
          type: "warning",
        });
      } else {
        this.$refs[form].validate((valid) => {
          if (valid) {
            if (
              this.form.supplierName == "" ||
              this.form.supplierName == undefined
            ) {
              this.form.supplierName = this.user.nickName;
            }
            this.$router.push({
              path: "supplierGoodsZxqc",
              query: {
                data: JSON.stringify(this.form),
                controlType: this.wahtMethods,
              },
            });
          } else {
            return false;
          }
        });
      }
    },
    // 切换tab
    handleLink(id) {
      this.tabActive = id;
    },
    uploadImgChange(file, fileList) {
      this.noneUploadImg = fileList.length > 0;
      this.$refs.form.clearValidate("cover");
    },
    //图片上传成功后的回调
    handlePictureSuccess(res, file) {
      this.form.cover = res.data.url;
    },
    //图片上传删除
    handleRemove(file, fileList) {
      this.form.cover = "";
      this.noneUploadImg = fileList.length > 0;
    },
  },
};
</script>
<style scoped lang="scss">
::v-deep .el-select {
  width: 100%;
}

.uploadIcon ::v-deep .el-upload--picture-card {
  display: none !important;
  /* 上传按钮隐藏 */
}

.el-col-20 {
  width: 20%;
}

.el-col-60 {
  width: 60%;
}

.el-col-40 {
  width: 40%;
}

.topbox {
  align-items: center;
  padding: 0px 0 0px 0;
  display: flex; //   background: skyblue;

  .levelList_i {
    margin-left: 20px;
    position: relative;
    cursor: pointer;
    padding: 3px 10px;
    // width: 88px;
    // height: 34px;
    border-radius: 17px;
    border: 1px solid #cccccc;
    font-size: 14px;
    font-family: MicrosoftYaHei;
    text-align: center;
    // line-height: 34px;
  }

  .act {
    color: #ffffff;
    background: #c8161d;
  }

  .act1 {
    border-bottom: 3px solid #1890ff !important;
  }

  .cha {
    font-size: 16px;
    color: #606266;
    position: absolute;
    top: 10px;
  }

  .li {
    width: 40px;
    margin: 0 auto;
    border-bottom: 3px solid transparent;
  }
}

.page {
  height: calc(100vh - 50px);
  overflow: hidden;
  background: #f9f9f9;
  padding-top: 20px;
}

.main {
  display: flex;
  flex-direction: column;
  height: calc(100vh - 124px);
  overflow: hidden;
}

.contain {
  background: #ffffff;
  border-radius: 8px;
  box-shadow: 0px 2px 20px 0px rgba(238, 238, 238, 0.5);
  // margin: 10px 20px 0 20px;
  flex: 1;
  padding-top: 10px;
}

.footer {
  height: 68px;
  background: #ffffff;
  box-shadow: 0px -3px 20px 0px rgba(204, 204, 204, 0.5);
  // margin: 0 20px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.thebtn1 {
  background: #c8161d;
  color: #ffffff;
  padding: 9px 45px;
}

.thebtn2 {
  background: #cccccc;
  color: #ffffff;
  padding: 9px 45px;
}

.neibu {
  margin-right: 10px;
  color: #666666;
  font-style: normal;
}

.elTag {
  margin-right: 10px;
}

.check {
  display: flex;
  flex-wrap: wrap;
  text-align: center;

  // justify-content: center;
  .check_i {
    width: 50%;
    text-align: left;
    margin-right: 0 !important;
  }
}

.jy {
  font-size: 10px;
  font-family: PingFang SC-Regular, PingFang SC;
  font-weight: 400;
  color: #999999;
}

::v-deep .el-form-item {
  margin-bottom: 15px !important;
}
</style>
