<template>
  <div class="joblist-container">
    <!-- 筛选导航 -->
    <div class="navigation">
      <div class="w">
        <!-- 特色筛选的列表盒子 -->
        <div v-if="isspecialboxshow" class="specialbox" @click.stop="">
          <div class="w">
            <ul>
              <li
                v-for="(item, index) in specialList"
                :key="index"
                @click.stop="specialclick(index, item)"
                :class="{ 'special-active': specialactive.indexOf(index) > -1 }"
              >
                {{ item.name }}
              </li>
            </ul>
          </div>
        </div>
        <ul>
          <li>
            <i class="iconfont icon-dingwei"></i
            ><a-cascader
              :options="cityoption"
              change-on-select
              @change="onChange"
              placeholder="选择城市"
              v-model="formvalue.district"
              id="city"
            />
          </li>
          <li>
            <a-cascader
              :options="options.price"
              placeholder="工价"
              @change="onChange"
              v-model="formvalue.monthlyPayStr"
              id="price"
            />
          </li>

          <li>
            <a-cascader
              :options="options.age"
              placeholder="年龄"
              @change="onChange"
              v-model="formvalue.ageStr"
              id="age"
            />
          </li>
          <li class="special">
            <div
              @click.stop="isspecialboxshowclick"
              :style="isspecialboxshow ? 'color:#ff6a00' : ''"
            >
              <span :style="specialactive.length != 0 ? 'color:#ff6a00' : ''"
                >特色</span
              ><i
                class="iconfont icon-xiala"
                :class="isspecialboxshow ? 'turn' : ''"
                :style="isspecialboxshow ? 'color:#ff6a00' : ''"
              ></i>
            </div>
          </li>
          <li @click="claerfilter"><a href="javascript:;">清空筛选</a></li>
        </ul>
      </div>
    </div>
    <!-- 主体部分 -->
    <div class="maincontent w">
      <div class="maincontentleft">
        <div style="text-align: center">
          <a-spin tip="加载中..." :spinning="isspinning"> </a-spin>
        </div>
        <div
          class="nodata"
          v-if="jobMainList.length === 0 && isspinning === false"
        >
          <p>没有符合条件的岗位</p>
        </div>
        <div v-if="!isspinning">
          <div class="subset" v-for="(item, index) in jobMainList" :key="index">
            <router-link :to="'/detail/' + item.id">
              <div class="subsetleft">
                <div class="imgbox">
                  <img
                    :src="item.logo || 'require(../../assets/美特科技.png)'"
                  />
                </div>
                <div class="jobinfobox">
                  <div class="jobname">{{ item.aliasName }}</div>
                  <div class="jobinfo">
                    <span>{{ item.district }}</span>
                    <span>{{ item.gender }}</span>
                    <span>丨{{ item.age }}</span>
                  </div>
                  <div class="jobtag">
                    <span>返费</span>
                    <span
                      v-for="(item1, index) in item.jobSpecialLabelNames"
                      :key="index"
                      >{{ item1 }}</span
                    >
                  </div>
                  <div
                    class="jobpricemonth"
                    :style="{ opacity: item.minMonthlyPay ? '1' : '0' }"
                  >
                    <span>{{ item.minMonthlyPay }}</span
                    >-<span>{{ item.maxMonthlyPay }}</span
                    >元/月
                  </div>
                  <div class="jobpricehour">
                    <template v-if="item.hourlyPay"
                      ><span>{{ item.hourlyPayTemp / 100 }}</span
                      >元/小时</template
                    >
                    <template v-else-if="item.dayPay"
                      ><span>{{ item.hourlyPayTemp / 100 }}</span
                      >元/日</template
                    >
                  </div>
                </div>
              </div>
            </router-link>
            <div class="subsetright">
              <div class="topbox">
                <div>服务费</div>
                <div><span>1.5</span>元/小时</div>
              </div>
              <div class="bottombox">
                <router-link :to="'/detail/' + item.id">
                  <button>更多</button>
                </router-link>
                <button>录单</button>
              </div>
            </div>
          </div>
        </div>
        <div class="pagecontainer">
          <a-pagination
            :current="+formvalue.pageNum"
            :default-current="1"
            :defaultPageSize="2"
            :total="formvalue.total"
            @change="pageChange"
          />
          <div class="ant-pagination-options-quick-jumper">
            跳至<input
              ref="pageinput"
              type="text"
              @keyup.enter="inputpageChange"
            />页
          </div>
        </div>
      </div>
      <div class="maincontentright">
        <div class="hotphone">
          <h1>服务热线</h1>
          <p>0371-666666666</p>
        </div>
        <div class="relationme">
          <p>一手单合作</p>
          <button>发布一手单</button>
        </div>
        <recommend />
      </div>
    </div>
  </div>
