<template>
  <div class="container">
    <div class="title">活动设置</div>
    <van-cell-group class="all">
      <van-cell :required="true" title="活动标题" style="font-size:14px;">
        <template slot="default">
          <van-field v-model="title" placeholder="请输入活动标题" class="right" style="font-size:14px;" />
        </template>
      </van-cell>
      <van-cell :required="true" title="活动开始时间" style="font-size:14px;">
        <template slot="default">
          <div class="nobr">
            <van-field
              class="right"
              v-model="startTime1"
              placeholder="请选择开始时间"
              readonly="readonly"
              @click="openStartTime"
            />
            <van-popup v-model="startShow" position="bottom" :overlay="true">
              <van-datetime-picker
                v-model="startTime"
                type="datetime"
                :min-date="minStartDate"
                @cancel="startShow = false"
                @confirm="handleStartTime"
                @change="startTimeChange"
              />
            </van-popup>
          </div>
        </template>
      </van-cell>
      <van-cell :required="true" title="活动结束时间" style="font-size:14px;">
        <template slot="default">
          <div class="jpsl">
            <van-field
              class="right"
              v-model="endTime1"
              placeholder="请选择结束时间"
              readonly="readonly"
              @click="openEndTime"
            />
            <van-popup v-model="endShow" position="bottom" :overlay="true">
              <van-datetime-picker
                v-model="endTime"
                type="datetime"
                :min-date="minEndDate"
                @cancel="endShow = false"
                @confirm="handleEndTime"
                @change="endTimeChange"
              />
            </van-popup>
          </div>
        </template>
      </van-cell>
      <van-cell title="背景图片" style="font-size: 14px">
        <van-uploader v-model="bg_imgs" :max-count="1" :after-read="afterBGRead" />
      </van-cell>
      <van-cell :required="true" title="活动Logo" style="font-size: 14px">
        <van-uploader :max-count="1" v-model="logo_imgs" :after-read="afterLogoRead"></van-uploader>
      </van-cell>
      <van-cell :required="true" title="单日最大发放数量">
        <van-stepper
          v-model="maxNumber"
          :show-plus="false"
          :show-minus="false"
          input-width="140px"
          step="1"
          min="1"
          max="999999"
          integer
        />
        <!-- <template slot="default">
          <div class="jpsl">
            <van-field
              class="right noborder"
              readonly
              clickable
              :value="maxNumber"
              placeholder="请输入限制次数"
              @touchstart.native.stop="maxNumber_show = true"
            />
            <van-number-keyboard
              v-model="maxNumber"
              :show="maxNumber_show"
              :maxlength="6"
              @blur="maxNumber_show = false"
            />
          </div>
        </template>-->
      </van-cell>
      <van-cell :required="true" title="总发放数量">
        <van-stepper
          v-model="totalLimit"
          :show-plus="false"
          :show-minus="false"
          input-width="140px"
          step="1"
          min="1"
          max="999999"
          integer
        />
        <!-- <template slot="default">
          <div class="jpsl">
            <van-field
              class="right noborder"
              readonly
              clickable
              :value="totalLimit"
              placeholder="请输入限制次数"
              @touchstart.native.stop="totalLimit_show = true"
            />
            <van-number-keyboard
              v-model="totalLimit"
              :show="totalLimit_show"
              :maxlength="6"
              @blur="totalLimit_show = false"
            />
          </div>
        </template> -->
      </van-cell>
      <van-cell
        :required="true"
        title="选择优惠券"
        :value="checked_coupon.name"
        is-link
        @click="showCoupon = true"
        center
      />
    </van-cell-group>
    <!-- 活动描述 -->
    <van-cell :required="true" class="detail">
      <div class="border">
        <div class="des">活动描述</div>
        <van-field
          class="area"
          v-model="message"
          rows="2"
          autosize
          type="textarea"
          placeholder="请输入描述"
          show-word-limit
        />
      </div>
    </van-cell>
    <!-- 活动图片 -->
    <div class="detail" style="margin-top:0;">
      <div class="des">活动图片</div>
      <van-uploader v-model="fileList_show" multiple :max-count="9" :after-read="afterImgRead" />
    </div>
    <div class="creat" @click="handleCreate">创建活动</div>
    <van-action-sheet v-model="showCoupon" :actions="coupons" cancel-text="取消" @select="onSelect" />
  </div>
</template>

