<template>
  <!-- 弹出框表单 -->
  <el-drawer
    :title="title"
    :visible.sync="open"
    :direction="direction"
    :destroy-on-close="true"
    size="80%"
  >
    <el-form
      ref="form"
      :model="form"
      :rules="rules"
      label-width="140px"
      style="padding: 0 40px"
    >
      <el-row>
        <Field
          label="企业名称"
          prop="companyName"
          v-model="form.companyName"
          placeholder="请输入企业名称"
        />
      </el-row>
      <el-row>
        <Field
          label="联系电话"
          prop="contactPhone"
          v-model="form.contactPhone"
          placeholder="请输入联系电话"
        />
      </el-row>
      <!-- <Field label="公司编码" prop="companyCode" v-model="form.companyCode" placeholder="请输入公司编码"/>
                            <Field label="注册号" prop="registrationNumber" v-model="form.registrationNumber" placeholder="请输入注册号"/>
                            <Field label="法定代表人" prop="legalRepresentative" v-model="form.legalRepresentative" placeholder="请输入法定代表人"/>
                            <Field label="注册资本" prop="registeredCapital" v-model="form.registeredCapital" placeholder="请输入注册资本"/>
                            <Field label="公司类型" prop="companyType" v-model="form.companyType" placeholder="请输入公司类型"/>
        <Field :span="24" label="经营范围" prop="businessScope" v-model="form.businessScope" placeholder="请输入经营范围"/>-->
      <!-- <Field :span="24" label="经营地址" prop="businessAdress" v-model="form.businessAdress" placeholder="请输入经营地址">
                              <p>当前选中的行政区划编码为: {{regionCodeList}}</p>
                              <el-cascader  v-model="regionCodeList" :props="areaprops"></el-cascader>
        </Field>-->
      <el-row>
        <Field
          :span="24"
          label="经营地址"
          prop="businessAdress"
          placeholder="请输入经营地址"
        >
          <area-select
            ref="areaselect"
            v-model="form.areaCode"
            @addressSelect="addressSelect"
          ></area-select>
        </Field>
      </el-row>
      <el-row>
        <!-- <Field label="所在地" prop="location" v-model="form.location" placeholder="请输入所在地"/> -->
        <Field
          prop="location"
          v-model="form.location"
          placeholder="请输入详细地址"
        />
      </el-row>
      <el-row>
        <!-- <Field label="所在地" prop="location" v-model="form.location" placeholder="请输入所在地"/> -->
        <Field
          label="经度"
          prop="lon"
          v-model="form.lon"
          placeholder="请输入经度"
        />
      </el-row>
      <el-row>
        <!-- <Field label="所在地" prop="location" v-model="form.location" placeholder="请输入所在地"/> -->
        <Field
          label="纬度"
          prop="lati"
          v-model="form.lati"
          placeholder="请输入纬度"
        />
      </el-row>
      <!-- <Field label="电子邮件地址" prop="email" v-model="form.email" placeholder="请输入电子邮件地址"/>
                            <Field label="公司网站" prop="website" v-model="form.website" placeholder="请输入公司网站"/>
                            <Field label="税务登记号" prop="taxRegistrationNumber" v-model="form.taxRegistrationNumber" placeholder="请输入税务登记号"/>
                            <Field label="社会信用代码" prop="socialCreditCode" v-model="form.socialCreditCode" placeholder="请输入社会信用代码"/>
                            <Field label="商标信息" prop="trademarkInfo" v-model="form.trademarkInfo" placeholder="请输入商标信息"/>
                            <Field label="网站历史备案信息" prop="websiteRegistrationInfo" v-model="form.websiteRegistrationInfo" placeholder="请输入网站历史备案信息"/>
                            <Field label="员工总数" prop="totalEmployees" v-model="form.totalEmployees"   placeholder="员工总数"/>
                            <Field label="软件著作权数量" prop="softNum" v-model="form.softNum"  placeholder="软件著作权数量"/>
                            <Field label="专利数量" prop="patentNum" v-model="form.patentNum" placeholder="专利数量"/>
                            <Field label="历史发展" prop="hisDevelop" v-model="form.hisDevelop" type="textarea" placeholder="请输入历史发展"/>
                            <Field label="经度" prop="lon" v-model="form.lon" placeholder="请输入经度"/>
        <Field label="纬度" prop="lati" v-model="form.lati" placeholder="请输入纬度"/>-->
      <!-- <Field label="公司文化" prop="companyCulture" v-model="form.companyCulture" type="textarea" placeholder="请输入公司文化"/>
                            <Field label="排序" prop="sort" v-model="form.sort" type="num" placeholder="请输入排序"/>
        <Field label="成立日期" prop="establishDate" v-model="form.establishDate" type="date" />-->
      <el-row>
        <Field :span="24" label="企业logo">
          <imageUpload v-model="form.logoPath" prePath="/file/preview" />
        </Field>
      </el-row>
      <el-row>
        <Field :span="24" label="企业背景图">
          <imageUpload v-model="form.background" prePath="/file/preview" />
        </Field>
      </el-row>
      <el-row>
        <!-- <Field
          :span="24"
          label="企业标签"
          prop="companyLabelsList"
          type="select"
          :multiple="true"
          :enumData="dict.labels"
          v-model="form.companyLabelsList"
          placeholder="请选择产品分类"
        /> -->
        <Field :span="24" label="企业标签">
          <el-select
            v-model="companyLabelsList"
            multiple
            placeholder="请选择企业标签"
            :style="{ width: '590px' }"
          >
            <el-option
              v-for="($label, $value) in dict.labels"
              :key="$value"
              :label="$label"
              :value="$value"
            ></el-option>
          </el-select>
        </Field>
      </el-row>
      <el-row>
        <Field label="轮播图">
          <imageUpload
            v-model="form.companyPicPath"
            prePath="/file/preview"
            :isList="true"
            ref="imgList"
          />
        </Field>
      </el-row>
      <el-row>
        <Field label="短视频"
          ><fileUpload
            v-model="form.companyVideoPath"
            :fileType="['mp4', 'avi']"
            prePath="/file/fileupload"
        /></Field>
      </el-row>
      <el-row>
        <Field label="公司介绍">
          <editor v-model="form.companyIntroduction" :min-height="150" />
        </Field>
        <!-- <Field
          label="公司介绍"
          prop="companyIntroduction"
          v-model="form.companyIntroduction"
          type="textarea"
          placeholder="请输入公司介绍"
        /> -->
        <!-- <Field :span="24" label="企业视频"><fileUpload v-model="form.companyVideoPath" :fileType="[ 'mp4', 'avi']"  prePath="/file/fileupload"/></Field>
              <Field :span="24" label="企业宣传图片"><fileUpload v-model="form.companyPicPath" :fileType="['png', 'jpg', 'jpeg']" prePath="/file/preview"/></Field>

        <Field :span="24" label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>-->
      </el-row>
      <Field :span="24" label="知识产权">
        <el-table
          class="zhshchq"
          :data="companyPatentsList"
          :row-class-name="rowCompanyPatentsIndex"
          @selection-change="handleCompanyPatentsSelectionChange"
          ref="companyPatents"
        >
          <!-- <el-table-column type="selection" width="50" align="center" /> -->
          <el-table-column
            label="序号"
            align="center"
            prop="index"
            width="50"
          />
          <el-table-column
            label="知识产权类型"
            align="center"
            prop="intellectPropertyType"
          >
            <template slot-scope="scope">
              <el-input
                v-model="scope.row.intellectPropertyType"
                placeholder="请输入知识产权类型"
              />
            </template>
          </el-table-column>

          <el-table-column label="知识产权数量" prop="labelId" align="center">
            <template slot-scope="scope">
              <el-input-number
                v-model="scope.row.intellectPropertyNum"
                size="small"
                placeholder="请输入知识产权数量"
              ></el-input-number>
            </template>
          </el-table-column>

          <el-table-column label="操作" width="240">
            <template slot-scope="scope">
              <Confirm
                @confirm="handleDeleteCompanyPatents(scope.row)"
                message="确定要删除该条知识产权吗?"
              >
                <div class="del">删除</div>
              </Confirm>
            </template>
          </el-table-column>
        </el-table>
        <el-row
          style="margin: 10px 0; display: flex; justify-content: center"
          :gutter="10"
          class="mb8"
        >
          <el-col :span="1.5">
            <el-button
              type="primary"
              icon="el-icon-plus"
              @click="handleAddCompanyPatents"
              >新增知识产权</el-button
            >
          </el-col>
        </el-row>

        <el-form-item v-if="pageInfo.type != 'view'" class="formbtns">
          <el-button
            type="primary"
            @click="hanndleSubmit"
            icon="el-icon-circle-check-outline"
            >保存</el-button
          >
          <el-button @click="open = false" icon="el-icon-circle-close-outline"
            >取消</el-button
          >
        </el-form-item>
      </Field>
    </el-form>
  </el-drawer>
