浏览代码

[edit] style

A\An 2 年之前
父节点
当前提交
6a479c0217
共有 3 个文件被更改,包括 115 次插入50 次删除
  1. 5 0
      src/assets/svg/icon-add-task.svg
  2. 4 0
      src/assets/svg/icon-task-close.svg
  3. 106 50
      src/view/iframe/publish/give-dialog.vue

+ 5 - 0
src/assets/svg/icon-add-task.svg

@@ -0,0 +1,5 @@
+<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect width="22" height="22" rx="6" fill="#1D9BF0"/>
+<line x1="6" y1="10.75" x2="16" y2="10.75" stroke="white" stroke-width="1.5"/>
+<line x1="10.9492" y1="16" x2="10.9492" y2="6" stroke="white" stroke-width="1.5"/>
+</svg>

+ 4 - 0
src/assets/svg/icon-task-close.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<line y1="-0.75" x2="12.8917" y2="-0.75" transform="matrix(-0.698077 0.716023 -0.698077 -0.716023 16.4922 7)" stroke="#D9D9D9" stroke-width="1.5"/>
+<line y1="-0.75" x2="12.8917" y2="-0.75" transform="matrix(0.698074 0.716025 0.698074 -0.716025 8.49219 7)" stroke="#D9D9D9" stroke-width="1.5"/>
+</svg>

+ 106 - 50
src/view/iframe/publish/give-dialog.vue

@@ -162,64 +162,93 @@
                                     Recommend winners 100~10000
                                 </div>
                             </div>
-                            <div class="form-label">Tasks</div>
+                            <div class="form-label">
+                                <div>
+                                    Tasks
+                                </div>
+                                <div>
+                                    <el-dropdown trigger="click">
+                                        <img src="@/assets/svg/icon-add-task.svg" class="icon-add-task">
+                                        <template #dropdown v-if="formList.some(item => !item.show)">
+                                            <el-dropdown-menu>
+                                                <div  v-for="(item, key) in formList" :key="key"
+                                                     @click="clickDropdown(item, key)">
+                                                    <el-dropdown-item style="height: 50px;width: 240px" v-if="!item.show">
+                                                        <img :src="item.icon" style="width: 20px; height: 20px;margin-right: 12px" />
+                                                        {{item.label}}
+                                                    </el-dropdown-item>
+                                                </div>
+                                            </el-dropdown-menu>
+                                        </template>
+                                    </el-dropdown>
+                                </div>
+                            </div>
 
                             <!-- 转推、like、关注 -->
                             <div class="form-require">
                                 <div
-                                    class="form-item"
                                     v-for="(item, index) in formList"
                                     :key="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>
-                                        <!-- join discord -->
-                                        <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 v-if="item.show"  class="form-item">
+                                        <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>
+                                            <!-- join discord -->
+                                            <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>
-                                            <input v-model="item.text" 
-                                                placeholder="Enter discord invite link"
-                                                class="discord-address" 
-                                                @input="onIptDiscordAddress($event, index)"
-                                                @blur="onBlurDiscordAddress($event, index)" />
                                         </div>
+                                        
+                                        <div>
+                                            <el-switch
+                                                v-model="item.checked"
+                                                @change="formSwitchChange($event, item, index)"
+                                            />
+                                            <img src="@/assets/svg/icon-task-close.svg" 
+                                                class="icon-task-close"
+                                                @click="hideTask(item, index)">
+                                        </div>
+                                        <!-- 
+                                            v-if="item.type == 2 || item.type == 3 || item.type == 7 || item.type == 8 || item.type == 9"
+
+                                            <img
+                                            v-if="item.type == 3"
+                                            :src="
+                                                require('@/assets/svg/icon-option-checked.svg')
+                                            "
+                                        /> -->
                                     </div>
-                                    <el-switch
-                                        v-if="item.type == 2 || item.type == 7 || item.type == 8 || item.type == 9"
-                                        v-model="item.checked"
-                                        @change="formSwitchChange($event, item, index)"
-                                    />
-                                    <img
-                                        v-if="item.type == 3"
-                                        :src="
-                                            require('@/assets/svg/icon-option-checked.svg')
-                                        "
-                                    />
                                 </div>
                             </div>
                             <!-- 机器人 -->
@@ -412,7 +441,7 @@ import { getFrontConfig } from "@/http/account";
 import {setChromeStorage, getChromeStorage} from "@/uilts/chromeExtension"
 import { debounce, getBit } from "@/uilts/help"
 import Report from "@/log-center/log"
-import { ElMessage, ElLoading } from "element-plus";
+import { ElMessage, ElLoading, ElDropdown, ElDropdownMenu, ElDropdownItem } from "element-plus";
 import "element-plus/es/components/message/style/css";
 
 import {create, all} from "mathjs";
@@ -552,6 +581,7 @@ let formList = reactive([
         type: 1,
         text: [],
         checked: true,
+        show: true
     },
     {
         label: "Retweet",
@@ -559,6 +589,7 @@ let formList = reactive([
         nodeType: "div",
         type: 3,
         checked: true,
+        show: true
     },
     {
         label: "Like Tweet",
@@ -566,6 +597,7 @@ let formList = reactive([
         nodeType: "div",
         type: 2,
         checked: true,
+        show: true
     },
     {
         label: "Comment and tag 3 friends",
@@ -573,6 +605,7 @@ let formList = reactive([
         nodeType: "div",
         type: 9,
         checked: true,
+        show: true
     },
     {
         label: "Repost to Facebook",
@@ -581,6 +614,7 @@ let formList = reactive([
         text: '',
         type: 8,
         checked: true,
+        show: true
     },
     {
         label: "Join Discord",
@@ -589,6 +623,7 @@ let formList = reactive([
         text: '',
         type: 7,
         checked: true,
+        show: true
     },
 ]);
 
@@ -1183,6 +1218,15 @@ const formSwitchChange = (val, params, index) => {
     }
 }
 
+const hideTask = (params, index) => {
+    formList[index]['show'] = false;
+}
+
+const clickDropdown = (params, index) => {
+    formList[index]['show'] = true;
+}
+
+
 /** 监听 discord 输入 */
 const onIptDiscordAddress = (e, index) => {
     let val = formList[index].text;
@@ -1785,6 +1829,13 @@ onMounted(() => {
                         margin-bottom: 10px;
                         font-weight: 500;
                         font-size: 14px;
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+
+                        .icon-add-task {
+                            cursor: pointer;
+                        }
                     }
 
                     .form-require {
@@ -1820,7 +1871,7 @@ onMounted(() => {
                             }
 
                             .control {
-                                min-width: 280px;
+                                min-width: 258px;
                                 margin-left: 18px;
                                 box-sizing: border-box;
                                 border-left: 1px solid #ECECEC;
@@ -1872,6 +1923,11 @@ onMounted(() => {
                                     }
                                 }
                             }
+
+                            .icon-task-close {
+                                margin-left: 6px;
+                                cursor: pointer;
+                            }
                         }
                         .form-item:last-child {
                             border-bottom: none !important;