<script>
import axios from "axios";
import * as API_Active from "@/api/active";
export default {
  data() {
    return {
      minStartDate: null,
      minEndDate: null,
      checked_coupon: {},
      logo_imgs: [],
      bg_imgs: [],
      title: "",
      title2: "",
      coupon: "",
      newCustomer: "",
      condition: "",
      type: "",
      show: false,
      show2: false,
      cashCoupon: "",
      limit: "",
      startTime: new Date(),
      startTime1: "",
      endTime: new Date(),
      endTime1: "",
      startShow: false,
      endShow: false,
      message: "",
      fileList: [],
      fileList_show: [],
      showCoupon: false,
      coupons: [],
      maxNumber: "",
      maxNumber_show: false,
      totalLimit: "",
      totalLimit_show: false
    };
  },
  created() {
  },
  methods: {
    openStartTime() {
      this.startShow = true;
      this.minStartDate = new Date();
    },
    openEndTime() {
      this.endShow = true;
      this.minEndDate = new Date();
    },
    getTemplateDate(id) {
      API_Active.getTemplateData(id).then(res => {
        this.title = res.data.activityInfo.activityName;
        let time1 = res.data.activityInfo.startTime;
        this.startTime1 =
          `${time1.substring(0, 4)}-${time1.substring(4, 6)}-${time1.substring(
            6,
            8
          )}` + time1.substring(8);
        let time2 = res.data.activityInfo.endTime;
        this.endTime1 =
          `${time2.substring(0, 4)}-${time2.substring(4, 6)}-${time2.substring(
            6,
            8
          )}` + time2.substring(8);
        this.bg_imgs[0] = { url: res.data.activityInfo.backImage };
        this.logo_imgs[0] = { url: res.data.activityInfo.logo };
        this.maxNumber = res.data.activityInfo.joinLimit?.toString();
        this.totalLimit = res.data.activityInfo.totalLimit?.toString();
        this.checked_coupon = JSON.parse(res.data.activityInfo.coupon);
        this.checked_coupon.couponId = res.data.activityInfo.couponId;
        this.message = res.activityInfo.des;
        let imgs = JSON.parse(res.data.activityInfo.image);
        let img_list = [];
        imgs.forEach(i => {
          let item = {};
          item.url = i;
          img_list.push(item);
        });
        this.fileList = img_list;
      });
    },
    onSelect(val) {
      this.checked_coupon = val;
      this.showCoupon = false;
    },
    afterImgRead(file) {
      if (file.length) {
        file.forEach(e => {
          let params = new FormData();
          params.append("file", e.file);
          let url = "http://139.155.48.151:8084/admin/auth/util/saveImg";
          axios.post(url, params).then(res => {
            let img_url = JSON.parse(JSON.stringify(res.data.data.imgPath));
            this.fileList.push(img_url);
          });
        });
      } else {
        let params = new FormData();
        params.append("file", file.file);
        let url = "http://139.155.48.151:8084/admin/auth/util/saveImg";
        axios.post(url, params).then(res => {
          this.fileList.push(JSON.parse(JSON.stringify(res.data.data.imgPath)));
        });
      }
    },
    getCoupons() {
      console.log("获取优惠券");
      let id = sessionStorage.getItem("oyStallCode") || 1;
      API_Active.getAllCouponsByOyStallCode(id).then(res => {
        if (res.data.length === 0 || !res.data.length) {
          this.$toast("您所在店铺没有优惠券，请先去创建");
          setTimeout(() => {
            this.$router.push("/");
          }, 500);
        } else {
          this.coupons = res.data;
        }
      });
    },
    async afterLogoRead(file) {
      let logo_img = await this.getImgUrl(file.file);
      let item = {
        url: logo_img,
        status: "done",
        message: "上传成功"
      };
      this.logo_imgs[0] = item;
    },
    async afterBGRead(file) {
      let bg_img = await this.getImgUrl(file.file);
      let item = {
        url: bg_img,
        status: "done",
        message: "上传成功"
      };
      this.bg_imgs[0] = item;
    },
    // 上传图片
    async getImgUrl(file) {
      let params = new FormData();
      params.append("file", file);
      let url = "http://139.155.48.151:8084/admin/auth/util/saveImg";
      const img = await axios.post(url, params);
      let urls = img.data.data.imgPath;
      return urls;
    },
    handleCreate() {
      if (
        this.title === "" ||
        this.startTime1 == "" ||
        this.endTime1 == "" ||
        this.logo_imgs.length == 0 ||
        this.maxNumber == "" ||
        this.totalLimit == "" ||
        !this.checked_coupon.id ||
        this.message == ""
      ) {
        this.$toast("请完整填写活动表单！");
        return false;
      }
      if (new Date(this.startTime1) >= new Date(this.endTime1)) {
        this.$toast("活动开始时间应小于活动开始时间");
        return false;
      }
      if (this.maxNumber > this.totalLimit) {
        this.$toast("单日最大发放数量应不大于总发放数量");
        return false;
      }
      let params = {
        activityInfo: {
          id: 0,
          activityName: this.title,
          activityType: "coupon",
          startTime: this.startTime1,
          endTime: this.endTime1,
          backImage: this.bg_imgs[0] ? this.bg_imgs[0].url : "",
          logo: this.logo_imgs[0] ? this.logo_imgs[0].url : "",
          // 单日最大发放数量
          joinLimit: Number(this.maxNumber),
          // 总发放数量
          totalLimit: Number(this.totalLimit),
          coupon: JSON.stringify(this.checked_coupon),
          couponId: this.checked_coupon.id,

          des: this.message,
          image: JSON.stringify(this.fileList)
        }
      };
      console.log("params", params);
      API_Active.createActive(params).then(res => {
        if (res.result === "fail") {
          this.$toast(res.errorMsg);
          return;
        }
        this.$toast.success("创建成功");
        setTimeout(() => {
          this.$router.push({
            name: "createSuccess",
            params: {
              id: 0,
              activityId: res.data.activityInfo.id,
              activityType: "coupon",
              logo: this.logo_imgs[0].url,
              des: this.message
            }
          });
        }, 200);
      });
    },
    timeFormat(time) {
      let year = 1900 + time.getYear();
      let month = "0" + (time.getMonth() + 1);
      let date = "0" + time.getDate();
      let hour = "0" + time.getHours();
      let minute = "0" + time.getMinutes();
      return (
        year +
        "-" +
        month.substring(month.length - 2, month.length) +
        "-" +
        date.substring(date.length - 2, date.length) +
        " " +
        hour.substring(hour.length - 2, hour.length) +
        ":" +
        minute.substring(minute.length - 2, minute.length) +
        ":00"
      );
    },
    startTimeChange(e) {
      let startTimeArr = e.getValues();
      this.startTime1 = `${startTimeArr[0]}-${startTimeArr[1]}-${startTimeArr[2]}`;
    },
    handleStartTime(value) {
      this.startTime1 = this.timeFormat(value);
      this.startShow = false;
    },
    handleEndTime(value) {
      this.endTime1 = this.timeFormat(value);
      this.endShow = false;
    },
    endTimeChange(e) {
      let endTimeArr = e.getValues();
      this.endTime1 = `${endTimeArr[0]}-${endTimeArr[1]}-${endTimeArr[2]}`;
    }
  },
  mounted() {
    if (this.$route.query.activityId) {
      console.log("有模板数据");
      let template_id = this.$route.query.templateId;
      this.getTemplateDate(template_id);
    }
    this.getCoupons();
  }
};
</script>
<style></style>

