<template>
  <!-- 添加运力信息 -->
  <div class="addCapacity">
    <PageTitle>返回</PageTitle>
    <div class="form_box" style="margin-right: 10rem">
      <dil-form :formId="309" v-model="form1" ref="from1"></dil-form>
    </div>
    <div class="elForm">
      <el-form :inline="true" class="demo-form-inline" label-width="80px">
        <el-form-item label="选择承运商">
          <el-autocomplete
            class="inline-input"
            v-model="state"
            :fetch-suggestions="querySearch"
            placeholder="请输入承运商名称"
            :trigger-on-focus="false"
            @select="handleSelect"
          >
            <template slot-scope="{ item }">
              <div class="name" v-if="item.carrierName">
                {{ item.carrierName }}
              </div>
            </template>
          </el-autocomplete>
        </el-form-item>
      </el-form>
    </div>

    <div class="button_box">
      <el-button @click="cancel">取消</el-button>
      <el-button type="primary" @click="makeSure" :loading="addLoading"
        >确定</el-button
      >
    </div>
  </div>
</template>

<script>
import PageTitle from "@/components/Page/Title";
import { getCookie } from "@/utils/util.js";
export default {
  components: { PageTitle },
  data() {
    return {
      addLoading: false,
      form1: {},
      form1Initialization: {
        capacityTypeId: 1,
        capacityNumber: "",
        capacityCorlor: "黄",
        capacityOwneris: "否",
        capacityVip: "否",
        capacityBlacklist: "否",
      },
      value: undefined,
      carrierIds: null,
      state: null,
      userId: null,
      restaurants: [],
      accessToken: null,
      userCode: null,
      carrierUserId: null,
      carrierId: null,
    };
  },
  created() {
    this.carrierUserId = getCookie("userId");
    this.form1 = this.form1Initialization;
    // console.log(this.carrierUserId, "carrierUserId");
  },
  mounted() {
    this.axios
      .post(
        "/api/v1/rms/getCarrierNameBySSOId?carrierSSOId=" + this.carrierUserId
      )
      .then((res) => {
        if (res.data.code == "200") {
          // console.log(res.data.data);
          if (res.data.data) {
            this.state = res.data.data.carrierName;
            this.carrierIds = res.data.data.carrierId;
          }
        }
      });
  },
  methods: {
    //承运商弹出层
    handleSelect(item) {
      this.carrierIds = item.carrierId;
      item.carrierName = this.state;
    },
    //以下是承运商边输边查搜索
    querySearch(queryString, cb) {
      this.axios
        .post("/api/v1/uc/getCarrierMesByLike?index=" + queryString)
        .then((res) => {
          if (res.data.code == "200") {
            // console.log(res.data.data);
            var restaurants = res.data.data;
            // console.log(restaurants, "restaurants");
            var results = queryString
              ? restaurants.filter(this.createFilter(queryString))
              : restaurants;
            // 调用 callback 返回建议列表的数据
            cb(results);
          }
        });
    },
    createFilter(queryString) {
      return (restaurants) => {
        return (
          restaurants.value.toLowerCase().indexOf(queryString.toLowerCase()) >
          -1
        );
      };
    },
    //以上是承运商边输边查搜索
    deleteUser(userId) {
      this.axios.delete("pass/v1/sysusers/" + userId).then((res) => {
        this.$message.error("添加失败,车牌可能重复");
      });
    },
    insertRole(userId, userCode) {
      this.axios
        .post(
          "pass/v1/sysuserroles/addUserroles?userId=" +
            userId +
            "&userCode=" +
            userCode +
            "&roleId=" +
            "923693668269953024"
        )
        .then((res) => {
          if (res.code === "0") {
            this.$message.success("操作成功");
            this.saveLoading = false;
            this.rolesTree.loading = false;
          } else {
            this.$message.error(res.message);
          }
        });
    },
    isVehicleNumber(vehicleNumber) {
      // console.log(vehicleNumber);
      var result = false;
      if (vehicleNumber.length == 7) {
        var express =
          /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
        result = express.test(vehicleNumber);
      }
      return result;
    },
    makeSure() {
      this.addLoading = true;
      if (!this.isVehicleNumber(this.form1.capacityNumber.toUpperCase())) {
        this.$message.error("车牌号格式不正确");
        this.addLoading = false;
        return;
      }
      if (this.carrierIds == null) {
        this.$message.error("请选择承运商");
        this.addLoading = false;
        return;
      }
      let RmsCapacity = {
        capacityTypeId: this.form1.capacityTypeId,
        capacityNumber: this.form1.capacityNumber.toUpperCase(),
        capacityCorlor: this.form1.capacityCorlor,
        capacityOwneris: this.form1.capacityOwneris,
        capacityVip: this.form1.capacityVip,
        capacityBlacklist: this.form1.capacityBlacklist,
        remark: this.form1.remark,
        carrierId: this.carrierIds,
        state: this.state,
      };
      if (
        RmsCapacity.capacityNumber == null ||
        RmsCapacity.capacityCorlor == null ||
        RmsCapacity.capacityOwneris == null ||
        RmsCapacity.capacityVip == null ||
        RmsCapacity.capacityBlacklist == null
      ) {
        this.$message.error("存在空值！");
        this.addLoading = false;
      } else {
        //新增SSO运力账号
        var formData = new FormData();
        formData.append("userCode", this.form1.capacityNumber.toUpperCase());
        formData.append("orgCode", "yunli");
        formData.append("orgName", "运力");
        formData.append("groupId", "506514577756917769");
        formData.append("companyId", "713710108567277568");
        formData.append("orgId", "924126716337721344");
        // console.log(formData.get("userCode"));
        // console.log(typeof formData);
        this.$store
          .dispatch("system/usersManage/addUser", formData)
          .then((res) => {
            // console.log(res);
            if (res.code === "0") {
              // console.log(res.data.userId);
              this.userId = res.data.userId;
              this.userCode = res.data.userCode;
              RmsCapacity.ssoId = res.data.userId;
              this.axios
                .post("/api/v1/rms/insertCapacity", RmsCapacity)
                .then((res) => {
                  if (res.data.data == 1) {
                    this.insertRole(this.userId, this.userCode);
                    this.$message.success("添加成功");
                    this.$router.push("capacity");
                  } else if (res.data.code == "201") {
                    this.deleteUser(this.userId);
                  } else {
                    this.deleteUser(this.userId);
                  }
                });
            } else {
              // console.log(RmsCapacity, "RmsCapacity");
              if (res.message == "账号已被注册") {
                this.$confirm(
                  "该账号已经被注册, 是否确定新增承运商绑定关系?",
                  "提示",
                  {
                    confirmButtonText: "确定",
                    cancelButtonText: "取消",
                    type: "warning",
                  }
                )
                  .then(() => {
                    this.axios
                      .post("/api/v1/rms/insertCapacity", RmsCapacity)
                      .then((res) => {
                        // console.log(res, "res");
                        if (res.data.data == 0) {
                          this.$message.success("新增承运商绑定关系成功!");
                          this.$router.push("capacity");
                        } else {
                          this.$message.error("该绑定关系已存在!");
                        }
                      });
                  })
                  .catch(() => {
                    this.$message({
                      type: "info",
                      message: "已取消删除",
                    });
                  });
              }
            }
          });
        this.addLoading = false;
      }
    },
    // 取消
    cancel() {
      this.$router.go(-1);
    },
  },
};
</script>
<style lang='scss' >
.addCapacity {
  .elForm {
    margin-left: 40%;
  }
  .form_box {
    width: 100%;
    margin-top: 30px;
    margin-left: 50px;
    display: flex;
    justify-content: center;
    .el-form-item {
      display: flex;
      justify-content: center;
      .el-form-item__label {
        display: flex;
        align-items: center;
      }
      .el-form-item__content {
        .el-select {
          width: 250px;
        }
        .el-input {
          width: 250px;
        }
      }
    }
  }
  .inputBox {
    display: flex;
    justify-content: center;
    margin-bottom: 30px;
    .text {
      text-align: right;
      display: flex;
      align-items: center;
      margin-right: 5px;
    }
    .input {
      width: 250px;
    }
  }
  .button_box {
    display: flex;
    justify-content: center;
    .el-button {
      width: 80px;
      margin-right: 10px;
    }
  }
}
</style>
