|
@@ -1,6 +1,6 @@
|
|
<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
|
|
<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
|
|
<div>
|
|
<div>
|
|
- <el-form size="middle" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''" :disabled="formReadOnly"
|
|
|
|
|
|
+ <el-form size="middle" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''" :disabled="status === 'audit' || status === 'taskFormDetail'"
|
|
label-width="220px" @submit.native.prevent>
|
|
label-width="220px" @submit.native.prevent>
|
|
<el-divider content-position="left"><i class="el-icon-document"></i> 选择合同</el-divider>
|
|
<el-divider content-position="left"><i class="el-icon-document"></i> 选择合同</el-divider>
|
|
<el-row :gutter="15">
|
|
<el-row :gutter="15">
|
|
@@ -92,7 +92,7 @@
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="项目类型" prop="projectMould"
|
|
<el-form-item label="项目类型" prop="projectMould"
|
|
:rules="[
|
|
:rules="[
|
|
- {required: true, message:'项目类型不能为空', trigger:'blur'}
|
|
|
|
|
|
+ {required: true, message:'项目类型不能为空', trigger:'change'}
|
|
]">
|
|
]">
|
|
<el-select v-model="inputForm.projectMould" placeholder="请选择项目类型" clearable style="width: 100%;">
|
|
<el-select v-model="inputForm.projectMould" placeholder="请选择项目类型" clearable style="width: 100%;">
|
|
<el-option
|
|
<el-option
|
|
@@ -114,7 +114,7 @@
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="报告类型" prop="reportType"
|
|
<el-form-item label="报告类型" prop="reportType"
|
|
:rules="[
|
|
:rules="[
|
|
- {required: true, message:'报告类型不能为空', trigger:'blur'}
|
|
|
|
|
|
+ {required: true, message:'报告类型不能为空', trigger:'change'}
|
|
]">
|
|
]">
|
|
<el-select v-model="inputForm.reportType" placeholder="请选择报告类型" clearable style="width: 100%;">
|
|
<el-select v-model="inputForm.reportType" placeholder="请选择报告类型" clearable style="width: 100%;">
|
|
<el-option
|
|
<el-option
|
|
@@ -191,7 +191,7 @@
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="项目所在地" prop="location"
|
|
<el-form-item label="项目所在地" prop="location"
|
|
:rules="[
|
|
:rules="[
|
|
- {required: true, message:'项目所在地不能为空', trigger:'blur'}
|
|
|
|
|
|
+ {required: true, message:'项目所在地不能为空', trigger:'change'}
|
|
]">
|
|
]">
|
|
<SelectTree
|
|
<SelectTree
|
|
ref="areaTree"
|
|
ref="areaTree"
|
|
@@ -254,7 +254,7 @@
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="项目来源" prop="projectSource"
|
|
<el-form-item label="项目来源" prop="projectSource"
|
|
:rules="[
|
|
:rules="[
|
|
- {required: true, message:'项目来源不能为空', trigger:'blur'}
|
|
|
|
|
|
+ {required: true, message:'项目来源不能为空', trigger:'change'}
|
|
]">
|
|
]">
|
|
<el-select v-model="inputForm.projectSource" placeholder="请选择项目来源" clearable style="width: 100%;">
|
|
<el-select v-model="inputForm.projectSource" placeholder="请选择项目来源" clearable style="width: 100%;">
|
|
<el-option
|
|
<el-option
|
|
@@ -309,7 +309,7 @@
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="项目负责人" prop="projectManager"
|
|
<el-form-item label="项目负责人" prop="projectManager"
|
|
:rules="[
|
|
:rules="[
|
|
- {required: true, message:'项目负责人不能为空', trigger:'blur'}
|
|
|
|
|
|
+ {required: true, message:'项目负责人不能为空', trigger:'change'}
|
|
]">
|
|
]">
|
|
<SelectUserTree
|
|
<SelectUserTree
|
|
ref="companyTree"
|
|
ref="companyTree"
|
|
@@ -347,7 +347,7 @@
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="风险项目类型" prop="delegateProjectType"
|
|
<el-form-item label="风险项目类型" prop="delegateProjectType"
|
|
:rules="[
|
|
:rules="[
|
|
- {required: true, message:'风险项目类型不能为空', trigger:'blur'}
|
|
|
|
|
|
+ {required: true, message:'风险项目类型不能为空', trigger:'change'}
|
|
]">
|
|
]">
|
|
<el-select v-model="inputForm.delegateProjectType" placeholder="请选择风险项目类型" clearable style="width: 100%">
|
|
<el-select v-model="inputForm.delegateProjectType" placeholder="请选择风险项目类型" clearable style="width: 100%">
|
|
<el-option-group
|
|
<el-option-group
|
|
@@ -549,7 +549,7 @@
|
|
<!-- </el-row>-->
|
|
<!-- </el-row>-->
|
|
<el-divider content-position="left"><i class="el-icon-document"></i>
|
|
<el-divider content-position="left"><i class="el-icon-document"></i>
|
|
委托方联系人和项目直接对接人
|
|
委托方联系人和项目直接对接人
|
|
- <el-button style="margin-left: 20px" type="primary" :disabled="formReadOnly" size="mini" @click="openContactForm('0')" plain>
|
|
|
|
|
|
+ <el-button style="margin-left: 20px" type="primary" :disabled="status === 'audit' || status === 'taskFormDetail'" size="mini" @click="openContactForm('0')" plain>
|
|
新增
|
|
新增
|
|
</el-button>
|
|
</el-button>
|
|
</el-divider>
|
|
</el-divider>
|
|
@@ -563,18 +563,19 @@
|
|
style="margin-left: 5em"
|
|
style="margin-left: 5em"
|
|
:key="clientTableKey"
|
|
:key="clientTableKey"
|
|
@cell-click=""
|
|
@cell-click=""
|
|
|
|
+ :edit-rules="validRulesClient"
|
|
@edit-closed=""
|
|
@edit-closed=""
|
|
highlight-current-row
|
|
highlight-current-row
|
|
- :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
|
|
|
|
|
|
+ :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon: '#'}"
|
|
>
|
|
>
|
|
- <vxe-table-column field="contacts" title="联系人" :edit-render="{}">
|
|
|
|
|
|
+ <vxe-table-column field="contacts" title="联系人" :edit-render="{}" align="center">
|
|
<template v-slot:edit="scope">
|
|
<template v-slot:edit="scope">
|
|
<el-input :disabled="true" v-model="scope.row.contacts" ></el-input>
|
|
<el-input :disabled="true" v-model="scope.row.contacts" ></el-input>
|
|
</template>
|
|
</template>
|
|
</vxe-table-column>
|
|
</vxe-table-column>
|
|
- <vxe-table-column field="clientType" title="人员类型" :edit-render="{name: '$select', options: clientTypes}">
|
|
|
|
|
|
+ <vxe-table-column align="center" field="clientType" title="人员类型" :edit-render="{name: '$select', options: clientTypes}">
|
|
<template v-slot:edit="scope">
|
|
<template v-slot:edit="scope">
|
|
- <vxe-select v-model="scope.row.clientType" transfer>
|
|
|
|
|
|
+ <vxe-select :disabled="status === 'audit' || status === 'taskFormDetail'" v-model="scope.row.clientType" transfer>
|
|
<vxe-option
|
|
<vxe-option
|
|
v-for="item in clientTypes"
|
|
v-for="item in clientTypes"
|
|
:key="item.value"
|
|
:key="item.value"
|
|
@@ -584,27 +585,27 @@
|
|
</vxe-select>
|
|
</vxe-select>
|
|
</template>
|
|
</template>
|
|
</vxe-table-column>
|
|
</vxe-table-column>
|
|
- <vxe-table-column field="linkMobilePhoneFirst" title="联系方式1" :edit-render="{}">
|
|
|
|
|
|
+ <vxe-table-column align="center" field="linkMobilePhoneFirst" title="联系方式1" :edit-render="{}">
|
|
<template v-slot:edit="scope">
|
|
<template v-slot:edit="scope">
|
|
<el-input :disabled="true" v-model="scope.row.linkMobilePhoneFirst" ></el-input>
|
|
<el-input :disabled="true" v-model="scope.row.linkMobilePhoneFirst" ></el-input>
|
|
</template>
|
|
</template>
|
|
</vxe-table-column>
|
|
</vxe-table-column>
|
|
- <vxe-table-column field="linkMobilePhoneSecoed" title="联系方式2" :edit-render="{}">
|
|
|
|
|
|
+ <vxe-table-column align="center" field="linkMobilePhoneSecoed" title="联系方式2" :edit-render="{}">
|
|
<template v-slot:edit="scope">
|
|
<template v-slot:edit="scope">
|
|
<el-input :disabled="true" v-model="scope.row.linkMobilePhoneSecoed" ></el-input>
|
|
<el-input :disabled="true" v-model="scope.row.linkMobilePhoneSecoed" ></el-input>
|
|
</template>
|
|
</template>
|
|
</vxe-table-column>
|
|
</vxe-table-column>
|
|
- <vxe-table-column field="job" title="职位" :edit-render="{}">
|
|
|
|
|
|
+ <vxe-table-column align="center" field="job" title="职位" :edit-render="{}">
|
|
<template v-slot:edit="scope">
|
|
<template v-slot:edit="scope">
|
|
<el-input v-model="scope.row.job" ></el-input>
|
|
<el-input v-model="scope.row.job" ></el-input>
|
|
</template>
|
|
</template>
|
|
</vxe-table-column>
|
|
</vxe-table-column>
|
|
- <vxe-table-column field="remarks" title="备注" :edit-render="{}">
|
|
|
|
|
|
+ <vxe-table-column align="center" field="remarks" title="备注" :edit-render="{}">
|
|
<template v-slot:edit="scope">
|
|
<template v-slot:edit="scope">
|
|
<el-input v-model="scope.row.remarks" ></el-input>
|
|
<el-input v-model="scope.row.remarks" ></el-input>
|
|
</template>
|
|
</template>
|
|
</vxe-table-column>
|
|
</vxe-table-column>
|
|
- <vxe-table-column title="操作" width="100">
|
|
|
|
|
|
+ <vxe-table-column align="center" title="操作" width="100">
|
|
<template v-slot="scope">
|
|
<template v-slot="scope">
|
|
<el-button size="mini" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'client')">删除</el-button>
|
|
<el-button size="mini" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'client')">删除</el-button>
|
|
</template>
|
|
</template>
|
|
@@ -614,7 +615,7 @@
|
|
|
|
|
|
<el-divider content-position="left"><i class="el-icon-document"></i>
|
|
<el-divider content-position="left"><i class="el-icon-document"></i>
|
|
项目组成员
|
|
项目组成员
|
|
- <el-button style="margin-left: 20px" type="primary" :disabled="formReadOnly" size="mini" @click="insertEvent('member')" plain>
|
|
|
|
|
|
+ <el-button style="margin-left: 20px" type="primary" :disabled="status === 'audit' || status === 'taskFormDetail'" size="mini" @click="insertEvent('member')" plain>
|
|
新增
|
|
新增
|
|
</el-button>
|
|
</el-button>
|
|
</el-divider>
|
|
</el-divider>
|
|
@@ -626,21 +627,28 @@
|
|
:footer-method="footerMethod"
|
|
:footer-method="footerMethod"
|
|
ref="memberTable"
|
|
ref="memberTable"
|
|
class="vxe-table-element"
|
|
class="vxe-table-element"
|
|
|
|
+ :key="memberKey"
|
|
:data="inputForm.members"
|
|
:data="inputForm.members"
|
|
style="margin-left: 5em"
|
|
style="margin-left: 5em"
|
|
@cell-click=""
|
|
@cell-click=""
|
|
|
|
+ :edit-rules="validRulesMember"
|
|
@edit-closed=""
|
|
@edit-closed=""
|
|
highlight-current-row
|
|
highlight-current-row
|
|
- :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, autoClear: true}"
|
|
|
|
|
|
+ :edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: status === 'audit' || status === 'taskFormDetail' ? true : false, icon: '#'}"
|
|
>
|
|
>
|
|
- <vxe-table-column field="name" title="姓名" :edit-render="{}">
|
|
|
|
|
|
+ <vxe-table-column field="name" title="姓名" :edit-render="{name: '$input'}" align="center">
|
|
<template v-slot:edit="scope">
|
|
<template v-slot:edit="scope">
|
|
- <el-input v-model="scope.row.name" ></el-input>
|
|
|
|
|
|
+ <vxe-input v-model="scope.row.name" :disabled="commonJS.isNotEmpty(scope.row.userId) || status === 'audit' || status === 'taskFormDetail'" style="width: 100%">
|
|
|
|
+ <template #suffix>
|
|
|
|
+ <vxe-button :disabled="status === 'audit' || status === 'taskFormDetail'" @click="openUserSearch(scope.$rowIndex)" type="text" content="" icon="el-icon-search" ></vxe-button>
|
|
|
|
+ </template>
|
|
|
|
+ </vxe-input>
|
|
</template>
|
|
</template>
|
|
</vxe-table-column>
|
|
</vxe-table-column>
|
|
- <vxe-table-column field="workHours" title="预计工时(时)" :edit-render="{name: '$input'}">
|
|
|
|
|
|
+ <vxe-table-column field="workHours" title="预计工时(时)" :edit-render="{name: '$input'}" align="center">
|
|
<template v-slot:edit="scope">
|
|
<template v-slot:edit="scope">
|
|
<vxe-input
|
|
<vxe-input
|
|
|
|
+ :disabled="status === 'audit' || status === 'taskFormDetail'"
|
|
v-model="scope.row.workHours"
|
|
v-model="scope.row.workHours"
|
|
type="float"
|
|
type="float"
|
|
digits="1"
|
|
digits="1"
|
|
@@ -649,9 +657,9 @@
|
|
</vxe-input>
|
|
</vxe-input>
|
|
</template>
|
|
</template>
|
|
</vxe-table-column>
|
|
</vxe-table-column>
|
|
- <vxe-table-column field="type" title="人员类型" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_type')}">
|
|
|
|
|
|
+ <vxe-table-column align="center" field="type" title="人员类型" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_type')}">
|
|
<template v-slot:edit="scope">
|
|
<template v-slot:edit="scope">
|
|
- <vxe-select v-model="scope.row.type" placeholder="请选择人员类型" clearable style="width: 100%;" transfer>
|
|
|
|
|
|
+ <vxe-select :disabled="status === 'audit' || status === 'taskFormDetail'" v-model="scope.row.type" placeholder="请选择人员类型" clearable style="width: 100%;" transfer>
|
|
<vxe-option
|
|
<vxe-option
|
|
v-for="item in $dictUtils.getDictList('program_registered_member_type')"
|
|
v-for="item in $dictUtils.getDictList('program_registered_member_type')"
|
|
:key="item.value"
|
|
:key="item.value"
|
|
@@ -661,9 +669,9 @@
|
|
</vxe-select>
|
|
</vxe-select>
|
|
</template>
|
|
</template>
|
|
</vxe-table-column>
|
|
</vxe-table-column>
|
|
- <vxe-table-column field="job" title="项目职务" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_position')}">
|
|
|
|
|
|
+ <vxe-table-column align="center" field="job" title="项目职务" :edit-render="{name: '$select', options: $dictUtils.getDictList('program_registered_member_position')}">
|
|
<template v-slot:edit="scope">
|
|
<template v-slot:edit="scope">
|
|
- <vxe-select v-model="scope.row.job" placeholder="请选择项目职务" clearable style="width: 100%;" transfer>
|
|
|
|
|
|
+ <vxe-select :disabled="status === 'audit' || status === 'taskFormDetail'" v-model="scope.row.job" placeholder="请选择项目职务" clearable style="width: 100%;" transfer>
|
|
<vxe-option
|
|
<vxe-option
|
|
v-for="item in $dictUtils.getDictList('program_registered_member_position')"
|
|
v-for="item in $dictUtils.getDictList('program_registered_member_position')"
|
|
:key="item.value"
|
|
:key="item.value"
|
|
@@ -673,7 +681,7 @@
|
|
</vxe-select>
|
|
</vxe-select>
|
|
</template>
|
|
</template>
|
|
</vxe-table-column>
|
|
</vxe-table-column>
|
|
- <vxe-table-column title="操作" width="100">
|
|
|
|
|
|
+ <vxe-table-column align="center" title="操作" width="100">
|
|
<template v-slot="scope">
|
|
<template v-slot="scope">
|
|
<el-button size="mini" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'member')">删除</el-button>
|
|
<el-button size="mini" type="danger" @click="removeEvent(scope.row,scope.$rowIndex,'member')">删除</el-button>
|
|
</template>
|
|
</template>
|
|
@@ -686,6 +694,8 @@
|
|
<ContractForm ref="contractForm" @getContract="getContract"></ContractForm>
|
|
<ContractForm ref="contractForm" @getContract="getContract"></ContractForm>
|
|
<WorkClientForm ref="workClientForm" @getWorkClient="getWorkClient"></WorkClientForm>
|
|
<WorkClientForm ref="workClientForm" @getWorkClient="getWorkClient"></WorkClientForm>
|
|
<ContactForm ref="contactForm" @getContact="getContact"></ContactForm>
|
|
<ContactForm ref="contactForm" @getContact="getContact"></ContactForm>
|
|
|
|
+ <UserSelectDialog ref="userSelectDialog" @doSubmit="getMember" :limit="1"></UserSelectDialog>
|
|
|
|
+
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -699,6 +709,8 @@
|
|
import ProgramProjectListInfoService from '@/api/program/ProgramProjectListInfoService'
|
|
import ProgramProjectListInfoService from '@/api/program/ProgramProjectListInfoService'
|
|
import SelectTree from '@/components/treeSelect/treeSelect.vue'
|
|
import SelectTree from '@/components/treeSelect/treeSelect.vue'
|
|
import XEUtils from 'xe-utils'
|
|
import XEUtils from 'xe-utils'
|
|
|
|
+ import UserSelectDialog from '@/components/userSelect/UserSelectDialog'
|
|
|
|
+
|
|
export default {
|
|
export default {
|
|
props: {
|
|
props: {
|
|
businessId: {
|
|
businessId: {
|
|
@@ -708,6 +720,10 @@
|
|
formReadOnly: {
|
|
formReadOnly: {
|
|
type: Boolean,
|
|
type: Boolean,
|
|
default: false
|
|
default: false
|
|
|
|
+ },
|
|
|
|
+ status: {
|
|
|
|
+ type: String,
|
|
|
|
+ default: ''
|
|
}
|
|
}
|
|
},
|
|
},
|
|
data () {
|
|
data () {
|
|
@@ -783,11 +799,23 @@
|
|
clientList: [] // 项目直接对接联系人
|
|
clientList: [] // 项目直接对接联系人
|
|
},
|
|
},
|
|
clientTypes: [
|
|
clientTypes: [
|
|
- {value: 1, label: '委托人'},
|
|
|
|
- {value: 2, label: '项目对接人'}
|
|
|
|
|
|
+ {value: '1', label: '委托人'},
|
|
|
|
+ {value: '2', label: '项目对接人'}
|
|
],
|
|
],
|
|
keyWatch: '',
|
|
keyWatch: '',
|
|
- clientTableKey: 'default'
|
|
|
|
|
|
+ clientTableKey: 'default',
|
|
|
|
+ tableIndex: '',
|
|
|
|
+ memberKey: '',
|
|
|
|
+ validRulesMember: {
|
|
|
|
+ name: [
|
|
|
|
+ {required: true, message: '姓名不能为空'}
|
|
|
|
+ ]
|
|
|
|
+ },
|
|
|
|
+ validRulesClient: {
|
|
|
|
+ clientType: [
|
|
|
|
+ {required: true, message: '人员类型不能为空'}
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
}
|
|
}
|
|
},
|
|
},
|
|
programTypeDictService: null,
|
|
programTypeDictService: null,
|
|
@@ -830,7 +858,8 @@
|
|
UpLoadComponent,
|
|
UpLoadComponent,
|
|
WorkClientForm,
|
|
WorkClientForm,
|
|
ContactForm,
|
|
ContactForm,
|
|
- SelectTree
|
|
|
|
|
|
+ SelectTree,
|
|
|
|
+ UserSelectDialog
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
getKeyWatch (keyWatch) {
|
|
getKeyWatch (keyWatch) {
|
|
@@ -953,7 +982,7 @@
|
|
this.inputForm.links = []
|
|
this.inputForm.links = []
|
|
this.inputForm.clientList = []
|
|
this.inputForm.clientList = []
|
|
}
|
|
}
|
|
- if (this.formReadOnly === true) {
|
|
|
|
|
|
+ if (this.status === 'audit' || this.status === 'taskFormDetail') {
|
|
method = 'view'
|
|
method = 'view'
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1474,6 +1503,29 @@
|
|
},
|
|
},
|
|
clearPropertyHolder () {
|
|
clearPropertyHolder () {
|
|
this.inputForm.propertyHolder = ''
|
|
this.inputForm.propertyHolder = ''
|
|
|
|
+ },
|
|
|
|
+ // 打开用户选择组件
|
|
|
|
+ openUserSearch (index) {
|
|
|
|
+ this.tableIndex = index
|
|
|
|
+ this.$refs.userSelectDialog.init()
|
|
|
|
+ },
|
|
|
|
+ // 用户选择组件回显
|
|
|
|
+ getMember (member) {
|
|
|
|
+ if (this.commonJS.isNotEmpty(member)) {
|
|
|
|
+ if (this.commonJS.isNotEmpty(this.inputForm.members)) {
|
|
|
|
+ this.inputForm.members.forEach((item, index) => {
|
|
|
|
+ if (index !== this.tableIndex) {
|
|
|
|
+ if (item.userId === member[0].id) {
|
|
|
|
+ this.$message.error('列表中已存在此人员,请重新选择')
|
|
|
|
+ throw new Error('列表中已存在此人员,请重新选择')
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ this.inputForm.members[this.tableIndex].userId = member[0].id
|
|
|
|
+ this.inputForm.members[this.tableIndex].name = member[0].name
|
|
|
|
+ this.memberKey = Math.random()
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|