From d4778207c7c5560a8e58d9620b8412d450d50dd9 Mon Sep 17 00:00:00 2001 From: cxc Date: Fri, 25 Nov 2022 17:30:39 +0800 Subject: [PATCH] bug fixed --- info.ts | 69 ++++ src/api/admin/expert/demand.js | 116 +++--- src/api/website/home/index.js | 14 + src/components/webFooter/index.vue | 338 +++++++++--------- src/router/index.js | 15 + src/utils/city.js | 28 ++ src/utils/parameter.js | 21 ++ .../enterprise/demand/releaseService.vue | 22 +- .../enterprise/demand/releaseTechnology.vue | 28 +- src/views/admin/enterprise/demand/results.vue | 7 +- .../admin/enterprise/extension/results.vue | 37 +- src/views/admin/enterprise/index.vue | 5 +- .../expert/components/ReleaseForm/index.vue | 37 +- src/views/admin/expert/demand/release.vue | 67 ++-- .../admin/expert/demand/serviceDemand.vue | 2 +- .../admin/expert/technology/achievement.vue | 2 +- src/views/admin/expert/technology/paper.vue | 4 +- src/views/admin/expert/technology/release.vue | 10 +- .../admin/expert/technology/research.vue | 15 +- src/views/components/CityOptions/index.vue | 10 +- src/views/components/EnterpriseForm/index.vue | 7 +- src/views/components/ExpertForm/index.vue | 10 +- src/views/website/home/comp/index1.vue | 42 ++- src/views/website/home/comp/index3.vue | 98 ++--- src/views/website/home/comp/index5.vue | 46 ++- src/views/website/home/comp/index6.vue | 45 ++- src/views/website/home/comp/index7.vue | 41 ++- .../website/searchList/achievementDetail.vue | 61 +++- .../searchList/components/laboratoryItem.vue | 265 ++++++++------ .../searchList/components/searchContainer.vue | 11 +- src/views/website/searchList/enterprise.vue | 5 +- .../website/searchList/enterpriseDetail.vue | 71 ++-- src/views/website/searchList/expertDetail.vue | 70 ++++ src/views/website/searchList/lab.vue | 202 +++++++++++ .../website/searchList/laboratoryDetail.vue | 338 ++++++++++++++++++ src/views/website/searchList/patentDetail.vue | 41 ++- .../website/searchList/technologyDemand.vue | 6 +- .../searchList/technologyDemandDetail.vue | 40 ++- 38 files changed, 1623 insertions(+), 623 deletions(-) create mode 100644 info.ts create mode 100644 src/utils/city.js create mode 100644 src/views/website/searchList/lab.vue create mode 100644 src/views/website/searchList/laboratoryDetail.vue diff --git a/info.ts b/info.ts new file mode 100644 index 0000000..2b397d9 --- /dev/null +++ b/info.ts @@ -0,0 +1,69 @@ +export interface User { + userId: number; + userName: string; + nickName: string; + email: string; + mobile: string; + sex: string; + post?: any; + phone: string; + avatar: string; + password: string; + status: string; + loginIp: string; + loginDate?: any; + createBy: string; + createTime: string; + updateBy: string; + updateTime?: any; + remark?: any; +} + +export interface Enterprise { + id: number; + tenantId: number; + area?: any; + inviterId: number; + uid: number; + username: string; + phone: string; + email: string; + kind: string; + name: string; + code: string; + image: string; + product: string; + province: string; + city: string; + cityStr: string; + district: string; + address: string; + url: string; + license: string; + industry: string; + industrys?: any; + industryStr: string; + keyword: string; + keywords: string[]; + direction: string; + directions?: any; + introduce: string; + examineStatus: string; + examineRemark: string; + examineAt: string; + isDeleted: string; + createdAt: string; + updatedAt: string; +} + +export interface Data { + vip?: any; + user: User; + enterprise: Enterprise; +} + +export interface RootObject { + msg: string; + code: number; + data: Data; +} diff --git a/src/api/admin/expert/demand.js b/src/api/admin/expert/demand.js index 7286988..280a51a 100644 --- a/src/api/admin/expert/demand.js +++ b/src/api/admin/expert/demand.js @@ -2,82 +2,96 @@ import request from "@/utils/request"; // 专家想合作企业列表 export const expertWantEnterpriseList = (params) => { - return request({ - url: `/app/expert/expertWantEnterpriseList`, - method: "GET", - params - }); + return request({ + url: `/app/expert/expertWantEnterpriseList`, + method: "GET", + params, + }); }; // 新增想合作企业 export const insertExpertWantEnterprise = (data) => { - return request({ - url: `/app/expert/insertExpertWantEnterprise`, - method: "POST", - data - }); + return request({ + url: `/app/expert/insertExpertWantEnterprise`, + method: "POST", + data, + }); }; // 修改想合作企业 export const updateExpertWantEnterprise = (data) => { - return request({ - url: `/app/expert/updateExpertWantEnterprise`, - method: "PUT", - data - }); + return request({ + url: `/app/expert/updateExpertWantEnterprise`, + method: "PUT", + data, + }); }; // 删除想合作企业 export const deleteExpertWantEnterpriseByIds = (data) => { - return request({ - url: `/app/expert/deleteExpertWantEnterpriseByIds`, - method: "DELETE", - data - }); + return request({ + url: `/app/expert/deleteExpertWantEnterpriseByIds`, + method: "DELETE", + data, + }); }; - // 专家服务需求列表 export const demandList = (params) => { - return request({ - url: `/app/expert/demandList`, - method: "GET", - params - }); + return request({ + url: `/app/expert/demandList`, + method: "GET", + params, + }); }; // 新增服务需求 export const insertDemand = (data) => { - return request({ - url: `/app/expert/insertDemand`, - method: "POST", - data - }); + return request({ + url: `/app/expert/insertDemand`, + method: "POST", + data, + }); }; // 专家已合作企业列表 export const getExpertCooperateEnterpriseList = (params) => { - return request({ - url: `/app/expert/getExpertCooperateEnterpriseList`, - method: "GET", - params - }); + return request({ + url: `/app/expert/getExpertCooperateEnterpriseList`, + method: "GET", + params, + }); }; // 专家新增已合作企业 export const insertExpertCooperateEnterprise = (data) => { - return request({ - url: `/app/expert/insertExpertCooperateEnterprise`, - method: "POST", - data - }); + return request({ + url: `/app/expert/insertExpertCooperateEnterprise`, + method: "POST", + data, + }); }; // 专家修改已合作企业 export const updateExpertCooperateEnterprise = (data) => { - return request({ - url: `/app/expert/updateExpertCooperateEnterprise`, - method: "PUT", - data - }); + return request({ + url: `/app/expert/updateExpertCooperateEnterprise`, + method: "PUT", + data, + }); }; // 删除已合作 export const deleteExpertCooperateEnterpriseByIds = (ids) => { - return request({ - url: `/app/expert/deleteExpertCooperateEnterpriseByIds/${ids}`, - method: "DELETE", - }); -}; \ No newline at end of file + return request({ + url: `/app/expert/deleteExpertCooperateEnterpriseByIds/${ids}`, + method: "DELETE", + }); +}; +// 获取服务需求详情 +export const getDemandById = (id) => { + return request({ + url: `/app/expert/getDemand/${id}`, + method: "GET", + }); +}; +// 修改服务需求 +export const updateDemand = (data) => { + return request({ + url: `/app/expert/updateDemand`, + method: "PUT", + data, + }); +}; diff --git a/src/api/website/home/index.js b/src/api/website/home/index.js index a0a4dd2..2921351 100644 --- a/src/api/website/home/index.js +++ b/src/api/website/home/index.js @@ -91,6 +91,13 @@ export function searchAchievementDetail(id) { method: "get", }); } +// 客户端实验室搜索结果详情 +export function searchLaboratoryDetail(id) { + return request({ + url: `/search/laboratory/${id}`, + method: "get", + }); +} // 客户端专家搜索结果详情 export function searchExpertDetail(id) { return request({ @@ -222,3 +229,10 @@ export function countAchievementByArea(cityCode) { }, }); } +// 获取尾部导航 +export function getCasNavigation() { + return request({ + url: "/app/about/getCasNavigation", + method: "get", + }); +} diff --git a/src/components/webFooter/index.vue b/src/components/webFooter/index.vue index 13ac1b1..b3212a1 100644 --- a/src/components/webFooter/index.vue +++ b/src/components/webFooter/index.vue @@ -48,6 +48,7 @@ import request from "@/utils/request"; import { onMounted, reactive, watch } from "vue"; import { getCategory } from "@/api/website/solution"; +import { getCasNavigation } from "@/api/website/home"; function navigation() { return request({ @@ -66,178 +67,179 @@ const state = reactive({ email: "", address: "", }); -function getNavigation() { +async function getNavigation() { // navigation().then((res) => { // if (200 == res.code) { // state.list = res.data; // } // }); - const res = { - msg: "操作成功", - code: 200, - data: [ - { - id: 21, - tenantId: 3, - parentId: 0, - title: "创新服务", - link: "/", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-02-21 14:03:28", - updateTime: "2022-02-21 14:03:28", - children: [ - { - id: 22, - tenantId: 1, - parentId: 21, - title: "中科院设备共享平台", - link: "http://samp.cas.cn", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-02-21 14:03:47", - updateTime: "2022-02-21 14:03:47", - children: [], - }, - { - id: 23, - tenantId: 1, - parentId: 21, - title: "中科院文献情报中心", - link: "https://www.las.ac.cn", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-02-21 14:04:52", - updateTime: "2022-02-21 14:04:52", - children: [], - }, - { - id: 25, - tenantId: 1, - parentId: 21, - title: "中国科学院", - link: "https://www.cas.cn", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-02-21 14:05:59", - updateTime: "2022-02-21 14:05:59", - children: [], - }, - { - id: 26, - tenantId: 1, - parentId: 21, - title: "中科院重庆院合肥分院", - link: "http://www.caszl.cn", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-02-21 14:06:29", - updateTime: "2022-02-21 14:06:29", - children: [], - }, - ], - }, - { - id: 29, - tenantId: 3, - parentId: 0, - title: "联系我们", - link: "/", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-11-15 16:20:19", - updateTime: null, - children: [ - { - id: 30, - tenantId: 3, - parentId: 29, - title: "客服电话:18156053255", - link: "/", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-11-15 16:20:39", - updateTime: null, - children: [], - }, - { - id: 31, - tenantId: 3, - parentId: 29, - title: "邮箱:zky@gmail.com", - link: "/", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-11-15 16:20:56", - updateTime: null, - children: [], - }, - { - id: 32, - tenantId: 3, - parentId: 29, - title: "地址:安徽省合肥市高新区创新产业园D1南楼", - link: "/", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-11-15 16:21:43", - updateTime: null, - children: [], - }, - ], - }, - { - id: 33, - tenantId: 3, - parentId: 0, - title: "解决方案", - link: "/", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-11-15 16:22:41", - updateTime: null, - children: [ - { - id: 34, - tenantId: 3, - parentId: 33, - title: "企业创新升级", - link: "/", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-11-15 16:22:58", - updateTime: null, - children: [], - }, - { - id: 35, - tenantId: 3, - parentId: 33, - title: "成果转化", - link: "/", - targetFlag: "0", - sort: 0, - status: "1", - createTime: "2022-11-15 16:23:21", - updateTime: null, - children: [], - }, - ], - }, - ], - }; - state.list = res.data; + const resp = await getCasNavigation(); + // const res = { + // msg: "操作成功", + // code: 200, + // data: [ + // { + // id: 21, + // tenantId: 3, + // parentId: 0, + // title: "创新服务", + // link: "/", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-02-21 14:03:28", + // updateTime: "2022-02-21 14:03:28", + // children: [ + // { + // id: 22, + // tenantId: 1, + // parentId: 21, + // title: "中科院设备共享平台", + // link: "http://samp.cas.cn", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-02-21 14:03:47", + // updateTime: "2022-02-21 14:03:47", + // children: [], + // }, + // { + // id: 23, + // tenantId: 1, + // parentId: 21, + // title: "中科院文献情报中心", + // link: "https://www.las.ac.cn", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-02-21 14:04:52", + // updateTime: "2022-02-21 14:04:52", + // children: [], + // }, + // { + // id: 25, + // tenantId: 1, + // parentId: 21, + // title: "中国科学院", + // link: "https://www.cas.cn", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-02-21 14:05:59", + // updateTime: "2022-02-21 14:05:59", + // children: [], + // }, + // { + // id: 26, + // tenantId: 1, + // parentId: 21, + // title: "中科院重庆院合肥分院", + // link: "http://www.caszl.cn", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-02-21 14:06:29", + // updateTime: "2022-02-21 14:06:29", + // children: [], + // }, + // ], + // }, + // { + // id: 29, + // tenantId: 3, + // parentId: 0, + // title: "联系我们", + // link: "/", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-11-15 16:20:19", + // updateTime: null, + // children: [ + // { + // id: 30, + // tenantId: 3, + // parentId: 29, + // title: "客服电话:18156053255", + // link: "/", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-11-15 16:20:39", + // updateTime: null, + // children: [], + // }, + // { + // id: 31, + // tenantId: 3, + // parentId: 29, + // title: "邮箱:zky@gmail.com", + // link: "/", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-11-15 16:20:56", + // updateTime: null, + // children: [], + // }, + // { + // id: 32, + // tenantId: 3, + // parentId: 29, + // title: "地址:安徽省合肥市高新区创新产业园D1南楼", + // link: "/", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-11-15 16:21:43", + // updateTime: null, + // children: [], + // }, + // ], + // }, + // { + // id: 33, + // tenantId: 3, + // parentId: 0, + // title: "解决方案", + // link: "/", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-11-15 16:22:41", + // updateTime: null, + // children: [ + // { + // id: 34, + // tenantId: 3, + // parentId: 33, + // title: "企业创新升级", + // link: "/", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-11-15 16:22:58", + // updateTime: null, + // children: [], + // }, + // { + // id: 35, + // tenantId: 3, + // parentId: 33, + // title: "成果转化", + // link: "/", + // targetFlag: "0", + // sort: 0, + // status: "1", + // createTime: "2022-11-15 16:23:21", + // updateTime: null, + // children: [], + // }, + // ], + // }, + // ], + // }; + state.list = resp.data; } async function getConfig() { // const mobileData = await config({ key: "mobile" }); @@ -275,7 +277,7 @@ async function getConfig() { // }); } getNavigation(); -getConfig(); +// getConfig(); const solutionCategoryList = ref([]); const loadsolutionCategoryList = async () => { diff --git a/src/router/index.js b/src/router/index.js index f0f6d58..14768ed 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -73,6 +73,21 @@ export const constantRoutes = [ 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"), diff --git a/src/utils/city.js b/src/utils/city.js new file mode 100644 index 0000000..326e7cd --- /dev/null +++ b/src/utils/city.js @@ -0,0 +1,28 @@ +import request from "@/utils/request"; + +export const getCity = async (provinceCode, cityCode, areaCode) => { + const resps = await Promise.all([ + request({ + url: `/region/allProvince`, + }), + request({ + url: `/region/allCity`, + params: { + provinceCode, + }, + }), + request({ + url: `/region/allArea`, + params: { + cityCode, + }, + }), + ]); + const provinceStr = resps[0].data.find( + (el) => el.provinceCode == provinceCode + ).provinceName; + // console.log(provinceStr); + const cityStr = resps[1].data.find((el) => el.cityCode == cityCode).cityName; + const areaStr = resps[2].data.find((el) => el.areaCode == areaCode).areaName; + return `${provinceStr} ${cityStr} ${areaStr}`; +}; diff --git a/src/utils/parameter.js b/src/utils/parameter.js index 4ae1f47..073fe7a 100644 --- a/src/utils/parameter.js +++ b/src/utils/parameter.js @@ -35,6 +35,27 @@ export const enterpriseOptions = [ { key: "104", value: "高新技术企业" }, { key: "105", value: "科技企业" }, ]; +// 需求类型 +export const demandCategoryList = [ + { id: 1, name: "基金对接" }, + { id: 2, name: "贷款" }, + { id: 3, name: "对接专家院士" }, + { id: 4, name: "人才培养" }, + { id: 5, name: "一带一路国际合作" }, + { id: 6, name: "上市辅导" }, + { id: 7, name: "成果产业化" }, + { id: 8, name: "国家级科研平台合作" }, + { id: 9, name: "研发项目立项评估" }, + { id: 10, name: "科技查新" }, + { id: 11, name: "产业链上下游对接" }, + { id: 12, name: "委托研发" }, + { id: 13, name: "对接政府项目落地" }, + { id: 14, name: "技术咨询" }, + { id: 15, name: "高价值专利培育" }, + { id: 16, name: "知识产权布局" }, + { id: 17, name: "设立院士工作站" }, + { id: 18, name: "海外留学生培养" }, +]; // export const enterpriseOptions = [ // { key: "101", value: '上市企业' }, // { key: "102", value: '优质企业' }, diff --git a/src/views/admin/enterprise/demand/releaseService.vue b/src/views/admin/enterprise/demand/releaseService.vue index b5baae1..0685c0b 100644 --- a/src/views/admin/enterprise/demand/releaseService.vue +++ b/src/views/admin/enterprise/demand/releaseService.vue @@ -120,6 +120,7 @@ import { // import CityOptions from "@/views/components/CityOptions"; import { ElMessage } from "element-plus"; import { onActivated } from "vue"; +import { demandCategoryList } from "@/utils/parameter"; // import { onActivated } from "vue"; import { useRoute, useRouter } from "vue-router"; @@ -154,24 +155,7 @@ const data = reactive({ const { form, rules } = toRefs(data); const labelWidth = 140; -const checkList = reactive([ - { - id: 1, - name: "成果推广", - }, - { - id: 2, - name: "关键成果解决", - }, - { - id: 3, - name: "对接专家院士", - }, - { - id: 4, - name: "上市辅导", - }, -]); +const checkList = reactive([...demandCategoryList]); const checkInput = ref(""); // const cityFormRef = ref(); const formRef = ref(); @@ -215,6 +199,8 @@ function addCheck() { onMounted(() => { formRef.value.resetFields(); if (route.query.id) { + const obj = Object.assign({}, route, { title: "修改服务需求" }); + tab.updatePage(obj); getDemand({ id: route.query.id }).then((resp) => { if (resp.data.kinds) { resp.data.kinds.forEach((el, index) => { diff --git a/src/views/admin/enterprise/demand/releaseTechnology.vue b/src/views/admin/enterprise/demand/releaseTechnology.vue index 7c213ac..a44fab2 100644 --- a/src/views/admin/enterprise/demand/releaseTechnology.vue +++ b/src/views/admin/enterprise/demand/releaseTechnology.vue @@ -310,19 +310,19 @@ const submitForm = async (status) => { // } // }); }; -function addCheck() { - if (!checkInput.value.trim().length) return proxy.$modal.msgError("请输入"); - const flag = checkList.some((item) => { - return item.name.trim() == checkInput.value.trim(); - }); - if (!flag) { - checkList.push({ - id: checkList.length + 1, - name: checkInput.value, - }); - checkInput.value = ""; - } -} +// function addCheck() { +// if (!checkInput.value.trim().length) return proxy.$modal.msgError("请输入"); +// const flag = checkList.some((item) => { +// return item.name.trim() == checkInput.value.trim(); +// }); +// if (!flag) { +// checkList.push({ +// id: checkList.length + 1, +// name: checkInput.value, +// }); +// checkInput.value = ""; +// } +// } // 返回技术需求列表 const backToList = () => { tab.closeOpenPage({ path: "/demand/technology" }); @@ -332,6 +332,8 @@ onMounted(() => { formRef.value.resetFields(); if (route.query.id) { + const obj = Object.assign({}, route, { title: "修改技术需求" }); + tab.updatePage(obj); getTechnologyDemand({ id: route.query.id }).then((resp) => { form.value = resp.data; diff --git a/src/views/admin/enterprise/demand/results.vue b/src/views/admin/enterprise/demand/results.vue index d59d1f0..69a6981 100644 --- a/src/views/admin/enterprise/demand/results.vue +++ b/src/views/admin/enterprise/demand/results.vue @@ -13,7 +13,7 @@ 专家 - + 实验室
@@ -79,6 +79,7 @@ const loading = ref(true); const total = ref(0); const queryType = computed(() => { + console.log(queryParams.value.searchType); if (queryParams.value.searchType == 1) { return 2; } else if (queryParams.value.searchType == 2) { @@ -87,9 +88,9 @@ const queryType = computed(() => { return 2; } else if (queryParams.value.searchType == 5) { return 2; + } else if (queryParams.value.searchType == 8) { + return 2; } - // else if (queryParams.value.searchType == 6) { - // return 1; // } else if (queryParams.value.searchType == 7) { // return 1; // } diff --git a/src/views/admin/enterprise/extension/results.vue b/src/views/admin/enterprise/extension/results.vue index 86c9ef3..c0be215 100644 --- a/src/views/admin/enterprise/extension/results.vue +++ b/src/views/admin/enterprise/extension/results.vue @@ -12,8 +12,10 @@ 专利 专家 - 技术需求 - + 实验室 + 技术需求 -
升级SVIP
+
+
VIP
+
升级SVIP
+
普通会员
- + @@ -168,6 +172,7 @@ @@ -253,11 +258,22 @@ const props = defineProps({ const { modelValue, isAdd, showTitle, labelWidth } = toRefs(props); const data = reactive({ rules: { - title: [{ required: true, message: "请输入", trigger: "blur" }], - maturity: [{ required: true, message: "请选择", trigger: "change" }], - leadStandard: [{ required: true, message: "请选择", trigger: "change" }], - description: [{ required: true, message: "请输入", trigger: "blur" }], - image: [{ required: true, message: "请上传", trigger: ["change", "blur"] }], + title: [{ required: true, message: "请输入成果名称", trigger: "blur" }], + maturity: [{ required: true, message: "请选择成熟度", trigger: "change" }], + leadStandard: [ + { required: true, message: "请选择领先情况", trigger: "change" }, + ], + description: [ + { required: true, message: "请输入成果简介", trigger: "blur" }, + ], + image: [ + { + required: true, + message: "请上传成果图片", + trigger: ["change", "blur"], + }, + ], + unit: [{ required: true, message: "请输入所属单位", trigger: "blur" }], }, }); const { rules } = toRefs(data); @@ -266,6 +282,7 @@ const formRef = ref(); const fieldFormRef = ref(); const customersFormRef = ref(); const directionsFormRef = ref(); +const cityFormRef = ref(); const keywordsFormRef = ref(); const validateForm = async () => { let formValid; @@ -277,13 +294,15 @@ const validateForm = async () => { const fieldFormValid = await fieldFormRef.value.validateForm(); // 城市选择表单验证 const customersValid = await customersFormRef.value.validateForm(); // 领域选择表单验证 // const directionsFormRef = await customersFormRef.value.validateForm(); // 领域选择表单验证 - const keywordsFormRef = await customersFormRef.value.validateForm(); // 领域选择表单验证 + + const cityFormValid = await cityFormRef.value.validateForm(); + const keywordsFormValid = await keywordsFormRef.value.validateForm(); // 关键词 return ( formValid && fieldFormValid && customersValid && - // directionsFormRef && - keywordsFormRef + cityFormValid && + keywordsFormValid ); }; defineExpose({ diff --git a/src/views/admin/expert/demand/release.vue b/src/views/admin/expert/demand/release.vue index 300012f..f4fbfea 100644 --- a/src/views/admin/expert/demand/release.vue +++ b/src/views/admin/expert/demand/release.vue @@ -112,23 +112,18 @@ diff --git a/src/views/admin/expert/demand/serviceDemand.vue b/src/views/admin/expert/demand/serviceDemand.vue index f5b386c..92cd4a0 100644 --- a/src/views/admin/expert/demand/serviceDemand.vue +++ b/src/views/admin/expert/demand/serviceDemand.vue @@ -24,7 +24,7 @@ - + diff --git a/src/views/admin/expert/technology/achievement.vue b/src/views/admin/expert/technology/achievement.vue index e5081bd..fcd0d29 100644 --- a/src/views/admin/expert/technology/achievement.vue +++ b/src/views/admin/expert/technology/achievement.vue @@ -44,7 +44,7 @@ v-if="queryParams.status == 1" size="small" type="text" - icon="Download" + :icon="row.shelfStatus == 1 ? `Download` : `Upload`" @click="handleShelf(row)" >{{ row.shelfStatus == 1 ? "下架" : "上架" }} diff --git a/src/views/admin/expert/technology/paper.vue b/src/views/admin/expert/technology/paper.vue index cd5d5b9..79240b1 100644 --- a/src/views/admin/expert/technology/paper.vue +++ b/src/views/admin/expert/technology/paper.vue @@ -136,9 +136,9 @@ > - + diff --git a/src/views/admin/expert/technology/release.vue b/src/views/admin/expert/technology/release.vue index f4a0f79..f20b7ee 100644 --- a/src/views/admin/expert/technology/release.vue +++ b/src/views/admin/expert/technology/release.vue @@ -20,6 +20,7 @@ import { expertAchievementInfo, updateExpertAchievement, } from "@/api/admin/expert/achievement"; +import tab from "@/plugins/tab"; import { ElMessage } from "element-plus"; import { reactive, ref, toRefs } from "vue"; import { useRoute, useRouter } from "vue-router"; @@ -27,7 +28,7 @@ import ReleaseForm from "../components/ReleaseForm"; const labelWidth = 140; const data = reactive({ - form: { mode: 1 }, + form: { mode: 1, shelfStatus: "2" }, }); const formData = reactive({}); @@ -38,6 +39,8 @@ const releaseFormRef = ref(); const { id } = route.query; if (id) { + const obj = Object.assign({}, route, { title: "修改成果" }); + tab.updatePage(obj); expertAchievementInfo({ id }).then((resp) => { form.value = resp.data; form.value.keywords = @@ -52,12 +55,13 @@ const submitForm = async (status) => { if (id) { await updateExpertAchievement({ ...form.value, status }); ElMessage.success("修改成果成功"); - router.back(); + // router.back(); } else { await insertAchievement({ ...form.value, status }); ElMessage.success("新增成果成功"); - router.back(); + // router.back(); } + tab.closeOpenPage({ path: "/technology/achievement" }); } else { console.log("校验未通过"); } diff --git a/src/views/admin/expert/technology/research.vue b/src/views/admin/expert/technology/research.vue index 04a01a0..4ec34bd 100644 --- a/src/views/admin/expert/technology/research.vue +++ b/src/views/admin/expert/technology/research.vue @@ -187,13 +187,19 @@ - - + + @@ -259,6 +265,9 @@ const data = reactive({ director: [ { required: true, message: "课题负责人不能为空", trigger: "blur" }, ], + introduce: [ + { required: true, message: "项目简介不能为空", trigger: "blur" }, + ], }, }); diff --git a/src/views/components/CityOptions/index.vue b/src/views/components/CityOptions/index.vue index 40794de..762641e 100644 --- a/src/views/components/CityOptions/index.vue +++ b/src/views/components/CityOptions/index.vue @@ -181,7 +181,10 @@ watch( () => modelValue.value.province, (val) => { console.log("changed province"); - getCityListByProvinceId(val); + val && getCityListByProvinceId(val); + }, + { + immediate: true, } ); @@ -189,7 +192,10 @@ watch( () => modelValue.value.city, (val) => { console.log("changed city"); - getAreaListByCityId(val); + val && getAreaListByCityId(val); + }, + { + immediate: true, } ); getProvinceList(); diff --git a/src/views/components/EnterpriseForm/index.vue b/src/views/components/EnterpriseForm/index.vue index e88c1be..8e81ede 100644 --- a/src/views/components/EnterpriseForm/index.vue +++ b/src/views/components/EnterpriseForm/index.vue @@ -7,7 +7,8 @@ >
基本信息
- + + @@ -153,7 +154,7 @@ - + diff --git a/src/views/components/ExpertForm/index.vue b/src/views/components/ExpertForm/index.vue index 7a588de..d4910df 100644 --- a/src/views/components/ExpertForm/index.vue +++ b/src/views/components/ExpertForm/index.vue @@ -173,13 +173,19 @@ - + /> --> + diff --git a/src/views/website/home/comp/index1.vue b/src/views/website/home/comp/index1.vue index de1a867..19bbefd 100644 --- a/src/views/website/home/comp/index1.vue +++ b/src/views/website/home/comp/index1.vue @@ -10,10 +10,10 @@
+ {{ v }}
@@ -28,7 +28,7 @@ v-model.trim="queryParams.keyword" placeholder="请输入检索词" > - @@ -52,8 +52,10 @@ import { const { proxy } = getCurrentInstance(); const loading = shallowRef(true); -let treeData = []; -const snapTree = shallowRef([]); + +let treeData = {}; +const snapTree = shallowRef({}); +const industryTree = shallowRef({}); const searchRegionData = async (code, level) => { if (level == "province") { @@ -67,8 +69,9 @@ const searchRegionData = async (code, level) => { data = snapTree.value; } else { const resp = await countDemandByCity(provcode); - snapTree.value = resp.data; - data = resp.data; + snapTree.value = resp.count; + industryTree.value = resp.industry ?? {}; + data = resp.count; } return data.find((item) => item.code == code) || false; } else if (level == "city") { @@ -82,16 +85,20 @@ const searchRegionData = async (code, level) => { data = snapTree.value; } else { const resp = await countDemandByArea(ctcode); - snapTree.value = resp.data; - data = resp.data; + snapTree.value = resp.count; + industryTree.value = resp.industry ?? {}; + data = resp.count; } return data.find((item) => item.code == code) || false; } else { - if (treeData.length) { - return treeData.find((item) => item.code == code) || false; + if (Object.keys(treeData).length) { + industryTree.value = treeData.industry ?? {}; + snapTree.value = treeData.count ?? {}; + return treeData.count.find((item) => item.code == code) || false; } else { - const { data } = await countDemandByProvince(); - return data.find((item) => item.code == code) || false; + const { count, industry } = await countDemandByProvince(); + industryTree.value = industry ?? {}; + return count.find((item) => item.code == code) || false; } } }; @@ -173,10 +180,10 @@ const state = reactive({ onMounted(() => { // 数据接口 - const res = { code: 200, message: "ok", data: {} }; - countDemandByProvince().then((res) => { - treeData = res.data; - snapTree.value = res.data; + countDemandByProvince().then((resp) => { + treeData = resp; + snapTree.value = resp.count; + industryTree.value = resp.industry ?? {}; loading.value = false; }); // let echartsDomList = document.querySelectorAll('.echartsDom'); @@ -223,7 +230,7 @@ function goBack() { state.district.search("中国", async (status, result) => { if (status == "complete") { await getData(result.districtList[0], "", 100000); - snapTree.value = treeData; + snapTree.value = treeData.count; } }); } diff --git a/src/views/website/home/comp/index7.vue b/src/views/website/home/comp/index7.vue index 5b36a69..e6f81df 100644 --- a/src/views/website/home/comp/index7.vue +++ b/src/views/website/home/comp/index7.vue @@ -20,14 +20,14 @@
暂无
- + @@ -52,8 +52,9 @@ import { const { proxy } = getCurrentInstance(); const loading = shallowRef(true); -let treeData = []; -const snapTree = shallowRef([]); +let treeData = {}; +const snapTree = shallowRef({}); +const industryTree = shallowRef({}); const searchRegionData = async (code, level) => { if (level == "province") { @@ -68,8 +69,9 @@ const searchRegionData = async (code, level) => { data = snapTree.value; } else { const resp = await countEnterpriseByCity(provcode); - snapTree.value = resp.data; - data = resp.data; + snapTree.value = resp.count; + industryTree.value = resp.industry ?? {}; + data = resp.count; } return data.find((item) => item.code == code) || false; } else if (level == "city") { @@ -83,16 +85,20 @@ const searchRegionData = async (code, level) => { data = snapTree.value; } else { const resp = await countEnterpriseByArea(ctcode); - snapTree.value = resp.data; - data = resp.data; + snapTree.value = resp.count; + industryTree.value = resp.industry ?? {}; + data = resp.count; } return data.find((item) => item.code == code) || false; } else { - if (treeData.length) { - return treeData.find((item) => item.code == code) || false; + if (Object.keys(treeData).length) { + industryTree.value = treeData.industry ?? {}; + snapTree.value = treeData.count ?? {}; + return treeData.count.find((item) => item.code == code) || false; } else { - const { data } = await countEnterpriseByProvince(); - return data.find((item) => item.code == code) || false; + const { count, industry } = await countEnterpriseByProvince(); + industryTree.value = industry ?? {}; + return count.find((item) => item.code == code) || false; } } }; @@ -177,8 +183,9 @@ onMounted(() => { countEnterpriseByProvince().then((resp) => { // if (200 == res.code) { - treeData = resp.data; - snapTree.value = resp.data; + treeData = resp; + snapTree.value = resp.count; + industryTree.value = resp.industry ?? {}; loading.value = false; // } }); @@ -226,7 +233,7 @@ function goBack() { state.district.search("中国", async (status, result) => { if (status == "complete") { await getData(result.districtList[0], "", 100000); - snapTree.value = treeData; + snapTree.value = treeData.count; } }); } diff --git a/src/views/website/searchList/achievementDetail.vue b/src/views/website/searchList/achievementDetail.vue index 2fa5fc9..2a529ce 100644 --- a/src/views/website/searchList/achievementDetail.vue +++ b/src/views/website/searchList/achievementDetail.vue @@ -36,6 +36,50 @@
成果简介
+
+
成果领先性
+
+
+
+ {{ + leadOptions.find( + (el) => el.key == state.expertDetail.leadStandard + )?.value + }} +
+
+
+
合作模式
+
+
+
+ {{ + cooperationOptions.find( + (el) => el.key == state.expertDetail.cooperationMode + )?.value + }} +
+
+
+
应用客户
+
+
+
+ {{ state.expertDetail.customer }} +
+
+
+
所在地
+
+
+ {{ state.localtion }} +
+
+
所属单位
+
+
+ {{ state.expertDetail.unit }} +
@@ -55,14 +99,18 @@ import loadMore from "./components/loadMore.vue"; import request from "@/utils/request"; // import { onMounted } from "vue"; import searchContainer from "./components/searchContainer.vue"; + import wordcloud from "./components/wordcloud.vue"; import productItem from "./components/productItem.vue"; -import { searchAchievementDetail } from "../../../api/website/home"; +import { searchAchievementDetail } from "@/api/website/home"; import { useRoute, useRouter } from "vue-router"; import { reactive, ref } from "vue"; import docking from "./components/docking.vue"; +import { getCity } from "@/utils/city"; +import { leadOptions, cooperationOptions } from "@/utils/parameter"; const showDocking = ref(false); const loading = ref(true); +// import {lead} const state = reactive({ pageNum: 1, pageSize: 4, @@ -152,10 +200,15 @@ function getDataList() { if (!id) return; searchAchievementDetail(id) // achievementDetail(id) - .then((res) => { + .then(async (resp) => { // if (200 == res.code) { - console.log(res.data); - state.expertDetail = res.data; + console.log(resp.data); + state.expertDetail = resp.data; + state.localtion = await getCity( + resp.data.province, + resp.data.city, + resp.data.district + ); loading.value = false; // } }); diff --git a/src/views/website/searchList/components/laboratoryItem.vue b/src/views/website/searchList/components/laboratoryItem.vue index 9f927b1..433c24c 100644 --- a/src/views/website/searchList/components/laboratoryItem.vue +++ b/src/views/website/searchList/components/laboratoryItem.vue @@ -1,141 +1,178 @@ \ No newline at end of file + diff --git a/src/views/website/searchList/components/searchContainer.vue b/src/views/website/searchList/components/searchContainer.vue index da97e3d..e247936 100644 --- a/src/views/website/searchList/components/searchContainer.vue +++ b/src/views/website/searchList/components/searchContainer.vue @@ -13,7 +13,7 @@ v-model.trim="state.currentKeyword" placeholder="请输入检索词" > -