</template>

<script>
import form from "@/assets/mixins/formdialog";
import Confirm from "@/components/Confirm.vue";
export default {
  name: "CompanyDetail",
  mixins: [form],
  components: {
    Confirm,
  },
  created() {
    this.changePath("company");
  },
  data() {
    let that = this;
    var checkPhone = (rule, value, callback) => {
      let phoneReg = /^(((\d{3,4}-)?[0-9]{7,8})|(1(3|4|5|6|7|8|9)\d{9}))$/;
      if (!value) {
        callback();
      } else {
        if (phoneReg.test(value)) {
          callback();
        } else {
          callback(new Error("请输入正确的联系电话"));
        }
      }
    };
    return {
      regionCodeList: [],
      areaprops: {
        // 单选
        checkStrictly: true,
        // 懒加载
        lazy: true,
        lazyLoad(node, resolve) {
          var param = {
            pid: node.level === 0 ? 0 : node.data.id,
            size: -1,
          };

          that.$post("/base/area/list", param).then((res) => {
            console.log(res);
            let nodes = res.data.data.map((item) => {
              return {
                value: item.areaCode,
                label: item.name,
                id: item.iid,
                leaf: item.haveSonArea === "False",
              };
            });
            resolve(nodes);
          });
        },
      },
      // 子表选中数据
      checkedCompanyLabels: [],
      // 公司标注表格数据
      companyLabelsList: [],
      // 子表选中数据
      checkedCompanyPatents: [],
      // 公司专利表格数据
      companyPatentsList: [],
      // 遮罩层
      loading: true,
      // 弹出层标题
      title: "公司",
      // 是否显示弹出层
      open: false,
      direction: "rtl",
      toString: ["labelId"],
      toDate: ["establishDate"],
      // 表单校验
      rules: {
        companyName: [
          { required: true, message: "请输入公司名称", trigger: "blur" },
          { max: 128, message: "最多只能录入128个字符", trigger: "blur" },
        ],
        areaCode: [
          { required: true, message: "请输入所属区域编码", trigger: "blur" },
          { max: 128, message: "最多只能录入128个字符", trigger: "blur" },
        ],
        areaName: [
          { required: true, message: "请输入所属区域名称", trigger: "blur" },
          { max: 128, message: "最多只能录入128个字符", trigger: "blur" },
        ],
        contactPhone: [
          { required: true, message: "请输入联系电话", trigger: "blur" },
          { validator: checkPhone, trigger: "blur" },
          { max: 32, message: "最多只能录入32个字符", trigger: "blur" },
        ],
        lon: [
          { required: true, message: "请输入经度", trigger: "blur" },
          { max: 32, message: "最多只能录入32个字符", trigger: "blur" },
        ],
        lati: [
          { required: true, message: "请输入纬度", trigger: "blur" },
          { max: 32, message: "最多只能录入32个字符", trigger: "blur" },
        ],
        logoPath: [
          { required: true, message: "请输入企业logo", trigger: "blur" },
        ],
        establishDate: [{ required: true, message: "请选择成立日期" }],
        createTime: [{ required: true, message: "请选择创建时间" }],
      },
    };
  },

  methods: {
    hanndleSubmit() {
      this.form.businessAdress =
        this.$refs.areaselect.provinceName +
        this.$refs.areaselect.cityName +
        this.$refs.areaselect.areaName +
        this.$refs.areaselect.streetName +
        this.$refs.areaselect.communityName +
        this.form.location;
      // 检查知识产权list中类型不能为空
      if (this.companyPatentsList && this.companyPatentsList.length > 0) {
        let isNull = false;
        this.companyPatentsList.forEach((item) => {
          if (!item.intellectPropertyType) {
            isNull = true;
          }
        });
        if (isNull) {
          this.$confirm("知识产权类型不能为空", "提示", {
            confirmButtonText: "确定",
            type: "warning",
            showCancelButton: false, //是否显示取消按钮
            showClose: false, //是否显示关闭按钮
          });
          return;
        }
      }
      this.submitForm();
    },
    addressSelect(val) {
      console.log("addressSelect", val);
    },

    /** 公司标注序号 */
    rowCompanyLabelsIndex({ row, rowIndex }) {
      row.index = rowIndex + 1;
    },

    /** 公司专利序号 */
    rowCompanyPatentsIndex({ row, rowIndex }) {
      row.index = rowIndex + 1;
    },
    /** 公司专利添加按钮操作 */
    handleAddCompanyPatents() {
      let obj = {};
      obj.companyId = "";
      obj.intellectPropertyType = "";
      obj.intellectPropertyNum = 1;
      obj.remark = "";
      obj.createUserId = "";
      obj.createTime = "";
      obj.updateUserId = "";
      obj.updateTime = "";
      this.companyPatentsList.push(obj);
    },
    /** 公司专利删除按钮操作 */

    handleDeleteCompanyPatents(row) {
      // 由于有一些知识产权还没有id,所以这里删除选用的是字段中带的index
      this.companyPatentsList = this.companyPatentsList.filter(
        (item) => item.index !== row.index
      );
      this.form.companyPatentsList = this.companyPatentsList;
    },
    /** 单选框选中数据 */
    handleCompanyPatentsSelectionChange(selection) {
      if (selection.length > 1) {
        this.$refs.companyPatents.clearSelection();
        this.$refs.companyPatents.toggleRowSelection(selection.pop());
      } else {
        this.checkedCompanyPatents = selection;
      }
    },

    // 渲染前置处理
    beforeRender(data) {
      if (data.entity.companyLabelsList) {
        let arr = [];
        data.entity.companyLabelsList.forEach((item) => {
          //如果相等做操作
          item["labelId"] = item["labelId"] + "";
          arr.push(item.labelId);
        });
        this.companyLabelsList = arr;
      }
      if (data.entity.companyPatentsList) {
        this.companyPatentsList = data.entity.companyPatentsList;
      }

      return data;
    },
    /** 编辑 */
    edit(row) {
      this.reset();
      this.query = { id: row.id };
      this.urls.currUrl = "company/edit";
      this.getData();
      this.pageInfo.type = "edit";
      this.title = "编辑企业信息";
    },
    /** 新增 */
    add(row) {
      this.reset();
      this.urls.currUrl = "company/add";
      this.getData();
      this.pageInfo.type = "add";
      this.title = "新增企业";
    },
    /** 查看*/
    view(row) {
      this.reset();
      this.query = { id: row.id };
      this.urls.currUrl = "company/view";
      this.getData();
      this.pageInfo.type = "view";
      this.title = "企业详情";
    },
    /**取消按钮 */
    cancel() {
      this.open = false;
    },
    beforeSubmit(data) {
      // data.companyLabelsList = data.companyLabelsList.join(",");
      let arr = [];
      arr = this.$refs.imgList.imgList.map((v) => {
        return v.response ? v.response.url : v.url.substr(v.url.indexOf("f"));
      });
      data.companyPicPath = arr.join(",");
      return data;
    },
    /**获取数据后弹框 */
    afterRender(data) {
      this.open = true;
    },

    afterSubmit(data) {
      this.open = false;
      this.$emit("ok");
    },

    // 表单重置
    reset() {
      this.form = {
        companyName: "",
        companyCode: "",
        registrationNumber: "",
        legalRepresentative: "",
        registeredCapital: "",
        companyType: "",
        businessScope: "",
        businessAdress: "",
        location: "",
        areaCode: "",
        areaName: "",
        contactPhone: "",
        email: "",
        website: "",
        taxRegistrationNumber: "",
        socialCreditCode: "",
        trademarkInfo: "",
        websiteRegistrationInfo: "",
        totalEmployees: null,
        softNum: null,
        patentNum: null,
        hisDevelop: "",
        lon: "",
        lati: "",
        logoPath: "",
        background: "",
        companyVideoPath: "",
        companyPicPath: "",
        companyIntroduction: "",
        companyCulture: "",
        sort: 0,
        establishDate: null,
        remark: "",
        companyLabelsList: [],
        companyPatentsList: [],
      };
      this.resetForm("form");
    },
    resetForm(refName) {
      if (this.$refs[refName]) {
        this.$refs[refName].resetFields();
      }
    },
  },
  watch: {
    companyLabelsList(newval) {
      let arr = [];
      newval.forEach((item) => {
        arr.push({
          labelId: item,
        });
      });
      this.form.companyLabelsList = arr;
    },
  },
};
</script>

<style lang="less" scoped>
.del {
  color: red;
}
.formbtns {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  height: 60px;
  margin-top: 30px;
}
.zhshchq {
  margin-top: 20px;
}
</style>