<template>
  <view class="content">
    <view class="search-keyword">
      <scroll-view class="keyword-list-box" scroll-y>
        <checkbox-group @change="checkboxChange">
          <label v-for="(row, index) in dataList" :key="row.id">
            <view class="keyword-entry" hover-class="keyword-entry-tap">
              <view class="keyword-text">
                <checkbox color="#42b983" :value="row.id" :checked="row.checked" />
                <rich-text :nodes="row.buildingName"></rich-text>
              </view>
              <view class="keyword-img">
                <image src="/static/HM-search/back.png"></image>
              </view>
            </view>
          </label>
        </checkbox-group>
      </scroll-view>
    </view>
    <view class="toolbar" @click="determine()" hover-class="seimin-btn-hover">
      <text class="toolbar-sao">确定</text>
    </view>
    <!-- 弹窗 -->
    <showModel :title="models.title" :icon="models.icon" :disjunctor="models.disjunctor" :content="models.content" @know="know" :operate="models.operate"></showModel>
  </view>
</template>

<script>
  import {
    post,
    webHandle
  } from "../../http/http.js";
  export default {
    data() {
      return {
        type: "", //进入该页面的类型
        configName: "", //快速组合名称
        id: "", //快速组合id
        changedept: 0, //是否从列表过来的切换负责科室
        hosId: "",
        dataList: [],
        //系统设置的科室类型
        sysDeptType: 0,
        quickCombinationDeptType: 0,
        // 弹窗model
        models: {
          disjunctor: false,
        },
      };
    },
    onLoad(options) {
      this.hosId = uni.getStorageSync("userData").user.currentHospital.id;
      console.log(options, 'options');
      this.type = options.type;
      if (this.type == "setBuilding") {
        this.configName = options.configName;
        this.id = options.id;
        this.changedept = options.changedept;
        
        options.quickCombinationId && this.getQuickCombinationDeptType(+options.quickCombinationId);
      } else {
        this.getSysDeptType();
      }
      // this.init();
      // #ifdef APP-PLUS
      webHandle("no", "app");
      // #endif
      // #ifdef H5
      webHandle("no", "wx");
      // #endif
    },
    methods: {
      //知道了
      know() {
        this.models.disjunctor = false;
      },
      //获取系统设置的科室类型
      getQuickCombinationDeptType(quickCombinationId) {
        let postData = {
          "idx": 0,
          "sum": 1,
          workAllocationQuickConfig: {
            id: quickCombinationId
          }
        }
        post("/simple/data/fetchDataList/workAllocationQuickConfig", postData).then((res) => {
          if (res.status == 200) {
            let workAllocationQuickConfig = res.list[0] || {};
            // 科室绑定人员
            if(workAllocationQuickConfig.ruleType == 3){
              if(workAllocationQuickConfig.deptTypeList){
                this.quickCombinationDeptType = workAllocationQuickConfig.deptTypeList.map(v => v.id).toString();
              }else{
                // 没有获取到配置,则获取之前的
                this.getSysDeptType();
              }
              this.getBuildings();
            }else{
              this.getSysDeptType();
            }
          }
        })
      },
      // 确认
      determine() {
        console.log(this.dataList);
        const dataList = this.dataList.filter(v => v.checked);
        if (dataList.length === 0) {
          this.models = {
            disjunctor: true,
            title: "提示",
            content: "请选择至少一个楼栋",
            icon: "warn",
            operate: {
              know: "知道了",
            },
          };
        } else {
          let postData = {
            "idx": 0,
            "sum": 9999,
            department: {
              buildIds: dataList.map(v => v.id).toString()
            }
          }
          
          if(this.quickCombinationDeptType){
            postData.department.deptTypeIds = this.quickCombinationDeptType;
          } else if (this.sysDeptType === 0) {
            return;
          } else {
            postData.department.type = {
              id: this.sysDeptType
            }
          }
          
          uni.showLoading({
            title: "加载中",
          });
          post("/data/fetchDataList/department", postData).then((res) => {
            uni.hideLoading();
            if (res.status == 200) {
              let obj = uni.getStorageSync("setDepts");
              console.log(res.list,obj)
              if (obj) {
                let list = [...res.list, ...obj];
                let newArr = [];
                let obj1 = {};
                for (let i = 0; i < list.length; i++) {
                  if (!obj1[list[i].id]) {
                    newArr.push(list[i]);
                    obj1[list[i].id] = true;
                  }
                }
                console.log(newArr);
                uni.setStorageSync("setDepts", newArr);
              } else {
                uni.setStorageSync("setDepts", res.list);
              }
              uni.navigateTo({
                url: `../setDept/setDept?configName=${this.configName}&id=${this.id}&changedept=${this.changedept}`,//不知道
              });
            } else {
              uni.showToast({
                icon: "none",
                title: res.msg || "接口获取数据失败!",
              });
            }
          })
        }
      },
      // 选择楼栋
      checkboxChange: function(e) {
        var dataList = this.dataList,
            values = e.detail.value;
        for (var i = 0, lenI = dataList.length; i < lenI; ++i) {
          const item = dataList[i]
          if (values.includes(item.id)) {
            this.$set(item, 'checked', true)
          } else {
            this.$set(item, 'checked', false)
          }
        }
      },
      //获取系统设置的科室类型
      getSysDeptType() {
        uni.showLoading({
          title: "加载中",
        });
        let postData = {
          "idx": 0,
          "sum": 1,
          systemConfiguration: {
            keyconfig: "busiViewDeptId"
          }
        }
        post("/simple/data/fetchDataList/systemConfiguration", postData).then((res) => {
          this.getBuildings();
          if (res.status == 200) {
            this.sysDeptType = res.list[0].valueconfig
          } else {
            uni.showToast({
              icon: "none",
              title: res.msg || "接口获取数据失败!",
            });
          }
        })
      },
      //获取楼栋列表
      getBuildings() {
        let postData = {
          "idx": 0,
          "sum": 100,
          building: {
            cascadeHosId: this.hosId
          }
        }
        post("/simple/data/fetchDataList/building", postData).then((res) => {
          uni.hideLoading();
          if (res.status == 200) {
            this.dataList = res.list || [];
          } else {
            uni.showToast({
              icon: "none",
              title: res.msg || "接口获取数据失败!",
            });
          }
        })
      },
    },
  };
