|  | @@ -93,7 +93,7 @@
 | 
	
		
			
				|  |  |                          <template v-else>
 | 
	
		
			
				|  |  |                          <div class="form-wrapper"  v-if="showComType == 'default'">
 | 
	
		
			
				|  |  |                              <div class="form-left-sheet">
 | 
	
		
			
				|  |  | -                                <div class="form-cell-item base-form-wrapper">
 | 
	
		
			
				|  |  | +                                <div class="base-form-wrapper">
 | 
	
		
			
				|  |  |                                      <div class="form-cell-content">
 | 
	
		
			
				|  |  |                                          <div class="select-mode-ele">
 | 
	
		
			
				|  |  |                                              <template v-for="(item, index) in publishModeList" :key="index">
 | 
	
	
		
			
				|  | @@ -165,7 +165,7 @@
 | 
	
		
			
				|  |  |                                                          class="top-up" 
 | 
	
		
			
				|  |  |                                                          @click="goTopUp">Deposit</div>
 | 
	
		
			
				|  |  |                                                  </div>
 | 
	
		
			
				|  |  | -                                                <div class="usd-min-message" v-show="isShowUsdMinMessage" v-html="checkUsdMinNumber('inTemplate')"></div>
 | 
	
		
			
				|  |  | +                                                <div class="usd-min-message" v-show="isShowUsdMinMessage" v-html="selectModeInfo.type != PlayType.treasure ? checkUsdMinNumber('inTemplate') : checkTreasureAmountRange('inTemplate')"></div>
 | 
	
		
			
				|  |  |                                              </div>
 | 
	
		
			
				|  |  |                                              
 | 
	
		
			
				|  |  |                                              <!-- 人数 -->
 | 
	
	
		
			
				|  | @@ -216,8 +216,7 @@
 | 
	
		
			
				|  |  |                                                                  @blur="onUsdEstimateFansUnitAmountInput"/>
 | 
	
		
			
				|  |  |                                                          </template>
 | 
	
		
			
				|  |  |                                                      </form-input>
 | 
	
		
			
				|  |  | -                                                    <div style="color: #7E7E7E;font-weight: 400;
 | 
	
		
			
				|  |  | -font-size: 12px;margin-left: 10px;" v-if="treasureFormData.addFans">
 | 
	
		
			
				|  |  | +                                                    <div class="cost-txt" v-if="treasureFormData.addFans">
 | 
	
		
			
				|  |  |                                                          <div>Approximately</div>
 | 
	
		
			
				|  |  |                                                          {{treasureFormData.addFans}} New Follower
 | 
	
		
			
				|  |  |                                                      </div>
 | 
	
	
		
			
				|  | @@ -249,9 +248,9 @@ font-size: 12px;margin-left: 10px;" v-if="treasureFormData.addFans">
 | 
	
		
			
				|  |  |                                                      Follow
 | 
	
		
			
				|  |  |                                                  </div>
 | 
	
		
			
				|  |  |                                                  <div class="cell-content">
 | 
	
		
			
				|  |  | -                                                    <follow-input style="padding: 0" :isAddSelf="!isBack"
 | 
	
		
			
				|  |  | +                                                    <follow-input style="padding: 0"    
 | 
	
		
			
				|  |  | +                                                        :isAddSelf="!isBack"
 | 
	
		
			
				|  |  |                                                          :atUserList="atUserList"
 | 
	
		
			
				|  |  | -                                                        :isRequire = 'true'
 | 
	
		
			
				|  |  |                                                          @addUser="addFollowUser"
 | 
	
		
			
				|  |  |                                                          @setUser="setFollowUser"
 | 
	
		
			
				|  |  |                                                          @delUser="delFollowUser"></follow-input>
 | 
	
	
		
			
				|  | @@ -516,7 +515,7 @@ let timer = ref(null);
 | 
	
		
			
				|  |  |  let publishRes = reactive({});
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //弹窗是否展示
 | 
	
		
			
				|  |  | -let visible = ref(true);
 | 
	
		
			
				|  |  | +let visible = ref(false);
 | 
	
		
			
				|  |  |  let publishType = ref('REDPACKET');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  let userInfo = ref({})
 | 
	
	
		
			
				|  | @@ -660,6 +659,7 @@ let currentCurrencyInfo = ref(defaultCurrentCurrencyInfo);
 | 
	
		
			
				|  |  |  const discordIptErrTxt = 'Discord invite link is wrong';
 | 
	
		
			
				|  |  |  const discordIptEmptyErrTxt = 'Enter discord invite link';
 | 
	
		
			
				|  |  |  const discordIptNerverExpiresErrTxt = 'Make sure the Discord link never expires'
 | 
	
		
			
				|  |  | +const requireFollowTxt = '添加 follow 任务'
 | 
	
		
			
				|  |  |  let iptErrType = ''; //discord
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  let formList = reactive([
 | 
	
	
		
			
				|  | @@ -944,10 +944,13 @@ const confirm = () => {
 | 
	
		
			
				|  |  |          return;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      let { totalCount = 0 } = baseFormData;
 | 
	
		
			
				|  |  | -    if (!totalCount) {
 | 
	
		
			
				|  |  | -        return;
 | 
	
		
			
				|  |  | +    if(selectModeInfo.type != PlayType.treasure) {
 | 
	
		
			
				|  |  | +        if (!totalCount) {
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        saveDiscordGuildInfo();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    saveDiscordGuildInfo();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      submitRequest();
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -996,6 +999,10 @@ const resetFormIpt = (clearMode = true) => {
 | 
	
		
			
				|  |  |      baseFormData.validityDuration = "";
 | 
	
		
			
				|  |  |      baseFormData.rewardType = RewardType.money;
 | 
	
		
			
				|  |  |      baseFormData.customizedReward = "";
 | 
	
		
			
				|  |  | +    baseFormData.fansUnitAmountValue = "";
 | 
	
		
			
				|  |  | +    treasureFormData.addFans = "";
 | 
	
		
			
				|  |  | +    treasureFormData.usdEstimateOrderAmount = "";
 | 
	
		
			
				|  |  | +    treasureFormData.usdEstimateFansUnitAmount = "";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if(clearMode) {
 | 
	
		
			
				|  |  |          selectModeInfo.index = 0;
 | 
	
	
		
			
				|  | @@ -1158,33 +1165,14 @@ const submitRequest = async () => {
 | 
	
		
			
				|  |  |      baseFormData.amountCurrencyCode = currentCurrencyInfo.value.currencyCode;
 | 
	
		
			
				|  |  |      // 组装提交参数
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    let finishConditions = [];
 | 
	
		
			
				|  |  | -    for (let i = 0; i < formList.length; i++) {
 | 
	
		
			
				|  |  | -        let item = {};
 | 
	
		
			
				|  |  | -        item.type = formList[i]["type"];
 | 
	
		
			
				|  |  | -        if (item.type == TaskType.twitterFollow && atUserList.value.length) {
 | 
	
		
			
				|  |  | -            // follow 参数
 | 
	
		
			
				|  |  | -            let relatedUsers = atUserList.value.filter(item => item.name);
 | 
	
		
			
				|  |  | -            item.relatedUsers = relatedUsers;
 | 
	
		
			
				|  |  | -            finishConditions.push(item);
 | 
	
		
			
				|  |  | -        } else  if (formList[i]["type"] == TaskType.joinDiscord) {
 | 
	
		
			
				|  |  | -            // join discord
 | 
	
		
			
				|  |  | -            if(formList[i]["checked"] && formList[i]["text"]) {
 | 
	
		
			
				|  |  | -                item.bizData = JSON.stringify({inviteUrl: formList[i]["text"]});
 | 
	
		
			
				|  |  | -                finishConditions.push(item);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        } else  if (formList[i]["checked"]) {
 | 
	
		
			
				|  |  | -            // 其余任务
 | 
	
		
			
				|  |  | -            finishConditions.push(item);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    let finishConditions = selectModeInfo.type != PlayType.treasure ? getFinishCondition() : getTreasureFinishCondition();
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  |      let receiveConditions = openAntiBot.value ? "" : [];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      let validityDuration = '';
 | 
	
		
			
				|  |  |      if(baseFormData.type == PlayType.lottery) {
 | 
	
		
			
				|  |  |          //小时转毫秒
 | 
	
		
			
				|  |  |          let unit = process.env.NODE_ENV != 'production' ? 60 * 1000 : 60 * 60 * 1000;
 | 
	
		
			
				|  |  | -        // let unit = 60 * 60 * 1000
 | 
	
		
			
				|  |  |          validityDuration = baseFormData.validityDuration * unit;
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  |          validityDuration = '';
 | 
	
	
		
			
				|  | @@ -1193,13 +1181,14 @@ const submitRequest = async () => {
 | 
	
		
			
				|  |  |      // 提交参数
 | 
	
		
			
				|  |  |      let formData = {
 | 
	
		
			
				|  |  |          amountValue,
 | 
	
		
			
				|  |  | -        totalCount,
 | 
	
		
			
				|  |  | +        totalCount: selectModeInfo.type != PlayType.treasure ? totalCount : treasureFormData.addFans,
 | 
	
		
			
				|  |  |          finishConditions,
 | 
	
		
			
				|  |  |          receiveConditions,
 | 
	
		
			
				|  |  |          type: baseFormData.type,
 | 
	
		
			
				|  |  |          posterType: 1,
 | 
	
		
			
				|  |  |          validityDuration,
 | 
	
		
			
				|  |  | -        rewardType
 | 
	
		
			
				|  |  | +        rewardType,
 | 
	
		
			
				|  |  | +        fansUnitAmountValue: selectModeInfo.type == PlayType.treasure ? baseFormData.fansUnitAmountValue : ''
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |      if(rewardType === RewardType.custom) {
 | 
	
		
			
				|  |  |          // 通用奖品 类型的活动,添加奖品名称
 | 
	
	
		
			
				|  | @@ -1260,6 +1249,49 @@ const submitRequest = async () => {
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +const getFinishCondition = () => {
 | 
	
		
			
				|  |  | +    let finishConditions = [];
 | 
	
		
			
				|  |  | +    for (let i = 0; i < formList.length; i++) {
 | 
	
		
			
				|  |  | +        let item = {};
 | 
	
		
			
				|  |  | +        item.type = formList[i]["type"];
 | 
	
		
			
				|  |  | +        if (item.type == TaskType.twitterFollow && atUserList.value.length) {
 | 
	
		
			
				|  |  | +            // follow 参数
 | 
	
		
			
				|  |  | +            let relatedUsers = atUserList.value.filter(item => item.name);
 | 
	
		
			
				|  |  | +            item.relatedUsers = relatedUsers;
 | 
	
		
			
				|  |  | +            finishConditions.push(item);
 | 
	
		
			
				|  |  | +        } else  if (formList[i]["type"] == TaskType.joinDiscord) {
 | 
	
		
			
				|  |  | +            // join discord
 | 
	
		
			
				|  |  | +            if(formList[i]["checked"] && formList[i]["text"]) {
 | 
	
		
			
				|  |  | +                item.bizData = JSON.stringify({inviteUrl: formList[i]["text"]});
 | 
	
		
			
				|  |  | +                finishConditions.push(item);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        } else  if (formList[i]["checked"]) {
 | 
	
		
			
				|  |  | +            // 其余任务
 | 
	
		
			
				|  |  | +            finishConditions.push(item);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    return finishConditions;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const getTreasureFinishCondition = () => {
 | 
	
		
			
				|  |  | +    let finishConditions = [
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            type: TaskType.twitterLikeTweet
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            type: TaskType.twitterRePost
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    ];
 | 
	
		
			
				|  |  | +    if(atUserList.value.length) {
 | 
	
		
			
				|  |  | +        let relatedUsers = atUserList.value.filter(item => item.name);
 | 
	
		
			
				|  |  | +        finishConditions.push({
 | 
	
		
			
				|  |  | +            relatedUsers,
 | 
	
		
			
				|  |  | +            type: TaskType.twitterFollow
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    } 
 | 
	
		
			
				|  |  | +    return finishConditions;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  const calcFontSize = (str, domWidth, maxSize) => {
 | 
	
		
			
				|  |  |      let lenstr = str.length;
 | 
	
		
			
				|  |  |      let num = parseInt(domWidth / lenstr);
 | 
	
	
		
			
				|  | @@ -1348,10 +1380,34 @@ const addFollowUser = (params) => {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const setFollowUser = (params) => {
 | 
	
		
			
				|  |  |      atUserList.value[params.index]["name"] = params.name;
 | 
	
		
			
				|  |  | +    let userList = atUserList.value.filter(item => item.name);
 | 
	
		
			
				|  |  | +    if(selectModeInfo.type == PlayType.treasure) {
 | 
	
		
			
				|  |  | +        if(!userList.length) {
 | 
	
		
			
				|  |  | +            if(!iptErrMsgTxt.value) {
 | 
	
		
			
				|  |  | +                iptErrMsgTxt.value = requireFollowTxt;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            if (iptErrMsgTxt.value == requireFollowTxt) {
 | 
	
		
			
				|  |  | +                iptErrMsgTxt.value = ""
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const delFollowUser = (params) => {
 | 
	
		
			
				|  |  |      atUserList.value.splice(params.index, 1);
 | 
	
		
			
				|  |  | +    let userList = atUserList.value.filter(item => item.name);
 | 
	
		
			
				|  |  | +    if(selectModeInfo.type == PlayType.treasure) {
 | 
	
		
			
				|  |  | +        if(!userList.length) {
 | 
	
		
			
				|  |  | +            if(!iptErrMsgTxt.value) {
 | 
	
		
			
				|  |  | +                iptErrMsgTxt.value = requireFollowTxt;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            if (iptErrMsgTxt.value == requireFollowTxt) {
 | 
	
		
			
				|  |  | +                iptErrMsgTxt.value = ""
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const calcUsdEstimate = (params) => {
 | 
	
	
		
			
				|  | @@ -1394,14 +1450,20 @@ const calcTokenEstimate = (params) => {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * token 转 USD 估值
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  |  const calcToken2UsdEstimate = (params) => {
 | 
	
		
			
				|  |  |      if(!params.amount) {
 | 
	
		
			
				|  |  |          return '';
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      let val = +math.format(math.evaluate(`${params.amount} * ${params.usdPrice}`));
 | 
	
		
			
				|  |  | -    return val.toFixed(2);
 | 
	
		
			
				|  |  | +    return Math.floor(val * 100) / 100;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * USD 转 token 估值
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  |  const calcUsd2TokenEstimate = (params) => {
 | 
	
		
			
				|  |  |      if(!params.amount) {
 | 
	
		
			
				|  |  |          return '';
 | 
	
	
		
			
				|  | @@ -1410,6 +1472,9 @@ const calcUsd2TokenEstimate = (params) => {
 | 
	
		
			
				|  |  |      return val;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 预计新增粉丝数
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  |  const calcAddFans = (params = {}) => {
 | 
	
		
			
				|  |  |      let {totalAmount, unitPrice} = params;
 | 
	
		
			
				|  |  |      if (totalAmount > 0 && unitPrice > 0) {
 | 
	
	
		
			
				|  | @@ -1418,9 +1483,12 @@ const calcAddFans = (params = {}) => {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 奖励总金额 美元估值
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  |  const onUsdEstimateOrderAmountInput = () => {
 | 
	
		
			
				|  |  |      let val = treasureFormData.usdEstimateOrderAmount;
 | 
	
		
			
				|  |  | -    val = val.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1');
 | 
	
		
			
				|  |  | +    val = String(val).replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1');
 | 
	
		
			
				|  |  |      if(val == '00') {
 | 
	
		
			
				|  |  |          val = '0'
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -1430,9 +1498,12 @@ const onUsdEstimateOrderAmountInput = () => {
 | 
	
		
			
				|  |  |      return val;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 粉丝单价 USD 输入
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  |  const onUsdEstimateFansUnitAmountInput = () => {
 | 
	
		
			
				|  |  |      let val = treasureFormData.usdEstimateFansUnitAmount;
 | 
	
		
			
				|  |  | -    val = val.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1');
 | 
	
		
			
				|  |  | +    val = String(val).replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1');
 | 
	
		
			
				|  |  |      if(val == '00') {
 | 
	
		
			
				|  |  |          val = '0'
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -1450,9 +1521,12 @@ const onUsdEstimateFansUnitAmountInput = () => {
 | 
	
		
			
				|  |  |      return val;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 粉丝单价输入
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  |  const onFansUnitAmountInput = () => {
 | 
	
		
			
				|  |  |      let val = baseFormData.fansUnitAmountValue;
 | 
	
		
			
				|  |  | -    val = val.replace(/^\D*(\d*(?:\.\d{0,18})?).*$/g, '$1');
 | 
	
		
			
				|  |  | +    val = String(val).replace(/^\D*(\d*(?:\.\d{0,18})?).*$/g, '$1');
 | 
	
		
			
				|  |  |      if(val == '00') {
 | 
	
		
			
				|  |  |          val = '0'
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -1473,7 +1547,7 @@ const onFansUnitAmountInput = () => {
 | 
	
		
			
				|  |  |  const onAmountInput = () => {
 | 
	
		
			
				|  |  |      let val = baseFormData.amountValue;
 | 
	
		
			
				|  |  |      // val = val.replace(/[^\d^\.]+/g, "");
 | 
	
		
			
				|  |  | -    val = val.replace(/^\D*(\d*(?:\.\d{0,18})?).*$/g, '$1');
 | 
	
		
			
				|  |  | +    val = String(val).replace(/^\D*(\d*(?:\.\d{0,18})?).*$/g, '$1');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const maxCount = baseFormData.rewardType === RewardType.money ? Number.MAX_SAFE_INTEGER : 100000000;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1612,8 +1686,7 @@ const checkUsdMinNumber = (isInTemplate) => {
 | 
	
		
			
				|  |  |      return forbiddenText;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -const checkTreasureAmountRange = (params = {}) => {
 | 
	
		
			
				|  |  | -    let {type, amount, maxAmount} = params;
 | 
	
		
			
				|  |  | +const checkTreasureAmountRange = (isInTemplate) => {
 | 
	
		
			
				|  |  |      let forbiddenText = '';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const { usdPrice, minAmount, luckdropPostConfig = [] } = currentCurrencyInfo.value;
 | 
	
	
		
			
				|  | @@ -1624,34 +1697,41 @@ const checkTreasureAmountRange = (params = {}) => {
 | 
	
		
			
				|  |  |              // 当前token允许的usd最小金额为0 或单个红包最小金额为0,则无限制
 | 
	
		
			
				|  |  |              return forbiddenText;
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  | -            let amount2Usd = +math.format(math.evaluate(amount * usdPrice));
 | 
	
		
			
				|  |  | -            switch (type) {
 | 
	
		
			
				|  |  | -                case 'TOTAL_AMOUNT':
 | 
	
		
			
				|  |  | -                    forbiddenText = amount2Usd > currentLuckDropConfig?.minTotalUsdAmount ? '' : `要大于${currentLuckDropConfig?.minTotalUsdAmount}最小总金额`;
 | 
	
		
			
				|  |  | -                    break;
 | 
	
		
			
				|  |  | -                case 'FANS_UNIT_AMOUNT':
 | 
	
		
			
				|  |  | -                    forbiddenText = amount > minAmount && amount2Usd > currentLuckDropConfig?.minAvgUsdAmount ?  '' : `要大于${currentLuckDropConfig?.minAvgUsdAmount}最小平均金额`;
 | 
	
		
			
				|  |  | -                    break;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            let txt =  `The prize pool must be above ${isInTemplate ? ('<span class="font-color-1D9BF0">$' + currentLuckDropConfig.minTotalUsdAmount + '</span>') : ('$' + currentLuckDropConfig.minTotalUsdAmount)} 
 | 
	
		
			
				|  |  | +                            or the average prize must be above
 | 
	
		
			
				|  |  | +                            ${isInTemplate ? ('<span class="font-color-1D9BF0">$' + currentLuckDropConfig.minAvgUsdAmount +' per person.</span>' ): ('$' + currentLuckDropConfig.minAvgUsdAmount + ' per person.') }`
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            const isAmountForbidden = currentLuckDropConfig?.minTotalUsdAmount ? +math.format(math.evaluate(baseFormData.amountValue * usdPrice)) < currentLuckDropConfig?.minTotalUsdAmount : false;
 | 
	
		
			
				|  |  | +            const isAvgForbidden = baseFormData.fansUnitAmountValue !== '' && currentLuckDropConfig?.minAvgUsdAmount ? baseFormData.fansUnitAmountValue < minAmount || +math.format(math.evaluate(baseFormData.fansUnitAmountValue * usdPrice)) < currentLuckDropConfig?.minAvgUsdAmount : false;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            forbiddenText = isAmountForbidden || isAvgForbidden ? txt : '';
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      return forbiddenText;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const treasureFormValidata = () => {
 | 
	
		
			
				|  |  | +    isShowUsdMinMessage.value = false;
 | 
	
		
			
				|  |  | +    let userList = atUserList.value.filter(item => item.name);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      if(!currentCurrencyInfo.value.currencyCode) {
 | 
	
		
			
				|  |  |          iptErrMsgTxt.value = "Select a reward"
 | 
	
		
			
				|  |  |      } else if (!baseFormData.amountValue || baseFormData.amountValue == '0') {
 | 
	
		
			
				|  |  |          iptErrMsgTxt.value = "Enter an amount";
 | 
	
		
			
				|  |  | -    } else if (iptErrMsgTxt.value = checkTreasureAmountRange({type: 'TOTAL_AMOUNT', amount: baseFormData.amountValue})) {
 | 
	
		
			
				|  |  | +    } else if (iptErrMsgTxt.value = checkTreasureAmountRange()) {
 | 
	
		
			
				|  |  |          //amount 是否大于 最小总金额
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        isShowUsdMinMessage.value = true;
 | 
	
		
			
				|  |  |      } else if (!baseFormData.fansUnitAmountValue) {
 | 
	
		
			
				|  |  |          // 输入粉丝单价
 | 
	
		
			
				|  |  |          iptErrMsgTxt.value = '请输入粉丝单价';
 | 
	
		
			
				|  |  | -    } else if(iptErrMsgTxt.value  = checkTreasureAmountRange({type: 'FANS_UNIT_AMOUNT', amount: baseFormData.fansUnitAmountValue, maxAmount: baseFormData.amountValue})) {
 | 
	
		
			
				|  |  | +    } else if(iptErrMsgTxt.value  = checkTreasureAmountRange()) {
 | 
	
		
			
				|  |  |          // 粉丝单价是否 小于总金额规则 大于最小粉丝单价 、大于币种最小精度
 | 
	
		
			
				|  |  | +        isShowUsdMinMessage.value = true;
 | 
	
		
			
				|  |  | +    } else if(!userList.length) {
 | 
	
		
			
				|  |  | +        iptErrMsgTxt.value = requireFollowTxt;
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  | +        isShowUsdMinMessage.value = false;
 | 
	
		
			
				|  |  |          iptErrMsgTxt.value = "";
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  };
 | 
	
	
		
			
				|  | @@ -2396,6 +2476,7 @@ onMounted(() => {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      .base-form-wrapper {
 | 
	
		
			
				|  |  |                          margin-right: 30px;
 | 
	
		
			
				|  |  | +                        width: 100%;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          .form-cell-content {
 | 
	
		
			
				|  |  |                              .select-mode-ele {
 | 
	
	
		
			
				|  | @@ -2415,6 +2496,7 @@ onMounted(() => {
 | 
	
		
			
				|  |  |                                  .img {
 | 
	
		
			
				|  |  |                                      width: 158px;
 | 
	
		
			
				|  |  |                                      height: 80px;
 | 
	
		
			
				|  |  | +                                    border-radius: 5px;
 | 
	
		
			
				|  |  |                                      margin-right: 13px;
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -2470,6 +2552,13 @@ onMounted(() => {
 | 
	
		
			
				|  |  |                                              color: #B3B3B3;
 | 
	
		
			
				|  |  |                                              margin-top: 12px;
 | 
	
		
			
				|  |  |                                          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                        .cost-txt {
 | 
	
		
			
				|  |  | +                                            color: #7E7E7E;
 | 
	
		
			
				|  |  | +                                            font-weight: 400;
 | 
	
		
			
				|  |  | +                                            font-size: 12px;
 | 
	
		
			
				|  |  | +                                            margin-left: 10px;
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  |                                      }
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |  
 |