Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -246,9 +246,9 @@ let preProcess = {
|
||||
component: () => (
|
||||
<div>
|
||||
{
|
||||
props.formData.preProcess ? props.formData.preProcess.map(item => {
|
||||
props.formData.preProcess ? props.formData.preProcess.map((item,index) => {
|
||||
return <span><a target="_blank" style={{color: '#409EFF', cursor: 'pointer'}}
|
||||
href={props.formData.preProcessBaseUrl + item.requestId}>{item.requestName}</a> </span>
|
||||
href={props.formData.preProcessBaseUrl + item.requestId}>{item.requestName} {index != (props.formData.preProcess.length -1)? <span>,</span>:''}</a></span>
|
||||
}) : <span>{'--'}</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
<el-form-item label="项目负责人" :required="true" prop=""
|
||||
label-width="125">
|
||||
<el-button style="margin-right: 10px" color="#DED0B2" @click="handleShowProjectChargePersonTable">
|
||||
<!-- {{ localFormData.projectChargePerson ? '更改' : '请选择' }}-->
|
||||
{{ projectChargePersonUserList.length !== 0 ? '更改' : '请选择' }}
|
||||
</el-button>
|
||||
<div v-for="item in projectChargePersonUserList" :key="item.id" style="margin-right: 5px">
|
||||
@@ -49,7 +48,6 @@
|
||||
<el-form-item label="项目成员" :required="true" prop=""
|
||||
label-width="125">
|
||||
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowProjectPersonTable">
|
||||
<!-- {{ localFormData.projectPersonIds ? '更改' : '请选择' }}-->
|
||||
{{ projectPersonUserList.length !== 0 ? '更改' : getProjectPerson(projectPersonUserList) ? '更改' : '请选择' }}
|
||||
</el-button>
|
||||
<div v-for="item in getProjectPerson(projectPersonUserList)" :key="item.id" style="margin-right: 5px">
|
||||
@@ -59,6 +57,19 @@
|
||||
v-model:value="projectPersonUserList" @ok="projectPersonUserPickerOk"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" v-if="title==='apply'||title==='check'">
|
||||
<el-form-item label="分管领导" :required="true" prop=""
|
||||
label-width="125">
|
||||
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowOptionalChargeLeadershipPicker">
|
||||
{{ optionalChargeLeadershipList.length !== 0 ? '更改' : getOptionalChargeLeadershipList(optionalChargeLeadershipList) ? '更改' : '请选择' }}
|
||||
</el-button>
|
||||
<div v-for="item in getOptionalChargeLeadershipList(optionalChargeLeadershipList)" :key="item.id" style="margin-right: 5px">
|
||||
{{ item.name }}
|
||||
</div>
|
||||
<user-picker :multiple="true" ref="optionalChargeLeadershipPickerRef" title="请选择分管领导"
|
||||
v-model:value="optionalChargeLeadershipList" @ok="optionalChargeLeaderPickerOk"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" v-if="preProcessShow === 'EDIT'">
|
||||
<el-form-item label="前置流程" :required="preProcessRequired" prop="preProcess" label-width="125">
|
||||
<el-button color="#DED0B2" @click="handleShowPreTable" style="margin-right: 10px">
|
||||
@@ -303,13 +314,23 @@ const deploymentId = ref()
|
||||
const selectRows = ref([])
|
||||
const projectId = ref(route.query.projectId)
|
||||
const sessionParams = ref({})
|
||||
|
||||
const optionalChargeLeadershipPickerRef = ref()
|
||||
const optionalChargeLeadershipList = ref([])
|
||||
const filePreviewParam = ref({
|
||||
fileUrl: '',
|
||||
fileName: '',
|
||||
fileType: 'pdf'
|
||||
})
|
||||
const filePreviewShow = ref(false)
|
||||
const handleShowOptionalChargeLeadershipPicker = () => {
|
||||
optionalChargeLeadershipPickerRef.value.showUserPicker()
|
||||
}
|
||||
|
||||
const optionalChargeLeaderPickerOk = (userList) => {
|
||||
optionalChargeLeadershipList.value = userList
|
||||
localStorage.setItem('optionalChargeLeadershipList', JSON.stringify(optionalChargeLeadershipList.value))
|
||||
}
|
||||
|
||||
const clickToPreview=(row)=>{
|
||||
filePreviewShow.value = false
|
||||
filePreviewParam.value = {
|
||||
@@ -322,6 +343,17 @@ const clickToPreview=(row)=>{
|
||||
})
|
||||
}
|
||||
|
||||
const getOptionalChargeLeadershipList = (list) => {
|
||||
if (!list || list && list.length === 0) {
|
||||
if (localStorage.getItem('optionalChargeLeadershipList')) {
|
||||
let param = JSON.parse(localStorage.getItem('optionalChargeLeadershipList'))
|
||||
optionalChargeLeadershipList.value = param
|
||||
return optionalChargeLeadershipList.value
|
||||
}
|
||||
} else {
|
||||
return list
|
||||
}
|
||||
}
|
||||
const getProjectPerson = (list) => {
|
||||
if (!list || list && list.length === 0) {
|
||||
if (localStorage.getItem('projectPersonUserList')) {
|
||||
@@ -615,12 +647,14 @@ const handleSubmit = async () => {
|
||||
}
|
||||
params.projectChargePerson = parseInt(projectChargePersonUserList.value[0].id)
|
||||
params.projectPersonIds = projectPersonIds
|
||||
params.optionalChargeLeadership = optionalChargeLeadershipList.value
|
||||
if (props.mode === 'resubmit') {
|
||||
res = await resubmitApply(params)
|
||||
} else {
|
||||
res = await projectApply(params)
|
||||
}
|
||||
} else if (props.step === '40') {
|
||||
params.optionalChargeLeadership = optionalChargeLeadershipList.value
|
||||
if (props.mode === 'resubmit') {
|
||||
res = await resubmitCheck(params)
|
||||
} else {
|
||||
@@ -745,6 +779,12 @@ watchEffect(() => {
|
||||
localProjectPerson.value = param
|
||||
localStorage.setItem('projectPersonUserList', JSON.stringify(param))
|
||||
}
|
||||
if (localStorage.getItem('optionalChargeLeadershipList')) {
|
||||
let param = JSON.parse(localStorage.getItem('optionalChargeLeadershipList'))
|
||||
optionalChargeLeadershipList.value = param
|
||||
// localProjectPerson.value = param
|
||||
localStorage.setItem('optionalChargeLeadershipList', JSON.stringify(param))
|
||||
}
|
||||
|
||||
return flag
|
||||
})
|
||||
|
||||
@@ -10,9 +10,10 @@
|
||||
<script setup lang="jsx">
|
||||
import fvSelect from '@/fvcomponents/fvSelect/index.vue'
|
||||
import {toThousands} from '@/utils/changePrice.js'
|
||||
import { getSubCompOpt } from '@/api/user/user.js';
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
const searchConfig = reactive([
|
||||
const searchConfig = ref([
|
||||
{
|
||||
label: '项目名称',
|
||||
prop: 'projectName',
|
||||
@@ -24,6 +25,18 @@ const searchConfig = reactive([
|
||||
checkStrictly: true
|
||||
}
|
||||
},
|
||||
{
|
||||
label: '公司名称',
|
||||
prop: 'affiliatedCompanyIds',
|
||||
component: 'el-tree-select',
|
||||
props: {
|
||||
placeholder: '请输入',
|
||||
clearable: true,
|
||||
data: [],
|
||||
filterable: true,
|
||||
checkStrictly: true
|
||||
}
|
||||
},
|
||||
{
|
||||
label: '时间',
|
||||
prop: 'time',
|
||||
@@ -90,14 +103,20 @@ const tableConfig = reactive({
|
||||
prop: 'name',
|
||||
type: 'index',
|
||||
label: '序号',
|
||||
width:'80',
|
||||
align: 'center'
|
||||
align: 'center',
|
||||
width:85
|
||||
},
|
||||
{
|
||||
prop: 'projectName',
|
||||
label: '项目名称',
|
||||
align: 'center'
|
||||
},{
|
||||
},
|
||||
{
|
||||
prop: 'affiliatedCompany',
|
||||
label: '公司名称',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
prop: 'time',
|
||||
label: '时间',
|
||||
align: 'center'
|
||||
@@ -162,6 +181,13 @@ const search = (val) => {
|
||||
tableConfig.params = {...val}
|
||||
tableIns.value.refresh()
|
||||
}
|
||||
const init = async () => {
|
||||
const res = await getSubCompOpt()
|
||||
searchConfig.value.find(item=>item.prop == 'affiliatedCompanyIds').props.data = res.data
|
||||
}
|
||||
|
||||
init()
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@@ -54,16 +54,12 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" style="margin-bottom: -25px">
|
||||
<el-form-item label="征集公司" :required="true" prop="" class="tree-select" label-width="96">
|
||||
<el-form-item label="征集公司" :required="true" prop="" class="company-select" label-width="96">
|
||||
<div style="width: 100%">
|
||||
<el-button color="#DED0B2" @click="showCompany">{{ selectedCompanyList.length === 0 ? '请选择征集公司' : '更改' }}
|
||||
</el-button>
|
||||
</div>
|
||||
<div v-if="route.query.id" :class="showExpendClass(showMoreCompany)">{{
|
||||
getName(selectedCompanyList)
|
||||
}}
|
||||
</div>
|
||||
<div v-else :class="showExpendClass(showMoreCompany)">{{ getName(selectedCompanyList) }}</div>
|
||||
<div :class="showExpendClass(showMoreCompany)">{{ getName(selectedCompanyList) }}</div>
|
||||
<div style="color: #2a99ff;text-align: center;width: 100%;font-size: 15px;cursor: pointer"
|
||||
@click="handleExpend">
|
||||
{{ showExpendText }}
|
||||
@@ -464,7 +460,16 @@ const getCompanyOptionItem = (val) => {
|
||||
const getDetailInfo = async () => {
|
||||
getFormInfo(route.query.id).then(res => {
|
||||
if (res.code === 1000) {
|
||||
selectedCompanyList.value = getCompanyOptionItem(res.data.companyIds)
|
||||
if (res.data.companyIds[0] == -1) {
|
||||
selectedCompanyList.value = [
|
||||
{
|
||||
value:-1,
|
||||
label:'所有公司'
|
||||
}
|
||||
]
|
||||
} else {
|
||||
selectedCompanyList.value = getCompanyOptionItem(res.data.companyIds)
|
||||
}
|
||||
formData.value = res.data
|
||||
if (res.data.fileList.length !== 0) {
|
||||
showTable.value = false
|
||||
@@ -514,7 +519,7 @@ onMounted(async () => {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.tree-select {
|
||||
.company-select {
|
||||
:deep(.el-form-item__content .el-select__wrapper ) {
|
||||
width: 750px;
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
<el-row gutter="15">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开展政府申报" prop="governmentDeclaration" label-width="125">
|
||||
<!-- :label-width="route.query.id && formData.isSpecialFund?145:!formData.isSpecialFund?145:145">-->
|
||||
<!-- :label-width="route.query.id && formData.isSpecialFund?145:!formData.isSpecialFund?145:145">-->
|
||||
<el-radio-group v-model="formData.governmentDeclaration">
|
||||
<el-radio v-for="item in cacheStore.getDict('government_declaration')"
|
||||
:key="item.value"
|
||||
@@ -165,30 +165,33 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8" style="margin-bottom: -18px">
|
||||
<!-- :label-width="!formData.isSpecialFund?!route.query.id?125:125:125">-->
|
||||
<el-form-item label="知识产权状况" prop="intellectualProperty" :label-width="route.query.id && formData.isSpecialFund?135:formData.isSpecialFund?125:route.query.id?145:135">
|
||||
<el-select v-model="formData.intellectualProperty" placeholder="请选择知识产权状况" clearable filterable>
|
||||
<el-option
|
||||
v-for="item in cacheStore.getDict('intellectual_property')"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="route.query.id && formData.isSpecialFund?24:formData.isSpecialFund?16:24" style="margin-bottom: -18px">
|
||||
<el-form-item label="预期成果形式" prop="resultForm" :label-width="route.query.id && formData.isSpecialFund?125:formData.isSpecialFund?145:125">
|
||||
<el-select v-model="formData.resultForm" placeholder="请选择预期成果形式" clearable filterable multiple>
|
||||
<el-option
|
||||
v-for="item in cacheStore.getDict('result_form')"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- :label-width="!formData.isSpecialFund?!route.query.id?125:125:125">-->
|
||||
<el-form-item label="知识产权状况" prop="intellectualProperty"
|
||||
:label-width="route.query.id && formData.isSpecialFund?135:formData.isSpecialFund?125:route.query.id?145:135">
|
||||
<el-select v-model="formData.intellectualProperty" placeholder="请选择知识产权状况" clearable filterable>
|
||||
<el-option
|
||||
v-for="item in cacheStore.getDict('intellectual_property')"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="route.query.id && formData.isSpecialFund?24:formData.isSpecialFund?16:24"
|
||||
style="margin-bottom: -18px">
|
||||
<el-form-item label="预期成果形式" prop="resultForm"
|
||||
:label-width="route.query.id && formData.isSpecialFund?125:formData.isSpecialFund?145:125">
|
||||
<el-select v-model="formData.resultForm" placeholder="请选择预期成果形式" clearable filterable multiple>
|
||||
<el-option
|
||||
v-for="item in cacheStore.getDict('result_form')"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row gutter="15">
|
||||
@@ -242,6 +245,19 @@
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="分管领导" :required="true" prop=""
|
||||
label-width="125">
|
||||
<el-button color="#DED0B2" style="margin-right: 10px" @click="handleShowOptionalChargeLeadershipPicker">
|
||||
{{ optionalChargeLeadershipList.length !== 0 ? '更改' : '请选择' }}
|
||||
</el-button>
|
||||
<div v-for="item in optionalChargeLeadershipList" :key="item.id" style="margin-right: 5px">
|
||||
{{ item.name }}
|
||||
</div>
|
||||
<user-picker :multiple="true" ref="optionalChargeLeadershipPickerRef" title="请选择分管领导"
|
||||
v-model:value="optionalChargeLeadershipList" @ok="optionalChargeLeaderPickerOk"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<AttachmentUpload ref="attachment" label="需求申请书附件" :showTable="showTable" v-model:otherFileList="otherFileList"
|
||||
@@ -278,6 +294,7 @@ import {getSubCompOpt} from "@/api/user/user";
|
||||
import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.vue';
|
||||
import {getFormInfo} from "@/api/project-demand";
|
||||
import {getFundOption} from "@/api/special-fund";
|
||||
import UserPicker from "@/views/workflow/process/common/UserPicker.vue";
|
||||
|
||||
const changeDiagram = ref(false)
|
||||
const cacheStore = useCacheStore()
|
||||
@@ -292,6 +309,8 @@ const tagsViewStore = useTagsView()
|
||||
const companyOption = ref([])
|
||||
const summaryForm = ref()
|
||||
const deploymentId = ref()
|
||||
const optionalChargeLeadershipPickerRef = ref()
|
||||
const optionalChargeLeadershipList = ref([])
|
||||
const specialFundOption = ref([])
|
||||
const showTable = ref(true)
|
||||
const showSingleTable = ref(false)
|
||||
@@ -329,6 +348,13 @@ const rules = reactive({
|
||||
serviceDescription: [{required: true, message: '请输入现有业务描述', trigger: 'blur'}],
|
||||
contentDescription: [{required: true, message: '请输入研发项目关键内容描述', trigger: 'blur'}]
|
||||
})
|
||||
const handleShowOptionalChargeLeadershipPicker = () => {
|
||||
optionalChargeLeadershipPickerRef.value.showUserPicker()
|
||||
}
|
||||
|
||||
const optionalChargeLeaderPickerOk = (userList) => {
|
||||
optionalChargeLeadershipList.value = userList
|
||||
}
|
||||
|
||||
const handleBack = () => {
|
||||
history.back()
|
||||
@@ -435,6 +461,7 @@ const handleSubmit = debounce(async (instance) => {
|
||||
otherFileList.value.forEach(item => {
|
||||
otherFiles.push(getFileParam(item))
|
||||
})
|
||||
formData.value.optionalChargeLeadership=optionalChargeLeadershipList.value
|
||||
if (formData.value.singleFile !== undefined) {
|
||||
formData.value.singleFile = getFileParam(formData.value.singleFile)
|
||||
}
|
||||
@@ -447,7 +474,6 @@ const handleSubmit = debounce(async (instance) => {
|
||||
})
|
||||
return;
|
||||
} else {
|
||||
// formData.value.resultForm=JSON.stringify(formData.value.resultForm)
|
||||
attachment.value.clearValidate()
|
||||
}
|
||||
let params = {
|
||||
@@ -489,6 +515,7 @@ const handleResubmit = debounce((instance) => {
|
||||
otherFiles.push(getFileParam(item))
|
||||
})
|
||||
}
|
||||
formData.value.optionalChargeLeadership=optionalChargeLeadershipList.value
|
||||
if (formData.value.isSpecialFund && formData.value.specialFund === null) {
|
||||
formData.value.specialFund = getFundName(formData.value.specialFundId)
|
||||
}
|
||||
@@ -501,7 +528,6 @@ const handleResubmit = debounce((instance) => {
|
||||
})
|
||||
return;
|
||||
} else {
|
||||
// formData.value.resultForm=JSON.stringify(formData.value.resultForm)
|
||||
attachment.value.clearValidate()
|
||||
}
|
||||
let params = {
|
||||
@@ -537,7 +563,6 @@ const getDetailInfo = async () => {
|
||||
})
|
||||
if (res.code === 1000) {
|
||||
res.data.formData.specialFundId = res.data.formData.specialFundId === 0 ? null : res.data.formData.specialFundId
|
||||
// res.data.formData.resultForm = JSON.parse(res.data.formData.resultForm)
|
||||
formData.value = res.data.formData
|
||||
loading.value = false
|
||||
}
|
||||
|
||||
@@ -86,6 +86,7 @@ localStorage.removeItem('otherFileList')
|
||||
localStorage.removeItem('preProcess')
|
||||
localStorage.removeItem('projectChargePersonUserList')
|
||||
localStorage.removeItem('projectPersonUserList')
|
||||
localStorage.removeItem('optionalChargeLeadershipList')
|
||||
const getAllInfo = async (state) => {
|
||||
const loading = ElLoading.service({fullscreen: true})
|
||||
detailData.value = {
|
||||
|
||||
Reference in New Issue
Block a user