<template>
  <div class="m-container">
    <!-- <h2><div class="squrt"></div>VIP活动方案新增 </h2> -->
    <h2>
      <el-page-header @back="onCancel" :content="'VIP活动方案' + (pageType == 'create' ? '新增' : '修改')"></el-page-header>
    </h2>
    <div class="m-core">
      <el-form
        :label-position="labelPosition"
        :model="vipform"
        ref="vipform"
        :rules="vipformRules"
        class="vipform"
      >
        <el-form-item label="活动名称" prop="name">
          <el-input style="width:400px" v-model.trim="vipform.name"></el-input>
        </el-form-item>
        <el-form-item label="适用分部" prop="organ">
          <el-select v-model.trim="vipform.organ" multiple filterable clearable>
            <el-option
              v-for="(item,index) in organList"
              :key="index"
              :label="item.name"
              :value="item.id"
            ></el-option>
          </el-select>
          <el-button @click="onCheckAllBranch">适用所有分部</el-button>
        </el-form-item>
        <el-form-item label="活动描述" prop="desc">
          <el-input
            type="textarea"
            v-model.trim="vipform.desc"
            style="width:400px"
            :rows="5"
            placeholder="请输入活动说明"
          ></el-input>
        </el-form-item>
        <el-form-item label="活动时间" prop="activeTime">
          <el-date-picker
            v-model.trim="vipform.activeTime"
            type="datetimerange"
            range-separator="至"
            value-format="yyyy-MM-dd HH:mm:ss"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          ></el-date-picker>
        </el-form-item>
        <el-form-item label="课程时间" prop="courseTime">
          <el-date-picker
            v-model.trim="vipform.courseTime"
            type="datetimerange"
            range-separator="至"
            value-format="yyyy-MM-dd HH:mm:ss"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          ></el-date-picker>
        </el-form-item>
        <el-form-item label="课程形式" prop="stauts">
          <el-select v-model.trim="vipform.stauts" filterable clearable multiple>
            <el-option
              v-for="(item,index) in courseStatusList"
              :key="index"
              :value="item.id"
              :label="item.name"
            ></el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <div class="activeRange">
        <div class="left">
          <p>活动适用范围&结算标准：</p>
        </div>
        <div class="right">
          <div class="chioseWrap">
            <el-checkbox label="线上课" v-model.trim="online"></el-checkbox>
            <el-select v-model.trim="onlineSalary" clearable filterable>
              <el-option label="老师默认课酬" value="TEACHER_DEFAULT"></el-option>
              <el-option label="实际课程单价比例折扣" value="RATIO_DISCOUNT"></el-option>
              <el-option label="固定课酬" value="FIXED_SALARY"></el-option>
            </el-select>
            <el-input
              placeholder="请输入"
              v-if="onlineSalary== 'RATIO_DISCOUNT'"
              style="width:200px;"
              type="number"
              @mousewheel.native.prevent
              v-model.trim="onlineprice"
            >
              <template slot="append">%</template>
            </el-input>
            <el-input
              placeholder="请输入"
              v-if="onlineSalary == 'FIXED_SALARY'"
              style="width:200px;"
              type="number"
              @mousewheel.native.prevent
              v-model.trim="onlineprice"
            >
              <template slot="append">元</template>
            </el-input>
            <div style="width:200px;" v-if="onlineSalary== 'TEACHER_DEFAULT'"></div>
            <el-checkbox
              label="是否参加梯度"
              style="margin-left:20px;"
              v-model.trim="onlineClassJoinGradientRewards"
            ></el-checkbox>
          </div>
          <div class="chioseWrap">
            <el-checkbox label="线下课" v-model.trim="unonline"></el-checkbox>
            <el-select v-model.trim="unonlineSalary" clearable filterable>
              <el-option label="老师默认课酬" value="TEACHER_DEFAULT"></el-option>
              <el-option label="实际课程单价比例折扣" value="RATIO_DISCOUNT"></el-option>
              <el-option label="固定课酬" value="FIXED_SALARY"></el-option>
            </el-select>
            <el-input
              placeholder="请输入"
              v-if="unonlineSalary== 'RATIO_DISCOUNT'"
              style="width:200px;"
              type="number"
              @mousewheel.native.prevent
              v-model.trim="unonlineprice"
            >
              <template slot="append">%</template>
            </el-input>
            <el-input
              placeholder="请输入"
              style="width:200px;"
              v-if="unonlineSalary== 'FIXED_SALARY'"
              type="number"
              @mousewheel.native.prevent
              v-model.trim="unonlineprice"
            >
              <template slot="append">元</template>
            </el-input>
            <div style="width:200px;" v-if="unonlineSalary== 'TEACHER_DEFAULT'"></div>
            <el-checkbox
              label="是否参加梯度"
              style="margin-left:20px;"
              v-model.trim="offlineClassJoinGradientRewards"
            ></el-checkbox>
          </div>
          <div class="chioseWrap">
            <el-checkbox v-model.trim="paymentReadonlyFlag" label="可自定义单价"></el-checkbox>
            <el-checkbox v-model.trim="salaryReadonlyFlag" label="可自定义课酬"></el-checkbox>
          </div>
        </div>
      </div>
      <div class="activeType">
        <div class="left">
          <p>活动类型</p>
        </div>
        <div class="right">
          <div>
            <div
              class="head"
              :class="activeType=='BASE_ACTIVITY'?'active':''"
              @click="activeType='BASE_ACTIVITY'"
            >基础活动</div>
            <p class="title" v-if="activeType=='BASE_ACTIVITY'">课程原价</p>
          </div>
          <div>
            <div
              class="head"
              :class="activeType=='DISCOUNT'?'active':''"
              @click="activeType='DISCOUNT'"
            >折扣</div>
            <el-input
              v-if="activeType=='DISCOUNT'"
              v-model.trim="attribute1"
              style="width:200px!important"
              placeholder="请输入折扣数值"
            >
              <template slot="append">%</template>
            </el-input>
          </div>
          <div>
            <div
              class="head"
              :class="activeType=='GIVE_CLASS'?'active':''"
              @click="activeType='GIVE_CLASS'"
            >赠送课时</div>
            <el-input
              placeholder="多少节开始赠"
              v-if="activeType=='GIVE_CLASS'"
              v-model.trim="attribute1"
              type="number"
              @mousewheel.native.prevent
              style="margin-right:10px;width:200px!important"
            >
              <template slot="append">节</template>
            </el-input>
            <span v-if="activeType=='GIVE_CLASS'">赠</span>
            <el-input
              v-if="activeType=='GIVE_CLASS'"
              placeholder="请输入赠送课时数"
              type="number"
              @mousewheel.native.prevent
              v-model.trim="attribute2"
              style="margin:0 10px;width:200px!important"
            >
              <template slot="append">节</template>
            </el-input>
            <el-checkbox
              v-if="activeType=='GIVE_CLASS'"
              v-model.trim="giveClassPaySalaryFlag"
              label="赠送课时结算课酬"
            ></el-checkbox>
          </div>
        </div>
      </div>
    </div>
    <div class="btnWrap" style="justify-content:flex-start">
      <div class="closeBtn" @click="onReSet">重置</div>
      <div class="okBtn" @click="submitFrom">确定</div>
    </div>
  </div>
