Files
mosr-web/src/views/project-management/implementation/account.vue

297 lines
6.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<baseTitle title="基础信息"></baseTitle>
<fvForm :schema="schema" @getInstance="(e)=>baseForm = e"></fvForm>
<fvSearchForm :searchConfig="searchConfig" @search="search"></fvSearchForm>
<fvTable ref="tableIns" :tableConfig="tableConfig" @headBtnClick="headBtnClick">
<template #empty>
<el-empty description="暂无数据"/>
</template>
</fvTable>
</template>
<script setup lang="jsx">
import fvSelect from '@/fvcomponents/fvSelect/index.vue'
import {toThousands} from '@/utils/changePrice.js'
import {getBaseInfoApi} from "@/components/steps/api";
import {searchUpdateLedgerData} from "@/api/project-manage";
import {ElNotification} from "element-plus";
const router = useRouter()
const route = useRoute()
const formArray = ref([
{
label: '征集名称',
prop: 'requirementName',
colProps: {
span: 12
}
},
{
label: '项目名称',
prop: 'projectName',
colProps: {
span: 12
}
}
])
const formDataArray = ref([
{
label: '征集名称',
prop: 'requirementName',
colProps: {
span: 12
}
},
{
label: '项目名称',
prop: 'projectName',
colProps: {
span: 12
}
},
{
label: '项目负责人',
prop: 'projectChargePerson',
colProps: {
span: 12
}
},
{
label: '项目开始时间',
prop: 'startTime',
colProps: {
span: 12
}
},
{
label: '项目预计持续时间',
prop: 'endTime',
colProps: {
span: 12
}
},
{
label: '项目开展方式',
prop: 'projectDevelopmentWay',
colProps: {
span: 24
}
},
{
label: '项目预算',
prop: 'projectBudgetDescription',
colProps: {
span: 24
}
},
{
label: '项目总体完成率(%',
prop: 'projectCompletionRate',
colProps: {
span: 6
}
},
{
label: '已完成工作量',
prop: 'completeWork',
colProps: {
span: 18
}
}
])
const tableData = ref({})
const schema = computed(() => {
if (JSON.stringify(tableData.value) !== '{}') {
return formDataArray.value
} else {
return formArray.value
}
})
const baseForm = ref()
const tableIns = ref()
const btns = ref([
{name: '表格更新', key: 'update', color: '#DED0B2', auth: ''}
])
const searchConfig = reactive([
{
label: '时间',
prop: 'time',
component: 'el-date-picker',
props: {
placeholder: '请选择时间',
clearable: true,
valueFormat: 'YYYY-MM-DD HH:mm:ss',
},
colProps: {}
},
{
label: '项目费用',
prop: 'projectCost',
component: shallowRef(fvSelect),
props: {
placeholder: '请选择项目费用查询',
clearable: true,
filterable: true,
cacheKey: 'project_cost',
}
},
{
label: '研发阶段',
prop: 'researchStage',
component: shallowRef(fvSelect),
props: {
placeholder: '请选择研发阶段查询',
clearable: true,
filterable: true,
checkStrictly: true,
cacheKey: 'fee_stage',
}
},
{
label: '税后余额',
prop: 'afterTax',
component: 'el-input',
props: {
placeholder: '请输入税后余额查询',
clearable: true,
filterable: true,
checkStrictly: true
}
},
{
label: '摘要',
prop: 'digest',
component: 'el-input',
props: {
placeholder: '请输入摘要查询',
clearable: true,
filterable: true,
checkStrictly: true
}
},
])
const tableConfig = reactive({
columns: [
{
prop: 'name',
type: 'index',
label: '序号',
width: '80',
align: 'center'
},
{
prop: 'time',
label: '时间',
align: 'center'
},
{
prop: 'projectCost',
label: '项目费用',
align: 'center',
showOverflowTooltip: false,
currentRender: ({row, index}) => {
if (row.projectCost !== null && row.projectCost !== null && row.projectCost !== undefined) {
return (<Tag dictType={'project_cost'} value={row.projectCost}/>)
} else {
return '--'
}
}
},
{
prop: 'researchStage',
label: '研发阶段',
align: 'center',
showOverflowTooltip: false,
currentRender: ({row, index}) => {
if (row.researchStage && row.researchStage !== null && row.researchStage !== undefined) {
return (<Tag dictType={'research_stage'} value={row.researchStage}/>)
} else {
return '--'
}
}
},
{
prop: 'digest',
label: '摘要',
align: 'center'
},
{
prop: 'afterTax',
label: '税后余额(元)',
align: 'center',
currentRender: ({row}) => {
return <span>{toThousands(row.afterTax)}</span>
}
},
],
api: '/workflow/mosr/expense/ledger',
params: {
projectId: route.query.id
},
btns: btns.value
})
if (route.query.state !== '4') {
btns.value.push({name: '上传费用', key: 'add', color: '#DED0B2', auth: ''})
}
const handleUpdateTable = () => {
router.push({
name: 'Implementation/update',
query: {
id: route.query.id
}
})
}
const getBaseInfo = async () => {
try {
const {code, data} = await getBaseInfoApi(route.query.id)
baseForm.value.setValues(data)
} catch {
}
}
getBaseInfo()
const headBtnClick = (key) => {
switch (key) {
case 'add':
handleUploadFee()
break;
case 'update':
handleUpdateTable()
break;
}
}
const handleUploadFee = () => {
router.push({
name: 'Implementation/uploadFee',
query: {
id: route.query.id
}
})
}
const search = (val) => {
tableConfig.params = {...val, projectId: route.query.id}
tableIns.value.refresh()
}
const init = async () => {
const {code, msg, data} = await searchUpdateLedgerData(route.query.id)
if (data) {
tableData.value = data
baseForm.value.setValues(data)
}
// if (code !== 1000) {
// ElNotification({
// title: '提示',
// message: msg,
// type: 'error'
// })
// }
}
init()
</script>
<style scoped>
</style>