<template> <div class="app-container"> <div class="app-header"> <div class="search-logo"></div> <el-input prefix-icon="el-icon-search" placeholder="例如:腾讯" @keyup.enter.native="searchDocument" v-model="search" class="input-with-select"> <el-button slot="append" @click="searchDocument">搜索文档</el-button> </el-input> </div> <div class="content"> <div class="content-left scroll"> <div v-if="loadingLeft" class="content-right-content loading loading-left"> <div class="loading-div"> <i class="el-icon-loading loading-center"></i> <div>加载中...</div> </div> </div> <div class="content-left-center scroll"> <div v-if="!listLeft.length && !loadingLeft" class="not-data">暂无数据</div> <div class="left-content" v-for="(item, index) in listLeft" :key="index"> <div class="left-content-title"> <div class="logo"><img src="../../../assets/image/juliang.png" alt="" class="logo-img"></div> <span class="media text">{{item.name}}</span> <span class="text">更新日期:{{dateFilter(item.createTime)}}</span> </div> <div class="content-text-header"> <a class="link" v-if="item.docUrl" :href="item.docUrl" target="_blank">{{item.title}}</a> <span v-else>{{item.title}}</span> </div> <p class="content-text" v-html="item.docContent"></p> </div> <pagination v-show="queryParamsLeft.pageContent>0 && loadMoreLeft && listLeft.length" :total="queryParamsLeft.pageContent" :page.sync="queryParamsLeft.pageNo" :limit.sync="queryParamsLeft.pageSize" layout="total, prev, pager, next" @pagination="seatchInitLeft" /> <!-- <div class="add-more" v-if="loadMoreLeft && listLeft.length" @click="seatchInitLeft"><span v-if="loadingLeft">加载中</span><span v-else>加载更多</span></div> --> </div> </div> </div> </div> </template> <script> // 接口调用方法 import { documentFindDocument } from "@/api/system/product"; export default { data() { return { search: '', loadingLeft: false, loadMoreLeft: true, queryParamsLeft: { pageNo: 1, pageSize: 10, pageContent: 0 }, listLeft: [] } }, watch: {}, created() { let searchDocument = localStorage.getItem("searchDocument") let searchs = this.$route.params.search if (searchs) { this.search = searchs localStorage.setItem("searchDocument", searchs) this.searchDocument() } else if (searchDocument) { this.search = searchDocument this.searchDocument() } else { this.clearData() } }, computed: { }, methods: { // 搜索 searchDocument() { this.clearData() if (!this.search.trim()) { this.$message({ message: '请输入需要搜索的内容', type: 'warning' }) return } localStorage.setItem("searchDocument", this.search.trim()) this.seatchInitLeft() }, dateFilter(time) { if (!time) { // 当时间是null或者无效格式时我们返回空 return '-' } else { const date = new Date(time) // 时间戳为10位需*1000,时间戳为13位的话不需乘1000 const dateNumFun = (num) => num < 10 ? `0${num}` : num // 使用箭头函数和三目运算以及es6字符串的简单操作。因为只有一个操作不需要{} ,目的就是数字小于10,例如9那么就加上一个0,变成09,否则就返回本身。 // 这是es6的解构赋值。 const [Y, M, D, h, m, s] = [ date.getFullYear(), dateNumFun(date.getMonth() + 1), dateNumFun(date.getDate()), dateNumFun(date.getHours()), dateNumFun(date.getMinutes()), dateNumFun(date.getSeconds()) ] return `${Y}-${M}-${D} ${h}:${m}:${s}` // 一定要注意是反引号,否则无效。 } }, // 搜索左侧 seatchInitLeft() { this.loadingLeft = true let name = this.search let pageindex = this.queryParamsLeft.pageNo let pagesize = this.queryParamsLeft.pageSize documentFindDocument({ name, pageindex, pagesize }) .then(response => { let data = response.content.value if (response.code === 200 && data.length) { let pageContent = this.queryParamsLeft.pageContent if (response.content.totalSize !== pageContent) { this.queryParamsLeft.pageContent = response.content.totalSize || 0 } for (let i = 0; i < data.length; i++) { data[i].docContent = data[i].docContent ? data[i].docContent + '...' : '-' } this.$set(this, 'listLeft', data) } else { this.$set(this, 'listLeft', []) } this.loadingLeft = false }) .catch(error => { this.loadingLeft = false; }); setTimeout(() => { this.loadingLeft = false }, 1000); }, // 数据初始化 clearData() { this.loadMoreLeft = true this.loadingLeft = false this.queryParamsLeft = { pageNo: 1, pageSize: 10, pageContent: 0 } this.listLeft = [] } } } </script> <style scoped lang="scss"> @import '@/views/main.scss'; </style>