Browse Source

[edit] style

wenliming 2 years ago
parent
commit
76d9f0e14e

+ 4 - 2
src/types/global.js

@@ -34,6 +34,7 @@ export const TaskType = {
   joinDiscord: 7,
   repostToFacebook: 8,
   twitterCommentAndTag: 9,
+  twitterMakePost: 10
 };
 
 /**
@@ -42,6 +43,7 @@ export const TaskType = {
 
 export const PostType = {
   giveaway: 1,
-  nftGroup: 2,
-  postEditor: 3
+  lottery: 2,
+  postEditor: 3,
+  treasure: 4
 }

+ 6 - 0
src/view/iframe/publish/components/follow-input.vue

@@ -4,11 +4,13 @@
         <div class="at-user-item" v-for="(item, index) in pageAtUserList" :key="index">
             <img :src="require('@/assets/svg/icon-del-follows-user.svg')" 
                 class="icon-del"
+                v-if="!isRequire || isRequire && index > 0"
                 @click="delUser(item, index)">
             <pre :id='"pre" + index' class="at-user-input-placeholder">{{item.name}}</pre>
             @<input class="at-user-input" 
                     :id='"input" + index' 
                     v-model="item.name" 
+                    :readonly="index == 0 && isRequire"
                     @change="onIptChange(item, index)"
                     @input="onInput(item, index)"
                     @keydown="onKeydown(item, index)"
@@ -72,6 +74,10 @@ const props = defineProps({
     isAddSelf: {
         type: Boolean,
         default: true
+    },
+    isRequire: {
+        type: Boolean,
+        default: false
     }
 })
 

+ 102 - 141
src/view/iframe/publish/give-dialog.vue

@@ -79,8 +79,7 @@
 
                     <div class="right"  
                         :class="{'fill-right': showComType == 'preview' || toolBoxPageData.activePage == 'PREVIEW'}">
-                        <!-- <global-tip :type="'2'"></global-tip> -->
-
+                        <global-tip :type="'2'"></global-tip>
                         
                         <template v-if="publishType == 'TOOL_BOX'">
                             <tool-box 
@@ -125,8 +124,7 @@
                                                         <img class="arrow"
                                                             :src="currentArrowCpd"/>
                                                     </div>
-                                                    <form-input 
-                                                        class="margin-left-10"
+                                                    <form-input class="margin-left-10"
                                                         :suffix="baseFormData.rewardType === RewardType.custom || currentCurrencyInfo.currencyCode ? currentPrizeCpd : ''">
                                                         <template v-slot:content>
                                                             <input style="width: 100px"
@@ -189,7 +187,26 @@
 
                                             <!-- 新粉单价 -->
                                             <div class="form-cell" v-if="selectModeInfo.type == PlayType.treasure">
-
+                                                <div class="cell-title">
+                                                    <img class="title-icon" :src="require('@/assets/svg/icon-form-cost.svg')" />
+                                                    Cost Per New Follower
+                                                </div>
+                                                <div class="cell-content flex">
+                                                    <form-input :suffix="baseFormData.rewardType === RewardType.custom || currentCurrencyInfo.currencyCode ? currentPrizeCpd : ''">
+                                                        <template v-slot:content>
+                                                            <input style="width: 120px"
+                                                                placeholder="0"/>
+                                                        </template>
+                                                    </form-input>
+                                                    <form-input class="margin-left-10" 
+                                                        prefix="=$"
+                                                        suffix="USD">
+                                                        <template v-slot:content>
+                                                            <input style="width: 80px"
+                                                                placeholder="0"/>
+                                                        </template>
+                                                    </form-input>
+                                                </div>
                                             </div>
                                             
                                             <!-- 开奖时间 -->
@@ -209,41 +226,78 @@
                                                     </form-input>
                                                 </div>
                                             </div>
-                                        </div>
-                                        <!-- <div class="giveaway-poster" @click="customCoverImg">
-                                            <div class="show-img">
-                                                <div
-                                                    :style="{
-                                                        'zoom': 55 / 500,
-                                                        'position': 'absolute',
-                                                        'width': '345px',
-                                                    }">
-                                                    <custom-card-cover
-                                                        :data="{
-                                                            totalCount: baseFormData.totalCount,
-                                                            amountValue: baseFormData.amountValue,
-                                                            tokenSymbol: currentCurrencyInfo.tokenSymbol,
-                                                            currencyIconUrl: currentCurrencyInfo.iconPath,
-                                                            type: baseFormData.type,
-                                                            validityDuration: baseFormData.validityDuration,
-                                                            customPosterUrl: customPosterData && customPosterData.after && customPosterData.after.imagePath || '',
-                                                            rewardType: baseFormData.rewardType,
-                                                            customizedReward: baseFormData.customizedReward
-                                                        }">
-                                                    </custom-card-cover>
+
+                                            <!-- 夺宝 follow -->
+                                            <div class="form-cell" v-if="selectModeInfo.type == PlayType.treasure">
+                                                <div class="cell-title">
+                                                    <img class="title-icon" :src="require('@/assets/svg/icon-form-follow.svg')" />
+                                                    Follow
+                                                </div>
+                                                <div class="cell-content">
+                                                    <follow-input style="padding: 0" :isAddSelf="!isBack"
+                                                        :atUserList="atUserList"
+                                                        :isRequire = 'true'
+                                                        @addUser="addFollowUser"
+                                                        @setUser="setFollowUser"
+                                                        @delUser="delFollowUser"></follow-input>
                                                 </div>
                                             </div>
-                                            <div class="show-font">
-                                                <span>Giveaway Poster</span>
-                                                <img class="new" v-if="customShowNewImage" :src=" require('@/assets/svg/img-new.svg') " />
-                                            </div>
-                                            <div class="show-placeholder">Replace</div>
-                                            <div class="arrow">
-                                                <img :src=" require('@/assets/svg/icon-cell-arrow-right.svg') " />
+
+                                            <!-- 任务 -->
+                                            <div class="form-cell"  v-if="selectModeInfo.type != PlayType.treasure">
+                                                <div class="cell-title">
+                                                    <img class="title-icon" :src="require('@/assets/svg/icon-form-task.svg')"/>
+                                                    Tasks
+                                                </div>
+                                                <div class="form-cell-content form-require">
+                                                    <!-- 转推、like、关注 -->
+                                                    <div v-for="(item, index) in formList"
+                                                        :key="index">
+                                                        <div v-if="item.show"  class="form-item"    
+                                                            :class="{ 'border-hide': formList.length - 1 == index }">
+                                                            <div class="item-left">
+                                                                <div class="label">
+                                                                    <img class="icon" :src="item.icon"/>
+                                                                    {{ item.label }}
+                                                                </div>
+                                                                <div class="control"
+                                                                    v-if="item.nodeType == 'textarea'">
+                                                                    <follow-input
+                                                                        :isAddSelf="!isBack"
+                                                                        :atUserList="atUserList"
+                                                                        @addUser="addFollowUser"
+                                                                        @setUser="setFollowUser"
+                                                                        @delUser="delFollowUser"></follow-input>
+                                                                </div>
+                                                                <div class="control"
+                                                                    v-if="item.nodeType == 'input'">
+                                                                    <div v-if="showDiscordInvitePop" 
+                                                                        class="discord-invite-info"
+                                                                        @click="showDiscordInvitePop = false">
+                                                                        <img class="icon" :src="discordInviteInfo.icon || require('@/assets/svg/icon-discord-mini.svg')" />
+                                                                        <span class="name">{{discordInviteInfo.name}}</span>
+                                                                    </div>
+                                                                    <input v-model="item.text" 
+                                                                        placeholder="Enter discord invite link"
+                                                                        class="discord-address" 
+                                                                        @input="onIptDiscordAddress($event, index)"
+                                                                        @blur="onBlurDiscordAddress($event, index)" />
+                                                                </div>
+                                                            </div>
+                                                            
+                                                            <div>
+                                                                <a-switch
+                                                                    v-if="item.type > 3"
+                                                                    v-model:checked="item.checked"
+                                                                    @change="formSwitchChange($event, item, index)"/>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </div>
                                             </div>
-                                        </div> -->
+                                        </div>
                                         <!--  提示 -->
-                                        <ul class="tips-wrapper">
+                                        <ul class="tips-wrapper" v-if="selectModeInfo.type != PlayType.treasure">
                                             <li class="row" style="white-space:nowrap;">
                                                 Rewards can only be claimed after the target user completes all tasks you set. 
                                             </li>
@@ -256,61 +310,10 @@
                                         </ul>
                                     </div> 
                                 </div>
-
-                                <div class="form-cell-item task-wrapper">
-                                    <div class="title">
-                                        <img class="icon" :src="require('@/assets/svg/icon-tasks-v2.svg')"/>
-                                        Tasks
-                                    </div>
-                                    <div class="form-cell-content form-require">
-                                        <!-- 转推、like、关注 -->
-                                        <div v-for="(item, index) in formList"
-                                            :key="index">
-                                            <div v-if="item.show"  class="form-item"    
-                                                :class="{ 'border-hide': formList.length - 1 == index }">
-                                                <div class="item-left">
-                                                    <div class="label">
-                                                        <img class="icon" :src="item.icon"/>
-                                                        {{ item.label }}
-                                                    </div>
-                                                    <div class="control"
-                                                        v-if="item.nodeType == 'textarea'">
-                                                        <follow-input
-                                                            :isAddSelf="!isBack"
-                                                            :atUserList="atUserList"
-                                                            @addUser="addFollowUser"
-                                                            @setUser="setFollowUser"
-                                                            @delUser="delFollowUser"></follow-input>
-                                                    </div>
-                                                    <div class="control"
-                                                        v-if="item.nodeType == 'input'">
-                                                        <div v-if="showDiscordInvitePop" 
-                                                            class="discord-invite-info"
-                                                            @click="showDiscordInvitePop = false">
-                                                            <img class="icon" :src="discordInviteInfo.icon || require('@/assets/svg/icon-discord-mini.svg')" />
-                                                            <span class="name">{{discordInviteInfo.name}}</span>
-                                                        </div>
-                                                        <input v-model="item.text" 
-                                                            placeholder="Enter discord invite link"
-                                                            class="discord-address" 
-                                                            @input="onIptDiscordAddress($event, index)"
-                                                            @blur="onBlurDiscordAddress($event, index)" />
-                                                    </div>
-                                                </div>
-                                                
-                                                <div>
-                                                    <a-switch
-                                                        v-if="item.type > 3"
-                                                        v-model:checked="item.checked"
-                                                        @change="formSwitchChange($event, item, index)"/>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </div>
                             </div> 
                             <div class="form-right-sheet">
-                                
+                                <!-- 自定义封面事件 -->
+                                <!-- @click="customCoverImg" -->
                             </div>
                             <div class="submit-btn-wrapper">
                                 <div class="submit-btn"
@@ -1472,12 +1475,12 @@ const onIptSetErrorTxt = (params = {}) => {
         iptErrMsgTxt.value = "Select a reward"
     } else if (!baseFormData.amountValue || baseFormData.amountValue == '0') {
         iptErrMsgTxt.value = "Enter an amount";
-    } else if (!baseFormData.totalCount || baseFormData.totalCount == '0') {
-            iptErrMsgTxt.value = "Enter the number of winners";
+    } else if (baseFormData.rewardType != PlayType.treasure && (!baseFormData.totalCount || baseFormData.totalCount == '0')) {
+        iptErrMsgTxt.value = "Enter the number of winners";
     } else if (iptErrMsgTxt.value = checkUsdMinNumber()) {
         // 最小法币金额限制
         return isShowUsdMinMessage.value = true;
-    } else if(baseFormData.rewardType === RewardType.money && +baseFormData.amountValue <= +currentCurrencyInfo.value.balance) {
+    } else if(baseFormData.rewardType === RewardType.money && baseFormData.rewardType != PlayType.treasure && +baseFormData.amountValue <= +currentCurrencyInfo.value.balance) {
         // 输入金额 小于 余额
         let res = calcIptValue();
         if (!res.flag) {
@@ -1497,9 +1500,11 @@ const onIptSetErrorTxt = (params = {}) => {
         // 抽奖模式 没有输入时长
         iptErrMsgTxt.value = "Enter Automatically Draw";
     } else {
-        setDiscordErrTxt({getDuildId: true}, () => {
-            iptErrMsgTxt.value = '';
-        });
+        if(baseFormData.rewardType != PlayType.treasure) {
+            setDiscordErrTxt({getDuildId: true}, () => {
+                iptErrMsgTxt.value = '';
+            });
+        }
     } 
 }
 
@@ -2174,11 +2179,10 @@ onMounted(() => {
                     height: calc(100% - 80px);
                     overflow: auto;
                     box-sizing: border-box;
-
                     display: flex;
 
-                    .task-wrapper {
-                        width: 480px;
+                    .form-left-sheet {
+                        width: 500px;
                     }
 
                     .base-form-wrapper {
@@ -2471,49 +2475,6 @@ onMounted(() => {
                     margin-top: 8px;
                 }
 
-                .giveaway-poster {
-                    display: flex;
-                    align-items: center;
-                    flex-direction: row;
-                    cursor: pointer;
-                    height: 84px;
-                    margin-top: 20px;
-                    border-radius: 14px;
-                    border: 1px solid #D1D9DD;
-                    .show-img {
-                        display: flex;
-                        align-items: center;
-                        justify-content: center;
-                        width: 45px;
-                        height: 60px;
-                        margin-left: 14px;
-                        margin-right: 14px;
-                        position: relative;
-                    }
-                    .show-font {
-                        position: relative;
-                        font-size: 15px;
-                        font-weight: 500;
-                        .new {
-                            width: 40px;
-                            height: 18px;
-                            margin-left: 10px;
-                        }
-                    }
-                    .show-placeholder {
-                        flex: 1;
-                        color: #1D9BF0;
-                        font-size: 15px;
-                        font-weight: 500;
-                        text-align: right;
-                    }
-                    .arrow {
-                        width: 18px;
-                        height: 24px;
-                        margin-left: 2px;
-                        margin-right: 12px;
-                    }
-                }
                 .tips-wrapper {
                     margin: 16px 0 0 12px !important;
                     padding: 0px !important;