</template>

<script>
import {
  JobListApi,
  getJobSpecialApi,
  getProvinceApi,
  // getCityApi,
} from "../../api/job";
import { disposeJobListData } from "../../utils/commonUtil";
import recommend from "@/components/FirstJob/components/recommend.vue";
export default {
  // 组件名称
  name: "",
  // 局部注册的组件
  components: {
    recommend,
  },
  // 组件参数 接收来自父组件的数据
  props: {
    isspecialboxshow: {
      require: true,
    },
  },
  // 组件状态值
  data() {
    return {
      isspinning: false, // 加载中显示
      jobMainList: [], // 职位列表
      specialList: [], // 获取的特色列表

      formvalue: {
        // 筛选的上传参数
        district: [],
        monthlyPayStr: [],
        ageStr: [],
        jobSpecialLabelIds: [],
        pageNum: 1,
        pageSize: 2,
        total: null, //分页配置
      },
      specialactive: [], // 点中的特色标签索引
      specialvalue: [], // 点中的特色标签

      cityoption: [], // 城市列表
      options: {
        //
        price: [
          {
            value: "3000-4000",
            label: "3000-4000元",
            uid: 1,
          },
          {
            value: "4000-5000",
            label: "4000-5000元",
            uid: 1,
          },
          {
            value: "5000-6000",
            label: "5000-6000元",
            uid: 1,
          },
          {
            value: "6000-7000",
            label: "6000-7000元",
            uid: 1,
          },
        ],
        age: [
          {
            value: "16-45",
            label: "16-45岁",
            uid: 2,
          },
          {
            value: "18-35",
            label: "18-35岁",
            uid: 2,
          },
          {
            value: "45-58",
            label: "45-58岁",
            uid: 2,
          },
          {
            value: "58",
            label: "58岁以上",
            uid: 2,
          },
        ],
      },
      relationList: [],
    };
  },
  // 计算属性
  computed: {},
  // 侦听器
  watch: {
    formvalue: {
      handler(e) {
        console.log(e);
        // 筛选列表数据处理
        // if(e.city !== undefined){
        if (e.district.length === 0) {
          document.getElementById("city").style.width = 105 + "px";
        } else {
          const data = e.district.join("");
          console.log(data);
          if (data.length > 6) {
            document.getElementById("city").style.width =
              (data.length + 4) * 18 + "px";
            document.querySelector("#city").nextElementSibling.style.width = // 获取下一个兄弟元素s
              (data.length + 4) * 18 + "px";
          } else if (data.length > 4) {
            document.getElementById("city").style.width =
              (data.length + 2.6) * 18 + "px";
            document.querySelector("#city").nextElementSibling.style.width =
              (data.length + 2.6) * 18 + "px";
          } else {
            document.getElementById("city").style.width =
              (data.length + 2) * 18 + "px";
            document.getElementById("city").style.minWidth = 72 + "px";
            document.querySelector("#city").nextElementSibling.style.width =
              (data.length + 2) * 18 + "px";
          }
        }
        // }
        // 工价的判断
        if (e.monthlyPayStr.length === 0) {
          document.getElementById("price").style.width = 70 + "px";
        } else {
          const data = e.monthlyPayStr.join("");
          if (data.length >= 0) {
            document.getElementById("price").style.width = "150px";
            document.getElementById("price").nextElementSibling.style.width =
              "150px";
            // document.querySelector(".ant-cascader-picker-label").style.width =
            // "150px";
          }
        }
        // 年龄筛选长度的判断
        if (e.ageStr.length === 0) {
          document.getElementById("age").style.width = 70 + "px";
        } else {
          const data = e.ageStr.join("");
          if (data.length >= 0) {
            document.getElementById("age").style.width = "100px";
            document.getElementById("age").nextElementSibling.style.width =
              "100px";
            // document.querySelector(".ant-cascader-picker-label").style.width =
            // "150px";
          }
        }
      },
      deep: true,
    },
  },
  // 组件

  // 生命周期钩子   注：没用到的钩子请自行删除
  /**
   * 组件实例创建完成，属性已绑定，但DOM还未生成，$ el属性还不存在
   */
  created() {
    this.getJobList();
    this.getJobSpecial();
    this.getProvince();
  },
  /**
   * el 被新创建的 vm.el 替换，并挂载到实例上去之后调用该钩子。
   * 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.el 也在文档内。
   */
  mounted() {
    // this.$nextTick(() => {
    //   console.log(this.isspecialboxshow);
    // });
    // document.querySelector(".ant-pagination-options-quick-jumper").innerHTML =
    //   "跳至<input  type='text'>页";
  },
  // 组件方法
  methods: {
    /**
     * 处理后台返回的职位列表
     */

    // 获取工作列表
    async getJobList() {
      this.isspinning = true;
      console.log(this.formvalue);
      try {
        var newdata = {
          district: "",
          monthlyPayStr: "",
          ageStr: "",
          jobSpecialLabelIds: "",
          pageNum: 1,
          pageSize: 2,
          total: null, //分页配置
        };
        for (var k in this.formvalue) {
          console.log(this.formvalue[k]);
          if (Array.isArray(this.formvalue[k])) {
            newdata[k] =
              this.formvalue[k].length > 0 ? this.formvalue[k].join() : "";
          } else {
            newdata[k] = this.formvalue[k];
          }
        }
        console.log(newdata);
        // debugger;
        const { data } = await JobListApi(newdata);
        if (data.status === 200) {
          this.jobMainList = disposeJobListData(data.data.recordList);
          this.formvalue.total = data.data.recordCount;
          console.log(this.jobMainList);
        } else {
          this.$message.info("数据获取失败");
        }
        console.log(data);
        //  = data.data.recordList;
        this.isspinning = false;
        console.log(this.formvalue);
      } catch (error) {
        console.log(error);
      }
    },

    onSearch() {},
    // 获取职位特色
    async getJobSpecial() {
      try {
        const { data } = await getJobSpecialApi();
        console.log(data);
        this.specialList = data.data;
      } catch (error) {
        console.log(error);
      }
    },

    // 获取省份列表
    async getProvince() {
      // const that = this;
      try {
        const { data } = await getProvinceApi();
        data.data.pop();
        this.cityoption = data.data;

        // console.log(this.cityoption);
        // console.log(data);
      } catch (error) {
        console.log(error);
      }
    },
    // 筛选职位
    onChange(e, item) {
      console.log(e);
      console.log(item);
      if (item) {
        if (item.uid === 1) {
          console.log(1);
          console.log(item[0]);
          this.formvalue.monthlyPayStr = item[0];
        } else if (item.uid === 2) {
          this.formvalue.ageStr = item[0];
        } else if (item[0].id) {
          console.log(e.join());
          this.formvalue.district = e;
        }
      }
      this.getJobList();
    },
    pageChange(e) {
      console.log(e);
      this.formvalue.pageNum = e;
      this.$refs.pageinput.value = "";
      this.getJobList();
    },
    inputpageChange(e) {
      this.formvalue.pageNum = e.target.value;
      this.getJobList();
      console.log(e);
    },
    handleChange() {},
    claerfilter() {
      const { pageNum, pageSize, total } = this.formvalue;
      this.formvalue = {
        district: [],
        monthlyPayStr: [],
        ageStr: [],
        jobSpecialLabelIds: [],
        pageNum,
        pageSize,
        total, //分页配置
      };
      console.log(this.formvalue);
      this.specialactive = [];
      this.specialvalue = [];
      this.getJobList();
    },
    specialclick(index, item) {
      console.log(item);
      let arrIndex = this.specialactive.indexOf(index);
      if (arrIndex > -1) {
        this.specialactive.splice(arrIndex, 1);
        this.specialvalue.splice(arrIndex, 1);
      } else {
        this.specialactive.push(index);
        this.specialvalue.push(item.id);
      }
      this.formvalue.jobSpecialLabelIds = this.specialvalue;
      // console.log(this.specialactive);
      this.getJobList();
      console.log(this.specialvalue);
      console.log(this.formvalue);
      // console.log(index);
    },
    isspecialboxshowclick() {
      this.$emit("update:isspecialboxshow", !this.isspecialboxshow);
    },
  },
};
</script>

