<!-- 申请分销商  -->
<template>
  <s-layout title="申请分销商" class="apply-wrap" navbar="inner">
    <s-empty
      v-if="state.error === 1"
      paddingTop="0"
      icon="/static/comment-empty.png"
      text="未开启分销商申请"
    ></s-empty>

    <view v-if="state.error === 0" class="distribution-apply-wrap">
      <view class="apply-header">
        <view class="header-box ss-flex">
          <image
            class="bg-img"
            :src="sheep.$url.cdn(state.background)"
            mode="widthFix"
            @load="onImgLoad"
          ></image>
          <view class="heaer-title">申请分销商</view>
        </view>
      </view>
      <view class="apply-box bg-white" :style="{ marginTop: state.imgHeight + 'rpx' }">
        <uni-forms
          label-width="200"
          :model="state.model"
          :rules="state.rules"
          border
          class="form-box"
        >
          <view class="item-box">
            <uni-forms-item
              v-for="(item, index) in state.formList"
              :key="index"
              :label="item.name"
              :required="true"
              :label-position="item.type == 'image' ? 'top' : 'left'"
            >
              <uni-easyinput
                v-if="item.type !== 'image'"
                :inputBorder="false"
                :type="item.type"
                :styles="{ disableColor: '#fff' }"
                placeholderStyle="color:#BBBBBB;font-size:28rpx;line-height:normal"
                v-model="item.value"
                :placeholder="`请填写${item.name}`"
              />
              <s-uploader
                v-if="item.type === 'image'"
                v-model="item.aaa"
                v-model:url="item.value"
                fileMediatype="image"
                limit="1"
                mode="grid"
                :imageStyles="{ width: '168rpx', height: '168rpx' }"
                class="file-picker"
              />
            </uni-forms-item>
          </view>
        </uni-forms>
        <radio-group @change="onChange" v-if="state.protocol?.status == 1">
          <label class="ss-flex ss-m-t-20">
            <radio
              :checked="state.isAgree"
              color="var(--ui-BG-Main)"
              style="transform: scale(0.6)"
            />
            <view class="agreement-text ss-flex">
              <view class="ss-m-r-4">勾选代表同意</view>
              <view
                class="tcp-text"
                @tap.stop="
                  sheep.$router.go('/pages/public/richtext', {
                    id: state.protocol.id,
                    title: state.protocol.title,
                  })
                "
              >
                《{{ state.protocol.title }}》
              </view>
            </view>
          </label>
        </radio-group>
        <su-fixed bottom placeholder>
          <view class="submit-box ss-flex ss-row-center ss-p-30">
            <button class="submit-btn ss-reset-button ui-BG-Main ui-Shadow-Main" @tap="submit">
              {{ submitText }}
            </button>
          </view>
        </su-fixed>
      </view>
    </view>
  </s-layout>
</template>

<script setup>
  import sheep from '@/sheep';
  import { onLoad } from '@dcloudio/uni-app';
  import { computed, reactive } from 'vue';
  import { isEmpty } from 'lodash';

  const state = reactive({
    error: -1,
    status: '-',
    config: {},
    isAgree: false,
    formList: [],
    protocol: {},
    applyInfo: [],
    background: '',
    imgHeight: 400,
  });

  //勾选协议
  function onChange() {
    state.isAgree = !state.isAgree;
  }

  const submitText = computed(() => {
    if (state.status === 'normal') return '修改信息';
    if (state.status === 'needinfo') return '提交审核';
    if (state.status === 'reject') return '重新提交';
    return '';
  });

  async function getAgentForm() {
    const { error, data } = await sheep.$api.commission.form();
    state.error = error;
    if (error === 0) {
      state.status = data.status;
      state.background = data.background;
      state.formList = data.form;
      state.applyInfo = data.applyInfo;
      state.protocol = data.protocol;

      if (data.protocol.status != 1) {
        state.isAgree = true;
      }
      mergeFormList();
    }
  }
  function onImgLoad(e) {
    state.imgHeight = (e.detail.height / e.detail.width) * 750 - 88;
  }

  async function submit() {
    if (!state.isAgree) {
      sheep.$helper.toast('请同意申请协议');
      return;
    }

    const validate = state.formList.every((item) => {
      if (isEmpty(item.value)) {
        if (item.type !== 'image') {
          sheep.$helper.toast(`请填写${item.name}`);
        } else {
          sheep.$helper.toast(`请上传${item.name}`);
        }
        return false;
      }
      return true;
    });

    if (!validate) {
      return;
    }

    const { error } = await sheep.$api.commission.apply({
      data: state.formList,
    });
    if (error === 0) {
      sheep.$router.back();
    }
  }

  onLoad(() => {
    getAgentForm();
  });

  // 初始化formData
  function mergeFormList() {
    state.formList.forEach((form) => {
      const apply = state.applyInfo.find(
        (info) => info.type === form.type && info.name === form.name,
      );
      if (typeof apply !== 'undefined') form.value = apply.value;
    });
  }
</script>

<style lang="scss" scoped>
  :deep() {
    .uni-forms-item__label .label-text {
      font-size: 28rpx !important;
      color: #333333 !important;
      line-height: normal !important;
    }

    .file-picker__progress {
      height: 0 !important;
    }

    .uni-list-item__content-title {
      font-size: 28rpx !important;
      color: #333333 !important;
      line-height: normal !important;
    }

    .uni-icons {
      font-size: 40rpx !important;
    }

    .is-disabled {
      color: #333333;
    }
  }

  .distribution-apply-wrap {
    // height: 100vh;
    // width: 100vw;
    // position: absolute;
    // left: 0;
    // top: 0;
    // background-color: #fff;
    // overflow-y: auto;

    .submit-btn {
      width: 690px;
      height: 86rpx;
      border-radius: 43rpx;
    }
    .apply-header {
      position: absolute;
      left: 0;
      top: 0;
    }
    .header-box {
      width: 100%;
      position: relative;
      .bg-img {
        width: 750rpx;
      }

      .heaer-title {
        position: absolute;
        left: 30rpx;
        top: 50%;
        transform: translateY(-50%);
        font-size: 50rpx;
        font-weight: bold;
        color: #ffffff;
        z-index: 11;

        &::before {
          content: '';
          width: 51rpx;
          height: 8rpx;
          background: #ffffff;
          border-radius: 4rpx;
          position: absolute;
          z-index: 12;
          bottom: -20rpx;
        }
      }
    }

    .apply-box {
      padding: 0 40rpx;

      .item-box {
        border-bottom: 2rpx solid #eee;
      }
    }
  }

  .agreement-text {
    font-size: 24rpx;
    color: #c4c4c4;
    line-height: normal;

    .tcp-text {
      color: var(--ui-BG-Main);
    }
  }

  .card-image {
    width: 140rpx;
    height: 140rpx;
    border-radius: 50%;
  }
</style>