<style scoped>
.condition {
  display: flex;
  justify-content: flex-end;
  align-items: center;
}
.phone {
  margin-right: 10px;
}
.all >>> input {
  text-align: right;
}
.noborder >>> .van-cell:not(:last-child)::after {
  display: none !important;
}
.npbr .van-cell:not(:last-child)::after {
  display: none !important;
}
.creat {
  margin-top: 80px;
  width: 96%;
  height: 40px;
  background: rgba(117, 178, 253, 1);
  border-radius: 10px;
  text-align: center;
  line-height: 40px;
  font-size: 16px;
  font-weight: bold;
  color: #fff;
  margin-left: 2%;
  margin-bottom: 16px;
}
.container {
  height: auto;
  display: flex;
  flex-direction: column;
  background: rgba(248, 248, 248, 1);
  min-height: 100%;
}
.area >>> .van-field__control {
  background: #f8f8f8;
  padding: 12px;
}
.des {
  padding: 5px 18px 0px;
  font-size: 14px;
  color: #2d476a;
}

.title {
  background-color: #f8f8f8;
  height: 36px;
  line-height: 36px;
  font-size: 12px;
  padding-left: 16px;
  color: #2d476a;
}
[data-v-08d4afe1] .van-cell {
  height: 100%;
  font-size: 14px;
}
.right {
  padding: 0;
}
.van-cell__title {
  color: #2d476a !important;
}
</style>
