fix : 修复细节

This commit is contained in:
2024-06-02 19:42:33 +08:00
parent 9ad29c3a13
commit 6bb97b4a1d
11 changed files with 172 additions and 159 deletions

View File

@@ -15,12 +15,16 @@
</el-form>
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="分摊明细" name="first">
<expense-detail :formData="shareData.formData" :data="shareData" :showTable="showTable"
:processViewer="shareProcessViewer"
<expense-detail :formData="shareData.formData" :data="shareData"
:processViewer="shareProcessViewer" :detailList="detailList"
:loading="loading"/>
</el-tab-pane>
<el-tab-pane label="分摊汇总" name="second">
<!-- <fvTable ref="tableIns" :tableConfig="tableConfig" @headBtnClick="headBtnClick">-->
<!-- <template #empty>-->
<!-- <el-empty description="暂无数据"/>-->
<!-- </template>-->
<!-- </fvTable>-->
</el-tab-pane>
</el-tabs>
<div class="approval-record">
@@ -37,32 +41,40 @@
<script setup lang="jsx">
import {ElNotification} from "element-plus";
import {useProcessStore} from '@/stores/processStore.js';
import {getAllocationDetail} from "@/api/expense-manage";
import {getAllocationDetail, getAllocationDetailList} from "@/api/expense-manage";
const processStore = useProcessStore()
const route = useRoute()
const shareData = ref({})
const detailList = ref([])
const formData = ref({})
const shareProcessViewer = ref(true)
const showTable = ref(true)
const loading = ref(false)
const activeName = ref('first')
const getDetail = async () => {
const id = route.query.id
showTable.value = false
shareProcessViewer.value = false
loading.value = true
const {code, data, msg} = await getAllocationDetail(id)
ElNotification({
title: '提示',
message: msg,
type: code === 1000 ? 'success' : 'error'
})
if (code === 1000) {
shareData.value = data
formData.value = data.formData
loading.value = false
if(data.operationList==null)return;
} else {
ElNotification({
title: '提示',
message: msg,
type: 'error'
})
}
loading.value = false
}
const getDetailList = async () => {
let params = {
allocationId: route.query.id
}
shareProcessViewer.value = false
const {code, data, msg} = await getAllocationDetailList(params)
if (code === 1000) {
detailList.value = data
processStore.setDesign(data)
processStore.runningList.value = data.runningList;
processStore.endList.value = data.endList;
@@ -71,32 +83,36 @@ const getDetail = async () => {
processStore.passList.value = data.passList;
nextTick(() => {
shareProcessViewer.value = true
showTable.value = true
})
} else {
loading.value = false
}else {
ElNotification({
title: '提示',
message: msg,
type: 'error'
})
}
}
getDetail()
getDetailList()
</script>
<style scoped lang="scss">
:deep(.el-tabs__nav-scroll) {
width: 100%;
:deep(.el-tabs__nav-scroll) {
width: 100%;
display: flex;
.el-tabs__nav {
display: flex;
flex: 1;
.el-tabs__nav {
display: flex;
.el-tabs__item {
flex: 1;
font-size: 16px;
}
.el-tabs__item {
flex: 1;
font-size: 16px;
}
.is-active {
color: black;
//background-color: #DED0B2;
}
.is-active {
color: black;
//background-color: #DED0B2;
}
}
}
</style>

View File

@@ -8,24 +8,25 @@
<el-input v-model="formData.projectName" placeholder="请输入项目名称" clearable></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="5">-->
<!-- <el-form-item label="是否专项资金" prop="isSpecialFund">-->
<!-- <el-radio-group v-model="formData.isSpecialFund" >-->
<!-- <el-radio :label="true"></el-radio>-->
<!-- <el-radio :label="false"></el-radio>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="5">
<el-form-item label="是否专项资金" prop="isSpecialFund">
<el-radio-group v-model="formData.isSpecialFund">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="专项资金" prop="specialFund" v-if="formData.isSpecialFund">
<el-select v-model="formData.specialFund" placeholder="请选择专项资金" clearable filterable>
<el-option
v-for="item in specialFundOption"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<!-- <span>{{ getSpecialFundName(formData.specialFund) }}</span>-->
<el-select v-model="formData.specialFund" placeholder="请选择专项资金" clearable filterable>
<el-option
v-for="item in specialFundOption"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -33,8 +34,9 @@
<el-config-provider>
<el-date-picker
v-model="formData.startTime"
type="datetime"
type="date"
placeholder="开始时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD HH:mm:ss"
style="width: 100%"
/>
@@ -46,10 +48,13 @@
<el-config-provider>
<el-date-picker
v-model="formData.endTime"
type="datetime"
type="date"
placeholder="结束时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD HH:mm:ss"
style="width: 100%"
:disabled="!formData.startTime"
:disabled-date="disabledDate"
/>
</el-config-provider>
</el-form-item>
@@ -243,7 +248,7 @@
<script setup lang="jsx">
import {debounce} from 'lodash'
import {getDetail, getProcessInfo, requirementReported, resubmitReported} from "./api";
import {ElMessage, ElNotification} from "element-plus";
import {ElNotification} from "element-plus";
import {useTagsView} from '@/stores/tagsview.js'
import {useCacheStore} from '@/stores/cache.js'
import {useProcessStore} from '@/stores/processStore.js';
@@ -272,21 +277,22 @@ const formData = ref({
industryUniversityResearch: '0',
governmentDeclaration: '0',
})
const rules = reactive({
projectName: [{required: true, message: '请输入项目名称', trigger: 'blur'}],
specialFund: [{required: true, message: '请选择专项资金', trigger: 'blur'}],
startTime: [{required: true, message: '请选择开始时间', trigger: 'blur'}],
rdSubject: [{required: true, message: '请输入研发主体', trigger: 'blur'}],
projectType: [{required: true, message: '请选择项目类型', trigger: 'blur'}],
endTime: [{required: true, message: '请选择结束时间', trigger: 'blur'}],
investmentType: [{required: true, message: '请选择出资类型', trigger: 'blur'}],
projectImpact: [{required: true, message: '请选择项目影响', trigger: 'blur'}],
businessSegment: [{required: true, message: '请选择所属业务板块', trigger: 'blur'}],
resultForm: [{required: true, message: '请选择预期成果形式', trigger: 'blur'}],
technicalStandard: [{required: true, message: '请选择预期技术标准制定', trigger: 'blur'}],
industryUniversityResearch: [{required: true, message: '请选择产学研联合', trigger: 'blur'}],
governmentDeclaration: [{required: true, message: '请选择开展政府申报', trigger: 'blur'}],
intellectualProperty: [{required: true, message: '请选择知识产权状况', trigger: 'blur'}],
startTime: [{required: true, message: '请选择开始时间', trigger: ['blur', 'change']}],
endTime: [{required: true, message: '请选择结束时间', trigger: ['blur', 'change']}],
rdSubject: [{required: true, message: '请选择研发主体', trigger: ['blur', 'change']}],
projectType: [{required: true, message: '请选择项目类型', trigger: ['blur', 'change']}],
investmentType: [{required: true, message: '请选择出资类型', trigger: ['blur', 'change']}],
projectImpact: [{required: true, message: '请选择项目影响', trigger: ['blur', 'change']}],
businessSegment: [{required: true, message: '请选择所属业务板块', trigger: ['blur', 'change']}],
resultForm: [{required: true, message: '请选择预期成果形式', trigger: ['blur', 'change']}],
technicalStandard: [{required: true, message: '请选择预期技术标准制定', trigger: ['blur', 'change']}],
industryUniversityResearch: [{required: true, message: '请选择产学研联合', trigger: ['blur', 'change']}],
governmentDeclaration: [{required: true, message: '请选择开展政府申报', trigger: ['blur', 'change']}],
intellectualProperty: [{required: true, message: '请选择知识产权状况', trigger: ['blur', 'change']}],
inventionPatent: [{required: true, message: '请输入发明专利', trigger: 'blur'}],
newPatent: [{required: true, message: '请输入实用性新型专利', trigger: 'blur'}],
softwareCopyright: [{required: true, message: '请输入软件著作权', trigger: 'blur'}],
@@ -297,16 +303,33 @@ const rules = reactive({
serviceDescription: [{required: true, message: '请输入现有业务描述', trigger: 'blur'}],
contentDescription: [{required: true, message: '请输入研发项目关键内容描述', trigger: 'blur'}]
})
const disabledDate = (time) => {
return time.getTime() < new Date(formData.value.startTime).getTime();
}
const getIsFund = async () => {
getFormInfo(route.query.id).then(res => {
if (!route.query.id) return;
loading.value = true
await getFormInfo(route.query.id).then(res => {
if (res.code === 1000) {
loading.value = false
formData.value.isSpecialFund = res.data.isSpecialFund
if(res.data.isSpecialFund){
if (res.data.isSpecialFund) {
formData.value.specialFund = Number(res.data.specialFund)
}
}
})
}
const getSpecialFundName = (val) => {
let label
specialFundOption.value.forEach(item => {
if (item.value == val) {
label = item.label
}
})
return label
}
const compositeParam = (item, type) => {
let tag = ''
if (name.value === 'Summary/add' || name.value === 'Summary/edit') {
@@ -346,7 +369,13 @@ const getFileParam = (item) => {
const handleSubmit = debounce(async (instance) => {
if (!instance) return
instance.validate(async (valid, fields) => {
if (!valid) return
if (!valid) {
return ElNotification({
title: '提示',
message: '请完善数据,再提交!',
type: 'error'
})
}
let singleFile = {}
if (file.value.fileId !== undefined) {
singleFile = {
@@ -388,12 +417,13 @@ const handleSubmit = debounce(async (instance) => {
// }
let params = {
...formData.value,
isSpecialFund:false,
isSpecialFund: formData.value.isSpecialFund ? formData.value.isSpecialFund : false,
deploymentId: deploymentId.value,
fileList: otherFiles,
singleFile: singleFile,
requirementId: route.query.id
requirementId: route.query.id ? route.query.id : '-1'
}
console.log('params', params)
if (JSON.stringify(singleFile) === "{}") {
attachment.value.validate()
ElNotification({
@@ -402,10 +432,9 @@ const handleSubmit = debounce(async (instance) => {
type: 'error'
})
return;
}else {
} else {
attachment.value.clearValidate()
}
console.log('params', params)
let res = await requirementReported(params)
ElNotification({
title: '提示',
@@ -446,7 +475,7 @@ const handleResubmit = debounce(() => {
deploymentId: deploymentId.value,
fileList: otherFiles,
singleFile: singleFile,
requirementId: route.query.id
requirementId: route.query.id ? route.query.id : '-1'
}
if (JSON.stringify(singleFile) === "{}") {
attachment.value.validate()
@@ -456,7 +485,7 @@ const handleResubmit = debounce(() => {
type: 'error'
})
return;
}else {
} else {
attachment.value.clearValidate()
}
console.log('重新提交params', params)

View File

@@ -1,5 +1,5 @@
<template>
<steps :active="1" @setDetail="setDetail" @stepChange="stepChange">
<steps :active="1" @setDetail="setDetail" @stepChange="stepChange" :reportType="route.query.id=='-1'?'direct':''">
<template #content>
<collection-detail v-show="showActive == '00'" :formData="summaryData.formData" :data="summaryData"
:processViewer="summaryProcessViewer" :loading="loading"/>

View File

@@ -7,6 +7,7 @@
import {reactive, ref, shallowRef} from 'vue';
import fvSelect from '@/fvcomponents/fvSelect/index.vue'
import {useRouter} from 'vue-router';
const localData = reactive({})
const tableIns = ref()
@@ -82,7 +83,12 @@ const tableConfig = reactive({
},
{
prop: 'requirementName',
label: '名称',
label: '征集名称',
align: 'center'
},
{
prop: 'projectName',
label: '项目名称',
align: 'center'
},
{
@@ -164,9 +170,9 @@ const tableConfig = reactive({
if (buttons.has("edit")) {
btn.push({label: '编辑', prem: ['mosr:collect:resubmit'], func: () => handleEdit(row), type: 'primary'})
}
if (buttons.has("report")) {
btn.push({label: '上报', prem: ['mosr:collect:reported'], func: () => handleAdd(row), type: 'primary'})
}
// if (buttons.has("report")) {
// btn.push({label: '上报', prem: ['mosr:collect:reported'], func: () => handleAdd(row), type: 'primary'})
// }
return (
<div style={{width: '100%'}}>
{
@@ -184,7 +190,7 @@ const tableConfig = reactive({
{
buttons.has("delete") ?
<popover-delete name={row.requirementName} type={'需求'} btnType={'danger'}
perm={['mosr:collect:del']} onDelete={() => handleDelete(row)}/>
perm={['mosr:collect:del']} onDelete={() => handleDelete(row)}/>
: ''
}
</div>
@@ -195,10 +201,18 @@ const tableConfig = reactive({
api: '/workflow/mosr/requirement/collect',
params: {},
btns: [
{name: '年度计划导出', key: '_export', color: '#DED0B2', auth: ''},
{name: '经费预算生成', key: 'preMonty', color: '#DED0B2', auth: ''},
{name: '新增上报', key: 'add', color: '#DED0B2', auth: ''},
{name: '年度计划导出', key: '_export', auth: ''},
{name: '经费预算生成', key: 'preMonty', auth: ''},
]
})
const headBtnClick = (key) => {
switch (key) {
case 'add':
handleAdd()
break;
}
}
const search = (val) => {
let obj = {...val}
@@ -211,11 +225,11 @@ const search = (val) => {
tableIns.value.refresh()
}
const handleAdd = (row) => {
const handleAdd = () => {
router.push({
name: 'Summary/add',
query: {
id: row.requirementId
// id: row.requirementId
}
})
}
@@ -232,7 +246,7 @@ const handleDetail = (row) => {
router.push({
name: 'Summary/detail',
query: {
id: row.requirementId,
id: row.requirementId===null?'-1':row.requirementId,
projectId: row.projectId,
state: row.state
}

View File

@@ -85,7 +85,7 @@ const showTable = ref(true)
const tagForm = ref()
const name = ref(router.currentRoute.value.name)
const rules = reactive({
tagName: [{required: true, message: '请输入标签名称', trigger: 'blur'}],
tagName: [{required: true, message: '请输入标签名称', trigger: ['blur', 'change']}],
})
const changeInput=()=>{
showInput.value=!showInput.value;