add
This commit is contained in:
parent
9324c668d7
commit
ef1ca3769f
src
api
views
41
src/api/financial_budget_doc_detail.ts
Normal file
41
src/api/financial_budget_doc_detail.ts
Normal file
@ -0,0 +1,41 @@
|
||||
import request from "@/utils/request";
|
||||
|
||||
// 财务管理--项目预算书列表
|
||||
export function apiFinancialBudgetDocDetailLists(params: any) {
|
||||
return request.get({
|
||||
url: "/financial.financial_budget_doc_detail/lists",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加财务管理--项目预算书
|
||||
export function apiFinancialBudgetDocDetailAdd(params: any) {
|
||||
return request.post({
|
||||
url: "/financial.financial_budget_doc_detail/add",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
// 编辑财务管理--项目预算书
|
||||
export function apiFinancialBudgetDocDetailEdit(params: any) {
|
||||
return request.post({
|
||||
url: "/financial.financial_budget_doc_detail/edit",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
// 删除财务管理--项目预算书
|
||||
export function apiFinancialBudgetDocDetailDelete(params: any) {
|
||||
return request.post({
|
||||
url: "/financial.financial_budget_doc_detail/delete",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
// 财务管理--项目预算书详情
|
||||
export function apiFinancialBudgetDocDetailDetail(params: any) {
|
||||
return request.get({
|
||||
url: "/financial.financial_budget_doc_detail/detail",
|
||||
params,
|
||||
});
|
||||
}
|
84
src/views/financial_budget_doc/detail.js
Normal file
84
src/views/financial_budget_doc/detail.js
Normal file
@ -0,0 +1,84 @@
|
||||
import { apiFinancialBudgetDocDetailLists } from '@/api/financial_budget_doc_detail'
|
||||
|
||||
|
||||
const detailConfig = {
|
||||
title: "财务管理--项目预算书",
|
||||
config: [
|
||||
{
|
||||
label: "合同名称",
|
||||
value: "contract_name"
|
||||
},
|
||||
{
|
||||
label: "合同类型",
|
||||
value: "contract_type_text"
|
||||
},
|
||||
{
|
||||
label: "甲方签约单位",
|
||||
value: "part_a"
|
||||
},
|
||||
|
||||
{
|
||||
label: "签订金额",
|
||||
value: "money"
|
||||
},
|
||||
{
|
||||
label: "合同签订日期",
|
||||
value: "create_date"
|
||||
},
|
||||
{
|
||||
label: "预算书名称",
|
||||
value: "name"
|
||||
},
|
||||
{
|
||||
label: "下达日期",
|
||||
value: "issue_date"
|
||||
},
|
||||
{
|
||||
label: "创建人",
|
||||
value: "create_user"
|
||||
},
|
||||
{
|
||||
label: "创建时间",
|
||||
value: "create_time"
|
||||
},
|
||||
{
|
||||
label: "备注",
|
||||
value: "remark",
|
||||
column: 1,
|
||||
},
|
||||
{
|
||||
label: "附件",
|
||||
value: "annex",
|
||||
column: 1,
|
||||
},
|
||||
|
||||
],
|
||||
table: {
|
||||
title: "发票明细",
|
||||
tableConfig: [
|
||||
{
|
||||
label: "部门",
|
||||
value: 'dept_text',
|
||||
|
||||
},
|
||||
{
|
||||
label: "预算分成方式",
|
||||
value: 'type_text'
|
||||
},
|
||||
{
|
||||
label: "预算分成金额",
|
||||
value: 'amount',
|
||||
},
|
||||
{
|
||||
label: "备注",
|
||||
value: 'remark',
|
||||
},
|
||||
|
||||
|
||||
],
|
||||
query: 'budget_doc_id',
|
||||
fetchFun: apiFinancialBudgetDocDetailLists,
|
||||
}
|
||||
|
||||
}
|
||||
export default detailConfig;
|
@ -1,36 +1,112 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="合同id" prop="contract_id">
|
||||
<el-input v-model="formData.contract_id" clearable placeholder="请输入合同id" />
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同名称" prop="contract_name">
|
||||
<el-input v-model="formData.contract_name" clearable placeholder="点击选择合同"
|
||||
@click="showDialog = true" readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label="预算书编号" prop="code">
|
||||
<el-input v-model="formData.code" clearable placeholder="请输入预算书编号" />
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同类型">
|
||||
<el-input v-model="formData.contract_type_text" clearable placeholder="系统自动获取" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="甲方签约单位">
|
||||
<el-input v-model="formData.part_a" clearable placeholder="系统自动获取" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="签订金额(元)">
|
||||
<el-input v-model="formData.money" clearable placeholder="系统自动获取" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同签订日期">
|
||||
<el-input v-model="formData.create_date" clearable placeholder="系统自动获取" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="预算书名称" prop="name">
|
||||
<el-input v-model="formData.name" clearable placeholder="请输入预算书名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="下达日期" prop="issue_date">
|
||||
<el-input v-model="formData.issue_date" clearable placeholder="请输入下达日期" />
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.issue_date" clearable
|
||||
value-format="YYYY-MM-DD" placeholder="选择下达日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="附件" prop="annex">
|
||||
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||
</el-form-item>
|
||||
<el-form-item label="创建人" prop="create_user">
|
||||
<el-input v-model="formData.create_user" clearable placeholder="请输入创建人" />
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<createUserLable flag :formData="formData" />
|
||||
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-col :span="24">
|
||||
<div style="margin-bottom: 30px;">发票明细</div>
|
||||
<div style="margin-bottom: 30px;">
|
||||
<el-table :data="formData.detail">
|
||||
<template #empty>
|
||||
暂无数据,点击添加
|
||||
<el-button @click="handleAdd" size="small">+</el-button>
|
||||
</template>
|
||||
<el-table-column label="序号">
|
||||
|
||||
<template #default="{ row }">
|
||||
<el-button @click="handleAdd" size="small">+</el-button>
|
||||
<el-button @click="handleDelete(row)" size="small">-</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="部门">
|
||||
<template #default="{ row }">
|
||||
<el-select v-model="row.dept_id" placeholder="请选择部门">
|
||||
<el-option :label="item.name" :value="item.id" v-for="item in deptList">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="预算分成方式">
|
||||
<template #default="{ row }">
|
||||
<el-select v-model="row.type" placeholder="请选择">
|
||||
<el-option :label="item.name" :value="parseInt(item.value)"
|
||||
v-for="item in dictData.budget_share_method">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="预算分成金额">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.amount" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="备注" prop="remark">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.remark" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-col>
|
||||
|
||||
<el-dialog v-model="showDialog" title="选择合同" width="70%">
|
||||
<dialogTable :config="cost_approved_projects" @customEvent="customEvent">
|
||||
</dialogTable>
|
||||
</el-dialog>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
@ -39,8 +115,13 @@
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiFinancialBudgetDocAdd, apiFinancialBudgetDocEdit, apiFinancialBudgetDocDetail } from '@/api/financial_budget_doc'
|
||||
import { apiFinancialBudgetDocDetailLists, apiFinancialBudgetDocDetailDelete } from '@/api/financial_budget_doc_detail'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
import { cost_approved_projects } from "@/components/dialogTable/dialogTableConfig";
|
||||
import { deptLists } from "@/api/org/department"
|
||||
|
||||
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
@ -51,6 +132,8 @@ const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const showDialog = ref(false)
|
||||
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
@ -62,15 +145,44 @@ const popupTitle = computed(() => {
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
contract_id: '',
|
||||
contract_name: '',
|
||||
code: '',
|
||||
name: '',
|
||||
issue_date: '',
|
||||
remark: '',
|
||||
annex: '',
|
||||
create_user: '',
|
||||
create_time: '',
|
||||
detail: [],
|
||||
"contract_type_text": "",
|
||||
"part_a": "",
|
||||
"money": "",
|
||||
"create_date": "",
|
||||
})
|
||||
|
||||
|
||||
const handleAdd = (row) => {
|
||||
// 在 row 后面插入一行数据
|
||||
formData.detail.push({});
|
||||
};
|
||||
|
||||
const handleDelete = async (row) => {
|
||||
if (row.id) await apiFinancialBudgetDocDetailDelete({ id: row.id })
|
||||
// 删除 row
|
||||
const index = formData.detail.indexOf(row);
|
||||
formData.detail.splice(index, 1);
|
||||
};
|
||||
|
||||
const customEvent = (e) => {
|
||||
formData.contract_id = e.id
|
||||
formData.contract_name = e.contract_name
|
||||
formData.contract_type_text = e.contract_type_text
|
||||
formData.part_a = e.part_a
|
||||
formData.money = e.money
|
||||
formData.create_date = e.create_date
|
||||
showDialog.value = false
|
||||
}
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
contract_id: [{
|
||||
@ -114,7 +226,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
let res = await apiFinancialBudgetDocDetailLists({ budget_doc_id: data.id })
|
||||
formData.detail = res.lists
|
||||
|
||||
}
|
||||
|
||||
@ -149,7 +262,13 @@ const handleClose = () => {
|
||||
}
|
||||
|
||||
|
||||
const deptList = ref([])
|
||||
const getDeptList = async () => {
|
||||
let res = await deptLists()
|
||||
deptList.value = res.lists
|
||||
}
|
||||
|
||||
getDeptList()
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
|
@ -1,13 +1,10 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form-item label="合同id" prop="contract_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.contract_id" clearable placeholder="请输入合同id" />
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="合同名称" prop="contract_id">
|
||||
<select-remote model="contract_id" :formData="queryParams"
|
||||
:api="apiCostApprovedProjectSerch"></select-remote>
|
||||
</el-form-item>
|
||||
<el-form-item label="预算书编号" prop="code">
|
||||
<el-input class="w-[280px]" v-model="queryParams.code" clearable placeholder="请输入预算书编号" />
|
||||
@ -28,38 +25,32 @@
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['financial.financial_budget_doc/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
<el-button v-perms="['financial.financial_budget_doc/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="合同id" prop="contract_id" show-overflow-tooltip />
|
||||
<el-table-column label="合同名称" prop="contract_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="合同金额" prop="total_amount" width="150" />
|
||||
<el-table-column label="预算书编号" prop="code" show-overflow-tooltip />
|
||||
<el-table-column label="预算书名称" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="下达日期" prop="issue_date" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<el-table-column label="操作" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['financial.financial_budget_doc/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
<el-button v-perms="['financial.financial_budget_doc/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['financial.financial_budget_doc/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
<el-button v-perms="['financial.financial_budget_doc/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['financial.financial_budget_doc/detail']" link
|
||||
@click="handleDetail(row.id)">
|
||||
详情
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -69,20 +60,26 @@
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig" />
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="financialBudgetDocLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiFinancialBudgetDocLists, apiFinancialBudgetDocDelete } from '@/api/financial_budget_doc'
|
||||
import { apiFinancialBudgetDocLists, apiFinancialBudgetDocDelete, apiFinancialBudgetDocDetail } from '@/api/financial_budget_doc'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import detailConfig from './detail'
|
||||
import { apiCostApprovedProjectSerch } from "@/api/cost_approved_project";
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
const detailRef = ref('')
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const showDetail = ref(false)
|
||||
|
||||
|
||||
// 查询条件
|
||||
@ -101,7 +98,7 @@ const handleSelectionChange = (val: any[]) => {
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
const { dictData } = useDictData('budget_share_method')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
@ -118,10 +115,11 @@ const handleAdd = async () => {
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
let res = await apiFinancialBudgetDocDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(data)
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
@ -131,6 +129,14 @@ const handleDelete = async (id: number | any[]) => {
|
||||
getLists()
|
||||
}
|
||||
|
||||
// 详情
|
||||
const handleDetail = async (id: any) => {
|
||||
let res = await apiFinancialBudgetDocDetail({ id })
|
||||
showDetail.value = true
|
||||
await nextTick()
|
||||
detailRef.value?.open()
|
||||
detailRef.value?.setFormData(res)
|
||||
}
|
||||
getLists()
|
||||
</script>
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
<el-form-item label="评审内容" prop="review_content">
|
||||
<el-input v-model="formData.review_content" clearable placeholder="请输入评审内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-form-item label="备注">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||
</el-form-item>
|
||||
<createUserLable :formData="formData"></createUserLable>
|
||||
|
Loading…
x
Reference in New Issue
Block a user