Commit ef40cc57 authored by 徐俊's avatar 徐俊
parents fa2eef81 218a2be2
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
</a-col> </a-col>
<a-col :span="4" class="bg-gray"> <a-col :span="4" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">单位国别</div> <div class="required">单位地址</div>
</div> </div>
</a-col> </a-col>
<a-col :span="4" class="bg-gray"> <a-col :span="4" class="bg-gray">
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<div class="special-middle"> <div class="special-middle">
<div> <div>
<a-form-model-item :prop="'cooperativeUnits.' + index + '.unitCountry'" :rules="{ required: true,message: '*',trigger: 'blur',}"> <a-form-model-item :prop="'cooperativeUnits.' + index + '.unitCountry'" :rules="{ required: true,message: '*',trigger: 'blur',}">
<a-input v-model="item.unitCountry" :maxLength="20" placeholder="单位名称" style="width: 80%" /> <a-input v-model="item.unitCountry" :maxLength="20" placeholder="单位国别" style="width: 80%" />
</a-form-model-item> </a-form-model-item>
</div> </div>
</div> </div>
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
<div class="special-middle"> <div class="special-middle">
<div> <div>
<a-form-model-item :prop="'cooperativeUnits.' + index + '.unitAddress'" :rules="{ required: true,message: '*',trigger: 'blur',}"> <a-form-model-item :prop="'cooperativeUnits.' + index + '.unitAddress'" :rules="{ required: true,message: '*',trigger: 'blur',}">
<a-input v-model="item.unitAddress" :maxLength="100" placeholder="单位国别" style="width: 80%" /> <a-input v-model="item.unitAddress" :maxLength="100" placeholder="单位地址" style="width: 80%" />
</a-form-model-item> </a-form-model-item>
</div> </div>
</div> </div>
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
const Model = { id: null, unitName: null, unitCountry: null, unitAddress: null, organizationCode: null, projectWork: null } const Model = { id: null, unitName: null, unitCountry: null, unitAddress: null, organizationCode: null, projectWork: null }
export default { export default {
name: 'cooperativeUnits', name: 'cooperativeUnitsEdit',
data () { data () {
return { return {
......
<template>
<div>
<a-row>
<a-col :span="24">
<div class="tb-title">
<span>项目主要参与单位及分工</span>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="1" class="bg-gray">
<div class="special-middle">
<div>序号</div>
</div>
</a-col>
<a-col :span="5" class="bg-gray">
<div class="special-middle">
<div class="required">单位名称</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">单位国别</div>
</div>
</a-col>
<a-col :span="6" class="bg-gray">
<div class="special-middle">
<div class="required">单位地址</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">组织机构代码/统社会信用代码</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">分 工</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in dataList" :key="'cooperativeUnits'+index" type="flex" class="row_center">
<a-col :span="1">
<div class="special-middle">
<div>
{{ index + 1 }}
</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>
{{ item.unitName }}
</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>
{{ item.unitCountry }}
</div>
</div>
</a-col>
<a-col :span="6">
<div class="special-middle">
<div>
{{ item.unitAddress }}
</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>
{{ item.organizationCode }}
</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>
{{ item.projectWork }}
</div>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
export default {
name: 'cooperativeUnitsInfo',
data () {
return {
}
},
props: {
dataList: {
type: Array,
default: () => {
return []
}
},
},
components: {
},
created () {
},
methods: {
}
}
</script>
<template>
<div>
<a-row>
<a-col :span="24">
<div class="tb-title">
<span>附件上传</span>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="2" class="bg-gray" style="text-align: center;">
<div class="special-middle">
<div>序号</div>
</div>
</a-col>
<a-col :span="10" class="bg-gray" style="text-align: center;">
<div class="special-middle">
<div>文件名</div>
</div>
</a-col>
<a-col :span="10" class="bg-gray" style="text-align: center;">
<div class="special-middle">
<div>附件说明</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray" style="text-align: center;">
<div class="special-middle">
<div>操作</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in fileList" :key="'appendix' + index" type="flex" class="row_center">
<a-col :span="2" style="text-align: center;">
<div class="special-middle">
<div>{{index + 1}}</div>
</div>
</a-col>
<a-col :span="10" style="text-align: center;">
<div class="special-middle">
<div v-if="item.fileName" style="text-align: left;">
<!-- {{item.fileName}} -->
<document-view :fileUrl="item.downloadUrl" :fileName="item.fileName" :imageArray="[item.downloadUrl]"></document-view>
</div>
<div v-else></div>
</div>
</a-col>
<a-col :span="10" style="text-align: center;">
<div class="special-middle">
<div>{{item.fileExplain}}<span v-if="item.required" style="color:red;">*</span></div>
</div>
</a-col>
<a-col :span="2" style="text-align: center;">
<div class="special-middle">
<div v-if="item.downloadUrl"><a :href="item.downloadUrl" :download="item.fileName">下载</a></div>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
import documentView from '@/views/components/common/documentView'
const File = { fileName: "", downloadUrl: "", fileExplain: "", downloadId: "" };
export default {
name: "FileInfo",
components: {
documentView
},
props: {
fileList: {
type: Array,
default: () => {
return [{ ...File }];
},
},
},
data() {
return {};
},
methods: {},
};
</script>
\ No newline at end of file
<template>
<div>
<a-row>
<a-col :span="24">
<div class="tb-title">
<span>单位科研项目及资金管理制度</span>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div>序号</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div >单位政策名称</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div >出台日期</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div >文号</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div >有效期</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div >主要内容</div>
</div>
</a-col>
<a-col :span="8" class="bg-gray">
<div class="special-middle">
<div>附件</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in dataList" :key="'managementRuleList'+index" type="flex" class="row_center">
<a-col :span="2">
<div class="special-middle">
<div>
{{ index + 1 }}
</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>
{{ item.policyName }}
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
{{ item.releaseDate }}
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
{{ item.documentNumber }}
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
{{ item.validityPeriod }}
</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>
{{ item.mainContent }}
</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div v-if="item.fileName" style="text-align: left;">
<document-view :fileUrl="item.downloadUrl" :fileName="item.fileName" :imageArray="[item.downloadUrl]"></document-view>
</div>
<div v-else></div>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
import documentView from '@/views/components/common/documentView'
export default {
name: "managementRuleInfo",
components: {
documentView
},
props: {
dataList: {
type: Array,
default: () => {
return [{ ...ManagementRule }]
}
},
},
data () {
return {
};
},
created () {
},
computed: {
},
methods: {
},
};
</script>
<style scoped lang="less">
.file-description {
display: block;
width: 100%;
line-height: 22px;
padding: 3px 3px 3px 3px;
color: red;
white-space: normal;
word-wrap: break-word;
// text-indent: 1em;
}
.inner_from {
.ant-row-flex:last-child .ant-col {
border-bottom: 0;
}
.ant-row-flex .ant-col:first-child {
border-left: 0;
}
.ant-row-flex {
border-right: 0;
}
}
.special-middle {
.font_s {
margin: 0 6px;
}
}
</style>
...@@ -473,7 +473,7 @@ ...@@ -473,7 +473,7 @@
</a-row> </a-row>
<!-- 项目合作单位 --> <!-- 项目合作单位 -->
<cooperative-units :cooperativeUnits.sync="formData.cooperativeUnits" /> <cooperative-units-edit :cooperativeUnits.sync="formData.cooperativeUnits" />
<!-- 项目组成员 --> <!-- 项目组成员 -->
<project-member-edit :dataList.sync="formData.members" /> <project-member-edit :dataList.sync="formData.members" />
...@@ -623,7 +623,7 @@ import paraMultiSelect from '@/views/components/common/paraMultiSelect' ...@@ -623,7 +623,7 @@ import paraMultiSelect from '@/views/components/common/paraMultiSelect'
import paraSelect from '@/views/components/common/paraSelect' import paraSelect from '@/views/components/common/paraSelect'
import baseSelect from '@/views/components/common/baseSelect' import baseSelect from '@/views/components/common/baseSelect'
import projectMemberEdit from '@/views/report/project/components/projectMemberEdit' import projectMemberEdit from '@/views/report/project/components/projectMemberEdit'
import cooperativeUnits from '@/views/report/project/components/cooperativeUnits' import cooperativeUnitsEdit from '@/views/report/project/components/cooperativeUnitsEdit'
import budgetEdit from '@/views/report/project/components/budgetEdit' import budgetEdit from '@/views/report/project/components/budgetEdit'
import fundPlanEdit from '@/views/report/project/components/fundPlanEdit' import fundPlanEdit from '@/views/report/project/components/fundPlanEdit'
import equipmentsEdit from '@/views/report/project/components/equipmentsEdit.vue' import equipmentsEdit from '@/views/report/project/components/equipmentsEdit.vue'
...@@ -644,7 +644,7 @@ const File = { fileName: '', downloadUrl: '', fileExplain: '', downloadId: '' } ...@@ -644,7 +644,7 @@ const File = { fileName: '', downloadUrl: '', fileExplain: '', downloadId: '' }
export default { export default {
name: 'projectEdit', name: 'projectEdit',
components: { components: {
paraMultiSelect, paraSelect, baseSelect, projectMemberEdit, cooperativeUnits, budgetEdit, fundPlanEdit, equipmentsEdit, unitPaymentEdit, projectSubEdit, managementRuleEdit, fileEdit paraMultiSelect, paraSelect, baseSelect, projectMemberEdit, cooperativeUnitsEdit, budgetEdit, fundPlanEdit, equipmentsEdit, unitPaymentEdit, projectSubEdit, managementRuleEdit, fileEdit
}, },
props: { props: {
value: { value: {
......
...@@ -416,10 +416,10 @@ ...@@ -416,10 +416,10 @@
</a-row> </a-row>
<!-- 项目合作单位 --> <!-- 项目合作单位 -->
<!-- <cooperative-units :cooperativeUnits.sync="value.cooperativeUnits" /> --> <cooperative-units-info :dataList.sync="value.cooperativeUnits" />
<!-- 项目组成员 --> <!-- 项目组成员 -->
<!-- <proj-group-member :members.sync="value.members" /> --> <project-member-info :dataList.sync="value.members" />
<a-row> <a-row>
<a-col :span="24" style="border-top: 0px"> <a-col :span="24" style="border-top: 0px">
...@@ -522,19 +522,31 @@ ...@@ -522,19 +522,31 @@
<div v-html="toTextarea(value.otherTarget)"></div> <div v-html="toTextarea(value.otherTarget)"></div>
</a-col> </a-col>
</a-row> </a-row>
<!-- 项目课题设置 -->
<project-sub-info :dataList.sync="value.projectSubList" />
<!-- 单位科研项目及资金管理制度表 -->
<management-rule-info :dataList.sync="value.managementRuleList" />
<!-- 附件 -->
<file-info :fileList.sync="value.fileList" />
</div> </div>
</template> </template>
<script> <script>
import moment from 'moment' import moment from 'moment'
import projectMemberInfo from '@/views/report/project/components/projectMemberInfo'
import cooperativeUnitsInfo from '@/views/report/project/components/cooperativeUnitsInfo'
import projectSubInfo from '@/views/report/project/components/projectSubInfo'
import managementRuleInfo from '@/views/report/project/components/managementRuleInfo'
import fileInfo from "@/views/report/project/components/keyProject/fileInfo";
import documentView from '@/views/components/common/documentView' import documentView from '@/views/components/common/documentView'
import AuditList from '@/views/audit/components/auditInfo' import AuditList from '@/views/audit/components/auditInfo'
import { toTextarea } from '@/views/utils/common' import { toTextarea } from '@/views/utils/common'
export default { export default {
components: { components: {
AuditList, documentView projectMemberInfo, cooperativeUnitsInfo, projectSubInfo, managementRuleInfo, fileInfo, AuditList, documentView
}, },
name: "ProjectInfo", name: "ProjectInfo",
data () { data () {
......
...@@ -308,16 +308,12 @@ export default { ...@@ -308,16 +308,12 @@ export default {
this.memObject = {} this.memObject = {}
this.visibleEdit = false this.visibleEdit = false
this.dataList.push(value) this.dataList.push(value)
// this.addArrey(value)
console.log(this.dataList) console.log(this.dataList)
}, },
addMember () {//添加成员 addMember () {//添加成员
this.memObject = { ...Member } this.memObject = { ...Member }
this.visibleEdit = true this.visibleEdit = true
}, },
addArrey (value) {//添加成员
this.dataList.push(value)
},
removeMembers (item) {//移除成员 removeMembers (item) {//移除成员
let index = this.dataList.indexOf(item) let index = this.dataList.indexOf(item)
if (index !== -1) { if (index !== -1) {
...@@ -343,64 +339,5 @@ export default { ...@@ -343,64 +339,5 @@ export default {
} }
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
::v-deep .table_list {
.ant-col {
padding: 0px 0px;
text-align: left;
}
.ant-form-item-control {
line-height: 4px;
}
.ant-select {
font-size: 12px;
}
.ant-select .ant-select-selection--single {
height: 24px !important;
}
.ant-select .ant-select-selection__rendered {
line-height: 22px !important;
margin-right: 6px !important;
margin-left: 6px !important;
}
.ant-select .ant-select-selection__rendered .ant-form-item-control {
line-height: 26px !important;
}
.ant-col .ant-form-item .ant-col {
padding: 0px;
}
.from-table .row_center .ant-col {
text-align: left !important;
}
.special-pum-select .ant-form-item-control-wrapper {
display: flex;
justify-content: center;
align-content: center;
}
.special-pum-select .ant-form-item-children {
display: block;
}
.special-pum-select .ant-form-item-control {
line-height: 26px;
}
input[type="text"],
input[type="password"],
input[type="number"],
textarea {
box-sizing: border-box;
margin: 0;
padding: 0;
width: 100%;
height: 24px;
padding: 2px 6px;
color: rgba(0, 0, 0, 0.65);
font-size: 12px;
border-radius: 2px;
}
.ant-input {
height: 24px !important;
}
.ant-input-number-input {
height: 24px !important;
}
}
</style> </style>
...@@ -8,407 +8,256 @@ ...@@ -8,407 +8,256 @@
</a-col> </a-col>
</a-row> </a-row>
<a-row type="flex" class="row_center"> <a-row type="flex" class="row_center">
<!-- <a-col :span="1" class="bg-gray"> <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div>序号</div> <div>序号</div>
</div> </div>
</a-col> --> </a-col>
<a-col :span="1" class="bg-gray"> <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">姓名</div> <div>姓名</div>
</div> </div>
</a-col> </a-col>
<a-col :span="1" class="bg-gray"> <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">性别</div> <div>性别</div>
</div> </div>
</a-col> </a-col>
<a-col :span="1" class="bg-gray"> <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">出生年月</div> <div>出生年月</div>
</div> </div>
</a-col> </a-col>
<a-col :span="2" class="bg-gray"> <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">证件类型</div> <div>证件类型</div>
</div> </div>
</a-col> </a-col>
<a-col :span="2" class="bg-gray"> <a-col :span="3" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">证件号码</div> <div>证件号码</div>
</div> </div>
</a-col> </a-col>
<a-col :span="2" class="bg-gray"> <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">民族</div> <div>民族</div>
</div> </div>
</a-col> </a-col>
<a-col :span="1" class="bg-gray"> <a-col :span="2" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">国别或地区</div> <div>国别或地区</div>
</div> </div>
</a-col> </a-col>
<a-col :span="1" class="bg-gray"> <a-col :span="2" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">工作单位</div> <div>工作单位</div>
</div> </div>
</a-col> </a-col>
<a-col :span="3" class="bg-gray"> <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">职称</div> <div>职称</div>
</div> </div>
</a-col> </a-col>
<a-col :span="2" class="bg-gray"> <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">最高学位</div> <div>最高学位</div>
</div> </div>
</a-col> </a-col>
<a-col :span="1" class="bg-gray"> <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">电子邮箱</div> <div>电子邮箱</div>
</div> </div>
</a-col> </a-col>
<a-col :span="1" class="bg-gray"> <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">手机</div> <div>手机</div>
</div> </div>
</a-col> </a-col>
<!-- <a-col :span="1" class="bg-gray"> <!-- <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">电话</div> <div >电话</div>
</div> </div>
</a-col> </a-col>
<a-col :span="1" class="bg-gray"> <a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">传真</div> <div >传真</div>
</div> </div>
</a-col> --> </a-col> -->
<a-col :span="1" class="bg-gray"> <a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">项目分工</div>
</div>
</a-col>
<a-col :span="1" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">每年工作(月)</div> <div>项目分工</div>
</div> </div>
</a-col> </a-col>
<a-col :span="3" class="bg-gray"> <a-col :span="2" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div class="required">从事专业</div> <div>每年工作(月)</div>
</div> </div>
</a-col> </a-col>
<a-col :span="1" class="bg-gray"> <a-col :span="2" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
<div>操作</div> <div>从事专业</div>
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<a-row v-for="(member, index) in members" :key="index" type="flex" class="row_center table_list"> <div>
<!-- <a-col :span="1"> <a-row v-for="(item, index) in dataList" :key="'memberEdit'+index" type="flex" class="row_center">
<div class="special-middle"> <a-col :span="1">
<div> <div class="special-middle">
{{ index + 1 }} <div>
{{ index + 1 }}
</div>
</div> </div>
</div> </a-col>
</a-col> --> <a-col :span="1">
<a-col :span="1"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.name }}
<a-form-model-item :prop="'members.' + index + '.name'" :rules="{required: true,message: '*',trigger: 'blur',}"> </div>
<a-input v-model="member.name" :maxLength="20" placeholder="姓名" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="1">
<a-col :span="1"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.sex }}
<a-form-model-item :prop="'members.' + index + '.sex'" :rules="{required: true,message: '*',trigger: 'change',}"> </div>
<base-select v-model="member.sex" :type="16" :isAll="true" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="1">
<a-col :span="1"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.birthday }}
<a-form-model-item :prop="'members.' + index + '.birthday'" :rules="{required: true,message: '*',trigger: 'change',}"> </div>
<a-date-picker format="YYYY-MM-DD" valueFormat="YYYY-MM-DD HH:mm:ss" v-model="member.birthday" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="1">
<a-col :span="2"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.certificateTypeName }}
<a-form-model-item :prop="'members.' + index + '.certificateType'" :rules="{required: true,message: '*',trigger: 'blur',}"> </div>
<para-select v-model="member.certificateType" :typeId="49" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="3">
<a-col :span="2"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.certId }}
<a-form-model-item :prop="'members.' + index + '.certId'" :rules="{required: true,message: '*',trigger: 'blur',}"> </div>
<a-input v-model="member.certId" :maxLength="20" placeholder="证件号" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="1">
<a-col :span="2"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.nationName }}
<a-form-model-item :prop="'members.' + index + '.nation'" :rules="{required: true,message: '*',trigger: 'change',}"> </div>
<para-select v-model="member.nation" :typeId="11" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="2">
<a-col :span="1"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.country }}
<a-form-model-item :prop="'members.' + index + '.country'" :rules="{required: true,message: '*',trigger: 'blur',}"> </div>
<a-input v-model="member.country" :maxLength="50" placeholder="国别或地区" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="2">
<a-col :span="1"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.workUnit }}
<a-form-model-item :prop="'members.' + index + '.workUnit'" :rules="{required: true,message: '*',trigger: 'blur',}"> </div>
<a-input v-model="member.workUnit" :maxLength="50" placeholder="工作单位" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="1">
<a-col :span="3"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.titleName }}
<a-form-model-item :prop="'members.' + index + '.title'" :rules="{required: true,message: '*',trigger: 'change',}"> </div>
<para-multi-select v-model="member.title" :width="105" :typeId="7" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="1">
<a-col :span="2"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.degreeName }}
<a-form-model-item :prop="'members.' + index + '.degree'" :rules="{required: true,message: '*',trigger: 'change',}"> </div>
<para-select v-model="member.degree" :typeId="9" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="1">
<a-col :span="1"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.email }}
<a-form-model-item :prop="'members.' + index + '.email'" :rules="{required: true,message: '*',trigger: 'blur',}"> </div>
<a-input v-model="member.email" :maxLength="50" placeholder="电子邮箱" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="1">
<a-col :span="1"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.mobile }}
<a-form-model-item :prop="'members.' + index + '.mobile'" :rules="{required: true,message: '*',trigger: 'blur',}"> </div>
<a-input v-model="member.mobile" :maxLength="20" placeholder="手机" style="width: 100%" />
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <!-- <a-col :span="1">
<!-- <a-col :span="1">
<div class="special-middle"> <div class="special-middle">
<div> <div>
<a-form-model-item :prop="'members.' + index + '.telephone'" :rules="{required: true,message: '*',trigger: 'blur',}"> {{ item.telephone }}
<a-input v-model="member.telephone" :maxLength="20" placeholder="电话号码" style="width: 80%" />
</a-form-model-item>
</div> </div>
</div> </div>
</a-col> </a-col>
<a-col :span="1"> <a-col :span="1">
<div class="special-middle"> <div class="special-middle">
<div> <div>
<a-form-model-item :prop="'members.' + index + '.fax'" :rules="{required: true,message: '*',trigger: 'blur',}"> {{ item.fax }}
<a-input v-model="member.fax" :maxLength="20" placeholder="传真" style="width: 80%" />
</a-form-model-item>
</div> </div>
</div> </div>
</a-col> --> </a-col> -->
<a-col :span="1"> <a-col :span="3">
<div class="special-middle"> <div class="special-middle">
<div> <div>
<a-form-model-item :prop="'members.' + index + '.projWork'" :rules="{required: true,message: '*',trigger: 'blur',}"> {{ item.projWork }}
<a-input v-model="member.projWork" :maxLength="20" placeholder="项目分工" style="width: 100%" /> </div>
</a-form-model-item>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="2">
<a-col :span="1"> <div class="special-middle">
<div class="special-middle"> <div>
<div> {{ item.forMonths }}
<a-form-model-item :prop="'members.' + index + '.forMonths'" :rules="{required: true,message: '*',trigger: 'blur',}"> </div>
<a-input-number v-model="member.forMonths" :min="0" :step="0.1" style="width: 100%" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<div>
<a-form-model-item :prop="'members.' + index + '.spec'" :rules="{required: true,message: '*',trigger: 'change',}">
<para-multi-select v-model="member.spec" :width="105" :typeId="42" style="width: 100%" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="1">
<div class="special-middle">
<div>
<!-- <a-button icon="arrow-up" type="primary" shape="circle" size="small" :disabled="index == 0" @click="memberUp(index)"></a-button>
<a-button icon="arrow-down" type="primary" shape="circle" size="small" style="margin-left:5px;" :disabled="members.length == index + 1" @click="menberDown(index)"></a-button> -->
<a-popconfirm title="确定要删除吗?" ok-text="确定" cancel-text="取消" @confirm="removeMembers(member)">
<a-button type="link" size="small">删除</a-button>
</a-popconfirm>
</div> </div>
</div> </a-col>
</a-col> <a-col :span="2">
</a-row> <div class="special-middle">
<a-row v-if="members && members.length < 10" type="flex"> <div>
<a-col :span="24" style="text-align: center;"> {{ item.specName }}
<div class="special-middle"> </div>
<div>
<a-button type="dashed" style="width: 50%" @click="addMembers">
<a-icon type="plus" /> 添加
</a-button>
</div> </div>
</div> </a-col>
</a-col> </a-row>
</a-row> </div>
</div> </div>
</template> </template>
<script> <script>
//用法 <proj-group-member :members.sync="formData.members" /> //用法 <proj-group-member :members.sync="formData.members" />
import paraMultiSelect from '@/views/components/common/paraMultiSelect'
import paraSelect from '@/views/components/common/paraSelect'
import baseSelect from '@/views/components/common/baseSelect'
const Member = { name: null, sex: null, birthday: null, certificateType: null, certId: null, nation: null, country: null, workUnit: null, title: null, degree: null, email: null, mobile: null, telephone: null, fax: null, projWork: null, forMonths: null, spec: null }
export default { export default {
name: 'ProjGroupMember', name: 'projectMemberInfo',
data () { data () {
return { return {
} }
}, },
props: { props: {
members: { dataList: {
type: Array, type: Array,
default: () => { default: () => {
return [{ ...Member }] return []
} }
}, },
}, },
components: { components: {
paraMultiSelect, paraSelect, baseSelect
}, },
created () { created () {
}, },
methods: { methods: {
removeMembers (item) {//移除成员
let index = this.members.indexOf(item)
if (index !== -1) {
this.members.splice(index, 1)
}
},
memberToTop (item) {//成员置顶
let index = this.members.indexOf(item)
if (index !== -1) {
this.members.splice(index, 1)
this.members.unshift({ ...item })
}
},
addMembers () {//添加成员
Member.showIndex = this.members.length + 1
this.members.push({ ...Member })
},
memberUp (index) {
let arr = this.members
arr.splice(index - 1, 1, ...arr.splice(index, 1, arr[index - 1]))
},
menberDown (index) {
let arr = this.members
arr.splice(index, 1, ...arr.splice(index + 1, 1, arr[index]))
}
} }
} }
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
::v-deep .table_list {
.ant-col {
padding: 0px 0px;
text-align: left;
}
.ant-form-item-control {
line-height: 4px;
}
.ant-select {
font-size: 12px;
}
.ant-select .ant-select-selection--single {
height: 24px !important;
}
.ant-select .ant-select-selection__rendered {
line-height: 22px !important;
margin-right: 6px !important;
margin-left: 6px !important;
}
.ant-select .ant-select-selection__rendered .ant-form-item-control {
line-height: 26px !important;
}
.ant-col .ant-form-item .ant-col {
padding: 0px;
}
.from-table .row_center .ant-col {
text-align: left !important;
}
.special-pum-select .ant-form-item-control-wrapper {
display: flex;
justify-content: center;
align-content: center;
}
.special-pum-select .ant-form-item-children {
display: block;
}
.special-pum-select .ant-form-item-control {
line-height: 26px;
}
input[type="text"],
input[type="password"],
input[type="number"],
textarea {
box-sizing: border-box;
margin: 0;
padding: 0;
width: 100%;
height: 24px;
padding: 2px 6px;
color: rgba(0, 0, 0, 0.65);
font-size: 12px;
border-radius: 2px;
}
.ant-input {
height: 24px !important;
}
.ant-input-number-input {
height: 24px !important;
}
}
</style> </style>
<template>
<div>
<a-row>
<a-col :span="24">
<div class="tb-title">
<span>项目课颖设置</span>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="1" class="bg-gray">
<div class="special-middle">
<div>序号</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div >课题名称</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div >课题承担单位</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div >所在地</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div >课颖负责人</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div >课题预算总经费</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div >其中:省科技经费</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div>自筹经费</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div>合作单位</div>
</div>
</a-col>
<a-col :span="7" class="bg-gray">
<div class="special-middle">
<div>附件</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in dataList" :key="'projectSubList'+index" type="flex" class="row_center">
<a-col :span="1">
<div class="special-middle">
<div>
{{ index + 1 }}
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
{{ item.projName }}
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
{{ item.undertakingUnit }}
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
{{ item.address }}
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
{{ item.director }}
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
{{ item.totalBudget }}
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
{{ item.govBudget }}
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
{{ item.selfBudget }}
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
{{ item.cooperativeUnits }}
</div>
</div>
</a-col>
<a-col :span="7">
<div class="special-middle">
<div v-if="item.fileName" style="text-align: left;">
<document-view :fileUrl="item.downloadUrl" :fileName="item.fileName" :imageArray="[item.downloadUrl]"></document-view>
</div>
<div v-else></div>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
import documentView from '@/views/components/common/documentView'
export default {
name: "projectSubInfo",
components: {
documentView
},
props: {
dataList: {
type: Array,
default: () => {
return [{ ...ProjectSub }]
}
},
},
data () {
return {
};
},
created () {
},
computed: {
},
methods: {
},
};
</script>
<style scoped lang="less">
.file-description {
display: block;
width: 100%;
line-height: 22px;
padding: 3px 3px 3px 3px;
color: red;
white-space: normal;
word-wrap: break-word;
// text-indent: 1em;
}
.inner_from {
.ant-row-flex:last-child .ant-col {
border-bottom: 0;
}
.ant-row-flex .ant-col:first-child {
border-left: 0;
}
.ant-row-flex {
border-right: 0;
}
}
.special-middle {
.font_s {
margin: 0 6px;
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment