临时保存
Showing
33 changed files
with
1377 additions
and
48 deletions
src/assets/imgs/draw-btn-viewprize.png
0 → 100644
7.82 KB
src/assets/imgs/draw-card-bg.png
0 → 100644
38.8 KB
src/assets/imgs/draw-logo-01.png
0 → 100644
2.09 KB
src/assets/imgs/draw-logo-02.png
0 → 100644
2.53 KB
src/assets/imgs/draw-logo-03.png
0 → 100644
6.62 KB
src/assets/imgs/draw-logo-04.png
0 → 100644
2.67 KB
src/assets/imgs/draw-logo-05.png
0 → 100644
4.79 KB
src/assets/imgs/draw-logo-06.png
0 → 100644
8.09 KB
src/assets/imgs/draw-logo-07.png
0 → 100644
4.65 KB
src/assets/imgs/draw-logo-08.png
0 → 100644
4.27 KB
src/assets/imgs/draw-logo-09.png
0 → 100644
2.94 KB
src/assets/imgs/head-title.png
0 → 100644
72.9 KB
src/assets/imgs/leap-04.png
0 → 100644
19.2 KB
src/assets/imgs/list-btn-back.png
0 → 100644
2.4 KB
src/assets/imgs/list-btn-rule.png
0 → 100644
3.89 KB
src/assets/imgs/list-chain-link.png
0 → 100644
1.89 KB
src/assets/imgs/list-heart-red.png
0 → 100644
618 Bytes
src/assets/imgs/list-no-praise.png
0 → 100644
752 Bytes
src/assets/imgs/list-praised.png
0 → 100644
752 Bytes
src/assets/imgs/list-search-btn.png
0 → 100644
4.23 KB
| 1 | <template> | 1 | <template> |
| 2 | <van-popup v-model="data.show"> | 2 | <van-popup v-model="data.show"> |
| 3 | <div class="model"> | 3 | <div class="model" v-if="data.index == 'default'"> |
| 4 | <div class="model-close" @click="modelCloseHandler"></div> | 4 | <div class="model-close" @click="modelCloseHandler"></div> |
| 5 | <div class="model-content"> | 5 | <div class="model-content"> |
| 6 | <div class="model-head-line"></div> | 6 | <div class="model-head-line"></div> |
| 7 | <div class="model-title">{{data.title}}</div> | 7 | <div class="model-title">{{data.title}}</div> |
| 8 | 8 | ||
| 9 | <div class="successModel" v-if="data.index == 'default'"> | 9 | <div class="successModel"> |
| 10 | <div class="model-data">{{data.content}}</div> | 10 | <div class="model-data">{{data.content}}</div> |
| 11 | <div v-if="data.btnShow" class="sys-btn-02" @click="modelBtnClickHandler">{{data.btnText}}</div> | 11 | <div v-if="data.btnShow" class="sys-btn-02" @click="modelBtnClickHandler">{{data.btnText}}</div> |
| 12 | <div | 12 | <div |
| ... | @@ -18,6 +18,47 @@ | ... | @@ -18,6 +18,47 @@ |
| 18 | </div> | 18 | </div> |
| 19 | </div> | 19 | </div> |
| 20 | </div> | 20 | </div> |
| 21 | |||
| 22 | <div class="model rule-model" v-if="data.index == 'rule'"> | ||
| 23 | <div class="model-close" @click="modelCloseHandler"></div> | ||
| 24 | <!-- 规则--> | ||
| 25 | <div class="model-content"> | ||
| 26 | <div class="model-head-line"></div> | ||
| 27 | <div class="model-title">{{data.title}}</div> | ||
| 28 | |||
| 29 | <div class="rule-container"> | ||
| 30 | <div class="rule-line"> | ||
| 31 | <div>1.</div> | ||
| 32 | <div>每位微信用户每天可投一票;</div> | ||
| 33 | </div> | ||
| 34 | <div class="rule-line"> | ||
| 35 | <div>2.</div> | ||
| 36 | <div>投票后可以获得一次抽奖机会;</div> | ||
| 37 | </div> | ||
| 38 | <div class="rule-line"> | ||
| 39 | <div>3.</div> | ||
| 40 | <div>严禁恶意刷人气,一经发现将立即取消选手人气评选资格;</div> | ||
| 41 | </div> | ||
| 42 | <div class="rule-line"> | ||
| 43 | <div>4.</div> | ||
| 44 | <div>本组委会保留最终解释权;</div> | ||
| 45 | </div> | ||
| 46 | <div class="rule-line"> | ||
| 47 | <div>5.</div> | ||
| 48 | <div>报名截止时间9月19日23:59,投票截止时间9月20日23:59,最终入围名单将在9月21在嘉佳卡通卫视官方微信号公布</div> | ||
| 49 | </div> | ||
| 50 | <div class="rule-line"> | ||
| 51 | <div>6.</div> | ||
| 52 | <div>因不可抗因素造成网络人气评选被动停止的,以网络人气评选停止时间的人气值为准。</div> | ||
| 53 | </div> | ||
| 54 | </div> | ||
| 55 | |||
| 56 | <div class="successModel"> | ||
| 57 | <div v-if="data.btnShow" class="sys-btn-02" @click="modelBtnClickHandler">{{data.btnText}}</div> | ||
| 58 | <div class="model-bottom-line"></div> | ||
| 59 | </div> | ||
| 60 | </div> | ||
| 61 | </div> | ||
| 21 | </van-popup> | 62 | </van-popup> |
| 22 | </template> | 63 | </template> |
| 23 | 64 | ||
| ... | @@ -71,7 +112,7 @@ export default { | ... | @@ -71,7 +112,7 @@ export default { |
| 71 | <style lang="less" scoped> | 112 | <style lang="less" scoped> |
| 72 | .van-popup { | 113 | .van-popup { |
| 73 | background-color: transparent; | 114 | background-color: transparent; |
| 74 | top: 40%; | 115 | top: 45%; |
| 75 | } | 116 | } |
| 76 | .model { | 117 | .model { |
| 77 | display: flex; | 118 | display: flex; |
| ... | @@ -130,4 +171,34 @@ export default { | ... | @@ -130,4 +171,34 @@ export default { |
| 130 | font-size: 26px; | 171 | font-size: 26px; |
| 131 | text-align: center; | 172 | text-align: center; |
| 132 | } | 173 | } |
| 174 | |||
| 175 | .rule-model { | ||
| 176 | width: 600px !important; | ||
| 177 | |||
| 178 | .model-content { | ||
| 179 | width: 600px !important; | ||
| 180 | } | ||
| 181 | |||
| 182 | .rule-container { | ||
| 183 | margin: 30px auto; | ||
| 184 | } | ||
| 185 | |||
| 186 | .rule-line { | ||
| 187 | width: 520px; | ||
| 188 | margin: auto; | ||
| 189 | display: flex; | ||
| 190 | align-items: flex-start; | ||
| 191 | |||
| 192 | div { | ||
| 193 | font-size: 24px; | ||
| 194 | color: #303531; | ||
| 195 | text-align: left; | ||
| 196 | line-height: 50px; | ||
| 197 | } | ||
| 198 | |||
| 199 | div:first-child { | ||
| 200 | min-width: 40px; | ||
| 201 | } | ||
| 202 | } | ||
| 203 | } | ||
| 133 | </style> | 204 | </style> | ... | ... |
src/components/plugins/container.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div class="sys-container-panel content"> | ||
| 3 | <div class="container-title">{{title}}</div> | ||
| 4 | <div class="head-line"></div> | ||
| 5 | </div> | ||
| 6 | </template> | ||
| 7 | |||
| 8 | |||
| 9 | <script> | ||
| 10 | export default { | ||
| 11 | props: ["value"], | ||
| 12 | data() { | ||
| 13 | return { | ||
| 14 | title: this.value | ||
| 15 | }; | ||
| 16 | } | ||
| 17 | }; | ||
| 18 | </script> | ||
| 19 | |||
| 20 | <style lang="scss" scoped> | ||
| 21 | .content { | ||
| 22 | margin: 85px auto 60px auto; | ||
| 23 | padding-bottom: 60px; | ||
| 24 | } | ||
| 25 | |||
| 26 | .container-title { | ||
| 27 | font-size: 30px; | ||
| 28 | } | ||
| 29 | |||
| 30 | .head-line { | ||
| 31 | height: 60px; | ||
| 32 | } | ||
| 33 | </style> | ||
| 34 | |||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
src/components/plugins/head.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div class="head-container"> | ||
| 3 | <div class="head-leap"></div> | ||
| 4 | </div> | ||
| 5 | </template> | ||
| 6 | |||
| 7 | |||
| 8 | <style lang="scss" scoped> | ||
| 9 | .head-container { | ||
| 10 | position: relative; | ||
| 11 | height: 0px; | ||
| 12 | } | ||
| 13 | |||
| 14 | .head-leap { | ||
| 15 | width: 750px; | ||
| 16 | height: 231px; | ||
| 17 | background: url(../../assets/imgs/head-leap.png); | ||
| 18 | background-size: 100%; | ||
| 19 | position: relative; | ||
| 20 | left: 0; | ||
| 21 | top: 0; | ||
| 22 | z-index: 999; | ||
| 23 | } | ||
| 24 | </style> | ||
| 25 | |||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | <template> | ||
| 2 | <div class="home"> | ||
| 3 | <head-view></head-view> | ||
| 4 | <div class="sys-container-panel content"> | ||
| 5 | <div class="container-title">{{title}}</div> | ||
| 6 | <div class="head-line"></div> | ||
| 7 | <div class="remain-tip"> | ||
| 8 | 您现在还有 | ||
| 9 | <b>1</b>次抽奖机会 | ||
| 10 | </div> | ||
| 11 | |||
| 12 | <van-row> | ||
| 13 | <van-col span="8"> | ||
| 14 | <div class="card-bg"> | ||
| 15 | <div class="card-logo logo-01"></div> | ||
| 16 | </div> | ||
| 17 | </van-col> | ||
| 18 | <van-col span="8"> | ||
| 19 | <div class="card-bg"> | ||
| 20 | <div class="card-logo logo-02"></div> | ||
| 21 | </div> | ||
| 22 | </van-col> | ||
| 23 | <van-col span="8"> | ||
| 24 | <div class="card-bg"> | ||
| 25 | <div class="card-logo logo-03"></div> | ||
| 26 | </div> | ||
| 27 | </van-col> | ||
| 28 | <van-col span="8"> | ||
| 29 | <div class="card-bg"> | ||
| 30 | <div class="card-logo logo-04"></div> | ||
| 31 | </div> | ||
| 32 | </van-col> | ||
| 33 | <van-col span="8"> | ||
| 34 | <div class="card-bg"> | ||
| 35 | <div class="card-logo logo-05"></div> | ||
| 36 | </div> | ||
| 37 | </van-col> | ||
| 38 | <van-col span="8"> | ||
| 39 | <div class="card-bg"> | ||
| 40 | <div class="card-logo logo-06"></div> | ||
| 41 | </div> | ||
| 42 | </van-col> | ||
| 43 | <van-col span="8"> | ||
| 44 | <div class="card-bg"> | ||
| 45 | <div class="card-logo logo-07"></div> | ||
| 46 | </div> | ||
| 47 | </van-col> | ||
| 48 | <van-col span="8"> | ||
| 49 | <div class="card-bg"> | ||
| 50 | <div class="card-logo logo-08"></div> | ||
| 51 | </div> | ||
| 52 | </van-col> | ||
| 53 | <van-col span="8"> | ||
| 54 | <div class="card-bg"> | ||
| 55 | <div class="card-logo logo-09"></div> | ||
| 56 | </div> | ||
| 57 | </van-col> | ||
| 58 | </van-row> | ||
| 59 | |||
| 60 | <div class="draw-tip">请选择任意一张翻牌开启奖品</div> | ||
| 61 | |||
| 62 | <div class="btn-view-prize" @click="model.show =true"></div> | ||
| 63 | </div> | ||
| 64 | |||
| 65 | <div class="bottom-line"></div> | ||
| 66 | |||
| 67 | <bottom-tool v-model="activityIndex"></bottom-tool> | ||
| 68 | <biz-model v-model="model"></biz-model> | ||
| 69 | </div> | ||
| 70 | </template> | ||
| 71 | |||
| 72 | |||
| 73 | |||
| 74 | <script> | ||
| 75 | import { httpGet } from "@/api/fetch-api"; | ||
| 76 | import BottomTool from "@/components/bottom-tools/bottom-tools"; | ||
| 77 | import BizModel from "@/components/biz-model/biz-model"; | ||
| 78 | import HeadView from "@/components/plugins/head"; | ||
| 79 | |||
| 80 | import Vue from "vue"; | ||
| 81 | import { Row, Col } from "vant"; | ||
| 82 | |||
| 83 | Vue.use(Row).use(Col); | ||
| 84 | |||
| 85 | export default { | ||
| 86 | name: "home", | ||
| 87 | data() { | ||
| 88 | return { | ||
| 89 | activityIndex: 4, | ||
| 90 | title: "幸运大抽奖", | ||
| 91 | model: { | ||
| 92 | show: false, | ||
| 93 | title: "", | ||
| 94 | content: "", | ||
| 95 | index: "prize", | ||
| 96 | btnShow: false, | ||
| 97 | btnText: "", | ||
| 98 | confirmHandler: null, | ||
| 99 | labelBtnShow: false, | ||
| 100 | labelBtnText: "", | ||
| 101 | labelBtnHandler: null | ||
| 102 | } | ||
| 103 | }; | ||
| 104 | }, | ||
| 105 | methods: { | ||
| 106 | toSign() { | ||
| 107 | this.$router.push("/sign"); | ||
| 108 | } | ||
| 109 | }, | ||
| 110 | components: { | ||
| 111 | BottomTool, | ||
| 112 | BizModel, | ||
| 113 | HeadView | ||
| 114 | } | ||
| 115 | }; | ||
| 116 | </script> | ||
| 117 | |||
| 118 | |||
| 119 | <style lang="scss" scoped> | ||
| 120 | .content { | ||
| 121 | margin: 85px auto 60px auto; | ||
| 122 | padding-bottom: 60px; | ||
| 123 | } | ||
| 124 | |||
| 125 | .container-title { | ||
| 126 | font-size: 30px; | ||
| 127 | } | ||
| 128 | |||
| 129 | .head-line { | ||
| 130 | height: 60px; | ||
| 131 | } | ||
| 132 | |||
| 133 | .bottom-line { | ||
| 134 | height: 150px; | ||
| 135 | background-color: transparent; | ||
| 136 | } | ||
| 137 | |||
| 138 | .remain-tip { | ||
| 139 | font-size: 30px; | ||
| 140 | font-weight: 600; | ||
| 141 | |||
| 142 | b { | ||
| 143 | color: #f00; | ||
| 144 | font-size: 36px; | ||
| 145 | padding: 0 10px; | ||
| 146 | } | ||
| 147 | } | ||
| 148 | |||
| 149 | .van-row { | ||
| 150 | width: 650px; | ||
| 151 | margin: auto; | ||
| 152 | margin-top: 10px; | ||
| 153 | } | ||
| 154 | |||
| 155 | .card-bg { | ||
| 156 | width: 214px; | ||
| 157 | height: 268px; | ||
| 158 | background: url(../../assets/imgs/draw-card-bg.png); | ||
| 159 | background-size: 100%; | ||
| 160 | display: flex; | ||
| 161 | align-items: center; | ||
| 162 | } | ||
| 163 | |||
| 164 | .card-logo { | ||
| 165 | margin: auto; | ||
| 166 | } | ||
| 167 | |||
| 168 | .logo-01 { | ||
| 169 | width: 111px; | ||
| 170 | height: 18px; | ||
| 171 | background: url(../../assets/imgs/draw-logo-01.png) no-repeat; | ||
| 172 | background-size: 100%; | ||
| 173 | } | ||
| 174 | .logo-02 { | ||
| 175 | width: 65px; | ||
| 176 | height: 32px; | ||
| 177 | background: url(../../assets/imgs/draw-logo-02.png) no-repeat; | ||
| 178 | background-size: 100%; | ||
| 179 | } | ||
| 180 | .logo-03 { | ||
| 181 | width: 62px; | ||
| 182 | height: 51px; | ||
| 183 | background: url(../../assets/imgs/draw-logo-03.png) no-repeat; | ||
| 184 | background-size: 100%; | ||
| 185 | } | ||
| 186 | .logo-04 { | ||
| 187 | width: 70px; | ||
| 188 | height: 30px; | ||
| 189 | background: url(../../assets/imgs/draw-logo-04.png) no-repeat; | ||
| 190 | background-size: 100%; | ||
| 191 | } | ||
| 192 | .logo-05 { | ||
| 193 | width: 89px; | ||
| 194 | height: 35px; | ||
| 195 | background: url(../../assets/imgs/draw-logo-05.png) no-repeat; | ||
| 196 | background-size: 100%; | ||
| 197 | } | ||
| 198 | .logo-06 { | ||
| 199 | width: 73px; | ||
| 200 | height: 74px; | ||
| 201 | background: url(../../assets/imgs/draw-logo-06.png) no-repeat; | ||
| 202 | background-size: 100%; | ||
| 203 | } | ||
| 204 | .logo-07 { | ||
| 205 | width: 66px; | ||
| 206 | height: 59px; | ||
| 207 | background: url(../../assets/imgs/draw-logo-07.png) no-repeat; | ||
| 208 | background-size: 100%; | ||
| 209 | } | ||
| 210 | .logo-08 { | ||
| 211 | width: 81px; | ||
| 212 | height: 46px; | ||
| 213 | background: url(../../assets/imgs/draw-logo-08.png) no-repeat; | ||
| 214 | background-size: 100%; | ||
| 215 | } | ||
| 216 | .logo-09 { | ||
| 217 | width: 109px; | ||
| 218 | height: 27px; | ||
| 219 | background: url(../../assets/imgs/draw-logo-09.png) no-repeat; | ||
| 220 | background-size: 100%; | ||
| 221 | } | ||
| 222 | |||
| 223 | .draw-tip { | ||
| 224 | font-size: 24px; | ||
| 225 | text-align: center; | ||
| 226 | margin: 30px auto 0 auto; | ||
| 227 | color: #06b686; | ||
| 228 | } | ||
| 229 | .btn-view-prize { | ||
| 230 | width: 283px; | ||
| 231 | height: 65px; | ||
| 232 | background: url(../../assets/imgs/draw-btn-viewprize.png) no-repeat; | ||
| 233 | background-size: 100%; | ||
| 234 | margin: 30px auto 0 auto; | ||
| 235 | } | ||
| 236 | </style> | ... | ... |
| ... | @@ -22,9 +22,9 @@ export default { | ... | @@ -22,9 +22,9 @@ export default { |
| 22 | activityIndex: 1 | 22 | activityIndex: 1 |
| 23 | }; | 23 | }; |
| 24 | }, | 24 | }, |
| 25 | methods : { | 25 | methods: { |
| 26 | toSign(){ | 26 | toSign() { |
| 27 | this.$router.push("/sign") | 27 | this.$router.push("/sign"); |
| 28 | } | 28 | } |
| 29 | }, | 29 | }, |
| 30 | components: { | 30 | components: { |
| ... | @@ -34,11 +34,6 @@ export default { | ... | @@ -34,11 +34,6 @@ export default { |
| 34 | </script> | 34 | </script> |
| 35 | 35 | ||
| 36 | <style lang="scss" scoped> | 36 | <style lang="scss" scoped> |
| 37 | .home { | ||
| 38 | position: relative; | ||
| 39 | text-align: center; | ||
| 40 | background-color: #74cb35; | ||
| 41 | } | ||
| 42 | .title { | 37 | .title { |
| 43 | width: 750px; | 38 | width: 750px; |
| 44 | height: 955px; | 39 | height: 955px; |
| ... | @@ -90,7 +85,7 @@ export default { | ... | @@ -90,7 +85,7 @@ export default { |
| 90 | position: absolute; | 85 | position: absolute; |
| 91 | bottom: 0px; | 86 | bottom: 0px; |
| 92 | } | 87 | } |
| 93 | .remain{ | 88 | .remain { |
| 94 | height: 0px; | 89 | height: 0px; |
| 95 | } | 90 | } |
| 96 | </style> | 91 | </style> | ... | ... |
src/pages/list/components/ListView.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div class="viewClass"> | ||
| 3 | <div class="search-panel"> | ||
| 4 | <div class="input-panel"> | ||
| 5 | <input v-model="listForm.query" /> | ||
| 6 | </div> | ||
| 7 | <div class="search-btn" @click="searchWorksHandler('searchBtn')"></div> | ||
| 8 | </div> | ||
| 9 | <van-row> | ||
| 10 | <van-col span="12" v-for="(item,index) in worksList" :key="index"> | ||
| 11 | <div class="worksItem" @click="toWorksViewHandler(item.worksCode)"> | ||
| 12 | <div | ||
| 13 | class="worksThumb" | ||
| 14 | v-bind:style="{backgroundImage:'url(' + item.worksList[0].worksUrl + ')'}" | ||
| 15 | ></div> | ||
| 16 | <div class="worksDescription"> | ||
| 17 | <div class="worksNo">{{item.worksNo}}</div> | ||
| 18 | <div class="worksName">{{item.name}}</div> | ||
| 19 | <div class="worksPriaseNo">{{item.praiseNumber}}</div> | ||
| 20 | <div class="worksPraise"></div> | ||
| 21 | </div> | ||
| 22 | </div> | ||
| 23 | </van-col> | ||
| 24 | |||
| 25 | <van-col span="24" v-if="worksList.length == 0 "> | ||
| 26 | <div class="empty"> | ||
| 27 | <div class="empty-icon"> | ||
| 28 | <van-icon name="warn-o" /> | ||
| 29 | </div> | ||
| 30 | <div class="empty-message">没有搜到任何作品 !</div> | ||
| 31 | </div> | ||
| 32 | </van-col> | ||
| 33 | </van-row> | ||
| 34 | </div> | ||
| 35 | </template> | ||
| 36 | |||
| 37 | <script> | ||
| 38 | let urls = { | ||
| 39 | list: "/jiajiaCHApi/app/works/list" | ||
| 40 | }; | ||
| 41 | |||
| 42 | import { httpGet } from "@/api/fetch-api"; | ||
| 43 | |||
| 44 | import Vue from "vue"; | ||
| 45 | import { Row, Col } from "vant"; | ||
| 46 | import { Icon } from "vant"; | ||
| 47 | |||
| 48 | Vue.use(Icon); | ||
| 49 | Vue.use(Row).use(Col); | ||
| 50 | |||
| 51 | export default { | ||
| 52 | props: [""], | ||
| 53 | data() { | ||
| 54 | return { | ||
| 55 | init: false, | ||
| 56 | worksList: [], | ||
| 57 | lastQuery: "", | ||
| 58 | listForm: { | ||
| 59 | query: "", | ||
| 60 | page: 1, | ||
| 61 | size: 10 | ||
| 62 | } | ||
| 63 | }; | ||
| 64 | }, | ||
| 65 | methods: { | ||
| 66 | initActvity() { | ||
| 67 | this.searchWorksHandler(); | ||
| 68 | }, | ||
| 69 | toWorksViewHandler(code) { | ||
| 70 | this.$emit("worksDetail", { worksCode: code }); | ||
| 71 | }, | ||
| 72 | searchWorksHandler(action) { | ||
| 73 | if (action) { | ||
| 74 | if (this.lastQuery == this.listForm.query) { | ||
| 75 | return; | ||
| 76 | } | ||
| 77 | this.lastQuery = this.listForm.query; | ||
| 78 | this.listForm.page = 1; | ||
| 79 | } | ||
| 80 | httpGet({ url: urls.list, data: this.listForm }).then(res => { | ||
| 81 | let list = []; | ||
| 82 | if (this.listForm.page != 1) { | ||
| 83 | list = this.worksList; | ||
| 84 | } | ||
| 85 | list = list.concat(res.list); | ||
| 86 | this.worksList = list; | ||
| 87 | }); | ||
| 88 | } | ||
| 89 | }, | ||
| 90 | created() { | ||
| 91 | this.initActvity(); | ||
| 92 | } | ||
| 93 | }; | ||
| 94 | </script> | ||
| 95 | |||
| 96 | <style lang="scss" scoped> | ||
| 97 | .viewClass { | ||
| 98 | width: 630px; | ||
| 99 | margin: auto; | ||
| 100 | padding-top: 30px; | ||
| 101 | } | ||
| 102 | |||
| 103 | .search-panel { | ||
| 104 | display: flex; | ||
| 105 | align-items: center; | ||
| 106 | justify-content: space-between; | ||
| 107 | width: 630px; | ||
| 108 | |||
| 109 | .input-panel { | ||
| 110 | width: 450px; | ||
| 111 | height: 52px; | ||
| 112 | border: 2px solid #82acae; | ||
| 113 | background-color: #e8e8e8; | ||
| 114 | line-height: 54px; | ||
| 115 | border-radius: 26px; | ||
| 116 | display: flex; | ||
| 117 | input { | ||
| 118 | height: 46px; | ||
| 119 | width: 400px; | ||
| 120 | line-height: 46px; | ||
| 121 | border: none; | ||
| 122 | background-color: transparent; | ||
| 123 | padding-left: 20px; | ||
| 124 | font-size: 28px; | ||
| 125 | position: relative; | ||
| 126 | z-index: 1000; | ||
| 127 | } | ||
| 128 | } | ||
| 129 | |||
| 130 | .search-btn { | ||
| 131 | width: 152px; | ||
| 132 | height: 53px; | ||
| 133 | background: url(../../../assets/imgs/list-search-btn.png); | ||
| 134 | background-size: 100%; | ||
| 135 | position: relative; | ||
| 136 | z-index: 1000; | ||
| 137 | } | ||
| 138 | } | ||
| 139 | |||
| 140 | .van-row { | ||
| 141 | margin-top: 30px; | ||
| 142 | } | ||
| 143 | |||
| 144 | .worksItem { | ||
| 145 | width: 300px; | ||
| 146 | height: 275px; | ||
| 147 | border: solid 1px #d1d0d0; | ||
| 148 | box-shadow: 2px 2px 2px #d1d0d0; | ||
| 149 | border-radius: 20px; | ||
| 150 | |||
| 151 | .worksThumb { | ||
| 152 | width: 300px; | ||
| 153 | height: 215px; | ||
| 154 | background-size: cover; | ||
| 155 | } | ||
| 156 | .worksDescription { | ||
| 157 | display: flex; | ||
| 158 | align-items: center; | ||
| 159 | padding-left: 10px; | ||
| 160 | |||
| 161 | div { | ||
| 162 | font-size: 26px; | ||
| 163 | height: 60px; | ||
| 164 | line-height: 60px; | ||
| 165 | text-align: left; | ||
| 166 | text-overflow: ellipsis; | ||
| 167 | } | ||
| 168 | |||
| 169 | .worksNo { | ||
| 170 | width: 55px; | ||
| 171 | } | ||
| 172 | .worksName { | ||
| 173 | width: 133px; | ||
| 174 | } | ||
| 175 | .worksPriaseNo { | ||
| 176 | width: 63px; | ||
| 177 | } | ||
| 178 | .worksPraise { | ||
| 179 | width: 28px; | ||
| 180 | height: 24px; | ||
| 181 | background: url(../../../assets/imgs/list-heart-red.png); | ||
| 182 | background-size: 100%; | ||
| 183 | } | ||
| 184 | } | ||
| 185 | } | ||
| 186 | .empty { | ||
| 187 | padding-top: 100px; | ||
| 188 | height: 300px; | ||
| 189 | |||
| 190 | .empty-icon { | ||
| 191 | font-size: 60px; | ||
| 192 | color: #a1a1a1; | ||
| 193 | } | ||
| 194 | .empty-message { | ||
| 195 | font-size: 24px; | ||
| 196 | color: #a1a1a1; | ||
| 197 | } | ||
| 198 | } | ||
| 199 | </style> |
| 1 | <template> | ||
| 2 | <div class="viewClass" v-if="formData"> | ||
| 3 | <div class="btn-back" @click="backHandler"></div> | ||
| 4 | <div class="sys-container-panel content"> | ||
| 5 | <div class="container-title">小选手:{{formData.name}}</div> | ||
| 6 | <div class="head-line"></div> | ||
| 7 | <div class="swipe"> | ||
| 8 | <van-swipe :autoplay="5000"> | ||
| 9 | <van-swipe-item v-for="(works, index) in formData.worksList" :key="index"> | ||
| 10 | <!-- <img :src="works.worksUrl" /> --> | ||
| 11 | <div class="img" v-bind:style="{backgroundImage:'url(' + works.worksUrl + ')'}"></div> | ||
| 12 | </van-swipe-item> | ||
| 13 | </van-swipe> | ||
| 14 | </div> | ||
| 15 | <div class="text-container space"> | ||
| 16 | <div class="text-container inline"> | ||
| 17 | <div class="label">参数编号:</div> | ||
| 18 | <div class="msg">{{formData.worksNo}}</div> | ||
| 19 | </div> | ||
| 20 | |||
| 21 | <div class="text-container inline right"> | ||
| 22 | <div class="width-label label">目前人气值:</div> | ||
| 23 | <div class="msg primay">{{formData.praiseNumber}}</div> | ||
| 24 | </div> | ||
| 25 | </div> | ||
| 26 | |||
| 27 | <div class="text-container space"> | ||
| 28 | <div class="text-container inline"> | ||
| 29 | <div class="label">来自城市:</div> | ||
| 30 | <div class="msg">{{formData.province}} {{formData.city}}</div> | ||
| 31 | </div> | ||
| 32 | |||
| 33 | <div class="text-container inline right"> | ||
| 34 | <div class="label">目前排名:</div> | ||
| 35 | <div class="msg primay">{{formData.rank}}</div> | ||
| 36 | </div> | ||
| 37 | </div> | ||
| 38 | |||
| 39 | <div class="text-container space top"> | ||
| 40 | <div class="label">竞赛宣言:</div> | ||
| 41 | <div class="msg">{{formData.slogan}}</div> | ||
| 42 | </div> | ||
| 43 | </div> | ||
| 44 | |||
| 45 | <div class="view-btn-group"> | ||
| 46 | <div class="sys-btn-02" @click="selfPraiseHandler">投TA一票</div> | ||
| 47 | <div class="sys-btn-02" @click="showShareHandler">呼叫亲友团</div> | ||
| 48 | </div> | ||
| 49 | |||
| 50 | <div class="btn-tips">*每用户每天仅能投票一次</div> | ||
| 51 | </div> | ||
| 52 | </template> | ||
| 53 | |||
| 54 | <script> | ||
| 55 | let urls = { | ||
| 56 | praise: "/jiajiaCHApi/app/works/praise" | ||
| 57 | }; | ||
| 58 | |||
| 59 | import { request } from "@/api/fetch-api"; | ||
| 60 | |||
| 61 | import Vue from "vue"; | ||
| 62 | import { Toast } from "vant"; | ||
| 63 | import { Swipe, SwipeItem } from "vant"; | ||
| 64 | |||
| 65 | Vue.use(Swipe).use(SwipeItem); | ||
| 66 | Vue.use(Toast); | ||
| 67 | |||
| 68 | export default { | ||
| 69 | props: ["value"], | ||
| 70 | data() { | ||
| 71 | return { | ||
| 72 | formData: this.value.data, | ||
| 73 | isMy: this.value.isMy | ||
| 74 | }; | ||
| 75 | }, | ||
| 76 | methods: { | ||
| 77 | formEditHandler() { | ||
| 78 | this.$emit("edit"); | ||
| 79 | }, | ||
| 80 | selfPraiseHandler() { | ||
| 81 | // 自己点赞 | ||
| 82 | let data = { | ||
| 83 | worksCode: this.formData.worksCode | ||
| 84 | }; | ||
| 85 | Toast.loading({ | ||
| 86 | mask: true, | ||
| 87 | message: "数据提交..." | ||
| 88 | }); | ||
| 89 | request | ||
| 90 | .post(urls.praise, data) | ||
| 91 | .then(res => { | ||
| 92 | Toast.clear(); | ||
| 93 | this.$emit("praiseSuccess"); | ||
| 94 | }) | ||
| 95 | .catch(res => { | ||
| 96 | let msg = res.data.errMsg; | ||
| 97 | Toast(msg); | ||
| 98 | }); | ||
| 99 | }, | ||
| 100 | showShareHandler() { | ||
| 101 | // 出现分享层 | ||
| 102 | this.$emit("showShare"); | ||
| 103 | }, | ||
| 104 | backHandler() { | ||
| 105 | this.$emit("back"); | ||
| 106 | } | ||
| 107 | } | ||
| 108 | }; | ||
| 109 | </script> | ||
| 110 | |||
| 111 | <style lang="scss" scoped> | ||
| 112 | .content { | ||
| 113 | margin: 85px auto 60px auto; | ||
| 114 | padding-bottom: 60px; | ||
| 115 | |||
| 116 | .head-line { | ||
| 117 | height: 60px; | ||
| 118 | } | ||
| 119 | |||
| 120 | .edit { | ||
| 121 | width: 630px; | ||
| 122 | text-align: right; | ||
| 123 | u { | ||
| 124 | font-size: 24px; | ||
| 125 | color: #5db288; | ||
| 126 | position: relative; | ||
| 127 | z-index: 1000; | ||
| 128 | } | ||
| 129 | } | ||
| 130 | |||
| 131 | .swipe { | ||
| 132 | width: 630px; | ||
| 133 | height: 451px; | ||
| 134 | margin: auto; | ||
| 135 | border: 2px solid #82acae; | ||
| 136 | border-radius: 30px; | ||
| 137 | overflow: hidden; | ||
| 138 | |||
| 139 | .img { | ||
| 140 | height: 451px; | ||
| 141 | width: 630px; | ||
| 142 | background-size: cover; | ||
| 143 | } | ||
| 144 | } | ||
| 145 | |||
| 146 | .space { | ||
| 147 | margin-top: 20px !important; | ||
| 148 | } | ||
| 149 | .top { | ||
| 150 | display: flex; | ||
| 151 | align-items: flex-start !important; | ||
| 152 | } | ||
| 153 | |||
| 154 | .inline-group-width { | ||
| 155 | width: 500px; | ||
| 156 | } | ||
| 157 | |||
| 158 | .inline-group { | ||
| 159 | display: flex; | ||
| 160 | justify-content: space-between; | ||
| 161 | align-items: center; | ||
| 162 | } | ||
| 163 | |||
| 164 | .text-container { | ||
| 165 | display: flex; | ||
| 166 | align-items: center; | ||
| 167 | width: 620px; | ||
| 168 | margin: auto; | ||
| 169 | |||
| 170 | .inline { | ||
| 171 | width: 315px !important; | ||
| 172 | |||
| 173 | .label { | ||
| 174 | width: 130px; | ||
| 175 | } | ||
| 176 | |||
| 177 | .width-label { | ||
| 178 | width: 170px !important; | ||
| 179 | } | ||
| 180 | .msg { | ||
| 181 | width: 185px; | ||
| 182 | } | ||
| 183 | } | ||
| 184 | |||
| 185 | .inline-02 { | ||
| 186 | width: 180px !important; | ||
| 187 | padding: 0 30px; | ||
| 188 | .label { | ||
| 189 | font-size: 22px; | ||
| 190 | } | ||
| 191 | } | ||
| 192 | |||
| 193 | .right { | ||
| 194 | justify-content: flex-end !important; | ||
| 195 | } | ||
| 196 | |||
| 197 | .label { | ||
| 198 | min-width: 128px; | ||
| 199 | font-size: 24px; | ||
| 200 | text-align: left; | ||
| 201 | } | ||
| 202 | .msg { | ||
| 203 | color: #303531; | ||
| 204 | font-size: 24px; | ||
| 205 | text-align: left; | ||
| 206 | } | ||
| 207 | .primay { | ||
| 208 | font-size: 32px !important; | ||
| 209 | font-weight: 600; | ||
| 210 | color: #ff9e30; | ||
| 211 | } | ||
| 212 | } | ||
| 213 | |||
| 214 | .privacy { | ||
| 215 | width: 630px; | ||
| 216 | margin: auto; | ||
| 217 | hr { | ||
| 218 | border-top: 3px dashed #d4d1c5; | ||
| 219 | margin: 60px auto; | ||
| 220 | } | ||
| 221 | } | ||
| 222 | } | ||
| 223 | |||
| 224 | .view-btn-group { | ||
| 225 | display: flex; | ||
| 226 | width: 730px; | ||
| 227 | margin: auto; | ||
| 228 | justify-content: space-between; | ||
| 229 | .sys-btn-02 { | ||
| 230 | width: 340px; | ||
| 231 | line-height: 80px; | ||
| 232 | height: 90px; | ||
| 233 | background-size: 340px 90px; | ||
| 234 | } | ||
| 235 | } | ||
| 236 | |||
| 237 | .container-title { | ||
| 238 | font-size: 28px; | ||
| 239 | } | ||
| 240 | |||
| 241 | .auto-register-tips { | ||
| 242 | width: 700px; | ||
| 243 | margin: auto; | ||
| 244 | } | ||
| 245 | |||
| 246 | .icon-draw-down { | ||
| 247 | width: 30px; | ||
| 248 | height: 18px; | ||
| 249 | background: url(../../../assets/imgs/draw-down.png) no-repeat; | ||
| 250 | background-size: 100%; | ||
| 251 | } | ||
| 252 | |||
| 253 | .btn-tips { | ||
| 254 | width: 640px; | ||
| 255 | text-align: left; | ||
| 256 | font-size: 24px; | ||
| 257 | color: #303531; | ||
| 258 | margin: auto; | ||
| 259 | } | ||
| 260 | |||
| 261 | .btn-back { | ||
| 262 | width: 170px; | ||
| 263 | height: 52px; | ||
| 264 | background: url(../../../assets/imgs/list-btn-back.png); | ||
| 265 | background-size: 100%; | ||
| 266 | position: fixed; | ||
| 267 | left: 0; | ||
| 268 | top: 30px; | ||
| 269 | z-index: 8000; | ||
| 270 | } | ||
| 271 | </style> |
src/pages/list/components/WorksListView.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div class="viewClass" v-if="init"> | ||
| 3 | <div class="btn-show-rule" @click="showRuleHandler"></div> | ||
| 4 | <div v-if="indexForm.worksCode"> | ||
| 5 | <div class="sys-container-panel content top-marin"> | ||
| 6 | <div class="container-title">人气评选</div> | ||
| 7 | <div class="head-line"></div> | ||
| 8 | |||
| 9 | <div class="self-container"> | ||
| 10 | <div class="leap"></div> | ||
| 11 | <div class="self-content"> | ||
| 12 | <div class="swipe"> | ||
| 13 | <van-swipe :autoplay="5000"> | ||
| 14 | <van-swipe-item v-for="(works, index) in formData.worksList" :key="index"> | ||
| 15 | <div class="img" v-bind:style="{backgroundImage:'url(' + works.worksUrl + ')'}"></div> | ||
| 16 | </van-swipe-item> | ||
| 17 | </van-swipe> | ||
| 18 | </div> | ||
| 19 | |||
| 20 | <div class="text-container space"> | ||
| 21 | <div class="text-container inline"> | ||
| 22 | <div class="label">我的编号:</div> | ||
| 23 | <div class="msg">{{formData.worksNo}}</div> | ||
| 24 | </div> | ||
| 25 | |||
| 26 | <div class="text-container inline"> | ||
| 27 | <div class="label">我的人气:</div> | ||
| 28 | <div class="msg">{{formData.praiseNumber}}</div> | ||
| 29 | </div> | ||
| 30 | |||
| 31 | <div class="text-container inline"> | ||
| 32 | <div class="label">我的排名:</div> | ||
| 33 | <div class="msg">{{indexForm.rank}}</div> | ||
| 34 | </div> | ||
| 35 | |||
| 36 | <div class="text-container inline top" @click="praiseHandler"> | ||
| 37 | <div class="no-praise" :class="{praise : indexForm.isPraiseToday == '1'}"></div> | ||
| 38 | <div class="msg primay">{{indexForm.isPraiseToday == '1' ? '今日已投' : '今日未投'}}</div> | ||
| 39 | </div> | ||
| 40 | </div> | ||
| 41 | </div> | ||
| 42 | </div> | ||
| 43 | </div> | ||
| 44 | <div class="chain-div"></div> | ||
| 45 | </div> | ||
| 46 | <div | ||
| 47 | class="sys-container-panel content list-panel" | ||
| 48 | v-bind:class="{'top-marin' : indexForm.worksCode == ''}" | ||
| 49 | > | ||
| 50 | <div class="container-title" v-if="!indexForm.worksCode">人气评选</div> | ||
| 51 | <div class="head-line" v-if="!indexForm.worksCode"></div> | ||
| 52 | <list-view v-on:worksDetail="showWorksDetail"></list-view> | ||
| 53 | |||
| 54 | <div class="bottom-line"></div> | ||
| 55 | </div> | ||
| 56 | </div> | ||
| 57 | </template> | ||
| 58 | |||
| 59 | <script> | ||
| 60 | let urls = { | ||
| 61 | praise: "/jiajiaCHApi/app/works/praise", | ||
| 62 | index: "/jiajiaCHApi/app/index" | ||
| 63 | }; | ||
| 64 | |||
| 65 | import ListView from "./ListView"; | ||
| 66 | import { request, httpGet } from "@/api/fetch-api"; | ||
| 67 | |||
| 68 | import Vue from "vue"; | ||
| 69 | import { Toast } from "vant"; | ||
| 70 | import { Swipe, SwipeItem } from "vant"; | ||
| 71 | |||
| 72 | Vue.use(Swipe).use(SwipeItem); | ||
| 73 | Vue.use(Toast); | ||
| 74 | |||
| 75 | export default { | ||
| 76 | props: ["value"], | ||
| 77 | data() { | ||
| 78 | return { | ||
| 79 | init: false, | ||
| 80 | formData: this.value, | ||
| 81 | indexForm: { | ||
| 82 | rank: 0, | ||
| 83 | isPraiseToday: 0, | ||
| 84 | worksCode: "", | ||
| 85 | isSubcribe: 0 | ||
| 86 | } | ||
| 87 | }; | ||
| 88 | }, | ||
| 89 | methods: { | ||
| 90 | initActvity() { | ||
| 91 | httpGet({ url: urls.index, data: {} }).then(res => { | ||
| 92 | this.init = true; | ||
| 93 | this.indexForm = res; | ||
| 94 | // this.indexForm.worksCode = ""; | ||
| 95 | }); | ||
| 96 | }, | ||
| 97 | praiseHandler(code) { | ||
| 98 | if (!this.init) { | ||
| 99 | return; | ||
| 100 | } | ||
| 101 | if (this.indexForm.isPraiseToday == 1) { | ||
| 102 | return; | ||
| 103 | } | ||
| 104 | |||
| 105 | let data = { | ||
| 106 | worksCode: | ||
| 107 | (typeof code).toLowerCase() == "string" | ||
| 108 | ? code | ||
| 109 | : this.indexForm.worksCode | ||
| 110 | }; | ||
| 111 | Toast.loading({ | ||
| 112 | mask: true, | ||
| 113 | message: "数据提交..." | ||
| 114 | }); | ||
| 115 | request | ||
| 116 | .post(urls.praise, data) | ||
| 117 | .then(res => { | ||
| 118 | Toast.clear(); | ||
| 119 | this.indexForm.isPraiseToday = 1; | ||
| 120 | this.emitPraiseSuccess(); | ||
| 121 | }) | ||
| 122 | .catch(res => { | ||
| 123 | let msg = res.data.errMsg; | ||
| 124 | Toast(msg); | ||
| 125 | }); | ||
| 126 | }, | ||
| 127 | emitPraiseSuccess() { | ||
| 128 | this.$emit("praiseSuccess"); | ||
| 129 | }, | ||
| 130 | showRuleHandler() { | ||
| 131 | this.$emit("showRule"); | ||
| 132 | }, | ||
| 133 | showWorksDetail(params) { | ||
| 134 | this.$emit("worksDetail", params); | ||
| 135 | } | ||
| 136 | }, | ||
| 137 | created() { | ||
| 138 | this.initActvity(); | ||
| 139 | }, | ||
| 140 | components: { | ||
| 141 | ListView | ||
| 142 | } | ||
| 143 | }; | ||
| 144 | </script> | ||
| 145 | |||
| 146 | <style lang="scss" scoped> | ||
| 147 | .viewClass { | ||
| 148 | position: relative; | ||
| 149 | |||
| 150 | .chain-div { | ||
| 151 | width: 315px; | ||
| 152 | height: 50px; | ||
| 153 | background: url(../../../assets/imgs/list-chain-link.png); | ||
| 154 | background-size: 100%; | ||
| 155 | position: absolute; | ||
| 156 | left: 217px; | ||
| 157 | top: 360px; | ||
| 158 | z-index: 800; | ||
| 159 | } | ||
| 160 | } | ||
| 161 | |||
| 162 | .top-marin { | ||
| 163 | margin: 85px auto 15px auto !important; | ||
| 164 | } | ||
| 165 | .content { | ||
| 166 | padding-bottom: 30px; | ||
| 167 | |||
| 168 | .head-line { | ||
| 169 | height: 80px; | ||
| 170 | } | ||
| 171 | } | ||
| 172 | |||
| 173 | .self-container { | ||
| 174 | width: 630px; | ||
| 175 | height: 265px; | ||
| 176 | border-radius: 20px; | ||
| 177 | background-color: #71c634; | ||
| 178 | margin: 0px auto 0 auto; | ||
| 179 | position: relative; | ||
| 180 | padding-top: 5px; | ||
| 181 | |||
| 182 | .self-content { | ||
| 183 | display: flex; | ||
| 184 | } | ||
| 185 | |||
| 186 | .leap { | ||
| 187 | width: 149px; | ||
| 188 | height: 129px; | ||
| 189 | background: url(../../../assets/imgs/leap-04.png); | ||
| 190 | background-size: 100%; | ||
| 191 | position: absolute; | ||
| 192 | right: -5px; | ||
| 193 | bottom: 0px; | ||
| 194 | } | ||
| 195 | |||
| 196 | .swipe { | ||
| 197 | width: 265px; | ||
| 198 | height: 200px; | ||
| 199 | border: 2px solid #45a402; | ||
| 200 | border-radius: 20px; | ||
| 201 | margin: 32px; | ||
| 202 | overflow: hidden; | ||
| 203 | |||
| 204 | div { | ||
| 205 | line-height: 200px; | ||
| 206 | height: 200px; | ||
| 207 | text-align: center; | ||
| 208 | width: 265px; | ||
| 209 | } | ||
| 210 | .img { | ||
| 211 | margin: auto; | ||
| 212 | // width: 235px; | ||
| 213 | height: 190px; | ||
| 214 | width: 265px; | ||
| 215 | background-size: cover; | ||
| 216 | } | ||
| 217 | } | ||
| 218 | |||
| 219 | .space { | ||
| 220 | margin-top: 32px; | ||
| 221 | } | ||
| 222 | |||
| 223 | .top { | ||
| 224 | margin-top: 18px !important; | ||
| 225 | } | ||
| 226 | |||
| 227 | .inline { | ||
| 228 | display: flex; | ||
| 229 | margin-bottom: 10px; | ||
| 230 | align-items: center; | ||
| 231 | |||
| 232 | .label { | ||
| 233 | color: #fff; | ||
| 234 | font-weight: 400; | ||
| 235 | font-size: 30px; | ||
| 236 | } | ||
| 237 | .msg { | ||
| 238 | color: #0e6f4e; | ||
| 239 | font-weight: bold; | ||
| 240 | font-size: 30px; | ||
| 241 | } | ||
| 242 | |||
| 243 | .primay { | ||
| 244 | font-weight: 500; | ||
| 245 | font-size: 24px; | ||
| 246 | } | ||
| 247 | |||
| 248 | .no-praise { | ||
| 249 | margin-right: 10px; | ||
| 250 | width: 34px; | ||
| 251 | height: 30px; | ||
| 252 | background: url(../../../assets/imgs/list-no-praise.png) no-repeat; | ||
| 253 | background-size: 100%; | ||
| 254 | } | ||
| 255 | |||
| 256 | .praise { | ||
| 257 | width: 34px; | ||
| 258 | height: 30px; | ||
| 259 | background: url(../../../assets/imgs/list-praised.png) no-repeat !important; | ||
| 260 | background-size: 100% !important; | ||
| 261 | } | ||
| 262 | } | ||
| 263 | } | ||
| 264 | |||
| 265 | .list-panel { | ||
| 266 | min-height: 600px; | ||
| 267 | } | ||
| 268 | |||
| 269 | .bottom-line { | ||
| 270 | height: 10px; | ||
| 271 | } | ||
| 272 | |||
| 273 | .btn-show-rule { | ||
| 274 | width: 170px; | ||
| 275 | height: 52px; | ||
| 276 | background: url(../../../assets/imgs/list-btn-rule.png); | ||
| 277 | background-size: 100%; | ||
| 278 | position: fixed; | ||
| 279 | left: 0; | ||
| 280 | top: 30px; | ||
| 281 | z-index: 8000; | ||
| 282 | } | ||
| 283 | </style> |
| 1 | <template> | ||
| 2 | <div class="home"> | ||
| 3 | <head-view></head-view> | ||
| 4 | <bottom-tool v-model="activityIndex"></bottom-tool> | ||
| 5 | |||
| 6 | <works-list-view | ||
| 7 | v-model="formData" | ||
| 8 | v-if="init" | ||
| 9 | v-show="listVisiabled" | ||
| 10 | v-on:showRule="showRuleHandler" | ||
| 11 | v-on:worksDetail="showWorksDetail" | ||
| 12 | ></works-list-view> | ||
| 13 | |||
| 14 | <member-works-view | ||
| 15 | v-model="memberWorks" | ||
| 16 | v-if="init && !listVisiabled" | ||
| 17 | v-on:back="showWorksList" | ||
| 18 | v-on:praiseSuccess="praiseSuccessHandler" | ||
| 19 | v-on:showShare="shareModelVisiable=true" | ||
| 20 | ></member-works-view> | ||
| 21 | |||
| 22 | <biz-model v-model="model"></biz-model> | ||
| 23 | |||
| 24 | <div class="bottom-line"></div> | ||
| 25 | |||
| 26 | <!-- 分享蒙层 --> | ||
| 27 | <div class="shareModel" v-if="shareModelVisiable" @click="shareModelVisiable = false"> | ||
| 28 | <div class="shareModelContainer"> | ||
| 29 | <div class="shareModelMask"></div> | ||
| 30 | <div class="shareIcon"></div> | ||
| 31 | </div> | ||
| 32 | </div> | ||
| 33 | </div> | ||
| 34 | </template> | ||
| 35 | |||
| 36 | <script> | ||
| 37 | let urls = { | ||
| 38 | myWork: "/jiajiaCHApi/app/works", | ||
| 39 | getWorks: "/jiajiaCHApi/app/works/get" | ||
| 40 | }; | ||
| 41 | |||
| 42 | import { httpGet } from "@/api/fetch-api"; | ||
| 43 | import BottomTool from "@/components/bottom-tools/bottom-tools"; | ||
| 44 | import BizModel from "@/components/biz-model/biz-model"; | ||
| 45 | import headView from "@/components/plugins/head"; | ||
| 46 | import WorksListView from "./components/WorksListView"; | ||
| 47 | import MemberWorksView from "./components/MemberWorksView"; | ||
| 48 | |||
| 49 | import Vue from "vue"; | ||
| 50 | import { Toast } from "vant"; | ||
| 51 | |||
| 52 | Vue.use(Toast); | ||
| 53 | |||
| 54 | export default { | ||
| 55 | name: "home", | ||
| 56 | data() { | ||
| 57 | return { | ||
| 58 | activityIndex: 3, | ||
| 59 | init: false, | ||
| 60 | listVisiabled: true, | ||
| 61 | shareModelVisiable: false, | ||
| 62 | formData: { | ||
| 63 | worksCode: "", | ||
| 64 | name: "", | ||
| 65 | province: "", | ||
| 66 | provinceCode: "", | ||
| 67 | city: "", | ||
| 68 | cityCode: "", | ||
| 69 | profile: "", | ||
| 70 | slogan: "", | ||
| 71 | parentName: "", | ||
| 72 | parentMobile: "", | ||
| 73 | worksList: [] | ||
| 74 | }, | ||
| 75 | model: { | ||
| 76 | show: false, | ||
| 77 | title: "", | ||
| 78 | content: "", | ||
| 79 | index: "default", | ||
| 80 | btnShow: false, | ||
| 81 | btnText: "", | ||
| 82 | confirmHandler: null, | ||
| 83 | labelBtnShow: false, | ||
| 84 | labelBtnText: "", | ||
| 85 | labelBtnHandler: null | ||
| 86 | }, | ||
| 87 | memberWorks: { | ||
| 88 | data: {} | ||
| 89 | } | ||
| 90 | }; | ||
| 91 | }, | ||
| 92 | methods: { | ||
| 93 | initActivity() { | ||
| 94 | Toast.loading({ | ||
| 95 | mask: true, | ||
| 96 | message: "加载中..." | ||
| 97 | }); | ||
| 98 | |||
| 99 | httpGet({ url: urls.myWork }).then(res => { | ||
| 100 | this.init = true; | ||
| 101 | Toast.clear(); | ||
| 102 | this.formData = res.data || {}; | ||
| 103 | if (!res.data) { | ||
| 104 | this.formEdit = true; | ||
| 105 | } else { | ||
| 106 | this.formEdit = false; | ||
| 107 | } | ||
| 108 | }); | ||
| 109 | }, | ||
| 110 | showRuleHandler() { | ||
| 111 | this.model.show = true; | ||
| 112 | this.model.title = "规则说明"; | ||
| 113 | this.model.content = ""; | ||
| 114 | this.model.btnShow = true; | ||
| 115 | this.model.btnText = "我知道了"; | ||
| 116 | this.model.index = "rule"; | ||
| 117 | this.model.confirmHandler = null; | ||
| 118 | this.model.labelBtnShow = false; | ||
| 119 | this.model.labelBtnText = ""; | ||
| 120 | this.model.labelBtnHandler = null; | ||
| 121 | }, | ||
| 122 | showWorksDetail(params) { | ||
| 123 | Toast.loading({ | ||
| 124 | mask: true, | ||
| 125 | message: "数据加载中..." | ||
| 126 | }); | ||
| 127 | httpGet({ url: urls.getWorks, data: params }).then(res => { | ||
| 128 | Toast.clear(); | ||
| 129 | this.memberWorks.data = res.data; | ||
| 130 | this.memberWorks.isMy = res.isMy; | ||
| 131 | console.log("this.memberWorks=== ", this.memberWorks); | ||
| 132 | this.listVisiabled = false; | ||
| 133 | }); | ||
| 134 | }, | ||
| 135 | showWorksList() { | ||
| 136 | this.listVisiabled = true; | ||
| 137 | }, | ||
| 138 | praiseSuccessHandler() {} | ||
| 139 | }, | ||
| 140 | created() { | ||
| 141 | this.initActivity(); | ||
| 142 | }, | ||
| 143 | components: { | ||
| 144 | BottomTool, | ||
| 145 | BizModel, | ||
| 146 | WorksListView, | ||
| 147 | MemberWorksView, | ||
| 148 | headView | ||
| 149 | } | ||
| 150 | }; | ||
| 151 | </script> | ||
| 152 | |||
| 153 | <style lang="scss" scoped> | ||
| 154 | .home { | ||
| 155 | position: relative; | ||
| 156 | text-align: center; | ||
| 157 | background-color: #74cb35; | ||
| 158 | } | ||
| 159 | |||
| 160 | .bottom-line { | ||
| 161 | height: 250px; | ||
| 162 | background-color: transparent; | ||
| 163 | } | ||
| 164 | |||
| 165 | .shareModel { | ||
| 166 | position: fixed; | ||
| 167 | height: 100%; | ||
| 168 | width: 100%; | ||
| 169 | left: 0px; | ||
| 170 | top: 0px; | ||
| 171 | z-index: 9999; | ||
| 172 | } | ||
| 173 | |||
| 174 | .shareModelContainer { | ||
| 175 | position: relative; | ||
| 176 | height: 100%; | ||
| 177 | width: 100%; | ||
| 178 | } | ||
| 179 | |||
| 180 | .shareModelMask { | ||
| 181 | position: absolute; | ||
| 182 | left: 0px; | ||
| 183 | top: 0px; | ||
| 184 | width: 100%; | ||
| 185 | height: 100%; | ||
| 186 | background-color: rgba(0, 0, 0, 0.7); | ||
| 187 | } | ||
| 188 | .shareIcon { | ||
| 189 | position: absolute; | ||
| 190 | top: 0px; | ||
| 191 | right: 30px; | ||
| 192 | width: 425px; | ||
| 193 | height: 220px; | ||
| 194 | background: url(../../assets/imgs/model-share-tip.png) no-repeat; | ||
| 195 | background-size: 100%; | ||
| 196 | } | ||
| 197 | </style> | ... | ... |
| ... | @@ -9,7 +9,8 @@ | ... | @@ -9,7 +9,8 @@ |
| 9 | <div class="swipe"> | 9 | <div class="swipe"> |
| 10 | <van-swipe :autoplay="5000"> | 10 | <van-swipe :autoplay="5000"> |
| 11 | <van-swipe-item v-for="(works, index) in formData.worksList" :key="index"> | 11 | <van-swipe-item v-for="(works, index) in formData.worksList" :key="index"> |
| 12 | <img :src="works.worksUrl" /> | 12 | <!-- <img :src="works.worksUrl" /> --> |
| 13 | <div class="img" v-bind:style="{backgroundImage:'url(' + works.worksUrl + ')'}"></div> | ||
| 13 | </van-swipe-item> | 14 | </van-swipe-item> |
| 14 | </van-swipe> | 15 | </van-swipe> |
| 15 | </div> | 16 | </div> |
| ... | @@ -94,7 +95,7 @@ export default { | ... | @@ -94,7 +95,7 @@ export default { |
| 94 | .post(urls.praise, data) | 95 | .post(urls.praise, data) |
| 95 | .then(res => { | 96 | .then(res => { |
| 96 | Toast.clear(); | 97 | Toast.clear(); |
| 97 | this.$emit("praiseSuccess") | 98 | this.$emit("praiseSuccess"); |
| 98 | }) | 99 | }) |
| 99 | .catch(res => { | 100 | .catch(res => { |
| 100 | let msg = res.data.errMsg; | 101 | let msg = res.data.errMsg; |
| ... | @@ -103,8 +104,8 @@ export default { | ... | @@ -103,8 +104,8 @@ export default { |
| 103 | }, | 104 | }, |
| 104 | showShareHandler() { | 105 | showShareHandler() { |
| 105 | // 出现分享层 | 106 | // 出现分享层 |
| 106 | this.$emit("showShare") | 107 | this.$emit("showShare"); |
| 107 | console.log("show share") | 108 | console.log("show share"); |
| 108 | } | 109 | } |
| 109 | }, | 110 | }, |
| 110 | created() { | 111 | created() { |
| ... | @@ -135,14 +136,16 @@ export default { | ... | @@ -135,14 +136,16 @@ export default { |
| 135 | 136 | ||
| 136 | .swipe { | 137 | .swipe { |
| 137 | width: 630px; | 138 | width: 630px; |
| 138 | height: 320px; | 139 | height: 451px; |
| 139 | margin: auto; | 140 | margin: auto; |
| 140 | border: 2px solid #82acae; | 141 | border: 2px solid #82acae; |
| 141 | border-radius: 30px; | 142 | border-radius: 30px; |
| 143 | overflow: hidden; | ||
| 142 | 144 | ||
| 143 | img { | 145 | .img { |
| 144 | max-height: 300px; | 146 | height: 451px; |
| 145 | max-width: 600px; | 147 | width: 630px; |
| 148 | background-size: cover; | ||
| 146 | } | 149 | } |
| 147 | } | 150 | } |
| 148 | 151 | ||
| ... | @@ -188,7 +191,7 @@ export default { | ... | @@ -188,7 +191,7 @@ export default { |
| 188 | 191 | ||
| 189 | .label { | 192 | .label { |
| 190 | min-width: 128px; | 193 | min-width: 128px; |
| 191 | font-size: 20px; | 194 | font-size: 24px; |
| 192 | text-align: left; | 195 | text-align: left; |
| 193 | } | 196 | } |
| 194 | .msg { | 197 | .msg { |
| ... | @@ -218,7 +221,7 @@ export default { | ... | @@ -218,7 +221,7 @@ export default { |
| 218 | width: 730px; | 221 | width: 730px; |
| 219 | margin: auto; | 222 | margin: auto; |
| 220 | justify-content: space-between; | 223 | justify-content: space-between; |
| 221 | margin-bottom: 200px; | 224 | margin-bottom: 100px; |
| 222 | 225 | ||
| 223 | .sys-btn-02 { | 226 | .sys-btn-02 { |
| 224 | width: 300px; | 227 | width: 300px; | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div class="home"> | 2 | <div class="home"> |
| 3 | <div class="head-leap"></div> | 3 | <head-view></head-view> |
| 4 | 4 | ||
| 5 | <ViewModel | 5 | <ViewModel |
| 6 | v-model="formData" | 6 | v-model="formData" |
| 7 | v-if="init && !formEdit" | 7 | v-if="init && !formEdit" |
| 8 | v-on:edit="formEdit=true" | 8 | v-on:edit="formEdit=true" |
| 9 | v-on:praiseSuccess="showPraiseSuccessModel" | 9 | v-on:praiseSuccess="showPraiseSuccessModel" |
| 10 | v-on:showShare="shareModelVisiable=true" | 10 | v-on:showShare="shareModelVisiable=true" |
| 11 | ></ViewModel> | 11 | ></ViewModel> |
| 12 | <EditModel v-model="formData" v-if="init && formEdit" v-on:submit="showSuccessModel"></EditModel> | 12 | <EditModel v-model="formData" v-if="init && formEdit" v-on:submit="showSuccessModel"></EditModel> |
| 13 | 13 | ||
| 14 | <div class="bottom-line"></div> | 14 | <div class="bottom-line"></div> |
| 15 | 15 | ||
| 16 | <bottom-tool v-model="activityIndex"></bottom-tool> | 16 | <bottom-tool v-model="activityIndex"></bottom-tool> |
| 17 | <biz-model v-model="model"></biz-model> | 17 | <biz-model v-model="model"></biz-model> |
| 18 | <!-- 分享蒙层 --> | 18 | <!-- 分享蒙层 --> |
| 19 | <div class="shareModel" v-if="shareModelVisiable" @click="shareModelVisiable = false"> | 19 | <div class="shareModel" v-if="shareModelVisiable" @click="shareModelVisiable = false"> |
| 20 | <div class="shareModelContainer"> | 20 | <div class="shareModelContainer"> |
| 21 | <div class="shareModelMask"></div> | 21 | <div class="shareModelMask"></div> |
| 22 | <div class="shareIcon"></div> | 22 | <div class="shareIcon"></div> |
| 23 | </div> | ||
| 24 | </div> | 23 | </div> |
| 25 | </div> | 24 | </div> |
| 25 | </div> | ||
| 26 | </template> | 26 | </template> |
| 27 | 27 | ||
| 28 | <script> | 28 | <script> |
| ... | @@ -35,6 +35,7 @@ import BottomTool from "@/components/bottom-tools/bottom-tools"; | ... | @@ -35,6 +35,7 @@ import BottomTool from "@/components/bottom-tools/bottom-tools"; |
| 35 | import BizModel from "@/components/biz-model/biz-model"; | 35 | import BizModel from "@/components/biz-model/biz-model"; |
| 36 | import EditModel from "./components/EditModel"; | 36 | import EditModel from "./components/EditModel"; |
| 37 | import ViewModel from "./components/ViewModel"; | 37 | import ViewModel from "./components/ViewModel"; |
| 38 | import headView from "@/components/plugins/head"; | ||
| 38 | 39 | ||
| 39 | import { httpGet, httpPost } from "@/api/fetch-api"; | 40 | import { httpGet, httpPost } from "@/api/fetch-api"; |
| 40 | import AreaList from "@/api/area"; | 41 | import AreaList from "@/api/area"; |
| ... | @@ -146,7 +147,8 @@ export default { | ... | @@ -146,7 +147,8 @@ export default { |
| 146 | BottomTool, | 147 | BottomTool, |
| 147 | EditModel, | 148 | EditModel, |
| 148 | ViewModel, | 149 | ViewModel, |
| 149 | BizModel | 150 | BizModel, |
| 151 | headView | ||
| 150 | }, | 152 | }, |
| 151 | created() { | 153 | created() { |
| 152 | this.initActivity(); | 154 | this.initActivity(); |
| ... | @@ -160,19 +162,24 @@ export default { | ... | @@ -160,19 +162,24 @@ export default { |
| 160 | text-align: center; | 162 | text-align: center; |
| 161 | } | 163 | } |
| 162 | 164 | ||
| 165 | .head-container { | ||
| 166 | position: relative; | ||
| 167 | height: 0px; | ||
| 168 | } | ||
| 169 | |||
| 163 | .head-leap { | 170 | .head-leap { |
| 164 | width: 750px; | 171 | width: 750px; |
| 165 | height: 231px; | 172 | height: 231px; |
| 166 | background: url(../../assets/imgs/head-leap.png); | 173 | background: url(../../assets/imgs/head-leap.png); |
| 167 | background-size: 100%; | 174 | background-size: 100%; |
| 168 | position: fixed; | 175 | position: relative; |
| 169 | left: 0; | 176 | left: 0; |
| 170 | top: 0; | 177 | top: 0; |
| 171 | z-index: 999; | 178 | z-index: 999; |
| 172 | } | 179 | } |
| 173 | 180 | ||
| 174 | .bottom-line { | 181 | .bottom-line { |
| 175 | height: 250px; | 182 | height: 150px; |
| 176 | background-color: transparent; | 183 | background-color: transparent; |
| 177 | } | 184 | } |
| 178 | 185 | ... | ... |
| ... | @@ -38,7 +38,8 @@ module.exports = { | ... | @@ -38,7 +38,8 @@ module.exports = { |
| 38 | 38 | ||
| 39 | // 它支持webPack-dev-server的所有选项 | 39 | // 它支持webPack-dev-server的所有选项 |
| 40 | devServer: { | 40 | devServer: { |
| 41 | host: "192.168.0.101", | 41 | // host: "192.168.0.101", |
| 42 | host: "localhost", | ||
| 42 | port: 9001, // 端口号 | 43 | port: 9001, // 端口号 |
| 43 | https: false, // https:{type:Boolean} | 44 | https: false, // https:{type:Boolean} |
| 44 | open: true, //配置自动启动浏览器 | 45 | open: true, //配置自动启动浏览器 | ... | ... |
-
Please register or sign in to post a comment