专家详情页

This commit is contained in:
quantulr
2024-03-07 17:23:41 +08:00
parent 3afb373403
commit 31b92d6475
13 changed files with 964 additions and 647 deletions

View File

@ -2,50 +2,60 @@ import request from "@/utils/request";
// 个人信息录入 // 个人信息录入
export const insertClientUser = (data) => { export const insertClientUser = (data) => {
return request({ return request({
url: "/app/insertClientUser", url: "/app/insertClientUser",
method: "POST", method: "POST",
data, data,
}); });
}; };
// 专家活动列表 // 专家活动列表
export const activitysList = (params) => { export const activitysList = (params) => {
return request({ return request({
url: "/app/expert/getActivitys", url: "/app/expert/getActivitys",
method: "GET", method: "GET",
params, params,
}); });
};
export const activityInfo = (id) => {
return request({
url: "/app/expert/getActivityInfo",
method: "GET",
params: {
id
},
});
}; };
// 专家论文列表 // 专家论文列表
export const paperList = (params) => { export const paperList = (params) => {
return request({ return request({
url: "/app/expert/getPaperList", url: "/app/expert/getPaperList",
method: "GET", method: "GET",
params, params,
}); });
}; };
// 专家新增论文 // 专家新增论文
export const insertCasPaper = (data) => { export const insertCasPaper = (data) => {
return request({ return request({
url: "/app/expert/insertCasPaper", url: "/app/expert/insertCasPaper",
method: "POST", method: "POST",
data, data,
}); });
}; };
// 专家修改论文 // 专家修改论文
export const updateCasPaper = (data) => { export const updateCasPaper = (data) => {
return request({ return request({
url: "/app/expert/updateCasPaper", url: "/app/expert/updateCasPaper",
method: "PUT", method: "PUT",
data, data,
}); });
}; };
// 专家删除论文 // 专家删除论文
export const deleteCasPaper = (ids) => { export const deleteCasPaper = (ids) => {
return request({ return request({
url: `/app/expert/paper/${ids}`, url: `/app/expert/paper/${ids}`,
method: "DELETE", method: "DELETE",
}); });
}; };

View File

