Showing
2 changed files
with
166 additions
and
106 deletions
| ... | @@ -4,103 +4,128 @@ import _ from 'lodash' | ... | @@ -4,103 +4,128 @@ import _ from 'lodash' |
| 4 | import { Toast } from 'vant'; | 4 | import { Toast } from 'vant'; |
| 5 | 5 | ||
| 6 | export const useVideoList = ($route) => { | 6 | export const useVideoList = ($route) => { |
| 7 | - // 切换视频语言 | 7 | + // 切换视频语言 |
| 8 | - const checkMandarin = ref(true); // 普通话选项卡 | 8 | + const checkMandarin = ref(true); // 普通话选项卡 |
| 9 | - const checkLocalism = ref(false); // 方言选项卡 | 9 | + const checkLocalism = ref(false); // 方言选项卡 |
| 10 | - const chooseLanguage = ref({ text: '普通话', val: '普通话' }); // 默认选中普通话 | 10 | + const chooseLanguage = ref({ text: '普通话', val: '普通话' }); // 默认选中普通话 |
| 11 | - const toggleLanguage = () => { | 11 | + /** |
| 12 | - checkMandarin.value = !checkMandarin.value; | 12 | + * 切换视频语言回调 |
| 13 | - checkLocalism.value = !checkLocalism.value; | 13 | + * @param {*} type |
| 14 | - // 修改默认语言绑定数据 | 14 | + */ |
| 15 | - if (checkLocalism.value) { | 15 | + const toggleLanguage = (type) => { |
| 16 | - // tslint:disable-next-line:no-string-literal | 16 | + if (type === 'mandarin') { |
| 17 | - chooseLanguage.value = { text: columns[0]['text'], val: columns[0]['val'] } | 17 | + checkMandarin.value = true; |
| 18 | - } else { | 18 | + checkLocalism.value = false; |
| 19 | - chooseLanguage.value = { text: '普通话', val: '普通话' }; | 19 | + } else { |
| 20 | - } | 20 | + checkMandarin.value = false; |
| 21 | - // 切换语言需要更新列表数据 | 21 | + checkLocalism.value = true; |
| 22 | - offset.value = 0 | 22 | + } |
| 23 | - prod_list.value = [] | 23 | + // 修改默认语言绑定数据 |
| 24 | - loading.value = true; | 24 | + if (checkLocalism.value) { |
| 25 | - finished.value = false; | 25 | + // tslint:disable-next-line:no-string-literal |
| 26 | - onLoad() | 26 | + chooseLanguage.value = { text: columns[0]['text'], val: columns[0]['val'] } |
| 27 | + } else { | ||
| 28 | + chooseLanguage.value = { text: '普通话', val: '普通话' }; | ||
| 27 | } | 29 | } |
| 28 | - // 方言选择项 | 30 | + // 切换语言需要更新列表数据 |
| 29 | - const columns = [ | 31 | + onReload() |
| 30 | - { text: '所有方言', val: '所有方言' }, | 32 | + } |
| 31 | - { text: '沪语', val: '沪语' }, | ||
| 32 | - { text: '粤语', val: '粤语' }, | ||
| 33 | - ]; | ||
| 34 | 33 | ||
| 35 | - const showPicker = ref(false); | 34 | + // 方言选择项 |
| 35 | + const columns = [ | ||
| 36 | + { text: '所有方言', val: '所有方言' }, | ||
| 37 | + { text: '上海话', val: '上海话' }, | ||
| 38 | + { text: '广东话', val: '广东话' }, | ||
| 39 | + ]; | ||
| 36 | 40 | ||
| 37 | - const onConfirm = ({ selectedOptions }) => { | 41 | + const showPicker = ref(false); |
| 38 | - showPicker.value = false; | 42 | + |
| 39 | - chooseLanguage.value = { | 43 | + /** |
| 40 | - text: selectedOptions[0].text, | 44 | + * 选择方言确认后回调 |
| 41 | - val: selectedOptions[0].val | 45 | + * @param {*} param |
| 42 | - } | 46 | + */ |
| 43 | - }; | 47 | + const onConfirm = ({ selectedOptions }) => { |
| 48 | + showPicker.value = false; | ||
| 49 | + chooseLanguage.value = { | ||
| 50 | + text: selectedOptions[0].text, | ||
| 51 | + val: selectedOptions[0].val | ||
| 52 | + } | ||
| 53 | + onReload() | ||
| 54 | + }; | ||
| 44 | 55 | ||
| 45 | - // 绑定页面数据 | 56 | + // 绑定页面数据 |
| 46 | - const bookInfo = ref(''); | 57 | + const bookInfo = ref(''); |
| 47 | - // tslint:disable-next-line: variable-name | 58 | + // tslint:disable-next-line: variable-name |
| 48 | - const prod_list = ref([]); | 59 | + const prod_list = ref([]); |
| 49 | - const limit = ref(1) | 60 | + const limit = ref(10) |
| 50 | - const offset = ref(0) | 61 | + const offset = ref(0) |
| 51 | 62 | ||
| 52 | - // 处理书籍下作品列表 | 63 | + // 处理书籍下作品列表 |
| 53 | - const loading = ref(false); | 64 | + const loading = ref(false); |
| 54 | - const finished = ref(false); | 65 | + const finished = ref(false); |
| 55 | 66 | ||
| 56 | - const onLoad = () => { | 67 | + /** |
| 57 | - // 异步更新数据 | 68 | + * 向下滚动查询数据 |
| 58 | - axios.get('/srv/?a=book_info', { | 69 | + */ |
| 59 | - params: { | 70 | + const onLoad = () => { |
| 60 | - book_id: $route.query.id, | 71 | + // 异步更新数据 |
| 61 | - localism_type: chooseLanguage.value.text, | 72 | + axios.get('/srv/?a=book_info', { |
| 62 | - limit: limit.value, | 73 | + params: { |
| 63 | - offset: offset.value | 74 | + book_id: $route.query.id, |
| 64 | - } | 75 | + localism_type: chooseLanguage.value.text, |
| 65 | - }) | 76 | + limit: limit.value, |
| 66 | - .then(res => { | 77 | + offset: offset.value |
| 67 | - if (res.data.code === 1) { | 78 | + } |
| 68 | - bookInfo.value = res.data.data; | 79 | + }) |
| 69 | - prod_list.value = _.concat(prod_list.value, res.data.data.prod_list); | 80 | + .then(res => { |
| 70 | - offset.value = prod_list.value.length; | 81 | + if (res.data.code === 1) { |
| 71 | - loading.value = false; | 82 | + bookInfo.value = res.data.data; |
| 72 | - // 数据全部加载完成 | 83 | + prod_list.value = _.concat(prod_list.value, res.data.data.prod_list); |
| 73 | - if (!res.data.data.prod_list.length) { | 84 | + offset.value = prod_list.value.length; |
| 74 | - // 加载状态结束 | 85 | + loading.value = false; |
| 75 | - finished.value = true; | 86 | + // 数据全部加载完成 |
| 76 | - } | 87 | + if (!res.data.data.prod_list.length) { |
| 77 | - } else { | 88 | + // 加载状态结束 |
| 78 | - // tslint:disable-next-line: no-console | 89 | + finished.value = true; |
| 79 | - console.warn(res); | ||
| 80 | - Toast({ | ||
| 81 | - icon: 'close', | ||
| 82 | - message: res.data.msg | ||
| 83 | - }); | ||
| 84 | } | 90 | } |
| 85 | - }) | 91 | + } else { |
| 86 | - .catch(err => { | ||
| 87 | // tslint:disable-next-line: no-console | 92 | // tslint:disable-next-line: no-console |
| 88 | - console.error(err); | 93 | + console.warn(res); |
| 89 | - }) | 94 | + Toast({ |
| 90 | - }; | 95 | + icon: 'close', |
| 96 | + message: res.data.msg | ||
| 97 | + }); | ||
| 98 | + } | ||
| 99 | + }) | ||
| 100 | + .catch(err => { | ||
| 101 | + // tslint:disable-next-line: no-console | ||
| 102 | + console.error(err); | ||
| 103 | + }) | ||
| 104 | + }; | ||
| 91 | 105 | ||
| 92 | - return { | 106 | + /** |
| 93 | - toggleLanguage, | 107 | + * 重载刷新程序 |
| 94 | - onLoad, | 108 | + */ |
| 95 | - columns, | 109 | + const onReload = () => { |
| 96 | - prod_list, | 110 | + offset.value = 0 |
| 97 | - finished, | 111 | + prod_list.value = [] |
| 98 | - loading, | 112 | + loading.value = true; |
| 99 | - bookInfo, | 113 | + finished.value = false; |
| 100 | - showPicker, | 114 | + onLoad() |
| 101 | - checkLocalism, | 115 | + } |
| 102 | - checkMandarin, | 116 | + |
| 103 | - onConfirm, | 117 | + return { |
| 104 | - chooseLanguage | 118 | + toggleLanguage, |
| 105 | - } | 119 | + onLoad, |
| 120 | + columns, | ||
| 121 | + prod_list, | ||
| 122 | + finished, | ||
| 123 | + loading, | ||
| 124 | + bookInfo, | ||
| 125 | + showPicker, | ||
| 126 | + checkLocalism, | ||
| 127 | + checkMandarin, | ||
| 128 | + onConfirm, | ||
| 129 | + chooseLanguage | ||
| 130 | + } | ||
| 106 | } | 131 | } | ... | ... |
| ... | @@ -36,10 +36,10 @@ | ... | @@ -36,10 +36,10 @@ |
| 36 | <div class="book-video-language"> | 36 | <div class="book-video-language"> |
| 37 | <van-row> | 37 | <van-row> |
| 38 | <van-col span="6"> | 38 | <van-col span="6"> |
| 39 | - <div @click="toggleLanguage" :class="[checkMandarin ? 'checked' : 'uncheck']">普通话</div> | 39 | + <div @click="toggleLanguage('mandarin')" :class="[checkMandarin ? 'checked' : 'uncheck']">普通话</div> |
| 40 | </van-col> | 40 | </van-col> |
| 41 | <van-col span="6"> | 41 | <van-col span="6"> |
| 42 | - <div @click="toggleLanguage" :class="[checkLocalism ? 'checked' : 'uncheck']">方言</div> | 42 | + <div @click="toggleLanguage('localism')" :class="[checkLocalism ? 'checked' : 'uncheck']">方言</div> |
| 43 | </van-col> | 43 | </van-col> |
| 44 | <van-col span="12" v-if="checkLocalism" @click="showPicker = true"> | 44 | <van-col span="12" v-if="checkLocalism" @click="showPicker = true"> |
| 45 | <div class="choose-wrapper"> | 45 | <div class="choose-wrapper"> |
| ... | @@ -156,10 +156,33 @@ onMounted(() => { | ... | @@ -156,10 +156,33 @@ onMounted(() => { |
| 156 | }) | 156 | }) |
| 157 | }) | 157 | }) |
| 158 | 158 | ||
| 159 | -// 书籍订阅 | 159 | +/** |
| 160 | + * 书籍订阅 | ||
| 161 | + */ | ||
| 160 | let is_subscribe = ref(false); | 162 | let is_subscribe = ref(false); |
| 161 | const onSubscribe = () => { | 163 | const onSubscribe = () => { |
| 162 | - is_subscribe.value = !is_subscribe.value | 164 | + axios.post('/srv/?a=prod_action', { |
| 165 | + action_type: 'like', | ||
| 166 | + prod_id: $route.query.id | ||
| 167 | + }) | ||
| 168 | + .then(res => { | ||
| 169 | + if (res.data.code === 1) { | ||
| 170 | + if (res.data.msg === 'like-add-OK') { | ||
| 171 | + is_subscribe.value = true; | ||
| 172 | + } else { | ||
| 173 | + is_subscribe.value = false; | ||
| 174 | + } | ||
| 175 | + } else { | ||
| 176 | + console.warn(res); | ||
| 177 | + Toast({ | ||
| 178 | + icon: 'close', | ||
| 179 | + message: res.data.msg | ||
| 180 | + }); | ||
| 181 | + } | ||
| 182 | + }) | ||
| 183 | + .catch(err => { | ||
| 184 | + console.error(err); | ||
| 185 | + }) | ||
| 163 | } | 186 | } |
| 164 | 187 | ||
| 165 | // 爱心捐书 | 188 | // 爱心捐书 |
| ... | @@ -172,20 +195,37 @@ const showNotice = ref(false) | ... | @@ -172,20 +195,37 @@ const showNotice = ref(false) |
| 172 | const closeNotice = () => { | 195 | const closeNotice = () => { |
| 173 | showNotice.value = false; | 196 | showNotice.value = false; |
| 174 | } | 197 | } |
| 198 | +/** | ||
| 199 | + * 上传作品回调 | ||
| 200 | + */ | ||
| 175 | const uploadVideo = () => { | 201 | const uploadVideo = () => { |
| 176 | - // 如果没有实名认证需要提示用户实名认证 | 202 | + axios.get('/srv/?a=can_upload') |
| 177 | - showNotice.value = true; | 203 | + .then(res => { |
| 178 | - // 实名认证之后直接跳转上传页面 | 204 | + if (res.data.code === 1) { |
| 205 | + if (res.data.data.can_upload) { | ||
| 206 | + // 实名认证之后直接跳转上传页面 | ||
| 207 | + location.href = 'http://jsj.onwall.cn/f/gZntnp'; | ||
| 208 | + } else { | ||
| 209 | + // 如果没有实名认证需要提示用户实名认证 | ||
| 210 | + showNotice.value = true; | ||
| 211 | + } | ||
| 212 | + } else { | ||
| 213 | + console.warn(res); | ||
| 214 | + Toast({ | ||
| 215 | + icon: 'close', | ||
| 216 | + message: res.data.msg | ||
| 217 | + }); | ||
| 218 | + } | ||
| 219 | + }) | ||
| 220 | + .catch(err => { | ||
| 221 | + console.error(err); | ||
| 222 | + }) | ||
| 179 | } | 223 | } |
| 180 | </script> | 224 | </script> |
| 181 | 225 | ||
| 182 | <script> | 226 | <script> |
| 183 | import mixin from 'common/mixin'; | 227 | import mixin from 'common/mixin'; |
| 184 | 228 | ||
| 185 | -function transCaseList(url, pic) { | ||
| 186 | - return { url, pic } | ||
| 187 | -} | ||
| 188 | - | ||
| 189 | export default { | 229 | export default { |
| 190 | mixins: [mixin.init], | 230 | mixins: [mixin.init], |
| 191 | data() { | 231 | data() { |
| ... | @@ -283,11 +323,6 @@ export default { | ... | @@ -283,11 +323,6 @@ export default { |
| 283 | } | 323 | } |
| 284 | } | 324 | } |
| 285 | } | 325 | } |
| 286 | - | ||
| 287 | - .book-video-list { | ||
| 288 | - // height: 20rem; | ||
| 289 | - // overflow: scroll; | ||
| 290 | - } | ||
| 291 | } | 326 | } |
| 292 | 327 | ||
| 293 | .book-bar { | 328 | .book-bar { | ... | ... |
-
Please register or login to post a comment