企业技术需求和产品 、专家成果上传自动审核

This commit is contained in:
cxc
2022-12-05 16:46:53 +08:00
parent 2b10fba50b
commit 081ba02e40
17 changed files with 227 additions and 61 deletions

View File

@ -108,7 +108,6 @@
登录注册
</div>
<!-- <el-popover
placement="bottom"
:title="`32`"
:width="200"
@ -320,7 +319,12 @@ dt {
justify-content: space-between;
align-items: center;
// .avatar-wrapper {
// padding-top: 25px;
// box-sizing: border-box;
// padding: 10px;
// .user-avatar {
// width: 20px;
// height: 20px;
// }
// }
}
}

View File

@ -1,6 +1,7 @@
import { login, logout, getInfo } from "@/api/login";
import { getToken, setToken, removeToken } from "@/utils/auth";
import defAva from "@/assets/images/profile.jpg";
// import defAva from "@/assets/images/profile.jpg";
import defAva from "@/assets/logo/logo_small.png";
const useUserStore = defineStore("user", {
state: () => ({

View File

@ -170,7 +170,7 @@
</div> -->
<div :style="{ marginLeft: labelWidth + 'px' }">
<el-button type="primary" @click="submitForm(3)">保存草稿</el-button>
<el-button type="primary" @click="submitForm(0)">提交审核</el-button>
<el-button type="primary" @click="submitForm(1)">提交审核</el-button>
</div>
</el-card>
</div>

View File

@ -9,7 +9,7 @@
/>
<div :style="{ marginLeft: labelWidth + 'px' }">
<el-button type="primary" @click="submitForm(3)">保存草稿</el-button>
<el-button type="primary" @click="submitForm(0)">提交审核</el-button>
<el-button type="primary" @click="submitForm(1)">提交审核</el-button>
</div>
</el-card>
</div>

View File

@ -54,7 +54,7 @@
</div>
</el-col>
</el-row> -->
<!-- <el-empty v-if=""></el-empty> -->
<div v-if="dataList.length" style="margin-top: 20px" v-loading="loading">
<section v-for="item in dataList" :key="item.id">
<div style="border: 1px solid #dcdcdc; margin-bottom: 10px">

View File

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<el-card shadow="always" style="width: 55%; margin: 0 auto">
<p><b>基本资料</b></p>
<!-- <p><b>基本资料</b></p>
<el-form
ref="personalInfoFormRef"
:model="PersonalInfoForm"
@ -36,7 +36,7 @@
<el-form-item>
<el-button type="primary" @click="submitPersonalInfo">提交</el-button>
</el-form-item>
</el-form>
</el-form> -->
<p><b>专家资料</b></p>
<ExpertForm
v-model="expertForm"

View File

@ -9,7 +9,7 @@
/>
<div :style="{ marginLeft: labelWidth + 'px' }">
<el-button type="primary" @click="submitForm(`3`)">保存草稿</el-button>
<el-button type="primary" @click="submitForm(`0`)">提交审核</el-button>
<el-button type="primary" @click="submitForm(`1`)">提交审核</el-button>
</div>
</el-card>
</div>

View File

@ -182,6 +182,7 @@
/> -->
<WangEditor
v-model="modelValue.introduce"
placeholder="请输入研究方向、核心技术及产品、代表专利和论文、承担科研项目名称及项目摘要"
width="100%"
min-height="150px"
@blur="formRef.validateField(`introduce`)"

View File

@ -130,7 +130,9 @@ function reason(item) {
alert("拒绝原因:\n" + item.remark);
}
function noClicking() {
return identityList.value.some((item) => item.status == 0);
return identityList.value.some(
(item) => item.status == 0 || item.status == 1
);
}
const backToHome = () => {
router.push({
@ -140,7 +142,7 @@ const backToHome = () => {
// item.status -1>未入驻 0>审核中 1>通过 2拒绝
function handleStatus(item) {
// console.log(item);
if (noClicking()) return ElMessageBox.alert("您已有入驻申请");
if (noClicking()) return ElMessageBox.alert("一个账号只能申请一个身份");
if (item.status === "4" || item.status === "2") {
if (item.id == 1) {
// 企业

View File

@ -0,0 +1,70 @@
<template>
<div class="paging">
<el-icon
class="prev"
:style="{
cursor: page === 1 ? 'not-allowed' : 'pointer',
color: page === 1 ? '#999' : '#fff',
}"
@click="prev"
>
<ArrowLeftBold />
</el-icon>
<div class="page-num">{{ page }}</div>
<el-icon
class="next"
:style="{
cursor: Math.ceil(total / 5) <= page ? 'not-allowed' : 'pointer',
color: Math.ceil(total / 5) <= page ? '#999' : '#fff',
}"
@click="next"
>
<ArrowRightBold />
</el-icon>
</div>
</template>
<script setup>
import { toRefs } from "vue";
const emit = defineEmits(["update:page"]);
const props = defineProps({
total: {
type: Number,
required: true,
},
page: {
type: Number,
required: true,
},
});
const { total, page } = toRefs(props);
const prev = () => {
if (page.value == 1) return;
emit("update:page", page.value - 1);
};
const next = () => {
if (Math.ceil(total.value / 5) <= page.value) return;
emit("update:page", page.value + 1);
};
</script>
<style lang="scss" scoped>
.paging {
width: 100px;
z-index: 9999;
position: absolute;
bottom: -40px;
left: 50%;
transform: translateX(-50%);
justify-content: space-between;
align-items: center;
.prev,
.next {
user-select: none;
cursor: pointer;
color: #fff;
width: 30px;
height: 30px;
}
}
</style>

View File

@ -11,14 +11,26 @@
<div class="a">地区</div>
<div class="b">专家数量</div>
</div>
<div v-if="Object.keys(snapTree).length > 0" v-for="v in snapTree">
<div class="a">{{ v.name }}</div>
<div class="b">{{ v.count }}</div>
</div>
<template v-if="snapTree.length > 0">
<div
v-for="v in snapTree.slice(
(leftBoxPageNum - 1) * 5,
leftBoxPageNum * 5
)"
>
<div class="a">{{ v.name }}</div>
<div class="b">{{ v.count }}</div>
</div>
</template>
<div v-else>
<div class="a">暂无</div>
<div class="b">暂无</div>
</div>
<RegionPagine
v-if="snapTree.length"
v-model:page="leftBoxPageNum"
:total="snapTree.length"
></RegionPagine>
</div>
<div class="rightBox">
<div class="head">
@ -50,15 +62,16 @@ import {
// return;
// console.log(echarts);
import * as echarts from "echarts";
import RegionPagine from "./RegionPagine.vue";
// import { ElMessage } from "element-plus";
const { proxy } = getCurrentInstance();
const loading = shallowRef(true);
let treeData = {};
const snapTree = shallowRef({});
const snapTree = shallowRef([]);
const industryTree = shallowRef({});
const leftBoxPageNum = ref(1);
const searchRegionData = async (code, level) => {
if (level == "province") {
const provcode = code.substring(0, 2) + "0000";
@ -96,7 +109,7 @@ const searchRegionData = async (code, level) => {
} else {
if (Object.keys(treeData).length) {
industryTree.value = treeData.industry ?? {};
snapTree.value = treeData.count ?? {};
snapTree.value = treeData.count ?? [];
return treeData.count.find((item) => item.code == code) || false;
} else {
const { count, industry } = await countExpertByProvince();
@ -237,7 +250,8 @@ function goBack() {
state.district.search("中国", async (status, result) => {
if (status == "complete") {
await getData(result.districtList[0], "", 100000);
snapTree.value = formatData(treeData.count);
// snapTree.value = formatData(treeData.count);
snapTree.value = treeData.count;
}
});
}
@ -414,7 +428,7 @@ function loadMap(mapName, data) {
borderColor: "#666666",
borderWidth: 0.5,
label: {
show: true,
show: false,
textStyle: {
color: "#333333",
},
@ -509,7 +523,7 @@ function loadMap(mapName, data) {
max-width: 250px;
min-width: 200px;
max-height: 256px;
overflow: hidden;
// overflow: hidden;
background: rgba(4, 22, 65, 0.5);
border: 1px solid #0054ff;
color: rgba(161, 192, 255, 1);
@ -535,4 +549,7 @@ function loadMap(mapName, data) {
width: 90px;
}
}
.rightBox {
overflow: hidden;
}
</style>

View File

@ -11,7 +11,13 @@
<div class="a">地区</div>
<div class="b">实验室数量</div>
</div>
<div v-if="Object.keys(snapTree).length > 0" v-for="v in snapTree">
<div
v-if="Object.keys(snapTree).length > 0"
v-for="v in snapTree.slice(
(leftBoxPageNum - 1) * 5,
leftBoxPageNum * 5
)"
>
<div class="a">{{ v.name }}</div>
<div class="b">{{ v.count }}</div>
</div>
@ -19,6 +25,11 @@
<div class="a">暂无</div>
<div class="b">暂无</div>
</div>
<RegionPagine
v-if="snapTree.length"
v-model:page="leftBoxPageNum"
:total="snapTree.length"
></RegionPagine>
</div>
<!-- <div class="rightBox">
<div class="head">
@ -48,11 +59,12 @@ import {
countEnterpriseByCity,
countEnterpriseByArea,
} from "@/api/website/home/index";
import RegionPagine from "./RegionPagine.vue";
const { proxy } = getCurrentInstance();
const loading = shallowRef(true);
let treeData = [];
const snapTree = shallowRef([]);
const leftBoxPageNum = ref(1);
const searchRegionData = async (code, level) => {
if (level == "province") {
@ -385,7 +397,7 @@ function loadMap(mapName, data) {
borderColor: "#666666",
borderWidth: 0.5,
label: {
show: true,
show: false,
textStyle: {
color: "#333333",
},
@ -479,7 +491,7 @@ function loadMap(mapName, data) {
max-width: 250px;
min-width: 200px;
max-height: 256px;
overflow: hidden;
// overflow: hidden;
border: 1px solid #dcdcdc;
color: #666666;
& > div {

View File

@ -11,14 +11,26 @@
<div class="a">地区</div>
<div class="b">成果数量</div>
</div>
<div v-if="Object.keys(snapTree).length > 0" v-for="v in snapTree">
<div class="a">{{ v.name }}</div>
<div class="b">{{ v.count }}</div>
</div>
<template v-if="snapTree.length > 0">
<div
v-for="v in snapTree.slice(
(leftBoxPageNum - 1) * 5,
leftBoxPageNum * 5
)"
>
<div class="a">{{ v.name }}</div>
<div class="b">{{ v.count }}</div>
</div>
</template>
<div v-else>
<div class="a">暂无</div>
<div class="b">暂无</div>
</div>
<RegionPagine
v-if="snapTree.length"
v-model:page="leftBoxPageNum"
:total="snapTree.length"
></RegionPagine>
</div>
<div class="rightBox">
<div class="head">
@ -49,14 +61,17 @@ import {
} from "@/api/website/home/index";
import * as echarts from "echarts";
// import { achievement } from "@/api/website/home/index";
import RegionPagine from "./RegionPagine.vue";
const leftBoxPageNum = ref(1);
const { proxy } = getCurrentInstance();
const loading = shallowRef(true);
let treeData = {};
const snapTree = shallowRef({});
const snapTree = shallowRef([]);
const industryTree = shallowRef({});
const searchRegionData = async (code, level) => {
console.log(1234343);
leftBoxPageNum.value = 1;
if (level == "province") {
const provcode = code.substring(0, 2) + "0000";
let data = {};
@ -93,7 +108,7 @@ const searchRegionData = async (code, level) => {
} else {
if (Object.keys(treeData).length) {
industryTree.value = treeData.industry ?? {};
snapTree.value = treeData.count ?? {};
snapTree.value = treeData.count ?? [];
return treeData.count.find((item) => item.code == code) || false;
} else {
const { count, industry } = await countAchievementByProvince();
@ -216,6 +231,7 @@ onMounted(() => {
});
function goBack() {
leftBoxPageNum.value = 1;
state.isShowGoBack = false;
loading.value = true;
state.district.search("中国", async (status, result) => {
@ -392,7 +408,7 @@ function loadMap(mapName, data) {
borderColor: "#666666",
borderWidth: 0.5,
label: {
show: true,
show: false,
textStyle: {
color: "#333333",
},
@ -487,7 +503,7 @@ function loadMap(mapName, data) {
max-width: 250px;
min-width: 200px;
max-height: 256px;
overflow: hidden;
// overflow: hidden;
background: rgba(4, 22, 65, 0.5);
border: 1px solid #0054ff;
color: rgba(161, 192, 255, 1);
@ -513,4 +529,7 @@ function loadMap(mapName, data) {
width: 90px;
}
}
.rightBox {
overflow: hidden;
}
</style>

View File

@ -11,14 +11,26 @@
<div class="a">地区</div>
<div class="b">需求数量</div>
</div>
<div v-if="Object.keys(snapTree).length > 0" v-for="v in snapTree">
<div class="a">{{ v.name }}</div>
<div class="b">{{ v.count }}</div>
</div>
<template v-if="snapTree.length > 0">
<div
v-for="v in snapTree.slice(
(leftBoxPageNum - 1) * 5,
leftBoxPageNum * 5
)"
>
<div class="a">{{ v.name }}</div>
<div class="b">{{ v.count }}</div>
</div>
</template>
<div v-else>
<div class="a">暂无</div>
<div class="b">暂无</div>
</div>
<RegionPagine
v-if="snapTree.length"
v-model:page="leftBoxPageNum"
:total="snapTree.length"
></RegionPagine>
</div>
<div class="rightBox">
<div class="head">
@ -48,15 +60,16 @@ import {
countDemandByCity,
countDemandByArea,
} from "@/api/website/home/index";
import RegionPagine from "./RegionPagine.vue";
// import { demand } from "@/api/website/home/index";
const { proxy } = getCurrentInstance();
const loading = shallowRef(true);
let treeData = {};
const snapTree = shallowRef({});
const snapTree = shallowRef([]);
const industryTree = shallowRef({});
const leftBoxPageNum = ref(1);
const searchRegionData = async (code, level) => {
if (level == "province") {
const provcode = code.substring(0, 2) + "0000";
@ -93,7 +106,7 @@ const searchRegionData = async (code, level) => {
} else {
if (Object.keys(treeData).length) {
industryTree.value = treeData.industry ?? {};
snapTree.value = treeData.count ?? {};
snapTree.value = treeData.count ?? [];
return treeData.count.find((item) => item.code == code) || false;
} else {
const { count, industry } = await countDemandByProvince();
@ -403,7 +416,7 @@ function loadMap(mapName, data) {
borderColor: "#666666",
borderWidth: 0.5,
label: {
show: true,
show: false,
textStyle: {
color: "#333333",
},
@ -497,7 +510,7 @@ function loadMap(mapName, data) {
max-width: 250px;
min-width: 200px;
max-height: 256px;
overflow: hidden;
// overflow: hidden;
border: 1px solid #dcdcdc;
color: #666666;
& > div {
@ -522,4 +535,13 @@ function loadMap(mapName, data) {
width: 90px;
}
}
.rightBox {
overflow: hidden;
}
:deep(.pagine) {
.prev,
.next {
color: #000 !important;
}
}
</style>

View File

@ -11,27 +11,38 @@
<div class="a">地区</div>
<div class="b">企业数量</div>
</div>
<div v-if="Object.keys(snapTree).length > 0" v-for="v in snapTree">
<div class="a">{{ v.name }}</div>
<div class="b">{{ v.count }}</div>
</div>
<template v-if="snapTree.length > 0">
<div
v-for="v in snapTree.slice(
(leftBoxPageNum - 1) * 5,
leftBoxPageNum * 5
)"
>
<div class="a">{{ v.name }}</div>
<div class="b">{{ v.count }}</div>
</div>
</template>
<div v-else>
<div class="a">暂无</div>
<div class="b">暂无</div>
</div>
<RegionPagine
v-if="snapTree.length"
v-model:page="leftBoxPageNum"
:total="snapTree.length"
></RegionPagine>
</div>
<div class="rightBox">
<div class="head">
<div class="a">领域</div>
<div class="b">企业数量</div>
</div>
<div
v-if="Object.keys(industryTree).length > 0"
v-for="(v, k) in industryTree"
>
<div class="a" :title="k">{{ k }}</div>
<div class="b">{{ v }}</div>
</div>
<template v-if="Object.keys(industryTree).length > 0">
<div v-for="(v, k) in industryTree">
<div class="a" :title="k">{{ k }}</div>
<div class="b">{{ v }}</div>
</div>
</template>
<div v-else>
<div class="a">暂无</div>
<div class="b">暂无</div>
@ -48,12 +59,14 @@ import {
countEnterpriseByCity,
countEnterpriseByArea,
} from "@/api/website/home/index";
import RegionPagine from "./RegionPagine.vue";
// import { company } from "@/api/website/home/index";
const leftBoxPageNum = ref(1);
const { proxy } = getCurrentInstance();
const loading = shallowRef(true);
let treeData = {};
const snapTree = shallowRef({});
const snapTree = shallowRef([]);
const industryTree = shallowRef({});
const searchRegionData = async (code, level) => {
@ -93,7 +106,7 @@ const searchRegionData = async (code, level) => {
} else {
if (Object.keys(treeData).length) {
industryTree.value = treeData.industry ?? {};
snapTree.value = treeData.count ?? {};
snapTree.value = treeData.count ?? [];
return treeData.count.find((item) => item.code == code) || false;
} else {
const { count, industry } = await countEnterpriseByProvince();
@ -406,7 +419,7 @@ function loadMap(mapName, data) {
borderColor: "#666666",
borderWidth: 0.5,
label: {
show: true,
show: false,
textStyle: {
color: "#333333",
},
@ -501,7 +514,7 @@ function loadMap(mapName, data) {
max-width: 250px;
min-width: 200px;
max-height: 256px;
overflow: hidden;
// overflow: hidden;
background: rgba(4, 22, 65, 0.5);
border: 1px solid #0054ff;
color: rgba(161, 192, 255, 1);
@ -527,4 +540,7 @@ function loadMap(mapName, data) {
width: 90px;
}
}
.rightBox {
overflow: hidden;
}
</style>

View File

@ -3,7 +3,8 @@
<div class="wrap">
<div class="img">
<!-- <img :src="data.image" alt /> -->
<el-image :src="data.image" fit="fill"></el-image>
<!-- <el-image :src="data.image" fit="fill"></el-image> -->
<el-image :src="logo" fit="fill"></el-image>
</div>
<div class="content">
<div class="tit">
@ -69,6 +70,7 @@
</template>
<script setup name="ExpertItem">
import logo from "../../../../assets/logo/logo_small.png";
import wordcloud from "./wordcloud.vue";
import { useRoute, useRouter } from "vue-router";
// import collectAndVisit from "./collectAndVisit.vue";

View File

@ -43,14 +43,14 @@
}}
</div>
</section>
<div style="padding: 20px 0">
<!-- <div style="padding: 20px 0">
<div class="pointTit">手机号</div>
</div>
<section>
<div>
{{ state.expertDetail.mobile }}
</div>
</section>
</section> -->
<div style="padding: 20px 0">
<div class="pointTit">主修专业</div>
</div>