科研机构审核列表

This commit is contained in:
熊丽君
2022-01-26 13:29:49 +08:00
parent 916ee5515b
commit 30e01df9ae
9 changed files with 437 additions and 131 deletions

View File

@ -1,19 +1,41 @@
<template>
<el-form ref="form" :model="value" :rules="rules" label-width="100px">
<div class="form_title" v-if="showTitle">基本信息</div>
<el-row>
<el-col :span="24">
<el-form-item label="专家头像:" prop="image">
<ImageUpload
v-model="value.image"
:isShowTip="true"
:fileSize="2"
:limit="1"
/>
<el-form-item :label="imageName" prop="image">
<ImageUpload v-model="value.image" :fileSize="2" :limit="1" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row v-if="formType == 3">
<el-col :span="24">
<el-form-item label="机构名称:" prop="name">
<el-input
v-model="value.name"
:disabled="isAdd ? false : true"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="formType == 3">
<el-col :span="24">
<el-form-item label="机构代码:" prop="code">
<el-row type="flex" justify="space-between">
<el-col :span="20">
<el-input v-model="value.code"></el-input>
</el-col>
<el-col :span="3">
<el-button type="primary" @click="" disabled>查找</el-button>
</el-col>
</el-row>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="formType == 1">
<el-col :span="12">
<el-form-item label="姓名:" prop="name">
<el-input
@ -33,18 +55,27 @@
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="所属站点:" prop="tenant_id">
<SiteOptions :size="''" :limitWidth="false" v-model="value" />
</el-form-item>
</el-col>
</el-row>
<el-row v-if="formType == 1">
<el-col :span="12">
<el-form-item label="所属单位:" prop="research_id">
<el-select
v-model="value.research_id"
filterable
placeholder="请选择"
@change="setLaboratory"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in researchOptions"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
@ -69,14 +100,6 @@
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="所属站点:" prop="tenant_id">
<SiteOptions :size="''" :limitWidth="false" v-model="value" />
</el-form-item>
</el-col>
</el-row>
<CityOptions v-model="value" ref="cityForm" />
<el-row>
@ -87,7 +110,7 @@
</el-col>
</el-row>
<el-row>
<el-row v-if="formType == 1">
<el-col :span="24">
<el-form-item label="毕业院校:" prop="school">
<el-input v-model="value.school"></el-input>
@ -95,7 +118,7 @@
</el-col>
</el-row>
<el-row>
<el-row v-if="formType == 1">
<el-col :span="12">
<el-form-item label="最高学历:" prop="education">
<el-select v-model="value.education" placeholder="请选择">
@ -116,7 +139,7 @@
</el-col>
</el-row>
<el-row>
<el-row v-if="formType == 1">
<el-col :span="12">
<el-form-item label="职务:" prop="job">
<el-input v-model="value.job"></el-input>
@ -129,7 +152,7 @@
</el-col>
</el-row>
<el-row>
<el-row v-if="formType == 1">
<el-col :span="12">
<el-form-item label="从业时间:" prop="work_at">
<el-date-picker
@ -152,6 +175,7 @@
<FieldOptions v-model="value" ref="fieldForm" />
<InputBoxAdd
v-if="formType == 1"
v-model="value"
title="关键词"
placeholder="应用场景关键词+技术产品关键词"
@ -165,15 +189,29 @@
fieldKey="researchs"
ref="researchsForm"
/>
<el-row v-if="formType == 3">
<el-col :span="24">
<el-form-item label="营业执照:" prop="license">
<ImageUpload v-model="value.license" :isShowTip="false" :limit="1" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="个人简介:" prop="introduce">
<el-form-item :label="introduceName" prop="introduce">
<el-input
v-if="formType == 1"
v-model="value.introduce"
type="textarea"
:autosize="{ minRows: 2, maxRows: 6 }"
/>
<Editor
v-model="value.introduce"
:minHeight="150"
ref="introduceRef"
@click.native="handleEditAble"
v-if="formType == 3"
/>
</el-form-item>
</el-col>
</el-row>
@ -183,6 +221,8 @@
import CityOptions from "@/views/components/CityOptions";
import FieldOptions from "@/views/components/FieldOptions";
import InputBoxAdd from "@/views/components/InputBoxAdd";
import { researchSelect } from "@/api/dataList/research";
import { laboratorySelect } from "@/api/dataList/laboratory";
export default {
components: {
CityOptions,
@ -195,50 +235,93 @@ export default {
type: Boolean,
default: true,
},
showTitle: {
type: Boolean,
default: false,
},
formType: {
type: Number,
default: 1,
},
},
computed: {
introduceName() {
let str = "";
switch (this.formType) {
case 1:
str = "个人简介:";
break;
case 2:
str = ":";
break;
case 3:
str = "机构简介:";
break;
case 4:
str = ":";
break;
case 5:
str = ":";
break;
default:
break;
}
return str;
},
imageName() {
let str = "";
switch (this.formType) {
case 1:
str = "专家头像:";
break;
case 2:
str = "企业logo:";
break;
case 3:
str = "机构logo:";
break;
case 4:
str = ":";
break;
case 5:
str = ":";
break;
default:
break;
}
return str;
},
},
data() {
return {
researchOptions: [],
options: [
{
value: "选项1",
label: "黄金糕",
},
{
value: "选项2",
label: "双皮奶",
},
// { value: "", label: "" }
],
rules: {
name: [{ required: true, message: "名称不能为空", trigger: "blur" }],
name: [{ required: true, message: "请输入", trigger: "blur" }],
code: [{ required: true, message: "请输入", trigger: "blur" }],
mobile: [
{ required: true, message: "手机号不能为空", trigger: "blur" },
{ required: true, message: "请输入", trigger: "blur" },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码",
trigger: "blur",
},
],
research_id: [
{ required: true, message: "请选择所属单位", trigger: "change" },
],
research_id: [{ required: true, message: "请选择", trigger: "change" }],
tenant_id: [
{
required: true,
message: "请选择所属站点",
message: "请选择",
trigger: ["blur", "change"],
},
],
school: [
{ required: true, message: "毕业院校不能为空", trigger: "blur" },
],
education: [
{ required: true, message: "请选择所最高学历", trigger: "change" },
],
major: [
{ required: true, message: "主修专业不能为空", trigger: "blur" },
],
job: [{ required: true, message: "职务不能为空", trigger: "blur" }],
title: [{ required: true, message: "职称不能为空", trigger: "blur" }],
school: [{ required: true, message: "请输入", trigger: "blur" }],
education: [{ required: true, message: "请选择", trigger: "change" }],
major: [{ required: true, message: "请输入", trigger: "blur" }],
job: [{ required: true, message: "请输入", trigger: "blur" }],
title: [{ required: true, message: "请输入", trigger: "blur" }],
work_at: [
{
required: true,
@ -246,31 +329,86 @@ export default {
trigger: ["change", "blur"],
},
],
introduce: [
{ required: true, message: "个人简介不能为空", trigger: "blur" },
license: [
{
required: true,
message: "请上传",
trigger: ["blur", "change"],
},
],
introduce: [{ required: true, message: "请输入", trigger: "blur" }],
},
};
},
watch: {
"value.tenant_id"(newOld) {
console.log(newOld);
if (newOld) {
if (this.formType == 1) {
// this.formType == 1 专家表单
// 获取所属单位-研究机构options
researchSelect({ tenant_id: newOld }).then(({ data }) => {
this.researchOptions = data;
});
}
} else {
this.researchOptions = [];
if (this.value.research_id) this.value.research_id = undefined;
}
},
},
mounted() {
console.log(this.formType);
if (this.formType != 1) {
// 取消富文本自动聚焦
this.$nextTick(() => {
this.$refs.introduceRef.Quill.enable(false);
});
}
},
methods: {
// 富文本聚焦
handleEditAble() {
this.$refs.introduceRef.Quill.enable(true);
this.$refs.introduceRef.Quill.focus();
},
setLaboratory(e) {
laboratorySelect({ research_id: e }).then((res) => {
console.log(res);
});
},
submitForm() {
let flag = false;
this.$refs["form"].validate((valid) => {
const cityForm = this.$refs.cityForm.submitForm();
const fieldForm = this.$refs.fieldForm.submitForm();
const keywordsForm = this.$refs.keywordsForm.submitForm();
const researchsForm = this.$refs.researchsForm.submitForm();
if (cityForm && fieldForm && keywordsForm && researchsForm) {
console.log(true);
flag = !flag;
}
});
if (this.formType == 1) {
this.$refs["form"].validate((valid) => {
const cityForm = this.$refs.cityForm.submitForm(); // 城市
const fieldForm = this.$refs.fieldForm.submitForm(); // 所属领域
const keywordsForm = this.$refs.keywordsForm.submitForm(); // 关键词
const researchsForm = this.$refs.researchsForm.submitForm(); // 研究方向
if (cityForm && fieldForm && keywordsForm && researchsForm) {
flag = !flag;
}
});
} else {
this.$refs["form"].validate((valid) => {
const cityForm = this.$refs.cityForm.submitForm();
const fieldForm = this.$refs.fieldForm.submitForm();
const researchsForm = this.$refs.researchsForm.submitForm();
if (cityForm && fieldForm && researchsForm) {
flag = !flag;
}
});
}
return flag;
},
},
};
</script>
<style lang="scss" scoped>
.form_title {
font-weight: 700;
margin-bottom: 30px;
}
// 上传图片框限制
// ::v-deep .el-upload--picture-card {
// width: 120px;

View File

@ -0,0 +1,76 @@
<template>
<div class="app-container">
<div style="width: 50%">
<ExpertForm
v-model="form"
:showTitle="true"
:formType="formType"
ref="expertForm"
/>
</div>
<el-button @click="$router.go(-1)">取消</el-button>
<el-button type="primary" @click="submitForm">提交</el-button>
</div>
</template>
<script>
import ExpertForm from "@/views/components/ExpertForm";
import {
researchAdd,
researchDetail,
researchEdit,
} from "@/api/dataList/research";
export default {
components: {
ExpertForm,
},
data() {
return {
formType: 3,
form: {
id: undefined,
image: undefined,
name: undefined,
code: undefined,
tenant_id: undefined,
province: undefined, // 省code
city: undefined, // 市code
district: undefined, // 区code
address: undefined, // 详细地址
industrys: [], // 领域
researchs: [], // 研究方向
license: undefined, // 营业执照地址
introduce: undefined, // 介绍
},
};
},
methods: {
submitForm() {
if (this.$refs.expertForm.submitForm()) {
if (this.form.id != undefined) {
researchEdit(this.form).then((response) => {
this.$store.dispatch("tagsView/delView", this.$route);
this.$router.go(-1);
this.$modal.msgSuccess("修改成功");
});
} else {
researchAdd(this.form).then((res) => {
this.$store.dispatch("tagsView/delView", this.$route);
this.$router.go(-1);
this.$modal.msgSuccess("新增成功");
});
}
} else {
console.log("校验未通过");
}
},
},
created() {
const { id } = this.$route.query;
if (id) {
researchDetail({ id }).then((res) => {
this.form = res.data;
});
}
},
};
</script>

View File

@ -3,6 +3,7 @@
<el-form
:model="queryParams"
ref="queryForm"
v-show="showSearch"
:inline="true"
label-width="68px"
>
@ -16,7 +17,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="审核状态" prop="examine_status">
<!-- <el-form-item label="审核状态" prop="examine_status">
<el-select
v-model="queryParams.examine_status"
placeholder="审核状态"
@ -29,7 +30,7 @@
<el-option label="审核通过" :value="2" />
<el-option label="审核拒绝" :value="3" />
</el-select>
</el-form-item>
</el-form-item> -->
<el-form-item label="所属站点" prop="tenant_id" v-if="is_super">
<SiteOptions v-model="queryParams" />
</el-form-item>
@ -48,25 +49,53 @@
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="userList">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</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" width="150" prop="id" />
<el-table-column label="机构名称" align="center" prop="name" />
<el-table-column label="统一社会信用代码" align="center" prop="code" />
<el-table-column
label="统一社会信用代码"
label="研究方向"
align="center"
prop="researchs"
show-overflow-tooltip
>
<template slot-scope="scope">
<div>{{ scope.row.researchs.join(";") }}</div>
</template>
</el-table-column>
<el-table-column
label="研究领域"
align="center"
prop="industrys"
/>
show-overflow-tooltip
>
<template slot-scope="scope">
<div>{{ scope.row.industrys[scope.row.industrys.length - 1] }}</div>
</template>
</el-table-column>
<el-table-column
label="主要研究方向"
label="所在地"
align="center"
prop="research_name"
prop="address"
show-overflow-tooltip
/>
<el-table-column
label="主要研究领域"
align="center"
prop="laboratory_name"
/>
<el-table-column label="所在地" align="center" prop="address" />
<el-table-column label="站点" align="center" prop="area" />
<el-table-column label="申请时间" align="center" prop="created_at">
<template slot-scope="scope">
@ -76,12 +105,11 @@
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button
:disabled="scope.row.examine_status != 1"
size="mini"
type="text"
icon="el-icon-edit"
@click="handleDetail(scope.row.id)"
>审核</el-button
@click="handleEdit(scope.row.id)"
>修改</el-button
>
</template>
</el-table-column>
@ -104,12 +132,13 @@ export default {
data() {
return {
is_super: this.$store.getters.is_super,
showSearch: true,
// 遮罩层
loading: true,
// 总条数
total: 0,
// 机构表格数据
userList: null,
dataList: null,
// 查询参数
queryParams: {
page_num: 1,
@ -125,7 +154,7 @@ export default {
getList() {
this.loading = true;
researchList(this.queryParams).then((response) => {
// this.userList = response.data.data;
this.dataList = response.data.data;
this.total = response.data.count;
this.loading = false;
});
@ -141,11 +170,17 @@ export default {
this.resetForm("queryForm");
this.handleQuery();
},
handleDetail(id) {
console.log(id);
handleAdd() {
this.$router.push({
path: "/examine/expertDetail",
query: { id },
path: "/dataList/researchAdd",
});
},
handleEdit(id) {
this.$router.push({
path: "/dataList/researchAdd",
query: {
id,
},
});
},
},

View File

@ -9,7 +9,7 @@
</template>
<script>
import ExpertForm from "@/views/components/ExpertForm";
import { expertDetail, expertExamine } from "@/api/examine/expert";
import { expertDetail, expertEdit, expertExamine } from "@/api/dataList/expert";
export default {
components: {
ExpertForm,
@ -43,6 +43,7 @@ export default {
},
methods: {
submitForm(status) {
console.log(this.form);
if (this.$refs.expertForm.submitForm()) {
const str =
status == 2
@ -56,15 +57,19 @@ export default {
inputType: "textarea",
})
.then(({ value }) => {
const query = {
id: this.form.id,
status,
remark: value,
};
expertExamine(query).then((res) => {
this.$store.dispatch("tagsView/delView", this.$route);
this.$router.go(-1);
this.$modal.msgSuccess("处理成功");
expertEdit(this.form).then((res) => {
if (res.code == 200) {
const query = {
id: this.form.id,
status,
remark: value,
};
expertExamine(query).then((res) => {
this.$store.dispatch("tagsView/delView", this.$route);
this.$router.go(-1);
this.$modal.msgSuccess("处理成功");
});
}
});
})
.catch(() => {});

View File

@ -19,7 +19,7 @@
<el-form-item label="审核状态" prop="examine_status">
<el-select
v-model="queryParams.examine_status"
placeholder="审核状态"
placeholder="请选择审核状态"
clearable
size="small"
style="width: 240px"
@ -58,7 +58,7 @@
show-overflow-tooltip
>
<template slot-scope="scope">
<div>{{ scope.row.industrys[0] }}</div>
<div>{{ scope.row.industrys[scope.row.industrys.length - 1] }}</div>
<!-- <div v-for="item in scope.row.industrys" :key="item">{{ item }}</div> -->
</template>
</el-table-column>
@ -111,7 +111,7 @@
</template>
<script>
import { expertList } from "@/api/examine/expert";
import { expertList } from "@/api/dataList/expert";
export default {
data() {