@ -4,6 +4,7 @@ const common = {
home: "Главная", home: "Главная",
search: "Поиск", search: "Поиск",
viewDetails: "Просмотреть детали", viewDetails: "Просмотреть детали",
details: "Подробности",
systemPrompt: "Системное сообщение", systemPrompt: "Системное сообщение",
confirm: "Подтвердить", confirm: "Подтвердить",
cancel: "Отмена", cancel: "Отмена",

View File

@ -3,6 +3,7 @@ export const common = {
home: "首页", home: "首页",
search: "搜索", search: "搜索",
viewDetails: "查看详情", viewDetails: "查看详情",
details: "详情",
systemPrompt: "系统提示", systemPrompt: "系统提示",
confirm: "确定", confirm: "确定",
cancel: "取消", cancel: "取消",

View File

@ -30,6 +30,7 @@
<el-col :span="24"> <el-col :span="24">
<!-- <el-checkbox label="0" @change="handleCheck">其他</el-checkbox>--> <!-- <el-checkbox label="0" @change="handleCheck">其他</el-checkbox>-->
<el-form-item <el-form-item
v-if="false"
:label=" :label="
t('admin.form.category', { type: t('admin.common.demand') }) t('admin.form.category', { type: t('admin.common.demand') })
" "

View File

@ -1,11 +1,11 @@
<script setup> <script setup>
import { reactive, ref, toRefs } from "vue"; import {reactive, ref, toRefs} from "vue";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { useRoute, useRouter } from "vue-router"; import {useRoute, useRouter} from "vue-router";
import { technologyDemandList } from "@/api/admin/agent/service/technology-demand"; import {technologyDemandList} from "@/api/admin/agent/service/technology-demand";
import { useI18n } from "vue-i18n"; import {useI18n} from "vue-i18n";
const { t } = useI18n(); const {t} = useI18n();
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const dataList = ref([]); const dataList = ref([]);
@ -21,7 +21,7 @@ const data = reactive({
enterpriseId: null, enterpriseId: null,
}, },
}); });
const { queryParams } = toRefs(data); const {queryParams} = toRefs(data);
const getList = async () => { const getList = async () => {
loading.value = true; loading.value = true;
@ -46,9 +46,12 @@ function handleResults(row) {
}); });
} }
const handleRelease = () => { const handleDetail = (id) => {
router.push({ router.push({
path: "/admin/service/technology-demand-release", path: "/admin/service/technology-demand-release",
query: {
id
}
}); });
}; };
@ -75,51 +78,51 @@ if (route.query.id) {
<div class="app-container"> <div class="app-container">
<el-row :gutter="10" class="mb8" style="margin-top: 12px"> <el-row :gutter="10" class="mb8" style="margin-top: 12px">
<right-toolbar <right-toolbar
v-model:showSearch="showSearch" v-model:showSearch="showSearch"
@queryTable="getList" @queryTable="getList"
></right-toolbar> ></right-toolbar>
</el-row> </el-row>
<el-table :data="dataList"> <el-table :data="dataList">
<!-- 编号 --> <!-- 编号 -->
<el-table-column <el-table-column
align="center" align="center"
:label="t('admin.common.dataNumber')" :label="t('admin.common.dataNumber')"
prop="id" prop="id"
/> />
<el-table-column <el-table-column
align="center" align="center"
:label="t('admin.form.name', { type: t('admin.common.demand') })" :label="t('admin.form.name', { type: t('admin.common.demand') })"
prop="title" prop="title"
/> />
<el-table-column <el-table-column
align="center" align="center"
:label="t('admin.form.industry')" :label="t('admin.form.industry')"
prop="industryStr" prop="industryStr"
/> />
<el-table-column <el-table-column
align="center" align="center"
:label="t('admin.form.contact')" :label="t('admin.form.contact')"
prop="name" prop="name"
/> />
<el-table-column <el-table-column
align="center" align="center"
:label="t('admin.form.mobile')" :label="t('admin.form.mobile')"
prop="mobile" prop="mobile"
/> />
<el-table-column <el-table-column
align="center" align="center"
:label="t('admin.table.publishTime')" :label="t('admin.table.publishTime')"
prop="name" prop="name"
> >
<template #default="{ row }"> <template #default="{ row }">
{{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }} {{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
align="center" align="center"
:label="t('admin.table.deadline')" :label="t('admin.table.deadline')"
prop="name" prop="name"
> >
<template #default="{ row }"> <template #default="{ row }">
{{ dayjs(row.deadline).format("YYYY-MM-DD HH:mm:ss") }} {{ dayjs(row.deadline).format("YYYY-MM-DD HH:mm:ss") }}
@ -127,25 +130,28 @@ if (route.query.id) {
</el-table-column> </el-table-column>
<el-table-column align="center" label=""> <el-table-column align="center" label="">
<template #default="{ row }"> <template #default="{ row }">
<el-button type="text"> <el-button size="small" type="text">
{{ t("admin.common.delete") }} {{ t("admin.common.delete") }}
</el-button> </el-button>
<el-button type="text" @click="handleResults(row)" <el-button size="small" type="text" @click="handleResults(row)"
>{{ t("webSearch.viewMatchingResults") }} >{{ t("webSearch.viewMatchingResults") }}
</el-button> </el-button>
<el-button type="text" @click="handleUpdateStatus(row)" <el-button size="small" type="text" @click="handleUpdateStatus(row)"
><!--更新状态--> ><!--更新状态-->
{{ t("routes.broker.updateStatus") }} {{ t("routes.broker.updateStatus") }}
</el-button> </el-button>
<el-button size="small" type="text" @click="handleDetail(row.id)">
{{ t("common.details") }}
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total > 0" v-show="total > 0"
v-model:limit="queryParams.pageSize" v-model:limit="queryParams.pageSize"
v-model:page="queryParams.pageNum" v-model:page="queryParams.pageNum"
:total="total" :total="total"
@pagination="getList" @pagination="getList"
/> />
</div> </div>
</template> </template>

View File

@ -2,10 +2,10 @@
<div class="app-container"> <div class="app-container">
<el-card shadow="always" style="width: 55%; margin: 0 auto"> <el-card shadow="always" style="width: 55%; margin: 0 auto">
<el-form <el-form
ref="formRef" ref="formRef"
:model="form" :model="form"
:rules="rules" :rules="rules"
:label-width="labelWidth + 'px'" :label-width="labelWidth + 'px'"
> >
<p> <p>
<b> {{ t("admin.form.basicInfo") }}</b> <b> {{ t("admin.form.basicInfo") }}</b>
@ -14,12 +14,12 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item <el-form-item
:label=" :label="
t('admin.form.name', { t('admin.form.name', {
type: t('routes.company.technicalDemand'), type: t('routes.company.technicalDemand'),
}) })
" "
prop="title" prop="title"
> >
<el-input v-model="form.title"></el-input> <el-input v-model="form.title"></el-input>
</el-form-item> </el-form-item>
@ -56,8 +56,8 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item <el-form-item
:label="t('webSearch.demandDescription')" :label="t('webSearch.demandDescription')"
prop="introduce" prop="introduce"
> >
<!-- <wangEditor <!-- <wangEditor
v-model="form.introduce" v-model="form.introduce"
@ -67,10 +67,10 @@
@blur="formRef.validateField(`introduce`)" @blur="formRef.validateField(`introduce`)"
></wangEditor>--> ></wangEditor>-->
<el-input <el-input
type="textarea" type="textarea"
v-model="form.introduce" v-model="form.introduce"
:autosize="{ minRows: 6, maxRows: 8 }" :autosize="{ minRows: 6, maxRows: 8 }"
:placeholder=" :placeholder="
t( t(
'webSearch.pleaseEnterTheContentOfTheTechnicalRequirementsAndTheDetailedTechnicalIndicators' 'webSearch.pleaseEnterTheContentOfTheTechnicalRequirementsAndTheDetailedTechnicalIndicators'
) )
@ -81,9 +81,9 @@
</el-row> </el-row>
<field-options <field-options
v-model="form" v-model="form"
:labelWidth="labelWidth" :labelWidth="labelWidth"
ref="fieldFormRef" ref="fieldFormRef"
/> />
<!--<city-options <!--<city-options
v-model="form" v-model="form"
@ -109,20 +109,20 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
:label="t('admin.form.achievementDemandBudget')" :label="t('admin.form.achievementDemandBudget')"
:prop="form.budgetMode == 1 ? 'budget' : ''" :prop="form.budgetMode == 1 ? 'budget' : ''"
> >
<el-input <el-input
v-model="form.budget" v-model="form.budget"
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')"
:placeholder=" :placeholder="
t('admin.form.placeholder', { t('admin.form.placeholder', {
type: t('admin.form.technicalDemandBudget'), type: t('admin.form.technicalDemandBudget'),
}) })
" "
> >
<template #append <template #append
>{{ t("admin.table.tenThousandYuan") }} >{{ t("admin.table.tenThousandYuan") }}
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -130,10 +130,10 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label-width="50px"> <el-form-item label-width="50px">
<el-checkbox <el-checkbox
false-label="1" false-label="1"
true-label="2" true-label="2"
v-model="form.budgetMode" v-model="form.budgetMode"
>{{ t("tips.faceToFace") }} >{{ t("tips.faceToFace") }}
</el-checkbox> </el-checkbox>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -143,11 +143,11 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="t('admin.table.deadline')" prop="deadline"> <el-form-item :label="t('admin.table.deadline')" prop="deadline">
<el-date-picker <el-date-picker
style="width: 100%" style="width: 100%"
v-model="form.deadline" v-model="form.deadline"
type="date" type="date"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
:placeholder=" :placeholder="
t('admin.form.pleaseSelect', { t('admin.form.pleaseSelect', {
type: t('admin.table.deadline'), type: t('admin.table.deadline'),
}) })
@ -162,8 +162,8 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="t('admin.form.demandContact')" prop="name"> <el-form-item :label="t('admin.form.demandContact')" prop="name">
<el-input <el-input
v-model="form.name" v-model="form.name"
:placeholder=" :placeholder="
t('admin.form.placeholder', { t('admin.form.placeholder', {
type: t('admin.form.demandContact'), type: t('admin.form.demandContact'),
}) })
@ -175,8 +175,8 @@
<el-form-item :label="t('admin.form.contactPhone')" prop="mobile"> <el-form-item :label="t('admin.form.contactPhone')" prop="mobile">
<!-- maxlength="11"--> <!-- maxlength="11"-->
<el-input <el-input
v-model="form.mobile" v-model="form.mobile"
:placeholder=" :placeholder="
t('admin.form.placeholder', { t('admin.form.placeholder', {
type: t('admin.form.contactPhone'), type: t('admin.form.contactPhone'),
}) })
@ -208,13 +208,13 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<input-box-add <input-box-add
class="cooperation-mode" class="cooperation-mode"
:labelWidth="labelWidth" :labelWidth="labelWidth"
v-model="form" v-model="form"
:title="t('webSearch.cooperationMode')" :title="t('webSearch.cooperationMode')"
:placeholder="t('admin.table.cooperationType')" :placeholder="t('admin.table.cooperationType')"
fieldKey="wants" fieldKey="wants"
ref="directionsFormRef" ref="directionsFormRef"
/> />
</el-col> </el-col>
</el-row> </el-row>
@ -225,10 +225,10 @@
</div> --> </div> -->
<div :style="{ marginLeft: labelWidth + 'px' }"> <div :style="{ marginLeft: labelWidth + 'px' }">
<el-button type="primary" @click="submitForm(3)" <el-button type="primary" @click="submitForm(3)"
>{{ t("admin.form.saveDraft") }} >{{ t("admin.form.saveDraft") }}
</el-button> </el-button>
<el-button type="primary" @click="submitForm(1)" <el-button type="primary" @click="submitForm(1)"
>{{ t("admin.common.submitAudit") }} >{{ t("admin.common.submitAudit") }}
</el-button> </el-button>
</div> </div>
</el-card> </el-card>
@ -236,29 +236,29 @@
</template> </template>
<script setup> <script setup>
// import { expert } from "@/api/identity/index"; // import { expert } from "@/api/identity/index";
import { insertTechnologyDemand } from "@/api/admin/enterprise"; import {insertTechnologyDemand} from "@/api/admin/enterprise";
import { useI18n } from "vue-i18n"; import {useI18n} from "vue-i18n";
import { useRoute, useRouter } from "vue-router"; import {useRoute, useRouter} from "vue-router";
import FieldOptions from "@/views/components/FieldOptions"; import FieldOptions from "@/views/components/FieldOptions";
import InputBoxAdd from "@/views/components/InputBoxAdd"; import InputBoxAdd from "@/views/components/InputBoxAdd";
import { import {
computed, computed,
getCurrentInstance, getCurrentInstance, onActivated,
onMounted, onMounted,
reactive, reactive,
ref, ref,
toRefs, toRefs,
} from "vue"; } from "vue";
import { ElMessage } from "element-plus"; import {ElMessage} from "element-plus";
import { updateCount } from "@/api/admin/count"; import {updateCount} from "@/api/admin/count";
import { import {
getTechnologyDemand, getTechnologyDemand,
updateTechnologyDemand, updateTechnologyDemand,
} from "@/api/admin/enterprise/demand"; } from "@/api/admin/enterprise/demand";
import tab from "@/plugins/tab"; import tab from "@/plugins/tab";
import { countryOptions } from "@/utils/parameter"; import {countryOptions} from "@/utils/parameter";
const { t, locale } = useI18n(); const {t, locale} = useI18n();
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const data = reactive({ const data = reactive({
@ -276,11 +276,11 @@ const data = reactive({
required: true, required: true,
/*"需求名称不能为空"*/ /*"需求名称不能为空"*/
message: computed(() => message: computed(() =>
t("admin.validation.required", { t("admin.validation.required", {
type: t("admin.form.name", { type: t("admin.form.name", {
type: t("admin.common.demand"), type: t("admin.common.demand"),
}), }),
}) })
), ),
trigger: "blur", trigger: "blur",
}, },
@ -290,9 +290,9 @@ const data = reactive({
required: true, required: true,
/*"需求描述不能为空"*/ /*"需求描述不能为空"*/
message: computed(() => message: computed(() =>
t("admin.validation.required", { t("admin.validation.required", {
type: t("webSearch.demandDescription"), type: t("webSearch.demandDescription"),
}) })
), ),
trigger: "change", trigger: "change",
}, },
@ -302,9 +302,9 @@ const data = reactive({
required: true, required: true,
/*"需求联系人不能为空"*/ /*"需求联系人不能为空"*/
message: computed(() => message: computed(() =>
t("admin.validation.required", { t("admin.validation.required", {
type: t("admin.form.demandContact"), type: t("admin.form.demandContact"),
}) })
), ),
trigger: "blur", trigger: "blur",
}, },
@ -314,9 +314,9 @@ const data = reactive({
required: true, required: true,
/*"联系人手机号不能为空"*/ /*"联系人手机号不能为空"*/
message: computed(() => message: computed(() =>
t("admin.validation.required", { t("admin.validation.required", {
type: t("admin.form.demandContact"), type: t("admin.form.demandContact"),
}) })
), ),
trigger: "blur", trigger: "blur",
}, },
@ -330,9 +330,9 @@ const data = reactive({
{ {
required: true, required: true,
message: computed(() => message: computed(() =>
t("admin.validation.required", { t("admin.validation.required", {
type: t("webContact.demandContact"), type: t("webContact.demandContact"),
}) })
), ),
trigger: "blur", trigger: "blur",
}, },
@ -341,7 +341,7 @@ const data = reactive({
{ {
required: true, required: true,
message: computed(() => message: computed(() =>
t("admin.form.pleaseSelect", { type: t("webContact.demandType") }) t("admin.form.pleaseSelect", {type: t("webContact.demandType")})
), ),
trigger: "change", trigger: "change",
}, },
@ -350,7 +350,7 @@ const data = reactive({
{ {
required: true, required: true,
message: computed(() => message: computed(() =>
t("admin.validation.required", { type: t("webContact.demandBudget") }) t("admin.validation.required", {type: t("webContact.demandBudget")})
), ),
trigger: "blur", trigger: "blur",
}, },
@ -359,7 +359,7 @@ const data = reactive({
{ {
required: true, required: true,
message: computed(() => message: computed(() =>
t("admin.form.pleaseSelect", { type: t("admin.table.deadline") }) t("admin.form.pleaseSelect", {type: t("admin.table.deadline")})
), ),
trigger: ["change", "blur"], trigger: ["change", "blur"],
}, },
@ -368,9 +368,9 @@ const data = reactive({
{ {
required: true, required: true,
message: computed(() => message: computed(() =>
t("admin.validation.required", { t("admin.validation.required", {
type: t("admin.form.demandSubmitterPhone"), type: t("admin.form.demandSubmitterPhone"),
}) })
), ),
trigger: "blur", trigger: "blur",
}, },
@ -378,33 +378,11 @@ const data = reactive({
}, },
}); });
const { queryParams, form, rules } = toRefs(data); const {queryParams, form, rules} = toRefs(data);
const { proxy } = getCurrentInstance(); const {proxy} = getCurrentInstance();
const labelWidth = 160; const labelWidth = 160;
// const isContainOther = ref(false);
/*const checkList = reactive([
{
id: 1,
name: "成果推广",
nameRu: "Продвижение достижений",
},
{
id: 2,
name: "关键成果解决",
nameRu: "Решение ключевых результатов",
},
{
id: 3,
name: "对接专家院士",
nameRu: "Связь с экспертами и академиками",
},
{
id: 4,
name: "上市辅导",
nameRu: "Помощь в выходе на рынок",
},
]);*/
const formRef = ref(null); const formRef = ref(null);
const fieldFormRef = ref(null); const fieldFormRef = ref(null);
@ -435,48 +413,14 @@ const submitForm = async (status) => {
} else { } else {
console.log("validation failed"); console.log("validation failed");
} }
// formRef.value.validate(async (valid) => {
// // console.log(valid);
// if (valid) {
// form.value.amount = form.value.amount - 0;
// }
// form.value.amount = form.value.amount - 0;
// const cityForm = proxy.$refs.cityForm.submitForm(); // 城市
// if (valid && cityForm) {
// console.log(form.value);
// if (form.value.id != undefined) {
// // updatePost(form.value).then((response) => {
// // proxy.$modal.msgSuccess(t('admin.common.editSuccess'));
// // proxy.$router.go(-1);
// // });
// } else {
// // addPost(form.value).then((response) => {
// // proxy.$modal.msgSuccess(t('admin.common.addSuccess'));
// // proxy.$router.go(-1);
// // });
// }
// }
// });
};
// 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" });
}; };
onMounted(() => { // 返回技术需求列表
const backToList = () => {
tab.closeOpenPage({path: "/demand/technology"});
};
onActivated(() => {
formRef.value.resetFields(); formRef.value.resetFields();
if (route.query.id) { if (route.query.id) {
@ -486,20 +430,8 @@ onMounted(() => {
}), }),
}); });
tab.updatePage(obj); tab.updatePage(obj);
getTechnologyDemand({ id: route.query.id }).then((resp) => { getTechnologyDemand({id: route.query.id}).then((resp) => {
form.value = resp.data; form.value = resp.data;
/*if (!form.value.kinds) {
form.value.kinds = resp.data.kind?.split(",") ?? [];
form.value.kinds.forEach((el, index) => {
if (!checkList.find((item) => item.name == el)) {
checkList.push({
id: index,
name: el,
});
}
});
}*/
if (!form.value.wants) { if (!form.value.wants) {
form.value.wants = resp.data.want?.split(",") ?? []; form.value.wants = resp.data.want?.split(",") ?? [];
} }
@ -513,6 +445,7 @@ onMounted(() => {
} }
} }
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.cooperation-mode) { :deep(.cooperation-mode) {

View File

@ -4,136 +4,143 @@
<el-col :span="1.5"> <el-col :span="1.5">
<router-link to="./releaseTechnology"> <router-link to="./releaseTechnology">
<el-button type="primary" size="small" <el-button type="primary" size="small"
>{{ t("admin.table.publishDemand") }} >{{ t("admin.table.publishDemand") }}
</el-button> </el-button>
</router-link> </router-link>
</el-col> </el-col>
</el-row> </el-row>
<el-radio-group <el-radio-group
v-model="queryParams.status" v-model="queryParams.status"
size="small" size="small"
@change="handleQuery" @change="handleQuery"
> >
<el-radio-button :label="0" <el-radio-button :label="0"
>{{ t("admin.table.pendingReview") }} >{{ t("admin.table.pendingReview") }}
</el-radio-button> </el-radio-button>
<el-radio-button :label="1" <el-radio-button :label="1"
>{{ t("admin.table.published") }} >{{ t("admin.table.published") }}
</el-radio-button> </el-radio-button>
<el-radio-button :label="2" <el-radio-button :label="2"
>{{ t("admin.table.rejected") }} >{{ t("admin.table.rejected") }}
</el-radio-button> </el-radio-button>
<el-radio-button :label="3" <el-radio-button :label="3"
>{{ t("admin.table.draftBox") }} >{{ t("admin.table.draftBox") }}
</el-radio-button> </el-radio-button>
<el-radio-button :label="4">{{ t("dict.finished") }}</el-radio-button> <el-radio-button :label="4">{{ t("dict.finished") }}</el-radio-button>
</el-radio-group> </el-radio-group>
<el-table v-loading="loading" :data="dataList" style="margin-top: 20px"> <el-table v-loading="loading" :data="dataList" style="margin-top: 20px">
<el-table-column <el-table-column
:label="t('admin.common.dataNumber')" :label="t('admin.common.dataNumber')"
prop="id" prop="id"
align="center" align="center"
/> />
<el-table-column <el-table-column
:label="t('admin.form.name', { type: t('admin.common.demand') })" :label="t('admin.form.name', { type: t('admin.common.demand') })"
prop="title" prop="title"
align="center" align="center"
/> />
<el-table-column <el-table-column
:label="t('admin.form.industry')" :label="t('admin.form.industry')"
prop="industryStr" prop="industryStr"
align="center" align="center"
/> />
<el-table-column <el-table-column
:label="t('admin.form.contact')" :label="t('admin.form.contact')"
prop="name" prop="name"
align="center" align="center"
/> />
<el-table-column <el-table-column
:label="t('admin.form.mobile')" :label="t('admin.form.mobile')"
prop="mobile" prop="mobile"
align="center" align="center"
/> />
<!-- <el-zh-column label="浏览量" prop="visit_count" align="center" /> --> <!-- <el-zh-column label="浏览量" prop="visit_count" align="center" /> -->
<el-table-column <el-table-column
:label="t('admin.table.publishTime')" :label="t('admin.table.publishTime')"
prop="createTime" prop="createTime"
align="center" align="center"
width="180" width="180"
> >
<template #default="{ row }"> <template #default="{ row }">
<span>{{ parseTime(row.createTime) }}</span> <span>{{ parseTime(row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
:label="t('admin.table.deadline')" :label="t('admin.table.deadline')"
prop="deadline" prop="deadline"
align="center" align="center"
width="180" width="180"
> >
<template #default="{ row }"> <template #default="{ row }">
<span>{{ parseTime(row.deadline) }}</span> <span>{{ parseTime(row.deadline) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
:label="t('admin.common.operation')" :label="t('admin.common.operation')"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
align="center" align="center"
> >
<template #default="{ row }"> <template #default="{ row }">
<router-link <router-link
:to="{ path: './releaseTechnology', query: { id: row.id } }" :to="{ path: './releaseTechnology', query: { id: row.id } }"
v-if="queryParams.status == 3" v-if="queryParams.status == 3"
> >
<el-button size="small" type="text" icon="Edit" <el-button size="small" type="text" icon="Edit"
>{{ t("admin.common.edit") }} >{{ t("admin.common.edit") }}
</el-button> </el-button>
</router-link> </router-link>
<el-button <el-button
v-if="queryParams.status != 0" v-if="queryParams.status != 0"
size="small" size="small"
type="text" type="text"
icon="Delete" icon="Delete"
@click="handleDelete(row.id)" @click="handleDelete(row.id)"
> >
{{ t("admin.common.delete") }} {{ t("admin.common.delete") }}
</el-button> </el-button>
<el-button <el-button
v-if="queryParams.status == 1" v-if="queryParams.status == 1"
size="small" size="small"
type="text" type="text"
icon="View" icon="View"
@click="handleResults(row)" @click="handleResults(row)"
>{{ t("webSearch.viewMatchingResults") }} >{{ t("webSearch.viewMatchingResults") }}
</el-button> </el-button>
<el-button <el-button
v-if="queryParams.status == 0" v-if="queryParams.status == 0"
size="small" size="small"
type="text" type="text"
icon="Close" icon="Close"
@click="cancelPub(row.id)" @click="cancelPub(row.id)"
>{{ t("admin.table.cancelPublish") }} >{{ t("admin.table.cancelPublish") }}
</el-button> </el-button>
<el-button <el-button
size="small" size="small"
type="text" type="text"
icon="View" icon="View"
@click="complete(row.id)" @click="handleDetail(row.id)"
>{{ t("common.complete") }} >{{ t("common.viewDetails") }}
</el-button>
<el-button
size="small"
type="text"
icon="View"
@click="complete(row.id)"
>{{ t("common.complete") }}
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total > 0" v-show="total > 0"
:total="total" :total="total"
v-model:page="queryParams.pageNum" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" v-model:limit="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
</div> </div>
</template> </template>
@ -144,14 +151,14 @@ import {
technologyDemandList, technologyDemandList,
updateTechnologyDemand, updateTechnologyDemand,
} from "@/api/admin/enterprise/demand"; } from "@/api/admin/enterprise/demand";
import { ElMessage } from "element-plus"; import {ElMessage} from "element-plus";
import modal from "@/plugins/modal"; import modal from "@/plugins/modal";
import { useRouter } from "vue-router"; import {useRouter} from "vue-router";
import { useI18n } from "vue-i18n"; import {useI18n} from "vue-i18n";
import { getCurrentInstance, reactive, ref, toRefs } from "vue"; import {getCurrentInstance, reactive, ref, toRefs} from "vue";
const { t } = useI18n(); const {t} = useI18n();
const { proxy } = getCurrentInstance(); const {proxy} = getCurrentInstance();
const router = useRouter(); const router = useRouter();
const dataList = ref([]); // 企业技术需求列表 const dataList = ref([]); // 企业技术需求列表
@ -166,7 +173,7 @@ const data = reactive({
}, },
}); });
const { queryParams, form, rules } = toRefs(data); const {queryParams, form, rules} = toRefs(data);
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
@ -186,47 +193,52 @@ function handleQuery() {
/** 删除按钮操作 */ /** 删除按钮操作 */
function handleDelete(id) { function handleDelete(id) {
modal modal
.confirm( .confirm(
t("admin.common.confirmAction", { t("admin.common.confirmAction", {
action: t("admin.common.delete"), action: t("admin.common.delete"),
number: id, number: id,
type: t("admin.common.demand"), type: t("admin.common.demand"),
})
)
.then(() => {
console.log("delete");
return deleteTechnologyDemand(id);
}) })
) .then(() => {
.then(() => { getList();
console.log("delete"); ElMessage.success(t("admin.common.deleteSuccess"));
return deleteTechnologyDemand(id); })
}) .catch((err) => {
.then(() => { console.log(err);
getList(); });
ElMessage.success(t("admin.common.deleteSuccess")); }
})
.catch((err) => { const handleDetail = (id) => {
console.log(err); router.push(`/demand/releaseTechnology?id=${id}`)
});
} }
function handleShelf(row) { function handleShelf(row) {
let text = let text =
row.shelf_status == 2 ? t("admin.table.putOn") : t("admin.table.putOff"); row.shelf_status == 2 ? t("admin.table.putOn") : t("admin.table.putOff");
modal modal
// .confirm('确认要"' + text + '""' + row.id + '"的需求吗?') // .confirm('确认要"' + text + '""' + row.id + '"的需求吗?')
.confirm( .confirm(
t("admin.common.confirmAction", { t("admin.common.confirmAction", {
action: text, action: text,
number: row.id, number: row.id,
type: t("admin.common.demand"), type: t("admin.common.demand"),
})
)
.then(function () {
let status = row.shelf_status == 1 ? 2 : 1;
return achievementShelf({id: row.id, status});
}) })
) .then(() => {
.then(function () { getList();
let status = row.shelf_status == 1 ? 2 : 1; ElMessage.success(t("admin.common.success", {action: text}));
return achievementShelf({ id: row.id, status }); })
}) .catch(() => {
.then(() => { });
getList();
ElMessage.success(t("admin.common.success", { action: text }));
})
.catch(() => {});
} }
function handleResults(row) { function handleResults(row) {
@ -241,42 +253,44 @@ function handleResults(row) {
// 修改为完成状态 // 修改为完成状态
const complete = (id) => { const complete = (id) => {
modal modal
.confirm( .confirm(
t("admin.common.confirmAction", { t("admin.common.confirmAction", {
action: t("common.finish"), action: t("common.finish"),
type: t("admin.common.item"), type: t("admin.common.item"),
number: id, number: id,
})
)
.then(async () => {
await updateTechnologyDemand({id, status: 4});
getList();
ElMessage.success(
t("admin.common.success", {
action: t("common.finish"),
})
);
}) })
) .catch(() => {
.then(async () => { });
await updateTechnologyDemand({ id, status: 4 });
getList();
ElMessage.success(
t("admin.common.success", {
action: t("common.finish"),
})
);
})
.catch(() => {});
}; };
const cancelPub = (id) => { const cancelPub = (id) => {
modal modal
// .confirm(`是否确认取消发布编号为${id}的数据项?`) // .confirm(`是否确认取消发布编号为${id}的数据项?`)
.confirm( .confirm(
t("admin.common.confirmAction", { t("admin.common.confirmAction", {
action: t("admin.table.cancelPublish"), action: t("admin.table.cancelPublish"),
number: id, number: id,
type: t("admin.common.item"), type: t("admin.common.item"),
})
)
.then(async () => {
await updateTechnologyDemand({id, status: 3});
getList();
ElMessage.success(
t("admin.common.success", {action: t("admin.table.cancelPublish")})
);
}) })
) .catch(() => {
.then(async () => { });
await updateTechnologyDemand({ id, status: 3 });
getList();
ElMessage.success(
t("admin.common.success", { action: t("admin.table.cancelPublish") })
);
})
.catch(() => {});
}; };
getList(); getList();
</script> </script>

View File

@ -4,62 +4,62 @@
<el-col :span="1.5"> <el-col :span="1.5">
<router-link to="./release"> <router-link to="./release">
<el-button type="primary" size="small" <el-button type="primary" size="small"
>{{ t("routes.company.publishProduct") }} >{{ t("routes.company.publishProduct") }}
</el-button> </el-button>
</router-link> </router-link>
</el-col> </el-col>
</el-row> </el-row>
<el-radio-group <el-radio-group
v-model="queryParams.status" v-model="queryParams.status"
size="small" size="small"
@change="handleQuery" @change="handleQuery"
> >
<el-radio-button :label="0" <el-radio-button :label="0"
>{{ t("admin.table.pendingReview") }} >{{ t("admin.table.pendingReview") }}
</el-radio-button> </el-radio-button>
<el-radio-button :label="1" <el-radio-button :label="1"
>{{ t("admin.table.published") }} >{{ t("admin.table.published") }}
</el-radio-button> </el-radio-button>
<el-radio-button :label="2" <el-radio-button :label="2"
>{{ t("admin.table.rejected") }} >{{ t("admin.table.rejected") }}
</el-radio-button> </el-radio-button>
<el-radio-button :label="3" <el-radio-button :label="3"
>{{ t("admin.table.draftBox") }} >{{ t("admin.table.draftBox") }}
</el-radio-button> </el-radio-button>
</el-radio-group> </el-radio-group>
<el-table v-loading="loading" :data="dataList" style="margin-top: 20px"> <el-table v-loading="loading" :data="dataList" style="margin-top: 20px">
<el-table-column :label="t('admin.common.dataNumber')" prop="id" /> <el-table-column :label="t('admin.common.dataNumber')" prop="id"/>
<el-table-column <el-table-column
:label="t('admin.form.name', { type: t('admin.form.product') })" :label="t('admin.form.name', { type: t('admin.form.product') })"
prop="title" prop="title"
/> />
<el-table-column <el-table-column
:label="t('admin.form.productField')" :label="t('admin.form.productField')"
prop="industryStr" prop="industryStr"
/> />
<!-- <el-zh-column label="浏览量" prop="visit_count" /> --> <!-- <el-zh-column label="浏览量" prop="visit_count" /> -->
<el-table-column <el-table-column
:label="t('admin.table.publishTime')" :label="t('admin.table.publishTime')"
prop="createTime" prop="createTime"
width="180" width="180"
> >
<template #default="{ row }"> <template #default="{ row }">
<span>{{ row.createTime }}</span> <span>{{ row.createTime }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
:label="t('admin.common.operation')" :label="t('admin.common.operation')"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
> >
<template #default="{ row }"> <template #default="{ row }">
<router-link <router-link
:to="{ path: './release', query: { id: row.id } }" :to="{ path: './release', query: { id: row.id } }"
v-if="queryParams.status == 3" v-if="queryParams.status == 3"
> >
<el-button size="small" type="text" icon="Edit" <el-button size="small" type="text" icon="Edit"
>{{ t("admin.common.edit") }} >{{ t("admin.common.edit") }}
</el-button> </el-button>
</router-link> </router-link>
@ -76,21 +76,28 @@
<!-- }}--> <!-- }}-->
<!-- </el-button>--> <!-- </el-button>-->
<el-button <el-button
v-if="queryParams.status != 1" v-if="queryParams.status !== 1"
size="small" size="small"
type="text" type="text"
icon="Delete" icon="Delete"
@click="handleDelete(row.id)" @click="handleDelete(row.id)"
> >
{{ t("admin.common.delete") }} {{ t("admin.common.delete") }}
</el-button> </el-button>
<el-button <el-button
v-if="queryParams.status == 1" v-if="queryParams.status == 1"
size="small" size="small"
type="text" type="text"
icon="View" icon="View"
@click="handleResults(row)" @click="handleResults(row)"
>{{ t("webSearch.viewMatchingResults") }} >{{ t("webSearch.viewMatchingResults") }}
</el-button>
<el-button
size="small"
type="text"
icon="View"
@click="handleDetails(row.id)"
>{{ t("common.viewDetails") }}
</el-button> </el-button>
<!-- <el-button--> <!-- <el-button-->
<!-- v-if="queryParams.status == 1"--> <!-- v-if="queryParams.status == 1"-->
@ -101,24 +108,24 @@
<!-- @click="checkEnterpriseInfo(row.id)"--> <!-- @click="checkEnterpriseInfo(row.id)"-->
<!-- >{{ t("tips.browseEnterpriseInformation") }}--> <!-- >{{ t("tips.browseEnterpriseInformation") }}-->
<!-- </el-button>--> <!-- </el-button>-->
<!-- TODO: <el-button <!-- TODO: <el-button
v-if="queryParams.status == 0" v-if="queryParams.status == 0"
size="small" size="small"
type="text" type="text"
icon="Close" icon="Close"
@click="releaseCancel(row.id)" @click="releaseCancel(row.id)"
>{{ t("tips.moveToDraftBox") }} >{{ t("tips.moveToDraftBox") }}
</el-button>--> </el-button>-->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total > 0" v-show="total > 0"
:total="total" :total="total"
v-model:page="queryParams.pageNum" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" v-model:limit="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
</div> </div>
</template> </template>
@ -129,13 +136,13 @@ import {
getEnterpriseProduct, getEnterpriseProduct,
updateEnterpriseProduct, updateEnterpriseProduct,
} from "@/api/admin/enterprise/product"; } from "@/api/admin/enterprise/product";
import { ElMessage } from "element-plus"; import {ElMessage} from "element-plus";
import modal from "@/plugins/modal"; import modal from "@/plugins/modal";
import { onActivated, reactive, ref, toRefs } from "vue"; import {onActivated, reactive, ref, toRefs} from "vue";
import { useRouter } from "vue-router"; import {useRouter} from "vue-router";
import { useI18n } from "vue-i18n"; import {useI18n} from "vue-i18n";
const { t } = useI18n(); const {t} = useI18n();
const router = useRouter(); const router = useRouter();
const dataList = ref([]); const dataList = ref([]);
const loading = ref(true); const loading = ref(true);
@ -150,7 +157,7 @@ const data = reactive({
}, },
}); });
const { queryParams } = toRefs(data); const {queryParams} = toRefs(data);
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
@ -164,21 +171,21 @@ const getList = async () => {
// 处理删除 // 处理删除
const handleDelete = (id) => { const handleDelete = (id) => {
modal modal
.confirm( .confirm(
t("admin.common.confirmAction", { t("admin.common.confirmAction", {
action: t("admin.common.delete"), action: t("admin.common.delete"),
number: id, number: id,
type: t("admin.form.product"), type: t("admin.form.product"),
})
)
.then(async () => {
await deleteEnterpriseProduct(id);
ElMessage.success(t("admin.common.deleteSuccess"));
getList();
}) })
) .catch((error) => {
.then(async () => { console.log("Cancelled");
await deleteEnterpriseProduct(id); });
ElMessage.success(t("admin.common.deleteSuccess"));
getList();
})
.catch((error) => {
console.log("Cancelled");
});
}; };
/** 搜索按钮操作 */ /** 搜索按钮操作 */
@ -190,52 +197,60 @@ function handleQuery() {
// 取消发布 // 取消发布
const releaseCancel = (id) => { const releaseCancel = (id) => {
modal modal
// .confirm('确认要取消发布id为"' + id + '"的产品吗?') // .confirm('确认要取消发布id为"' + id + '"的产品吗?')
.confirm( .confirm(
t("admin.common.confirmAction", { t("admin.common.confirmAction", {
action: t("admin.table.cancelPublish"), action: t("admin.table.cancelPublish"),
number: id, number: id,
type: t("admin.form.product"), type: t("admin.form.product"),
})
)
.then(async () => {
await updateEnterpriseProduct({id, status: 3});
ElMessage.success(t("tips.cancelReleaseSuccess"));
getList();
}) })
) .catch((err) => {
.then(async () => { console.log(err);
await updateEnterpriseProduct({ id, status: 3 }); });
ElMessage.success(t("tips.cancelReleaseSuccess"));
getList();
})
.catch((err) => {
console.log(err);
});
}; };
// 下架和上架 // 下架和上架
const handleShelf = (row) => { const handleShelf = (row) => {
let text = let text =
row.shelfStatus == 2 ? t("admin.table.putOn") : t("admin.table.putOff"); row.shelfStatus == 2 ? t("admin.table.putOn") : t("admin.table.putOff");
modal modal
// .confirm('确认要"' + text + '""' + row.id + '"的产品吗?') // .confirm('确认要"' + text + '""' + row.id + '"的产品吗?')
.confirm( .confirm(
t("admin.common.confirmAction", { t("admin.common.confirmAction", {
action: text, action: text,
number: row.id, number: row.id,
type: t("admin.form.product"), type: t("admin.form.product"),
})
)
.then(function () {
let status = row.shelfStatus == 1 ? 2 : 1;
return updateEnterpriseProduct({id: row.id, shelfStatus: status});
}) })
) .then(() => {
.then(function () { getList();
let status = row.shelfStatus == 1 ? 2 : 1; ElMessage.success(t("admin.common.success", {action: text}));
return updateEnterpriseProduct({ id: row.id, shelfStatus: status }); })
}) .catch(() => {
.then(() => { });
getList();
ElMessage.success(t("admin.common.success", { action: text }));
})
.catch(() => {});
}; };
const handleResults = (row) => { const handleResults = (row) => {
router.push({ path: "./results", query: { keyword: row.title } }); router.push({path: "./results", query: {keyword: row.title}});
}; };
const handleDetails = (id) => {
router.push({
path: "/extension/release",
query: {
id
}
})
}
const checkEnterpriseInfo = (id) => { const checkEnterpriseInfo = (id) => {
router.push({ path: "./business" }); router.push({path: "./business"});
}; };
onActivated(() => { onActivated(() => {

View File

@ -1,31 +1,31 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form <el-form
:model="queryParams" :model="queryParams"
ref="queryRef" ref="queryRef"
v-show="showSearch" v-show="showSearch"
:inline="true" :inline="true"
> >
<el-form-item <el-form-item
:label="t('admin.form.name', { type: t('admin.common.activity') })" :label="t('admin.form.name', { type: t('admin.common.activity') })"
prop="title" prop="title"
> >
<el-input <el-input
v-model="queryParams.title" v-model="queryParams.title"
:placeholder=" :placeholder="
t('admin.form.placeholder', { type: t('activity.activityName') }) t('admin.form.placeholder', { type: t('activity.activityName') })
" "
clearable clearable
size="small" size="small"
style="width: 240px" style="width: 240px"
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item :label="t('activity.activityStatus')" prop="status"> <el-form-item :label="t('activity.activityStatus')" prop="status">
<el-select <el-select
v-model="queryParams.status" v-model="queryParams.status"
:placeholder="t('admin.form.pleaseSelect')" :placeholder="t('admin.form.pleaseSelect')"
size="small" size="small"
> >
<el-option :label="t('common.show')" value="1"></el-option> <el-option :label="t('common.show')" value="1"></el-option>
<el-option :label="t('common.hide')" value="2"></el-option> <el-option :label="t('common.hide')" value="2"></el-option>
@ -34,10 +34,10 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button
size="small" size="small"
type="primary" type="primary"
icon="Search" icon="Search"
@click="handleQuery" @click="handleQuery"
> >
{{ t("admin.common.search") }} {{ t("admin.common.search") }}
</el-button> </el-button>
@ -49,34 +49,34 @@
<!-- 表格数据 --> <!-- 表格数据 -->
<el-table v-loading="loading" :data="dataList"> <el-table v-loading="loading" :data="dataList">
<el-table-column :label="t('admin.common.dataNumber')" prop="id" /> <el-table-column :label="t('admin.common.dataNumber')" prop="id"/>
<el-table-column <el-table-column
:label="t('admin.form.name', { type: t('admin.common.activity') })" :label="t('admin.form.name', { type: t('admin.common.activity') })"
prop="title" prop="title"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
/> />
<el-table-column <el-table-column
:label="t('activity.signUpDeadline')" :label="t('activity.signUpDeadline')"
align="center" align="center"
prop="joinDeadline" prop="joinDeadline"
> >
<template #default="{ row }"> <template #default="{ row }">
<span>{{ parseTime(row.joinDeadline) }}</span> <span>{{ parseTime(row.joinDeadline) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
:label="t('activity.activityStartTime')" :label="t('activity.activityStartTime')"
align="center" align="center"
prop="beginTime" prop="beginTime"
> >
<template #default="{ row }"> <template #default="{ row }">
<span>{{ parseTime(row.beginTime) }}</span> <span>{{ parseTime(row.beginTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
:label="t('activity.activityEndTime')" :label="t('activity.activityEndTime')"
align="center" align="center"
prop="finishTime" prop="finishTime"
> >
<template #default="{ row }"> <template #default="{ row }">
<span>{{ parseTime(row.finishTime) }}</span> <span>{{ parseTime(row.finishTime) }}</span>
@ -84,9 +84,9 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
:label="t('activity.activitySignUpTime')" :label="t('activity.activitySignUpTime')"
align="center" align="center"
prop="createTime" prop="createTime"
> >
<template #default="{ row }"> <template #default="{ row }">
<span>{{ parseTime(row.createTime) }}</span> <span>{{ parseTime(row.createTime) }}</span>
@ -95,38 +95,276 @@
<el-table-column :label="t('common.status')" align="center" prop="status"> <el-table-column :label="t('common.status')" align="center" prop="status">
<template #default="{ row }"> <template #default="{ row }">
<el-tag type="success" v-if="row.status == 1">{{ <el-tag type="success" v-if="row.status == 1">{{
t("common.show") t("common.show")
}}</el-tag> }}
</el-tag>
<el-tag type="danger" v-else-if="row.status == 2">{{ <el-tag type="danger" v-else-if="row.status == 2">{{
t("common.hide") t("common.hide")
}}</el-tag> }}
</el-tag>
<el-tag type="info" v-else>{{ t("common.unknown") }}</el-tag> <el-tag type="info" v-else>{{ t("common.unknown") }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="false" :label="t('admin.common.operation')" align="center" prop="status">
<template #default="{ row }">
<el-button type="text" icon="view" @click="handleDetail(row.id)" size="small">{{
t("common.viewDetails")
}}
</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total > 0" v-show="total > 0"
:total="total" :total="total"
v-model:page="queryParams.pageNum" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" v-model:limit="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
<el-dialog title="活动详情" v-model="showDialog" width="55%" destroy-on-close>
<el-form ref="formRef" :model="form" label-width="120px">
<el-form-item label="活动名称:" prop="title">
<el-input v-model="form.title" placeholder="请输入活动名称"/>
</el-form-item>
<el-form-item label="联系人:" prop="contact">
<el-input v-model="form.contact" placeholder="请输入联系人"/>
</el-form-item>
<el-form-item label="手机号码:" prop="contactMobile">
<el-input
v-model="form.contactMobile"
placeholder="请输入手机号码"
maxlength="11"
/>
</el-form-item>
<el-form-item label="开始时间:" prop="beginTime">
<el-date-picker
value-format="YYYY-MM-DD HH:mm:ss"
v-model="form.beginTime"
type="datetime"
placeholder="选择开始时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="结束时间:" prop="finishTime">
<el-date-picker
value-format="YYYY-MM-DD HH:mm:ss"
v-model="form.finishTime"
type="datetime"
placeholder="选择结束时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="截止时间:" prop="joinDeadline">
<el-date-picker
value-format="YYYY-MM-DD HH:mm:ss"
v-model="form.joinDeadline"
type="datetime"
placeholder="选择截止时间"
>
</el-date-picker>
</el-form-item>
<!-- 国家-->
<el-form-item
label="国家"
prop="country"
>
<el-select
v-model="form.country"
placeholder="请选择国家"
>
<el-option
v-for="option in countryOptions"
:label="option.value"
:value="option.key"
/>
</el-select>
</el-form-item>
<!-- <CityOptions v-model="form" ref="cityOptionsRef"/>-->
<!-- <el-form-item label="地点:" required>
<el-row type="flex" justify="space-between" :gutter="10">
<el-col :span="8">
<el-form-item prop="province">
<el-select
v-model="form.province"
clearable
placeholder="请选择"
:disabled="provinceSelectList.length === 0"
@change="provinceChange"
>
<el-option
v-for="item in provinceSelectList"
:key="item.provinceCode"
:label="item.provinceName"
:value="item.provinceCode"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="city">
<el-select
v-model="form.city"
clearable
placeholder="请选择"
:disabled="citySelectList.length === 0"
@change="cityChange"
>
<el-option
v-for="item in citySelectList"
:key="item.cityCode"
:label="item.cityName"
:value="item.cityCode"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="district">
<el-select
v-model="form.district"
clearable
placeholder="请选择"
:disabled="districtSelectList.length === 0"
>
<el-option
v-for="item in districtSelectList"
:key="item.areaCode"
:label="item.areaName"
:value="item.areaCode"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form-item> -->
<el-form-item label="详细地址:" prop="address">
<el-input v-model="form.address" placeholder="请输入详细地址"/>
</el-form-item>
<field-options v-model="form" ref="fieldOptionsRef"/>
<!-- <el-form-item label="活动分类:" required>
<el-row type="flex" justify="space-between">
<el-col :span="8">
<el-form-item prop="industrys">
<el-select
v-model="form.industrys[0]"
clearable
placeholder="请选择"
@change="field1Change"
>
<el-option
v-for="item in field1SelectList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" style="margin: 0 10px">
<el-form-item>
<el-select
v-model="form.industrys[1]"
clearable
placeholder="请选择"
@change="field2Change"
>
<el-option
v-for="item in field2SelectList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item>
<el-select
v-model="form.industrys[2]"
clearable
placeholder="请选择"
>
<el-option
v-for="item in field3SelectList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form-item> -->
<el-form-item label="通知人群:" prop="notifyCrowds">
<el-select v-model="form.notifyCrowds" multiple placeholder="请选择">
<el-option label="企业" value="1"></el-option>
<el-option label="专家" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="报名人数上限:" prop="maxNumber">
<el-input
v-model.number="form.maxNumber"
placeholder="请输入报名人数"
/>
</el-form-item>
<el-form-item label="宣传图:" prop="image">
<ImageUpload v-model="form.image" :isShowTip="false" :limit="1"/>
</el-form-item>
<el-form-item label="活动简介:" prop="description">
<el-input
v-model="form.description"
placeholder="请输入活动简介"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }"
/>
</el-form-item>
<el-form-item label="活动介绍:" prop="content">
<!-- <WangEditor v-model="form.content" minHeight="150px" />-->
<el-input
v-model="form.content"
placeholder="请输入活动介绍"
type="textarea"
:autosize="{ minRows: 6, maxRows: 8 }"
/>
</el-form-item>
<el-form-item label="报名费用:" prop="amount">
<el-input v-model.number="form.amount">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<!-- <el-button type="primary" @click="submitForm"> </el-button>-->
<!-- <el-button @click="cancel"> </el-button>-->
</div>
</el-dialog>
</div> </div>
</template> </template>
<script setup> <script setup>
import { activitysList } from "@/api/admin/expert"; import {activityInfo, activitysList} from "@/api/admin/expert";
import { useI18n } from "vue-i18n"; import {useI18n} from "vue-i18n";
import { reactive, ref, toRefs } from "vue"; import {reactive, ref, toRefs} from "vue";
import { parseTime } from "@/utils/ruoyi"; import {parseTime} from "@/utils/ruoyi";
import FieldOptions from "@/views/components/FieldOptions"
const { t } = useI18n(); const {t} = useI18n();
const dataList = ref([]); const dataList = ref([]);
const loading = ref(true); const loading = ref(true);
const showSearch = ref(true); const showSearch = ref(true);
const total = ref(0); const total = ref(0);
const queryRef = ref(); const queryRef = ref();
const showDialog = ref(false)
const data = reactive({ const data = reactive({
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -135,9 +373,10 @@ const data = reactive({
title: undefined, title: undefined,
status: undefined, status: undefined,
}, },
form: {}
}); });
const { queryParams } = toRefs(data); const {queryParams, form} = toRefs(data);
/** 查询数据列表 */ /** 查询数据列表 */
const getList = async () => { const getList = async () => {
@ -162,5 +401,12 @@ function resetQuery() {
} }
} }
const handleDetail = (id) => {
activityInfo(id).then(resp => {
form.value = resp.data
showDialog.value = true
})
}
getList(); getList();
</script> </script>

View File

@ -4,44 +4,44 @@
<el-col :span="1.5"> <el-col :span="1.5">
<router-link to="./release"> <router-link to="./release">
<el-button size="small" type="primary" <el-button size="small" type="primary"
>{{ t("admin.table.publishAchievement") }} >{{ t("admin.table.publishAchievement") }}
</el-button> </el-button>
</router-link> </router-link>
</el-col> </el-col>
</el-row> </el-row>
<el-radio-group <el-radio-group
v-model="queryParams.status" v-model="queryParams.status"
size="small" size="small"
@change="handleQuery" @change="handleQuery"
> >
<el-radio-button :label="0" <el-radio-button :label="0"
>{{ t("admin.table.pendingReview") }} >{{ t("admin.table.pendingReview") }}
</el-radio-button> </el-radio-button>
<el-radio-button :label="1" <el-radio-button :label="1"
>{{ t("admin.table.published") }} >{{ t("admin.table.published") }}
</el-radio-button> </el-radio-button>
<el-radio-button :label="2" <el-radio-button :label="2"
>{{ t("admin.table.rejected") }} >{{ t("admin.table.rejected") }}
</el-radio-button> </el-radio-button>
<el-radio-button :label="3" <el-radio-button :label="3"
>{{ t("admin.table.draftBox") }} >{{ t("admin.table.draftBox") }}
</el-radio-button> </el-radio-button>
</el-radio-group> </el-radio-group>
<el-table v-loading="loading" :data="dataList" style="margin-top: 20px"> <el-table v-loading="loading" :data="dataList" style="margin-top: 20px">
<el-table-column :label="t('admin.common.dataNumber')" prop="id" /> <el-table-column :label="t('admin.common.dataNumber')" prop="id"/>
<el-table-column <el-table-column
:label="t('admin.form.name', { type: t('admin.common.achievement') })" :label="t('admin.form.name', { type: t('admin.common.achievement') })"
prop="title" prop="title"
/> />
<el-table-column :label="t('admin.form.keywords')" prop="keyword" /> <el-table-column :label="t('admin.form.keywords')" prop="keyword"/>
<!-- <el-zh-column label="浏览量" prop="visitCount" /> --> <!-- <el-zh-column label="浏览量" prop="visitCount" /> -->
<el-table-column :label="t('admin.form.industry')" prop="industryStr" /> <el-table-column :label="t('admin.form.industry')" prop="industryStr"/>
<el-table-column <el-table-column
:label="t('admin.table.publishTime')" :label="t('admin.table.publishTime')"
prop="createTime" prop="createTime"
width="180" width="180"
> >
<template #default="{ row }"> <template #default="{ row }">
<span> <span>
@ -50,67 +50,73 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="false" :label="t('admin.common.operation')"
:label="t('admin.common.operation')" class-name="small-padding fixed-width"
class-name="small-padding fixed-width"
> >
<template #default="{ row }"> <template #default="{ row }">
<router-link <router-link
v-if="queryParams.status == 3" v-if="queryParams.status === 3"
:to="{ path: './release', query: { id: row.id } }" :to="{ path: './release', query: { id: row.id } }"
> >
<el-button icon="Edit" size="small" type="text" <el-button icon="Edit" size="small" type="text"
>{{ t("admin.common.edit") }} >{{ t("admin.common.edit") }}
</el-button> </el-button>
</router-link> </router-link>
<el-button <el-button
v-if="queryParams.status == 1" v-if="queryParams.status !== 3"
:icon="row.shelfStatus == 1 ? `Download` : `Upload`" icon="view"
size="small" size="small"
type="text" type="text"
@click="handleShelf(row)" @click="handleDetails(row.id)"
>{{ >{{ t("common.details") }}
row.shelfStatus == 1
? t("admin.table.putOn")
: t("admin.table.putOff")
}}
</el-button> </el-button>
<!-- <el-button-->
<!-- v-if="queryParams.status == 1"-->
<!-- :icon="row.shelfStatus == 1 ? `Download` : `Upload`"-->
<!-- size="small"-->
<!-- type="text"-->
<!-- @click="handleShelf(row)"-->
<!-- >{{-->
<!-- row.shelfStatus == 1-->
<!-- ? t("admin.table.putOn")-->
<!-- : t("admin.table.putOff")-->
<!-- }}-->
<!-- </el-button>-->
<el-button <el-button
v-if="queryParams.status != 0" v-if="queryParams.status != 0"
icon="Delete" icon="Delete"
size="small" size="small"
type="text" type="text"
@click="handleDelete(row.id)" @click="handleDelete(row.id)"
> >
{{ t("admin.common.delete") }} {{ t("admin.common.delete") }}
</el-button> </el-button>
<el-button <el-button
v-if="queryParams.status == 1" v-if="queryParams.status == 1"
icon="View" icon="View"
size="small" size="small"
type="text" type="text"
@click="handleResults(row)" @click="handleResults(row)"
>{{ t("webSearch.viewMatchingResults") }} >{{ t("webSearch.viewMatchingResults") }}
</el-button> </el-button>
<el-button <el-button
v-if="queryParams.status == 0" v-if="queryParams.status == 0"
icon="Close" icon="Close"
size="small" size="small"
type="text" type="text"
@click="handleCancelPublish(row.id)" @click="handleCancelPublish(row.id)"
>{{ t("admin.table.cancelPublish") }} >{{ t("admin.table.cancelPublish") }}
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total > 0" v-show="total > 0"
v-model:limit="queryParams.pageSize" v-model:limit="queryParams.pageSize"
v-model:page="queryParams.pageNum" v-model:page="queryParams.pageNum"
:total="total" :total="total"
@pagination="getList" @pagination="getList"
/> />
</div> </div>
</template> </template>
@ -121,18 +127,18 @@ import {
expertAchievementList, expertAchievementList,
updateExpertAchievement, updateExpertAchievement,
} from "@/api/admin/expert/achievement"; } from "@/api/admin/expert/achievement";
import { ElMessage } from "element-plus"; import {ElMessage} from "element-plus";
import modal from "@/plugins/modal"; // import { update } from "lodash-unified"; import modal from "@/plugins/modal"; // import { update } from "lodash-unified";
import { useRouter } from "vue-router"; import {useRouter} from "vue-router";
import { onActivated, reactive } from "vue"; import {onActivated, reactive} from "vue";
import { useI18n } from "vue-i18n"; import {useI18n} from "vue-i18n";
import dayjs from "dayjs"; import dayjs from "dayjs";
const router = useRouter(); const router = useRouter();
const dataList = ref([]); const dataList = ref([]);
const loading = ref(true); const loading = ref(true);
const total = ref(0); const total = ref(0);
const { t } = useI18n(); const {t} = useI18n();
const data = reactive({ const data = reactive({
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -141,7 +147,7 @@ const data = reactive({
}, },
}); });
const { queryParams } = toRefs(data); const {queryParams} = toRefs(data);
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
@ -166,65 +172,75 @@ const handleQuery = () => {
/** 删除按钮操作 */ /** 删除按钮操作 */
const handleDelete = (id) => { const handleDelete = (id) => {
modal modal
.confirm( .confirm(
t("admin.common.confirmAction", { t("admin.common.confirmAction", {
number: id, number: id,
action: t("admin.common.delete"), action: t("admin.common.delete"),
type: t("admin.common.achievement"), type: t("admin.common.achievement"),
}) })
) )
.then(async () => { .then(async () => {
await deleteAchievementByIds({ ids: [id] }); await deleteAchievementByIds({ids: [id]});
getList(); getList();
ElMessage.success(t("admin.common.deleteSuccess")); ElMessage.success(t("admin.common.deleteSuccess"));
}); });
}; };
// 上架和下架 // 上架和下架
function handleShelf(row) { function handleShelf(row) {
let text = let text =
row.shelfStatus == 2 ? t("admin.table.putOn") : t("admin.table.putOff"); row.shelfStatus == 2 ? t("admin.table.putOn") : t("admin.table.putOff");
modal modal
// .confirm('确认要"' + text + '""' + row.id + '"的成果吗?') // .confirm('确认要"' + text + '""' + row.id + '"的成果吗?')
.confirm( .confirm(
t("admin.common.confirmAction", { t("admin.common.confirmAction", {
number: row.id, number: row.id,
action: text, action: text,
type: t("admin.common.achievement"), type: t("admin.common.achievement"),
}) })
) )
.then(async () => { .then(async () => {
const shelfStatus = row.shelfStatus == 1 ? 2 : 1; const shelfStatus = row.shelfStatus == 1 ? 2 : 1;
await updateExpertAchievement({ id: row.id, shelfStatus }); await updateExpertAchievement({id: row.id, shelfStatus});
getList(); getList();
ElMessage.success( ElMessage.success(
t("admin.common.success", { t("admin.common.success", {
action: text, action: text,
}) })
); );
}); });
} }
// 取消发布 // 取消发布
const handleCancelPublish = (id) => { const handleCancelPublish = (id) => {
modal modal
// .confirm(`确认要取消发布编号为"${id}"的成果吗?`) // .confirm(`确认要取消发布编号为"${id}"的成果吗?`)
.confirm( .confirm(
t("admin.common.confirmAction", { t("admin.common.confirmAction", {
number: id, number: id,
action: t("admin.table.cancelPublish"), action: t("admin.table.cancelPublish"),
type: t("admin.common.achievement"), type: t("admin.common.achievement"),
}) })
) )
.then(async () => { .then(async () => {
await updateExpertAchievement({ id, status: "3" }); await updateExpertAchievement({id, status: "3"});
ElMessage.success(t("tips.cancelReleaseSuccess")); ElMessage.success(t("tips.cancelReleaseSuccess"));
getList(); getList();
}); });
// queryParams.value.status = "3"; // queryParams.value.status = "3";
// handleQuery(); // handleQuery();
}; };
const handleDetails = (id) => {
router.push({
path: `/technology/release`,
query: {
id
}
})
}
function handleResults(row) { function handleResults(row) {
router.push({ router.push({
path: "./results", path: "./results",

View File

@ -134,6 +134,14 @@ getList();
height: 100%; height: 100%;
padding: 12px; padding: 12px;
:deep(.el-tabs__item) {
font-size: 18px;
&.is-active {
color: #0054ff;
}
}
.news-list { .news-list {
.news-item { .news-item {
& > a { & > a {

View File

@ -55,6 +55,7 @@ getNews()
} }
p.content { p.content {
text-indent: 2em each-line;
font-size: 16px; font-size: 16px;
line-height: 24px; line-height: 24px;
margin: 0; margin: 0;

View File

@ -1,15 +1,15 @@
<template> <template>
<div v-loading="loading"> <div v-loading="loading">
<searchContainer <searchContainer
bannerKey="首页>专家库>专家详情" bannerKey="首页>专家库>专家详情"
:title="t('webSearch.expertLibrary')" :title="t('webSearch.expertLibrary')"
@handleQuery="handleQuery" @handleQuery="handleQuery"
> >
<template v-slot> <template v-slot>
<div class="head"> <div class="head">
<el-breadcrumb separator="/"> <el-breadcrumb separator="/">
<el-breadcrumb-item> <el-breadcrumb-item>
<span class="one">{{ t("admin.findExpert") }}</span> <span class="one">{{ t("webSearch.findExpert") }}</span>
</el-breadcrumb-item> </el-breadcrumb-item>
<el-breadcrumb-item> <el-breadcrumb-item>
<span>{{ t("webSearch.expertDetails") }}</span> <span>{{ t("webSearch.expertDetails") }}</span>
@ -40,10 +40,10 @@
<div> <div>
{{ {{
state.expertDetail.gender == "1" state.expertDetail.gender == "1"
? t("gender.male") ? t("gender.male")
: state.expertDetail.gender == "2" : state.expertDetail.gender == "2"
? t("gender.female") ? t("gender.female")
: t("common.unknown") : t("common.unknown")
}} }}
</div> </div>
</section> </section>
@ -100,7 +100,7 @@
<div> <div>
{{ {{
educationOptions.find( educationOptions.find(
(item) => item.key == state.expertDetail.education (item) => item.key == state.expertDetail.education
)?.[locale] )?.[locale]
}} }}
</div> </div>
@ -112,8 +112,8 @@
</div> </div>
<section v-if="state.expertDetail.research"> <section v-if="state.expertDetail.research">
<div <div
v-for="item in state.expertDetail.research?.split(',') ?? []" v-for="item in state.expertDetail.research?.split(',') ?? []"
class="describe" class="describe"
> >
{{ item }} {{ item }}
</div> </div>
@ -133,6 +133,47 @@
<!-- <div style="padding: 20px 0"> <!-- <div style="padding: 20px 0">
<div class="pointTit">专家视频</div> <div class="pointTit">专家视频</div>
</div> --> </div> -->
<!-- <template>-->
<div style="padding: 20px 0">
<div class="pointTit">{{ t("dict.patent") }}</div>
</div>
<section>
<div>
<ul class="patent-list">
<li v-for="patent in state.expertDetail.patentList??[]" :key="patent.id" class="patent-item">
{{ patent.title }}
</li>
</ul>
</div>
</section>
<!-- </template>-->
<div style="padding: 20px 0">
<div class="pointTit">{{ t("admin.common.achievement") }}</div>
</div>
<section>
<div>
<ul class="patent-list">
<li v-for="achievement in state.expertDetail.achievementList" :key="achievement.id"
class="patent-item">
{{ achievement.title }}
</li>
</ul>
</div>
</section>
<div style="padding: 20px 0">
<div class="pointTit">{{ t("admin.common.paper") }}</div>
</div>
<section>
<div>
<ul class="patent-list">
<li v-for="paper in state.expertDetail.paperList" :key="paper.id"
class="patent-item">
{{ paper.title }}
</li>
</ul>
</div>
</section>
</div> </div>
<div v-if="state.expertDetail.id" style="padding: 20px 0"> <div v-if="state.expertDetail.id" style="padding: 20px 0">
<el-tabs v-model="state.activeName"> <el-tabs v-model="state.activeName">
@ -406,7 +447,7 @@
</div> --> </div> -->
</div> </div>
<div class="r"> <div class="r">
<webContact /> <webContact/>
</div> </div>
</el-row> </el-row>
</template> </template>
@ -420,17 +461,20 @@ import webContact from "@/components/webContact/index.vue";
import expertItem from "./components/expertItem.vue"; import expertItem from "./components/expertItem.vue";
// import loadMore from "./components/loadMore.vue"; // import loadMore from "./components/loadMore.vue";
// import request from "@/utils/request"; // import request from "@/utils/request";
import { searchExpertDetail } from "@/api/website/home"; import {searchExpertDetail} from "@/api/website/home";
import { onMounted, reactive, ref } from "vue"; import {onMounted, reactive, ref} from "vue";
import searchContainer from "./components/searchContainer.vue"; import searchContainer from "./components/searchContainer.vue";
// import wordcloud from "./components/wordcloud.vue"; // import wordcloud from "./components/wordcloud.vue";
// import productItem from "./components/productItem.vue"; // import productItem from "./components/productItem.vue";
import { useRoute, useRouter } from "vue-router"; import {useRoute, useRouter} from "vue-router";
import docking from "./components/docking.vue"; import docking from "./components/docking.vue";
import { useI18n } from "vue-i18n"; import {useI18n} from "vue-i18n";
import { educationOptions } from "../../../utils/parameter"; import {educationOptions} from "../../../utils/parameter";
import {expertPatentList} from "@/api/admin/expert/patent";
import {expertAchievementList} from "@/api/admin/expert/achievement";
import {paperList} from "@/api/admin/expert/technology";
const { t, locale } = useI18n(); const {t, locale} = useI18n();
const showDocking = ref(false); const showDocking = ref(false);
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
@ -457,7 +501,7 @@ const state = reactive({
function handleList(mode, query) { function handleList(mode, query) {
router.push({ router.push({
path: `/searchList/${mode}`, path: `/searchList/${mode}`,
query: { query, queryType: route.query.queryType }, query: {query, queryType: route.query.queryType},
}); });
} }
@ -502,22 +546,37 @@ function getDataList() {
// } // }
// }) // })
searchExpertDetail(id) searchExpertDetail(id)
.then((resp) => { .then((resp) => {
const data = resp.data; const data = resp.data;
// data.expertDetail.introduce = data.expertDetail.introduce?.replace( // data.expertDetail.introduce = data.expertDetail.introduce?.replace(
// "\n", // "\n",
// "</br>" // "</br>"
// ); // );
data.introduce = data.introduce data.introduce = data.introduce
?.replaceAll("\n", "</br>") ?.replaceAll("\n", "</br>")
?.replaceAll(" ", "&ensp;"); ?.replaceAll(" ", "&ensp;");
// console.log(data.introduce.replaceAll("\n", "</br>")); // console.log(data.introduce.replaceAll("\n", "</br>"));
state.expertDetail = data; state.expertDetail = data;
loading.value = false; loading.value = false;
}) })
.catch(() => { .catch(() => {
loading.value = false; loading.value = false;
}); });
expertPatentList(id).then(resp => {
state.expertDetail.patentList = resp.rows
})
expertAchievementList({
expertId: id
}).then(resp => {
state.expertDetail.achievementList = resp.rows
console.log(state.expertDetail.achievementList)
})
paperList({uid: id}).then(resp => {
state.expertDetail.paperList = resp.rows
})
// companyProduct(id).then(res => { // companyProduct(id).then(res => {
// if (200 == res.code) { // if (200 == res.code) {
// state.companyProduct = res.data.data; // state.companyProduct = res.data.data;
@ -588,6 +647,12 @@ function getDataList() {
// color: #666666; // color: #666666;
// margin-bottom: 5px; // margin-bottom: 5px;
// } // }
.patent-list {
.patent-item {
list-style: disc;
line-height: 24px;
}
}
} }
.pointTit { .pointTit {