<style scoped lang="less">
/deep/ .navigation {
  margin-top: -1px;
  background-color: #fff;
  border: 1px solid #f6f6f6;
  height: 50px;
  line-height: 50px;

  position: relative;

  .special-active {
    color: rgb(254, 97, 0) !important;
    background-color: rgba(255, 106, 0, 0.1) !important;
  }
  .ant-cascader-picker-focused {
    input {
      transition: all 0.3s;
    }
    input::placeholder {
      color: rgb(255, 106, 0) !important;
    }
    i {
      color: rgb(255, 106, 0) !important;
    }
  }
  > .w {
    display: flex;
    justify-content: start;
    .specialbox {
      position: absolute;
      // display: ;
      transition: all 0.4s;
      left: 0;
      top: 49px;
      width: 100vw;
      background-color: #fff;
      z-index: 999;
      ul {
        overflow: hidden;
        padding: 12px 0 0 0;
        li {
          padding: 5px 12px;
          margin: 0px 24px 10px 0;
          cursor: pointer;
          float: left;
          background: rgba(216, 216, 216, 0.3);
          border-radius: 15px;
          font-size: 16px;
          color: #4d575e;
          line-height: 22px;
        }
      }
    }
    > ul {
      display: flex;
      justify-content: start;
      li {
        // margin-right: 30px;
        font-size: 18px;
        color: #4d575e;
        .ant-cascader-picker {
          width: auto;
          position: relative;
          transform: translateY(-2px);
          .ant-cascader-input {
            width: 70px;
            // margin-top: -5px;
            // max-width: 150px !important;
            border: none;
            padding: 0;
            // margin-bottom: 6px;
            box-shadow: none;
          }
          .ant-cascader-input::placeholder {
            // width: auto;
            // text-indent: 20px;
            color: #4d575ecc;
            line-height: 20px;
            font-size: 18px;
          }
          span {
            // width: 110px;
            // max-width: 150px;
            color: rgb(255, 106, 0) !important;
            font-size: 18px;
            padding: 0 20px 0 0;
            text-align: left;
            line-height: 18px !important;
          }
        }
      }
      li:first-child {
        > i {
          position: relative;
          display: inline-block;
          width: 18px;
          height: 18px;
          margin-right: 8px;
          font-size: 18px;
          color: #4d575ecc;
          // margin-top: -9px;
          &::before {
            position: absolute;
            left: 0;
            top: -15px;
          }
        }
        .ant-cascader-picker {
          width: auto;
          position: relative;
          .ant-cascader-input {
            min-width: 105px;
          }
          .ant-cascader-input::placeholder {
            // width: auto;
            color: #4d575ecc;
            text-indent: 0;
            line-height: 20px;
            font-size: 18px;
          }
          span {
            // width: auto;
            // max-width: 150px;
            // min-width: 140px;
            text-align: left;
          }
        }
      }
      .special {
        position: relative;
        div:first-child {
          height: 32px;
          margin-top: 7px;
          line-height: 32px;
          color: #4d575ecc;
          cursor: pointer;
          i {
            transition: all 0.2s;
            position: relative;
            color: #c5c5c5;
            margin-left: 5px;
            display: inline-block;
            font-size: 12px;
            transform: translateY(-1px) scale(0.7);
          }
          .turn {
            transform: translateY(-1px) scale(0.7) rotate(180deg);
          }
        }
      }
      li:last-child {
        position: relative;
        color: #8c8d8f;
        font-size: 16px;
        // color: rgba(78, 88, 95, 0.8);
        transform: translateY(-2px);
        margin-left: 30px;

        a {
          transition: all 0.5s;

          &:active {
            color: rgb(255, 106, 0);
            transition: none;
          }
        }
      }
    }
  }
}

