表单提交组件的抽离

This commit is contained in:
熊丽君
2022-01-20 09:26:47 +08:00
parent 5742d464fc
commit eb90f0c1b6
6 changed files with 693 additions and 383 deletions

View File

@ -1,377 +1,26 @@
<template>
<div class="app-container">
<el-form
style="width: 50%"
ref="form"
:model="form"
:rules="rules"
label-width="100px"
>
<el-row>
<el-col :span="24">
<el-form-item label="专家头像:" prop="image">
<ImageUpload
v-model="form.image"
:isShowTip="true"
:fileSize="2"
:limit="1"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="姓名:" prop="name">
<el-input v-model="form.name"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手机号:" prop="mobile">
<el-input v-model="form.mobile"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="所属单位:">
<el-select v-model="form.field" filterable placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属实验室:">
<el-select v-model="form.field2" filterable placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="所属站点:" prop="tenant_id">
<SiteOptions
:size="''"
:limitWidth="false"
v-model="form.tenant_id"
@handleChange="form.tenant_id = $event"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="所在地:" required>
<el-row type="flex" justify="space-between">
<el-col :span="7">
<el-form-item prop="province">
<el-select
v-model="form.province"
clearable
placeholder="请选择"
@change="provinceCodeChange()"
>
<el-option
v-for="(key, value) in provinceSelectList"
:key="value"
:label="key"
:value="value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item prop="city">
<el-select
v-model="form.city"
clearable
placeholder="请选择"
@change="cityCodeChange()"
>
<el-option
v-for="(key, value) in citySelectList"
:key="value"
:label="key"
:value="value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item prop="district">
<el-select
v-model="form.district"
clearable
placeholder="请选择"
>
<el-option
v-for="(key, value) in districtSelectList"
:key="value"
:label="key"
:value="value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="详细地址:">
<el-input v-model="form.address"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="毕业院校:" prop="school">
<el-input v-model="form.school"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="最高学历:">
<el-select v-model="form.education" placeholder="请选择">
<el-option
v-for="item in educationOptions"
:key="item.text"
:label="item.text"
:value="item.text"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="主修专业:" prop="major">
<el-input v-model="form.major"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="职务:" prop="job">
<el-input v-model="form.job"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职称:" prop="title">
<el-input v-model="form.title"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="从业时间:" prop="work_at">
<el-date-picker
v-model="form.work_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="gender">
<el-radio v-model="form.gender" :label="1">男</el-radio>
<el-radio v-model="form.gender" :label="2">女</el-radio>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="所属领域:" prop="industrys">
<el-row type="flex" justify="space-between">
<el-col :span="6">
<el-select
v-model="fields[0]"
placeholder="请选择"
@change="levelIChange()"
>
<el-option
v-for="item in levelI"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-col>
<el-col :span="6">
<el-select
v-model="fields[1]"
placeholder="请选择"
@change="levelIIChange()"
>
<el-option
v-for="item in levelII"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-col>
<el-col :span="6">
<el-select
v-model="fields[2]"
placeholder="请选择"
@change="levelIIIChange()"
>
<el-option
v-for="item in levelIII"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-col>
<el-col :span="3">
<el-button type="primary" @click="fieldAdd()">添加</el-button>
</el-col>
</el-row>
<div class="e_tag">
<el-tag
v-for="(tag, index) in this.industrysName"
:key="index"
closable
@close="handleFieldClose('industrys', index)"
>
<span v-for="(item, i) in tag" :key="i">
{{ item.name }} <span v-if="tag.length != i + 1">></span>
</span>
</el-tag>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="关键词:">
<el-row type="flex" justify="space-between">
<el-col :span="20">
<el-input
v-model="keywords"
placeholder="应用场景关键词+技术产品关键词"
></el-input>
</el-col>
<el-col :span="3">
<el-button type="primary" @click="keyWordAdd()">添加</el-button>
</el-col>
</el-row>
<div class="e_tag">
<el-tag
v-for="(tag, index) in this.form.keywords"
:key="index"
closable
@close="handleFieldClose('keywords', index)"
>
{{ tag }}
</el-tag>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="研究方向:">
<el-row type="flex" justify="space-between">
<el-col :span="20">
<el-input
v-model="keywords"
placeholder="请输入研究方向"
></el-input>
</el-col>
<el-col :span="3">
<el-button type="primary" @click="keyWordAdd()">添加</el-button>
</el-col>
</el-row>
<div class="e_tag">
<el-tag
v-for="(tag, index) in this.form.researchs"
:key="index"
closable
@close="handleFieldClose('keywords', index)"
>
{{ tag }}
</el-tag>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="个人简介:">
<el-input
v-model="form.introduce"
type="textarea"
:autosize="{ minRows: 2, maxRows: 6 }"
/>
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<el-button>审核拒绝</el-button>
<el-button type="primary" @click="submitForm">审核通过</el-button>
</el-form-item>
</el-form>
<div style="width: 50%">
<ExpertForm v-model="form" :isAdd="false" ref="expertForm" />
</div>
<el-button>审核拒绝</el-button>
<el-button type="primary" @click="submitForm">审核通过</el-button>
</div>
</template>
<script>
import ExpertForm from "@/views/components/ExpertForm";
export default {
components: {
ExpertForm,
},
data() {
return {
options: [
{
value: "选项1",
label: "黄金糕",
},
{
value: "选项2",
label: "双皮奶",
},
],
keywords: "",
provinceSelectList: [],
citySelectList: [],
districtSelectList: [],
levelI: [],
levelII: [],
levelIII: [],
fields: [],
industrysName: [],
form: {
image: undefined,
name: undefined,
mobile: undefined,
// 所属单位
// 所属实验室
name: "1",
mobile: "13911111111",
research_id: undefined, // 所属单位
laboratory_id: undefined, // 所属实验室
tenant_id: undefined,
province: undefined, // 省code
city: undefined, // 市code
@ -389,14 +38,15 @@ export default {
researchs: [],
introduce: undefined,
},
rules: {
name: [{ required: true, message: "名称不能为空", trigger: "blur" }],
},
};
},
methods: {
submitForm() {
console.log(this.form);
if (this.$refs.expertForm.submitForm()) {
console.log(this.form);
} else {
console.log("校验未通过");
}
// this.$refs["form"].validate((valid) => {
// if (valid) {
// if (this.form.id != undefined) {
@ -428,17 +78,4 @@ export default {
// this.getReportDetail();
},
};
</script>
<style lang="scss" scoped>
// 上传图片框限制
// ::v-deep .el-upload--picture-card {
// width: 120px;
// height: 120px;
// line-height: 120px;
// }
.el-select,
.el-date-editor {
display: block;
width: 100%;
}
</style>
</script>

View File

@ -31,7 +31,7 @@
</el-select>
</el-form-item>
<el-form-item label="所属站点" prop="tenant_id" v-if="is_super">
<SiteOptions @handleChange="queryParams.tenant_id = $event" />
<SiteOptions v-model="queryParams" />
</el-form-item>
<el-form-item>