vue前端展示了检索的的requirement列表后,通过点击查看主页查看详细requirement信息,然后点击返回后为什么检索列表为空了,以下为详细代码
<!-- -->
<template>
<div>
<div class="tagdiv">
<!-- <el-tag v-for="tag in tags"
:key="tag.label"
:hit="true"
type="success"
style="margin-left:5px;margin-bottom:4px"
size="small"
@close="tagclose(tag)"
closable>{{tag.value}}</el-tag> -->
</div>
<div class="inputdiv">
<!-- @keyup.enter.native="inputchange" -->
<!-- 回车增加标签 -->
<el-input v-model="selectvalue"
style="width:500px;text-align:right"
size="small"
@keyup.enter.native="easySelect"
:placeholder="inputplaceholder">
<el-select v-model="selectchange"
placeholder="检索方向"
slot="prepend"
@change="dropdownchange"
class="selectchange">
<el-option v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-input>
<el-tooltip effect="light"
content="搜索"
placement="top">
<el-button icon="el-icon-search"
style="margin-left:5px"
size="small"
@click="easySelect"
circle></el-button>
</el-tooltip>
<a href="#"
target="_self"
rel="noopener noreferrer"
style="font-size:90%;margin-left:1%;"
@click="highselect = true">高级检索</a>
<a href="#"
target="_self"
rel="noopener noreferrer"
style="font-size:90%;margin-left:1%;"
@click="resetdata">重置</a>
</div>
<!-- 搜索结果条数 -->
<div style="margin-top:0.5%;margin-bottom:1%;font-size:85%;">
搜索结果
<span style="margin-left:1%;margin-right:1%;color:green;"> {{count}} </span> 条
<span style="color:rgba(36, 36, 196, 0.925)">{{title}}</span>
</div>
<!-- 表格 -->
<el-table id="el-table"
:data="tableData"
border
max-height="500"
:header-cell-class-name="headerRow"
:cell-class-name="cellClass"
:row-style="{height:'40px'}"
:cell-style="{padding:'7px 0'}">
<el-table-column type="expand">
<template slot-scope="props">
<el-form label-position="left"
class="demo-table-expand">
<el-form-item label="需求时间:">
<span style="white-space: pre-line !important;display: inline-block;font-size:85%;text-align:left"
v-html="props.row.requirementtime"></span>
</el-form-item>
<el-form-item label="需求背景:">
<span style="white-space: pre-line !important;display: inline-block;font-size:85%;text-align:left"
v-html="props.row.requirementbackground"></span>
</el-form-item>
<el-form-item label="需求内容:">
<span style="white-space: pre-line !important;display: inline-block;font-size:85%;text-align:left"
v-html="props.row.requirementcontents"></span>
</el-form-item>
<el-form-item label="需求描述:">
<span style="white-space: pre-line !important;display: inline-block;font-size:85%;text-align:left"
v-html="props.row.requirementdescribe"></span>
</el-form-item>
<el-form-item label="允收标准:">
<span style="white-space: pre-line !important;display: inline-block;font-size:85%;text-align:left"
v-html="props.row.acceptstandard"></span>
</el-form-item>
<el-form-item label="技术寻源:">
<span style="white-space: pre-line !important;display: inline-block;font-size:85%;text-align:left"
v-html="props.row.technicalsource"></span>
</el-form-item>
</el-form>
</template>
</el-table-column>
<el-table-column prop="id"
label="ID"
width="50"
align="center">
</el-table-column>
<!-- <el-table-column prop="achievements"
label="科研成果"
width="100"
align="center">
</el-table-column> -->
<el-table-column prop="requirement"
label="需求名称"
width="300"
align="center">
<template slot-scope="props">
<span v-html="props.row.requirement"></span>
</template>
</el-table-column>
<el-table-column prop="department"
label="需求组织"
width="200"
align="center">
<template slot-scope="props">
<span v-html="props.row.department"></span>
</template>
</el-table-column>
<!-- <el-table-column prop="researchdirector"
label="研究方向"
width="250"
align="center">
</el-table-column> -->
<el-table-column prop="liaisonman"
label="需求联系人"
width="150"
align="center">
<template slot-scope="props">
<span v-html="props.row.liaisonman"></span>
</template>
</el-table-column>
<el-table-column prop="telphone"
label="联系方式"
width="150"
align="center">
</el-table-column>
<el-table-column prop="technicalfield"
label="技术领域/关键词"
align="center">
<template slot-scope="props">
<span v-html="props.row.technicalfield"></span>
</template>
</el-table-column>
<el-table-column prop="budget"
label="预算"
width="150"
align="center">
</el-table-column>
<el-table-column prop="requirementtime"
label="需求提出时间"
width="200"
align="center">
</el-table-column>
<!-- <el-table-column prop="technicalsource"
label="技术寻源"
align="center">
</el-table-column> -->
<!-- <el-table-column prop="cooperation"
label="是否合作"
width="120"
align="center">
<template slot-scope="props">
<span> {{props.row.iscooperated === 0 ? '否':'是'}} </span>
</template>
</el-table-column> -->
<el-table-column label="操作"
width="130"
align="center">
<template slot-scope="scope">
<el-button type="primary"
size="mini"
icon="el-icon-user"
style="margin-left:10px"
@click="gotorequirementinfo(scope.$index, scope.row)"
slot="reference">查看主页</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页插件 -->
<el-pagination style="right:45%;position:absolute;margin-top:1%"
background
layout="prev, pager, next,jumper"
:page-size="7"
@current-change="pageChange"
:current-page.sync="currentPage"
:total="page">
</el-pagination>
<!-- 高级搜索选项 -->
<el-dialog title="高级搜索"
:visible.sync="highselect"
width="35%"
:close-on-click-modal="false"
center>
<span style="font-size:100%;font-weight:bold;">需求名称:</span>
<el-autocomplete popper-class="my-autocomplete"
v-model="highselectvalue.requirement"
size="small"
style="width:220px"
placeholder="需求名称"
@keyup.enter.native="highselectfunction"
id="requirement">
<template slot-scope="{ item }">
<div class="name">{{ item.value }}</div>
</template>
</el-autocomplete>
<br><br>
<span style="font-size:100%;font-weight:bold">需求组织:</span>
<el-autocomplete popper-class="my-autocomplete"
v-model="highselectvalue.department"
:fetch-suggestions="querySearch"
size="small"
style="width:220px"
placeholder="中心/部门/科室"
@keyup.enter.native="highselectfunction"
id="department">
<template slot-scope="{ item }">
<div class="name">{{ item.value }}</div>
</template>
</el-autocomplete>
<br><br>
<span style="font-size:100%;font-weight:bold">需求联系人:</span>
<el-input class="inputnormal"
size="small"
style="width:320px;"
placeholder="需求联系人"
@keyup.enter.native="highselectfunction"
v-model="highselectvalue.liaisonman">
</el-input>
<br><br>
<span style="font-size:100%;font-weight:bold">需求类型:</span>
<el-input class="inputnormal"
size="small"
style="width:320px;"
placeholder="需求类型"
@keyup.enter.native="highselectfunction"
v-model="highselectvalue.requirementtype">
</el-input>
<br><br>
<span style="font-size:100%;font-weight:bold">需求方向:</span>
<el-input class="inputnormal"
size="small"
style="width:320px;"
placeholder="需求方向搜索项"
@keyup.enter.native="highselectfunction"
v-model="highselectvalue.requirementcontents">
</el-input>
<span slot="footer"
class="dialog-footer">
<el-button @click="highselect = false"
size="mini">取 消</el-button>
<el-button type="primary"
@click="highselectfunction()"
size="mini">检索</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { request } from "../../network/request";
import router from '../../router';
export default {
name: 'requirementview',
data () {
return {
options: [
{
label: '需求名称',
value: '需求名称'
},
{
label: '需求组织',
value: '需求组织'
},
{
label: '需求联系人',
value: '需求联系人'
},
{
label: '需求类型',
value: '需求类型'
},
{
label: '需求方向',
value: '需求方向'
},
],
selectchange: '需求名称',
selectFieldType: 'requirement',
selectvalue: '',
inputplaceholder: '请输入搜索需求名称内容,内容不能为空',
tags: [],
highselect: false,
highselectvalue: {
requirement: '',
department: '',
liaisonman: '',
requirementtype: '',
requirementcontents: ''
},
requirementinfoList: [],
tableData: [],
count: 0,
page: 1,
title: '',
selectDirecat: '需求名称',
departments: [],
currentPage: 1,
show: false,
}
},
methods: {
headerRow (row, column, rowIndex, columnIndex) {
return 'headerRow';
},
cellClass (row, column, rowIndex, columnIndex) {
return 'cellClass';
},
createFilter (queryString) {
return (labelValue) => {
return (labelValue.value.toLowerCase().indexOf(queryString.toLowerCase()) >= 0);
};
},
// 需求组织的输入建议
querySearch (queryString, cb) {
var departments = this.departments;
var results = queryString ? departments.filter(this.createFilter(queryString)) : departments;
// 调用 callback 返回建议列表的数据
cb(results);
},
// querydepartments (queryString, cb) {
// let department = [];
// for (let i = 0; i < this.departments.length; i++) {
// let label = this.departments[i].label
// if (this.highselectvalue.department === label) {
// department = this.departments[i].labels;
// break;
// }
// }
// if (department.length === 0) department = [{ 'value': '无匹配输入建议' }]
// var results = queryString ? department.filter(this.createFilter(queryString)) : department;
// clearTimeout(this.timeout);
// this.timeout = setTimeout(() => {
// cb(results);
// }, 1000 * Math.random());
// },
//获得组织信息
loadAll () {
let config = {
url: '/requirement/requirementinfo/department',
method: 'post',
}
request(config).then(
res => {
this.departments = res.data.data[0];
},
).catch(
err => {
this.$message({
showClose: true,
message: "获取需求组织失败",
type: "error"
});
}
)
},
dropdownchange (value) {
this.tags = [];
this.inputplaceholder = "请输入搜索" + value + "内容,内容不能为空";
//搜索方向 - 后台 FieldType
switch (value) {
case "需求名称":
this.selectFieldType = 'requirement';
this.selectDirecat = '需求名称';
break;
case "需求组织":
this.selectFieldType = 'department';
this.selectDirecat = '需求组织';
break;
case "需求联系人":
this.selectFieldType = 'liaisonman';
this.selectDirecat = '需求联系人';
break;
case "需求类型":
this.selectFieldType = 'requirementtype';
this.selectDirecat = '需求类型';
break;
case "需求方向":
this.selectFieldType = 'requirementcontents';
this.selectDirecat = '需求方向';
break;
}
},
inputchange () {
let tagtemp = {
label: this.selectvalue,
value: this.selectvalue
};
this.tags.push(tagtemp);
this.selectvalue = '';
},
//tag删除功能
tagclose (tag) {
this.tags.splice(this.tags.indexOf(tag), 1);
},
resetdata () {
Object.assign(this.$data.highselectvalue, this.$options.data().highselectvalue).assign;
// Object.assign(this.$data.selectvalue, this.$options.data().selectvalue);
this.selectvalue = '';
this.selectFieldType = 'requirement';
this.selectchange = '需求名称';
this.selectDirecat = '需求名称';
},
//高级搜索功能
highselectfunction () {
if (this.highselectvalue.requirement == '' && this.highselectvalue.department == ''
&& this.highselectvalue.liaisonman == '' && this.highselectvalue.requirementcontents == ''
&& this.highselectvalue.requirementtype == ''
) {
this.highselect = false;
return;
}
let config = {
url: "/requirement/select/highselect",
method: "get",
params: this.highselectvalue
}
request(config).then(
res => {
this.requirementinfoList = res.data.list;
this.tableData = this.requirementinfoList[0];
this.count = res.data.data.count;
this.page = res.data.data.count;
this.currentPage = 1;
this.highselect = false;
this.title = "( [高级搜索] "
+ (this.highselectvalue.requirement == '' ? '' : '需求名称:' + this.highselectvalue.requirement)
+ (this.highselectvalue.department == '' ? '' : ',需求组织:' + this.highselectvalue.department)
+ (this.highselectvalue.liaisonman == '' ? '' : ',需求联系人:' + this.highselectvalue.liaisonman)
+ (this.highselectvalue.requirementtype == '' ? '' : ',需求类型:' + this.highselectvalue.requirementtype)
+ (this.highselectvalue.requirementcontents == '' ? '' : ',需求方向:' + this.highselectvalue.requirementcontents)
+ ' )'
// this.title = "( " + this.selectDirecat + ":" + this.selectvalue + " )"
}
)
},
easySelect () {
if (this.selectvalue == '' || this.selectvalue == null) {
return;
}
let params = {
FieldType: this.selectFieldType,
queryMsg: this.selectvalue
}
let config = {
url: "/requirement/select/simpleselect",
method: "get",
params: params
}
request(config).then(
res => {
this.requirementList = res.data.list;
this.tableData = this.requirementList[0];
this.count = res.data.data.count;
this.page = res.data.data.count;
this.title = "( " + this.selectDirecat + ":" + this.selectvalue + " )";
this.currentPage = 1;
}
)
},
pageChange (val) {
this.tableData = this.requirementList[val - 1]; //索引需要减一
},
gotorequirementinfo (index, row) {
//教师姓名被标红的话会增加不必要的字符串
let requirement = row.requirement;
// requirement = requirement.replace("<b><font color='red'>", '');
// requirement = requirement.replace("</font></b>", '');
requirement = requirement.replace(/<\/?b>|<font color='red'>|<\/font>/g, '');
router.push('/requirementviewinfo/' + row.id + '&' + requirement);
},
},
mounted () {
this.loadAll();
},
}
</script>
<style scoped>
.selectchange {
width: 105px;
/* font-weight: bold; */
font-size: 110%;
color: rgba(53, 48, 48, 0.993);
}
.tagdiv {
margin-bottom: 3px;
min-height: 12px;
text-align: center;
}
.inputdiv {
text-align: center;
}
.inputnormal {
width: 30%;
}
#el-table >>> .headerRow {
/* height: 28px!important; */
font-size: 80%;
color: black;
font-weight: bold;
/* color: rgba(36, 36, 196, 0.925); */
/* background-color: cadetblue; */
}
#el-table >>> .cellClass {
font-size: 75%;
}
#el-table >>> .cellClass .cell {
white-space: pre-line !important;
}
.demo-table-expand {
font-size: 0;
text-align: left;
}
.demo-table-expand label {
width: 90px;
color: #99a9bf;
}
.demo-table-expand .el-form-item {
margin-right: 0;
margin-bottom: 0;
width: 100%;
}
</style>
<!-- -->
<template>
<div>
<el-container>
<el-aside width="150px"
class="leftdiv">
<el-page-header @back="goBack"
class="backheader"
content="">
</el-page-header>
</el-aside>
</el-container>
<el-container>
<el-main style="padding:10px">
<!-- 组件缓存 -->
<keep-alive>
<!-- 动态组件 -->
<component :is="tabComponent"
style="margin-left: 2%;min-height:550px"
ref="requirementinfocomponent"
@normalinfotest="normalinfochange"
:requirementinfo="requirementinfo" :visitexcelData="visitexcelData"></component>
</keep-alive>
</el-main>
</el-container>
</div>
</template>
<script>
import { request } from "../../network/request";
import requirementinfocomponent from '@/components/teacher/teacherpersoncomponent/requirementinfocomponent'
import test from '@/components/test/test'
import router from '../../router';
export default {
components: { requirementinfocomponent, test},
props: { id: String, requirement: String },
data () {
return {
requirementinfo: {
id: '',
requirement: '',
department: '',
liaisonman: '',
telphone: '',
requirementtype: 0,
technicalfield:'',
requirementtime: '',
requirementbackground : '',
requirementdescribe : '',
requirementcontents: '',
acceptstandard: '',
budget: '',
assessment:'',
technicalsource: '',
visitexcel: '',
// visitexcelData:[],
},
// visitexcelData:[],
technicalsourcetable:[],
tabComponent: requirementinfocomponent,
}
},
methods: {
getRequirement () {
if (this.id == undefined || this.requirement == undefined) {
router.go(-1);
}
const loading = this.$loading({
lock: true,
text: '加载信息中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
let config = {
url: "/requirement/requirementinfo/requirementinfoget",
method: "post",
data: {
id: this.id,
requirement: this.requirement
}
}
request(config).then(
res => {
this.requirementinfo = res.data.data;
// this.fetchtechnicalsourceInfo();
loading.close();
}
).catch(err => {
loading.close();
this.$message({
showClose: true,
message: err.data.message,
type: "error"
});
})
},
getfilenames () {
this.visitexcelData = [];//表格内容置空,然后在插入
let param = {
id: this.id,
requirement: this.requirement,
filetype: "附件"
}
// console.log('getfilenames 返回的教师信息1:', this.requirementinfo);
let config = {
url: "/requirement/requirementinfo/getRequirementFileTableData",
method: "get",
params: param
}
request(config).then(
res => {
let data = res.data;
let fileNameList = data.list;
for (let i = 0; i < fileNameList.length; i++) {
let tempname = { fileName:fileNameList[i] };
this.visitexcelData.push(tempname);
}
// console.log('API 返回的教师信息:', this.visitexcelData);
})
},
goBack () {
// router.go(-1);
window.history.back();
},
normalinfochange (data) {
let config = {
url: "/requirement/requirementinfo/requirementinfoupdate",
method: "post",
data: data
}
request(config).then(
res => {
this.requirementinfo.liaisonman = data.liaisonman == '' ? this.requirementinfo.liaisonman : data.liaisonman;
this.requirementinfo.telphone = data.telphone == '' ? this.requirementinfo.telphone : data.telphone;
this.requirementinfo.requirementbackground = data.requirementbackground == '' ? this.requirementinfo.requirementbackground : data.requirementbackground;
this.requirementinfo.requirementdescribe = data.requirementdescribe == '' ? this.requirementinfo.requirementdescribe : data.requirementdescribe;
this.requirementinfo.requirementcontents = data.requirementcontents == '' ? this.requirementinfo.requirementcontents : data.requirementcontents;
this.requirementinfo.acceptstandard = data.acceptstandard == '' ? this.requirementinfo.acceptstandard : data.acceptstandard;
this.requirementinfo.budget = data.budget == '' ? this.requirementinfo.budget : data.budget;
this.requirementinfo.technicalsource = data.technicalsource == '' ? this.requirementinfo.technicalsource : data.technicalsource;
this.$message({
showClose: true,
message: "更新成功",
type: "success",
duration: 10000
});
// this.fetchtechnicalsourceInfo();
}
).catch(err => {
this.$message({
showClose: true,
message: "更新失败,请稍候重试",
type: "error",
duration: 10000
});
})
},
},
created: function () {
this.getRequirement();
this.getfilenames();
},
beforeCreate: function () {
},
}
</script>
<style scoped>
.leftdiv {
height: 30px;
}
.backheader {
/* font-weight: bold; */
font-size: 120%;
/* position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 1000;
background-color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); */
}
.backheader:hover {
color: rgb(35, 167, 167);
}
</style>