| src/components/MainHeader.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/AboutView.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/BatchView.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/HomeView.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/PersonalCenter.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/SeniorView.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/SmartView.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/components/MainHeader.vue
@@ -9,7 +9,8 @@ <li class="item" :class="{secItem:$route.path=='/home'}"> <router-link to="/"><span>首页</span></router-link> </li> <li class="Retrieval item" :class="{secItem:['smart','senior','batch','law','detail'].indexOf($route.name)>=0 }"> <li class="Retrieval item" :class="{secItem:['smart','senior','batch','law','detail'].indexOf($route.name)>=0 }"> <span>检索</span> <ul class="RetrievalShow"> <li> @@ -41,9 +42,12 @@ <li class="patent item"> <span>特色专利数据库</span> <ul class="patentShow"> <li><a href="">人工智能专利数据库</a></li> <li><a href="">人工智能专利数据库</a></li> <li><a href="">人工智能专利数据库</a></li> <!-- --> <li @click="namiSenior()" > <!-- <router-link :to="{path:'/smart',query:{rule:'in',field: 'typeInfoList', name: '纳米产业'}}"> --> 纳米产业专利数据库 <!-- </router-link> --> </li> </ul> </li> <li class="item" :class="{secItem:$route.path=='/analyst'||$route.path=='/analystDetail'}"> @@ -90,9 +94,7 @@ <div class="mask" v-if="maskShow"></div> <div class="loginDialog" v-show="loginShow"> <img src="@/assets/logo.png" alt="" /> <span class="close" @click="(loginShow = false), (maskShow = false)" >X</span > <span class="close" @click="(loginShow = false), (maskShow = false)">X</span> <div class="title"><span class="fontColor">登陆</span>探数狗PIISA</div> <form action="" method="post"> <label for="userName"> @@ -115,32 +117,22 @@ </div> <div class="forgetTel" v-show="forgetShow"> <img src="@/assets/logo.png" alt="" /> <span class="close" @click="(forgetShow = false), (maskShow = false)" >X</span > <span class="close" @click="(forgetShow = false), (maskShow = false)">X</span> <div class="title"><span class="fontColor">忘记</span>密码</div> <input type="tel" v-model="phoneNumber" placeholder="请输入手机号" /> <div class="inputCode"> <input type="text" v-model="checkCode" placeholder="请输入验证码" /><span class="postCode" :class="{disabled:countShow}" @click="getCheckCode" >{{countShow?codeCount:'发送验证码'}}</span > <input type="text" v-model="checkCode" placeholder="请输入验证码" /><span class="postCode" :class="{disabled:countShow}" @click="getCheckCode">{{countShow?codeCount:'发送验证码'}}</span> </div> <input type="passWord" v-model="newPassword" placeholder="请输入新密码" /> <input type="passWord" v-model="confirmPassword" placeholder="请输入确认密码" /> <input type="passWord" v-model="confirmPassword" placeholder="请输入确认密码" /> <div class="ConfirmLogin reset" @click="resetPsd">确认重置</div> <!-- <div class="emailBack"><a>通过邮箱找回</a></div> --> </div> </div> </template> <script> import { postLogin , postLogout , postSendsms , postResetPassword , getUserInfo } from '../api/url_user.js' import { postLogin, postLogout, postSendsms, postResetPassword, getUserInfo } from '../api/url_user.js' import { staticUrl } from '@/utils/constant' export default { data() { @@ -148,99 +140,104 @@ // loginShow: false, forgetShow: false, // maskShow: false, avatar:'', myUsername:localStorage.getItem('username')||'', username:'', password:'', phoneNumber:'', checkCode:'', newPassword:'', confirmPassword:'', codeCount:120, countShow:false, avatar: '', myUsername: localStorage.getItem('username') || '', username: '', password: '', phoneNumber: '', checkCode: '', newPassword: '', confirmPassword: '', codeCount: 120, countShow: false, } }, filters:{ filterName(name){ if(name.length<12){ filters: { filterName(name) { if (name.length < 12) { return name }else{ return name.slice(0,12) + '...' } else { return name.slice(0, 12) + '...' } } }, watch:{ $route(val){ if(val.path == '/home'){ watch: { $route(val) { if (val.path == '/home') { //其他页面导回home时刷新顶部登录状态 this.avatar = localStorage.getItem('user_avatar') ||'' this.myUsername = localStorage.getItem('username')||'' this.avatar = localStorage.getItem('user_avatar') || '' this.myUsername = localStorage.getItem('username') || '' } } }, computed:{ loginShow:{ get(){ computed: { loginShow: { get() { return this.$store.state.loginShow }, set(val){ this.$store.commit('setLoginShow',val) set(val) { this.$store.commit('setLoginShow', val) } }, maskShow:{ get(){ maskShow: { get() { return this.$store.state.maskShow }, set(val){ this.$store.commit('setMaskShow',val) set(val) { this.$store.commit('setMaskShow', val) } } }, mounted() { this.avatar = localStorage.getItem('user_avatar')||'' mounted() { this.avatar = localStorage.getItem('user_avatar') || '' this.checkLogin() }, methods: { namiSenior() { let params ={rule:'in',field: "typeInfoList", name: "纳米产业"} localStorage.setItem('namiParams',JSON.stringify(params)) this.$router.push("/smart") }, showLogin() { this.loginShow = true; this.maskShow = this.loginShow; }, login(type){ login(type) { let params = {} if(type === "IP"){ if (type === "IP") { params = { isIpLogin:true isIpLogin: true } }else{ } else { params = { username:this.username, password:this.password, isIpLogin:false, username: this.username, password: this.password, isIpLogin: false, } } } postLogin(params).then(()=>{ postLogin(params).then(() => { this.getUserInfo() }) }, checkLogin(){ getUserInfo().then(res=>{ }).catch(err=>{ this.myUsername = '' checkLogin() { getUserInfo().then(res => { }).catch(err => { this.myUsername = '' }) }, getUserInfo(){ getUserInfo().then(res=>{ this.myUsername = res.Data.RealName localStorage.setItem('username',this.myUsername) if(res.Data.Avatar){ this.avatar = staticUrl + res.Data.Avatar localStorage.setItem('user_avatar',this.avatar) getUserInfo() { getUserInfo().then(res => { this.myUsername = res.Data.RealName localStorage.setItem('username', this.myUsername) if (res.Data.Avatar) { this.avatar = staticUrl + res.Data.Avatar localStorage.setItem('user_avatar', this.avatar) } this.loginShow = false this.maskShow = false }) }, handleLogout(){ handleLogout() { let that = this this.$confirm({ title: "提示", @@ -248,48 +245,48 @@ okText: "确认", cancelText: "取消", onOk() { postLogout().then(()=>{ postLogout().then(() => { that.myUsername = '' that.avatar = '' }) }, }); }, getCheckCode(){ if(!this.phoneNumber){ getCheckCode() { if (!this.phoneNumber) { this.$message.error('请输入手机号!') return } if(this.countShow) return if (this.countShow) return // this.codeCountDown() postSendsms({ // username:this.username, phoneNumber:this.phoneNumber, }).then(()=>{ phoneNumber: this.phoneNumber, }).then(() => { this.codeCountDown() }) }, codeCountDown(){ codeCountDown() { this.countShow = true let time = window.setInterval(()=>{ let time = window.setInterval(() => { this.codeCount -= 1 if(this.codeCount <= 0 ){ if (this.codeCount <= 0) { this.codeCount = 120 this.countShow = false window.clearInterval(time) } },1000) }, 1000) }, resetPsd(){ if(this.confirmPassword !== this.newPassword){ resetPsd() { if (this.confirmPassword !== this.newPassword) { this.$message.error('密码不一致,请重新输入!') return } postResetPassword({ phoneNumber:this.phoneNumber, code:this.checkCode, password:this.newPassword }).then(res=>{ phoneNumber: this.phoneNumber, code: this.checkCode, password: this.newPassword }).then(res => { console.log(res) }) @@ -304,16 +301,19 @@ } </script> <style lang="scss" scoped> .main-header{ .main-header { min-width: 800px; box-shadow:0 1px 6px 0 hsl(0deg 5% 84% / 50%); box-shadow: 0 1px 6px 0 hsl(0deg 5% 84% / 50%); } input { padding-left: 10px; } input:focus::-webkit-input-placeholder { color: transparent; } .mask { position: fixed; left: 0px; @@ -324,23 +324,26 @@ opacity: 0.298039; z-index: 998; } .forgetTel, .loginDialog, .opened { background-color: #ffffff; width:430px; width: 430px; padding: 20px; position: absolute; top: 100px; left: 35%; z-index: 999; box-shadow: 0px 0px 4px 0px; img { width: 200px; height: 70px; position: absolute; left: 20px; } .title { margin-top: 70px; width: 100%; @@ -348,10 +351,12 @@ height: 50px; line-height: 50px; font-size: 38px; .fontColor { color: #ef8201; } } input { width: 100%; margin-top: 20px; @@ -360,14 +365,17 @@ // color: #cccccc; border-radius: 5px; } input:focus { outline-color: #ef8201; } } .loginDialog { form { width: 100%; } .foget { cursor: pointer; width: 60px; @@ -379,9 +387,11 @@ right: 20px; top: 290px; } .foget:hover { border-bottom: 1px solid #999999; } .ipLogin { cursor: pointer; margin: 10px auto 0; @@ -394,10 +404,12 @@ background-color: rgba(51, 204, 204, 1); line-height: 50px; text-align: center; a { color: #ffffff; } } .enroll { width: 100%; text-align: center; @@ -408,10 +420,12 @@ color: #999999; margin: 10px auto; } .tryout { cursor: pointer; color: #ef8201; } .close { font-size: 20px; border: 1px solid #333333; @@ -423,6 +437,7 @@ right: 20px; text-align: center; } .ConfirmLogin { cursor: pointer; margin: 30px auto 15px; @@ -438,9 +453,11 @@ text-align: center; } } .forgetTel { // position: relative; .close{ .close { width: 30px; height: 30px; position: absolute; @@ -452,6 +469,7 @@ line-height: 30px; text-align: center; } .emailBack { cursor: pointer; color: #ef8201; @@ -459,15 +477,19 @@ right: 20px; bottom: 30px; border-bottom: 1px solid #ffffff; a { color: #ef8201; } } .emailBack:hover { border-color: #ef8201; } .inputCode { position: relative; .postCode { cursor: pointer; width: 30%; @@ -482,12 +504,14 @@ top: 20px; line-height: 50px; text-align: center; &.disabled{ &.disabled { cursor: not-allowed; background-color: #c2c2c2; } } } .ConfirmLogin { cursor: pointer; margin: 30px auto 40px; @@ -503,15 +527,18 @@ text-align: center; } } header { width: 100%; position: relative; display: flex; justify-content: space-between; .logo { // width: 40%; height: 62px; position: relative; img { position: absolute; left: 50px; @@ -523,6 +550,7 @@ // } } } .features { // width: 60%; display: flex; @@ -535,34 +563,42 @@ line-height: 70px; text-align: center; } .login { display: flex; align-items: center; margin: 0 16px; padding-top: 10px; .icon-201yonghu_yonghu2 { font-size: 25px; margin-right: 8px; cursor: pointer; } img{ width:26px; img { width: 26px; margin-right: 6px; } .username{ .username { color: #ef8201; } } .home_icon { position: relative; top: 5px; a { color: #ef8201; .icon-shouye { font-size: 25px; } } } .nav { // @media (min-width: 1280px) { // min-width: 80px; @@ -572,6 +608,7 @@ color: #ffffff; font-size: 16px; position: relative; .menuList { width: 100%; position: absolute; @@ -580,6 +617,7 @@ border: 1px solid #c2c2c2; z-index: 999; display: none; li { height: 40px; line-height: 40px; @@ -588,17 +626,21 @@ color: black; text-align: center; } span:hover { color: #ef8201; } } } .nav:hover .menuList { display: block; } .classList { display: flex; justify-content: space-around; .item { height: 50px; line-height: 50px; @@ -610,30 +652,38 @@ white-space: nowrap; margin: 12px 10px 0; cursor: pointer; a { color: #333333; display: inline-block; height: 100%; width: 100%; } a:hover { color: #ef8201; } span:hover { color: #ef8201; } } .item:hover { border-bottom: 5px solid #ef8201; } .secItem { border-bottom: 5px solid #ef8201; span { color: #ef8201; } } .patent { position: relative; .patentShow { display: none; position: absolute; @@ -641,22 +691,27 @@ background-color: #ffffff; border: 1px solid #c2c2c2; z-index: 999; li { margin: 2px 0; text-align: center; font-size: 16px; color: black; } li:hover a { li:hover { color: #ef8201; } } } .patent:hover .patentShow { display: block; } .Retrieval { position: relative; .RetrievalShow { display: none; position: absolute; @@ -664,30 +719,36 @@ background-color: #ffffff; border: 1px solid #c2c2c2; z-index: 999; li { height: 40px; line-height: 40px; text-align: center; font-size: 16px; color: black; span { font-size: 20px; } } li:hover a { color: #ef8201; } } } .Retrieval:hover .RetrievalShow { display: block; } } .language { cursor: pointer; width: 10%; display: flex; justify-content: space-around; li { height: 62px; line-height: 73px; @@ -697,10 +758,12 @@ font-style: normal; font-size: 16px; } li:nth-child(1) { color: #ef8201; } } // .home_icon, // .classList, // .language, @@ -717,5 +780,4 @@ // } } } </style> src/views/AboutView.vue
@@ -32,7 +32,7 @@ <span class="title">我们的实力</span> </div> <div class="content"> 凭借自身的技术能力和强大的产品服务,已经服务全球50多个国家超1万家客户,国内客户包括中芯国际、赛迪咨询、华大基因、新松机器人、清华大学、中科院大学、同济大学、东北大学等;国际客户包括哈佛大学、瑞士皇家科学院、埃因霍温理工大学、首尔国立大学、东软集团、飞利浦等。 凭借自身的技术能力和强大的产品实力,已经服务全球50多个国家超1万家客户,国内客户包括中芯国际、赛迪咨询、华大基因、新松机器人、清华大学、中科院大学、同济大学、东北大学等;国际客户包括哈佛大学、瑞士皇家科学院、埃因霍温理工大学、首尔国立大学、东软集团、飞利浦等。 </div> </li> </ul> @@ -628,7 +628,7 @@ margin: 10px 0; text-align: left; color: #999999; font-size: 14px; font-size: 16px; } } } src/views/BatchView.vue
@@ -106,6 +106,7 @@ content:this.searchParams[this.currentTab] } console.log(JSON.stringify(params)); console.log(params); this.$router.push({ path:"/smart", query:{ src/views/HomeView.vue
@@ -13,16 +13,7 @@ <div v-for="item in this.imgList" :key=item.Id> <img :src=item.Url alt="" style="height: 500px; width: 100%" /> </div> <!-- <div> <img src="https://th.bing.com/th/id/R.3d65ceb916e50ab97ea198341fd6e18c?rik=m9nclAHZL4Vb4Q&riu=http%3a%2f%2fwww.ghostw7.com%2fuploadslxy%2fallimg%2f160125%2f1T9132T7-5.jpg&ehk=Dpnr0mb4j8x%2b1kHVSTDsdyJMDwntoS3rlUXla8uBexg%3d&risl=&pid=ImgRaw&r=0" alt="" style="height: 500px; width: 100%" /> </div> <div> <img src="https://th.bing.com/th/id/R.3d65ceb916e50ab97ea198341fd6e18c?rik=m9nclAHZL4Vb4Q&riu=http%3a%2f%2fwww.ghostw7.com%2fuploadslxy%2fallimg%2f160125%2f1T9132T7-5.jpg&ehk=Dpnr0mb4j8x%2b1kHVSTDsdyJMDwntoS3rlUXla8uBexg%3d&risl=&pid=ImgRaw&r=0" alt="" style="height: 500px; width: 100%" /> </div> --> </a-carousel> </section> <section class="features"> src/views/PersonalCenter.vue
@@ -19,11 +19,7 @@ <section class="right person-wrapper" v-show="tag == 'person'"> <ul> <li class="persontab"> <a-tabs default-active-key="1" @change="callback" style="height: 500px" > <a-tabs default-active-key="1" @change="callback" style="height: 500px"> <a-tab-pane key="1" tab="基本信息"> <ul class="infoTab1"> <!-- <li class="edit-box"> @@ -37,26 +33,17 @@ </li> <li> <span class="label">用户名:</span> <a-input v-if="editing" v-model="personInfo.RealName" ></a-input> <a-input v-if="editing" v-model="personInfo.RealName"></a-input> <b v-else>{{ personInfo.RealName }}</b> </li> <li> <span class="label">邮箱:</span> <a-input v-if="editing" v-model="personInfo.Email" ></a-input> <a-input v-if="editing" v-model="personInfo.Email"></a-input> <b v-else>{{ personInfo.Email || "-" }}</b> </li> <li> <span class="label">手机:</span> <a-input v-if="editing" v-model="personInfo.Phone" ></a-input> <a-input v-if="editing" v-model="personInfo.Phone"></a-input> <b v-else>{{ personInfo.Phone || "-" }}</b> </li> <li> @@ -73,16 +60,11 @@ <b v-else>{{ $fnFormatDate(personInfo.Birthday || "") || "-" }}</b> </li> <li class="edit-box" v-show="!editing" style="margin-top:40px"> <div class="save" @click="editing = true">编辑</div> <div class="save" @click="editing = true">编辑</div> </li> <li class="edit-box" v-show="editing"> <a-button @click="cancleEdit" style="margin-right:20px" >取消</a-button > <a-button type="primary" @click="confirmEdit" >提交</a-button > <a-button @click="cancleEdit" style="margin-right:20px">取消</a-button> <a-button type="primary" @click="confirmEdit">提交</a-button> </li> <!-- <li> <span>地址: </span> @@ -91,60 +73,43 @@ </ul> </a-tab-pane> <a-tab-pane key="2" tab="修改密码" force-render> <a-form class="newpsw" :form="form" :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }" > <a-form class="newpsw" :form="form" :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }"> <a-form-item label="用户名"> <b>{{ personInfo.UserName }}</b> </a-form-item> <a-form-item label="输入原密码"> <a-input type="password" v-decorator="[ 'oldpwd', { rules: [ { required: true, message: '请输入密码' }, { trigger: 'blur', validator: rulePwdCheck }, ], }, ]" placeholder="请输入" /> <a-input type="password" v-decorator="[ 'oldpwd', { rules: [ { required: true, message: '请输入密码' }, { trigger: 'blur', validator: rulePwdCheck }, ], }, ]" placeholder="请输入" /> </a-form-item> <a-form-item label="输入新密码"> <a-input type="password" v-decorator="[ 'newpwd', { rules: [ { required: true, message: '请输入密码' }, { trigger: 'blur', validator: rulePwdCheck }, ], }, ]" placeholder="请输入" /> <a-input type="password" v-decorator="[ 'newpwd', { rules: [ { required: true, message: '请输入密码' }, { trigger: 'blur', validator: rulePwdCheck }, ], }, ]" placeholder="请输入" /> </a-form-item> <a-form-item label="确认新密码"> <a-input type="password" v-decorator="[ 'confirmpwd', { rules: [ { required: true, message: '请输入密码' }, { trigger: 'blur', validator: rulePwdCheck }, { validator: compareNewPwd }, ], }, ]" placeholder="请输入" /> <a-input type="password" v-decorator="[ 'confirmpwd', { rules: [ { required: true, message: '请输入密码' }, { trigger: 'blur', validator: rulePwdCheck }, { validator: compareNewPwd }, ], }, ]" placeholder="请输入" /> </a-form-item> </a-form> <div class="save" @click="handleSubmit">提交</div> @@ -176,13 +141,13 @@ </li> <li v-if="vipInfo.ExpiredDay>0"> 距离过期还有 <span class="datanum">{{ $fnFormatK(vipInfo.ExpiredDay || "") || "-" $fnFormatK(vipInfo.ExpiredDay || "") || "-" }}</span> 天 </li> <li v-else> 您的账号已经过期 <span class="datanum">{{ $fnFormatK(Math.abs(vipInfo.ExpiredDay) || "") || "-" $fnFormatK(Math.abs(vipInfo.ExpiredDay) || "") || "-" }}</span> 天,请及时续费 </li> @@ -190,15 +155,9 @@ </a-card> </div> <div class="download"> <a-card title="日下载" style="width: 48%" :headStyle="cVipStyle" class="cardDown" > <a-card title="日下载" style="width: 48%" :headStyle="cVipStyle" class="cardDown"> <div> 日下载总额度: <span>{{ $fnFormatK(vipInfo.DownNumPerDay) }}</span > 条/天 日下载总额度: <span>{{ $fnFormatK(vipInfo.DownNumPerDay) }}</span> 条/天 </div> <div> 今日已使用: @@ -208,21 +167,14 @@ </div> </a-card> <a-card title="月下载" style="width: 48%" :headStyle="cVipStyle" class="cardDown" > <a-card title="月下载" style="width: 48%" :headStyle="cVipStyle" class="cardDown"> <div> 月下载总额度: <span>{{ $fnFormatK(vipInfo.DownNumPerMonth) }}</span > 条/月 <span>{{ $fnFormatK(vipInfo.DownNumPerMonth) }}</span> 条/月 </div> <div> 当月已使用: <span>{{ $fnFormatK(vipInfo.DownNumPerMonthActual) }}</span > 条 当月剩余: <span>{{ $fnFormatK(vipInfo.DownNumPerMonthActual) }}</span> 条 当月剩余: <span>{{ $fnFormatK(vipInfo.DownNumPerMonthLeft) }}</span> 条 </div> </a-card> @@ -230,7 +182,10 @@ </section> <section class="right suggest-wrapper" v-show="tag == 'suggest'"> <div style="width: 100%; height: 100%" class="suggestion"> <div>开发中,敬请期待...</div> <!-- <div>开发中,敬请期待...</div> --> <a-table :columns="columns" :data-source="data"> <a slot="name" slot-scope="text">{{ text }}</a> </a-table> </div> </section> </main> @@ -250,7 +205,56 @@ postLogout } from "@/api/url_user"; import { pwdCheck } from "@/utils/validRules"; const columns = [ { title: 'Name', dataIndex: 'name', key: 'name', scopedSlots: { customRender: 'name' }, }, { title: 'Age', dataIndex: 'age', key: 'age', width: 80, }, { title: 'Address', dataIndex: 'address', key: 'address 1', ellipsis: true, }, { title: 'Long Column Long Column Long Column', dataIndex: 'address', key: 'address 2', ellipsis: true, }, ]; const data = [ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park, New York No. 1 Lake Park', tags: ['nice', 'developer'], }, { key: '2', name: 'Jim Green', age: 42, address: 'London No. 2 Lake Park, London No. 2 Lake Park', tags: ['loser'], }, { key: '3', name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park, Sidney No. 1 Lake Park', tags: ['cool', 'teacher'], }, ]; export default { //import引入的组件需要注入到components对象中才能使用 // props: { @@ -271,7 +275,9 @@ data() { //这里存放数据 return { cVipStyle: { background: "rgba(239,130,1,.2)",textAlign:'center' }, data, columns, cVipStyle: { background: "rgba(239,130,1,.2)", textAlign: 'center' }, tabinfo: 1, mode: "left", tag: "person", //person个人中心 vipInfo 余量查询 suggest 建议 @@ -293,17 +299,20 @@ tag() { this.getBasicData(); }, '$route.query.tag'(val){ '$route.query.tag'(val) { this.tag = val } }, //方法集合 methods: { delectTable(row){ console.log(row); }, callback(e) { this.tabinfo = e; console.log(e); }, handleLogout(){ handleLogout() { let that = this this.$confirm({ title: "提示", @@ -311,15 +320,15 @@ okText: "确认", cancelText: "取消", onOk() { postLogout().then(()=>{ postLogout().then(() => { that.myUsername = '' that.avatar = '' }) }, }); }, tagChange(tag){ this.$router.push('/person?tag='+tag) tagChange(tag) { this.$router.push('/person?tag=' + tag) }, getBasicData() { if (this.onRequest) return; @@ -357,8 +366,8 @@ this.getUserInfo(); this.editing = false; }, confirmEdit(){ postUpdateAccountBasic(this.personInfo).then(()=>{ confirmEdit() { postUpdateAccountBasic(this.personInfo).then(() => { this.editing = false }) }, @@ -389,20 +398,20 @@ callbackFn(); }, }, beforeCreate() {}, //生命周期 - 创建之前 beforeCreate() { }, //生命周期 - 创建之前 //生命周期 - 创建完成(可以访问当前this实例) created() {}, beforeMount() {}, //生命周期 - 挂载之前 created() { }, beforeMount() { }, //生命周期 - 挂载之前 //生命周期 - 挂载完成(可以访问DOM元素) mounted() { let tag = this.$route.query.tag; if (tag) this.tag = tag; this.getBasicData(); }, beforeUpdate() {}, //生命周期 - 更新之前 updated() {}, //生命周期 - 更新之后 beforeDestroy() {}, //生命周期 - 销毁之前 destroyed() {}, //生命周期 - 销毁完成 beforeUpdate() { }, //生命周期 - 更新之前 updated() { }, //生命周期 - 更新之后 beforeDestroy() { }, //生命周期 - 销毁之前 destroyed() { }, //生命周期 - 销毁完成 activated() { // this.show1=this.$route.query.showPer // this.show2=this.$route.query.showDow @@ -410,36 +419,46 @@ }, //如果页面有keep-alive缓存功能,这个函数会触发 }; </script> <style lang="scss" scoped> a { color: #333333; cursor: pointer; } .person { min-width: 1280px; } main { width: 100%; // min-width: 1280px; // margin: 0 auto 100px; display: flex; // justify-content: space-between; .left { width: 20%; height: calc(100vh - 60px); border-right: 1px solid #c2c2c2; ul.menu { padding-top: 20px; text-align: center; li { font-size: 20px; font-weight: 500; margin: 20px 0; cursor: pointer; &.active { color: #ef8201; span { position: relative; &::before { content: ""; position: absolute; @@ -451,6 +470,7 @@ } } } &:hover { color: #ef8201; opacity: 0.8; @@ -458,14 +478,18 @@ } } } .right { // height: 500px; // width: 80%; padding: 20px; flex: 1; &.person-wrapper { width: 900px; .persontab { // width: 900px; .infoTab1 { width: 800px; @@ -473,6 +497,7 @@ display: flex; justify-content: space-between; flex-wrap: wrap; li { min-width: 400px; font-size: 18px; @@ -482,12 +507,14 @@ margin: 10px 0; text-align: left; padding-left: 50px; &.edit-box { width: 100%; text-align: right; padding-right: 116px; margin-bottom: 20px; } span.label { display: inline-block; width: 70px; @@ -495,6 +522,7 @@ padding-left: 0; opacity: 0.5; } input { width: 166px; // border-radius: 6px; @@ -504,6 +532,7 @@ // padding-left: 5px; } } // li:nth-last-child(1) { // width: 900px; // height: 100px; @@ -528,6 +557,7 @@ // } // } } .ascertain { width: 100px; height: 40px; @@ -539,6 +569,7 @@ background: #ef8201; margin: 0 auto; } .save { width: 100px; height: 40px; @@ -551,20 +582,24 @@ margin: 0 auto; border-radius: 5px; cursor: pointer; &:hover { opacity: 0.8; } } .newpsw { width: 600px; margin: 20px auto 0px; padding: 20px 0; text-align: left; li { margin: 20px auto; height: 40px; line-height: 40px; text-align: left; span { display: inline-block; width: 200px; @@ -572,10 +607,12 @@ font-size: 18px; opacity: 0.5; } b { margin-left: 10px; } } input { width: 300px; // height: 40px; @@ -588,42 +625,51 @@ } } } .suggestion { width: 100%; height: 100%; } } &.vip-wrapper { padding-top: 40px; .allowance { width: 86%; margin: 0 auto 15px; height: 130px; .cardVip { width: 100%; // background: #eeeeee; a { color: #0eafc0; position: relative; right: 100px; } ul { // width: 80%; display: flex; justify-content: space-around; font-size: 18px; font-weight: 500; .datanum { color: #ef8201; } } } } .download { width: 86%; margin: 0 auto; display: flex; justify-content: space-between; .cardDown { div { width: 90%; @@ -631,6 +677,7 @@ text-align: left; font-size: 18px; font-weight: 500; span { color: #ef8201; } src/views/SeniorView.vue
@@ -27,18 +27,18 @@ <span>关键词</span> <div class="seclect"> <div v-for="(item,index) in form.keyWords"> <a-select v-model="item.logic" style="width: 80px" @change="item.value=''"> <a-select v-model="item.logic" style="width: 10%" @change="item.value=''"> <a-select-option v-for="(it) in options.logic" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> </a-select> <a-select v-model="item.select" style="width: 150px" @change="item.text=''"> <a-select v-model="item.select" style="width: 15%" @change="item.text=''"> <a-select-option v-for="(it) in options.keyWords" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> </a-select> <a-input style="width: 50%" style="width: 40%" v-model="item.text" placeholder="请输入" /> @@ -51,18 +51,18 @@ <span>名称</span> <div class="seclect"> <div v-for="(item,index) in form.name"> <a-select v-model="item.logic" style="width: 80px" @change="item.value=''"> <a-select v-model="item.logic" style="width: 10%" @change="item.value=''"> <a-select-option v-for="(it) in options.logic" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> </a-select> <a-select v-model="item.select" style="width: 150px" @change="item.text=''"> <a-select v-model="item.select" style="width: 15%" @change="item.text=''"> <a-select-option v-for="(it) in options.name" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> </a-select> <a-input style="width: 50%" style="width: 40%" v-model="item.text" placeholder="请输入" /> @@ -75,18 +75,18 @@ <span>地址</span> <div class="seclect"> <div v-for="(item,index) in form.address"> <a-select v-model="item.logic" style="width: 80px" @change="item.value=''"> <a-select v-model="item.logic" style="width: 10%" @change="item.value=''"> <a-select-option v-for="(it) in options.logic" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> </a-select> <a-select v-model="item.select" style="width: 150px" @change="item.text=''"> <a-select v-model="item.select" style="width: 15%" @change="item.text=''"> <a-select-option v-for="(it) in options.address" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> </a-select> <a-input style="width: 50%" style="width: 40%" v-model="item.text" placeholder="例如:北京" /> @@ -95,28 +95,28 @@ </div> </div> </li> <li> <li style="position:relative"> <span>分类号</span> <div class="seclect"> <div v-for="(item,index) in form.fenlei"> <a-select v-model="item.logic" style="width: 80px" @change="item.value=''"> <a-select v-model="item.logic" style="width: 10%" @change="item.value=''"> <a-select-option v-for="(it) in options.logic" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> </a-select> <a-select v-model="item.select" style="width: 150px" @change="item.text='';item.treeData=[]"> <a-select v-model="item.select" style="width: 15%" @change="item.text='';item.treeData=[]"> <a-select-option v-for="(it) in options.fenlei" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> </a-select> <a-input style="width: 50%" style="width: 40%" v-model="item.text" placeholder="请输入" /> <a-button type="primary" v-if="index == (form.fenlei.length-1)&&form.fenlei.length<20" shape="circle" icon="plus" @click="doFormItem('plus','fenlei','logic',index)"/> <a-button type="danger" v-else shape="circle" icon="minus" @click="doFormItem('minus','fenlei','logic',index)"/> <a-button @click="openTool(item)">查询工具</a-button> <a-button @click="openTool(item)">查询工具</a-button> </div> </div> </li> @@ -124,18 +124,18 @@ <span>号码</span> <div class="seclect"> <div v-for="(item,index) in form.haoma"> <a-select v-model="item.logic" style="width: 80px" @change="item.value=''"> <a-select v-model="item.logic" style="width: 10%" @change="item.value=''"> <a-select-option v-for="(it) in options.logic" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> </a-select> <a-select v-model="item.select" style="width: 150px" @change="item.text=''"> <a-select v-model="item.select" style="width: 15%" @change="item.text=''"> <a-select-option v-for="(it) in options.haoma" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> </a-select> <a-input style="width: 50%" style="width: 40%" v-model="item.text" placeholder="请输入" /> @@ -146,12 +146,12 @@ <span>日期</span> <div class="seclect"> <div v-for="(item,index) in form.date"> <a-select v-model="item.logic" style="width: 80px" @change="item.value=''"> <a-select v-model="item.logic" style="width: 10%" @change="item.value=''"> <a-select-option v-for="(it) in options.logic" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> </a-select> <a-select v-model="item.select" style="width: 20%" @change="item.text='';item.type='before'"> <a-select v-model="item.select" style="width:15%" @change="item.text='';item.type='before'"> <a-select-option v-for="(it) in options.date" :key="it.code" :value="it.code"> {{it.name}} </a-select-option> @@ -431,7 +431,7 @@ align-items: center; margin-bottom: 10px; >*{ margin-right: 18px; margin-right: 10px; } textarea { width: 100%; src/views/SmartView.vue
@@ -18,24 +18,27 @@ <li v-for="(item,index) in conditionAnd" :key="index"> <span :class="item.rule">{{item.rule=='in'?'筛选':"过滤"}}</span> <span class="label" :title="item.name">{{item.name}}:</span> <span class="list" > <span class="list"> <template v-for="it in item.checkedList"> {{it.text||it.code}} {{it.text||it.code}} </template> </span> <a-icon type="close" @click="conditionRemove(index,item)"/> <a-icon type="close" @click="conditionRemove(index,item)" /> </li> </ul> <a-collapse default-active-key="1" :expand-icon-position="'right'" > <a-collapse default-active-key="1" :expand-icon-position="'right'"> <template #expandIcon="props"> <a-icon type="caret-right" :rotate="props.isActive ? 90 : 0" /> </template> <a-collapse-panel key="1" header="受理局"> <a-checkbox-group v-model="checkedOption.countryCodeCount" v-if="leftOptions.countryCodeCount" style="width:100%"> <a-checkbox-group v-model="checkedOption.countryCodeCount" v-if="leftOptions.countryCodeCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.countryCodeCount"> <li v-for="item in leftOptions.countryCodeCount" v-if="item.value!=='0'"> <a-checkbox :checked="item.checked" :disabled="item.disabled" :value="item.code" @change="checkChange(item)"> <img :src="require('../assets/nation_flags/'+item.code+'.png')" alt="" style="width:20px;margin-right:10px"/>{{item.text}} <a-checkbox :checked="item.checked" :disabled="item.disabled" :value="item.code" @change="checkChange(item)"> <img :src="require('../assets/nation_flags/'+item.code+'.png')" alt="" style="width:20px;margin-right:10px" />{{item.text}} </a-checkbox> <span>{{item.count}}</span> </li> @@ -46,53 +49,15 @@ </p> </a-checkbox-group> </a-collapse-panel> <a-collapse-panel key="2" header="申请日"> <a-checkbox-group v-model="checkedOption.systemCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.systemCount"> <li v-for="item in leftOptions.systemCount" v-if="item.count!=='0'"> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.code}}</a-checkbox> <span>{{item.count}}</span> </li> </ul> <p class="option-btn"> <a-button @click="handleCondition('range','system','申请日')">筛选</a-button> <a-button @click="handleCondition('not range','system','申请日')">过滤</a-button> </p> </a-checkbox-group> </a-collapse-panel> <a-collapse-panel key="3" header="公开日"> <a-checkbox-group v-model="checkedOption.publicationDateCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.publicationDateCount"> <li v-for="item in leftOptions.publicationDateCount" v-if="item.count!=='0'"> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.code}}</a-checkbox> <span>{{item.count}}</span> </li> </ul> <p class="option-btn"> <a-button @click="handleCondition('range','publicationDate','公开日')">筛选</a-button> <a-button @click="handleCondition('not range','publicationDate','公开日')">过滤</a-button> </p> </a-checkbox-group> </a-collapse-panel> <a-collapse-panel key="4" header="IPC分类"> <a-checkbox-group v-model="checkedOption.ipcListCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.ipcListCount"> <li v-for="item in leftOptions.ipcListCount" v-if="item.count!=='0'"> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <span>{{item.count}}</span> </li> </ul> <p class="option-btn"> <a-button @click="handleCondition('in','ipcList','IPC分类')">筛选</a-button> <a-button @click="handleCondition('not in','ipcList','IPC分类')">过滤</a-button> </p> </a-checkbox-group> </a-collapse-panel> <a-collapse-panel key="5" header="法律状态"> <!-- <a-collapse-panel key="2" header="公开类型"> 未知 </a-collapse-panel> --> <a-collapse-panel key="3" header="法律状态"> <a-checkbox-group v-model="checkedOption.lawStatusCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.lawStatusCount"> <li v-for="item in leftOptions.lawStatusCount" v-if="item.count!=='0'"> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <span>{{item.count}}</span> </li> </ul> @@ -102,11 +67,42 @@ </p> </a-checkbox-group> </a-collapse-panel> <a-collapse-panel key="4" header="公开日"> <a-checkbox-group v-model="checkedOption.publicationDateCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.publicationDateCount"> <li v-for="item in leftOptions.publicationDateCount" v-if="item.count!=='0'"> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.code}}</a-checkbox> <span>{{item.count}}</span> </li> </ul> <p class="option-btn"> <a-button @click="handleCondition('range','publicationDate','公开日')">筛选</a-button> <a-button @click="handleCondition('not range','publicationDate','公开日')">过滤</a-button> </p> </a-checkbox-group> </a-collapse-panel> <a-collapse-panel key="5" header="申请日"> <a-checkbox-group v-model="checkedOption.systemCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.systemCount"> <li v-for="item in leftOptions.systemCount" v-if="item.count!=='0'"> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.code}}</a-checkbox> <span>{{item.count}}</span> </li> </ul> <p class="option-btn"> <a-button @click="handleCondition('range','system','申请日')">筛选</a-button> <a-button @click="handleCondition('not range','system','申请日')">过滤</a-button> </p> </a-checkbox-group> </a-collapse-panel> <a-collapse-panel key="6" header="申请人"> <a-checkbox-group v-model="checkedOption.assigneeHarmonizedCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.assigneeHarmonizedCount"> <li v-for="item in leftOptions.assigneeHarmonizedCount" v-if="item.count!=='0'"> <a-checkbox :value="item.code||item.text" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <a-checkbox :value="item.code||item.text" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <span>{{item.count}}</span> </li> </ul> @@ -120,7 +116,8 @@ <a-checkbox-group v-model="checkedOption.inventorHarmonizedCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.inventorHarmonizedCount"> <li v-for="item in leftOptions.inventorHarmonizedCount" v-if="item.count!=='0'"> <a-checkbox :value="item.code||item.text" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <a-checkbox :value="item.code||item.text" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <span>{{item.count}}</span> </li> </ul> @@ -130,11 +127,32 @@ </p> </a-checkbox-group> </a-collapse-panel> <a-collapse-panel key="8" header="战略新兴产业分类"> <a-collapse-panel key="8" header="IPC分类号"> <a-checkbox-group v-model="checkedOption.ipcListCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.ipcListCount"> <li v-for="item in leftOptions.ipcListCount" v-if="item.count!=='0'"> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <span>{{item.count}}</span> </li> </ul> <p class="option-btn"> <a-button @click="handleCondition('in','ipcList','IPC分类')">筛选</a-button> <a-button @click="handleCondition('not in','ipcList','IPC分类')">过滤</a-button> </p> </a-checkbox-group> </a-collapse-panel> <!-- <a-collapse-panel key="9" header="中国申请人地址"> 未知 </a-collapse-panel> --> <a-collapse-panel key="10" header="战略新兴产业分类"> <a-checkbox-group v-model="checkedOption.strategyIndustryCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.strategyIndustryCount"> <li v-for="item in leftOptions.strategyIndustryCount" v-if="item.count!=='0'"> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <span>{{item.count}}</span> </li> </ul> @@ -144,11 +162,12 @@ </p> </a-checkbox-group> </a-collapse-panel> <a-collapse-panel key="9" header="国民经济行业分类"> <a-collapse-panel key="11" header="国民经济行业分类"> <a-checkbox-group v-model="checkedOption.economyIndustryCount" style="width:100%"> <ul class="option-list" v-if="leftOptions.economyIndustryCount"> <li v-for="item in leftOptions.economyIndustryCount" v-if="item.count!=='0'"> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <a-checkbox :value="item.code" :checked="item.checked" :disabled="item.disabled" @change="checkChange(item)">{{item.text}}</a-checkbox> <span>{{item.count}}</span> </li> </ul> @@ -163,10 +182,9 @@ </section> <section class="right"> <!-- v-if="num" --> <div class="header flex justify-between item-center" > <div class="header flex justify-between item-center"> <div> 共<span>{{ num }}</span >条专利 共<span>{{ num }}</span>条专利 </div> <a-button type="link" icon="download" @click="exportShow=true"> 导出 @@ -174,27 +192,23 @@ </div> <div class="dataList white"> <div class="checkAll"> <a-checkbox @change="onChangeAll" :indeterminate="indeterminate" :checked="checkAll" > <a-checkbox @change="onChangeAll" :indeterminate="indeterminate" :checked="checkAll"> 全选此页 </a-checkbox> <div class="sort"> <span style="margin:0 10px">排序:</span> <a-select v-model="sortFields" style="width: 130px" @change="reloadPageList"> <a-select-option value="_score">相关度</a-select-option> <a-select-option value="system">申请日</a-select-option> <a-select-option value="publicationDate">公开日</a-select-option> <a-select-option value="citedCount">被引用数量</a-select-option> <a-select-option value="citationCount">引用数量</a-select-option> <a-select-option value="publicationNumber">公开号</a-select-option> <a-select-option value="applicationNumber">申请号</a-select-option> <a-select-option value="priorityDate">最早优先权日</a-select-option> <a-select-option value="sameFamilyCount">同族数量</a-select-option> <a-select-option value="assigneeHarmonizedCount">申请人数量</a-select-option> <a-select-option value="inventorHarmonizedCount">发明人数量</a-select-option> <a-select-option value="_score">相关度</a-select-option> <a-select-option value="system">申请日</a-select-option> <a-select-option value="publicationDate">公开日</a-select-option> <a-select-option value="citedCount">被引用数量</a-select-option> <a-select-option value="citationCount">引用数量</a-select-option> <a-select-option value="publicationNumber">公开号</a-select-option> <a-select-option value="applicationNumber">申请号</a-select-option> <a-select-option value="priorityDate">最早优先权日</a-select-option> <a-select-option value="sameFamilyCount">同族数量</a-select-option> <a-select-option value="assigneeHarmonizedCount">申请人数量</a-select-option> <a-select-option value="inventorHarmonizedCount">发明人数量</a-select-option> </a-select> <a-radio-group v-model="direction" button-style="solid" style="margin-left:10px" @change="reloadPageList"> <a-radio-button value="desc"> @@ -207,25 +221,25 @@ </div> </div> <a-spin :spinning="spinning"> <div class="list" v-show="plainOptions.length" v-for="(item, index) in plainOptions" :key="index"> <div class="item"> <div class="header"> <span class="point"> <a-checkbox :checked="item.check" @change="onChange(item)" /> </span> <span class="application cm-hover ellipsis" @click="handleItem(item)"> <span style="margin-right:16px">{{item.publicationNumber}}</span> <span>{{ item.title0 || '-' }}</span> </span> <a-tag v-if="item.status_dictText == '失效'" color="#f50"> 失效 </a-tag> <a-tag v-if="item.status_dictText == '有效'" color="green"> 有效 </a-tag> <a-tag v-if="item.status_dictText == '审查中'" color="orange"> 审查中 </a-tag> </div> <div class="title cm-hover ellipsis" @click="handleItem(item)">{{ item.title1 }}</div> <ul> <!-- <li> <div class="list" v-show="plainOptions.length" v-for="(item, index) in plainOptions" :key="index"> <div class="item"> <div class="header"> <span class="point"> <a-checkbox :checked="item.check" @change="onChange(item)" /> </span> <span class="application cm-hover ellipsis" @click="handleItem(item)"> <span style="margin-right:16px">{{item.publicationNumber}}</span> <span>{{ item.title0 || '-' }}</span> </span> <a-tag v-if="item.status_dictText == '失效'" color="#f50"> 失效 </a-tag> <a-tag v-if="item.status_dictText == '有效'" color="green"> 有效 </a-tag> <a-tag v-if="item.status_dictText == '审查中'" color="orange"> 审查中 </a-tag> </div> <div class="title cm-hover ellipsis" @click="handleItem(item)">{{ item.title1 }}</div> <ul> <!-- <li> <span>公开(公告)日:</span ><span>{{ $fnFormatDate(item.publicationDate ) }}</span> </li> @@ -243,64 +257,43 @@ <span>IPC分类号:</span><span>{{ item.ipcList ||'-' }}</span> </li> --> <li> <span>申请日:</span ><span>{{$fnFormatDate(item.system)}}</span> </li> <li> <span>公开日:</span ><span>{{ $fnFormatDate(item.publicationDate ) }}</span> </li> <li> <span>申请号:</span><span>{{ item.applicationNumber }}</span> </li> <li> <span>发明人:</span><span>{{ item.inventorHarmonizedName }}</span> </li> <li> <span>申请人:</span ><span>{{ item.assigneeHarmonizedName }}</span> </li> <li> <span>IPC分类号:</span><span>{{ item.ipcList ||'-' }}</span> </li> <!-- <li > <li> <span>申请日:</span><span>{{$fnFormatDate(item.system)}}</span> </li> <li> <span>公开日:</span><span>{{ $fnFormatDate(item.publicationDate ) }}</span> </li> <li> <span>申请号:</span><span>{{ item.applicationNumber }}</span> </li> <li> <span>发明人:</span><span>{{ item.inventorHarmonizedName }}</span> </li> <li> <span>申请人:</span><span>{{ item.assigneeHarmonizedName }}</span> </li> <li> <span>IPC分类号:</span><span>{{ item.ipcList ||'-' }}</span> </li> <!-- <li > <span >摘要:</span><span>{{ item.abstract1 }}</span> </li> --> <li > <span >摘要:</span> </li> <!-- 申请日 公开日 申请号 发明人 申请人 IPC分类号 摘要 --> </ul> <div class="content">{{ item.abstract1 }}</div> <li> <span>摘要:</span> </li> </ul> <div class="content">{{ item.abstract1 }}</div> </div> </div> </div> <div style="text-align:right" v-if="num>10"> <a-pagination :default-current="1" :total="num" @change="onPageChange" /> </div> <a-empty v-show="plainOptions.length == 0 & !spinning" /> <div style="text-align:right" v-if="num>10"> <a-pagination :default-current="1" :total="num" @change="onPageChange" /> </div> <a-empty v-show="plainOptions.length == 0 & !spinning" /> </a-spin> </div> </section> </main> <a-modal title="数据导出" :visible="exportShow" :width="1200" :footer="null" @cancel="exportShow=false" > <a-modal title="数据导出" :visible="exportShow" :width="1200" :footer="null" @cancel="exportShow=false"> <export-com v-if="exportShow" :total="num" /> </a-modal> </div> @@ -309,22 +302,22 @@ <script> //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等) //例如:import 《组件名称》 from '《组件路径》'; import { GetPatentListbyAdvance, GetPatentList , GetPatentListbyLaw , GetPatentListCount,GetPatentListbyPatch} from "@/api/url_analyst"; import { GetPatentListbyAdvance, GetPatentList, GetPatentListbyLaw, GetPatentListCount, GetPatentListbyPatch } from "@/api/url_analyst"; import ExportCom from '../components/ExportCom.vue' export default { //import引入的组件需要注入到components对象中才能使用 components: {ExportCom}, components: { ExportCom }, data() { //这里存放数据 return { ScrollHeight: document.documentElement.scrollTop, siftDialog: false, //筛选弹窗 keyWord: "", conditionAnd:[], conditionAnd: [], num: 0, pageNo: 1, spinning:false, spinning: false, indeterminate: false, //全选此页多选 checkAll: false, //全选此页全选 indeterminatePatent: false, //全部专利多选 @@ -333,109 +326,155 @@ checkAllCountry: false, //全选专利国家全选 checkCountryList: false, //全选专利国家分类 plainOptions: [], leftOptions:{ countryCodeCount:[] leftOptions: { countryCodeCount: [] }, length: 0, //复选框选中数量 exportShow:false, checkedOption:{ exportShow: false, checkedOption: { }, currentUrl:null, currentParams:{}, direction:'desc', sortFields:'publicationDate' currentUrl: null, currentParams: {}, direction: 'desc', sortFields: 'publicationDate' }; }, //计算属性 类似于data概念 computed: {}, //监控data中的数据变化 watch: { ScrollHeight() {}, "$route"(){ ScrollHeight() { }, "$route"() { window.location.reload() } }, //方法集合 mounted() { let from = this.$route.query.from this.getOptions() this.initSearch(from) // let namiPOarams = JSON.parse(localStorage.getItem('namiParams')) // console.log(namiPOarams); // if(namiPOarams){ // this.handleCondition(namiPOarams.rule,namiPOarams.field,namiPOarams.name) // } }, methods: { keyWordSearch(){ if(!this.keyWord){ keyWordSearch() { if (!this.keyWord) { this.$message.warning('请输入非空的关键词进行智能检索!') }else{ } else { this.getPageList() } }, checkChange(item){ checkChange(item) { console.log(item) this.$set(item,'checked',!item.checked) this.$set(item, 'checked', !item.checked) }, handleCondition(rule,field,name){ handleCondition(rule, field, name) { console.log(rule, field, name); let checkedList = [] this.leftOptions[field+"Count"].forEach(item=>{ if(item.checked && !item.disabled){ // console.log(this.leftOptions); // if(this.leftOptions[field + "Count"]){ this.leftOptions[field + "Count"].forEach(item => { console.log(item); if (item.checked && !item.disabled) { item.disabled = true checkedList.push(item) } }) if(checkedList.length==0) return let conditionItem = this.conditionAnd.find(item=>item.field==field&&item.rule==rule) if(conditionItem){ console.log(checkedList); // } // this.leftOptions[field + "Count"].forEach(item => { // if (item.checked && !item.disabled) { // item.disabled = true // checkedList.push(item) // } // }) if (checkedList.length == 0) return let conditionItem = this.conditionAnd.find(item => item.field == field && item.rule == rule) if (conditionItem) { conditionItem.checkedList.push(...checkedList) conditionItem.val = conditionItem.checkedList.map(item=>item.code||item.text).join(',') }else{ conditionItem.val = conditionItem.checkedList.map(item => item.code || item.text).join(',') } else { let obj = { field, rule, name, checkedList, val:checkedList.map(item=>item.code||item.text).join(','), childFieldLevel:0, val: checkedList.map(item => item.code || item.text).join(','), childFieldLevel: 0, } if (field.indexOf('ipcList') > -1) { obj.field = 'ipcListObject' } else if (field.indexOf('assigneeHarmonized') > -1) { obj.field = 'assigneeHarmonizedNameArray' } else if (field.indexOf('inventorHarmonized') > -1) { obj.field = 'inventorHarmonizedNameArray' } else if (field.indexOf('strategyIndustry') > -1) { obj.field = 'straIndustryList' } else if (field.indexOf('economyIndustry') > -1) { obj.field = 'ecoIndustryList' }else if(field.indexOf('namiParams') > -1) { obj.val = '纳米产业' } console.log(obj); this.conditionAnd.push(obj) } this.initSearch() }, conditionRemove(index,item){ conditionRemove(index, item) { console.log(index, item); if (item.field.indexOf('ipcListObject') > -1) { item.field = 'ipcList' } else if (item.field.indexOf('assigneeHarmonizedNameArray') > -1) { item.field = 'assigneeHarmonized' } else if (item.field.indexOf('inventorHarmonizedNameArray') > -1) { item.field = 'inventorHarmonized' } else if (item.field.indexOf('straIndustryList') > -1) { item.field = 'strategyIndustry' } else if (item.field.indexOf('ecoIndustryList') > -1) { item.field = 'economyIndustry' } let val = item.val let checkedCode = [] this.leftOptions[item.field+"Count"].forEach(it=>{ if(val.indexOf(it.code||it.text)>=0){ this.leftOptions[item.field + "Count"].forEach(it => { if (val.indexOf(it.code || it.text) >= 0) { it.checked = false it.disabled = false } if(it.checked) checkedCode.push(it.code||it.text) if (it.checked) checkedCode.push(it.code || it.text) }) this.checkedOption[item.field+"Count"] = checkedCode this.conditionAnd.splice(index,1) this.checkedOption[item.field + "Count"] = checkedCode console.log(this.checkedOption); this.conditionAnd.splice(index, 1) this.initSearch() }, initSearch(from){ initSearch(from) { this.direction = 'desc' if(from){ if (from) { this.sortFields = 'publicationDate' this.currentParams = JSON.parse(this.$route.query.params) switch(from){ this.currentParams = JSON.parse(this.$route.query.params) switch (from) { case 'home': this.currentUrl = GetPatentList break; break; case 'law': this.currentUrl = GetPatentListbyLaw break; break; case 'batch': this.currentUrl = GetPatentListbyPatch break; break; case 'senior': this.currentUrl = GetPatentListbyAdvance this.currentParams = { conditionAnd:JSON.parse(this.$route.query.params), conditionAnd: JSON.parse(this.$route.query.params), conditionFilter: [ { "countryCode": "", @@ -444,24 +483,24 @@ } ], } break; break; } }else{ } else { this.sortFields = '_score' this.currentUrl = GetPatentListbyAdvance // 涉及时间的要特殊处理,多选时间要拆分 let conditionAnd = [] this.conditionAnd.map(item=>{ if(item.rule=='range'||item.rule=='not range'){ item.checkedList.map(it=>{ this.conditionAnd.map(item => { if (item.rule == 'range' || item.rule == 'not range') { item.checkedList.map(it => { conditionAnd.push({ field:item.field, rule:item.rule, start:it.code + '-01-01', end:(Number(it.code)+1) + '-01-01' field: item.field, rule: item.rule, start: it.code + '-01-01', end: (Number(it.code) + 1) + '-01-01' }) }) }else{ } else { conditionAnd.push(item) } }) @@ -480,7 +519,7 @@ this.reloadPageList() }, reloadPageList(){ reloadPageList() { this.pageNo == 1 this.getPageList() }, @@ -488,36 +527,37 @@ this.spinning = true this.currentUrl({ pageNo: this.pageNo, pageSize:10, sortFields:[{ direction:this.direction, field:this.sortFields, pageSize: 10, sortFields: [{ direction: this.direction, field: this.sortFields, }], ...this.currentParams }).then((res) => { this.plainOptions = res.Data.records.map(item=>{ this.plainOptions = res.Data.records.map(item => { item.check = false return item }) this.num = res.Data.total; this.spinning = false }).catch(()=>{ }).catch(() => { this.spinning = false this.plainOptions = [] this.num = 0 }) }, getOptions(){ GetPatentListCount({value:''}).then(res=>{ getOptions() { GetPatentListCount({ value: '' }).then(res => { this.leftOptions = res.Data console.log(this.leftOptions); }) }, handleItem(item){ }, handleItem(item) { // localStorage.setItem('searchItem',JSON.stringify(item)) window.open('/#/detail/'+item.id) window.open('/#/detail/' + item.id) // this.$router.push('/detail/'+item.id) }, onPageChange(current){ onPageChange(current) { this.pageNo = current this.getPageList() }, @@ -558,42 +598,47 @@ } }, }, beforeCreate() {}, //生命周期 - 创建之前 beforeCreate() { }, //生命周期 - 创建之前 //生命周期 - 创建完成(可以访问当前this实例) created() {}, beforeMount() {}, //生命周期 - 挂载之前 created() { }, beforeMount() { }, //生命周期 - 挂载之前 //生命周期 - 挂载完成(可以访问DOM元素) beforeUpdate() {}, //生命周期 - 更新之前 updated() {}, //生命周期 - 更新之后 beforeDestroy() {}, //生命周期 - 销毁之前 destroyed() {}, //生命周期 - 销毁完成 activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发 beforeUpdate() { }, //生命周期 - 更新之前 updated() { }, //生命周期 - 更新之后 beforeDestroy() { }, //生命周期 - 销毁之前 destroyed() { }, //生命周期 - 销毁完成 activated() { }, //如果页面有keep-alive缓存功能,这个函数会触发 }; </script> <style lang="scss" scoped> .search { min-width: 1280px; padding: 40px 0; header { width: 100%; position: relative; display: flex; justify-content: space-between; .logo { width: 40%; height: 62px; position: relative; img { position: absolute; left: 50px; top: 0; width: 145px; height: 62px; @media screen and (max-width: 1280px) { left: 0; } } } .features { width: 60%; display: flex; @@ -606,31 +651,38 @@ height: 62px; line-height: 70px; } .login { .icon-201yonghu_yonghu2 { font-size: 25px; cursor: pointer; } } .home_icon { position: relative; top: 5px; a { color: #ef8201; .icon-shouye { font-size: 25px; } } } .nav { @media (min-width: 1280px) { min-width: 80px; } cursor: pointer; background: #ef8201; color: #ffffff; font-size: 16px; position: relative; .menuList { width: 100%; position: absolute; @@ -639,6 +691,7 @@ border: 1px solid #c2c2c2; z-index: 999; display: none; li { height: 40px; line-height: 40px; @@ -647,18 +700,22 @@ color: black; text-align: center; } a:hover { color: #ef8201; } } } .nav:hover .menuList { display: block; } .classList { width: 70%; display: flex; justify-content: space-around; .item { height: 50px; margin-top: 12px; @@ -669,27 +726,35 @@ font-style: normal; font-size: 20px; cursor: pointer; a { color: #333333; } a:hover { color: #ef8201; } span:hover { color: #ef8201; } } .item:hover { border-bottom: 5px solid #ef8201; } .secItem { border-bottom: 5px solid #ef8201; span { color: #ef8201; } } .patent { position: relative; .patentShow { display: none; position: absolute; @@ -698,22 +763,27 @@ border: 1px solid #c2c2c2; // box-shadow: 0px 0px 3px 1px; z-index: 999; li { margin: 2px 0; text-align: center; font-size: 16px; color: black; } li:hover a { color: #ef8201; } } } .patent:hover .patentShow { display: block; } .Retrieval { position: relative; .RetrievalShow { display: none; position: absolute; @@ -722,30 +792,36 @@ border: 1px solid #c2c2c2; // box-shadow: 0px 0px 3px 1px; z-index: 999; li { height: 40px; line-height: 40px; text-align: center; font-size: 16px; color: black; span { font-size: 20px; } } li:hover a { color: #ef8201; } } } .Retrieval:hover .RetrievalShow { display: block; } } .language { cursor: pointer; width: 10%; display: flex; justify-content: space-around; li { height: 62px; line-height: 73px; @@ -755,10 +831,12 @@ font-style: normal; font-size: 16px; } li:nth-child(1) { color: #ef8201; } } .home_icon, .classList, .language, @@ -767,6 +845,7 @@ display: none; } } .nav { @media screen and (max-width: 1280px) { position: absolute; @@ -776,64 +855,80 @@ } } } main { width: 100%; display: flex; .left { width: 20%; .left_search { padding: 0 25px; } .condition-box{ .condition-box { border: 1px solid #ef8201; padding: 10px; margin-bottom: 10px; li{ li { display: flex; // align-items: center; span.in{ span.in { color: green; &.not{ &.not { color: red; } } span.label{ span.label { max-width: 70px; margin-right: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } span.list{ span.list { flex: 1; color: #ef8201; } .anticon-close{ .anticon-close { cursor: pointer; padding-top: 3px; &:hover{ &:hover { color: #ef8201; } } } } .option-list li{ .option-list li { display: flex; width: 100%; justify-content: space-between; } .option-btn{ .option-btn { padding-top: 10px; >*{ >* { margin-right: 8px; } } .siftDialog { margin: 20px auto; width: 90%; text-align: left; border: 1px solid #c2c2c2; div { width: 80%; font-family: "微软雅黑"; @@ -842,17 +937,20 @@ font-size: 12px; margin: 5px auto; } span { width: 80%; padding-left: 30px; } } .allPatent { width: 100%; padding-left: 25px; margin: 20px auto; display: flex; } .countryList { width: 100%; margin: 10px auto; @@ -860,23 +958,27 @@ display: flex; flex-direction: column; flex-wrap: nowrap; .list { width: 100%; padding-left: 20px; .item { display: block; margin: 2px 0; text-align: left; } } } .more { width: 100%; padding-left: 25px; height: 40px; line-height: 40px; display: flex; .sift, .exclude { width: 60px; @@ -887,23 +989,28 @@ } } } .right { width: 80%; padding: 0 20px; .header { width: 100%; // height: 60px; // line-height: 60px; text-align: center; display: flex; div { margin: 0 20px; } } .dataList { width: 100%; margin-top: 20px; padding: 40px; .checkAll { width: 100%; text-align: left; @@ -911,16 +1018,20 @@ display: flex; align-items: center; } .list { width: 100%; margin-bottom: 40px; display: flex; .item { width: 100%; text-align: left; .header { width: 100%; align-items: center; // background: #ffffff; .point { position: relative; @@ -931,16 +1042,19 @@ // border-radius: 50%; margin: 0 5px 0 0; } .application { font-size: 18px; font-weight: 400; cursor: pointer; } .ant-tag { height: 20px; margin-left: 10px; } } .title { padding-left: 20px; font-size: 20px; @@ -948,11 +1062,14 @@ font-weight: bold; cursor: pointer; } ul { width: 100%; padding-left: 20px; li { margin: 5px 0; // display: flex; span:nth-child(1) { color: #a0a2a0; @@ -961,6 +1078,7 @@ } } } .content { // color: #a0a2a0; font-size: 14px; @@ -973,6 +1091,7 @@ } } } footer { // position: absolute; // bottom: 0; @@ -985,6 +1104,7 @@ font-style: normal; font-size: 14px; text-align: center; // @media (max-width: 1280px) { // position: relative; // top: var(--height); @@ -994,6 +1114,7 @@ margin: 0 auto; line-height: 80px; justify-content: space-between; @media (max-width: 1280px) { width: 90%; }