</script>
<style scoped lang="less">
  view {
    display: block;
  }
  // 底部
  .toolbar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9999;
    height: 88rpx;
    display: flex;
    justify-content: center;
    align-items: center;
    box-sizing: border-box;
    border-radius: 4rpx;
    box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.24);
    background-color: #e5e9ed;
  
    .toolbar-sao {
      font-size: 36rpx;
      color: #49b856;
    }
  }

  .search-box {
    width: 95%;
    background-color: rgb(242, 242, 242);
    padding: 15upx 2.5%;
    display: flex;
    justify-content: space-between;
    position: sticky;
    top: 0;
  }

  .search-box .mSearch-input-box {
    width: 100%;
  }

  .search-box .input-box {
    width: 85%;
    flex-shrink: 1;
    display: flex;
    justify-content: center;
    align-items: center;
  }

  .search-box .search-btn {
    width: 15%;
    margin: 0 0 0 2%;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-shrink: 0;
    font-size: 28upx;
    color: #fff;
    background: linear-gradient(to right, #ff9801, #ff570a);
    border-radius: 60upx;
  }

  .search-box .input-box>input {
    width: 100%;
    height: 60upx;
    font-size: 32upx;
    border: 0;
    border-radius: 60upx;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding: 0 3%;
    margin: 0;
    background-color: #ffffff;
  }

  .placeholder-class {
    color: #9e9e9e;
  }

  .search-keyword {
    width: 100%;
    background-color: rgb(242, 242, 242);
  }

  .keyword-list-box {
    height: calc(100vh - 110upx);
    padding-top: 10upx;
    border-radius: 20upx 20upx 0 0;
    background-color: #fff;
  }

  .keyword-entry-tap {
    background-color: #eee;
  }

  .keyword-entry {
    width: 94%;
    height: 80upx;
    margin: 0 3%;
    font-size: 30upx;
    color: #333;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: solid 1upx #e7e7e7;
  }

  .keyword-entry image {
    width: 60upx;
    height: 60upx;
  }

  .keyword-entry .keyword-text,
  .keyword-entry .keyword-img {
    height: 80upx;
    display: flex;
    align-items: center;
  }

  .keyword-entry .keyword-text {
    width: 90%;
  }

  .keyword-entry .keyword-img {
    width: 10%;
    justify-content: center;
  }

  .keyword-box {
    height: calc(100vh - 110upx);
    border-radius: 20upx 20upx 0 0;
    background-color: #fff;
  }

  .keyword-box .keyword-block {
    padding: 10upx 0;
  }

  .keyword-box .keyword-block .keyword-list-header {
    width: 94%;
    padding: 10upx 3%;
    font-size: 27upx;
    color: #333;
    display: flex;
    justify-content: space-between;
  }

  .keyword-box .keyword-block .keyword-list-header image {
    width: 40upx;
    height: 40upx;
  }

  .keyword-box .keyword-block .keyword {
    width: 94%;
    padding: 3px 3%;
    display: flex;
    flex-flow: wrap;
    justify-content: flex-start;
  }

  .keyword-box .keyword-block .hide-hot-tis {
    display: flex;
    justify-content: center;
    font-size: 28upx;
    color: #6b6b6b;
  }

  .keyword-box .keyword-block .keyword>view {
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 60upx;
    padding: 0 20upx;
    margin: 10upx 20upx 10upx 0;
    height: 60upx;
    font-size: 28upx;
    background-color: rgb(242, 242, 242);
    color: #6b6b6b;
  }
</style>