This commit is contained in:
2022-09-08 10:41:27 +08:00
parent 860ca6a099
commit 18d86ba26b
7 changed files with 594 additions and 24 deletions

View File

@ -1,8 +1,22 @@
import request from '@/utils/request' import request from '@/utils/request'
// 企业审核列表列表 // 获取专家列表
export function expertList() { export function expertList(params) {
return request({ return request({
url: "/business/casExpert/list", url:"/business/casExpert/list",
method: "get", method:"get",
params
}); });
} }
// 新镇专家接口
export const companyAdd=(data)=>request({
url:"/business/casExpert",
method:'post',
data
})
// 专家详情接口
export const companyDetail=(id)=>request({
url:`/business/casExpert/${id}`,
method:'get',
})

View File

@ -344,7 +344,7 @@ const data = reactive({
trigger: "blur", trigger: "blur",
}, },
], ],
researchId: [{ required: true, message: "请选择", trigger: "change" }], researchId: [{ message: "请选择", trigger: "change" }],
tenantId: [ tenantId: [
{ {
required: true, required: true,
@ -353,7 +353,7 @@ const data = reactive({
}, },
], ],
school: [{ required: true, message: "请输入", trigger: "blur" }], school: [{ required: true, message: "请输入", trigger: "blur" }],
education: [{ required: true, message: "请选择", trigger: "change" }], education: [{ message: "请选择", trigger: "change" }],
major: [{ required: true, message: "请输入", trigger: "blur" }], major: [{ required: true, message: "请输入", trigger: "blur" }],
job: [{ required: true, message: "请输入", trigger: "blur" }], job: [{ required: true, message: "请输入", trigger: "blur" }],
title: [{ required: true, message: "请输入", trigger: "blur" }], title: [{ required: true, message: "请输入", trigger: "blur" }],

View File

@ -12,7 +12,6 @@
:prop="fieldKey" :prop="fieldKey"
:rules="[ :rules="[
{ {
required: true,
type: 'array', type: 'array',
message: '请输入并添加', message: '请输入并添加',
trigger: 'change', trigger: 'change',

View File

@ -0,0 +1,105 @@
<template>
<div class="app-container">
<div style="width: 50%">
<ExpertForm
v-model="form"
:showTitle="true"
:formType="formType"
:labelWidth="140"
ref="expertFormRef"
/>
</div>
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="submitForm">提交</el-button>
</div>
</template>
<script setup name="EnterpriseAdd">
import ExpertForm from "@/views/components/ExpertForm";
import tab from "@/plugins/tab";
import {
companyAdd,
companyDetail,
// companyEdit,
} from "@/api/expert/expert";
import { reactive, toRefs } from "vue";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
const router = useRouter();
const route = useRoute();
const formType = ref(1);
const expertFormRef = ref(null);
const data = reactive({
form: {
image: undefined,
name: undefined,
tenantId: undefined,
province: undefined, // 省code
city: undefined, // 市code
district: undefined, // 区code
address: undefined, // 详细地址
product: undefined,
kind: undefined,
code: undefined,
inviterCode: undefined,
url: undefined,
industrys: [],
keywords: [],
directions: [],
introduce: undefined,
license: undefined,
},
});
const { form } = toRefs(data);
const cancel = () => {
router.back();
tab.closeOpenPage();
};
const submitForm = async () => {
const valid = await expertFormRef.value.validateForm();
if (valid) {
if (form.value.id != undefined) {
await companyEdit(form.value);
cancel();
ElMessage.success("修改成功");
} else {
await companyAdd(form.value);
cancel();
ElMessage.success("新增成功");
}
} else {
console.log("校验未通过");
}
};
const getDetailById = async () => {
if (route.query.id) {
const { data } = await companyDetail(route.query.id);
form.value = data;
}
};
getDetailById();
</script>
<!-- <script>
export default {
components: {
ExpertForm,
},
data() {
return {
// formType: 2,
// labelWidth: 140,
};
},
methods: {},
created() {
const { id } = this.$route.query;
if (id) {
companyDetail({ id }).then((res) => {
form.value = res.data;
});
}
},
};
</script> -->

View File

@ -0,0 +1,327 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
:inline="true"
>
<el-form-item label="姓名" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入关键字"
clearable
size="default"
style="width: 240px"
/>
</el-form-item>
<el-form-item label="所属站点" prop="tenantId">
<SiteOptions v-model="queryParams.tenantId" :site-list="siteList" />
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="search"
size="default"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="refresh" size="default"
@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="default"
@click="handleAdd"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="upload"
size="default"
@click="handleImport"
>导入</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="download"
size="default"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<!-- 表格区域 -->
<el-table v-loading="loading" :data="dataList">
<el-table-column label="数据编号" align="center" prop="id" />
<el-table-column label="专家姓名" align="center" prop="name" />
<el-table-column label="研究领域" align="center" show-overflow-tooltip>
<template #default="{ row }">
<div>{{row.industrys&& row.industrys[row.industrys.length - 1] }}</div>
</template>
</el-table-column>
<el-table-column label="所属科研机构" align="center" prop="researchId" />
<el-table-column label="所属实验室" align="center" prop="laboratoryId" />
<el-table-column label="站点" align="center">
<template #default="{ row }">
{{ siteList.find((el) => el.id === row.tenantId)?.name ?? "无" }}
</template>
</el-table-column>
<el-table-column label="所在地" align="center" prop="address" />
<el-table-column label="操作" align="center">
<template #default="{ row }">
<el-button
size="small"
type="text"
icon="edit"
@click="handleDetail(row.id)"
>修改</el-button
>
<el-button
size="small"
type="text"
icon="plus"
>认领专利</el-button
>
</template>
</el-table-column>
</el-table>
<!-- 分页器 -->
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.page_size"
@pagination="getList"
/>
<!-- 用户导入对话框 -->
<el-dialog
:title="upload.title"
v-model="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="uploadRef"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<template #tip>
<div class="el-upload__tip text-center">
<!-- <div class="el-upload__tip">
<el-checkbox
v-model="upload.updateSupport"
/>是否更新已经存在的用户数据
</div> -->
<span>仅允许导入xlsxlsx格式文件</span>
<!-- <el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
> -->
</div>
</template>
</el-upload>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup>
import SiteOptions from "@/views/components/SiteOptions";
import { tenantSelect } from "@/api/subPlatform/tenant";
import {expertList} from '@/api/expert/expert'
import { getToken } from "@/utils/auth";
import { useRouter } from "vue-router";
import FieldOptions from "@/views/components/FieldOptions";
const router=useRouter()
const siteList = ref([]);
const dataList = ref([]);
const total = ref(0);
const showSearch = ref(true);
const data=reactive({
queryParams:{
pageNum:1,
pageSize:10,
}
})
/*** 用户导入参数 */
const upload = reactive({
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
// updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: import.meta.env.VITE_APP_BASE_API + "/business/enterprise/importData",
});
const uploadRef = ref(null);
/** 导入按钮操作 */
function handleImport() {
upload.title = "用户导入";
upload.open = true;
}
/** 下载模板操作 */
function importTemplate() {
proxy.download(
"system/user/importTemplate",
{},
`user_template_${new Date().getTime()}.xlsx`
);
}
/**文件上传中处理 */
const handleFileUploadProgress = (event, file, fileList) => {
upload.isUploading = true;
};
/** 文件上传成功处理 */
const handleFileSuccess = (response, file, fileList) => {
upload.open = false;
upload.isUploading = false;
uploadRef.value.handleRemove(file);
ElMessageBox.alert(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
response.msg +
"</div>",
"导入结果",
{ dangerouslyUseHTMLString: true }
);
getList();
};
/** 提交上传文件 */
function submitFileForm() {
uploadRef.value.submit();
}
const handleDelete = async (id) => {
ElMessageBox.confirm(`是否确认删除编号为${id}的数据项?`)
.then(async () => {
await companyDelete(id);
getList();
ElMessage.success("删除成功");
})
.catch(() => {});
};
let downloadLoadingInstance;
const download = (url, filename) => {
downloadLoadingInstance = ElLoading.service({
text: "正在下载数据,请稍候",
background: "rgba(0, 0, 0, 0.7)",
});
return request
.get(url, {
// transformRequest: [
// (params) => {
// return tansParams(params);
// },
// ],
headers: { "Content-Type": "application/x-www-form-urlencoded" },
responseType: "blob",
})
.then(async (data) => {
const isLogin = await blobValidate(data);
if (isLogin) {
const blob = new Blob([data]);
saveAs(blob, filename);
} else {
const resText = await data.text();
const rspObj = JSON.parse(resText);
const errMsg =
errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
ElMessage.error(errMsg);
}
downloadLoadingInstance.close();
})
.catch((r) => {
console.error(r);
ElMessage.error("下载文件出现错误,请联系管理员!");
downloadLoadingInstance.close();
});
};
const handleExport = () => {
ElMessageBox.confirm(`是否确认企业列表?`).then(() => {
download(
`/business/enterprise/export`,
`企业信息(${dayjs().format("YYYYMMDDHHmmss")}).xlsx`
);
});
};
const { queryParams } = toRefs(data);
// 获取站点列表
const getSiteList = async () => {
const resp = await tenantSelect();
siteList.value = resp.rows;
};
/** 查询专家列表 */
const getList = async () => {
const resp = await expertList(queryParams.value);
dataList.value = resp.rows;
total.value = resp.total;
};
// 新增页面跳转
const handleAdd = () => {
router.push({
path: "/dataList/expert/add",
});
};
// 修改页面 获取详情
const handleDetail = (id) => {
router.push({
path: "/dataList/expert/add",
query: { id },
});
};
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
};
/** 重置按钮操作 */
const resetQuery = () => {
queryParams.value.name=''
queryParams.value.tenantId=''
handleQuery()
};
getSiteList()
getList()
</script>

View File

@ -0,0 +1,105 @@
<template>
<div class="app-container">
<div style="width: 50%">
<ExpertForm
v-model="form"
:showTitle="true"
:formType="formType"
:labelWidth="140"
ref="expertFormRef"
/>
</div>
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="submitForm">提交</el-button>
</div>
</template>
<script setup name="EnterpriseAdd">
import ExpertForm from "@/views/components/ExpertForm";
import tab from "@/plugins/tab";
import {
companyAdd,
companyDetail,
companyEdit,
} from "@/api/dataList/enterprise";
import { reactive, toRefs } from "vue";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
const router = useRouter();
const route = useRoute();
const formType = ref(1);
const expertFormRef = ref(null);
const data = reactive({
form: {
image: undefined,
name: undefined,
tenantId: undefined,
province: undefined, // 省code
city: undefined, // 市code
district: undefined, // 区code
address: undefined, // 详细地址
product: undefined,
kind: undefined,
code: undefined,
inviterCode: undefined,
url: undefined,
industrys: [],
keywords: [],
directions: [],
introduce: undefined,
license: undefined,
},
});
const { form } = toRefs(data);
const cancel = () => {
router.back();
tab.closeOpenPage();
};
const submitForm = async () => {
const valid = await expertFormRef.value.validateForm();
if (valid) {
if (form.value.id != undefined) {
await companyEdit(form.value);
cancel();
ElMessage.success("修改成功");
} else {
await companyAdd(form.value);
cancel();
ElMessage.success("新增成功");
}
} else {
console.log("校验未通过");
}
};
const getDetailById = async () => {
if (route.query.id) {
const { data } = await companyDetail(route.query.id);
form.value = data;
}
};
getDetailById();
</script>
<!-- <script>
export default {
components: {
ExpertForm,
},
data() {
return {
// formType: 2,
// labelWidth: 140,
};
},
methods: {},
created() {
const { id } = this.$route.query;
if (id) {
companyDetail({ id }).then((res) => {
form.value = res.data;
});
}
},
};
</script> -->

View File

@ -37,14 +37,17 @@
</el-form> </el-form>
<!--表格区域--> <!--表格区域-->
<!-- <el-table :data="dataList" style="width: 100%" border > <el-table :data="dataList" style="width: 100%" border >
<el-table-column prop="name" label="企业名称" align="center"/> <el-table-column prop="name" label="专家姓名" align="center"/>
<el-table-column prop="code" label="统一社会信用代码" align="center"/> <el-table-column label="研究领域" align="center">
<el-table-column label="所属领域" align="center">
<template #default="{ row }"> <template #default="{ row }">
<div>{{ row.industrys[row.industrys.length - 1] }}</div> <div>{{row.industrys&&row.industrys[row.industrys.length - 1] }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="researchId" label="所属研究机构" align="center"/>
<el-table-column prop="laboratoryId" label="所属实验室" align="center"/>
<el-table-column prop="" label="成果数量" align="center"/>
<el-table-column prop="" label="专利数量" align="center"/>
<el-table-column prop="" label="站点" align="center"> <el-table-column prop="" label="站点" align="center">
<template #default="{ row }"> <template #default="{ row }">
{{ siteList.find((el) => el.id === row.tenantId)?.name ?? "无" }} {{ siteList.find((el) => el.id === row.tenantId)?.name ?? "无" }}
@ -56,25 +59,18 @@
{{row.examineStatus==='1'?'已通过':'已拒绝'}} {{row.examineStatus==='1'?'已通过':'已拒绝'}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="kind" label="企业类型" align="center"> <el-table-column prop="createTime" label="申请时间" align="center"/>
<template #default="{ row }"> <el-table-column prop="" label="操作" align="center">
<div>
{{ enterpriseOptions.find((e) => row.kind == e.key).value }}
</div>
</template>
</el-table-column>
<el-table-column prop="createdAt" label="申请时间" align="center"/>
<el-table-column prop="" label="操作" width="200px" align="center">
<template #default="{row}"> <template #default="{row}">
<el-button <el-button
size="small" size="small"
type="text" type="text"
@click="handleDetail(row.id)" @click="btnAudit(row.id)"
>审核</el-button >审核</el-button
> >
</template> </template>
</el-table-column> </el-table-column>
</el-table> --> </el-table>
<!-- 分页器 --> <!-- 分页器 -->
<pagination <pagination
@ -89,7 +85,10 @@
<script setup> <script setup>
import SiteOptions from "@/views/components/SiteOptions"; import SiteOptions from "@/views/components/SiteOptions";
import { tenantSelect } from "@/api/subPlatform/tenant";
import {expertList} from '@/api/expert/expert' import {expertList} from '@/api/expert/expert'
import {useRouter} from 'vue-router'
const router=useRouter()
const data=reactive({ const data=reactive({
queryData:{ queryData:{
pageNum:1, pageNum:1,
@ -99,6 +98,7 @@ const data=reactive({
}) })
const total = ref(0); const total = ref(0);
const dataList=ref([]) const dataList=ref([])
const siteList = ref([]);
const { queryData } = toRefs(data); const { queryData } = toRefs(data);
// 获取专家列表 // 获取专家列表
const getList=async ()=>{ const getList=async ()=>{
@ -111,6 +111,26 @@ const getSiteList = async () => {
const resp = await tenantSelect(); const resp = await tenantSelect();
siteList.value = resp.rows; siteList.value = resp.rows;
}; };
// 搜索查询
const handleQuery=()=>{
getList(queryData.value);
}
// 重置按钮
const resetQuery = () => {
queryData.value={
pageNum:1,
pageSize:10,
examineStatus:''
}
getList()
};
// 审核按钮
const btnAudit=(id)=>{
router.push({
path: "/expert/dataList/add",
query: { id },
});
}
getList() getList()
getSiteList() getSiteList()
</script> </script>