/deep/ .maincontent {
  display: flex;
  justify-content: space-between;
  margin-top: 16px;
  .maincontentleft {
    width: 914px;
    margin-right: 16px;
    text-align: left;
    .nodata {
      overflow: hidden;
      height: 100px;
      text-align: center;
      background-color: #fff;
      border-radius: 5px;
      margin: 0 auto;
      color: #00000066;
      margin-bottom: 20px;
      p {
        position: relative;
        transform: translateY(35px);
      }
    }
    .subset {
      display: flex;
      justify-content: space-between;
      width: 914px;
      height: 212px;
      padding: 20px;
      margin-bottom: 16px;
      background: #ffffff;
      border-radius: 4px;
      .subsetleft {
        display: flex;
        .imgbox {
          width: 230px;
          height: 172px;
          margin-right: 20px;
          img {
            width: 100%;
            height: 100%;
          }
        }
        .jobinfobox {
          .jobname {
            // margin: 12px 0;
            font-size: 20px;
            font-weight: 600;
            text-align: left;
            color: #4d575e;
            line-height: 28px;
          }
          .jobinfo {
            margin-top: 16px;
            opacity: 0.5;
            font-size: 16px;
            font-weight: 400;
            text-align: left;
            color: #4d575e;
            line-height: 20px;
          }
          .jobtag {
            margin-top: 12px;
            text-align: left;
            span:first-child {
              color: #ff6a00;
              background: rgba(254, 97, 0, 0.1);
            }
            span {
              margin-right: 8px;
              font-size: 14px;
              padding: 4px 8px;
              background: rgba(51, 51, 51, 0.06);
              border-radius: 4px;
            }
          }
          .jobpricemonth {
            margin-top: 12px;
            font-size: 18px;
            font-weight: 400;
            text-align: left;
            color: #4d575e;
            line-height: 22px;
          }
          .jobpricehour {
            margin-top: 12px;
            font-size: 16px;
            font-weight: bold;
            text-align: left;
            color: #ff6a00;
            // line-height: 24px;
            span {
              vertical-align: baseline;
              font-size: 20px;
              line-height: 24px;
            }
          }
        }
      }
      .subsetright {
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        align-items: flex-end;
        .topbox {
          width: 116px;
          height: 62px;
          text-align: center;
          background: rgba(255, 106, 0, 0.1);
          border-radius: 4px;
          color: #ff6a00;
          line-height: 30px;
          div {
            font-weight: bold;

            span {
              font-size: 20px;
              // font-weight: bold;
            }
          }
          div:first-child {
            height: 28px;
            background: #ff6a00;
            line-height: 28px;
            font-size: 18px;
            color: #ffffff;
            border: 1px solid #ff6a00;
            border-radius: 4px 4px 0px 0px;
          }
        }
        .bottombox {
          button {
            width: 72px;
            height: 32px;
            border: 1px solid rgba(77, 87, 94, 0.3);
            border-radius: 4px;
          }
          a {
            button:first-child {
              width: 72px;
              height: 32px;
              border: 1px solid rgba(77, 87, 94, 0.3);
              border-radius: 4px;
              color: #4d575e;
              background-color: #fff;
              cursor: pointer;
            }
          }
          button:last-child {
            margin-left: 16px;
            border: 1px solid #ff6a00;
            background-color: #fff;
            color: rgba(255, 106, 0, 1);
          }
        }
      }
    }
    .pagecontainer {
      display: flex;
      justify-content: center;
      text-align: center;
      margin-bottom: 30px;
      .ant-pagination-options-quick-jumper {
        margin-left: 10px;
        font-size: 16px;
      }
      .ant-pagination-disabled {
        a:hover {
          color: #c5c5c5 !important;
        }
      }
      .ant-pagination-next,
      .ant-pagination-prev {
        a:hover {
          color: #ff6a00;
        }
      }
      input[type="text"] {
        box-shadow: none;
        &:focus {
          border: 1px solid #ff6a006a;
        }
        &:hover {
          border: 1px solid #ff6a006a;
        }
      }
      .ant-pagination-item {
        border: none;
        a:hover {
          color: #ff6a00;
        }
      }
      .ant-pagination-item-active {
        background: #ff6a00;
        a {
          color: white;
        }
        a:hover {
          color: white;
        }
      }
      .ant-pagination-item-link {
        border: none;
      }
    }
  }
  .maincontentright {
    > div {
      margin-bottom: 16px;
    }
    .hotphone {
      width: 270px;
      height: 106px;
      padding: 20px 32px;
      border-radius: 4px;
      background-color: #fff;

      p {
        font-size: 24px;
        color: #ff6a00;
        font-weight: bold;
        margin-top: 12px;
      }
    }
    .relationme {
      width: 270px;
      padding: 20px 40px;
      background: #ffffff;
      border-radius: 4px;
      button {
        width: 150px;
        height: 32px;
        margin-top: 16px;
        font-size: 16px;
        line-height: 20px;
        border-radius: 4px;
        border: 0;
        background-color: #ff6a00;
        color: #fff;
      }
    }
  }
}
</style>
