Merge pull request 'master' (#408) from master into prod

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/408
This commit is contained in:
wenhua
2024-06-28 15:55:12 +00:00
17 changed files with 130 additions and 89 deletions

View File

@@ -19,7 +19,7 @@
</el-col>
<el-col :span="24">
<el-form-item label="其他文件">
<el-card style="width: 100%">
<el-card style="width: 100%;box-shadow: none">
<file-upload @getFile="getOtherFile"/>
<fvTable style="width: 100%;max-height: 300px;" v-if="showTable" :tableConfig="tableConfig"
:data="allFileList" :isSettingCol="false" :pagination="false">

View File

@@ -24,7 +24,7 @@
<el-table-column prop="afterTax" label="分摊金额" align="center">
<template #default="scope">
<div v-if="scope.row.afterTax !== null">
<!-- {{ toThousands(scope.row.afterTax) }}-->
<!-- {{ toThousands(scope.row.afterTax) }}-->
{{ scope.row.afterTax }}
</div>
</template>
@@ -33,7 +33,6 @@
</template>
<script setup>
import {toThousands} from '@/utils/changePrice.js'
import {exportExcel} from "@/utils/export-excel";
import {getAllocationSummaryDetails} from "@/api/expense-manage";
@@ -71,6 +70,7 @@ const getSummaries = (param) => {
return prev
}
}, 0)}`
sums[index] = parseFloat(sums[index]).toFixed(2)
// sums[index] = toThousands(sums[index])
} else {
sums[index] = '-'
@@ -85,7 +85,7 @@ const exportTable = () => {
if (!$table) {
$table = $e
}
exportExcel($table, (5 + (Object.keys(tableData.value[0]).length - 5) * 5), "四川省国有资产经营投资管理有限责任公司科技创新项目费用分摊表",2)
exportExcel($table, (5 + (Object.keys(tableData.value[0]).length - 5) * 5), "四川省国有资产经营投资管理有限责任公司科技创新项目费用分摊表", 2)
}
const init = () => {
loading.value = true

View File

@@ -28,7 +28,7 @@
</el-form-item>
</el-col>
<el-col :span="24" v-if="formData.isSpecialFund">
<el-form-item label="专项资金">
<el-form-item label="专项资金名称">
<span>{{ formData.specialFund }}</span>
</el-form-item>
</el-col>

View File

@@ -135,24 +135,14 @@ const checkBoxChange = (val) => {
isExpand.value = '展开'
}
}
const matterTree = (list, flag) => {
list.forEach(item => {
if (!flag) {
tree.value.setChecked(item, false)
}
if (item.children !== undefined) {
matterTree(item.children, false)
}
})
}
const getList = () => {
getSubCompOpt().then(res => {
dataList.value = [
{
label: "全选",
label: "所有公司",
value: -1,
children: res.data
}
},
...res.data
]
});
};
@@ -167,24 +157,34 @@ const filterNode = (value, data) => {
const show = () => {
//用于弹开部门选择
visible.value = true;
if(selectList.value.length==0){
selectList.value=[]
defaultChecked.value =[]
}else {
selectList.value = _value.value
defaultChecked.value = _value.value.map(item => item.value)
}
console.log('_value.value', _value.value, selectList.value)
// if(selectList.value.length==0){
// selectList.value=[]
// defaultChecked.value =[]
// }else {
selectList.value = _value.value
defaultChecked.value = _value.value.map(item => item.value)
// }
getList()
};
const updateTreeCheck = (item, flag) => {
// list.forEach(item => {
tree.value.setChecked(item, flag)
if (item.children !== undefined) {
updateTreeCheck(item.children, flag)
}
// })
}
const handleChange = (data, checked) => {
if (data.value == -1) {
if(checked){
checkStrictly.value = false
const index = checkList.value.indexOf('2')
if (index != -1) {
checkList.value.splice(index, 1)
for (const item of dataList.value) {
if (item.value !== -1) {
console.log('item',item)
updateTreeCheck(item, false)
}
}
matterTree(dataList.value[0].children, false)
tree.value.setChecked(data,true);
}
}

View File

@@ -8,7 +8,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="专项资金" prop="specialFund" v-if="localFormData.isSpecialFund">
<el-form-item label="专项资金名称" prop="specialFund" v-if="localFormData.isSpecialFund">
<span>{{localFormData.specialFundId===0?localFormData.specialFund:changeName(fundOption,localFormData.specialFundId) }}</span>
</el-form-item>
</el-col>

View File

@@ -31,6 +31,7 @@ const props = defineProps({
const tagConfig = ref({})
const filterDict = (data, value) => {
console.log("🚀 ~ filterDict ~ data:", data)
if (!data || value == null) return
if (data instanceof Array) {
if (value == true || value == false) {
@@ -45,7 +46,7 @@ const filterDict = (data, value) => {
tagConfig.value = data.find(item => item.value == value)
}
}
return tagConfig.value.label
return tagConfig.value?.label || '未知'
}
</script>

View File

@@ -11,7 +11,12 @@
:class="stepClass(index)"
@click="handleStep(item.key, index)"
/>
>
<template #icon>
<el-icon style="font-size: 20px;" :class="index == localActive ? 'is-active' : 'is-end'" v-if="localStepSuccess.includes(index)"><SuccessFilled /></el-icon>
<el-icon style="font-size: 20px; color: gray;" v-else><WarningFilled /></el-icon>
</template>
</el-step>
</el-steps>
</div>
@@ -311,4 +316,10 @@ watchEffect(() => {
.step-error {
cursor: not-allowed;
}
.is-active {
color: #BEA266;
}
.is-end {
color: #67c23a;
}
</style>

View File

@@ -39,9 +39,9 @@
<el-table-column prop="researchPersonnel" label="研发人员" width="230">
<template #default="scope">
<el-form-item prop="researchPersonnel">
{{ scope.row.researchPersonnelName ? scope.row.researchPersonnelName : currentReachPerson.name }}
{{ scope.row.researchPersonnelName }}
<el-button @click="showPersonnelPicker(scope.row,scope.$index)">
{{ scope.row.researchPersonnelName || currentReachPerson.name ? '更改' : '请选择研发人员' }}
{{ scope.row.researchPersonnelName ? '更改' : '请选择研发人员' }}
</el-button>
</el-form-item>
</template>
@@ -211,13 +211,13 @@ const showPersonnelPicker = (row, index) => {
userPicker.value.showUserPicker()
}
const selected = (select) => {
for (const selectElement of select) {
currentReachPerson.value = selectElement
if (!select || select.length === 0) {
return
}
formData.value.tableData.forEach((item, index) => {
if (index == currentIndex.value) {
item.researchPersonnel = currentReachPerson.value.id
item.researchPersonnelName = currentReachPerson.value.name
if (index === currentIndex.value) {
item.researchPersonnel = select[0].id
item.researchPersonnelName = select[0].name
}
})
}
@@ -252,7 +252,7 @@ const handleAdd = () => {
workday: '21.75',
researchDuration: null,
}
currentReachPerson.value.name=''
currentReachPerson.value.name = ''
formData.value.tableData.push(row)
}
const handleCopy = (row) => {
@@ -260,6 +260,7 @@ const handleCopy = (row) => {
projectId: row.projectId,
projectName: '',
researchPersonnel: row.researchPersonnel,
researchPersonnelName: row.researchPersonnelName,
wagesPayable: row.wagesPayable,
performance: row.performance,
reserveFund: row.reserveFund,

View File

@@ -9,8 +9,8 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="征集类型" prop="collectType">
<el-select v-model="formData.collectType" placeholder="征集类型" clearable filterable>
<el-form-item label="科技创新与信息化系统建设" prop="collectType">
<el-select v-model="formData.collectType" placeholder="科技创新与信息化系统建设" clearable filterable>
<el-option
v-for="item in cacheStore.getDict('collect_type')"
:key="item.value"
@@ -21,27 +21,29 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="截止时间" prop="deadline">
<el-form-item label="需求上报截止时间" prop="deadline">
<el-config-provider>
<el-date-picker
v-model="formData.deadline"
type="date"
placeholder="截止时间"
placeholder="需求上报截止时间"
value-format="YYYY-MM-DD"
/>
</el-config-provider>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="所属公司" prop="companyIds" class="tree-select">
<el-form-item label="征集公司" prop="companyIds" class="tree-select">
<div style="width: 100%">
<el-button color="#DED0B2" @click="showCompany">{{ selectedCompanyList.length === 0 ? '请选择所属公司' : '更改' }}
<el-button color="#DED0B2" @click="showCompany">{{ selectedCompanyList.length === 0 ? '请选择征集公司' : '更改' }}
</el-button>
</div>
<div v-if="route.query.id" :class="showExpendClass(showMoreCompany)">{{ selectedCompanyList }}</div>
<div v-if="route.query.id" :class="showExpendClass(showMoreCompany)">{{ getName(selectedCompanyList) }}</div>
<div v-else :class="showExpendClass(showMoreCompany)">{{ getName(selectedCompanyList) }}</div>
<div style="color: #2a99ff;text-align: center;width: 100%;font-size: 15px;cursor: pointer"
@click="handleExpend">{{ showExpendText }}
@click="handleExpend">
{{ showExpendText }}
</div>
</el-form-item>
</el-col>
@@ -54,8 +56,8 @@
</el-form-item>
</el-col>
<el-col :span="6" v-if="formData.isSpecialFund">
<el-form-item label="专项资金" prop="specialFundId">
<el-select v-model="formData.specialFundId" placeholder="请选择专项资金" clearable filterable>
<el-form-item label="专项资金名称" prop="specialFundId">
<el-select v-model="formData.specialFundId" placeholder="请选择专项资金名称" clearable filterable>
<el-option
v-for="item in specialFundOption"
:key="item.value"
@@ -100,7 +102,8 @@
<el-button color="#DED0B2" v-else @click="handleResubmit">重新提交</el-button>
<el-button @click="handleBack">返回</el-button>
</div>
<company-picker :multiple="true" ref="companyRef" title="请选择所属公司" @ok="selected" v-model:value="selectedCompanyList"/>
<company-picker :multiple="true" ref="companyRef" title="请选择所属公司" @ok="selected"
v-model:value="selectedCompanyList"/>
</div>
</template>
@@ -168,7 +171,7 @@ const rules = reactive({
companyIds: [{required: true, message: '请选择所属公司', trigger: 'blur'}],
collectType: [{required: true, message: '请选择征集类型', trigger: 'blur'}],
deadline: [{required: true, message: '请选择截止时间', trigger: 'blur'}],
specialFundId: [{required: true, message: '请选择专项资金', trigger: 'blur'}],
specialFundId: [{required: true, message: '请选择专项资金名称', trigger: 'blur'}],
})
const tableConfig = reactive({
@@ -222,24 +225,16 @@ const showExpendClass = (showMoreCompany) => {
if (!showMoreCompany) {
if (selectedCompanyList.value.length === 0) {
showExpendText.value = ''
return ''
} else if (selectedCompanyList.value.length>14) {
return ''
} else if (selectedCompanyList.value.length > 14) {
showExpendText.value = '展开'
return 'company-style'
return 'company-style'
}
} else {
showExpendText.value = '收缩'
return ''
return ''
}
}
const getCompanyOptionItem = (val) => {
if (val !== undefined) {
val.forEach(item => {
matterTree(companyNameArray.value, companyOption.value, item)
})
}
return companyNameArray.value.join('');
}
const getName = (list) => {
return list.map(item => item.label).join('')
}
@@ -405,6 +400,25 @@ const handleResubmit = () => {
}
})
}
const getCompanyOptionItem = (val) => {
let newObj = {}
let newArray = []
if (val !== undefined) {
val.forEach(item => {
matterTree(companyNameArray.value, companyOption.value, item)
companyNameArray.value.forEach(companyItem => {
newObj = {
label: companyItem,
value: item
}
newArray.push(newObj)
})
})
}
return newArray;
}
const getDetailInfo = async () => {
getFormInfo(route.query.id).then(res => {
if (res.code === 1000) {

View File

@@ -1,14 +1,14 @@
<template>
<div class="detail-block" v-loading="loading">
<baseTitle title="需求上报"></baseTitle>
<el-form :model="formData" ref="summaryForm" :rules="rules">
<el-form :model="formData" ref="summaryForm" :rules="rules" label-width="140">
<el-row gutter="50">
<el-col :span="12">
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="formData.projectName" placeholder="请输入项目名称" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="5" v-if="!route.query.id">
<el-col :span="6" v-if="!route.query.id">
<el-form-item label="是否专项资金" prop="isSpecialFund">
<el-radio-group v-model="formData.isSpecialFund" @change="specialFundChange">
<el-radio :label="true"></el-radio>
@@ -16,7 +16,7 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6" v-if="route.query.id && formData.isSpecialFund">
<el-col :span="5" v-if="route.query.id && formData.isSpecialFund">
<el-form-item label="专项资金" prop="specialFundId">
<span>{{ formData.specialFund }}</span>
</el-form-item>
@@ -33,7 +33,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="开始时间" prop="startTime">
<el-config-provider>
<el-date-picker
@@ -47,7 +47,7 @@
</el-config-provider>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="结束时间" prop="endTime"
:title="!formData.startTime?'请先选择开始时间!':''">
<el-config-provider>
@@ -64,7 +64,7 @@
</el-config-provider>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="项目类型" prop="projectType">
<el-select v-model="formData.projectType" placeholder="请选择项目类型" clearable filterable>
<el-option
@@ -76,7 +76,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="研发主体" prop="rdSubject">
<el-select v-model="formData.rdSubject" placeholder="请选择研发主体" clearable filterable>
<el-option
@@ -148,7 +148,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="产学研联合" prop="industryUniversityResearch">
<el-radio-group v-model="formData.industryUniversityResearch">
<el-radio v-for="item in cacheStore.getDict('industry_university')"
@@ -158,7 +158,7 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="开展政府申报" prop="governmentDeclaration">
<el-radio-group v-model="formData.governmentDeclaration">
<el-radio v-for="item in cacheStore.getDict('government_declaration')"
@@ -189,7 +189,7 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="实用性新型专利(项)" prop="newPatent">
<el-form-item label="实用性新型专利(项)" prop="newPatent" label-width="145">
<el-input-number v-model="formData.newPatent" placeholder="请输入实用性新型专利" :controls="false"/>
</el-form-item>
</el-col>
@@ -214,7 +214,7 @@
</el-form-item>
</el-col>
<el-col :span="12" v-if="formData.isSpecialFund!==false">
<el-form-item label="其中申请公司总部科技创新专项资金(元)" prop="specialFundAmount">
<el-form-item label="其中申请公司总部科技创新专项资金(元)" prop="specialFundAmount" label-width="280">
<el-input-number v-model="formData.specialFundAmount" placeholder="请输入专项资金" :controls="false"/>
</el-form-item>
</el-col>
@@ -225,7 +225,7 @@
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="研发项目关键内容描述" prop="contentDescription">
<el-form-item label="研发项目关键内容描述" prop="contentDescription" label-width="140">
<el-input v-model="formData.contentDescription" placeholder="请输入研发项目关键内容描述" rows="4" type="textarea"
clearable></el-input>
</el-form-item>

View File

@@ -116,7 +116,8 @@ const upload = () => {
name: 'Filing/upload',
query: {
id: route.query.id,
name: activeName.value
name: activeName.value,
requirementId:requirementId.value
}
})
}

View File

@@ -162,7 +162,8 @@ const handleSubmit = async () => {
await router.push({
name: 'Filing/attachment',
query:{
id: route.query.id
id: route.query.id,
requirementId:route.query.requirementId
}
})
}

View File

@@ -308,6 +308,7 @@ const search = (val) => {
}
const init = async () => {
const {code, msg, data} = await searchUpdateLedgerData(route.query.id)
console.log("🚀 ~ init ~ data:", data)
if (data) {
tableData.value = data
baseForm.value.setValues(data)

View File

@@ -141,7 +141,7 @@ const handleSubmit = async () => {
}
const getBaseInfo = async () => {
const {code, data} = await getBaseInfoApi(route.query.id)
tableForm.value.projectName = data.projectName
tableForm.value.projectName = data?.projectName || ''
}
getBaseInfo()
const init = async () => {

View File

@@ -28,7 +28,7 @@
</el-form-item>
</el-col>
<el-col :span="24" v-if="formData.isSpecialFund">
<el-form-item label="专项资金">
<el-form-item label="专项资金名称">
<span>{{ formData.specialFund }}</span>
</el-form-item>
</el-col>

View File

@@ -11,7 +11,12 @@
:class="stepClass(index)"
@click="handleStep(item.key, index)"
/>
>
<template #icon>
<el-icon style="font-size: 20px;" :class="index == localActive ? 'is-active' : 'is-end'" v-if="localStepSuccess.includes(index)"><SuccessFilled /></el-icon>
<el-icon style="font-size: 20px; color: gray;" v-else><WarningFilled /></el-icon>
</template>
</el-step>
</el-steps>
</div>
@@ -96,21 +101,21 @@ const schema = computed(() => {
label: '征集名称',
prop: 'requirementName',
colProps: {
span: 24
span: 12
}
},
{
label: '所属公司',
prop: 'affiliatedCompany',
colProps: {
span: 24
span: 12
}
},
{
label: '项目名称',
prop: 'projectName',
colProps: {
span: 24
span: 12
}
}
@@ -311,4 +316,10 @@ watchEffect(() => {
.step-error {
cursor: not-allowed;
}
.is-active {
color: #BEA266;
}
.is-end {
color: #67c23a;
}
</style>

View File

@@ -8,7 +8,7 @@
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="专项资金" prop="specialFund" v-if="localFormData.isSpecialFund">
<el-form-item label="专项资金名称" prop="specialFund" v-if="localFormData.isSpecialFund">
<span>{{localFormData.specialFundId===0?localFormData.specialFund:changeName(fundOption,localFormData.specialFundId) }}</span>
</el-form-item>
</el-col>
@@ -132,10 +132,10 @@
</el-form-item>
</el-col>
<el-col :span="24">
<file-component
title="需求上报附件"
<file-component
title="需求上报附件"
tag="需求上报"
v-model:value="localFormData.fileList"
v-model:value="localFormData.fileList"
:processViewer="processViewer"
:file-list-show="fileListShow"
labelAlign="top"