diff --git a/src/api/admin/laboratory/account.js b/src/api/admin/laboratory/account.js new file mode 100644 index 0000000..132e4c3 --- /dev/null +++ b/src/api/admin/laboratory/account.js @@ -0,0 +1,19 @@ +// 获取用户详细信息 +import request from "@/utils/request"; + +/*获取实验室基本信息*/ +export function getInfo() { + return request({ + url: "/app/laboratory/info", + method: "get", + }); +} + +// 实验室信息修改 +export const updateLaboratory = (data) => { + return request({ + url: "/app/laboratory/updateLaboratory", + method: "POST", + data, + }); +}; \ No newline at end of file diff --git a/src/api/admin/laboratory/patent.js b/src/api/admin/laboratory/patent.js new file mode 100644 index 0000000..f1caa24 --- /dev/null +++ b/src/api/admin/laboratory/patent.js @@ -0,0 +1,40 @@ +import request from "@/utils/request"; + +// 实验室专利列表 +export const labPatentList = (params) => { + return request({ + url: `/app/laboratory/patent/list`, + method: "GET", + params + }); +}; + +// 实验室新增专利 +export const insertLabPatent = (data) => { + return request({ + url: `/app/laboratory/patent`, + method: "POST", + data, + }); +}; + + +/** + * 实验室修改专利 + * @param data + * @return {*} + */ +export const updateLabPatent = (data) => { + return request({ + url: `/app/laboratory/patent`, + method: "PUT", + data, + }); +}; + +export const deleteLabPatentByIds = (ids) => { + return request({ + url: `/app/laboratory/patent/${ids}`, + method: "DELETE", + }); +}; \ No newline at end of file diff --git a/src/api/identity/index.js b/src/api/identity/index.js index c00b617..bc00857 100644 --- a/src/api/identity/index.js +++ b/src/api/identity/index.js @@ -2,75 +2,82 @@ import request from "@/utils/request"; // 首页每一项 export function identity() { - return request({ - url: "/app/getRoleStatus", - }); + return request({ + url: "/app/getRoleStatus", + }); } + // 当前状态 export function settled() { - return request({ - url: "/enterprise/v1/settled", - }); + return request({ + url: "/enterprise/v1/settled", + }); } + // 当前状态切换 export function identitySwitch(data) { - return request({ - url: "/enterprise/v1/user/identity/switch", - method: "post", - data, - }); + return request({ + url: "/enterprise/v1/user/identity/switch", + method: "post", + data, + }); } + // 申请企业入住 export function insertEnterprise(data) { - return request({ - url: "/app/insertEnterprise", - method: "post", - data, - }); + return request({ + url: "/app/insertEnterprise", + method: "post", + data, + }); } + // 专家入驻 export function insertCasExpert(data) { - return request({ - url: "/app/expert/insertCasExpert", - method: "post", - data, - }); + return request({ + url: "/app/expert/insertCasExpert", + method: "post", + data, + }); } + // 所属单位 export function researchSelect() { - return request({ - url: "/enterprise/v1/manage/research/select", - }); + return request({ + url: "/enterprise/v1/manage/research/select", + }); } + // 所属单位>实验室 export function laboratorySelect() { - return request({ - url: "/enterprise/v1/manage/research/laboratory", - }); + return request({ + url: "/enterprise/v1/manage/research/laboratory", + }); } + // 科研机构入驻 export function research(data) { - return request({ - url: "/enterprise/v1/settled/research", - method: "post", - data, - }); + return request({ + url: "/enterprise/v1/settled/research", + method: "post", + data, + }); } // 实验室入驻 -export function laboratory(data) { - return request({ - url: "/enterprise/v1/settled/laboratory", - method: "post", - data, - }); +export function insertLaboratory(data) { + return request({ + url: "/app/laboratory/insertLaboratory", + method: "post", + data, + }); } // 实验室入驻 export function agent(data) { - return request({ - url: "/enterprise/v1/settled/agent", - method: "post", - data, - }); + return request({ + url: "/enterprise/v1/settled/agent", + method: "post", + data, + }); } diff --git a/src/router/index.js b/src/router/index.js index c588566..8b5f9ec 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,4 +1,4 @@ -import { createWebHistory, createRouter } from "vue-router"; +import {createRouter, createWebHistory} from "vue-router"; /* Layout */ import Layout from "@/layout"; import basicInfo from "../views/admin/enterprise/account/basicInfo.vue"; @@ -27,685 +27,751 @@ import basicInfo from "../views/admin/enterprise/account/basicInfo.vue"; // 公共路由 export const constantRoutes = [ - { - path: "/", - name: "Home", - component: () => import("../views/website/website-layout.vue"), - hidden: true, - children: [ - { - path: "login", - name: "login", - component: () => import("@/views/website/login/index.vue"), - children: [], - }, - { - path: "", - component: () => import("../views/website/home/index.vue"), - }, - { - path: "searchList/enterprise", - component: () => import("../views/website/searchList/enterprise.vue"), - meta: { - searchType: 1, - }, - }, - { - path: "searchList/enterprise/detail/:id", - component: () => - import("../views/website/searchList/enterpriseDetail.vue"), - meta: { - searchType: 1, - }, - }, - { - path: "searchList/achievement", - component: () => import("../views/website/searchList/achievement.vue"), - meta: { - searchType: 2, - }, - }, - { - path: "searchList/achievement/detail/:id", - component: () => - import("../views/website/searchList/achievementDetail.vue"), - meta: { - searchType: 2, - }, - }, - { - path: "searchList/product/detail/:id", - component: () => - import("../views/website/searchList/productDetail.vue"), - meta: { - searchType: 2, - }, - }, - { - path: "searchList/lab", - component: () => import("../views/website/searchList/lab.vue"), - meta: { - searchType: 8, - }, - }, - { - path: "searchList/lab/detail/:id", - component: () => - import("../views/website/searchList/laboratoryDetail.vue"), - meta: { - searchType: 8, - }, - }, - { - path: "searchList/patent", - component: () => import("../views/website/searchList/patent.vue"), - meta: { - searchType: 4, - }, - }, - { - path: "searchList/patent/detail/:id", - component: () => import("../views/website/searchList/patentDetail.vue"), - meta: { - searchType: 4, - }, - }, - { - path: "searchList/expert", - component: () => import("../views/website/searchList/expert.vue"), - meta: { - searchType: 5, - }, - }, - { - path: "searchList/expert/detail/:id", - component: () => import("../views/website/searchList/expertDetail.vue"), - meta: { - searchType: 5, - }, - }, - { - path: "searchList/serviceDemand", - component: () => - import("../views/website/searchList/serviceDemand.vue"), - meta: { - searchType: 7, - }, - }, - { - path: "searchList/serviceDemand/detail/:id", - component: () => - import("../views/website/searchList/serviceDemandDetail.vue"), - meta: { - searchType: 7, - }, - }, - { - path: "searchList/technologyDemand", - component: () => - import("../views/website/searchList/technologyDemand.vue"), - meta: { - searchType: 6, - }, - }, - { - path: "searchList/technologyDemand/detail/:id", - component: () => - import("../views/website/searchList/technologyDemandDetail.vue"), - meta: { - searchType: 6, - }, - }, - { - path: "solution/:mode", - name: "solution", - component: () => import("../views/website/solution/solution.vue"), - }, - { - path: "solution/detail/:id", - name: "solutionDetail", - component: () => import("../views/website/solution/detail.vue"), - }, - { - path: "/innovate", - name: "innovate", - component: () => import("../views/website/innovate/innovate.vue"), - }, - { - path: "innovate/detail/:id", - name: "innovateDetail", - component: () => import("../views/website/innovate/detail.vue"), - }, - { - path: "activity", - name: "activity", - component: () => import("../views/website/activity/activity.vue"), - // children: [ - // { - // path: '', - // name: 'activityList', - // component: () => import('../views/website/activity/list.vue'), - // }, - // { - // path: 'detail/:id', - // name: 'activityDetail', - // component: () => import('../views/website/activity/detail.vue'), - // }, - // ] - }, - { - path: "about", - name: "about", - component: () => import("../views/website/about/about.vue"), - }, - ], - }, + { + path: "/", + name: "Home", + component: () => import("../views/website/website-layout.vue"), + hidden: true, + children: [ + { + path: "login", + name: "login", + component: () => import("@/views/website/login/index.vue"), + children: [], + }, + { + path: "", + component: () => import("../views/website/home/index.vue"), + }, + { + path: "searchList/enterprise", + component: () => import("../views/website/searchList/enterprise.vue"), + meta: { + searchType: 1, + }, + }, + { + path: "searchList/enterprise/detail/:id", + component: () => + import("../views/website/searchList/enterpriseDetail.vue"), + meta: { + searchType: 1, + }, + }, + { + path: "searchList/achievement", + component: () => import("../views/website/searchList/achievement.vue"), + meta: { + searchType: 2, + }, + }, + { + path: "searchList/achievement/detail/:id", + component: () => + import("../views/website/searchList/achievementDetail.vue"), + meta: { + searchType: 2, + }, + }, + { + path: "searchList/product/detail/:id", + component: () => + import("../views/website/searchList/productDetail.vue"), + meta: { + searchType: 2, + }, + }, + { + path: "searchList/lab", + component: () => import("../views/website/searchList/lab.vue"), + meta: { + searchType: 8, + }, + }, + { + path: "searchList/lab/detail/:id", + component: () => + import("../views/website/searchList/laboratoryDetail.vue"), + meta: { + searchType: 8, + }, + }, + { + path: "searchList/patent", + component: () => import("../views/website/searchList/patent.vue"), + meta: { + searchType: 4, + }, + }, + { + path: "searchList/patent/detail/:id", + component: () => import("../views/website/searchList/patentDetail.vue"), + meta: { + searchType: 4, + }, + }, + { + path: "searchList/expert", + component: () => import("../views/website/searchList/expert.vue"), + meta: { + searchType: 5, + }, + }, + { + path: "searchList/expert/detail/:id", + component: () => import("../views/website/searchList/expertDetail.vue"), + meta: { + searchType: 5, + }, + }, + { + path: "searchList/serviceDemand", + component: () => + import("../views/website/searchList/serviceDemand.vue"), + meta: { + searchType: 7, + }, + }, + { + path: "searchList/serviceDemand/detail/:id", + component: () => + import("../views/website/searchList/serviceDemandDetail.vue"), + meta: { + searchType: 7, + }, + }, + { + path: "searchList/technologyDemand", + component: () => + import("../views/website/searchList/technologyDemand.vue"), + meta: { + searchType: 6, + }, + }, + { + path: "searchList/technologyDemand/detail/:id", + component: () => + import("../views/website/searchList/technologyDemandDetail.vue"), + meta: { + searchType: 6, + }, + }, + { + path: "solution/:mode", + name: "solution", + component: () => import("../views/website/solution/solution.vue"), + }, + { + path: "solution/detail/:id", + name: "solutionDetail", + component: () => import("../views/website/solution/detail.vue"), + }, + { + path: "/innovate", + name: "innovate", + component: () => import("../views/website/innovate/innovate.vue"), + }, + { + path: "innovate/detail/:id", + name: "innovateDetail", + component: () => import("../views/website/innovate/detail.vue"), + }, + { + path: "activity", + name: "activity", + component: () => import("../views/website/activity/activity.vue"), + // children: [ + // { + // path: '', + // name: 'activityList', + // component: () => import('../views/website/activity/list.vue'), + // }, + // { + // path: 'detail/:id', + // name: 'activityDetail', + // component: () => import('../views/website/activity/detail.vue'), + // }, + // ] + }, + { + path: "about", + name: "about", + component: () => import("../views/website/about/about.vue"), + }, + ], + }, - { - path: "/redirect", - component: Layout, - hidden: true, - children: [ - { - path: "/redirect/:path(.*)", - component: () => import("@/views/redirect/index.vue"), - }, - ], - }, - // { - // path: "/login", - // component: () => import("@/views/login"), - // hidden: true, - // }, - // { - // path: "/register", - // component: () => import("@/views/register"), - // hidden: true, - // }, - { - path: "/:pathMatch(.*)*", - component: () => import("@/views/error/404"), - hidden: true, - }, - { - path: "/401", - component: () => import("@/views/error/401"), - hidden: true, - }, + { + path: "/redirect", + component: Layout, + hidden: true, + children: [ + { + path: "/redirect/:path(.*)", + component: () => import("@/views/redirect/index.vue"), + }, + ], + }, + // { + // path: "/login", + // component: () => import("@/views/login"), + // hidden: true, + // }, + // { + // path: "/register", + // component: () => import("@/views/register"), + // hidden: true, + // }, + { + path: "/:pathMatch(.*)*", + component: () => import("@/views/error/404"), + hidden: true, + }, + { + path: "/401", + component: () => import("@/views/error/401"), + hidden: true, + }, - { - path: "/identity", - component: () => import("@/views/identity/layout"), - hidden: true, - children: [ - { - path: "index", - component: () => import("@/views/identity/index"), - name: "index", - meta: { title: "身份选择" }, - }, - { - path: "enterprise", - component: () => import("@/views/identity/enterprise"), - name: "enterprise", - meta: { title: "企业入驻" }, - }, - { - path: "expert", - component: () => import("@/views/identity/expert"), - name: "expert", - meta: { title: "专家入驻" }, - }, - // { - // path:'research', - // component: () => import('@/views/identity/research'), - // name: 'research', - // meta: { title: '研究机构入驻'} - // }, - // { - // path:'laboratory', - // component: () => import('@/views/identity/laboratory'), - // name: 'laboratory', - // meta: { title: '实验室入驻'} - // }, - // { - // path:'agent', - // component: () => import('@/views/identity/agent'), - // name: 'agent', - // meta: { title: '科技经纪人入驻'} - // } - ], - }, - //TODO: + { + path: "/identity", + component: () => import("@/views/identity/layout"), + hidden: true, + children: [ + { + path: "index", + component: () => import("@/views/identity/index"), + name: "index", + meta: {title: "身份选择"}, + }, + { + path: "enterprise", + component: () => import("@/views/identity/enterprise"), + name: "enterprise", + meta: {title: "企业入驻"}, + }, + { + path: "expert", + component: () => import("@/views/identity/expert"), + name: "expert", + meta: {title: "专家入驻"}, + }, + { + path: 'research', + component: () => import('@/views/identity/research'), + name: 'research', + meta: {title: '研究机构入驻'} + }, + { + path: 'laboratory', + component: () => import('@/views/identity/laboratory'), + name: 'laboratory', + meta: {title: '实验室入驻'} + }, + { + path: 'agent', + component: () => import('@/views/identity/agent'), + name: 'agent', + meta: {title: '科技经纪人入驻'} + } + ], + }, + //TODO: - // { - // path: '', - // component: Layout, - // redirect: '/index', - // children: [ - // { - // path: '/index', - // component: () => import('@/views/index'), - // name: 'Index', - // meta: { title: '首页', icon: 'dashboard', affix: true } - // } - // ] - // }, - { - path: "/user", - component: Layout, - hidden: true, - redirect: "noredirect", - children: [ - { - path: "profile", - component: () => import("@/views/system/user/profile/index"), - name: "Profile", - meta: { title: "个人中心", icon: "user" }, - }, - ], - }, + // { + // path: '', + // component: Layout, + // redirect: '/index', + // children: [ + // { + // path: '/index', + // component: () => import('@/views/index'), + // name: 'Index', + // meta: { title: '首页', icon: 'dashboard', affix: true } + // } + // ] + // }, + { + path: "/user", + component: Layout, + hidden: true, + redirect: "noredirect", + children: [ + { + path: "profile", + component: () => import("@/views/system/user/profile/index"), + name: "Profile", + meta: {title: "个人中心", icon: "user"}, + }, + ], + }, ]; // 企业后台路由表 export const enterpriseRoutes = [ - { - path: "/admin", - component: Layout, - redirect: "/admin/index", - children: [ - { - path: "index", - component: () => import("@/views/admin/enterprise/index"), - name: "Index", - meta: { title: "首页", icon: "dashboard", affix: true }, - }, - ], - }, - { - path: "/account", - component: Layout, - meta: { title: "账号管理", icon: "dashboard" }, - alwaysShow: true, - redirect: "/account/basicInfo", - children: [ - { - path: "basicInfo", - component: basicInfo, - name: "basicInfo", - meta: { title: "基本资料", icon: "list" }, - }, - { - path: "joinMembership", - component: () => - import("@/views/admin/enterprise/account/joinMembership"), - name: "joinMembership", - meta: { title: "开通会员", icon: "list" }, - }, - { - path: "bill", - component: () => import("@/views/admin/enterprise/account/bill"), - name: "Bill", - meta: { title: "账单列表", icon: "list" }, - }, - // { - // path: "record", - // component: () => import("@/views/admin/enterprise/account/record"), - // name: "Record", - // meta: { title: "创新币兑换记录", icon: "list" }, - // }, - ], - }, - { - path: "/extension", - component: Layout, - meta: { title: "产品推广", icon: "dashboard" }, - alwaysShow: true, - redirect: "/extension/product", - children: [ - { - path: "product", - component: () => import("@/views/admin/enterprise/extension/product"), - name: "Product", - meta: { title: "产品列表", icon: "list" }, - }, - { - path: "release", - component: () => import("@/views/admin/enterprise/extension/release"), - hidden: true, - name: "Release", - meta: { title: "发布产品", icon: "list" }, - }, - { - path: "results", - component: () => import("@/views/admin/enterprise/extension/results"), - hidden: true, - name: "Results", - meta: { title: "匹配结果", icon: "list", isMatch: true }, - }, - { - path: "business", - component: () => import("@/views/admin/enterprise/extension/business"), - hidden: true, - name: "Business", - meta: { title: "浏览信息", icon: "list" }, - }, - ], - }, - { - path: "/demand", - component: Layout, - meta: { title: "需求管理", icon: "dashboard" }, - alwaysShow: true, - redirect: "/demand/serviceDemand", - children: [ - { - path: "serviceDemand", - component: () => - import("@/views/admin/enterprise/demand/serviceDemand"), - name: "serviceDemand", - meta: { title: "服务需求", icon: "list" }, - }, - { - path: "releaseService", - component: () => - import("@/views/admin/enterprise/demand/releaseService"), - hidden: true, - name: "releaseService", - meta: { title: "发布服务需求", icon: "list" }, - }, - { - path: "technology", - component: () => import("@/views/admin/enterprise/demand/technology"), - name: "technology", - meta: { title: "技术需求", icon: "list" }, - }, - { - path: "releaseTechnology", - component: () => - import("@/views/admin/enterprise/demand/releaseTechnology"), - hidden: true, - name: "releaseTechnology", - meta: { title: "发布技术需求", icon: "list" }, - }, - { - path: "results", - component: () => import("@/views/admin/enterprise/extension/results"), - hidden: true, - name: "results", - meta: { title: "匹配结果", icon: "list", isMatch: true }, - }, - ], - }, - { - path: "/activity", - component: Layout, - meta: { title: "活动管理", icon: "dashboard" }, - alwaysShow: true, - redirect: "/activity/active", - children: [ - { - path: "active", - component: () => import("@/views/admin/enterprise/activity/active"), - name: "Active", - meta: { title: "活动列表", icon: "list" }, - }, - ], - }, + { + path: "/admin", + component: Layout, + redirect: "/admin/index", + children: [ + { + path: "index", + component: () => import("@/views/admin/enterprise/index"), + name: "Index", + meta: {title: "首页", icon: "dashboard", affix: true}, + }, + ], + }, + { + path: "/account", + component: Layout, + meta: {title: "账号管理", icon: "dashboard"}, + alwaysShow: true, + redirect: "/account/basicInfo", + children: [ + { + path: "basicInfo", + component: basicInfo, + name: "basicInfo", + meta: {title: "基本资料", icon: "list"}, + }, + { + path: "joinMembership", + component: () => + import("@/views/admin/enterprise/account/joinMembership"), + name: "joinMembership", + meta: {title: "开通会员", icon: "list"}, + }, + { + path: "bill", + component: () => import("@/views/admin/enterprise/account/bill"), + name: "Bill", + meta: {title: "账单列表", icon: "list"}, + }, + // { + // path: "record", + // component: () => import("@/views/admin/enterprise/account/record"), + // name: "Record", + // meta: { title: "创新币兑换记录", icon: "list" }, + // }, + ], + }, + { + path: "/extension", + component: Layout, + meta: {title: "产品推广", icon: "dashboard"}, + alwaysShow: true, + redirect: "/extension/product", + children: [ + { + path: "product", + component: () => import("@/views/admin/enterprise/extension/product"), + name: "Product", + meta: {title: "产品列表", icon: "list"}, + }, + { + path: "release", + component: () => import("@/views/admin/enterprise/extension/release"), + hidden: true, + name: "Release", + meta: {title: "发布产品", icon: "list"}, + }, + { + path: "results", + component: () => import("@/views/admin/enterprise/extension/results"), + hidden: true, + name: "Results", + meta: {title: "匹配结果", icon: "list", isMatch: true}, + }, + { + path: "business", + component: () => import("@/views/admin/enterprise/extension/business"), + hidden: true, + name: "Business", + meta: {title: "浏览信息", icon: "list"}, + }, + ], + }, + { + path: "/demand", + component: Layout, + meta: {title: "需求管理", icon: "dashboard"}, + alwaysShow: true, + redirect: "/demand/serviceDemand", + children: [ + { + path: "serviceDemand", + component: () => + import("@/views/admin/enterprise/demand/serviceDemand"), + name: "serviceDemand", + meta: {title: "服务需求", icon: "list"}, + }, + { + path: "releaseService", + component: () => + import("@/views/admin/enterprise/demand/releaseService"), + hidden: true, + name: "releaseService", + meta: {title: "发布服务需求", icon: "list"}, + }, + { + path: "technology", + component: () => import("@/views/admin/enterprise/demand/technology"), + name: "technology", + meta: {title: "技术需求", icon: "list"}, + }, + { + path: "releaseTechnology", + component: () => + import("@/views/admin/enterprise/demand/releaseTechnology"), + hidden: true, + name: "releaseTechnology", + meta: {title: "发布技术需求", icon: "list"}, + }, + { + path: "results", + component: () => import("@/views/admin/enterprise/extension/results"), + hidden: true, + name: "results", + meta: {title: "匹配结果", icon: "list", isMatch: true}, + }, + ], + }, + { + path: "/activity", + component: Layout, + meta: {title: "活动管理", icon: "dashboard"}, + alwaysShow: true, + redirect: "/activity/active", + children: [ + { + path: "active", + component: () => import("@/views/admin/enterprise/activity/active"), + name: "Active", + meta: {title: "活动列表", icon: "list"}, + }, + ], + }, ]; // 专家后台路由表 export const expertRoutes = [ - { - path: "/admin", - component: Layout, - redirect: "/admin/index", - children: [ - { - path: "index", - component: () => import("@/views/admin/expert/index"), - name: "Index", - meta: { title: "首页", icon: "dashboard", affix: true }, - }, - ], - }, - { - path: "/account", - component: Layout, - meta: { title: "账号管理", icon: "dashboard" }, - alwaysShow: true, - // redirect: 'noRedirect', - redirect: "/account/bill", - children: [ - // { - // path: "bill", - // component: () => import("@/views/admin/expert/account/bill"), - // name: "Bill", - // meta: { title: "账单列表", icon: "list" }, - // }, - // { - // path: "exchange", - // component: () => import("@/views/admin/expert/account/exchange"), - // name: "Exchange", - // meta: { title: "兑换记录", icon: "list" }, - // }, - { - path: "basicInfo", - component: () => import("@/views/admin/expert/account/basicInfo"), - name: "basicInfo", - meta: { title: "基本资料", icon: "list" }, - }, - // { - // path: "transactionAuth", - // component: () => import("@/views/admin/expert/account/transactionAuth"), - // name: "transactionAuth", - // meta: { title: "交易认证", icon: "list" }, - // }, - // { - // path: "profit", - // component: () => import("@/views/admin/expert/account/profit"), - // name: "profit", - // meta: { title: "收益管理", icon: "list" }, - // }, - // { - // path: "withdrawal", - // component: () => import("@/views/admin/expert/account/withdrawal"), - // hidden: true, - // name: "Withdrawal", - // meta: { title: "提现记录", icon: "list" }, - // }, - ], - }, - { - path: "/technology", - component: Layout, - meta: { title: "技术管理", icon: "dashboard" }, - alwaysShow: true, - redirect: "/technology/achievement", - children: [ - { - path: "achievement", - component: () => import("@/views/admin/expert/technology/achievement"), - name: "Achievement", - meta: { title: "成果列表", icon: "list" }, - }, - { - path: "release", - component: () => import("@/views/admin/expert/technology/release"), - hidden: true, - name: "Release", - meta: { title: "发布成果", icon: "list" }, - }, - { - path: "results", - // component: () => import("@/views/admin/expert/technology/results"), - component: () => import("@/views/admin/enterprise/extension/results"), - hidden: true, - name: "Results", - meta: { title: "匹配结果", icon: "list", isMatch: false }, - }, - { - path: "patent", - component: () => import("@/views/admin/expert/technology/patent"), - name: "patent", - meta: { title: "专利列表", icon: "list" }, - }, - { - path: "claimPatent", - component: () => import("@/views/admin/expert/technology/claimPatent"), - hidden: true, - name: "claimPatent", - meta: { title: "认领专利", icon: "list" }, - }, - { - path: "paper", - component: () => import("@/views/admin/expert/technology/paper"), - name: "Paper", - meta: { title: "论文列表", icon: "list" }, - }, - { - path: "research", - component: () => import("@/views/admin/expert/technology/research"), - name: "Research", - meta: { title: "科研项目列表", icon: "list" }, - }, - ], - }, - { - path: "/demand", - component: Layout, - meta: { title: "需求管理", icon: "dashboard" }, - alwaysShow: true, - redirect: "/demand/serviceDemand", - children: [ - { - path: "serviceDemand", - component: () => import("@/views/admin/expert/demand/serviceDemand"), - name: "serviceDemand", - meta: { title: "服务需求", icon: "list" }, - }, - { - path: "release", - component: () => import("@/views/admin/expert/demand/release"), - hidden: true, - name: "release", - meta: { title: "发布需求", icon: "list" }, - }, - { - path: "already", - component: () => import("@/views/admin/expert/demand/already"), - name: "already", - meta: { title: "已合作企业", icon: "list" }, - }, - { - path: "think", - component: () => import("@/views/admin/expert/demand/think"), - name: "think", - meta: { title: "想合作企业", icon: "list" }, - }, - ], - }, + { + path: "/admin", + component: Layout, + redirect: "/admin/index", + children: [ + { + path: "index", + component: () => import("@/views/admin/expert/index"), + name: "Index", + meta: {title: "首页", icon: "dashboard", affix: true}, + }, + ], + }, + { + path: "/account", + component: Layout, + meta: {title: "账号管理", icon: "dashboard"}, + alwaysShow: true, + // redirect: 'noRedirect', + redirect: "/account/bill", + children: [ + // { + // path: "bill", + // component: () => import("@/views/admin/expert/account/bill"), + // name: "Bill", + // meta: { title: "账单列表", icon: "list" }, + // }, + // { + // path: "exchange", + // component: () => import("@/views/admin/expert/account/exchange"), + // name: "Exchange", + // meta: { title: "兑换记录", icon: "list" }, + // }, + { + path: "basicInfo", + component: () => import("@/views/admin/expert/account/basicInfo"), + name: "basicInfo", + meta: {title: "基本资料", icon: "list"}, + }, + // { + // path: "transactionAuth", + // component: () => import("@/views/admin/expert/account/transactionAuth"), + // name: "transactionAuth", + // meta: { title: "交易认证", icon: "list" }, + // }, + // { + // path: "profit", + // component: () => import("@/views/admin/expert/account/profit"), + // name: "profit", + // meta: { title: "收益管理", icon: "list" }, + // }, + // { + // path: "withdrawal", + // component: () => import("@/views/admin/expert/account/withdrawal"), + // hidden: true, + // name: "Withdrawal", + // meta: { title: "提现记录", icon: "list" }, + // }, + ], + }, + { + path: "/technology", + component: Layout, + meta: {title: "技术管理", icon: "dashboard"}, + alwaysShow: true, + redirect: "/technology/achievement", + children: [ + { + path: "achievement", + component: () => import("@/views/admin/expert/technology/achievement"), + name: "Achievement", + meta: {title: "成果列表", icon: "list"}, + }, + { + path: "release", + component: () => import("@/views/admin/expert/technology/release"), + hidden: true, + name: "Release", + meta: {title: "发布成果", icon: "list"}, + }, + { + path: "results", + // component: () => import("@/views/admin/expert/technology/results"), + component: () => import("@/views/admin/enterprise/extension/results"), + hidden: true, + name: "Results", + meta: {title: "匹配结果", icon: "list", isMatch: false}, + }, + { + path: "patent", + component: () => import("@/views/admin/expert/technology/patent"), + name: "patent", + meta: {title: "专利列表", icon: "list"}, + }, + { + path: "claimPatent", + component: () => import("@/views/admin/expert/technology/claimPatent"), + hidden: true, + name: "claimPatent", + meta: {title: "认领专利", icon: "list"}, + }, + { + path: "paper", + component: () => import("@/views/admin/expert/technology/paper"), + name: "Paper", + meta: {title: "论文列表", icon: "list"}, + }, + { + path: "research", + component: () => import("@/views/admin/expert/technology/research"), + name: "Research", + meta: {title: "科研项目列表", icon: "list"}, + }, + ], + }, + { + path: "/demand", + component: Layout, + meta: {title: "需求管理", icon: "dashboard"}, + alwaysShow: true, + redirect: "/demand/serviceDemand", + children: [ + { + path: "serviceDemand", + component: () => import("@/views/admin/expert/demand/serviceDemand"), + name: "serviceDemand", + meta: {title: "服务需求", icon: "list"}, + }, + { + path: "release", + component: () => import("@/views/admin/expert/demand/release"), + hidden: true, + name: "release", + meta: {title: "发布需求", icon: "list"}, + }, + { + path: "already", + component: () => import("@/views/admin/expert/demand/already"), + name: "already", + meta: {title: "已合作企业", icon: "list"}, + }, + { + path: "think", + component: () => import("@/views/admin/expert/demand/think"), + name: "think", + meta: {title: "想合作企业", icon: "list"}, + }, + ], + }, - { - path: "/activity", - component: Layout, - meta: { title: "活动管理", icon: "dashboard" }, - alwaysShow: true, - redirect: "/activity/active", - children: [ - { - path: "active", - component: () => import("@/views/admin/expert/activity/active"), - name: "Active", - meta: { title: "活动列表", icon: "list" }, - }, - ], - }, + { + path: "/activity", + component: Layout, + meta: {title: "活动管理", icon: "dashboard"}, + alwaysShow: true, + redirect: "/activity/active", + children: [ + { + path: "active", + component: () => import("@/views/admin/expert/activity/active"), + name: "Active", + meta: {title: "活动列表", icon: "list"}, + }, + ], + }, ]; + +export const laboratoryRoutes = [ + { + path: "/admin", + component: Layout, + redirect: "/admin/index", + children: [ + { + path: "index", + component: () => import("@/views/admin/laboratory/index"), + name: "Index", + meta: {title: "首页", icon: "dashboard", affix: true}, + }, + ], + }, + { + path: "/admin/account", + component: Layout, + meta: {title: "账号管理", icon: "dashboard"}, + alwaysShow: true, + redirect: "/admin/account/basic-info", + children: [ + { + path: "basic-info", + component: () => import("@/views/admin/laboratory/account/basic-info.vue"), + name: "basicInfo", + meta: {title: "基本资料", icon: "list"}, + }, + + ], + }, + { + path: "/admin/research", + component: Layout, + meta: {title: "科研管理", icon: "dashboard"}, + alwaysShow: true, + redirect: "/admin/research/patent", + children: [ + { + path: "patent", + component: () => import("@/views/admin/laboratory/research/patent/index.vue"), + name: "Patent", + meta: {title: "专利列表", icon: "list"}, + }, + + ], + }, +] + +export const researchRoutes = [ + { + /*研究机构后台首页*/ + path: "/admin", + component: Layout, + redirect: "/admin/index", + children: [ + { + path: "index", + component: () => import("@/views/admin/research/index"), + name: "Index", + meta: {title: "首页", icon: "dashboard", affix: true}, + }, + ], + }, +] + // 动态路由,基于用户权限动态去加载 export const dynamicRoutes = [ - { - path: "/system/user-auth", - component: Layout, - hidden: true, - permissions: ["system:user:edit"], - children: [ - { - path: "role/:userId(\\d+)", - component: () => import("@/views/system/user/authRole"), - name: "AuthRole", - meta: { title: "分配角色", activeMenu: "/system/user" }, - }, - ], - }, - { - path: "/system/role-auth", - component: Layout, - hidden: true, - permissions: ["system:role:edit"], - children: [ - { - path: "user/:roleId(\\d+)", - component: () => import("@/views/system/role/authUser"), - name: "AuthUser", - meta: { title: "分配用户", activeMenu: "/system/role" }, - }, - ], - }, - { - path: "/system/dict-data", - component: Layout, - hidden: true, - permissions: ["system:dict:list"], - children: [ - { - path: "index/:dictId(\\d+)", - component: () => import("@/views/system/dict/data"), - name: "Data", - meta: { title: "字典数据", activeMenu: "/system/dict" }, - }, - ], - }, - { - path: "/monitor/job-log", - component: Layout, - hidden: true, - permissions: ["monitor:job:list"], - children: [ - { - path: "index", - component: () => import("@/views/monitor/job/log"), - name: "JobLog", - meta: { title: "调度日志", activeMenu: "/monitor/job" }, - }, - ], - }, - { - path: "/tool/gen-edit", - component: Layout, - hidden: true, - permissions: ["tool:gen:edit"], - children: [ - { - path: "index/:tableId(\\d+)", - component: () => import("@/views/tool/gen/editTable"), - name: "GenEdit", - meta: { title: "修改生成配置", activeMenu: "/tool/gen" }, - }, - ], - }, + { + path: "/system/user-auth", + component: Layout, + hidden: true, + permissions: ["system:user:edit"], + children: [ + { + path: "role/:userId(\\d+)", + component: () => import("@/views/system/user/authRole"), + name: "AuthRole", + meta: {title: "分配角色", activeMenu: "/system/user"}, + }, + ], + }, + { + path: "/system/role-auth", + component: Layout, + hidden: true, + permissions: ["system:role:edit"], + children: [ + { + path: "user/:roleId(\\d+)", + component: () => import("@/views/system/role/authUser"), + name: "AuthUser", + meta: {title: "分配用户", activeMenu: "/system/role"}, + }, + ], + }, + { + path: "/system/dict-data", + component: Layout, + hidden: true, + permissions: ["system:dict:list"], + children: [ + { + path: "index/:dictId(\\d+)", + component: () => import("@/views/system/dict/data"), + name: "Data", + meta: {title: "字典数据", activeMenu: "/system/dict"}, + }, + ], + }, + { + path: "/monitor/job-log", + component: Layout, + hidden: true, + permissions: ["monitor:job:list"], + children: [ + { + path: "index", + component: () => import("@/views/monitor/job/log"), + name: "JobLog", + meta: {title: "调度日志", activeMenu: "/monitor/job"}, + }, + ], + }, + { + path: "/tool/gen-edit", + component: Layout, + hidden: true, + permissions: ["tool:gen:edit"], + children: [ + { + path: "index/:tableId(\\d+)", + component: () => import("@/views/tool/gen/editTable"), + name: "GenEdit", + meta: {title: "修改生成配置", activeMenu: "/tool/gen"}, + }, + ], + }, ]; const router = createRouter({ - history: createWebHistory(), - routes: constantRoutes, - scrollBehavior(to, from, savedPosition) { - if (savedPosition) { - return savedPosition; - } else { - return { top: 0 }; - } - }, + history: createWebHistory(), + routes: constantRoutes, + scrollBehavior(to, from, savedPosition) { + if (savedPosition) { + return savedPosition; + } else { + return {top: 0}; + } + }, }); export default router; diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index 9d137cb..1a175d0 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -1,172 +1,133 @@ import auth from "@/plugins/auth"; -import router, { constantRoutes, dynamicRoutes, enterpriseRoutes, expertRoutes } from "@/router"; -import { getRouters } from "@/api/menu"; +import {constantRoutes, enterpriseRoutes, expertRoutes, laboratoryRoutes} from "@/router"; import Layout from "@/layout/index"; import ParentView from "@/components/ParentView"; import InnerLink from "@/layout/components/InnerLink"; -// import { enterpriseRoutes, expertRoutes } from "@/router"; -// import { expertRoutes } from "../../router"; // 匹配views里面所有的.vue文件 const modules = import.meta.glob("./../../views/**/*.vue"); const usePermissionStore = defineStore("permission", { - state: () => ({ - routes: [], - addRoutes: [], - defaultRoutes: [], - topbarRouters: [], - sidebarRouters: [], - }), - actions: { - setRoutes(routes) { - this.addRoutes = routes; - this.routes = constantRoutes.concat(routes); - // console.log(routes); + state: () => ({ + routes: [], + addRoutes: [], + defaultRoutes: [], + topbarRouters: [], + sidebarRouters: [], + }), + actions: { + setRoutes(routes) { + this.addRoutes = routes; + this.routes = constantRoutes.concat(routes); + }, + setDefaultRoutes(routes) { + this.defaultRoutes = constantRoutes.concat(routes); + }, + setTopbarRoutes(routes) { + this.topbarRouters = routes; + }, + setSidebarRouters(routes) { + this.sidebarRouters = routes; + }, + generateRoutes(roles) { + return new Promise((resolve) => { + console.log(roles) + let routesList = []; + if (roles === "1") { + routesList = enterpriseRoutes; + } else if (roles === "2") { + routesList = expertRoutes; + } else if (roles === "3") { + routesList = laboratoryRoutes + } + this.setRoutes(routesList); + this.setSidebarRouters(constantRoutes.concat(routesList)); + this.setDefaultRoutes(routesList); + this.setTopbarRoutes(routesList); + resolve(routesList); + }); + }, }, - setDefaultRoutes(routes) { - this.defaultRoutes = constantRoutes.concat(routes); - }, - setTopbarRoutes(routes) { - this.topbarRouters = routes; - }, - setSidebarRouters(routes) { - this.sidebarRouters = routes; - }, - generateRoutes(roles) { - return new Promise((resolve) => { - let routesList = []; - if (roles == 1) { - routesList = enterpriseRoutes; - } else if (roles == 2) { - routesList = expertRoutes; - // routesList = []; - } - // console.log(routesList); - // const sdata = JSON.parse(JSON.stringify(routesList)); - // const rdata = JSON.parse(JSON.stringify(routesList)); - // const defaultData = JSON.parse(JSON.stringify(routesList)); - // const sidebarRoutes = filterAsyncRouter(sdata); - // const rewriteRoutes = filterAsyncRouter(rdata, false, true); - // const defaultRoutes = filterAsyncRouter(defaultData); - // const asyncRoutes = filterDynamicRoutes(dynamicRoutes); - // console.log( - // sdata, - // rdata, - // defaultData, - // sidebarRoutes, - // rewriteRoutes, - // defaultRoutes, - // asyncRoutes - // ); - // asyncRoutes.forEach((route) => { - // router.addRoute(route); - // }); - this.setRoutes(routesList); - this.setSidebarRouters(constantRoutes.concat(routesList)); - this.setDefaultRoutes(routesList); - this.setTopbarRoutes(routesList); - resolve(routesList); - // 向后端请求路由数据 - // getRouters().then(res => { - // console.log(res); - // const sdata = JSON.parse(JSON.stringify(res.data)) - // const rdata = JSON.parse(JSON.stringify(res.data)) - // const defaultData = JSON.parse(JSON.stringify(res.data)) - // const sidebarRoutes = filterAsyncRouter(sdata) - // const rewriteRoutes = filterAsyncRouter(rdata, false, true) - // const defaultRoutes = filterAsyncRouter(defaultData) - // const asyncRoutes = filterDynamicRoutes(dynamicRoutes) - // asyncRoutes.forEach(route => { router.addRoute(route) }) - // this.setRoutes(rewriteRoutes) - // this.setSidebarRouters(constantRoutes.concat(sidebarRoutes)) - // this.setDefaultRoutes(sidebarRoutes) - // this.setTopbarRoutes(defaultRoutes) - // resolve(rewriteRoutes) - // }) - }); - }, - }, }); // 遍历后台传来的路由字符串,转换为组件对象 function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) { - return asyncRouterMap.filter((route) => { - if (type && route.children) { - route.children = filterChildren(route.children); - } - if (route.component) { - // Layout ParentView 组件特殊处理 - if (route.component === "Layout") { - route.component = Layout; - } else if (route.component === "ParentView") { - route.component = ParentView; - } else if (route.component === "InnerLink") { - route.component = InnerLink; - } else { - route.component = loadView(route.component); - } - } - if (route.children != null && route.children && route.children.length) { - route.children = filterAsyncRouter(route.children, route, type); - } else { - delete route["children"]; - delete route["redirect"]; - } - return true; - }); + return asyncRouterMap.filter((route) => { + if (type && route.children) { + route.children = filterChildren(route.children); + } + if (route.component) { + // Layout ParentView 组件特殊处理 + if (route.component === "Layout") { + route.component = Layout; + } else if (route.component === "ParentView") { + route.component = ParentView; + } else if (route.component === "InnerLink") { + route.component = InnerLink; + } else { + route.component = loadView(route.component); + } + } + if (route.children != null && route.children && route.children.length) { + route.children = filterAsyncRouter(route.children, route, type); + } else { + delete route["children"]; + delete route["redirect"]; + } + return true; + }); } function filterChildren(childrenMap, lastRouter = false) { - var children = []; - childrenMap.forEach((el, index) => { - if (el.children && el.children.length) { - if (el.component === "ParentView" && !lastRouter) { - el.children.forEach((c) => { - c.path = el.path + "/" + c.path; - if (c.children && c.children.length) { - children = children.concat(filterChildren(c.children, c)); - return; - } - children.push(c); - }); - return; - } - } - if (lastRouter) { - el.path = lastRouter.path + "/" + el.path; - } - children = children.concat(el); - }); - return children; + var children = []; + childrenMap.forEach((el, index) => { + if (el.children && el.children.length) { + if (el.component === "ParentView" && !lastRouter) { + el.children.forEach((c) => { + c.path = el.path + "/" + c.path; + if (c.children && c.children.length) { + children = children.concat(filterChildren(c.children, c)); + return; + } + children.push(c); + }); + return; + } + } + if (lastRouter) { + el.path = lastRouter.path + "/" + el.path; + } + children = children.concat(el); + }); + return children; } // 动态路由遍历,验证是否具备权限 export function filterDynamicRoutes(routes) { - const res = []; - routes.forEach((route) => { - if (route.permissions) { - if (auth.hasPermiOr(route.permissions)) { - res.push(route); - } - } else if (route.roles) { - if (auth.hasRoleOr(route.roles)) { - res.push(route); - } - } - }); - return res; + const res = []; + routes.forEach((route) => { + if (route.permissions) { + if (auth.hasPermiOr(route.permissions)) { + res.push(route); + } + } else if (route.roles) { + if (auth.hasRoleOr(route.roles)) { + res.push(route); + } + } + }); + return res; } export const loadView = (view) => { - let res; - for (const path in modules) { - const dir = path.split("views/")[1].split(".vue")[0]; - if (dir === view) { - res = () => modules[path](); + let res; + for (const path in modules) { + const dir = path.split("views/")[1].split(".vue")[0]; + if (dir === view) { + res = () => modules[path](); + } } - } - return res; + return res; }; export default usePermissionStore; diff --git a/src/views/admin/laboratory/account/basic-info.vue b/src/views/admin/laboratory/account/basic-info.vue new file mode 100644 index 0000000..6746f39 --- /dev/null +++ b/src/views/admin/laboratory/account/basic-info.vue @@ -0,0 +1,105 @@ + + + + + \ No newline at end of file diff --git a/src/views/admin/laboratory/index.vue b/src/views/admin/laboratory/index.vue new file mode 100644 index 0000000..dac3572 --- /dev/null +++ b/src/views/admin/laboratory/index.vue @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/src/views/admin/laboratory/research/patent/index.vue b/src/views/admin/laboratory/research/patent/index.vue new file mode 100644 index 0000000..0720b32 --- /dev/null +++ b/src/views/admin/laboratory/research/patent/index.vue @@ -0,0 +1,398 @@ + + + diff --git a/src/views/admin/research/index.vue b/src/views/admin/research/index.vue new file mode 100644 index 0000000..5a5346d --- /dev/null +++ b/src/views/admin/research/index.vue @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/src/views/components/AgentForm/index.vue b/src/views/components/AgentForm/index.vue new file mode 100644 index 0000000..aa86e60 --- /dev/null +++ b/src/views/components/AgentForm/index.vue @@ -0,0 +1,239 @@ + + + + \ No newline at end of file diff --git a/src/views/components/EnterpriseForm/index.vue b/src/views/components/EnterpriseForm/index.vue index 8e81ede..69f40d6 100644 --- a/src/views/components/EnterpriseForm/index.vue +++ b/src/views/components/EnterpriseForm/index.vue @@ -287,13 +287,7 @@ const data = reactive({ trigger: ["change", "blur"], }, ], - license: [ - { - required: true, - message: "请上传", - trigger: ["blur", "change"], - }, - ], + }, }); const { rules } = toRefs(data); diff --git a/src/views/components/FieldOptions/index.vue b/src/views/components/FieldOptions/index.vue index 574f8ea..a0de208 100644 --- a/src/views/components/FieldOptions/index.vue +++ b/src/views/components/FieldOptions/index.vue @@ -1,28 +1,28 @@ + + + \ No newline at end of file diff --git a/src/views/components/ReleaseForm/index.vue b/src/views/components/ReleaseForm/index.vue index 4104433..7071d27 100644 --- a/src/views/components/ReleaseForm/index.vue +++ b/src/views/components/ReleaseForm/index.vue @@ -237,7 +237,6 @@ const data = reactive({ // education: [{ required: true, message: "请选择", trigger: "change" }], // major: [{ required: true, message: "请输入", trigger: "blur" }], // job: [{ required: true, message: "请输入", trigger: "blur" }], - title: [{ required: true, message: "请输入", trigger: "blur" }], work_at: [ { required: true, diff --git a/src/views/components/ResearchForm/index.vue b/src/views/components/ResearchForm/index.vue new file mode 100644 index 0000000..88b2e60 --- /dev/null +++ b/src/views/components/ResearchForm/index.vue @@ -0,0 +1,203 @@ + + + + \ No newline at end of file diff --git a/src/views/identity/agent.vue b/src/views/identity/agent.vue new file mode 100644 index 0000000..08d58b9 --- /dev/null +++ b/src/views/identity/agent.vue @@ -0,0 +1,41 @@ + + + + \ No newline at end of file diff --git a/src/views/identity/expert.vue b/src/views/identity/expert.vue index 8ab95f8..3f871f6 100644 --- a/src/views/identity/expert.vue +++ b/src/views/identity/expert.vue @@ -15,10 +15,11 @@ + + \ No newline at end of file diff --git a/src/views/identity/research.vue b/src/views/identity/research.vue new file mode 100644 index 0000000..983530e --- /dev/null +++ b/src/views/identity/research.vue @@ -0,0 +1,40 @@ + + + + \ No newline at end of file diff --git a/vite.config.js b/vite.config.js index b8bfa28..950d116 100644 --- a/vite.config.js +++ b/vite.config.js @@ -31,9 +31,9 @@ export default defineConfig(({ mode, command }) => { proxy: { // https://cn.vitejs.dev/config/#server-proxy "/dev-api": { - target: 'http://101.34.131.16:1618', + // target: 'http://101.34.131.16:1618', // target: "http://101.34.131.16:1618", - // target: "http://192.168.110.10:1618", + target: "http://192.168.0.201:1618", // target: 'http://172.18.3.127:1618', changeOrigin: true, rewrite: (p) => p.replace(/^\/dev-api/, ""),