Commit 2fbd9c61 by liudx

初始化项目

parents
> 1%
last 2 versions
not dead
module.exports = {
root: true,
env: {
node: true
},
'extends': [
'plugin:vue/vue3-essential',
'eslint:recommended'
],
parserOptions: {
parser: 'babel-eslint'
},
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
}
}
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# patent_ty
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "patent_ty",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"ant-design-vue": "^3.2.20",
"core-js": "^3.6.5",
"echarts": "^5.4.2",
"postcss-px2rem": "^0.3.0",
"px2rem-loader": "^0.1.9",
"vue": "^3.0.0",
"vue-router": "^4.0.0-0",
"vuex": "^4.0.0-0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.15",
"@vue/cli-plugin-eslint": "~4.5.15",
"@vue/cli-plugin-router": "~4.5.15",
"@vue/cli-plugin-vuex": "~4.5.15",
"@vue/cli-service": "~4.5.15",
"@vue/compiler-sfc": "^3.0.0",
"babel-eslint": "^10.1.0",
"eslint": "^6.7.2",
"eslint-plugin-vue": "^7.0.0",
"less": "^3.0.4",
"less-loader": "^5.0.0"
}
}
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<template>
<!-- <div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link>
</div>
<router-view/> -->
<router-view/>
</template>
<style lang="less">
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
// text-align: center;
color: #2c3e50;
box-sizing: border-box !important;
background-color: #F2F3F5;
}
html,body,#app{
height: 100%;
}
::-webkit-scrollbar
{
width: 10px;
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track
{
border-radius: 10px;
background-color: rgba(0,0,0,0.1);
}
/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb
{
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: rgba(0,0,0,0.1);
}
</style>
@font-face {
font-family: 'jiangcheng';
src: url('./jiangcheng.ttf');
font-weight: normal;
font-style: normal;
}
\ No newline at end of file
<template>
<div :id="id" :style="style"></div>
</template>
<script>
import * as echarts from "echarts";
export default {
name: "EchartsCon",
data() {
return {
chart: "",
};
},
props: {
id: {
type: String,
},
width: {
type: String,
default: "100%",
},
height: {
type: String,
default: "100%",
},
option: {
type: Object,
default() {
return {
title: {
text: "ECharts 入门示例",
},
tooltip: {},
legend: {
data: ["销量"],
},
xAxis: {
type: "category",
data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
},
yAxis: {
type: "value",
},
series: [
{
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: "line",
},
],
};
},
},
},
computed: {
style() {
return {
width: this.width,
height: this.height,
};
},
},
watch: {
option: {
handler(newVal) {
if (this.chart) {
this.chart.setOption(newVal);
} else {
this.init();
}
},
deep: true,
},
},
mounted() {
this.init();
},
methods: {
init() {
this.chart = echarts.init(document.getElementById(this.id));
this.chart.setOption(this.option);
// window.addEventListener("resize", this.chart.resize);
},
},
};
</script>
<template>
<div class="header">
<div class="header_left">
<img src="../static/login/logo-tylgd.png" alt="" />
<span>专利成果转化智能推荐系统</span>
</div>
<div class="header_right">
<!-- <img src="" alt=""> -->
<span class="portrait "></span>
<span class="tel">{{ username }}</span>
</div>
</div>
</template>
<script>
export default {
name: "HeaderCon",
props:{
'username':{
type:String,
}
}
};
</script>
<style lang="less" scoped>
.header {
height: 65px;
background-color: #fff;
box-shadow: 0px 2px 4px 1px rgba(0, 0, 0, 0.1);
display: flex;
justify-content: space-between;
.header_left {
padding: 10px 29px;
span {
color: #002d70;
font-family: "jiangcheng";
padding: 0 15px;
}
}
.header_right {
padding: 0 50px 30px;
// display: inline-block;
line-height: 60px;
.portrait {
display: inline-block;
border-radius: 50%;
width: 60px;
height: 60px;
background-color: pink;
}
.tel {
padding: 0 15px;
color: #86909C;
font-family: "Microsoft YaHei-Bold";
line-height: 60px;
display: inline-block;
vertical-align: text-bottom;
}
}
}
</style>
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<p>
For a guide and recipes on how to configure / customize this project,<br>
check out the
<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
</p>
<h3>Installed CLI Plugins</h3>
<ul>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex" target="_blank" rel="noopener">vuex</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
</ul>
<h3>Essential Links</h3>
<ul>
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
</ul>
<h3>Ecosystem</h3>
<ul>
<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
</ul>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
props: {
msg: String
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
<template>
<div class="sider">
<div
:class="[current == item.name ? 'sider_item active' : 'sider_item ']"
v-for="item in siderArr"
:key="item.name"
@click="changepage(item.name)"
>
<img
:src="current == item.name ? item.img_select : item.img"
alt=""
class="sider_item_img"
/>
<div
:class="[
current == item.name ? ' sider_item_name active ' : 'sider_item_name',
]"
>
{{ item.name }}
</div>
</div>
</div>
</template>
<script>
export default {
name: "SiderBar",
props: {
current: {
type: String,
default:'首页'
},
},
data() {
return {
siderArr: [
{
name: "首页",
img: require("@/static/home/index/icon-nav01.png"),
img_select: require("@/static/home/index/icon-nav01-select.png"),
},
{
name: "专利",
img: require("@/static/home/index/icon-nav02.png"),
img_select: require("@/static/home/index/icon-nav02-select.png"),
},
{
name: "企业",
img: require("@/static/home/index/icon-nav03.png"),
img_select: require("@/static/home/index/icon-nav03-select.png"),
},
{
name: "历史记录",
img: require("@/static/home/index/icon-nav04.png"),
img_select: require("@/static/home/index/icon-nav04-select.png"),
},
{
name: "我的关注",
img: require("@/static/home/index/icon-nav05.png"),
img_select: require("@/static/home/index/icon-nav05-select.png"),
},
],
};
},
methods: {
changepage(name) {
// this.current = name;
this.$emit("changepage", name);
},
},
};
</script>
<style lang="less" scoped>
.sider {
// height: calc(100% - 70px);
background-color: #002d70;
width: 80px;
.sider_item {
height: 100px;
text-align: center;
padding: 20px 10px 20px 0;
.sider_item_img {
width: 27px;
}
.sider_item_name {
margin-top: 10px;
color: #848bad;
font-size: 14px;
text-align: center;
}
.active {
color: #fff;
}
}
.active {
background-color: #124795;
color: #fff;
}
}
</style>
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import Antd from 'ant-design-vue';
import './utils/rem'
import 'ant-design-vue/dist/antd.css';
createApp(App)
.use(store)
.use(Antd)
.use(router)
.mount('#app')
import { createRouter, createWebHistory } from 'vue-router'
// import HomeView from '../views/HomeView.vue'
import login from "../views/login/index.vue"
import home from "../views/home/home.vue"
import index from "../views/home/index.vue"
import company from "../views/company/index.vue"
import patent from "../views/patent/index.vue"
import patentDetails from "../views/patent/patentDetails.vue"
import history from "../views/history/index.vue"
import follow from "../views/follow/index.vue"
import AdminLogin from "../views/login/admin.vue"
import forget from "../views/login/forget.vue"
const routes = [
{
path: '/',
redirect: '/login'
// component: AdminLogin,
},
{
path: '/login',
name: 'login',
component: login,
},
{
path: '/adminLogin',
name: 'AdminLogin',
component: AdminLogin,
},
{
path: '/forget',
name: 'forget',
component: forget,
},
{
path: '/index',
name: 'index',
component: index,
redirect: '/home',
children: [
{
path: '/home',
name: 'home',
component: home
},
{
path: '/company',
name: 'company',
component: company
},
{
path: '/patent',
name: 'patent',
component: patent,
},
{
path: '/history',
name: 'history',
component: history
},
{
path: '/follow',
name: 'follow',
component: follow
},
{
path: '/patentDetails',
name: 'patentDetails',
component: patentDetails
},
]
},
// path: '/about',
// name: 'about',
// // route level code-splitting
// // this generates a separate chunk (about.[hash].js) for this route
// // which is lazy-loaded when the route is visited.
// // component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
// }
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
import { createStore } from 'vuex'
export default createStore({
state: {
username:'123456'
},
mutations: {
},
actions: {
},
modules: {
}
})
// rem等比适配配置文件
// 基准大小
const baseSize = 16
// 设置 rem 函数
function setRem () {
// 当前页面宽度相对于 1920宽的缩放比例,可根据自己需要修改。
const scale = document.documentElement.clientWidth / 1920
// 设置页面根节点字体大小(“Math.min(scale, 2)” 指最高放大比例为2,可根据实际业务需求调整)
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.onresize = function () {
setRem()
}
\ No newline at end of file
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
export default {
name: 'Home',
components: {
HelloWorld
}
}
</script>
<template>
</template>
<script>
export default {
name:'company',
data(){
return{
}
},
components: {
},
methods:{
},
created(){
}
}
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
</template>
<script>
export default {
name:'follow',
data(){
return{
}
},
components: {
},
methods:{
},
created(){
}
}
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
</template>
<script>
export default {
name:'history',
data(){
return{
}
},
components: {
},
methods:{
},
created(){
}
}
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<div class="home_con">
<!-- 面包屑导航 -->
<a-breadcrumb class="nav_bread">
<a-breadcrumb-item>首页</a-breadcrumb-item>
</a-breadcrumb>
<!-- 搜索部分 -->
<div class="home_search">
<div class="search_tab">
<span>查专利</span>
<span>查企业</span>
</div>
<div class="search">
<a-input-search
v-model:value="searchValue"
placeholder="请输入专利名称、专利号等关键词"
@search="onSearch"
>
<template #enterButton>
<img
style="padding-right: 5px"
src="@/static/home/index/icon-search.png"
alt=""
/>搜索
</template>
</a-input-search>
</div>
<div class="search_info">
<div class="search_tips">
<div class="num">1200w+</div>
<div class="" style="font-family: 'jiangcheng'">企业数量</div>
</div>
<div class="split"></div>
<div class="search_tips">
<div class="num">2400w+</div>
<div class="" style="font-family: 'jiangcheng'">专利数量</div>
</div>
<div class="split"></div>
<div class="search_tips">
<div class="num">3300w+</div>
<div class="" style="font-family: 'jiangcheng'">专利授权数量</div>
</div>
<div class="split"></div>
<div class="search_tips">
<div class="num">20000w+</div>
<div class="" style="font-family: 'jiangcheng'">专利转让数量</div>
</div>
</div>
</div>
<div class="home_list">
<!-- 列表 -->
<div class="ranking">
<div class="ranking_title">
<img src="@/static/home/index/icon-list01.png" alt="" />
<span class="title">&nbsp;企业科创能力榜单</span>
<span class="more">更多</span>
</div>
<!-- 判断是否有数据 -->
<ul v-if="innovateList.length !== 0">
<li class="rank_item" v-for="item in innovateList">
{{ item }}
</li>
</ul>
<div class="empty_img" v-else>
<img src="@/static/home/index/img-empty.png" alt="" />
<div class="nodata">暂无数据</div>
</div>
</div>
<div class="ranking">
<div class="ranking_title">
<img src="@/static/home/index/icon-list02.png" alt="" />
<span class="title">&nbsp;企业技术合作榜单</span>
<span class="more">更多</span>
</div>
<ul v-if="innovateList.length !== 0">
<li class="rank_item" v-for="item in innovateList">
{{ item }}
</li>
</ul>
<div class="empty_img" v-else>
<img src="@/static/home/index/img-empty.png" alt="" />
<div class="nodata">暂无数据</div>
</div>
</div>
<div class="ranking">
<div class="ranking_title">
<img src="@/static/home/index/icon-list02.png" alt="" />
<span class="title">&nbsp;浏览记录</span>
<span class="more">更多</span>
</div>
<ul v-if="followList.length !== 0">
<li class="rank_item" v-for="item in followList">
{{ item }}
</li>
</ul>
<div class="empty_img" v-else>
<img src="@/static/home/index/img-empty.png" alt="" />
<div class="nodata">暂无浏览记录</div>
</div>
</div>
<div class="ranking">
<div class="ranking_title">
<img src="@/static/home/index/icon-list02.png" alt="" />
<span class="title">&nbsp;我的关注</span>
<span class="more">更多</span>
</div>
<ul v-if="followList.length !== 0">
<li class="rank_item" v-for="item in followList">
{{ item }}
</li>
</ul>
<div class="empty_img" v-else>
<img src="@/static/home/index/img-empty.png" alt="" />
<div class="nodata">暂无关注数据</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "home",
data() {
return {
searchValue: "",
followList: [],
innovateList: [
"山煤国际能源集团股份有限公司",
"山煤国际能源集团股份有限公司",
"山煤国际能源集团股份有限公司",
],
};
},
components: {},
methods: {},
mounted() {},
};
</script>
<style lang="less" scoped>
.home {
// height: calc(100% - 80px);
.home_main {
// height: 100%;
width: 100%;
background-color: #ebebeb;
display: flex;
.home_con {
background-color: #ebebeb;
padding-left: 30px;
width: calc(100% -80px);
flex: 1;
.nav_bread {
height: 50px;
padding: 20px 3px;
background-color: #ebebeb;
}
.home_search {
// width: 1820px;
width: calc(100% -80px);
height: 308px;
position: relative;
background: url("~@/static/home/index/img-index01.png") no-repeat;
background-size: 100%;
.search_tab {
position: absolute;
top: 50px;
left: 50px;
span {
color: #fff;
font-family: "jiangcheng";
display: inline-block;
width: 140px;
height: 54px;
border-radius: 27px;
background-color: #4079ff;
text-align: center;
line-height: 54px;
font-size: 18px;
margin-right: 10px;
}
}
.search {
position: absolute;
top: 150px;
left: 50px;
width: 700px;
height: 54px;
background-color: #4079ff !important;
:deep(.ant-input-group .ant-input) {
height: 54px;
font-size: 16px;
border: 2px solid #4079ff;
border-radius: 8px;
}
:deep(.ant-input-search-button) {
height: 54px;
width: 120px;
background-color: #4079ff !important;
color: #fff;
font-size: 18px;
}
}
.search_info {
position: absolute;
bottom: 30px;
left: 50px;
width: 700px;
// height: 54px;
.search_tips {
width: 24%;
display: inline-block;
text-align: center;
.num {
color: #4079ff;
font-family: "jiangcheng";
font-size: 24px;
}
}
.split {
width: 2px;
display: inline-block;
height: 25px;
background-color: #ccc;
}
}
}
.home_list {
padding: 20px;
display: flex;
justify-content: space-evenly;
background-color: #fff;
.ranking {
width: 420px;
height: 487px;
border-radius: 4px;
border: 1px solid #e5e5e5;
padding: 25px 30px;
.empty_img {
text-align: center;
margin: 50% 0;
transform: translateY(-50%);
.nodata {
color: #bbbbbb;
font-size: 20px;
}
}
.title {
font-size: 20px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
font-weight: bold;
color: #1c1c28;
line-height: 28px;
}
.more {
float: right;
color: #bbbbbb;
}
.rank_item {
height: 45px;
line-height: 45px;
color: #555770;
}
li::marker {
color: #ccc;
border-radius: 50%;
font-size: 18px;
}
}
}
}
}
}
</style>
<template>
<div class="home">
<!-- 标题栏 -->
<HeaderCon :username="username"></HeaderCon>
<div class="home_main">
<div class="sider">
<div
:class="[current == item.name ? 'sider_item active' : 'sider_item ']"
v-for="item in siderArr"
:key="item.name"
@click="changepage(item.name)"
>
<img
:src="current == item.name ? item.img_select : item.img"
alt=""
class="sider_item_img"
/>
<div
:class="[
current == item.name
? ' sider_item_name active '
: 'sider_item_name',
]"
>
{{ item.name }}
</div>
</div>
</div>
<router-view />
</div>
</div>
</template>
<script>
import HeaderCon from "../../components/HeaderCon";
import SiderBar from "../../components/SiderBar";
export default {
name: "home",
data() {
return {
current: "首页",
searchValue: "",
siderArr: [
{
name: "首页",
img: require("@/static/home/index/icon-nav01.png"),
img_select: require("@/static/home/index/icon-nav01-select.png"),
},
{
name: "专利",
img: require("@/static/home/index/icon-nav02.png"),
img_select: require("@/static/home/index/icon-nav02-select.png"),
},
{
name: "企业",
img: require("@/static/home/index/icon-nav03.png"),
img_select: require("@/static/home/index/icon-nav03-select.png"),
},
{
name: "历史记录",
img: require("@/static/home/index/icon-nav04.png"),
img_select: require("@/static/home/index/icon-nav04-select.png"),
},
{
name: "我的关注",
img: require("@/static/home/index/icon-nav05.png"),
img_select: require("@/static/home/index/icon-nav05-select.png"),
},
],
followList: [],
innovateList: [
"山煤国际能源集团股份有限公司",
"山煤国际能源集团股份有限公司",
"山煤国际能源集团股份有限公司",
],
};
},
components: {
HeaderCon,
SiderBar,
},
methods: {
changepage(name) {
// console.log(name)
switch (name) {
case "企业":
this.$router.push({
path: "/company",
});
break;
case "首页":
this.$router.push({
path: "/home",
});
break;
case "专利":
this.$router.push({
path: "/patent",
});
break;
case "历史记录":
this.$router.push({
path: "/history",
});
break;
case "我的关注":
this.$router.push({
path: "/follow",
});
break;
}
this.current = name;
},
},
mounted() {},
created() {
this.username = this.$store.state.username;
},
};
</script>
<style lang="less" scoped>
.home {
// height: calc(100% - 80px);
width: calc(100% );
.home_main {
// height: 100%;
width: 100%;
background-color: #ebebeb;
display: flex;
.home_con {
background-color: #ebebeb;
padding-left: 30px;
width: calc(100% -80px);
flex: 1;
.nav_bread {
height: 50px;
padding: 20px 3px;
background-color: #ebebeb;
}
}
}
}
.sider {
// height: calc(100% - 70px);
background-color: #002d70;
width: 80px;
.sider_item {
height: 100px;
text-align: center;
padding: 20px 10px 20px 0;
.sider_item_img {
width: 27px;
}
.sider_item_name {
margin-top: 10px;
color: #848bad;
font-size: 14px;
text-align: center;
}
.active {
color: #fff;
}
}
.active {
background-color: #124795;
color: #fff;
}
}
</style>
<template>
<div class="login">
<header>
<div class="header_left">
<img src="../../static/login/logo-tylgd.png" alt="" />
<span>专利成果转化智能推荐系统</span>
</div>
<div class="header_right">
<span class="email">邮 箱:zysfsyp_1001@163.com</span>
<span class="tel">热 线: 151-0110-6969</span>
</div>
</header>
<div class="con">
<div class="con_left">
<div class="title1">欢迎登录</div>
<div class="title2">太原理工大学专利成果转化智能推荐系统</div>
<div class="con_left_img">
<img src="../../static/login/img-login.png" alt="" />
</div>
</div>
<div class="con_right">
<div class="login_title">
<span>管理员登录</span>
</div>
<a-form
:model="formState"
name="normal_login"
class="login-form"
@finish="onFinish"
@finishFailed="onFinishFailed"
>
<a-form-item
name="username"
:rules="[
{ required: true, message: '请输入用户名!' },
]"
>
<a-input v-model:value="formState.username">
<template #prefix>
<img src="../../static/login/icon-user.png" alt="" />
</template>
</a-input>
</a-form-item>
<a-form-item
name="password"
:rules="[
{ required: true, message: '请输入密码!' },
]"
>
<a-input-password v-model:value="formState.password">
<template #prefix>
<img src="../../static/login/icon-password.png" alt="" />
</template>
</a-input-password>
</a-form-item>
<a-form-item>
<a-form-item name="remember" >
<a-checkbox v-model:checked="formState.remember"
>记住密码</a-checkbox
>
</a-form-item>
<!-- <a-form-item name="remember" style="float: right;">
<a-checkbox v-model:checked="formState.autologin"
>自动登录</a-checkbox
>
</a-form-item> -->
</a-form-item>
<a-form-item>
<a-button
type="primary"
html-type="submit"
class="login-form-button"
>
登录
</a-button>
</a-form-item>
<a-form-item>
<div class="admin_login">
<img src="../../static/login/icon-glydl.png" alt="">&nbsp;&nbsp;
<router-link to="/login">账户登录</router-link>
</div>
<!-- <div style="float: right;">
<a href="">忘记密码</a>
</div> -->
</a-form-item>
</a-form>
</div>
</div>
<footer>
<a style="color: #818A9F;" href="http://zhongyanrenzhi.com/#/product2" target="_blank">产品介绍&nbsp;&nbsp;&nbsp;&nbsp;</a>|
<a style="color: #818A9F;" target="_blank" href="http://zhongyanrenzhi.com/#/into/1"
>&nbsp;&nbsp;&nbsp;&nbsp;关于中研认知</a
><br />
<span>版权所有:北京中研硕福科技有限公司&nbsp;&nbsp;&nbsp;&nbsp;</span
><span>&nbsp;&nbsp;&nbsp;&nbsp;京ICP备19055798号-3 </span>
</footer>
</div>
</template>
<script>
export default {
name: "AdminLogin",
data() {
return {
formState: {
username: "",
password: "",
remember: true,
autologin: false,
},
};
},
};
</script>
<style lang="less" scoped>
/deep/.ant-input-affix-wrapper {
height: 50px;
}
/deep/.ant-form {
margin-top:30px;
}
/deep/.login-form-button {
width: 100%;
height: 50px;
font-weight: bold;
font-size: 18px;
}
/deep/.ant-form-item-control-input{
height: 60px;
}
.login {
background-color: #fafbfe;
height: 100%;
background-image: url("../../static/login/img-bg.png");
header {
height: 65px;
background-color: #fff;
box-shadow: 0px 2px 4px 1px rgba(0, 0, 0, 0.1);
display: flex;
justify-content: space-between;
.header_left {
padding: 10px 29px;
span {
color: #002d70;
font-family: "jiangcheng";
padding: 0 15px;
}
}
.header_right {
padding: 0 200px 30px;
.email {
padding: 0 15px;
border-left: #5271e9 8px solid;
color: #002d70;
font-family: "jiangcheng";
line-height: 65px;
}
.tel {
padding: 0 15px;
color: #002d70;
font-family: "jiangcheng";
line-height: 65px;
}
}
}
.con {
display: flex;
justify-content: space-evenly;
margin: 100px auto 40px;
.con_left {
width: 40%;
margin-right: -20%;
.title1 {
color: #4079ff;
font-family: "jiangcheng";
font-size: 34px;
margin-bottom: 10px;
}
.title2 {
color: #1d2129;
font-family: "jiangcheng";
font-size: 32px;
margin-bottom: 70px;
}
.con_left_img {
img {
width: 70%;
}
}
}
.con_right {
width: 28%;
height: 600px;
border-radius: 8px;
background-color: #fff;
box-shadow: 0px 0px 12px 1px rgba(0, 0, 0, 0.1);
padding: 50px 60px;
.login_title {
color: #4079ff;
font-family: Microsoft YaHei UI-Bold;
font-weight: bold;
line-height: 60px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
span {
font-size: 20px;
padding-bottom: 20px;
border-bottom: 3px solid rgba(82, 113, 233, 1);
}
}
}
.admin_login{
img{
width: 20px;
vertical-align: middle;
}
}
}
footer {
text-align: center;
color: #818a9f;
}
}
</style>
<template>
<div class="login">
<header>
<div class="header_left">
<img src="../../static/login/logo-tylgd.png" alt="" />
<span>专利成果转化智能推荐系统</span>
</div>
<div class="header_right">
<span class="email">邮 箱:zysfsyp_1001@163.com</span>
<span class="tel">热 线: 151-0110-6969</span>
</div>
</header>
<div class="con">
<div class="con_left">
<div class="title1">欢迎登录</div>
<div class="title2">太原理工大学专利成果转化智能推荐系统</div>
<div class="con_left_img">
<img src="../../static/login/img-login.png" alt="" />
</div>
</div>
<div class="con_right">
<div class="login_title">
<span>忘记密码</span>
<span style="float: right;" class="admin_login">
<img src="../../static/login/icon-glydl.png" alt="">&nbsp;&nbsp;
<router-link to="/login">账户登录</router-link>
</span>
</div>
<a-form
:model="formState"
name="normal_login"
class="login-form"
@finish="onFinish"
@finishFailed="onFinishFailed"
>
<a-form-item
name="username"
:rules="[
{ required: true, message: '请输入手机号!' },
]"
>
<a-input v-model:value="formState.username" placeholder="请输入手机号">
<template #prefix>
<img src="../../static/login/icon-user.png" alt="" />
</template>
</a-input>
</a-form-item>
<a-form-item
name="decode"
:rules="[
{ required: true, message: '请输入验证码!' },
]"
>
<a-input v-model:value="formState.code" placeholder="请输入验证码">
<template #prefix>
<img src="../../static/login/icon-yzm.png" alt="" />
</template>
<template #suffix>
<span v-show="!isSend" class="code" @click="sendCode"
>获取验证码</span
>
<span v-show="isSend" class="send_code"
>{{ RemainingTime }}秒后重新获取</span
>
</template>
</a-input>
</a-form-item>
<a-form-item
name="password"
:rules="[
{ required: true, message: '请输入密码!' },
]"
>
<a-input-password v-model:value="formState.password" placeholder="请输入新密码">
<template #prefix>
<img src="../../static/login/icon-password.png" alt="" />
</template>
</a-input-password>
</a-form-item>
<a-form-item
name="password"
:rules="[
{ required: true, message: '请输入密码!' },
]"
>
<a-input-password v-model:value="formState.repassword" placeholder="请再次输入新密码">
<template #prefix>
<img src="../../static/login/icon-password.png" alt="" />
</template>
</a-input-password>
</a-form-item>
<a-form-item>
<a-button
type="primary"
html-type="submit"
class="login-form-button"
>
重置密码
</a-button>
</a-form-item>
</a-form>
</div>
</div>
<footer>
<a style="color: #818A9F;" href="http://zhongyanrenzhi.com/#/product2" target="_blank">产品介绍&nbsp;&nbsp;&nbsp;&nbsp;</a>|
<a style="color: #818A9F;" target="_blank" href="http://zhongyanrenzhi.com/#/into/1"
>&nbsp;&nbsp;&nbsp;&nbsp;关于中研认知</a
><br />
<span>版权所有:北京中研硕福科技有限公司&nbsp;&nbsp;&nbsp;&nbsp;</span
><span>&nbsp;&nbsp;&nbsp;&nbsp;京ICP备19055798号-3 </span>
</footer>
</div>
</template>
<script>
export default {
name: "forget",
data() {
return {
isSend:false,
RemainingTime:60,
formState: {
username: "",
code: "",
password:"",
repassword:""
},
};
},
};
</script>
<style lang="less" scoped>
/deep/.ant-input-affix-wrapper {
height: 50px;
}
/deep/.ant-form {
margin-top:30px;
clear: both;
}
/deep/.login-form-button {
width: 100%;
height: 50px;
font-weight: bold;
font-size: 18px;
}
/deep/.ant-form-item-control-input{
height: 60px;
}
.login {
background-color: #fafbfe;
height: 100%;
background-image: url("../../static/login/img-bg.png");
header {
height: 65px;
background-color: #fff;
box-shadow: 0px 2px 4px 1px rgba(0, 0, 0, 0.1);
display: flex;
justify-content: space-between;
.header_left {
padding: 10px 29px;
span {
color: #002d70;
font-family: "jiangcheng";
padding: 0 15px;
}
}
.header_right {
padding: 0 200px 30px;
.email {
padding: 0 15px;
border-left: #5271e9 8px solid;
color: #002d70;
font-family: "jiangcheng";
line-height: 65px;
}
.tel {
padding: 0 15px;
color: #002d70;
font-family: "jiangcheng";
line-height: 65px;
}
}
}
.con {
display: flex;
justify-content: space-evenly;
margin: 100px auto 40px;
.con_left {
width: 40%;
margin-right: -20%;
.title1 {
color: #4079ff;
font-family: "jiangcheng";
font-size: 34px;
margin-bottom: 10px;
}
.title2 {
color: #1d2129;
font-family: "jiangcheng";
font-size: 32px;
margin-bottom: 70px;
}
.con_left_img {
img {
width: 70%;
}
}
}
.con_right {
width: 28%;
height: 600px;
border-radius: 8px;
background-color: #fff;
box-shadow: 0px 0px 12px 1px rgba(0, 0, 0, 0.1);
padding: 50px 60px;
.login_title {
color: #4079ff;
font-family: Microsoft YaHei UI-Bold;
font-weight: bold;
line-height: 60px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
span:nth-child(1) {
font-size: 20px;
padding-bottom: 20px;
border-bottom: 3px solid rgba(82, 113, 233, 1);
}
}
.code{
color: #3E7BFA;
cursor: pointer;
}
}
.admin_login{
img{
width: 20px;
vertical-align: middle;
}
}
}
footer {
text-align: center;
color: #818a9f;
}
}
</style>
<template>
<div class="login">
<header>
<div class="header_left">
<img src="../../static/login/logo-tylgd.png" alt="" />
<span>专利成果转化智能推荐系统</span>
</div>
<div class="header_right">
<span class="email">邮 箱:zysfsyp_1001@163.com</span>
<span class="tel">热 线: 151-0110-6969</span>
</div>
</header>
<div class="con">
<div class="con_left">
<div class="title1">欢迎登录</div>
<div class="title2">太原理工大学专利成果转化智能推荐系统</div>
<div class="con_left_img">
<img src="../../static/login/img-login.png" alt="" />
</div>
</div>
<div class="con_right">
<div class="login_title">
<span>账户登录</span>
</div>
<a-form
:model="formState"
name="normal_login"
class="login-form"
@finish="onFinish"
@finishFailed="onFinishFailed"
>
<a-form-item
name="username"
:rules="[
{ required: true, message: '请输入用户名!' },
]"
>
<a-input v-model:value="formState.username">
<template #prefix>
<img src="../../static/login/icon-user.png" alt="" />
</template>
</a-input>
</a-form-item>
<a-form-item
name="password"
:rules="[
{ required: true, message: '请输入密码!' },
]"
>
<a-input-password v-model:value="formState.password">
<template #prefix>
<img src="../../static/login/icon-password.png" alt="" />
</template>
</a-input-password>
</a-form-item>
<a-form-item>
<a-form-item name="remember" style="float: left;">
<a-checkbox v-model:checked="formState.remember"
>记住密码</a-checkbox
>
</a-form-item>
<a-form-item name="remember" style="float: right;">
<a-checkbox v-model:checked="formState.autologin"
>自动登录</a-checkbox
>
</a-form-item>
</a-form-item>
<a-form-item>
<a-button
type="primary"
html-type="submit"
class="login-form-button"
>
登录
</a-button>
</a-form-item>
<a-form-item>
<div class="admin_login" style="float: left;">
<img src="../../static/login/icon-glydl.png" alt="">&nbsp;&nbsp;
<!-- <a href="">管理员登录</a> -->
<router-link to="/adminLogin">管理员登录</router-link>
</div>
<div style="float: right;">
<router-link to="/forget">忘记密码</router-link>
</div>
</a-form-item>
</a-form>
</div>
</div>
<footer>
<a style="color: #818A9F;" href="http://zhongyanrenzhi.com/#/product2" target="_blank">产品介绍&nbsp;&nbsp;&nbsp;&nbsp;</a>|
<a style="color: #818A9F;" target="_blank" href="http://zhongyanrenzhi.com/#/into/1"
>&nbsp;&nbsp;&nbsp;&nbsp;关于中研认知</a
><br />
<span>版权所有:北京中研硕福科技有限公司&nbsp;&nbsp;&nbsp;&nbsp;</span
><span>&nbsp;&nbsp;&nbsp;&nbsp;京ICP备19055798号-3 </span>
</footer>
</div>
</template>
<script>
export default {
name: "login",
data() {
return {
formState: {
username: "",
password: "",
remember: true,
autologin: false,
},
};
},
};
</script>
<style lang="less" scoped>
/deep/.ant-input-affix-wrapper {
height: 50px;
}
/deep/.ant-form {
margin-top:30px;
}
/deep/.login-form-button {
width: 100%;
height: 50px;
font-weight: bold;
font-size: 18px;
}
/deep/.ant-form-item-control-input{
height: 60px;
}
.login {
background-color: #fafbfe;
height: 100%;
background-image: url("../../static/login/img-bg.png");
header {
height: 65px;
background-color: #fff;
box-shadow: 0px 2px 4px 1px rgba(0, 0, 0, 0.1);
display: flex;
justify-content: space-between;
.header_left {
padding: 10px 29px;
span {
color: #002d70;
font-family: "jiangcheng";
padding: 0 15px;
}
}
.header_right {
padding: 0 200px 30px;
.email {
padding: 0 15px;
border-left: #5271e9 8px solid;
color: #002d70;
font-family: "jiangcheng";
line-height: 65px;
}
.tel {
padding: 0 15px;
color: #002d70;
font-family: "jiangcheng";
line-height: 65px;
}
}
}
.con {
display: flex;
justify-content: space-evenly;
margin: 100px auto 40px;
.con_left {
width: 40%;
margin-right: -20%;
.title1 {
color: #4079ff;
font-family: "jiangcheng";
font-size: 34px;
margin-bottom: 10px;
}
.title2 {
color: #1d2129;
font-family: "jiangcheng";
font-size: 32px;
margin-bottom: 70px;
}
.con_left_img {
img {
width: 70%;
}
}
}
.con_right {
width: 28%;
height: 600px;
border-radius: 8px;
background-color: #fff;
box-shadow: 0px 0px 12px 1px rgba(0, 0, 0, 0.1);
padding: 50px 60px;
.login_title {
color: #4079ff;
font-family: Microsoft YaHei UI-Bold;
font-weight: bold;
line-height: 60px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
span {
font-size: 20px;
padding-bottom: 20px;
border-bottom: 3px solid rgba(82, 113, 233, 1);
}
}
}
.admin_login{
img{
width: 20px;
vertical-align: middle;
}
}
}
footer {
text-align: center;
color: #818a9f;
}
}
</style>
<template>
<router-link to="/patentDetails">专利</router-link>
<router-view></router-view>
</template>
<script>
export default {
name:'patent',
data(){
return{
}
},
components: {
},
methods:{
},
created(){
}
}
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<div class="details">
<a-breadcrumb class="nav_bread">
<a-breadcrumb-item>首页</a-breadcrumb-item>
<a-breadcrumb-item>专利</a-breadcrumb-item>
<a-breadcrumb-item>专利详情</a-breadcrumb-item>
</a-breadcrumb>
<div class="details_title">
<div class="patent_num">{{ "CN109775565B" }}</div>
<div class="patent_num">{{ "一种大直径单桩单钩水下翻桩方法" }}</div>
</div>
<div class="patent_con">
<!-- 技术摘要 -->
<div class="patent_con1">
<h2 class="title">技术摘要</h2>
<p class="desc">
本技术解决的问题:如果是单船起吊,则起重船上一定要具备主吊钩和副吊钩,且钩头方位、各个钩的起重能力需满足要求,否则就只有采用两条起重船才能实现翻身,因此要增加船舶设备的投入,施工成本高。
</p>
</div>
<!-- 摘要 -->
<div class="patent_con1">
<h2 class="title">摘要</h2>
<p class="desc">
本发明公开了一种大直径单桩单钩水下翻桩方法,采用一艘具有一个主钩的起重船并包括以下步骤:先根据单桩起吊后平衡状态时与水平面的夹角为α计算主钩至主吊耳之间的距离以及主钩至单桩底部的距离,然后根据α确定主吊钢丝绳的直径和辅吊钢丝绳的直径;将两根主吊钢丝绳的上端均挂在主钩上,下端各自挂在单桩的两个主吊耳上,再将辅吊钢丝绳的上端挂在主钩上,下端通过U形扣钳制在单桩的底部;主钩起吊单桩,使单桩落入水中,并下放至单桩的底部桩尖触到海底泥面;继续下放起重船的主钩使辅吊钢丝绳逐渐呈松弛状态,将辅吊钢丝绳与主钩脱钩,同时U形扣自动脱离单桩的底部,然后起升主钩将单桩竖立。本发明的翻桩方法可有效降低船舶设备的投入。
</p>
</div>
<!-- 技术领域 -->
</div>
</div>
</template>
<script>
export default {
name: "patentDetails",
data() {
return {};
},
components: {},
methods: {},
created() {},
};
</script>
<style lang="less" scoped>
.details {
padding: 0 30px;
width: calc(100%);
background-color: #ebebeb;
.nav_bread {
height: 50px;
padding: 20px 3px;
background-color: #ebebeb;
}
.details_title {
background-color: #0062c4;
width: 100%;
height: 176px;
.patent_num {
font-size: 25px;
margin-top: 20px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
font-weight: bold;
color: #ffffff;
}
}
.patent_con {
.patent_con1 {
width: 949px;
// height: 175px;
background: #ffffff;
border-radius: 8px 8px 8px 8px;
opacity: 1;
padding: 40px 30px;
margin: 15px 0;
.title {
color: #1c1c28;
font-size: 18px;
font-family: Microsoft YaHei UI-Bold, Microsoft YaHei UI;
font-weight: bold;
line-height: 28px;
}
.desc{
font-size: 12px;
font-family: Microsoft YaHei UI-Regular, Microsoft YaHei UI;
font-weight: 400;
color: #1C1C28;
line-height: 28px;
}
}
}
}
</style>
const path = require('path')
function resolve(dir) {
return path.join(__dirname, dir)
}
// 引入等比适配插件
const px2rem = require('postcss-px2rem')
// 配置基本大小
const postcss = px2rem({
// 基准大小 baseSize,需要和rem.js中相同
remUnit: 16
})
module.exports = {
// devServer: {
// // 端口号
// port: 8080,
// // 配置不同的后台API地址
// proxy: {
// '/api': {
// target: 'http://www.dzm.com',
// ws: false,
// changeOrigin: true,
// pathRewrite: {
// '^/api': ''
// }
// }
// }
// },
configureWebpack: {
resolve: {
alias: {
// eslint-disable-next-line no-undef
'@': resolve('src'),
},
},
},
chainWebpack: config => {
config.plugin('html')
.tap(args => {
args[0].title = '太原理工大学专利成果转化智能推荐系统';
return args;
})
},
css: {
loaderOptions: {
postcss: {
plugins: [
postcss
]
}
}
},
lintOnSave: true,
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment