<template>
|
<win-sm :title="setting.title" @close="close">
|
<el-form ref="dataForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="110px">
|
<el-form-item label="项目分类" prop="projectCategoryId">
|
<el-cascader
|
:options="categoryOptions"
|
:show-all-levels="false"
|
:props="{ value: 'id',label:'label' }"
|
v-model="formData.projectCategoryId"
|
style="width: 100%"></el-cascader>
|
</el-form-item>
|
<el-form-item label="计划类型" prop="planTypeCode">
|
<el-cascader
|
:options="planTypeOptions"
|
:show-all-levels="false"
|
:props="{ value: 'dict_code',label:'dict_label' }"
|
v-model="formData.planTypeCode"
|
@change="getTemp()"
|
style="width: 100%"></el-cascader>
|
</el-form-item>
|
<el-form-item label="计划模板" prop="tempProjectId">
|
<el-select v-model="formData.tempProjectId" placeholder="" style="width: 100%">
|
<el-option
|
v-for="item in tempOptions"
|
:key="item.id"
|
:label="item.projectName"
|
:value="item.id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="项目名称" prop="projectName">
|
<el-input v-model="formData.projectName" maxlength="50"></el-input>
|
</el-form-item>
|
<el-form-item label="项目编号" prop="projectCode">
|
<el-input v-model="formData.projectCode"></el-input>
|
</el-form-item>
|
<el-form-item label="直营单位" prop="directUnitCode">
|
<el-cascader
|
:options="orgZsOptions"
|
:props="{ value: 'dict_code',label:'dict_label' }"
|
v-model="formData.directUnitCode"
|
style="width: 100%"></el-cascader>
|
</el-form-item>
|
<el-form-item label="建设单位" prop="buildOrgId">
|
<el-cascader
|
:options="buildOrgOptions"
|
:props="{ value: 'id',label:'label', checkStrictly: true }"
|
v-model="formData.buildOrgId"
|
style="width: 100%"
|
@change="changeBuildOrg"></el-cascader>
|
</el-form-item>
|
<el-form-item label="项目成员" prop="projectUsersName">
|
<div style="position: relative;">
|
<div @click="chooseUsers" class="mask-div"></div>
|
<el-input v-model="formData.projectUsersName" readonly></el-input>
|
</div>
|
</el-form-item>
|
<el-form-item label="项目地址" prop="addr">
|
<div class="f-r">
|
<el-input v-model="formData.addr"></el-input>
|
<el-button size="small" type="primary" style="margin-left: 15px">坐标拾取</el-button>
|
</div>
|
</el-form-item>
|
<div class="f-r f-r-between">
|
<el-form-item label="建设起止年限" prop="buildYearStart" style="width: 49%">
|
<el-input v-model="formData.buildYearStart" type="number">
|
<template slot="append">年</template>
|
</el-input>
|
</el-form-item>
|
<div class="font-14 color-333 pos-year">至</div>
|
<el-form-item label="" prop="buildYearEnd" style="width: 49%">
|
<el-input v-model="formData.buildYearEnd" type="number">
|
<template slot="append">年</template>
|
</el-input>
|
</el-form-item>
|
</div>
|
<el-form-item label="项目批次" prop="projectBatchCode">
|
<el-select v-model="formData.projectBatchCode" placeholder="" style="width: 100%">
|
<el-option
|
v-for="item in batchOptions"
|
:label="item.dict_label"
|
:value="item.dict_code">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="批复时间" prop="approvalDate">
|
<el-date-picker
|
v-model="formData.approvalDate"
|
type="date"
|
placeholder=""
|
value-format="yyyy-MM-dd"
|
format="yyyy-MM-dd"
|
style="width: 100%">
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item label="总投资" prop="totalInvest">
|
<el-input v-model="formData.totalInvest" type="number" >
|
<template slot="append">万元</template>
|
</el-input>
|
</el-form-item>
|
<el-form-item label="已下达投资" prop="totalReleaseInvest">
|
<el-input v-model="formData.totalReleaseInvest" type="number">
|
<template slot="append">万元</template>
|
</el-input>
|
</el-form-item>
|
<el-form-item label="投资专业" prop="investMajorCode">
|
<el-select v-model="formData.investMajorCode" placeholder="" style="width: 100%">
|
<el-option
|
v-for="item in investOptions"
|
:key="item.dict_code"
|
:label="item.dict_label"
|
:value="item.dict_code">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="主要建设内容" prop="detail">
|
<el-input
|
v-model="formData.detail"
|
type="textarea"
|
:rows="2"
|
maxlength="120"
|
show-word-limit
|
/>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" align="center" class="dialog-footer">
|
<my-button name="取消" site="form" @click="close"/>
|
<my-button name="提交" site="form" @click="save"/>
|
</div>
|
<chooseUser v-if="userShow" :projectManager="projectManager" :checkIds="checkIds" :orgId="tarOrgId" @close="userShow=false" @save="getUsers"></chooseUser>
|
</win-sm>
|
</template>
|
|
<script>
|
import winSm from '@/components/win/win-sm'
|
import myButton from '@/components/myButton/myButton'
|
import * as system from '@/api/system/dict/data'
|
import * as buildPlan from "@/api/projectConfig/buildPlan";
|
import * as finsystenant from '@/api/baseSetting/finsystenant'
|
import * as DateFormatter from '@/utils/DateFormatter';
|
import * as info from '@/api/projectManage/info'
|
import chooseUser from './chooseUser'
|
import * as classify from "@/api/projectManage/classify";
|
export default {
|
name: 'edit',
|
components: { winSm, myButton,chooseUser },
|
props: {
|
setting: {
|
type: Object,
|
default: () => {
|
}
|
}
|
},
|
data() {
|
return {
|
tarOrgId: '', // 选择的机构ID
|
planTypeOptions: [], // 模板分类
|
categoryOptions:[], // 项目分类
|
tempOptions:[], // 项目模板
|
orgZsOptions:[], // 直营单位
|
buildOrgOptions:[], // 建设单位
|
batchOptions:[], // 项目批次
|
investOptions:[], // 投资专业
|
formData: {
|
projectCategoryId: '',
|
planTypeCode: '',
|
tempProjectId: '',
|
projectName: '',
|
projectCode: '',
|
directUnitCode: '',
|
buildOrgId:'',
|
projectUsersName:'',
|
projectUsersIds:'',
|
addr:'',
|
buildYearStart:'',
|
buildYearEnd:'',
|
projectBatchCode:'',
|
approvalDate:'',
|
totalInvest:'',
|
totalReleaseInvest:'',
|
investMajorCode:'',
|
detail:'',
|
},
|
rules: {
|
projectCategoryId: [
|
{required: true, message: '请选择项目分类', trigger: 'change'}
|
],
|
planTypeCode: [
|
{required: true, message: '请选择计划类型', trigger: 'change'}
|
],
|
tempProjectId: [
|
{required: true, message: '请选计划模板', trigger: 'change'}
|
],
|
projectName: [
|
{required: true, message: '请输入项目名称', trigger: 'blur'}
|
],
|
projectCode: [
|
{required: true, message: '请输入项目编号', trigger: 'blur'}
|
],
|
directUnitCode: [
|
{required: true, message: '请选择直营单位', trigger: 'change'}
|
],
|
buildOrgId: [
|
{required: true, message: '请选择建设单位', trigger: 'change'}
|
],
|
projectUsersIds: [
|
{required: true, message: '请选择项目人员', trigger: 'change'}
|
],
|
addr: [
|
{required: true, message: '请选择项目地址', trigger: 'change'}
|
],
|
buildYearStart: [
|
{required: true, message: '请输入开始时间', trigger: 'blur'}
|
],
|
buildYearEnd: [
|
{required: true, message: '请输入结束时间', trigger: 'blur'}
|
],
|
projectBatchCode: [
|
{required: true, message: '请选择项目批次', trigger: 'change'}
|
],
|
approvalDate: [
|
{required: true, message: '请选择批复时间', trigger: 'change'}
|
],
|
totalInvest: [
|
{required: true, message: '请输入总投资金额', trigger: 'blur'}
|
],
|
totalReleaseInvest: [
|
{required: true, message: '请输入已下达投资金额', trigger: 'blur'}
|
],
|
investMajorCode: [
|
{required: true, message: '请选择投资专业', trigger: 'change'}
|
]
|
|
},
|
userShow:false,
|
checkIds:[], // 被选中的人员名单 需要遍历,是个数组
|
projectManager:'', // 被选中的项目经理id
|
}
|
},
|
created() {
|
this.getProjectType() // 获取模板分类
|
this.getProjectClass() // 获取项目分类
|
this.getProjectBatch() // 获取项目批次
|
this.getProjectInvest() // 获取投递专业
|
this.getProjectDirect() // 获取直营单位
|
this.getOrg() // 获取建设单位
|
},
|
methods: {
|
// 选择项目成员
|
chooseUsers(){
|
if (this.formData.buildOrgId) {
|
this.tarOrgId = this.formData.buildOrgId[this.formData.buildOrgId.length - 1].toString()
|
this.userShow = true
|
} else {
|
this.userShow = false
|
this.$message.warning('请先选择建设单位!')
|
}
|
},
|
// 获取选择的成员
|
getUsers(info){
|
let userNames = []
|
let userIds = []
|
info.checkUsers.map(x=>{
|
x.map(j=>{
|
let item = JSON.parse(j)
|
userNames.push(item.userName)
|
userIds.push(item.id)
|
})
|
})
|
this.formData.projectUsersIds = userIds.join(',')
|
this.formData.projectUsersName = userNames.join(',')
|
this.checkIds = info.checkUsers
|
this.projectManager = info.managerId
|
},
|
// 获取建设单位
|
getOrg() {
|
finsystenant.getTree().then(res => {
|
if (res) {
|
this.buildOrgOptions = res
|
} else {
|
this.buildOrgOptions = []
|
}
|
this.$forceUpdate()
|
})
|
},
|
// 修改建设单位 清空 项目人员
|
changeBuildOrg(){
|
this.formData.projectUsersIds = ''
|
this.formData.projectUsersName = ''
|
this.checkIds = []
|
this.projectManager = ''
|
},
|
close() {
|
this.$emit('close')
|
},
|
getProjectType () {
|
buildPlan.getPlanType().then(res => {
|
if (res) {
|
this.planTypeOptions = res
|
} else {
|
this.planTypeOptions = []
|
}
|
this.$forceUpdate()
|
})
|
},
|
// 获取计划模板
|
getTemp() {
|
if (this.formData.planTypeCode) {
|
buildPlan.getList({planTypeCode: this.formData.planTypeCode, status: 1}).then(res => {
|
if (res) {
|
this.tempOptions = res
|
} else {
|
this.tempOptions = []
|
}
|
})
|
} else {
|
this.tempOptions = []
|
}
|
this.$forceUpdate()
|
},
|
// 获取项目分类
|
getProjectClass(){
|
classify.classifyTree().then(res => {
|
const content = res || []
|
this.categoryOptions = content
|
})
|
},
|
// 获取项目批次
|
getProjectBatch(){
|
system.getDicts('project_batch').then(res=>{
|
this.batchOptions = res
|
})
|
},
|
// 获取投递专业
|
getProjectInvest(){
|
system.getDicts('INVEST_MAJOR').then(res=>{
|
this.investOptions = res
|
})
|
},
|
// 获取直营单位
|
getProjectDirect(){
|
system.getDicts('DIRECT_UNIT').then(res=>{
|
this.orgZsOptions = res
|
})
|
},
|
save() {
|
this.$refs.dataForm.validate((valid) => {
|
if (valid) {
|
const params = this.formData
|
if (params.buildOrgId.length > 0) {
|
params.buildOrgId = this.formData.buildOrgId[this.formData.buildOrgId.length - 1].toString()
|
}
|
if (params.planTypeCode.length > 0) {
|
params.planTypeCode = this.formData.planTypeCode[this.formData.planTypeCode.length - 1].toString()
|
}
|
if (params.projectCategoryId.length > 0) {
|
params.projectCategoryId = this.formData.projectCategoryId[this.formData.projectCategoryId.length - 1].toString()
|
}
|
if (params.directUnitCode.length > 0) {
|
params.directUnitCode = this.formData.directUnitCode[this.formData.directUnitCode.length - 1].toString()
|
}
|
if (params.approvalDate) {
|
params.approvalDate = DateFormatter.DateToLong(params.approvalDate)
|
}
|
params.projectManager = this.projectManager
|
info.add(params).then(res=>{
|
this.$message.success('提交成功')
|
this.close()
|
this.$emit('search')
|
})
|
} else {
|
this.$message.error('校验未通过,请检查。')
|
}
|
})
|
}
|
}
|
}
|
</script>
|
<style scoped lang="scss">
|
.pos-year{
|
margin-bottom: 18px;
|
position: relative;
|
left:55px;
|
}
|
.mask-div{
|
position: absolute;
|
top:0;
|
left: 0;
|
right: 0;
|
bottom: 0;
|
z-index: 10;
|
}
|
</style>
|