| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- <template>
- <z-paging
- class="content-page-wrap flex-column"
- ref="paging"
- v-model="videoList"
- @query="getSearchList"
- :refresher-enabled="false"
- :default-page-size="50"
- >
- <template #top>
- <view class="search-box flex-left">
- <u-icon
- name="arrow-left"
- color="#000E08"
- size="40rpx"
- @tap="goBack"
- bold
- style="margin-right: 12rpx"
- ></u-icon>
- <u-input
- placeholder="电影 / 电视剧 / 动漫"
- v-model="keyword"
- height="72rpx"
- clearable
- @change="keywordInput"
- @clear="search"
- ref="inputRef"
- focus
- >
- </u-input>
- <view @click="search" class="input-right"> 搜索 </view>
- </view>
- <u-tabs
- style="padding: 0 32rpx"
- v-if="videoList.length > 0"
- :list="tabList"
- keyName="title"
- lineWidth="0"
- lineHeight="0"
- :activeStyle="{
- color: '#000000',
- fontWeight: 'bold',
- transform: 'scale(1.05)',
- fontSize: '40rpx',
- }"
- :inactiveStyle="{
- color: '#717171',
- transform: 'scale(1)',
- fontSize: '30rpx',
- }"
- itemStyle="padding: 0 42rpx 0 0; height: 70rpx;"
- @click="setTabSelect"
- ></u-tabs>
- </template>
- <!-- <view class="suggest-box" v-if="keyword && isSearch">
- <view
- class="search-row flex-left"
- v-for="(item, index) in showSearchList"
- @click="goVideo(item.title)"
- >
- <u-icon name="search" color="#D0D0D0" size="24"></u-icon>
- <view class="title" v-html="item.showTitle"></view>
- </view>
- </view> -->
- <view class="search-main">
- <view
- v-for="(item, index) in showSearchList"
- class="row-box flex"
- @click="goPlayVideo(item)"
- >
- <image :src="item.img" mode="aspectFill"></image>
- <view class="right-content flex_1">
- <h4 v-html="item.showTitle"></h4>
- <text>{{ item.desc }}</text>
- <view class="flex">
- <view class="tag">{{
- (
- tabList.find(
- (items) => items.type == item.tag
- ) || {}
- ).title
- }}</view>
- </view>
- </view>
- </view>
- </view>
- </z-paging>
- </template>
- <script>
- import { hightLight } from "@/utils/hightLight";
- import { searchListPackage } from "@/utils/apiMethods.js";
- export default {
- data() {
- return {
- keyword: "",
- videoList: [],
- isSearch: true,
- tabList: [
- {
- title: "全部",
- type: "",
- },
- {
- title: "电影",
- type: "电影",
- },
- {
- title: "连续剧",
- type: "剧集",
- },
- {
- title: "动漫",
- type: "动漫",
- },
- {
- title: "综艺",
- type: "综艺纪录",
- },
- {
- title: "短剧",
- type: "短剧",
- },
- ],
- tabIndex: 0,
- };
- },
- // mounted() {
- // this.$nextTick(() => {
- // document.querySelector('input').focus();
- // });
- // },
- computed: {
- showSearchList() {
- let vm = this;
- let data = [];
- if (vm.keyword) {
- vm.videoList.map((item) => {
- item.showTitle = hightLight(vm.keyword, item.title);
- if (
- vm.tabIndex == 0 ||
- vm.tabList[vm.tabIndex].type == item.tag
- ) {
- data.push(item);
- }
- });
- }
- return data;
- },
- },
- methods: {
- search() {
- let vm = this;
- vm.videoList = [];
- vm.$refs.paging.reload();
- // vm.getSearchList();
- },
- keywordInput(val) {
- let vm = this;
- if (val) {
- uni.$u.debounce(vm.search, 500);
- } else {
- vm.search();
- }
- },
- setTabSelect(data) {
- let vm = this;
- vm.tabIndex = data.index;
- },
- // 搜索视频列表
- getSearchList(pageNo = 1) {
- let vm = this;
- // uni.showLoading({
- // title: "搜索中",
- // });
- uni.request({
- url: "https://www.keke1.app/search", // 接口地址
- method: "GET",
- data: {
- k: vm.keyword,
- page: pageNo,
- },
- success: (res) => {
- // uni.hideLoading();
- vm.$refs.paging.complete(searchListPackage(res.data));
- },
- fail: (err) => {
- uni.hideLoading();
- vm.$refs.paging.complete(false);
- console.log(err);
- },
- });
- },
- // goVideo(val) {
- // let vm = this;
- // vm.isSearch = false;
- // vm.keyword = val;
- // vm.search();
- // },
- goPlayVideo(row) {
- uni.reLaunch({
- url: "/pages/play/play?url=" + row.url,
- });
- },
- goBack() {
- uni.navigateBack();
- },
- },
- };
- </script>
- <style lang="scss" scoped>
- .search-box {
- margin: 28rpx;
- z-index: 2;
- }
- .suggest-box {
- height: 100%;
- width: 100%;
- padding: 0 28rpx;
- .search-row {
- border-bottom: 2rpx solid #e1e1e1;
- padding: 16rpx 8rpx;
- .title {
- color: #000e08;
- font-size: 28rpx;
- margin-left: 14rpx;
- font-weight: bold;
- }
- }
- }
- .search-main {
- margin-top: 32rpx;
- .row-box {
- margin-bottom: 40rpx;
- image {
- width: 140rpx;
- height: 196rpx;
- border-radius: 16rpx;
- }
- .right-content {
- margin-left: 22rpx;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- flex: 1;
- text {
- color: #717171;
- font-size: 24rpx;
- overflow: hidden;
- text-overflow: ellipsis;
- display: -webkit-box;
- -webkit-line-clamp: 2;
- -webkit-box-orient: vertical;
- }
- .tag {
- height: 56rpx;
- background: #d0f8dd;
- border-radius: 8rpx;
- padding: 0 18rpx;
- display: flex;
- align-items: center;
- font-weight: bold;
- font-size: 28rpx;
- color: #1dbc46;
- }
- }
- }
- }
- </style>
|