已合作企业

This commit is contained in:
熊丽君
2022-03-09 11:55:10 +08:00
parent 2c38b5e8df
commit 95552752e9
7 changed files with 264 additions and 122 deletions

View File

@ -5,7 +5,7 @@ VITE_APP_TITLE = pro管理系统
VITE_APP_ENV = 'production'
# xxx管理系统/生产环境
VITE_APP_BASE_API = '/api'
VITE_APP_BASE_API = '/web/api'
# 是否在打包时开启压缩,支持 gzip 和 brotli
VITE_BUILD_COMPRESS = gzip,brotli

View File

@ -1,54 +1,82 @@
import request from '@/utils/request';
// 专家 - 需求
// 专家 - 服务需求
export function demand(data) {
return request({
url: '/enterprise/v1/technology/demand',
url: '/enterprise/v1/service/demand',
method:'post',
data
});
}
// 专家 - 需求 -- 添加
// 专家 - 服务需求 -- 添加
export function demandAdd(data) {
return request({
url: '/enterprise/v1/technology/demand/add',
url: '/enterprise/v1/service/demand/add',
method:'post',
data
});
}
// 专家 - 需求 -- 修改
// 专家 - 服务需求 -- 修改
export function demandEdit(data) {
return request({
url: '/enterprise/v1/technology/demand/edit',
url: '/enterprise/v1/service/demand/edit',
method:'post',
data
});
}
// 专家 - 需求 -- 详情
// 专家 - 服务需求 -- 详情
export function demandDetail(data) {
return request({
url: '/enterprise/v1/technology/demand/detail',
url: '/enterprise/v1/service/demand/detail',
method:'post',
data
});
}
// 专家 - 需求 -- 删除
// 专家 - 服务需求 -- 删除
export function demandDelete(data) {
return request({
url: '/enterprise/v1/technology/demand/delete',
url: '/enterprise/v1/service/demand/delete',
method:'post',
data
});
}
// ------------------------------------------------------
// 专家 - 合作
export function expertCooperate(data) {
// 专家 - 合作/想合作 1/2
export function enterprise(data) {
return request({
url: '',
url: '/enterprise/v1/manage/enterprise',
method:'post',
data
});
}
// 专家 - 已合作/想合作 -- 新增
export function enterpriseAdd(data) {
return request({
url: '/enterprise/v1/manage/enterprise/add',
method:'post',
data
});
}
// 专家 - 已合作/想合作 -- 修改
export function enterpriseEdit(data) {
return request({
url: '/enterprise/v1/manage/enterprise/edit',
method:'post',
data
});
}
// 专家 - 已合作/想合作 -- 删除
export function enterpriseDelete(data) {
return request({
url: '/enterprise/v1/manage/enterprise/delete',
method:'post',
data
});
}
// 专家 - 合作详情
export function cooperateDetail(data) {
return request({

View File

@ -41,6 +41,14 @@ export function achievementDelete(data) {
});
}
// -----------------------------------------------------------
// 专家 - 专利 -- 下拉
export function patentSelect(data) {
return request({
url: '/enterprise/v1/technology/patent/select',
method:'post',
data
});
}
// 专家 - 专利
export function expertPatent(data) {
return request({
@ -83,6 +91,14 @@ export function patentDelete(data) {
});
}
// -----------------------------------------------------------
// 专家 - 论文 -- 下拉
export function paperSelect(data) {
return request({
url: '/enterprise/v1/technology/paper/select',
method:'post',
data
});
}
// 专家 - 论文
export function expertPaper(data) {
return request({

View File

@ -15,21 +15,31 @@
<!-- 表格数据 -->
<el-table v-loading="loading" :data="dataList">
<el-table-column label="数据编号" prop="researchId" />
<el-table-column label="数据编号" prop="id" width="150" />
<el-table-column
label="合作企业名称"
prop="researchName"
:show-overflow-tooltip="true"
align="center"
prop="name"
show-overflow-tooltip
width="200"
/>
<el-table-column
label="关联论文2"
prop="roleKey"
:show-overflow-tooltip="true"
/>
<el-table-column label="关联论文1" prop="roleSort" />
<el-table-column label="创建日期" align="center" prop="createTime">
<el-table-column label="关联论文" align="center" prop="paper_title">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
<div v-for="(item, index) in scope.row.paper_title" :key="index">
<div class="ellipsis" v-if="index <= 2">{{ item }}</div>
</div>
</template>
</el-table-column>
<el-table-column label="关联专利" align="center" prop="patent_title">
<template #default="scope">
<div v-for="(item, index) in scope.row.patent_title" :key="index">
<div class="ellipsis text-left" v-if="index <= 2">{{ item }}</div>
</div>
</template>
</el-table-column>
<el-table-column label="创建日期" align="center" prop="created_at">
<template #default="scope">
<span>{{ parseTime(scope.row.created_at) }}</span>
</template>
</el-table-column>
<el-table-column
@ -65,41 +75,67 @@
/>
<!-- 添加或修改数据配置对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="roleRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="企业名称:" prop="researchName">
<el-input v-model="form.researchName" placeholder="请输入企业名称" />
<el-dialog
:title="title"
v-model="open"
width="500px"
:close-on-click-modal="false"
append-to-body
>
<el-form
ref="alreadyRef"
:model="form"
:rules="rules"
label-width="100px"
>
<el-form-item label="企业名称:" prop="name">
<el-input v-model="form.name" placeholder="请输入企业名称" />
</el-form-item>
<el-form-item label="关联论文:" prop="projectType">
<el-form-item label="关联论文:" prop="papers">
<el-select
ref="selectDom"
style="width: 100%"
v-model="form.projectType"
v-model="form.papers"
value-key="id"
multiple
filterable
remote
reserve-keyword
:remote-method="paperMethod"
:loading="paperSelectLoading"
placeholder="请选择关联论文"
>
<!-- <el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
<el-option
style="max-width: 360px"
v-for="item in paperOptions"
:key="item.id"
:label="item.title"
:value="item"
>
</el-option> -->
</el-option>
</el-select>
</el-form-item>
<el-form-item label="关联专利:" prop="projectLeader">
<el-form-item label="关联专利:" prop="patents">
<el-select
style="width: 100%"
v-model="form.projectLeader"
v-model="form.patents"
value-key="id"
multiple
filterable
remote
reserve-keyword
:remote-method="patentMethod"
:loading="patentSelectLoading"
placeholder="请选择关联专利"
>
<!-- <el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
<el-option
style="max-width: 360px"
v-for="item in patentOptions"
:key="item.id"
:label="item.title"
:value="item"
>
</el-option> -->
</el-option>
</el-select>
</el-form-item>
</el-form>
@ -114,9 +150,14 @@
</template>
<script setup>
import { expertCooperate } from "@/api/admin/expert/demand";
import { addRole, delRole, updateRole } from "@/api/system/role";
import {
enterprise,
enterpriseAdd,
enterpriseDelete,
enterpriseEdit,
} from "@/api/admin/expert/demand";
// 专利,论文
import { patentSelect, paperSelect } from "@/api/admin/expert/technology";
const router = useRouter();
const { proxy } = getCurrentInstance();
@ -133,13 +174,11 @@ const data = reactive({
queryParams: {
page_num: 1,
page_size: 10,
researchName: undefined,
mode: 1,
},
rules: {
researchName: [
{ required: true, message: "企业名称不能为空", trigger: "blur" },
],
projectType: [
name: [{ required: true, message: "企业名称不能为空", trigger: "blur" }],
papers: [
{
type: "array",
required: true,
@ -147,7 +186,7 @@ const data = reactive({
trigger: ["blur", "change"],
},
],
projectLeader: [
patents: [
{
type: "array",
required: true,
@ -157,20 +196,48 @@ const data = reactive({
],
},
});
const { queryParams, form, rules } = toRefs(data);
// 论文
const paperOptions = ref([]);
const paperSelectLoading = ref(false);
const paperMethod = (title) => {
if (title) {
paperSelectLoading.value = true;
paperSelect({ title }).then((res) => {
paperSelectLoading.value = false;
paperOptions.value = res.data;
});
} else {
paperOptions.value = [];
}
};
// 专利
const patentOptions = ref([]);
const patentSelectLoading = ref(false);
const patentMethod = (title) => {
if (title) {
patentSelectLoading.value = true;
patentSelect({ title }).then((res) => {
patentSelectLoading.value = false;
patentOptions.value = res.data;
});
} else {
patentOptions.value = [];
}
};
/** 查询数据列表 */
function getList() {
loading.value = true;
dataList.value = [1];
total.value = 15;
enterprise(queryParams.value).then((response) => {
response.data.data.map((item) => {
item.paper_title = item.paper_title.split("&&");
item.patent_title = item.patent_title.split("&&");
});
dataList.value = response.data.data;
total.value = response.data.count;
loading.value = false;
// expertCooperate(queryParams.value).then((response) => {
// dataList.value = response.data.data;
// total.value = response.data.count;
// loading.value = false;
// });
});
}
/** 搜索按钮操作 */
function handleQuery() {
@ -187,7 +254,7 @@ function handleDelete(row) {
proxy.$modal
.confirm('是否确认删除数据编号为"' + row.id + '"的数据项?')
.then(function () {
return delRole(researchIds);
return enterpriseDelete({ id: row.id });
})
.then(() => {
getList();
@ -199,12 +266,13 @@ function handleDelete(row) {
/** 重置新增的表单以及其他数据 */
function reset() {
form.value = {
researchId: undefined,
researchName: undefined,
projectType: [],
projectLeader: [],
id: undefined,
name: undefined,
mode: 1,
papers: [],
patents: [],
};
proxy.resetForm("roleRef");
proxy.resetForm("alreadyRef");
}
/** 添加数据 */
function handleAdd() {
@ -214,29 +282,60 @@ function handleAdd() {
}
/** 修改数据 */
function handleUpdate(row) {
reset();
form.value = Object.assign({}, row);
// reset();
let formData = Object.assign({}, row);
let papers = [];
let patents = [];
formData.papers.map((item, index) => {
papers.push({
id: item,
title: formData.paper_title[index],
});
});
formData.patents.map((item, index) => {
patents.push({
id: item,
title: formData.patent_title[index],
});
});
paperOptions.value = formData.papers = papers;
patentOptions.value = formData.patents = patents;
form.value = formData;
open.value = true;
title.value = "修改数据";
nextTick(() => {
console.log(proxy.$refs["selectDom"]); // .cachedOptions
});
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["roleRef"].validate((valid) => {
proxy.$refs["alreadyRef"].validate((valid) => {
if (valid) {
console.log(form.value);
// if (form.value.researchId != undefined) {
// updateRole(form.value).then((response) => {
// proxy.$modal.msgSuccess("修改成功");
// open.value = false;
// getList();
// });
// } else {
// addRole(form.value).then((response) => {
// proxy.$modal.msgSuccess("新增成功");
// open.value = false;
// getList();
// });
// }
let formData = Object.assign({}, form.value);
let papers = [];
let patents = [];
formData.papers.map((item) => {
papers.push(item.id);
});
formData.patents.map((item) => {
patents.push(item.id);
});
formData.papers = papers;
formData.patents = patents;
if (form.value.id != undefined) {
enterpriseEdit(formData).then((response) => {
proxy.$modal.msgSuccess("修改成功");
open.value = false;
getList();
});
} else {
enterpriseAdd(formData).then((response) => {
proxy.$modal.msgSuccess("新增成功");
open.value = false;
getList();
});
}
}
});
}

View File

@ -17,9 +17,9 @@
size="mini"
@change="handleQuery"
>
<el-radio-button label="1">待受理</el-radio-button>
<el-radio-button label="2">已受理</el-radio-button>
<el-radio-button label="3">已结束</el-radio-button>
<el-radio-button :label="1">待受理</el-radio-button>
<el-radio-button :label="2">已受理</el-radio-button>
<el-radio-button :label="3">已结束</el-radio-button>
</el-radio-group>
<el-table v-loading="loading" :data="postList" style="margin-top: 20px">
@ -103,10 +103,9 @@ const dateRange = ref([]);
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
postCode: undefined,
type: "1",
page_num: 1,
page_size: 10,
type: 1,
},
rules: {
name: [{ required: true, message: "公司名称不能为空", trigger: "blur" }],
@ -137,18 +136,13 @@ const { queryParams, form, rules } = toRefs(data);
/** 查询列表 */
function getList() {
// console.log(proxy.addDateRange(queryParams.value, dateRange.value));
postList.value = [1];
total.value = 15;
loading.value = true;
demand(queryParams.value).then((response) => {
console.log(response);
// postList.value = response.data.data;
// total.value = response.data.count;
loading.value = false;
// loading.value = true;
// demand(proxy.addDateRange(queryParams.value, dateRange.value)).then(
// (response) => {
// postList.value = response.rows;
// total.value = response.total;
// loading.value = false;
// }
// );
});
}
/** 搜索按钮操作 */
function handleQuery() {

View File

@ -58,6 +58,7 @@
<div>快捷功能</div>
</template>
<div class="card_body">
<router-link to="/technology/release">
<div class="card_item">
<img
style="width: 70px; height: 70px; border-radius: 50%"
@ -65,6 +66,8 @@
/>
<div>发布成果</div>
</div>
</router-link>
<router-link to="/demand/release">
<div class="card_item">
<img
style="width: 70px; height: 70px; border-radius: 50%"
@ -72,6 +75,7 @@
/>
<div>发布需求</div>
</div>
</router-link>
</div>
</el-card>

View File

@ -27,6 +27,7 @@ export default defineConfig(({ mode, command }) => {
'/api': {
// target: 'http://localhost:8080',
target: 'http://192.168.0.149:8000',
// target: 'http://101.34.131.16:8000',
// target: 'http://zky.server.ipeace.org.cn',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/api/, '/api')