专家详情页
This commit is contained in:
@ -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",
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -4,6 +4,7 @@ const common = {
|
|||||||
home: "Главная",
|
home: "Главная",
|
||||||
search: "Поиск",
|
search: "Поиск",
|
||||||
viewDetails: "Просмотреть детали",
|
viewDetails: "Просмотреть детали",
|
||||||
|
details: "Подробности",
|
||||||
systemPrompt: "Системное сообщение",
|
systemPrompt: "Системное сообщение",
|
||||||
confirm: "Подтвердить",
|
confirm: "Подтвердить",
|
||||||
cancel: "Отмена",
|
cancel: "Отмена",
|
||||||
|
@ -3,6 +3,7 @@ export const common = {
|
|||||||
home: "首页",
|
home: "首页",
|
||||||
search: "搜索",
|
search: "搜索",
|
||||||
viewDetails: "查看详情",
|
viewDetails: "查看详情",
|
||||||
|
details: "详情",
|
||||||
systemPrompt: "系统提示",
|
systemPrompt: "系统提示",
|
||||||
confirm: "确定",
|
confirm: "确定",
|
||||||
cancel: "取消",
|
cancel: "取消",
|
||||||
|
@ -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') })
|
||||||
"
|
"
|
||||||
|
@ -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>
|
||||||
|
@ -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) {
|
||||||
|
@ -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>
|
||||||
|
@ -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(() => {
|
||||||
|
@ -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>
|
||||||
|
@ -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",
|
||||||
|
@ -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 {
|
||||||
|
@ -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;
|
||||||
|
@ -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(" ", " ");
|
?.replaceAll(" ", " ");
|
||||||
// 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 {
|
||||||
|
Reference in New Issue
Block a user