Commit 3cf74ca6 authored by 徐俊's avatar 徐俊
parents 5921bc5f 8125c3f3
<template>
<div>
<a-row>
<a-col :span="24">
<div class="tb-title">
<span>经费预算 <strong>(单位:万元)</strong></span>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>概算科目名称</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>申请专项经费</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 budget" :key="index" type="flex" class="row_center">
<a-col :span="4" style="text-align: left;">
{{item.budgetName}}
</a-col>
<a-col :span="4">
<a-form-model-item v-if="invisibleTotalBudget.includes(index)" :prop="'budget.' + index + '.totalBudget'" :rules="{required: true, message: '*', trigger: 'blur',}">
<a-input-number v-model="item.totalBudget" @change="totalNumberChange(index)" :min="0" :step="0.01" style="width: 80%" />
</a-form-model-item>
<div class="special-middle" v-else>{{parseFloat(item.totalBudget).toFixed(2)}}</div>
</a-col>
<a-col :span="4">
<a-form-model-item v-if="!invisibleApplyFunds.includes(index)" :prop="'budget.' + index + '.applyFunds'" :rules="{required: true, message: '*', trigger: 'blur',}">
<a-input-number v-model="item.applyFunds" @change="outNumberChange(index)" :min="0" :step="0.01" style="width: 80%" />
</a-form-model-item>
<div class="special-middle" v-else>{{parseFloat(item.applyFunds).toFixed(2)}}</div>
</a-col>
<a-col :span="4">
<a-form-model-item v-if="!invisibleSelfFunds.includes(index)" :prop="'budget.' + index + '.selfFunds'" :rules="{required: true, message: '*', trigger: 'blur',}">
<a-input-number v-model="item.selfFunds" @change="outNumberChange(index)" :min="0" :step="0.01" style="width: 80%" />
</a-form-model-item>
<div class="special-middle" v-else>{{parseFloat(item.selfFunds).toFixed(2)}}</div>
</a-col>
<a-col :span="8">
<a-form-model-item :prop="'budget.' + index + '.calculationBasis'">
<a-input v-model="item.calculationBasis" :maxLength="100" style="width: 90%;" />
</a-form-model-item>
</a-col>
</a-row>
</div>
</template>
<script>
// 用法 <budget-edit :budget.sync="formData.budget" />
const Budget = { id: null, budgetName: null, budgetId: null, objectId: null, totalBudget: null, applyFunds: null, selfFunds: null, calculationBasis: null }
export default {
name: "BudgetEidt",
props: {
budget: {
type: Array,
default: () => {
return [{ ...Budget }];
},
},
},
created() {
},
data() {
return {
invisibleTotalBudget: [ 16, 18, 19, 20 ],
invisibleApplyFunds: [ 0, 1, 10, 15, 16, 17, 18, 19, 20 ],
invisibleSelfFunds: [ 0, 1, 10, 15, 16, 17, 18, 19, 20 ],
//一、经费支出
TotalExpenditure: 0,
ApplyExpenditure: 0,
SelfExpenditure: 0,
//(一)经费支出
expenditureTotal: 0,
expenditureApply: 0,
expenditureSelf: 0,
//(二)间接经费
indirectfundTotal: 0,
indirectfundApply: 0,
indirectfundSelf: 0,
//二、经费来源
TotalSource: 0,
//(一)申请专项经费
applySpecialTotal: 0,
//(二)自筹经费来源
selfFundsTotal: 0,
selfFundsApply: 0,
selfFundsSelf: 0,
};
},
methods: {
outNumberChange (index) {
this.budget[index].totalBudget = (parseFloat(this.budget[index].applyFunds) + parseFloat(this.budget[index].selfFunds)).toFixed(2);
this.expenditureCal();
this.indirectfundCal();
this.selfFundsCal();
this.budget[0].totalBudget = (parseFloat(this.expenditureTotal) + parseFloat(this.indirectfundTotal)).toFixed(2);
this.budget[0].applyFunds = (parseFloat(this.expenditureApply) + parseFloat(this.indirectfundApply)).toFixed(2);
this.budget[0].selfFunds = (parseFloat(this.expenditureSelf) + parseFloat(this.indirectfundSelf)).toFixed(2);
this.TotalExpenditure = this.budget[0].totalBudget;
this.ApplyExpenditure = this.budget[0].applyFunds;
this.SelfExpenditure = this.budget[0].selfFunds;
},
//一、经费支出 begin
//(一)经费支出 begin
expenditureCal() {
this.expenditureApplyCal();
this.expenditureSelfCal();
this.expenditureTotalCal();
},
expenditureApplyCal() {
this.budget[1].applyFunds = (parseFloat(this.budget[2].applyFunds) + parseFloat(this.budget[3].applyFunds) + parseFloat(this.budget[4].applyFunds)
+ parseFloat(this.budget[5].applyFunds) + parseFloat(this.budget[6].applyFunds) + parseFloat(this.budget[7].applyFunds)
+ parseFloat(this.budget[8].applyFunds) + parseFloat(this.budget[9].applyFunds)).toFixed(2);
this.expenditureApply = this.budget[1].applyFunds;
},
expenditureSelfCal() {
this.budget[1].selfFunds = (parseFloat(this.budget[2].selfFunds) + parseFloat(this.budget[3].selfFunds) + parseFloat(this.budget[4].selfFunds)
+ parseFloat(this.budget[5].selfFunds) + parseFloat(this.budget[6].selfFunds) + parseFloat(this.budget[7].selfFunds)
+ parseFloat(this.budget[8].selfFunds) + parseFloat(this.budget[9].selfFunds)).toFixed(2);
this.expenditureSelf = this.budget[1].selfFunds;
},
expenditureTotalCal() {
this.budget[1].totalBudget = (parseFloat(this.budget[2].totalBudget) + parseFloat(this.budget[3].totalBudget) + parseFloat(this.budget[4].totalBudget)
+ parseFloat(this.budget[5].totalBudget) + parseFloat(this.budget[6].totalBudget) + parseFloat(this.budget[7].totalBudget)
+ parseFloat(this.budget[8].totalBudget) + parseFloat(this.budget[9].totalBudget)).toFixed(2);
this.expenditureTotal = this.budget[1].totalBudget;
},
//(一)经费支出 end
//(二)间接经费 begin
indirectfundCal() {
this.indirectfundApplyCal();
this.indirectfundSelfCal();
this.indirectfundTotalCal();
},
indirectfundApplyCal() {
this.budget[10].applyFunds = (parseFloat(this.budget[11].applyFunds) + parseFloat(this.budget[12].applyFunds) + parseFloat(this.budget[13].applyFunds)
+ parseFloat(this.budget[14].applyFunds)).toFixed(2);
this.indirectfundApply = this.budget[10].applyFunds;
},
indirectfundSelfCal() {
this.budget[10].selfFunds = (parseFloat(this.budget[11].selfFunds) + parseFloat(this.budget[12].selfFunds) + parseFloat(this.budget[13].selfFunds)
+ parseFloat(this.budget[14].selfFunds)).toFixed(2);
this.indirectfundSelf = this.budget[10].selfFunds;
},
indirectfundTotalCal() {
this.budget[10].totalBudget = (parseFloat(this.budget[11].totalBudget) + parseFloat(this.budget[12].totalBudget) + parseFloat(this.budget[13].totalBudget)
+ parseFloat(this.budget[14].totalBudget)).toFixed(2);
this.indirectfundTotal = this.budget[10].totalBudget;
},
//(二)间接经费 end
//一、经费支出 end
//二、经费来源 begin
//(一)申请专项经费 begin
//(一)申请专项经费 end
//(二)自筹经费来源 begin
selfFundsCal() {
this.selfFundsApplyCal();
this.selfFundsSelfCal();
this.selfFundsTotalCal();
},
selfFundsApplyCal() {
this.budget[17].applyFunds = (parseFloat(this.budget[18].applyFunds) + parseFloat(this.budget[19].applyFunds) + parseFloat(this.budget[20].applyFunds)).toFixed(2);
this.selfFundsApply = this.budget[17].applyFunds;
},
selfFundsSelfCal() {
this.budget[17].selfFunds = (parseFloat(this.budget[18].selfFunds) + parseFloat(this.budget[19].selfFunds) + parseFloat(this.budget[20].selfFunds)).toFixed(2);
this.selfFundsSelf = this.budget[17].selfFunds;
},
selfFundsTotalCal() {
this.budget[17].totalBudget = (parseFloat(this.budget[18].totalBudget) + parseFloat(this.budget[19].totalBudget) + parseFloat(this.budget[20].totalBudget)).toFixed(2);
this.selfFundsTotal = this.budget[17].totalBudget;
},
//(二)自筹经费来源 end
//二、经费来源 end
totalNumberChange() {
//(一)申请专项经费
this.applySpecialTotal = this.budget[16].totalBudget;
//(二)自筹经费来源
this.selfFundsCal();
this.budget[15].totalBudget = (parseFloat(this.selfFundsTotal) + parseFloat(this.applySpecialTotal)).toFixed(2);
this.TotalSource = this.budget[15].totalBudget;
},
},
computed: {
},
};
</script>
\ No newline at end of file
<template>
<div>
<a-row>
<a-col :span="24">
<div class="tb-title">
<span>经费预算 <strong>(单位:万元)</strong></span>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="4" 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="4" 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 budget" :key="index" type="flex" class="row_center">
<a-col :span="4" style="text-align: left;">
{{item.budgetName}}
</a-col>
<a-col :span="4">
<div class="special-middle">{{parseFloat(item.totalBudget).toFixed(2)}}</div>
</a-col>
<a-col :span="4">
<div class="special-middle">{{parseFloat(item.applyFunds).toFixed(2)}}</div>
</a-col>
<a-col :span="4">
<div class="special-middle">{{parseFloat(item.selfFunds).toFixed(2)}}</div>
</a-col>
<a-col :span="8">
<div class="special-middle">{{item.calculationBasis}}</div>
</a-col>
</a-row>
</div>
</template>
<script>
const Budget = { id: null, budgetName: null, budgetId: null, objectId: null, totalBudget: null, applyFunds: null, selfFunds: null, calculationBasis: null }
export default {
name: "budgetInfo",
props: {
budget: {
type: Array,
default: () => {
return [{ ...Budget }];
},
},
},
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="22" class="bg-gray">
<div class="special-middle">
<div>单位名称</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in cooperativeUnits" :key="'cooperative'+index" type="flex" class="row_center">
<a-col :span="2">
<div class="special-middle">
<div>
{{ index + 1 }}
</div>
</div>
</a-col>
<a-col :span="22">
<div class="special-middle">
<div>{{ item.unitName }}</div>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
//用法 <cooperative-units :cooperativeUnits.sync="formData.cooperativeUnits" />
const Model = { id: null, unitName: null }
export default {
name: 'cooperativeInfo',
data () {
return {
list: []
}
},
props: {
cooperativeUnits: {
type: Array,
default: () => {
return [{ ...Model }]
}
},
},
components: {
},
created () {
},
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="18" 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>操作</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in cooperativeUnits" :key="'cooperativeUnits'+index" type="flex" class="row_center">
<a-col :span="2">
<div class="special-middle">
<div>
{{ index + 1 }}
</div>
</div>
</a-col>
<a-col :span="18">
<div class="special-middle">
<div>
<a-form-model-item :prop="'cooperativeUnits.' + index + '.unitName'" :rules="{ required: true,message: '*',trigger: 'blur',}">
<a-input v-model="item.unitName" :maxLength="20" placeholder="单位名称" style="width: 80%" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<a-button icon="arrow-up" type="primary" shape="circle" size="small" :disabled="index == 0" @click="moveUp(index)"></a-button>
<a-button icon="arrow-down" type="primary" shape="circle" size="small" style="margin-left:3px" :disabled="cooperativeUnits.length == index + 1" @click="moveDown(index)"></a-button>
<a-popconfirm title="确定要删除吗?" ok-text="确定" cancel-text="取消" @confirm="removeArray(item)">
<a-button type="link" size="small">[删除]</a-button>
</a-popconfirm>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="24" style="text-align: center;">
<div class="special-middle">
<a-button type="dashed" style="width: 50%" @click="addArray">
<a-icon type="plus" /> 添加
</a-button>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
//用法 <cooperative-units :cooperativeUnits.sync="formData.cooperativeUnits" />
const Model = { id: null, unitName: null }
export default {
name: 'cooperativeUnits',
data () {
return {
list: []
}
},
props: {
cooperativeUnits: {
type: Array,
default: () => {
return [{ ...Model }]
}
},
},
components: {
},
created () {
},
methods: {
moveToTop (item) {//成员置顶
let index = this.cooperativeUnits.indexOf(item)
if (index !== -1) {
this.cooperativeUnits.splice(index, 1)
this.cooperativeUnits.unshift({ ...item })
}
},
moveUp (index) {
let arr = this.cooperativeUnits
arr.splice(index - 1, 1, ...arr.splice(index, 1, arr[index - 1]))
},
moveDown (index) {
let arr = this.cooperativeUnits
arr.splice(index, 1, ...arr.splice(index + 1, 1, arr[index]))
},
addArray () {//添加成员
this.cooperativeUnits.push({ ...Model })
},
removeArray (item) {//移除成员
let index = this.cooperativeUnits.indexOf(item)
if (index !== -1) {
this.cooperativeUnits.splice(index, 1)
}
},
},
}
</script>
<template>
<div>
<a-row>
<a-col :span="24">
<div class="tb-title">
<span>附件上传</span>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="24" class="bg-gray">
<div class="special-middle" style="font-weight: bold;">
1.科研诚信承诺书(必须提供)<span class="required"></span><br />
2.承诺书(必须提供)<span class="required"></span><br />
3.医学研究伦理审查证明<br />
4.多家单位联合申报的必须提供牵头单位与所有参与单位签署的联合申报协议(协议中应包含项目名称、课题设置、专项经费分配、知识产权归属、项目经费筹集与使等内容,协议经单位盖章、项目及所有课题负责人签字有效)<br />
5.相关查新报告、前期科研成果、专利等佐证材料(选择提供)<br />
6.与项目相关的其它证明材料或文件等(选择提供)<br />
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="2">
<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-col :span="10" 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-row>
<a-row v-for="(item, index) in fileList" :key="'fileList' + index" type="flex">
<a-col :span="2" style="text-align: center;">
{{ index + 1 }}
</a-col>
<a-col :span="8">
<a-form-model-item :prop="'fileList.' + index + '.fileExplain'" :rules="{required: true, message: '*',trigger: 'blur',}">
<a-input v-model="item.fileExplain" :maxLength="100" style="width: 80%" :disabled="item.required" />
<!-- <span v-if="mustAttachment.includes(index)" class="required"></span> -->
</a-form-model-item>
</a-col>
<a-col :span="10">
<div class="special-middle">
<div v-if="item.downloadUrl" class="file-box">
<div>
<a-icon type="file" style="margin-right: 8px" />
<span class="hover-pointer" @click="downloadfile(item)">{{item.fileName}}</span>
</div>
<a-icon type="delete" class="hover-pointer d-icon" @click="deletefile(item, index)" />
</div>
<div v-else>
<a-form-model-item :prop="'fileList.' + index + '.downloadUrl'" :rules="{required: true, message: '请上传附件',trigger: 'blur',}">
<input type="file" :ref="'fileElem' + index" class="visually-hidden" @change="handleFiles(item, index)" />
<a-button @click="fileSelect(item, index)"><a-icon type="upload" />选择文件</a-button>
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div v-if="!item.required">
<a-popconfirm title="确定要删除吗?" ok-text="确定" cancel-text="取消" @confirm="removefileList(item)">
<a-button type="link" size="small">删除</a-button>
</a-popconfirm>
</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="24" style="text-align: center">
<div class="special-middle">
<div>
<a-button type="dashed" style="width: 50%" @click="addfileList()">
<a-icon type="plus" /> 添加
</a-button>
</div>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
const File = { fileName: "", downloadUrl: "", fileExplain: "", downloadId: "" };
export default {
name: "fileEdit",
props: {
fileList: {
type: Array,
default: () => {
return [{ ...File }];
},
},
},
created() {},
data() {
return {
mustAttachment: [ 0, 1 ],
};
},
methods: {
downloadfile() {
},
deletefile (item, index) {
this.$api.base.deletefile({ id: item.downloadId }).then(({ data = {} }) => {
if (data) {
item.fileName = ''
item.downloadUrl = ''
item.downloadId = ''
}
}).catch(() => {
this.$message.error('删除失败')
})
},
uploadHandle (file, fileName) {
let formData = new FormData()
formData.append('file', file)
formData.append('fileName', fileName)
return formData
},
handleFiles(item, index) {
let fileElem = this.$refs['fileElem' + index][0]
let files = fileElem.files
if (files.length <= 0) {
this.$message.error('未选中文件,请尝试重新选择')
return
}
if (!this.fileCheck(files[0]))
return
this.$api.base.asyncUpload(this.uploadHandle(files[0], files[0].name)).then(({ data = {} }) => {
if (data) {
item.fileName = files[0].name
item.downloadUrl = '/' + files[0].name
item.downloadId = data.id
} else
this.$message.error('上传失败')
}).catch(() => {
this.$message.error('上传失败')
})
},
fileSelect (item, index) {
let fileElem = this.$refs['fileElem' + index][0]
if (fileElem) {
fileElem.click()
}
},
fileCheck (file) {
//判断是否小于1M
let isLtSize = file.size < 1024 * 1024 * 15;
if (!isLtSize) {
this.$message.error('文件大小不能超过15M!');
return false
}
return true
},
// 添加附件
addfileList () {
this.fileList.push(Object.assign({ ...File }, { fileExplain: '' }))
},
// 删除附件
removefileList (item) {
let index = this.fileList.indexOf(item)
if (index !== -1) {
this.fileList.splice(index, 1)
}
},
},
};
</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" 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>项目经费构成表<strong>(单位:万元)</strong></span>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">年度</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div class="required">总额</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">自治区公立医院专项资金</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">自筹资金</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">盟市财政资金</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">其他渠道资金</div>
</div>
</a-col>
<a-col :span="3" 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>操作</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in fundCompositions" :key="'projFundComposition' + index" type="flex" class="row_center">
<a-col :span="3">
<div class="special-middle">
<a-form-model-item :prop="'fundCompositions.' + index + '.year'" :rules="{ required: true, message: '*' }">
<a-input-number v-model="item.year" :min="0" :step="1" style="width: 80%" />
</a-form-model-item>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<a-form-model-item :prop="'fundCompositions.' + index + '.totalFund'" :rules="{ required: true, message: '*' }">
<a-input-number v-model="item.totalFund" :min="0" :step="0.01" style="width: 80%" />
</a-form-model-item>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<a-form-model-item :prop="'fundCompositions.' + index + '.specialFund'" :rules="{ required: true, message: '*' }">
<a-input-number v-model="item.specialFund" :min="0" :step="0.01" style="width: 80%" />
</a-form-model-item>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<a-form-model-item :prop="'fundCompositions.' + index + '.selfFund'" :rules="{ required: true, message: '*' }">
<a-input-number v-model="item.selfFund" :min="0" :step="0.01" style="width: 80%" />
</a-form-model-item>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<a-form-model-item :prop="'fundCompositions.' + index + '.cityFund'" :rules="{ required: true, message: '*' }">
<a-input-number v-model="item.cityFund" :min="0" :step="0.01" style="width: 80%" />
</a-form-model-item>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<a-form-model-item :prop="'fundCompositions.' + index + '.otherFund'" :rules="{ required: true, message: '*' }">
<a-input-number v-model="item.otherFund" :min="0" :step="0.01" style="width: 80%" />
</a-form-model-item>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<a-form-model-item :prop="'fundCompositions.' + index + '.remark'" :rules="{ required: true, message: '*' }">
<a-input v-model="item.remark" :maxLength="100" style="width: 80%;" />
</a-form-model-item>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<a-button icon="arrow-up" type="primary" shape="circle" size="small" :disabled="index == 0" @click="moveUp(index)"></a-button>
<a-button icon="arrow-down" type="primary" shape="circle" size="small" style="margin-left:3px" :disabled="fundCompositions.length == index + 1" @click="moveDown(index)"></a-button>
<a-popconfirm title="确定要删除吗?" ok-text="确定" cancel-text="取消" @confirm="removeArray(item)">
<a-button type="link" size="small">[删除]</a-button>
</a-popconfirm>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="24" style="text-align: center;">
<div class="special-middle">
<a-button type="dashed" style="width: 50%" @click="addArray">
<a-icon type="plus" /> 添加
</a-button>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
//用法 <proj-fund-composition :fundCompositions.sync="formData.fundCompositions" />
const Model = { year: null, totalFund: null, specialFund: null, selfFund: null, cityFund: null, otherFund: null, remark: null }
export default {
name: 'projFundComposition',
data () {
return {
}
},
props: {
fundCompositions: {
type: Array,
default: () => {
return []
}
},
},
components: {
},
created () {
},
methods: {
moveToTop (item) {//成员置顶
let index = this.fundCompositions.indexOf(item)
if (index !== -1) {
this.fundCompositions.splice(index, 1)
this.fundCompositions.unshift({ ...item })
}
},
moveUp (index) {
let arr = this.fundCompositions
arr.splice(index - 1, 1, ...arr.splice(index, 1, arr[index - 1]))
},
moveDown (index) {
let arr = this.fundCompositions
arr.splice(index, 1, ...arr.splice(index + 1, 1, arr[index]))
},
addArray () {//添加成员
this.fundCompositions.push({ ...Model })
},
removeArray (item) {//移除成员
let index = this.fundCompositions.indexOf(item)
if (index !== -1) {
this.fundCompositions.splice(index, 1)
}
},
}
}
</script>
<template>
<div>
<a-row>
<a-col :span="24">
<div class="tb-title">
<span>项目经费构成表<strong>(单位:万元)</strong></span>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="3" 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="3" class="bg-gray">
<div class="special-middle">
<div >自治区公立医院专项资金</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div >自筹资金</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div >盟市财政资金</div>
</div>
</a-col>
<a-col :span="3" 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 fundCompositions" :key="'projFundComposition' + index" type="flex" class="row_center">
<a-col :span="3">
<div class="special-middle">
<div>{{ item.year }}</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>{{ item.totalFund }}</div>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<div>{{ item.specialFund }}</div>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<div>{{ item.selfFund }}</div>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<div>{{ item.cityFund }}</div>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<div>{{ item.otherFund }}</div>
</div>
</a-col>
<a-col :span="7">
<div class="special-middle">
<div>{{ item.remark }}</div>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
//用法 <proj-fund-composition :fundCompositions.sync="formData.fundCompositions" />
const Model = { year: null, totalFund: null, specialFund: null, selfFund: null, cityFund: null, otherFund: null, remark: null }
export default {
name: 'projFundCompositionInfo',
data () {
return {
}
},
props: {
fundCompositions: {
type: Array,
default: () => {
return []
}
},
},
components: {
},
created () {
},
methods: {
}
}
</script>
\ No newline at end of file
<template>
<div>
<a-row>
<a-col :span="24">
<div class="tb-title">
<span>项目组成员 <strong>(注:第一行请填写项目负责人)</strong></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 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-col :span="2" class="bg-gray">
<div class="special-middle">
<div class="required">学历</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div class="required">学位</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="2" class="bg-gray">
<div class="special-middle">
<div class="required">所在单位</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div>操作</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in members" :key="'members'+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>
<a-form-model-item :prop="'members.' + index + '.name'" :rules="{required: true,message: '*',trigger: 'blur',}">
<a-input v-model="item.name" :maxLength="20" placeholder="姓名" style="width: 90%" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>
<a-form-model-item :prop="'members.' + index + '.certId'" :rules="[{required: true,message: '*',trigger: 'blur',},{ required: true, validator: checkIdentitytionId, trigger: 'blur' }]">
<a-input v-model="item.certId" :maxLength="20" placeholder="身份证号" style="width: 90%" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>
<a-form-model-item :prop="'members.' + index + '.title'" :rules="{required: true, message: '*',trigger: 'change',}">
<para-multi-select v-model="item.title" :width="100" :typeId="7" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
<a-form-model-item :prop="'members.' + index + '.education'" :rules="{required: true, message: '*',trigger: 'change',}">
<para-select v-model="item.education" :typeId="8" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
<a-form-model-item :prop="'members.' + index + '.degree'" :rules="{required: true, message: '*',trigger: 'change',}">
<para-select v-model="item.degree" :typeId="9" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>
<a-form-model-item :prop="'members.' + index + '.spec'" :rules="{required: true,message: '*',trigger: 'change',}">
<cascader-select v-model="item.spec" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
<a-form-model-item :prop="'members.' + index + '.workUnit'" :rules="{required: true,message: '*',trigger: 'blur',}">
<a-input v-model="item.workUnit" :maxLength="50" placeholder="工作单位" style="width: 90%" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>
<a-button icon="arrow-up" type="primary" shape="circle" size="small" :disabled="index == 0" @click="moveUp(index)"></a-button>
<a-button icon="arrow-down" type="primary" shape="circle" size="small" style="margin-left:3px" :disabled="members.length == index + 1" @click="moveDown(index)"></a-button>
<a-popconfirm title="确定要删除吗?" ok-text="确定" cancel-text="取消" @confirm="removeArray(item)">
<a-button type="link" size="small">[删除]</a-button>
</a-popconfirm>
</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="24" style="text-align: center;">
<div class="special-middle">
<a-button type="dashed" style="width: 50%" @click="addArray">
<a-icon type="plus" /> 添加
</a-button>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
//用法 <proj-group-member :members.sync="formData.members" />
import { checkIdentitytionId } from "@/views/utils/common"
import cascaderSelect from '@/views/components/common/cascaderSelect'
const Model = { name: null, certId: null, title: null, education: null, degree: null, spec: null, workUnit: null }
export default {
name: 'ProjGroupMember',
components: {
cascaderSelect
},
data () {
return {
}
},
props: {
members: {
type: Array,
default: () => {
return []
}
},
},
created () {
},
methods: {
checkIdentitytionId,
moveToTop (item) {//成员置顶
let index = this.members.indexOf(item)
if (index !== -1) {
this.members.splice(index, 1)
this.members.unshift({ ...item })
}
},
moveUp (index) {
let arr = this.members
arr.splice(index - 1, 1, ...arr.splice(index, 1, arr[index - 1]))
},
moveDown (index) {
let arr = this.members
arr.splice(index, 1, ...arr.splice(index + 1, 1, arr[index]))
},
addArray () {//添加成员
this.members.push({ ...Model })
},
removeArray (item) {//移除成员
let index = this.members.indexOf(item)
if (index !== -1) {
this.members.splice(index, 1)
}
},
}
}
</script>
<template>
<div>
<a-row>
<a-col :span="24">
<div class="tb-title">
<span>项目组成员 <strong>(注:第一行请填写项目负责人)</strong></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="4" 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="5" 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-row>
<a-row v-for="(item, index) in members" :key="'members'+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.name }}</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>{{ item.certId }}</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>{{ item.titleName }}</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>{{ item.educationName }}</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>{{ item.degreeName }}</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>{{ item.specName }}</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>{{ item.workUnit }}</div>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
//用法 <proj-group-member :members.sync="formData.members" />
const Model = { name: null, certId: null, title: null, education: null, degree: null, spec: null, workUnit: null }
export default {
name: 'ProjGroupMemberInfo',
data () {
return {
}
},
props: {
members: {
type: Array,
default: () => {
return []
}
},
},
components: {
},
created () {
},
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="4" class="bg-gray">
<div class="special-middle">
<div class="required">完成时限</div>
</div>
</a-col>
<a-col :span="8" class="bg-gray">
<div class="special-middle">
<div class="required">进度安排</div>
</div>
</a-col>
<a-col :span="8" 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>操作</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in stageGoals" :key="'stageGoals' + index" type="flex" class="row_center">
<a-col :span="4">
<div class="special-middle">
<a-form-model-item :prop="'stageGoals.' + index + '.startTime'" :rules="{ required: true, message: '*' }" style="flex-basis: 45%;">
<a-date-picker placeholder="请选择开始日期" format="YYYY-MM-DD" valueFormat="YYYY-MM-DD HH:mm:ss" v-model="item.startTime" style="width: 140px" />
</a-form-model-item>
<a-form-model-item :prop="'stageGoals.' + index + '.endTime'" :rules="{ required: true, message: '*' }" style="flex-basis: 45%;">
<a-date-picker placeholder="请选择结束日期" format="YYYY-MM-DD" valueFormat="YYYY-MM-DD HH:mm:ss" v-model="item.endTime" style="width: 140px" />
</a-form-model-item>
</div>
</a-col>
<a-col :span="8">
<a-form-model-item :prop="'stageGoals.' + index + '.contentInfo'" :rules="{ required: true, message: '*' }">
<a-textarea v-model="item.contentInfo" placeholder="项目阶段实施内容及目标" :maxLength="500" style="width: 90%;height: 80px;margin-top: 12px;" />
</a-form-model-item>
</a-col>
<a-col :span="8">
<a-form-model-item :prop="'stageGoals.' + index + '.target'" :rules="{ required: true, message: '*' }">
<a-textarea v-model="item.target" placeholder="项目阶段实施内容及目标" :maxLength="500" style="width: 90%;height: 80px;margin-top: 12px;" />
</a-form-model-item>
</a-col>
<a-col :span="4">
<div class="special-middle">
<a-button icon="arrow-up" type="primary" shape="circle" size="small" :disabled="index == 0" @click="moveUp(index)"></a-button>
<a-button icon="arrow-down" type="primary" shape="circle" size="small" style="margin-left:3px" :disabled="stageGoals.length == index + 1" @click="moveDown(index)"></a-button>
<a-popconfirm title="确定要删除吗?" ok-text="确定" cancel-text="取消" @confirm="removeArray(item)">
<a-button type="link" size="small">[删除]</a-button>
</a-popconfirm>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="24" style="text-align: center;">
<div class="special-middle">
<a-button type="dashed" style="width: 50%" @click="addArray">
<a-icon type="plus" /> 添加
</a-button>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
//用法 <proj-stage-goals :stageGoals.sync="formData.stageGoals" />
const Model = { startTime: null, endTime: null, contentInfo: null, target: null }
export default {
name: 'projStageGoals',
data () {
return {
}
},
props: {
stageGoals: {
type: Array,
default: () => {
return []
}
},
},
components: {
},
created () {
},
methods: {
moveToTop (item) {//成员置顶
let index = this.stageGoals.indexOf(item)
if (index !== -1) {
this.stageGoals.splice(index, 1)
this.stageGoals.unshift({ ...item })
}
},
moveUp (index) {
let arr = this.stageGoals
arr.splice(index - 1, 1, ...arr.splice(index, 1, arr[index - 1]))
},
moveDown (index) {
let arr = this.stageGoals
arr.splice(index, 1, ...arr.splice(index + 1, 1, arr[index]))
},
addArray () {//添加成员
this.stageGoals.push({ ...Model })
},
removeArray (item) {//移除成员
let index = this.stageGoals.indexOf(item)
if (index !== -1) {
this.stageGoals.splice(index, 1)
}
},
}
}
</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="8" 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-col :span="8" class="bg-gray">
<div class="special-middle">
<div>阶段目标</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in stageGoals" :key="'stageGoals' + index" type="flex" class="row_center">
<a-col :span="8">
<div class="special-middle">
{{ moment(item.startTime).format("YYYY-MM-DD HH:mm:ss") }}{{ moment(item.endTime).format("YYYY-MM-DD HH:mm:ss") }}
</div>
</a-col>
<a-col :span="8">
{{ item.contentInfo }}
</a-col>
<a-col :span="8">
{{ item.target }}
</a-col>
</a-row>
</div>
</template>
<script>
import moment from "moment";
export default {
name: "projStageGoalsInfo",
props: {
stageGoals: {
type: Array,
default: () => {
return []
}
},
},
data() {
return {};
},
methods: {
moment,
}
};
</script>
\ No newline at end of file
...@@ -157,7 +157,7 @@ ...@@ -157,7 +157,7 @@
<div class="special-middle"> <div class="special-middle">
<div> <div>
<a-form-model-item prop="address"> <a-form-model-item prop="address">
<a-input v-model="formData.address" :maxLength="100" style="width: 80%;" /> <a-input v-model="formData.address" placeholder="个人通讯地址(限50字)" :maxLength="50" style="width: 80%;" />
</a-form-model-item> </a-form-model-item>
</div> </div>
</div> </div>
...@@ -189,7 +189,7 @@ ...@@ -189,7 +189,7 @@
<div class="special-middle"> <div class="special-middle">
<div> <div>
<a-form-model-item prop="mainResearchAreas"> <a-form-model-item prop="mainResearchAreas">
<a-textarea placeholder="主要研究领域" v-model="formData.mainResearchAreas" :maxLength="300" style="width: 80%; height: 160px; margin-top: 12px" /> <a-textarea placeholder="主要研究领域(限500字)" v-model="formData.mainResearchAreas" :maxLength="500" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item> </a-form-model-item>
</div> </div>
</div> </div>
...@@ -229,7 +229,7 @@ ...@@ -229,7 +229,7 @@
<div class="special-middle"> <div class="special-middle">
<div> <div>
<a-form-model-item prop="unitLinkName"> <a-form-model-item prop="unitLinkName">
<a-input placeholder="联系人" v-model="formData.unitLinkName" :maxLength="100" style="width:80%" /> <a-input placeholder="联系人(限20字)" v-model="formData.unitLinkName" :maxLength="20" style="width:80%" />
</a-form-model-item> </a-form-model-item>
</div> </div>
</div> </div>
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
<div class="special-middle"> <div class="special-middle">
<div> <div>
<a-form-model-item prop="unitLinkMobile"> <a-form-model-item prop="unitLinkMobile">
<a-input placeholder="电话" v-model="formData.unitLinkMobile" :maxLength="100" style="width:80%" /> <a-input placeholder="电话(限20字)" v-model="formData.unitLinkMobile" :maxLength="20" style="width:80%" />
</a-form-model-item> </a-form-model-item>
</div> </div>
</div> </div>
...@@ -259,7 +259,7 @@ ...@@ -259,7 +259,7 @@
<div class="special-middle"> <div class="special-middle">
<div> <div>
<a-form-model-item prop="unitLinkEmail"> <a-form-model-item prop="unitLinkEmail">
<a-input placeholder="电子信箱" v-model="formData.unitLinkEmail" :maxLength="100" style="width:80%" /> <a-input placeholder="电子信箱(限50字)" v-model="formData.unitLinkEmail" :maxLength="50" style="width:80%" />
</a-form-model-item> </a-form-model-item>
</div> </div>
</div> </div>
...@@ -273,7 +273,7 @@ ...@@ -273,7 +273,7 @@
<div class="special-middle"> <div class="special-middle">
<div> <div>
<a-form-model-item prop="unitLinkFax"> <a-form-model-item prop="unitLinkFax">
<a-input placeholder="传真" v-model="formData.unitLinkFax" :maxLength="100" style="width:80%" /> <a-input placeholder="传真(限20字)" v-model="formData.unitLinkFax" :maxLength="20" style="width:80%" />
</a-form-model-item> </a-form-model-item>
</div> </div>
</div> </div>
...@@ -298,7 +298,7 @@ ...@@ -298,7 +298,7 @@
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<a-form-model-item prop="projName"> <a-form-model-item prop="projName">
<a-input placeholder="项目名称" v-model="formData.projName" :maxLength="100" style="width: 80%" @change="projNameChange" /> <a-input placeholder="项目名称(限100字)" v-model="formData.projName" :maxLength="100" style="width: 80%" @change="projNameChange" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
...@@ -315,28 +315,6 @@ ...@@ -315,28 +315,6 @@
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">选题范围</div>
</div>
</a-col>
<a-col :span="8">
<a-form-model-item prop="subjectScope">
<a-input placeholder="选题范围" v-model="formData.subjectScope" :maxLength="100" style="width: 80%" />
</a-form-model-item>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">项目类别</div>
</div>
</a-col>
<a-col :span="8">
<a-form-model-item prop="projClass">
<a-input placeholder="项目类别" v-model="formData.projClass" :maxLength="100" style="width: 80%" />
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex"> <a-row type="flex">
<a-col :span="4" class="bg-gray"> <a-col :span="4" class="bg-gray">
<div class="special-middle"> <div class="special-middle">
...@@ -345,7 +323,7 @@ ...@@ -345,7 +323,7 @@
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<a-form-model-item prop="remark"> <a-form-model-item prop="remark">
<a-input placeholder="附注说明" v-model="formData.remark" :maxLength="300" style="width: 80%" /> <a-input placeholder="附注说明(限300字)" v-model="formData.remark" :maxLength="300" style="width: 80%" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
...@@ -371,25 +349,13 @@ ...@@ -371,25 +349,13 @@
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row type="flex"> <a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">项目总经费(万元)</div>
</div>
</a-col>
<a-col :span="8">
<a-form-model-item prop="totalFunding">
<a-input-number v-model="formData.totalFunding" @change="totalFundingChange" :min="0" :step="0.01" style="width: 100px" />
<span> 单位:万元</span>
</a-form-model-item>
</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="8"> <a-col :span="20">
<a-form-model-item prop="govFunding"> <a-form-model-item prop="govFunding">
<a-input-number v-model="formData.govFunding" @change="govFundingChange" :min="0" :step="0.01" style="width: 100px" /> <a-input-number v-model="formData.govFunding" @change="govFundingChange" :min="0" :step="0.01" style="width: 100px" />
<span> 单位:万元</span> <span> 单位:万元</span>
...@@ -404,7 +370,7 @@ ...@@ -404,7 +370,7 @@
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<a-form-model-item prop="projAbstract"> <a-form-model-item prop="projAbstract">
<a-textarea placeholder="项目摘要" v-model="formData.projAbstract" :maxLength="400" style="width: 80%; height: 160px; margin-top: 12px" /> <a-textarea placeholder="项目摘要(限400字)" v-model="formData.projAbstract" :maxLength="400" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
...@@ -416,7 +382,7 @@ ...@@ -416,7 +382,7 @@
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<a-form-model-item prop="projKeywords"> <a-form-model-item prop="projKeywords">
<a-input placeholder="关键词" v-model="formData.projKeywords" :maxLength="200" style="width: 80%" /> <a-input placeholder="关键词(限100字)" v-model="formData.projKeywords" :maxLength="100" style="width: 80%" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
...@@ -485,7 +451,7 @@ ...@@ -485,7 +451,7 @@
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<a-form-model-item prop="researchContent"> <a-form-model-item prop="researchContent">
<a-textarea placeholder="项目实施目标" v-model="formData.researchContent" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" /> <a-textarea placeholder="项目实施目标(限10000字)" v-model="formData.researchContent" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
...@@ -504,7 +470,7 @@ ...@@ -504,7 +470,7 @@
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<a-form-model-item prop="technologyTarget"> <a-form-model-item prop="technologyTarget">
<a-textarea placeholder="主要技术指标" v-model="formData.technologyTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" /> <a-textarea placeholder="主要技术指标(限10000字)" v-model="formData.technologyTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
...@@ -516,7 +482,7 @@ ...@@ -516,7 +482,7 @@
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<a-form-model-item prop="economyTarget"> <a-form-model-item prop="economyTarget">
<a-textarea placeholder="主要经济指标" v-model="formData.economyTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" /> <a-textarea placeholder="主要经济指标(限10000字)" v-model="formData.economyTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
...@@ -528,7 +494,7 @@ ...@@ -528,7 +494,7 @@
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<a-form-model-item prop="achievementTarget"> <a-form-model-item prop="achievementTarget">
<a-textarea placeholder="项目实施中形成的示范基地、中试线、生产线及其规模等" v-model="formData.achievementTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" /> <a-textarea placeholder="项目实施中形成的示范基地、中试线、生产线及其规模等(限10000字)" v-model="formData.achievementTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
...@@ -540,7 +506,7 @@ ...@@ -540,7 +506,7 @@
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<a-form-model-item prop="technologyReportsTarget"> <a-form-model-item prop="technologyReportsTarget">
<a-textarea placeholder="科技报告考核指标" v-model="formData.technologyReportsTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" /> <a-textarea placeholder="科技报告考核指标(限10000字)" v-model="formData.technologyReportsTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
...@@ -552,7 +518,7 @@ ...@@ -552,7 +518,7 @@
</a-col> </a-col>
<a-col :span="20"> <a-col :span="20">
<a-form-model-item prop="otherTarget"> <a-form-model-item prop="otherTarget">
<a-textarea placeholder="其他应考核的指标" v-model="formData.otherTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" /> <a-textarea placeholder="其他应考核的指标(限10000字)" v-model="formData.otherTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
......
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