<template>
  <view class="setDept">
    <view class="page_tab">
      <view class="page_tab_bar active">
        <view class="tab_dept">
          {{ configName}}
          <button type="default" size="mini" class="addDept" @click="addDeptClick">
            添加科室
          </button>
          <button type="default" size="mini" class="addBuilding" @click="addBuildingClick">
            楼栋选择
          </button>
        </view>
      </view>
    </view>
    <view v-if="zxzData.length == 0" class="zwsj">
      <image class="zwsj-img" mode="widthFix" src="../../static/img/zanwushuju.png"></image>
      <view class="zwsj-txt">暂无数据</view>
    </view>
    <view v-if="zxzData.length" class="page_items">
      <view class="page_items_scroll">
        <block v-for="row in zxzData" :key="row.id">
          <view class="keyword-entry" hover-class="keyword-entry-tap">
            <view class="keyword-text">
              <rich-text :nodes="row.dept"></rich-text>
            </view>
            <view class="keyword-img" @tap.stop="deleteDept(row.id)">
              删除科室
            </view>
          </view>
        </block>
      </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"
      @ok="ok" @cancel="cancel" @know="know" :operate="models.operate" :phone="models.phone"></showModel>
    <!-- 提示下班弹窗 -->
    <showModel :title="models1.title" :icon="models1.icon" :disjunctor="models1.disjunctor" :content="models1.content"
      @know="know1" :operate="models1.operate"></showModel>
  </view>
</template>
<script>
  import {
    post,
    get
  } from "../../http/http.js";
  export default {
    data() {
      return {
        configName: "", //快捷组合名称
        id: "", //快速组合的id
        changedept: 0, //是否是从切换负责科室过来的
        zxzData: [], //已选择的科室
        // 弹窗model
        models: {
          disjunctor: false,
        },
        // 下班弹窗model
        models1: {
          disjunctor: false,
        },
        delId: "", //科室删除的id
        userId: uni.getStorageSync("userData").user.id, //当前用户的id
      };
    },
    methods: {
      //知道了(下班弹窗)
      know1() {
        this.models1.disjunctor = false;
        uni.redirectTo({
          url: "../homePage/homePage",
        });
      },
      //知道了
      know() {
        this.models.disjunctor = false;
      },
      //确定
      ok() {
        this.models.disjunctor = false;
        let i = this.zxzData.findIndex((item) => item.id == this.delId);
        this.zxzData.splice(i, 1);
        uni.setStorageSync("setDepts", this.zxzData);
      },
      //取消
      cancel() {
        this.models.disjunctor = false;
      },
      // 添加科室
      addDeptClick() {
        uni.navigateTo({
          url: `../search/search?type=setDept&configName=${this.configName}&id=${this.id}&changedept=${this.changedept}`,
        });
      },
      // 楼栋选择
      addBuildingClick() {
        uni.navigateTo({
          url: `../searchMuti/searchMuti?type=setBuilding&configName=${this.configName}&id=${this.id}&changedept=${this.changedept}`,
        });
      },
      // 删除科室
      deleteDept(id) {
        this.delId = id;
        this.models = {
          disjunctor: true,
          title: "提示",
          content: "您确定要删除该科室吗?",
          icon: "warn",
          operate: {
            ok: "确定",
            cancel: "取消",
          },
        };
      },
      // 确认负责科室
      determine() {
        if (this.zxzData.length === 0) {
          this.models = {
            disjunctor: true,
            title: "提示",
            content: "请选择至少一个科室",
            icon: "warn",
            operate: {
              know: "知道了",
            },
          };
        } else {
          let setDeptConfg = uni.getStorageSync("setDeptConfg");
          let ids1 = this.zxzData.map((item) => item.id);
          let ids2 = this.zxzData.map((item) => {
            return {
              id: item.id,
            };
          });
          let postData1 = {
            quickId: this.id,
            deptIds: ids1.join(),
            userId: this.userId,
            changeDept: 1,
            classId: setDeptConfg.classesId,
          };
          if (setDeptConfg.workSchemeType == 2 && setDeptConfg.ruleType == 4 && this.changedept == 1) {
            //自选排班,科室绑定分组
            console.log(setDeptConfg)
            postData1.groupIds = setDeptConfg.selectGroupId.toString();
            postData1.isManager = true;
          }
          let postData2 = {
            workConfigHistory: {
              user: {
                id: this.userId,
              },
              workAllocationQuick: {
                id: this.id,
              },
              deptList: ids2,
              hosId: uni.getStorageSync("userData").user.currentHospital.id,
              classId: setDeptConfg.classesId,
            },
          };
          uni.showLoading({
            title: "加载中",
            mask: true,
          });
          if (this.changedept == 1) {
            //单纯切换科室!!!!
            //切换负责科室,不重新上班
            post("/auth/customOnline", postData1).then((res) => {
              if (res.status == 200) {
                post("/configuration/addData/workConfigHistory", postData2).then(
                  (result) => {
                    uni.hideLoading();
                    if (result.status == 200) {
                      uni.redirectTo({
                        url: "../receiptpage/receiptpage",
                      });
                    } else {
                      uni.showToast({
                        icon: "none",
                        title: "请求失败!",
                      });
                    }
                  }
                );
              } else if (res.status == 504) {
                uni.hideLoading();
                let dept = res.department.dept;
                let user = res.user.name;
                let phone = res.user.phone;
                this.models = {
                  disjunctor: true,
                  title: "提示",
                  content: `您选择的科室已经被使用,请换个科室,或者联系:科室[${dept}]人员[${user}]号码[${phone}] 切换科室解决`,
                  icon: "warn",
                  phone,
                  operate: {
                    know: "知道了",
                  },
                };
              } else if (res.status == 505) {
                uni.hideLoading();
                this.models1 = {
                  disjunctor: true,
                  title: "提示",
                  content: res.msg, //baba
                  icon: "warn",
                  operate: {
                    know: "知道了",
                  },
                };
              }
            });
          } else {
            let postData = {
              type: "on",
              customWorking: "on",
              quickId: this.id,
              deptIds: ids1.join(),
              userId: this.userId,
              classId: setDeptConfg.classesId,
            };
            if (setDeptConfg.workSchemeType == 2 && setDeptConfg.ruleType == 4) {
              //自选排班,科室绑定分组
              console.log(setDeptConfg)
              postData.groupIds = setDeptConfg.selectGroupId.toString();
              postData.isManager = true;
            }
            post("/auth/onOrOffLine", postData).then((res) => {
              if (res.status == 200) {
                post("/configuration/addData/workConfigHistory", postData2).then(
                  (result) => {
                    uni.hideLoading();
                    if (result.status == 200) {
                      let obj = uni.getStorageSync("userData");
                      obj.user.online = true;
                      uni.setStorageSync("userData", obj);
                      uni.redirectTo({
                        url: "../receiptpage/receiptpage",
                      });
                    } else {
                      uni.showToast({
                        icon: "none",
                        title: "请求失败!",
                      });
                    }
                  }
                );
              } else if (res.status == 504) {
                uni.hideLoading();
                let dept = res.department.dept;
                let user = res.user.name;
                let phone = res.user.phone;
                this.models = {
                  disjunctor: true,
                  title: "提示",
                  content: `您选择的科室已经被使用,请换个科室,或者联系:科室[${dept}]人员[${user}]号码[${phone}] 切换科室解决`,
                  icon: "warn",
                  phone,
                  operate: {
                    know: "知道了",
                  },
                };
              }
            });
          }
        }
      },
      // 获取科室列表
      getDeptList() {
        uni.showLoading({
          title: "加载中",
          mask: true,
        });
        let setDeptConfg = uni.getStorageSync("setDeptConfg");
        let postData = {};
        if (setDeptConfg.workSchemeType == 2 && setDeptConfg.ruleType == 4 && this.changedept != 1) {
          //自选排班,科室绑定分组,切换科室的时候
          console.log(setDeptConfg)
          postData.quickId = this.id;
          postData.groupId = setDeptConfg.selectGroupId.toString();
        }
        if (setDeptConfg.workSchemeType == 2 && setDeptConfg.ruleType == 3 && this.changedept != 1) {
          //自选排班,科室绑定人员,切换科室的时候
          postData.quickId = this.id;
        }
        post("/auth/getUserWorkDept", postData).then((res) => {
          uni.hideLoading();
          if (res.status == 200) {
            this.zxzData = res.data;
            if (res.settings) {
              if (res.settings.groupManager && this.changedept == 1) {
                setDeptConfg.selectGroupId = res.settings.groupManager.id;
                uni.setStorageSync('setDeptConfg', setDeptConfg);
              }
            }
            uni.setStorageSync("setDepts", this.zxzData); //存科室列表
          }
        });
      },
    },
    onLoad(options) {
      console.log(options);
      this.configName = options.configName;
      this.id = options.id;
      this.changedept = options.changedept;
      if (uni.getStorageSync("setDepts")) {
        this.zxzData = uni.getStorageSync("setDepts");
      } else {
        this.getDeptList();
      }
    },
  };
</script>
<style lang="less">
  .setDept {
    width: 100%;
    height: 100%;
    position: relative;

    .page_tab {
      width: 100%;
      height: 96rpx;
      display: flex;
      position: fixed;
      left: 0;
      top: 0;
      z-index: 999;

      .page_tab_bar {
        flex: 1;
        font-size: 36rpx;
        background: #fff;
        display: flex;
        justify-content: center;
        align-items: center;
        position: relative;

        &:after {
          content: "";
          position: absolute;
          left: 0;
          bottom: 0;
          height: 2rpx;
          width: 100%;
          background-color: transparent;
        }

        .tab_dept {
          position: relative;

          .addDept {
            white-space: nowrap;
            margin: 0;
            position: absolute;
            right: 0;
            top: 50%;
            transform: translate(105%, -50%);
            padding: 0 0.5em;
            line-height: 2;
          }
          .addBuilding{
            white-space: nowrap;
            margin: 0;
            position: absolute;
            top: 50%;
            transform: translate(105%, -50%);
            padding: 0 0.5em;
            line-height: 2;
          }
        }

        &.active {
          color: #49b856;

          &:after {
            background-color: #49b856;
          }
        }
      }
    }

    .zwsj {
      position: absolute;
      left: 50%;
      top: 180rpx;
      transform: translateX(-50%);

      .zwsj-img {
        width: 560rpx;
      }

      .zwsj-txt {
        font-size: 36rpx;
        font-weight: 700;
        margin-top: 20rpx;
        text-align: center;
      }
    }

    .page_items {
      height: calc(100vh - 184rpx);
      padding-top: 96rpx;
      overflow: auto;

      .page_items_scroll {
        height: 100%;

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

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

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

          .keyword-text {
            width: 90%;
          }

          .keyword-img {
            width: 20%;
            justify-content: center;
            color: #49b856;
          }
        }
      }
    }

    // 底部
    .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;
      }
    }
  }
</style>