实验室页面菜单初始化

This commit is contained in:
熊丽君
2022-03-10 14:38:44 +08:00
parent 076c1a9659
commit c1201a2cc5
14 changed files with 2475 additions and 6 deletions

View File

@ -319,7 +319,7 @@ export const enterpriseRoutes = [
// },
]
export const expertRoutes=[
export const expertRoutes = [
{
path: '/account',
component: Layout,
@ -473,7 +473,7 @@ export const expertRoutes=[
},
]
export const researchRoutes=[
export const researchRoutes = [
{
path: '/account',
component: Layout,
@ -558,6 +558,88 @@ export const researchRoutes=[
},
]
export const laboratoryRoutes = [
{
path: '/account',
component: Layout,
meta: { title: '账号管理', icon: 'dashboard' },
alwaysShow:true,
redirect: '/account/basicInfo',
children: [
{
path: 'basicInfo',
component: () => import('@/views/admin/laboratory/account/basicInfo'),
name: 'basicInfo',
meta: { title: '基本资料', icon: 'list' }
},
]
},
{
path: '/research',
component: Layout,
meta: { title: '科研管理', icon: 'dashboard' },
alwaysShow:true,
redirect: '/research/patent',
children: [
{
path: 'patent',
component: () => import('@/views/admin/laboratory/research/patent'),
name: 'patent',
meta: { title: '专利列表', icon: 'list' }
},
{
path: 'achievement',
component: () => import('@/views/admin/laboratory/research/achievement'),
name: 'Achievement',
meta: { title: '成果列表', icon: 'list' }
},
{
path: 'serviceDemand',
component: () => import('@/views/admin/laboratory/research/serviceDemand'),
name: 'serviceDemand',
meta: { title: '服务需求列表', icon: 'list' }
},
{
path: 'release',
component: () => import('@/views/admin/laboratory/research/release'),
hidden: true,
name: 'release',
meta: { title: '查看需求', icon: 'list' }
},
{
path: 'expert',
component: () => import('@/views/admin/laboratory/research/expert'),
name: 'expert',
meta: { title: '专家列表', icon: 'list' }
},
{
path: 'research',
component: () => import('@/views/admin/laboratory/research/research'),
name: 'research',
meta: { title: '科研项目列表', icon: 'list' }
},
{
path: 'paper',
component: () => import('@/views/admin/laboratory/research/paper'),
name: 'paper',
meta: { title: '论文列表', icon: 'list' }
},
{
path: 'units',
component: () => import('@/views/admin/laboratory/research/browseUnits'),
hidden: true,
name: 'units',
meta: { title: '浏览单位', icon: 'list' }
},
{
path: 'laboratory',
component: () => import('@/views/admin/laboratory/research/laboratory'),
name: 'laboratory',
meta: { title: '实验设备', icon: 'list' }
},
]
},
]
const router = createRouter({
history: createWebHistory(),

View File

@ -1,4 +1,4 @@
import router,{ constantRoutes,enterpriseRoutes,expertRoutes,researchRoutes } from '@/router'
import router,{ constantRoutes,enterpriseRoutes,expertRoutes,researchRoutes,laboratoryRoutes } from '@/router'
import { getRouters } from '@/api/menu'
import Layout from '@/layout/index'
import ParentView from '@/components/ParentView'
@ -48,15 +48,21 @@ const permission = {
// 专家
data = expertRoutes
} else if (role == 4) {
// 研究机构
constantRoutes.map(item=>{
if(item.path=='/admin'){
item['hidden'] = true
}
})
// 研究机构
data = researchRoutes
} else if (role == 8) {
// 实验室
constantRoutes.map(item=>{
if(item.path=='/admin'){
item['hidden'] = true
}
})
data = laboratoryRoutes
} else if (role == 16) {
// 科技经纪人
}

View File

@ -0,0 +1,95 @@
<template>
<div class="app-container">
<el-card shadow="always" style="width: 55%; margin: 0 auto">
<p><b>基本资料</b></p>
<el-form
ref="postRef"
:model="formData"
: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="phone">
<el-input v-model="form.phone" placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="邮箱:" prop="email">
<el-input v-model="form.email" placeholder="请输入邮箱" />
</el-form-item>
<el-form-item label="职务:" prop="email">
<el-input v-model="form.email" placeholder="请输入职务" />
</el-form-item>
<el-form-item label="固定电话:" prop="dutyParagraph">
<el-input v-model="form.dutyParagraph" placeholder="请输入固定电话" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
</el-form-item>
</el-form>
<p><b>企业资料</b></p>
<ResearchForm
v-model="form"
:isAdd="false"
:labelWidth="labelWidth"
ref="expertForm"
/>
<div :style="{ marginLeft: labelWidth + 'px' }">
<el-button type="primary" @click="submitForm">提交</el-button>
</div>
</el-card>
</div>
</template>
<script setup>
import { expert } from "@/api/identity/index";
import ResearchForm from "@/views/identity/components/ResearchForm";
const data = reactive({
formData: {},
queryParams: {
pageNum: 1,
pageSize: 10,
postCode: undefined,
},
rules: {
name: [{ required: true, message: "公司名称不能为空", trigger: "blur" }],
dutyParagraph: [
{ required: true, message: "公司税号不能为空", trigger: "blur" },
],
bank: [{ required: true, message: "开户行不能为空", trigger: "blur" }],
bankAccount: [
{ required: true, message: "开户行账号不能为空", trigger: "blur" },
],
bankPhone: [
{ required: true, message: "开户行电话不能为空", trigger: "blur" },
],
email: [{ required: true, message: "电子邮箱不能为空", trigger: "blur" }],
phone: [{ required: true, message: "联系电话不能为空", trigger: "blur" }],
address: [{ required: true, message: "地址不能为空", trigger: "blur" }],
username: [{ required: true, message: "联系人不能为空", trigger: "blur" }],
userPhone: [
{ required: true, message: "联系人电话不能为空", trigger: "blur" },
],
userAddress: [
{ required: true, message: "邮寄地址不能为空", trigger: "blur" },
],
},
});
const { queryParams, formData, rules } = toRefs(data);
const { proxy } = getCurrentInstance();
const labelWidth = 100;
const form = reactive({
industrys: [],
});
function submitForm(status) {
if (proxy.$refs.expertForm.submitForm()) {
expert(form).then((res) => {
proxy.$modal.msgSuccess("新增成功");
proxy.$router.go(-1);
});
} else {
console.log("校验未通过");
}
}
</script>

View File

@ -0,0 +1,174 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryRef"
v-show="showSearch"
:inline="true"
@submit.prevent
>
<el-form-item label="成果名称" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入成果名称"
clearable
size="small"
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="postList">
<el-table-column label="数据编号" prop="id" />
<el-table-column label="成果名称" prop="title" />
<el-table-column label="成果领域" prop="industrys" />
<el-table-column label="所属专家" prop="industrys" />
<el-table-column label="浏览量" prop="visit_count" />
<el-table-column label="发布时间" prop="created_at" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.created_at) }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<el-button
size="mini"
type="text"
icon="Download"
@click="handleShelf(scope.row)"
>下架</el-button
>
<el-button
size="mini"
type="text"
icon="Delete"
@click="handleDelete(scope.row.id)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script setup name="Post">
import {
expertAchievement,
achievementShelf,
achievementDelete,
} from "@/api/admin/expert/technology";
const { proxy } = getCurrentInstance();
const router = useRouter();
const postList = ref([]);
const loading = ref(true);
const showSearch = ref(true);
const total = ref(0);
const data = reactive({
form: {},
queryParams: {
page_num: 1,
page_size: 10,
name: undefined,
},
rules: {
name: [{ required: true, message: "公司名称不能为空", trigger: "blur" }],
dutyParagraph: [
{ required: true, message: "公司税号不能为空", trigger: "blur" },
],
bank: [{ required: true, message: "开户行不能为空", trigger: "blur" }],
bankAccount: [
{ required: true, message: "开户行账号不能为空", trigger: "blur" },
],
bankPhone: [
{ required: true, message: "开户行电话不能为空", trigger: "blur" },
],
email: [{ required: true, message: "电子邮箱不能为空", trigger: "blur" }],
phone: [{ required: true, message: "联系电话不能为空", trigger: "blur" }],
address: [{ required: true, message: "地址不能为空", trigger: "blur" }],
username: [{ required: true, message: "联系人不能为空", trigger: "blur" }],
userPhone: [
{ required: true, message: "联系人电话不能为空", trigger: "blur" },
],
userAddress: [
{ required: true, message: "邮寄地址不能为空", trigger: "blur" },
],
},
});
const { queryParams, form, rules } = toRefs(data);
/** 查询列表 */
function getList() {
loading.value = true;
expertAchievement(queryParams.value).then((response) => {
postList.value = [1];
// postList.value = response.data.data;
// total.value = response.data.count;
loading.value = false;
});
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef");
handleQuery();
}
/** 删除按钮操作 */
function handleDelete(id) {
proxy.$modal
.confirm('是否确认删除数据编号为"' + id + '"的成果项?')
.then(function () {
return achievementDelete({ id });
})
.then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}
function handleShelf(row) {
let text = row.shelf_status == 2 ? "上架" : "下架";
proxy.$modal
.confirm('确认要"' + text + '""' + row.id + '"的成果吗?')
.then(function () {
let status = row.shelf_status == 1 ? 2 : 1;
return achievementShelf({ id: row.id, status });
})
.then(() => {
getList();
proxy.$modal.msgSuccess(text + "成功");
})
.catch(() => {});
}
function handleResults(id) {
router.push({ path: "./results" });
}
getList();
</script>

View File

@ -0,0 +1,355 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryRef"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="企业名称" prop="postCode">
<el-input
v-model="queryParams.postCode"
placeholder="请输入企业名称"
clearable
size="small"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="浏览时间">
<el-date-picker
v-model="dateRange"
size="small"
style="width: 240px"
value-format="YYYY-MM-DD"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Download"
size="mini"
@click="handleExport"
>导出</el-button
>
</el-col>
<right-toolbar
v-model:showSearch="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> -->
<el-table v-loading="loading" :data="postList">
<el-table-column label="数据编号" align="center" prop="id" />
<el-table-column label="企业名称" align="center" prop="postCode" />
<el-table-column label="浏览类别" align="center" prop="postSort" />
<el-table-column label="名称" align="center" prop="postSort" />
<el-table-column label="联系人" align="center" prop="postSort" />
<el-table-column label="手机" align="center" prop="postSort" />
<el-table-column label="浏览时长" align="center" prop="postSort" />
<el-table-column label="浏览次数" align="center" prop="postSort" />
<el-table-column
label="浏览时间"
align="center"
prop="createTime"
width="180"
>
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<el-button
size="mini"
type="text"
icon="Delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改岗位对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="postRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="开票类型:" prop="type">
<el-select v-model="form.type">
<el-option label="普票" value="1"></el-option>
<el-option label="专票" value="2"></el-option>
</el-select>
</el-form-item>
<div style="margin-bottom: 22px"><b>开票信息</b></div>
<el-form-item label="公司名称:" prop="name">
<el-input v-model="form.name" placeholder="请输入公司名称" />
</el-form-item>
<el-form-item label="公司税号:" prop="dutyParagraph">
<el-input v-model="form.dutyParagraph" placeholder="请输入公司税号" />
</el-form-item>
<el-form-item label="开户行:" prop="bank" v-if="form.type == 2">
<el-input v-model="form.bank" placeholder="请输入开户行" />
</el-form-item>
<el-form-item
label="开户行账号:"
prop="bankAccount"
v-if="form.type == 2"
>
<el-input v-model="form.bankAccount" placeholder="请输入开户行账号" />
</el-form-item>
<el-form-item
label="开户行电话:"
prop="bankPhone"
v-if="form.type == 2"
>
<el-input v-model="form.bankPhone" placeholder="请输入开户行电话" />
</el-form-item>
<el-form-item label="电子邮箱:" prop="email" v-if="form.type == 1">
<el-input v-model="form.email" placeholder="请输入电子邮箱" />
</el-form-item>
<el-form-item label="联系电话:" prop="phone" v-if="form.type == 1">
<el-input v-model="form.phone" placeholder="请输入联系电话" />
</el-form-item>
<el-form-item label="地址:" prop="address">
<el-input
v-model="form.address"
type="textarea"
placeholder="请输入地址"
/>
</el-form-item>
<div style="margin-bottom: 22px" v-if="form.type == 2">
<b>邮寄信息</b>
</div>
<el-form-item label="联系人:" prop="username" v-if="form.type == 2">
<el-input v-model="form.username" placeholder="请输入联系人" />
</el-form-item>
<el-form-item
label="联系人电话:"
prop="userPhone"
v-if="form.type == 2"
>
<el-input v-model="form.userPhone" placeholder="请输入联系人电话" />
</el-form-item>
<el-form-item
label="邮寄地址:"
prop="userAddress"
v-if="form.type == 2"
>
<el-input
v-model="form.userAddress"
type="textarea"
placeholder="请输入地址"
/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="Post">
import {
listPost,
addPost,
delPost,
getPost,
updatePost,
} from "@/api/system/post";
const { proxy } = getCurrentInstance();
const postList = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const title = ref("");
const dateRange = ref([]);
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
postCode: undefined,
},
rules: {
name: [{ required: true, message: "公司名称不能为空", trigger: "blur" }],
dutyParagraph: [
{ required: true, message: "公司税号不能为空", trigger: "blur" },
],
bank: [{ required: true, message: "开户行不能为空", trigger: "blur" }],
bankAccount: [
{ required: true, message: "开户行账号不能为空", trigger: "blur" },
],
bankPhone: [
{ required: true, message: "开户行电话不能为空", trigger: "blur" },
],
email: [{ required: true, message: "电子邮箱不能为空", trigger: "blur" }],
phone: [{ required: true, message: "联系电话不能为空", trigger: "blur" }],
address: [{ required: true, message: "地址不能为空", trigger: "blur" }],
username: [{ required: true, message: "联系人不能为空", trigger: "blur" }],
userPhone: [
{ required: true, message: "联系人电话不能为空", trigger: "blur" },
],
userAddress: [
{ required: true, message: "邮寄地址不能为空", trigger: "blur" },
],
},
});
const { queryParams, form, rules } = toRefs(data);
/** 查询列表 */
function getList() {
// console.log(proxy.addDateRange(queryParams.value, dateRange.value));
postList.value = [1];
total.value = 15;
loading.value = false;
// loading.value = true;
// listPost(proxy.addDateRange(queryParams.value, dateRange.value)).then(
// (response) => {
// postList.value = response.rows;
// total.value = response.total;
// loading.value = false;
// }
// );
}
/** 取消按钮 */
function cancel() {
open.value = false;
reset();
}
/** 表单重置 */
function reset() {
form.value = {
id: undefined,
type: "1",
name: undefined,
dutyParagraph: undefined,
bank: undefined,
bankAccount: undefined,
bankPhone: undefined,
email: undefined,
phone: undefined,
address: undefined,
username: undefined,
userPhone: undefined,
userAddress: undefined,
};
proxy.resetForm("postRef");
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
dateRange.value = [];
proxy.resetForm("queryRef");
handleQuery();
}
/** 多选框选中数据 */
function handleSelectionChange(selection) {
ids.value = selection.map((item) => item.postId);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
function handleAdd() {
reset();
open.value = true;
title.value = "";
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset();
form.value.id = row.id;
open.value = true;
title.value = "发票申请";
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["postRef"].validate((valid) => {
if (valid) {
console.log(form.value);
if (form.value.id != undefined) {
// updatePost(form.value).then((response) => {
// proxy.$modal.msgSuccess("修改成功");
// open.value = false;
// getList();
// });
} else {
// addPost(form.value).then((response) => {
// proxy.$modal.msgSuccess("新增成功");
// open.value = false;
// getList();
// });
}
}
});
}
/** 删除按钮操作 */
function handleDelete(row) {
const postIds = row.postId || ids.value;
proxy.$modal
.confirm('是否确认删除企业名称为"' + postIds + '"的数据项?')
.then(function () {
return delPost(postIds);
})
.then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}
/** 导出按钮操作 */
function handleExport() {
proxy.download(
"system/post/export",
{
...queryParams.value,
},
`post_${new Date().getTime()}.xlsx`
);
}
getList();
</script>

View File

@ -0,0 +1,184 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryRef"
v-show="showSearch"
:inline="true"
>
<el-form-item label="所属专家" prop="postCode">
<el-input
v-model="queryParams.postCode"
placeholder="请输入所属专家"
clearable
size="small"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号" prop="postCode">
<el-input
v-model="queryParams.postCode"
placeholder="请输入手机号"
clearable
size="small"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="postList">
<el-table-column label="数据编号" align="center" prop="postCode" />
<el-table-column label="所属专家" align="center" prop="postCode" />
<el-table-column label="联系电话" align="center" prop="postSort" />
<el-table-column label="研究领域" align="center" prop="status" />
<el-table-column label="浏览量" align="center" prop="status" />
<el-table-column label="收藏量" align="center" prop="status" />
<el-table-column
label="入驻时间"
align="center"
prop="createTime"
width="180"
>
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<!-- <el-button
v-if="queryParams.type == 3"
size="mini"
type="text"
icon="Delete"
@click="handleDelete(scope.row.id)"
>删除</el-button
> -->
<el-button size="mini" type="text" icon="Close" @click=""
>取消关联</el-button
>
<!-- <el-button
size="mini"
type="text"
icon="Edit"
@click="handleEdit(scope.row.id)"
>编辑</el-button
> -->
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script setup>
import {
demand,
demandAdd,
demandEdit,
demandDetail,
demandDelete,
} from "@/api/admin/expert/demand";
const { proxy } = getCurrentInstance();
const router = useRouter();
const postList = ref([]);
const loading = ref(true);
const showSearch = ref(true);
const total = ref(0);
const dateRange = ref([]);
const data = reactive({
form: {},
queryParams: {
page_num: 1,
page_size: 10,
type: 2,
postCode: undefined,
},
rules: {
name: [{ required: true, message: "公司名称不能为空", trigger: "blur" }],
dutyParagraph: [
{ required: true, message: "公司税号不能为空", trigger: "blur" },
],
bank: [{ required: true, message: "开户行不能为空", trigger: "blur" }],
bankAccount: [
{ required: true, message: "开户行账号不能为空", trigger: "blur" },
],
bankPhone: [
{ required: true, message: "开户行电话不能为空", trigger: "blur" },
],
email: [{ required: true, message: "电子邮箱不能为空", trigger: "blur" }],
phone: [{ required: true, message: "联系电话不能为空", trigger: "blur" }],
address: [{ required: true, message: "地址不能为空", trigger: "blur" }],
username: [{ required: true, message: "联系人不能为空", trigger: "blur" }],
userPhone: [
{ required: true, message: "联系人电话不能为空", trigger: "blur" },
],
userAddress: [
{ required: true, message: "邮寄地址不能为空", trigger: "blur" },
],
},
});
const { queryParams, form, rules } = toRefs(data);
/** 查询列表 */
function getList() {
loading.value = true;
postList.value = [1];
loading.value = false;
// demand(queryParams.value).then((response) => {
// postList.value = response.data.data;
// total.value = response.data.count;
// loading.value = false;
// });
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
dateRange.value = [];
proxy.resetForm("queryRef");
handleQuery();
}
/** 删除按钮操作 */
function handleDelete(id) {
proxy.$modal
.confirm('是否确认删除订单号为"' + id + '"的数据项?')
.then(function () {
return demandDelete(postIds);
})
.then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}
function handleEdit(id) {
router.push({ path: "./release", query: { id } });
}
getList();
</script>

View File

@ -0,0 +1,255 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryRef"
v-show="showSearch"
:inline="true"
@submit.prevent
>
<el-form-item label="设备名称" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入设备名称"
clearable
size="small"
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
size="mini"
@click="handleAdd"
>新增</el-button
>
</el-col>
<right-toolbar
v-model:showSearch="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<!-- 表格数据 -->
<el-table v-loading="loading" :data="dataList">
<el-table-column label="数据编号" prop="id" />
<el-table-column
label="设备名称"
prop="title"
:show-overflow-tooltip="true"
/>
<el-table-column label="型号" prop="ext" :show-overflow-tooltip="true" />
<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
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<el-button
size="mini"
type="text"
icon="Edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="Delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改数据配置对话框 -->
<el-dialog :title="title" v-model="open" width="600px" append-to-body>
<el-form ref="paperRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="设备名称:" prop="title">
<el-input v-model="form.title" placeholder="请输入设备名称" />
</el-form-item>
<el-form-item label="型号:" prop="ext">
<el-input v-model="form.ext" placeholder="请输入型号" />
</el-form-item>
<el-form-item label="购买时间:" prop="publish_at">
<el-date-picker
v-model="form.publish_at"
type="date"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择购买时间"
></el-date-picker>
</el-form-item>
<el-form-item label="成果参数:" prop="author">
<el-input v-model="form.author" placeholder="请输入成果参数" />
</el-form-item>
<el-form-item label="设备描述:">
<el-input
v-model="form.remark"
type="textarea"
placeholder="请输入设备描述"
></el-input>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup>
import {
expertPaper,
paperAdd,
paperEdit,
paperDelete,
} from "@/api/admin/expert/technology";
const router = useRouter();
const { proxy } = getCurrentInstance();
const dataList = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const total = ref(0);
const title = ref("");
const data = reactive({
form: {},
queryParams: {
page_num: 1,
page_size: 10,
title: undefined,
},
rules: {
title: [{ required: true, message: "设备名称不能为空", trigger: "blur" }],
ext: [{ required: true, message: "型号不能为空", trigger: "blur" }],
author: [{ required: true, message: "成果参数不能为空", trigger: "blur" }],
publish_at: [
{
required: true,
message: "请选择购买时间",
trigger: ["blur", "change"],
},
],
},
});
const { queryParams, form, rules } = toRefs(data);
/** 查询数据列表 */
function getList() {
loading.value = true;
expertPaper(queryParams.value).then((response) => {
// dataList.value = response.data.data;
// total.value = response.data.count;
loading.value = false;
});
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef");
handleQuery();
}
/** 删除按钮操作 */
function handleDelete(row) {
proxy.$modal
.confirm('是否确认删除数据编号为"' + row.id + '"的数据项?')
.then(function () {
return paperDelete({ id: row.id });
})
.then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}
/** 重置新增的表单以及其他数据 */
function reset() {
form.value = {
id: undefined,
title: undefined,
ext: undefined,
publish_at: undefined,
author: undefined,
remark: undefined,
};
proxy.resetForm("paperRef");
}
/** 添加数据 */
function handleAdd() {
reset();
open.value = true;
title.value = "添加数据";
}
/** 修改数据 */
function handleUpdate(row) {
form.value = JSON.parse(JSON.stringify(row));
open.value = true;
title.value = "修改数据";
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["paperRef"].validate((valid) => {
if (valid) {
if (form.value.id != undefined) {
paperEdit(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功");
open.value = false;
getList();
});
} else {
paperAdd(form.value).then((response) => {
proxy.$modal.msgSuccess("新增成功");
open.value = false;
getList();
});
}
}
});
}
/** 取消按钮 */
function cancel() {
open.value = false;
reset();
}
getList();
</script>

View File

@ -0,0 +1,266 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryRef"
v-show="showSearch"
:inline="true"
@submit.prevent
>
<el-form-item label="论文题目" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入论文题目"
clearable
size="small"
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<!-- 表格数据 -->
<el-table v-loading="loading" :data="dataList">
<el-table-column label="数据编号" prop="id" />
<el-table-column
label="论文题目"
prop="title"
:show-overflow-tooltip="true"
/>
<el-table-column label="刊物" prop="ext" :show-overflow-tooltip="true" />
<el-table-column label="所属专家" prop="author" />
<!-- <el-table-column label="作者" prop="author" /> -->
<el-table-column label="关键词" align="center" prop="keywords" />
<el-table-column label="浏览量" align="center" prop="keywords" />
<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
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<el-button
size="mini"
type="text"
icon="Edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="Delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
<el-button
size="mini"
type="text"
icon="View"
@click="handlePage(scope.row.id)"
>浏览单位信息</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改数据配置对话框 -->
<el-dialog :title="title" v-model="open" width="800px" append-to-body>
<el-form ref="paperRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="论文题目:" prop="title">
<el-input v-model="form.title" placeholder="请输入论文题目" />
</el-form-item>
<el-form-item label="刊物:" prop="ext">
<el-input v-model="form.ext" placeholder="请输入刊物" />
</el-form-item>
<el-form-item label="作者:" prop="author">
<el-input v-model="form.author" placeholder="多人员请用 , 隔开" />
</el-form-item>
<el-form-item label="出版日期:" prop="publish_at">
<el-date-picker
v-model="form.publish_at"
type="date"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择出版日期"
></el-date-picker>
</el-form-item>
<InputBoxAdd
:labelWidth="100"
v-model="form"
title="关键词"
placeholder="应用场景关键词+技术产品关键词"
fieldKey="keywords"
ref="keywordsForm"
/>
<el-form-item label="摘要:">
<el-input
v-model="form.remark"
type="textarea"
placeholder="请输入内容"
></el-input>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup>
import InputBoxAdd from "@/views/identity/components/InputBoxAdd";
import {
expertPaper,
paperAdd,
paperEdit,
paperDelete,
} from "@/api/admin/expert/technology";
const router = useRouter();
const { proxy } = getCurrentInstance();
const dataList = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const total = ref(0);
const title = ref("");
const data = reactive({
form: {},
queryParams: {
page_num: 1,
page_size: 10,
title: undefined,
},
rules: {
title: [{ required: true, message: "论文题目不能为空", trigger: "blur" }],
ext: [{ required: true, message: "刊物不能为空", trigger: "blur" }],
author: [{ required: true, message: "作者不能为空", trigger: "blur" }],
publish_at: [
{
required: true,
message: "请选择出版日期",
trigger: ["blur", "change"],
},
],
},
});
const { queryParams, form, rules } = toRefs(data);
/** 查询数据列表 */
function getList() {
loading.value = true;
dataList.value = [1];
loading.value = false;
// expertPaper(queryParams.value).then((response) => {
// dataList.value = response.data.data;
// total.value = response.data.count;
// loading.value = false;
// });
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef");
handleQuery();
}
/** 删除按钮操作 */
function handleDelete(row) {
proxy.$modal
.confirm('是否确认删除数据编号为"' + row.id + '"的数据项?')
.then(function () {
return paperDelete({ id: row.id });
})
.then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}
function handlePage(id) {
router.push({ path: "./units", query: { id } });
}
/** 重置新增的表单以及其他数据 */
function reset() {
form.value = {
id: undefined,
title: undefined,
ext: undefined,
author: undefined,
publish_at: undefined,
keywords: [],
remark: undefined,
};
proxy.resetForm("paperRef");
}
/** 添加数据 */
function handleAdd() {
reset();
open.value = true;
title.value = "添加数据";
}
/** 修改数据 */
function handleUpdate(row) {
form.value = JSON.parse(JSON.stringify(row));
open.value = true;
title.value = "修改数据";
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["paperRef"].validate((valid) => {
const keywordsForm = proxy.$refs.keywordsForm.submitForm();
if (valid && keywordsForm) {
if (form.value.id != undefined) {
paperEdit(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功");
open.value = false;
getList();
});
} else {
paperAdd(form.value).then((response) => {
proxy.$modal.msgSuccess("新增成功");
open.value = false;
getList();
});
}
}
});
}
/** 取消按钮 */
function cancel() {
open.value = false;
reset();
}
getList();
</script>

View File

@ -0,0 +1,344 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryRef"
v-show="showSearch"
:inline="true"
@submit.prevent
>
<el-form-item label="专利名称" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入专利名称"
clearable
size="small"
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<!-- 表格数据 -->
<el-table v-loading="loading" :data="dataList">
<el-table-column label="数据编号" prop="id" />
<el-table-column
label="专利名称"
prop="title"
:show-overflow-tooltip="true"
/>
<el-table-column
label="申请号"
prop="apply_code"
:show-overflow-tooltip="true"
/>
<el-table-column label="发明人" prop="inventor" />
<el-table-column label="申请(专利权)人" prop="apply_name" />
<el-table-column label="申请日期" align="center" prop="apply_at">
<template #default="scope">
<span>{{ parseTime(scope.row.apply_at) }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<!-- <el-button
size="mini"
type="text"
icon="Edit"
@click="handleUpdate(scope.row.id)"
>修改</el-button
> -->
<el-button size="mini" type="text" icon="Download" @click=""
>下架</el-button
>
<el-button
size="mini"
type="text"
icon="Delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.page_num"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改数据配置对话框 -->
<el-dialog :title="title" v-model="open" width="800px" append-to-body>
<el-form ref="patentRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="申请人:" prop="apply_name">
<el-input
v-model="form.apply_name"
placeholder="请输入申请(专利权)人(多个请以 , 分割)"
/>
</el-form-item>
<el-form-item label="申请人地址:" prop="apply_address">
<el-input
v-model="form.apply_address"
placeholder="请输入申请人地址"
/>
</el-form-item>
<el-form-item label="发明人:" prop="inventor">
<el-input
v-model="form.inventor"
placeholder="请输入发明人(多个请以 , 分割)"
/>
</el-form-item>
<el-form-item label="专利名称:" prop="title">
<el-input v-model="form.title" placeholder="请输入专利名称" />
</el-form-item>
<el-form-item label="申请号:" prop="apply_code">
<el-input v-model="form.apply_code" placeholder="请输入申请号" />
</el-form-item>
<el-form-item label="公开号:" prop="open_code">
<el-input v-model="form.open_code" placeholder="请输入公开号" />
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="申请日期:" prop="apply_at">
<el-date-picker
style="width: 100%"
v-model="form.apply_at"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择申请日期"
></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="公开日:" prop="open_at">
<el-date-picker
style="width: 100%"
v-model="form.open_at"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择公开日"
></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="专利类型:" prop="kind">
<el-select
v-model="form.kind"
clearable
placeholder="请选择"
style="width: 100%"
>
<el-option
v-for="item in patentOptions"
:key="item.key"
:label="item.value"
:value="item.key"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="IPC分类号:" prop="ipc_code">
<el-input v-model="form.ipc_code" placeholder="请输入IPC分类号" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="摘要:" prop="description">
<el-input
v-model="form.description"
placeholder="请输入摘要"
type="textarea"
:autosize="{ minRows: 4, maxRows: 8 }"
/>
</el-form-item>
<el-form-item label="主权项:" prop="principal_claim">
<el-input
v-model="form.principal_claim"
placeholder="请输入主权项"
type="textarea"
:autosize="{ minRows: 4, maxRows: 8 }"
/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup>
// 需修改接口
import {
expertPatent,
patentAdd,
patentDetail,
patentEdit,
patentDelete,
} from "@/api/admin/expert/technology";
const router = useRouter();
const { proxy } = getCurrentInstance();
const dataList = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const total = ref(0);
const title = ref("");
const data = reactive({
form: {},
queryParams: {
page_num: 1,
page_size: 10,
inventor: undefined,
},
rules: {
apply_name: [
{ required: true, message: "申请人不能为空", trigger: "blur" },
],
apply_address: [
{ required: true, message: "申请人地址不能为空", trigger: "blur" },
],
open_code: [{ required: true, message: "公开号不能为空", trigger: "blur" }],
open_at: [{ required: true, message: "公开日不能为空", trigger: "blur" }],
inventor: [{ required: true, message: "发明人不能为空", trigger: "blur" }],
title: [{ required: true, message: "专利名称不能为空", trigger: "blur" }],
apply_code: [
{ required: true, message: "申请号不能为空", trigger: "blur" },
],
apply_at: [
{ required: true, message: "申请日期不能为空", trigger: "blur" },
],
kind: [{ required: true, message: "请选择专利类型", trigger: "change" }],
ipc_code: [
{ required: true, message: "IPC分类号不能为空", trigger: "blur" },
],
description: [{ required: true, message: "摘要不能为空", trigger: "blur" }],
principal_claim: [
{ required: true, message: "主权项不能为空", trigger: "blur" },
],
},
});
const { queryParams, form, rules } = toRefs(data);
/** 查询数据列表 */
function getList() {
loading.value = true;
expertPatent(queryParams.value).then((response) => {
dataList.value = [1];
// dataList.value = response.data.data;
// total.value = response.data.count;
loading.value = false;
});
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.page_num = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef");
handleQuery();
}
/** 删除按钮操作 */
function handleDelete(row) {
proxy.$modal
.confirm('是否确认删除数据编号为"' + row.id + '"的专利项?')
.then(function () {
return patentDelete({ id: row.id });
})
.then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}
/** 重置新增的表单以及其他数据 */
function reset() {
form.value = {
id: undefined,
apply_name: undefined,
apply_address: undefined,
inventor: undefined,
title: undefined,
apply_code: undefined,
open_code: undefined,
open_at: undefined,
apply_at: undefined,
kind: undefined,
ipc_code: undefined,
description: undefined,
principal_claim: undefined,
};
proxy.resetForm("patentRef");
}
/** 添加数据 */
function handleAdd() {
reset();
open.value = true;
title.value = "添加数据";
}
/** 修改数据 */
function handleUpdate(id) {
reset();
patentDetail({ id }).then((res) => {
form.value = res.data;
open.value = true;
title.value = "修改数据";
});
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["patentRef"].validate((valid) => {
if (valid) {
if (form.value.id != undefined) {
patentEdit(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功");
open.value = false;
getList();
});
} else {
// patentAdd(form.value).then((response) => {
// proxy.$modal.msgSuccess("新增成功");
// open.value = false;
// getList();
// });
}
}
});
}
/** 取消按钮 */
function cancel() {
open.value = false;
reset();
}
getList();
</script>

View File

@ -0,0 +1,190 @@
<template>
<div class="app-container">
<el-card shadow="always" style="width: 55%; margin: 0 auto">
<el-form
ref="formRef"
:model="formData"
:rules="rules"
:label-width="labelWidth + 'px'"
>
<p><b>基本信息</b></p>
<el-row>
<el-col :span="24">
<el-form-item label="需求名称:" prop="name">
<el-input v-model="formData.name"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="需求类别:">
<el-checkbox-group v-model="formData.check">
<el-checkbox
v-for="item in checkList"
:key="item.id"
:label="item.id"
>{{ item.name }}</el-checkbox
>
<!-- <el-checkbox label="0" @change="handleCheck">其他</el-checkbox> -->
</el-checkbox-group>
<el-row :gutter="20">
<el-col :span="20">
<el-input
v-model="checkInput"
placeholder="请输入需求类别"
></el-input>
</el-col>
<el-col :span="4">
<el-button type="primary" @click="addCheck">添加</el-button>
</el-col>
</el-row>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="需求描述:" prop="add">
<Editor v-model="formData.add" :minHeight="150" />
</el-form-item>
</el-col>
</el-row>
<CityOptions
v-model="formData"
:labelWidth="labelWidth"
ref="cityForm"
/>
<el-row>
<el-col :span="12">
<el-form-item label="需求联系人:" prop="bankAccount">
<el-input
v-model="formData.bankAccount"
placeholder="请输入需求联系人"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人手机号:" prop="bankPhone">
<el-input
v-model="formData.bankPhone"
placeholder="请输入联系人手机号"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="需求提交人:" prop="username">
<el-input
v-model="formData.username"
placeholder="自动获取"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手机号:" prop="userPhone">
<el-input
v-model="formData.userPhone"
placeholder="自动获取"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- <div :style="{ marginLeft: labelWidth + 'px' }">
<el-button @click="$router.go(-1)">取消</el-button>
<el-button type="primary" @click="submitForm">提交</el-button>
</div> -->
</el-card>
</div>
</template>
<script setup>
import { expert } from "@/api/identity/index";
import CityOptions from "@/views/identity/components/CityOptions";
const data = reactive({
formData: {
check: [],
},
queryParams: {
pageNum: 1,
pageSize: 10,
postCode: undefined,
},
rules: {
name: [{ required: true, message: "需求名称不能为空", trigger: "blur" }],
add: [{ required: true, message: "需求描述不能为空", trigger: "blur" }],
bankAccount: [
{ required: true, message: "需求联系人不能为空", trigger: "blur" },
],
bankPhone: [
{ required: true, message: "联系人手机号不能为空", trigger: "blur" },
],
username: [
{ required: true, message: "需求提交人不能为空", trigger: "blur" },
],
userPhone: [{ required: true, message: "手机号不能为空", trigger: "blur" }],
},
});
const { queryParams, formData, rules } = toRefs(data);
const { proxy } = getCurrentInstance();
const labelWidth = 140;
// const isContainOther = ref(false);
const checkList = reactive([
{
id: 1,
name: "成果推广",
},
{
id: 2,
name: "关键成果解决",
},
{
id: 3,
name: "对接专家院士",
},
{
id: 4,
name: "上市辅导",
},
]);
const checkInput = ref("");
function submitForm() {
proxy.$refs["formRef"].validate((valid) => {
const cityForm = proxy.$refs.cityForm.submitForm(); // 城市
if (valid && cityForm) {
console.log(formData.value);
if (form.value.id != undefined) {
// updatePost(form.value).then((response) => {
// proxy.$modal.msgSuccess("修改成功");
// proxy.$router.go(-1);
// });
} else {
// addPost(form.value).then((response) => {
// proxy.$modal.msgSuccess("新增成功");
// 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 = "";
}
}
</script>

View File

@ -0,0 +1,329 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryRef"
v-show="showSearch"
:inline="true"
@submit.prevent
>
<el-form-item label="科研项目名称" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入科研项目名称"
clearable
size="small"
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<!-- 表格数据 -->
<el-table v-loading="loading" :data="dataList">
<el-table-column label="数据编号" prop="id" />
<el-table-column
label="科研项目名称"
prop="title"
:show-overflow-tooltip="true"
/>
<el-table-column label="类型" prop="kind" />
<el-table-column label="所属专家" prop="kind" />
<el-table-column label="课题角色" prop="role">
<template #default="scope">
<div v-if="scope.row.role == 1">承担单位</div>
<div v-else-if="scope.row.role == 2">参与单位</div>
</template>
</el-table-column>
<el-table-column label="课题负责人" prop="director" />
<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
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<el-button
size="mini"
type="text"
icon="Download"
@click="handleShelf(scope.row)"
>下架</el-button
>
<!-- <el-button
size="mini"
type="text"
icon="Edit"
@click="handleUpdate(scope.row)"
>修改</el-button
> -->
<el-button
size="mini"
type="text"
icon="Delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改数据配置对话框 -->
<el-dialog :title="title" v-model="open" width="720px" append-to-body>
<el-form
ref="researchRef"
:model="form"
:rules="rules"
label-width="120px"
>
<el-form-item label="科研项目名称:" prop="title">
<el-input v-model="form.title" placeholder="请输入科研项目名称" />
</el-form-item>
<el-form-item label="课题角色:" prop="role">
<el-radio v-model="form.role" :label="1">承担单位</el-radio>
<el-radio v-model="form.role" :label="2">参与单位</el-radio>
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="资助经费:" prop="amount">
<el-input
v-model="form.amount"
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')"
placeholder="请输入资助经费"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="资助来源:" prop="source">
<el-input v-model="form.source" placeholder="请输入资助来源" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="开始日期:" prop="begin_at">
<el-date-picker
v-model="form.begin_at"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择开始日期"
></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结束日期:" prop="finish_at">
<el-date-picker
v-model="form.finish_at"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择结束日期"
></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="项目类型:" prop="kind">
<el-input v-model="form.kind" placeholder="请输入项目类型" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="课题负责人:" prop="director">
<el-input
v-model="form.director"
placeholder="请输入课题负责人"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup>
import {
expertProject,
projectAdd,
projectEdit,
projectShelf,
projectDelete,
} from "@/api/admin/expert/technology";
const router = useRouter();
const { proxy } = getCurrentInstance();
const dataList = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const total = ref(0);
const title = ref("");
const data = reactive({
form: {},
queryParams: {
page_num: 1,
page_size: 10,
title: undefined,
},
rules: {
title: [
{ required: true, message: "科研项目名称不能为空", trigger: "blur" },
],
amount: [{ required: true, message: "资助经费不能为空", trigger: "blur" }],
source: [{ required: true, message: "资助来源不能为空", trigger: "blur" }],
begin_at: [
{
required: true,
message: "请选择开始日期",
trigger: ["blur", "change"],
},
],
finish_at: [
{
required: true,
message: "请选择结束日期",
trigger: ["blur", "change"],
},
],
kind: [{ required: true, message: "项目类型不能为空", trigger: "blur" }],
director: [
{ required: true, message: "课题负责人不能为空", trigger: "blur" },
],
},
});
const { queryParams, form, rules } = toRefs(data);
/** 查询数据列表 */
function getList() {
loading.value = true;
expertProject(queryParams.value).then((response) => {
dataList.value = [1];
// dataList.value = response.data.data;
// total.value = response.data.count;
loading.value = false;
});
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef");
handleQuery();
}
function handleShelf(row) {
let text = row.shelf_status == 2 ? "上架" : "下架";
proxy.$modal
.confirm('确认要"' + text + '""' + row.id + '"的数据吗?')
.then(function () {
let status = row.shelf_status == 1 ? 2 : 1;
return projectShelf({ id: row.id, status });
})
.then(() => {
getList();
proxy.$modal.msgSuccess(text + "成功");
})
.catch(() => {});
}
/** 删除按钮操作 */
function handleDelete(row) {
proxy.$modal
.confirm('是否确认删除数据编号为"' + row.id + '"的数据项?')
.then(function () {
return projectDelete({ id: row.id });
})
.then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}
/** 重置新增的表单以及其他数据 */
function reset() {
form.value = {
id: undefined,
title: undefined,
role: 1,
amount: undefined,
source: undefined,
begin_at: undefined,
finish_at: undefined,
kind: undefined,
director: undefined,
};
proxy.resetForm("researchRef");
}
/** 添加数据 */
function handleAdd() {
reset();
open.value = true;
title.value = "添加数据";
}
/** 修改数据 */
function handleUpdate(row) {
reset();
form.value = Object.assign({}, row);
open.value = true;
title.value = "修改数据";
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["researchRef"].validate((valid) => {
if (valid) {
form.value.amount = form.value.amount - 0;
if (form.value.id != undefined) {
projectEdit(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功");
open.value = false;
getList();
});
} else {
projectAdd(form.value).then((response) => {
proxy.$modal.msgSuccess("新增成功");
open.value = false;
getList();
});
}
}
});
}
/** 取消按钮 */
function cancel() {
open.value = false;
reset();
}
getList();
</script>

View File

@ -0,0 +1,189 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryRef"
v-show="showSearch"
:inline="true"
@submit.prevent
>
<el-form-item label="需求名称" prop="postCode">
<el-input
v-model="queryParams.postCode"
placeholder="请输入需求名称"
clearable
size="small"
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<!-- <el-radio-group
v-model="queryParams.type"
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-group> -->
<el-table v-loading="loading" :data="postList">
<el-table-column label="需求名称" align="center" prop="postCode" />
<el-table-column label="需求类别" align="center" prop="postSort" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="联系人" align="center" prop="status" />
<el-table-column label="手机号" align="center" prop="status" />
<el-table-column
label="发布时间"
align="center"
prop="createTime"
width="180"
>
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<!-- <el-button
v-if="queryParams.type == 3"
size="mini"
type="text"
icon="Delete"
@click="handleDelete(scope.row.id)"
>删除</el-button
> -->
<el-button
size="mini"
type="text"
icon="Close"
@click="handleDelete(scope.row.id)"
>取消发布</el-button
>
<el-button
size="mini"
type="text"
icon="View"
@click="handleEdit(scope.row.id)"
>查看</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script setup>
import {
demand,
demandAdd,
demandEdit,
demandDetail,
demandDelete,
} from "@/api/admin/expert/demand";
const { proxy } = getCurrentInstance();
const router = useRouter();
const postList = ref([]);
const loading = ref(true);
const showSearch = ref(true);
const total = ref(0);
const dateRange = ref([]);
const data = reactive({
form: {},
queryParams: {
page_num: 1,
page_size: 10,
type: 2,
postCode: undefined,
},
rules: {
name: [{ required: true, message: "公司名称不能为空", trigger: "blur" }],
dutyParagraph: [
{ required: true, message: "公司税号不能为空", trigger: "blur" },
],
bank: [{ required: true, message: "开户行不能为空", trigger: "blur" }],
bankAccount: [
{ required: true, message: "开户行账号不能为空", trigger: "blur" },
],
bankPhone: [
{ required: true, message: "开户行电话不能为空", trigger: "blur" },
],
email: [{ required: true, message: "电子邮箱不能为空", trigger: "blur" }],
phone: [{ required: true, message: "联系电话不能为空", trigger: "blur" }],
address: [{ required: true, message: "地址不能为空", trigger: "blur" }],
username: [{ required: true, message: "联系人不能为空", trigger: "blur" }],
userPhone: [
{ required: true, message: "联系人电话不能为空", trigger: "blur" },
],
userAddress: [
{ required: true, message: "邮寄地址不能为空", trigger: "blur" },
],
},
});
const { queryParams, form, rules } = toRefs(data);
/** 查询列表 */
function getList() {
loading.value = true;
postList.value = [1];
loading.value = false;
demand(queryParams.value).then((response) => {
// postList.value = response.data.data;
// total.value = response.data.count;
loading.value = false;
});
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
dateRange.value = [];
proxy.resetForm("queryRef");
handleQuery();
}
/** 删除按钮操作 */
function handleDelete(id) {
proxy.$modal
.confirm('是否确认删除订单号为"' + id + '"的数据项?')
.then(function () {
return demandDelete(postIds);
})
.then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}
function handleEdit(id) {
router.push({ path: "./release", query: { id } });
}
getList();
</script>

View File

@ -34,7 +34,7 @@
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="postList" style="margin-top: 20px">
<el-table v-loading="loading" :data="postList">
<el-table-column label="数据编号" align="center" prop="postCode" />
<el-table-column label="所属专家" align="center" prop="postCode" />
<el-table-column label="联系电话" align="center" prop="postSort" />

View File

@ -117,7 +117,7 @@ function handlePage(item) {
routeData = router.resolve({ path: "/admin" });
} else if (item.id == 8) {
// 实验室
routeData = router.resolve({ path: "/four" });
routeData = router.resolve({ path: "/admin" });
} else if (item.id == 16) {
// 科技经纪人
routeData = router.resolve({ path: "/five" });