</template>
<script>
import { vipGroupCategory, addVipActive } from "@/api/vipSeting";
import { getEmployeeOrgan } from "@/api/buildTeam";
export default {
  name: "vipNewActive",
  data() {
    return {
      pageType: this.$route.query.type,
      labelPosition: "left",
      vipform: {
        name: "",
        desc: "",
        activeTime: [],
        courseTime: [],
        organ: []
      },
      vipformRules: {
        name: [
          { required: true, message: "请输入活动名称", trigger: "blur" },
          { min: 1, max: 25, message: "长度在 1 到 25 个字符", trigger: "blur" }
        ],
        desc: [
          { required: false, message: "请输入文字描述", trigger: "blur" },
          {
            min: 1,
            max: 200,
            message: "长度在 1 到 200 个字符",
            trigger: "blur"
          }
        ],
        activeTime: [
          { required: false, message: "请选择活动时间", trigger: "blur" }
        ],
        courseTime: [
          { required: false, message: "请选择课程时间", trigger: "blur" }
        ],
        organ: [{ required: true, message: "请选择适用分部", trigger: "blur" }]
      },
      courseStatusList: [], // 获取所有课程形式
      activeType: "",
      online: true,
      unonline: true,
      onlineSalary: "TEACHER_DEFAULT",
      unonlineSalary: "TEACHER_DEFAULT",
      onlineprice: "",
      unonlineprice: "",
      salaryReadonlyFlag: true,
      paymentReadonlyFlag: true,
      attribute1: "",
      attribute2: "",
      attribute3: "",
      giveClassPaySalaryFlag: true,
      organList: [],
      onlineClassJoinGradientRewards: false,
      offlineClassJoinGradientRewards: false
    };
  },
  mounted() {
    if (this.$route.query.rules) {
      this.rules = this.$route.query.rules;
    }
    if (this.$route.query.searchForm) {
      this.searchForm = this.$route.query.searchForm;
    }
    // 首先获取课程形式
    vipGroupCategory().then(res => {
      if (res.code == 200) {
        this.courseStatusList = res.data;
      }
    });
    // 适用分部
    getEmployeeOrgan().then(res => {
      if (res.code == 200) {
        this.organList = res.data;
      }
    });
  },
  methods: {
    submitFrom() {
      this.$refs["vipform"].validate(valid => {
        if (valid) {
          // 验证通过
          let coursesStartTime = this.vipform.courseTime[0];
          let coursesEndTime = this.vipform.courseTime[1];
          let startTime = this.vipform.activeTime[0];
          let endTime = this.vipform.activeTime[1];
          let organId = this.vipform.organ.join(",");
          let type = this.activeType;
          let vipGroupCategoryIdList = this.vipform.stauts.join(",");
          let onlineSalarySettlement;
          let offlineSalarySettlement;
          if (this.online) {
            // 勾选线上
            onlineSalarySettlement = {
              salarySettlementType: this.onlineSalary,
              settlementValue: this.onlineprice
            };
          } else {
            onlineSalarySettlement = null;
          }
          if (this.unonline) {
            // 勾选线下
            offlineSalarySettlement = {
              salarySettlementType: this.unonlineSalary,
              settlementValue: this.unonlineprice
            };
          } else {
            offlineSalarySettlement = null;
          }
          let salaryReadonlyFlag = this.salaryReadonlyFlag * 1;
          let paymentReadonlyFlag = this.paymentReadonlyFlag * 1;
          let giveClassPaySalaryFlag = this.giveClassPaySalaryFlag * 1;
          let vipGroupSalarySettlement = {
            onlineSalarySettlement,
            offlineSalarySettlement
          };
          // 发请求创建活动
          addVipActive({
            coursesStartTime,
            coursesEndTime,
            startTime,
            endTime,
            name: this.vipform.name,
            description: this.vipform.desc,
            organId,
            type,
            vipGroupCategoryIdList,
            vipGroupSalarySettlement,
            salaryReadonlyFlag,
            paymentReadonlyFlag,
            giveClassPaySalaryFlag,
            attribute1: this.attribute1,
            attribute2: this.attribute2,
            attribute3: this.attribute3,
            offlineClassJoinGradientRewards:this.offlineClassJoinGradientRewards*1,
            onlineClassJoinGradientRewards:this.onlineClassJoinGradientRewards*1
          }).then(res => {
            if (res.code == 200) {
              this.$message.success("恭喜你,活动创建成功");
              this.onReSet();
              this.$router.push({
                path: "/vipClassSet/vipActiveList",
                query: { rules: this.rules, searchForm: this.searchForm }
              });
            }
          });
        } else {
          this.$message.error("请填写必要参数");
        }
      });

      // 线上线下课 勾选就传不勾选就不传
      // addVipActive().then(res => { })
    },
    onCheckAllBranch() {
      // 选择所有分部
      this.vipform.organ = [];
      this.organList.forEach(item => {
        this.vipform.organ.push(item.id);
      });
    },
    onCancel() {
      this.$router.push({
        path: "/vipClassSet/vipActiveList",
        query: { rules: this.rules, searchForm: this.searchForm }
      });
    },
    onReSet() {
      this.vipform = {
        name: "",
        desc: "",
        activeTime: [],
        courseTime: []
      };
      this.activeType = "";
      this.online = true;
      this.unonline = true;
      this.salaryReadonlyFlag = true;
      this.onlineSalary = "TEACHER_DEFAULT";
      this.unonlineSalary = "TEACHER_DEFAULT";
      this.onlineprice = "";
      this.unonlineprice = "";
      this.onlineClassJoinGradientRewards = false;
       this.offlineClassJoinGradientRewards = false;
      this.$refs.vipform.resetFields();
    }
  }
};
</script>
<style lang="scss" scoped>
.m-core {
  font-size: 14px;
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  // text-align: center;
  .activeRange {
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    .left {
      height: 72px;
      line-height: 72px;
    }
    .right {
      .chioseWrap {
        display: flex;
        flex-direction: row;
        justify-content: flex-start;
        height: 72px;
        line-height: 72px;
        align-items: center;
        .el-checkbox {
          margin-right: 20px;
        }
        .el-select {
          margin-right: 20px;
        }
      }
    }
  }
  .activeType {
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    .left {
      margin-right: 20px;
      p {
        height: 40px;
        line-height: 40px;
      }
    }
    .right {
      > div {
        display: flex;
        flex-direction: row;
        justify-content: flex-start;
        height: 40px;
        line-height: 40px;
        margin-bottom: 20px;
        .head {
          width: 120px;
          height: 40px;
          line-height: 40px;
          border: 1px solid #ccc;

          text-align: center;
          border-radius: 5px;
          cursor: pointer;
          margin-right: 10px;
        }
        > .head.active {
          background-color: #13817a;
          color: #fff;
          border: none;
        }
        .title {
          line-height: 40px;
          height: 40px;
        }
      }
    }
  }
}
</style>
<style lang="scss">
.m-core {
  .vipform {
    .el-select {
      width: 400px !important;
      .el-input__inner {
        width: 400px;
      }
    }
  }
  .activeType {
    .right {
      .el-input {
        width: 150px !important;
      }
    }
  }
}
</style>