This commit is contained in:
zmj 2024-02-19 18:01:49 +08:00
parent e35c1d64d3
commit 1712af2535
49 changed files with 1544 additions and 824 deletions

View File

@ -24,3 +24,12 @@ export function apiBidDocumentExaminationDetailDelete(params: any) {
export function apiBidDocumentExaminationDetailDetail(params: any) {
return request.get({ url: '/bid.bid_document_examination_detail/detail', params })
}
// 标书审查-提交审批
export function apibidDocumentExaminationApprove(params: any) {
return request.post({ url: '/bid.bid_document_examination/approve', params })
}
// 标书审查-审批详情
export function apibidDocumentExaminationFlows() {
return request.get({ url: '/bid.bid_document_examination/flows' })
}

299
src/api/flowSet.ts Normal file
View File

@ -0,0 +1,299 @@
import request from '@/utils/request'
// 标书审查-提交审批
export function apibidDocumentExaminationApprove(params: any) {
return request.post({ url: '/bid.bid_document_examination/approve', params })
}
// 标书审查-审批详情
export function apibidDocumentExaminationFlows() {
return request.get({ url: '/bid.bid_document_examination/flows' })
}
// 投标决策-提交审批
export function apibid_bidding_decisionApprove(params: any) {
return request.post({ url: '/bid.bid_bidding_decision/approve', params })
}
// 投标决策-审批详情
export function apibid_bidding_decisionFlows() {
return request.get({ url: '/bid.bid_bidding_decision/flows' })
}
// 购买标书-提交审批
export function apibid_buy_bidding_documentApprove(params: any) {
return request.post({ url: '/bid.bid_buy_bidding_document/approve', params })
}
// 购买标书-审批详情
export function apibid_buy_bidding_documentFlows() {
return request.get({ url: '/bid.bid_buy_bidding_document/flows' })
}
// 项目合同-提交审批
export function apicontractApprove(params: any) {
return request.post({ url: '/contract.contract/approve', params })
}
// 项目合同-审批详情
export function apicontractFlows() {
return request.get({ url: '/contract.contract/flows' })
}
// 合同洽商-提交审批
export function apicontract_negotiationApprove(params: any) {
return request.post({ url: '/contract.contract_negotiation/approve', params })
}
// 合同洽商-审批详情
export function apicontract_negotiationFlows() {
return request.get({ url: '/contract.contract_negotiation/flows' })
}
// 采购合同-提交审批
export function apiprocurement_contractApprove(params: any) {
return request.post({ url: '/contract.procurement_contract/approve', params })
}
// 采购合同-审批详情
export function apiprocurement_contractFlows() {
return request.get({ url: '/contract.procurement_contract/flows' })
}
// 分包合同-提交审批
export function apisubcontracting_contractApprove(params: any) {
return request.post({ url: '/contract.subcontracting_contract/approve', params })
}
// 分包合同-审批详情
export function apisubcontracting_contractFlows() {
return request.get({ url: '/contract.subcontracting_contract/flows' })
}
// 分包洽商-提交审批
export function apisubcontracting_contract_negotiationApprove(params: any) {
return request.post({ url: '/contract.subcontracting_contract_negotiation/approve', params })
}
// 分包洽商-审批详情
export function apisubcontracting_contract_negotiationFlows() {
return request.get({ url: '/contract.subcontracting_contract_negotiation/flows' })
}
// 开票申请-提交审批
export function apiInvoicingRequestsApprove(params: any) {
return request.post({ url: '/finance.finance_invoice_apply/approve', params })
}
// 开票申请-审批详情
export function apiInvoicingRequestsFlows() {
return request.get({ url: '/finance.finance_invoice_apply/flows' })
}
// 回款计划-提交审批
export function apifinance_returned_moneyApprove(params: any) {
return request.post({ url: '/finance.finance_returned_money/approve', params })
}
// 回款计划-审批详情
export function apifinance_returned_moneyFlows() {
return request.get({ url: '/finance.finance_returned_money/flows' })
}
// 回款记录-提交审批
export function apifinance_returned_recordApprove(params: any) {
return request.post({ url: '/finance.finance_returned_record/approve', params })
}
// 回款记录-审批详情
export function apifinance_returned_recordFlows() {
return request.get({ url: '/finance.finance_returned_record/flows' })
}
// 退款申请-提交审批
export function apifinance_refund_applyApprove(params: any) {
return request.post({ url: '/finance.finance_refund_apply/approve', params })
}
// 退款申请-审批详情
export function apifinance_refund_applydFlows() {
return request.get({ url: '/finance.finance_refund_apply/flows' })
}
// 收票记录-提交审批
export function apifinance_receipt_recordApprove(params: any) {
return request.post({ url: '/finance.finance_receipt_record/approve', params })
}
// 收票记录-审批详情
export function apifinance_receipt_recordFlows() {
return request.get({ url: '/finance.finance_receipt_record/flows' })
}
// 付款计划-提交审批
export function apifinance_payment_planApprove(params: any) {
return request.post({ url: '/finance.finance_payment_plan/approve', params })
}
// 付款计划-审批详情
export function apifinance_payment_planFlows() {
return request.get({ url: '/finance.finance_payment_plan/flows' })
}
// 付款申请-提交审批
export function apifinance_payment_applyApprove(params: any) {
return request.post({ url: '/finance.finance_payment_apply/approve', params })
}
// 付款申请-审批详情
export function apifinance_payment_applyFlows() {
return request.get({ url: '/finance.finance_payment_apply/flows' })
}
// 退款记录-提交审批
export function apifinance_refund_recordApprove(params: any) {
return request.post({ url: '/finance.finance_refund_record/approve', params })
}
// 退款记录-审批详情
export function apifinance_refund_recordFlows() {
return request.get({ url: '/finance.finance_refund_record/flows' })
}
// 保证金-提交审批
export function apibid_security_applyApprove(params: any) {
return request.post({ url: '/bid.bid_security_apply/approve', params })
}
// 保证金-审批详情
export function apibid_security_applyFlows() {
return request.get({ url: '/bid.bid_security_apply/flows' })
}
// 推投标保证金-提交审批
export function apibid_security_refundApprove(params: any) {
return request.post({ url: '/bid.bid_security_refund/approve', params })
}
// 推投标保证金-审批详情
export function apbid_security_refundFlows() {
return request.get({ url: '/bid.bid_security_refund/flows' })
}
// 项目结算-提交审批
export function apiproject_settlementApprove(params: any) {
return request.post({ url: '/project.project_settlement/approve', params })
}
// 项目结算-审批详情
export function apiproject_settlementFlows() {
return request.get({ url: '/project.project_settlement/flows' })
}
// 分包结算-提交审批
export function apiproject_subcontract_settlementApprove(params: any) {
return request.post({ url: '/project.project_subcontract_settlement/approve', params })
}
// 分包结算-审批详情
export function apiproject_subcontract_settlementFlows() {
return request.get({ url: '/project.project_subcontract_settlement/flows' })
}
// 总预算-提交审批
export function apiproject_total_budgetApprove(params: any) {
return request.post({ url: '/project.project_total_budget/approve', params })
}
// 总预算-审批详情
export function apiproject_total_budgetFlows() {
return request.get({ url: '/project.project_total_budget/flows' })
}
// 材料预算-提交审批
export function apiproject_material_budgetApprove(params: any) {
return request.post({ url: '/project.project_material_budget/approve', params })
}
// 材料预算-审批详情
export function apiproject_material_budgetFlows() {
return request.get({ url: '/project.project_material_budget/flows' })
}
// 材料预算明细-提交审批
export function apiproject_material_budget_detailApprove(params: any) {
return request.post({ url: '/project.project_material_budget_detail/approve', params })
}
// 材料预算明细-审批详情
export function apiproject_material_budget_detailFlows() {
return request.get({ url: '/project.project_material_budget_detail/flows' })
}
// 分包预算-提交审批
export function apiproject_subpackage_budgetApprove(params: any) {
return request.post({ url: '/project.project_subpackage_budget/approve', params })
}
// 分包预算-审批详情
export function apiproject_subpackage_budgetFlows() {
return request.get({ url: '/project.project_subpackage_budget/flows' })
}
// 分包预算明细-提交审批
export function apiproject_subpackage_budget_detailApprove(params: any) {
return request.post({ url: '/project.project_subpackage_budget_detail/approve', params })
}
// 分包预算明细-审批详情
export function approject_subpackage_budget_detailFlows() {
return request.get({ url: '/project.project_subpackage_budget_detail/flows' })
}
// 人工预算-提交审批
export function apiproject_labor_budgetApprove(params: any) {
return request.post({ url: '/project.project_labor_budget/approve', params })
}
// 人工预算-审批详情
export function apiproject_labor_budgetFlows() {
return request.get({ url: '/project.project_labor_budget/flows' })
}
// 机具预算-提交审批
export function apiproject_equipment_budgetApprove(params: any) {
return request.post({ url: '/project.project_equipment_budget/approve', params })
}
// 机具预算-审批详情
export function apiproject_equipment_budgetFlows() {
return request.get({ url: '/project.project_equipment_budget/flows' })
}
// 费用预算-提交审批
export function apiproject_cost_budgetApprove(params: any) {
return request.post({ url: '/project.project_cost_budget/approve', params })
}
// 费用预算-审批详情
export function apiproject_cost_budgetFlows() {
return request.get({ url: '/project.project_cost_budget/flows' })
}
// 出差申请-提交审批
export function apiproject_trip_applyApprove(params: any) {
return request.post({ url: '/project.project_trip_apply/approve', params })
}
// 出差申请-审批详情
export function apiproject_trip_applyFlows() {
return request.get({ url: '/project.project_trip_apply/flows' })
}
// 借款申请-提交审批
export function apiproject_loan_applyApprove(params: any) {
return request.post({ url: '/project.project_loan_apply/approve', params })
}
// 借款申请-审批详情
export function apiproject_loan_applyFlows() {
return request.get({ url: '/project.project_loan_apply/flows' })
}
// 成本调整-提交审批
export function apiproject_cost_adjustmentApprove(params: any) {
return request.post({ url: '/project.project_cost_adjustment/approve', params })
}
// 成本调整-审批详情
export function apiproject_cost_adjustmentFlows() {
return request.get({ url: '/project.project_cost_adjustment/flows' })
}
// 差旅报销-提交审批
export function apiproject_travel_reimbursementApprove(params: any) {
return request.post({ url: '/project.project_travel_reimbursement/approve', params })
}
// 差旅报销-审批详情
export function apiproject_travel_reimbursementFlows() {
return request.get({ url: '/project.project_travel_reimbursement/flows' })
}
// 差旅报销-提交审批
export function apiproject_expense_reimbursementApprove(params: any) {
return request.post({ url: '/project.project_expense_reimbursement/approve', params })
}
// 差旅报销-审批详情
export function apiproject_expense_reimbursementFlows() {
return request.get({ url: '/project.project_expense_reimbursement/flows' })
}
// 采购申请-提交审批
export function apimaterial_purchase_requestApprove(params: any) {
return request.post({ url: '/material.material_purchase_request/approve', params })
}
// 采购申请-审批详情
export function apimaterial_purchase_requestFlows() {
return request.get({ url: '/material.material_purchase_request/flows' })
}

View File

@ -1,7 +1,7 @@
<template>
<div class="edit-popup">
<el-card>
<el-descriptions :column="3" title="审21批详情" border>
<el-descriptions :column="3" title="审批详情" border>
<el-descriptions-item label="审批主题" label-align="left" align="left" label-class-name="my-label">
{{ formData.title }}
</el-descriptions-item>
@ -29,14 +29,17 @@
</el-steps>
</el-descriptions-item>
<el-descriptions-item label="审批记录" label-align="left" align="left">
<div class="steps-cls">
<el-steps direction="vertical" :active="formData.record.length" :align-center="true" :space="50"
style="margin-top: 20px">
<el-step :title="item.check_time + item.title" v-for="(item, index) in formData.record"
:key="index" />
</el-steps>
</div>
</el-descriptions-item>
<div v-if="formData?.current_check_user_ids?.includes(String(userInfo.id))">
<div v-if="formData?.current_check_user_ids?.includes(String(userInfo.id)) && formData.check_status != 3">
<el-descriptions-item label="操作" label-align="left" align="left">
<el-form-item label="意见">
<el-input v-model="remark" clearable placeholder="请输入" type="textarea" />
@ -48,18 +51,13 @@
<el-button @click="checkFn(2)">
拒绝
</el-button>
<el-button @click="revokeFn"
v-if="(formData?.check_status == 0 && formData.create_user == userInfo.id) && (formData.check_status != 3)">
撤销
</el-button>
</el-form-item>
</el-descriptions-item>
</div>
<el-descriptions-item label="操作" label-align="left" align="left"
v-if="formData?.check_status == 0 && formData.create_user == userInfo.id">
<el-form-item label="意见">
<el-input v-model="remark" clearable placeholder="请输入" type="textarea" />
</el-form-item>
<el-button @click="revokeFn">
撤销
</el-button>
</el-descriptions-item>
</el-descriptions>
</el-card>
</div>
@ -74,10 +72,11 @@ const userStore = useUserStore()
const userInfo = computed(() => userStore.userInfo)
const props = defineProps({
approve_id: Number
approve_id: Number,
})
let activeStep = ref(0)
const remark = ref('')
const remark2 = ref('')
const emit = defineEmits(['off'])
const popupRef = shallowRef<InstanceType<typeof Popup>>()
@ -156,6 +155,7 @@ const checkFn = async (i: Number) => {
}
const getStep = (item: Object, index: Number) => {
if (index == 0) { return formData.create_user_name + '创建' }
else { return item?.flow_step_text }
}
@ -165,7 +165,6 @@ flowapproveDetail({ id: props.approve_id }).then(res => {
setFormData(res)
})
defineExpose({
open,
setFormData,
@ -177,4 +176,9 @@ defineExpose({
.el-step.is-simple .el-step__icon {
margin-top: 15px;
}
.steps-cls {
max-height: 200px;
overflow-y: auto;
}
</style>

View File

@ -10,9 +10,9 @@
<el-col :span="8">
<el-form-item label="审批流程" prop="flow_cate">
<el-select class="flex-1" v-model="formData.flow_path" clearable @change="getDetail"
<el-select class="flex-1" v-model="formData.flow_id" clearable @change="getDetail"
placeholder="请选择审批类型">
<el-option v-for="(item, index) in flowTypeList" :key="index" :label="item.name"
<el-option v-for="(item, index) in flows" :key="index" :label="item.name"
:value="parseInt(item.id)" />
</el-select>
</el-form-item>
@ -37,7 +37,7 @@
</el-col>
</el-row>
<el-row>
<el-button @click="submit" type="primary" :disabled="!formData.flow_path">
<el-button @click="submit" type="primary" :disabled="!formData.flow_id">
提交
</el-button>
</el-row>
@ -52,45 +52,48 @@ import { useRoute } from "vue-router"
const route = useRoute()
const props = defineProps({
id: Number
id: Number,
flows: Object,
submitApi: Object,
})
const emit = defineEmits(['off'])
const formData = reactive({
flow_path: "",
path: route.path
flow_id: "",
path: route.path,
id: props.id
})
//
const flowTypeList = ref([{
"id": 1,
"name": "fgfdgd",
"flow_cate": "1212",
"check_type": "固定审批流",
"remark": "vcggfhfghfg",
"status": "启用",
"flow_type": "财务",
"org_name": "海之农",
"dept_name": "技术部,张伟自己的部门"
}])
// //
// const flowTypeList = ref([{
// "id": 1,
// "name": "fgfdgd",
// "flow_cate": "1212",
// "check_type": "",
// "remark": "vcggfhfghfg",
// "status": "",
// "flow_type": "",
// "org_name": "",
// "dept_name": ","
// }])
const getFlowTypeList = async () => {
// const getFlowTypeList = async () => {
// let res = await apiFlowLists({ id: 1 })
// flowTypeList.value = res
// // let res = await apiFlowLists({ id: 1 })
// // flowTypeList.value = res
}
// }
//
const flowDetail = ref({})
const getDetail = async () => {
let res = await apiFlowDetail({ id: formData.flow_path })
let res = await apiFlowDetail({ id: formData.flow_id })
flowDetail.value = res
}
@ -99,10 +102,12 @@ const getDescr = (item) => { return item.flow_step == 1 ? "当前部门负责人
//
const submit = async () => {
// await apiFlowLists({
await props.submitApi({
...formData
// id: props.id,
// flow_id:
// as: { ...formData }
// })
})
emit('off')
@ -113,5 +118,5 @@ const numberToChinese = (num) => {
let chineseNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"];
return chineseNum[num];
}
getFlowTypeList()
// getFlowTypeList()
</script>

View File

@ -92,7 +92,18 @@
</el-descriptions>
<flowDetail :approve_id="formData?.approve_id" />
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiInvoicingRequestsApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiInvoicingRequestsApprove, apiInvoicingRequestsFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apisubcontracting_contract_negotiationFlows()
flows.value = res
} -->
</el-form>
</popup>
@ -104,7 +115,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apiInvoicingRequestsApprove, apiInvoicingRequestsFlows } from '@/api/flowSet.ts'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -116,11 +127,7 @@ const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const formDataannex = reactive([])
const datas = reactive({
provinceOptions: [],
cityOptions: [],
areaOptions: [],
});
//
@ -134,7 +141,6 @@ const formData = reactive({
//
const setFormData = async (data: Record<any, any>) => {
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
name: `文件${index + 1}`,
@ -142,22 +148,9 @@ const setFormData = async (data: Record<any, any>) => {
};
});
Object.assign(formDataannex, arry1)
}
// for (const key in formData) {
// if (data[key] != null && data[key] != undefined) {
// //@ts-ignore
// formData[key] = data[key]
// }
// }
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
@ -187,7 +180,13 @@ const handleClose = () => {
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiInvoicingRequestsFlows()
flows.value = res
}

View File

@ -4,59 +4,86 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="投标决策详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-card>
<el-descriptions :column="3" border>
<el-descriptions-item label="流程编号" label-align="left" align="left" label-class-name="my-label">{{ formData.code }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label">{{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label">{{ formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="项目估算(万元)" label-align="left" align="left" label-class-name="my-label">{{ formData.project_estimation }}</el-descriptions-item>
<el-descriptions-item label="流程编号" label-align="left" align="left" label-class-name="my-label">{{
formData.code }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label">{{
formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label">{{
formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{
formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="项目估算(万元)" label-align="left" align="left" label-class-name="my-label">{{
formData.project_estimation }}</el-descriptions-item>
<el-descriptions-item label="招标项目资金来源" label-align="left" align="left" label-class-name="my-label">{{ formData.bidding_project_fund_source }}</el-descriptions-item>
<el-descriptions-item label="招标项目资金来源" label-align="left" align="left" label-class-name="my-label">{{
formData.bidding_project_fund_source }}</el-descriptions-item>
<el-descriptions-item label="投标时间" label-align="left" align="left" label-class-name="my-label">{{ formData.bidding_time }}</el-descriptions-item>
<el-descriptions-item label="投标时间" label-align="left" align="left" label-class-name="my-label">{{
formData.bidding_time }}</el-descriptions-item>
<el-descriptions-item label="招标方式" label-align="left" align="left" label-class-name="my-label">{{ formData.bid_type }}</el-descriptions-item>
<el-descriptions-item label="招标方式" label-align="left" align="left" label-class-name="my-label">{{
formData.bid_type }}</el-descriptions-item>
<el-descriptions-item label="竞争对手" label-align="left" align="left" label-class-name="my-label">{{ formData.competitor }}</el-descriptions-item>
<el-descriptions-item label="竞争对手" label-align="left" align="left" label-class-name="my-label">{{
formData.competitor }}</el-descriptions-item>
<el-descriptions-item label="是否需要保证金" label-align="left" align="left" label-class-name="my-label">{{ formData.is_margin }}</el-descriptions-item>
<el-descriptions-item label="保证金金额(元)" label-align="left" align="left" label-class-name="my-label">{{ formData.margin_amount }}</el-descriptions-item>
<el-descriptions-item label="是否需要保证金" label-align="left" align="left" label-class-name="my-label">{{
formData.is_margin }}</el-descriptions-item>
<el-descriptions-item label="保证金金额(元)" label-align="left" align="left" label-class-name="my-label">{{
formData.margin_amount }}</el-descriptions-item>
<el-descriptions-item label="开标日期" label-align="left" align="left" label-class-name="my-label">{{ formData.bid_opening_date }}</el-descriptions-item>
<el-descriptions-item label="保证金退还时间" label-align="left" align="left" label-class-name="my-label">{{ formData.margin_amount_return_date }}</el-descriptions-item>
<el-descriptions-item label="开标日期" label-align="left" align="left" label-class-name="my-label">{{
formData.bid_opening_date }}</el-descriptions-item>
<el-descriptions-item label="保证金退还时间" label-align="left" align="left" label-class-name="my-label">{{
formData.margin_amount_return_date }}</el-descriptions-item>
<el-descriptions-item label="有无内部资源" label-align="left" align="left" label-class-name="my-label">{{ formData.is_internal_resources }}</el-descriptions-item>
<el-descriptions-item label="有无内部资源" label-align="left" align="left" label-class-name="my-label">{{
formData.is_internal_resources }}</el-descriptions-item>
<el-descriptions-item label="项目把握度" label-align="left" align="left" label-class-name="my-label">{{ formData.project_assurance }}</el-descriptions-item>
<el-descriptions-item label="招标项目概况" label-align="left" align="left" label-class-name="my-label">{{ formData.bid_project_overview }}</el-descriptions-item>
<el-descriptions-item label="项目把握度" label-align="left" align="left" label-class-name="my-label">{{
formData.project_assurance }}</el-descriptions-item>
<el-descriptions-item label="招标项目概况" label-align="left" align="left" label-class-name="my-label">{{
formData.bid_project_overview }}</el-descriptions-item>
<el-descriptions-item label="项目简介" label-align="left" align="left" label-class-name="my-label">{{ formData.project_desc }}</el-descriptions-item>
<el-descriptions-item label="项目简介" label-align="left" align="left" label-class-name="my-label">{{
formData.project_desc }}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formDataannex.length > 0">
<div v-for="(item, index) in formDataannex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
target="_blank">{{ item.name }}</a>
</div>
</div>
<div v-else>暂无附件</div>
</el-descriptions-item>
</el-descriptions>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apibid_bidding_decisionApprove" :id="formData?.id" @off="handleClose"></flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apibid_bidding_decisionApprove, apibid_bidding_decisionFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apibid_bidding_decisionFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apibid_bidding_decisionApprove, apibid_bidding_decisionFlows } from '@/api/flowSet.ts'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -65,35 +92,18 @@ defineProps({
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const formDataannex = reactive([])
const datas = reactive({
provinceOptions: [],
cityOptions: [],
areaOptions: [],
});
//
const formData = reactive({
})
const formData = reactive({})
//
const setFormData = async (data: Record<any, any>) => {
// for (const key in formData) {
// if (data[key] != null && data[key] != undefined) {
// //@ts-ignore
// formData[key] = data[key]
// }
// }
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
name: `文件${index + 1}`,
@ -101,19 +111,9 @@ const setFormData = async (data: Record<any, any>) => {
};
});
Object.assign(formDataannex, arry1)
}
Object.assign(formData, data)
console.log(formData, '2222222222')
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiCustomDetail({
id: row.id
})
setFormData(data)
getbidDocumentExaminationFlows()
}
@ -125,7 +125,6 @@ const handleSubmit = async () => {
//
const open = () => {
console.log('1111111')
popupRef.value?.open()
}
@ -136,15 +135,17 @@ const handleClose = () => {
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apibid_bidding_decisionFlows()
flows.value = res
}
defineExpose({
open,
setFormData,
getDetail
})
</script>
<style lang="scss" scoped>

View File

@ -139,30 +139,19 @@ const handleAdd = async () => {
editRef.value?.open('add')
}
// //
// const handleEdit = async (data: any) => {
// let res = await apiBidBiddingDecisionDetail({ id: data.id })
// showEdit.value = true
// await nextTick()
// editRef.value?.open('edit')
// editRef.value?.setFormData(res)
// }
// //
// const handleDelete = async (id: number | any[]) => {
// await feedback.confirm('')
// await apiBidBiddingDecisionDelete({ id })
// getLists()
// }
//
const handledetail = async (data: any) => {
let res = await apiBidBiddingDecisionDetail({ id: data.id })
showDtail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
import { useRoute } from "vue-router";
const route = useRoute()
if (route.query?.listId) {
handledetail({ id: route.query.listId })
}
</script>

View File

@ -4,6 +4,7 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="购买标书详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-card>
<el-descriptions :column="3" border>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label">{{
formData.project_name }}</el-descriptions-item>
@ -46,9 +47,20 @@
formData.bid_project_overview }}</el-descriptions-item>
<el-descriptions-item label="项目简介" label-align="left" align="left" label-class-name="my-label">{{
formData.project_desc }}</el-descriptions-item>
<!-- <el-descriptions-item label="保证金金额(元)" label-align="left" align="left" label-class-name="my-label"></el-descriptions-item> -->
</el-descriptions>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apibid_buy_bidding_documentApprove" :id="formData?.id" @off="handleClose"></flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apibid_bidding_decisionApprove, apibid_bidding_decisionFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apibid_bidding_decisionFlows()
flows.value = res
} -->
</popup>
</div>
</template>
@ -60,6 +72,7 @@ import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
import { apibid_buy_bidding_documentApprove, apibid_buy_bidding_documentFlows } from '@/api/flowSet.ts'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -86,16 +99,7 @@ const formData = reactive({
//
const setFormData = async (data: Record<any, any>) => {
// for (const key in formData) {
// if (data[key] != null && data[key] != undefined) {
// //@ts-ignore
// formData[key] = data[key]
// }
// }
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
name: `文件${index + 1}`,
@ -106,8 +110,7 @@ const setFormData = async (data: Record<any, any>) => {
}
Object.assign(formData, data)
console.log(formData, '2222222222')
getbidDocumentExaminationFlows()
}
@ -127,7 +130,7 @@ const handleSubmit = async () => {
//
const open = () => {
console.log('1111111')
popupRef.value?.open()
}
@ -136,13 +139,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apibid_buy_bidding_documentFlows()
flows.value = res
}
defineExpose({
open,
setFormData,

View File

@ -167,6 +167,11 @@ const projectlist = async () => {
projectList.value = res.lists
}
import { useRoute } from "vue-router";
const route = useRoute()
if (route.query?.listId) {
handledetail({ id: route.query.listId })
}
projectlist()
getLists()
</script>

View File

@ -4,6 +4,7 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="投标审查详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-card>
<el-descriptions title="基本信息" :column="3" border>
<el-descriptions-item label="标书编号" label-align="left" align="left" label-class-name="my-label">{{
formData.bid_document_no }}</el-descriptions-item>
@ -51,6 +52,9 @@
<div v-else> 暂无附件</div>
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card>
<el-descriptions title="技术审查" :column="1" border style="margin-top:30px">
<el-descriptions-item label="技术协议偏差" label-align="left" align="left" label-class-name="my-label">{{
formData.technical_protocol_deviation }}</el-descriptions-item>
@ -62,12 +66,14 @@
style="margin-left: 5px;display: block;">
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item"
target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else> 暂无附件</div>
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card>
<el-descriptions title="商务审查" :column="3" border style="margin-top:30px">
<el-descriptions-item label="总金额" label-align="left" align="left" label-class-name="my-label">{{
formData.total_amount }}</el-descriptions-item>
@ -89,15 +95,18 @@
style="margin-left: 5px;display: block;">
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item"
target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else> 暂无附件</div>
</el-descriptions-item>
</el-descriptions>
<div class="tit" style="margin-top:30px;color:#000;font-size: 16px;">产品明细</div>
</el-card>
<el-card>
<template #header>
<div class="card-header">
<span>产品明细</span>
</div>
</template>
<el-row>
<el-table :data="productList">
<el-table-column label="序号" type="index" width="55" />
@ -112,8 +121,22 @@
<el-table-column label="报价金额" prop="sale_amount" show-overflow-tooltip />
</el-table>
</el-row>
<flowProcess v-if="false" :id="formData?.id" @off="handleClose"></flowProcess>
<flowDetail :approve_id="formData?.approve_id" @off="handleClose" v-else />
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apibidDocumentExaminationApprove" :id="formData?.id" @off="handleClose"></flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiBidDocumentExaminationDetailLists, apibidDocumentExaminationFlows, apibidDocumentExaminationApprove
} from '@/api/bid_document_examination_detail'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apibidDocumentExaminationFlows()
flows.value = res
} -->
</popup>
</div>
@ -121,9 +144,9 @@
<script lang="ts" setup name="customdetail">
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { apiBidDocumentExaminationDetailLists } from '@/api/bid_document_examination_detail'
import { apiBidDocumentExaminationDetailLists, apibidDocumentExaminationFlows, apibidDocumentExaminationApprove } from '@/api/bid_document_examination_detail'
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -147,31 +170,21 @@ const productLists = () => {
apiBidDocumentExaminationDetailLists(pager1).then((res) => {
productList.value = res.lists
total.value = res.count
})
}
//
const formData = reactive({
})
const formData = reactive({})
//
const setFormData = async (data: Record<any, any>) => {
pager1.bid_document_examination_id = data.id
Object.assign(formData, data)
productLists()
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiCustomDetail({
id: row.id
})
setFormData(data)
}
//
@ -190,17 +203,17 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apibidDocumentExaminationFlows()
flows.value = res
}
defineExpose({
open,
setFormData,
getDetail
})
</script>
<style lang="scss" scoped>

View File

@ -522,9 +522,6 @@ const handleSubmit = async () => {
}))
formData.quotation_detail = data1
}
await formRef.value?.validate()
const data = { ...formData, }
mode.value == 'edit'

View File

@ -62,7 +62,18 @@
<el-descriptions-item label="开户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.account_name }}</el-descriptions-item>
<el-descriptions-item label="账号" label-align="left" align="left" label-class-name="my-label">{{ formData.account }}</el-descriptions-item>
</el-descriptions> -->
<flowDetail :approve_id="formData?.approve_id" />
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apibid_security_applyApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apibid_security_applyApprove, apibid_security_applyFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apibid_security_applyFlows()
flows.value = res
} -->
</popup>
</div>
@ -73,7 +84,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apibid_security_applyApprove, apibid_security_applyFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -102,9 +113,7 @@ const formData = reactive({
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
@ -132,12 +141,12 @@ const handleClose = () => {
emit('close')
}
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apibid_security_applyFlows()
flows.value = res
}
defineExpose({
open,

View File

@ -143,7 +143,17 @@
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
</div>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apicontractApprove" :id="formData?.id" @off="handleClose"></flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apibid_bidding_decisionApprove, apibid_bidding_decisionFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apicontractFlows()
flows.value = res
} -->
</el-form>
</popup>
@ -155,12 +165,8 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { apiCustomerDemandSolutionLists } from '@/api/customer_demand_solution'
import { apiProjectEstimateLists } from '@/api/project_estimate'
import { apiCompetitorLists } from '@/api/competitor'
import { timeFormat } from '@/utils/util'
import { apireturnedLists } from "@/api/remittance.ts"
import { apicontractApprove, apicontractFlows } from '@/api/flowSet.ts'
import type { TabsPaneContext } from 'element-plus'
@ -241,6 +247,7 @@ const setFormData = async (data: Record<any, any>) => {
}
// competitorLists()
solutionLists()
getbidDocumentExaminationFlows()
}
@ -268,14 +275,13 @@ const open = () => {
const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apicontractFlows()
flows.value = res
}
defineExpose({
open,
setFormData,

View File

@ -3,9 +3,8 @@
<div class="detail-popup">
<popup ref="popupRef" title="合同洽商详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px">
<el-card>
<el-descriptions :column="2" border>
<el-descriptions-item label="合同名称" label-align="left" align="left" label-class-name="my-label"> {{
formData.contract_name
}}</el-descriptions-item>
@ -51,11 +50,13 @@
formData.negotiation_type_text
}}</el-descriptions-item>
<el-descriptions-item label="成本金额(人工)" label-align="left" align="left" label-class-name="my-label"> {{
<el-descriptions-item label="成本金额(人工)" label-align="left" align="left" label-class-name="my-label">
{{
formData.labor_costs
}}</el-descriptions-item>
<el-descriptions-item label="成本金额(材料)" label-align="left" align="left" label-class-name="my-label"> {{
<el-descriptions-item label="成本金额(材料)" label-align="left" align="left" label-class-name="my-label">
{{
formData.material_costs
}}</el-descriptions-item>
@ -64,7 +65,8 @@
}}</el-descriptions-item>
<el-descriptions-item label="洽商质保到期时间" label-align="left" align="left" label-class-name="my-label"> {{
<el-descriptions-item label="洽商质保到期时间" label-align="left" align="left" label-class-name="my-label">
{{
formData.warranty_expire_date
}}</el-descriptions-item>
@ -115,7 +117,20 @@
</div>
</el-descriptions-item>
</el-descriptions>
<flowDetail :approve_id="formData?.approve_id" />
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apicontract_negotiationApprove" :id="formData?.id" @off="handleClose"></flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apibid_bidding_decisionApprove, apibid_bidding_decisionFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apicontract_negotiationFlows()
flows.value = res
} -->
</el-form>
</popup>
@ -127,7 +142,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apicontract_negotiationApprove, apicontract_negotiationFlows } from '@/api/flowSet.ts'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -147,18 +162,12 @@ const datas = reactive({
//
const formData = reactive({
})
const formData = reactive({})
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
@ -177,7 +186,7 @@ const handleSubmit = async () => {
//
const open = () => {
console.log('1111111')
popupRef.value?.open()
}
@ -186,8 +195,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apicontract_negotiationFlows()
flows.value = res
}

View File

@ -146,7 +146,18 @@
</el-col>
</el-row>
</el-card>
<flowDetail :approve_id="formData?.approve_id" />
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apifinance_payment_applyApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apifinance_payment_applyApprove, apifinance_payment_applyFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_payment_applyFlows()
flows.value = res
} -->
</el-form>
@ -159,7 +170,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apifinance_payment_applyApprove, apifinance_payment_applyFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -182,6 +193,7 @@ const formData = reactive({
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
const getDetail = async (formData: Record<string, any>) => {
@ -208,13 +220,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_payment_applyFlows()
flows.value = res
}
defineExpose({
open,
setFormData,

View File

@ -85,7 +85,18 @@
</el-row>
</el-card>
<flowDetail :approve_id="formData?.approve_id" />
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apifinance_payment_planApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apifinance_payment_planApprove, apifinance_payment_planFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_payment_planFlows()
flows.value = res
} -->
</el-form>
</popup>
@ -99,6 +110,7 @@ import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
import { apifinance_payment_planApprove, apifinance_payment_planFlows } from '@/api/flowSet.ts'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -137,8 +149,7 @@ const setFormData = async (data: Record<any, any>) => {
Object.assign(formDataannex, arry1)
}
getbidDocumentExaminationFlows()
}
@ -166,14 +177,13 @@ const open = () => {
const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_payment_planFlows()
flows.value = res
}
defineExpose({
open,
setFormData,

View File

@ -101,7 +101,18 @@
</el-col>
</el-row>
</el-card>
<flowDetail :approve_id="formData?.approve_id" />
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apifinance_receipt_recordApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apifinance_receipt_recordApprove, apifinance_receipt_recordFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_receipt_recordFlows()
flows.value = res
} -->
</el-form>
</popup>
@ -113,7 +124,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apifinance_receipt_recordApprove, apifinance_receipt_recordFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -125,13 +136,6 @@ const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const datas = reactive({
provinceOptions: [],
cityOptions: [],
areaOptions: [],
});
//
const formData = reactive({
@ -142,10 +146,7 @@ const formData = reactive({
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
console.log(data, "data")
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
@ -173,7 +174,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_receipt_recordFlows()
flows.value = res
}

View File

@ -114,6 +114,18 @@
</el-col>
</el-row>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apifinance_refund_recordApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apifinance_refund_recordApprove, apifinance_refund_recordFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_refund_recordFlows()
flows.value = res
} -->
</el-form>
</popup>
</div>
@ -124,7 +136,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apifinance_refund_recordApprove, apifinance_refund_recordFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -145,47 +157,12 @@ const datas = reactive({
//
const formData = reactive({}
// {
// "id": 0,
// "supplier_id": 1,
// "project_id": 1,
// "contract_type": 1,
// "contract_id": 2,
// "refund_amount": "",
// "refund_date": "2024-01-16",
// "refund_type": 1,
// "reason": "",
// "remark": "",
// "annex": [
// ],
// "bank_account_id": 3,
// "supplier_name": "",
// "supplier_code": "SC-20240108-564041",
// "project_name": "test",
// "project_code": "P-20240113-600036",
// "contract_no": "CGHT-20240110-412306",
// "contract_name": "11",
// "contract_type_text": "",
// "refund_type_text": "",
// "bank_account_info": {
// "account_sn": "BANK-20240116-881909",
// "deposit_bank": "",
// "account_name": "",
// "account": "26263515351565"
// }
// }
)
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
console.log(formData, 'formdata')
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
@ -215,7 +192,13 @@ const handleClose = () => {
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_refund_recordFlows()
flows.value = res
}

View File

@ -53,8 +53,18 @@
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
</div>
<flowDetail :approve_id="formData?.approve_id" />
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apimaterial_purchase_requestApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apimaterial_purchase_requestApprove, apimaterial_purchase_requestFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apimaterial_purchase_requestFlows()
flows.value = res
} -->
</popup>
</div>
</template>
@ -64,7 +74,7 @@ import { materialrequestDetailLists } from '@/api/material_purchase_request_deta
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apimaterial_purchase_requestApprove, apimaterial_purchase_requestFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -130,9 +140,8 @@ const setFormData = async (data: Record<any, any>) => {
};
});
Object.assign(formDataannex, arry1)
}
getbidDocumentExaminationFlows()
}
@ -162,7 +171,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apimaterial_purchase_requestFlows()
flows.value = res
}
@ -183,4 +198,5 @@ defineExpose({
:deep(.my-label) {
width: 150px;
}</style>
}
</style>

View File

@ -173,6 +173,19 @@
</div>
</el-tab-pane>
</el-tabs>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiprocurement_contractApprove" :id="formData?.id" @off="handleClose"></flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apibid_bidding_decisionApprove, apibid_bidding_decisionFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiprocurement_contractFlows()
flows.value = res
} -->
</el-form>
</popup>
</div>
@ -189,7 +202,7 @@ import { apifinancereceiptLists } from '@/api/receiptrecord'
import { paymentplanLists } from '@/api/paymentplan'
import { paymentapplyLists } from '@/api/paymentrequest'
import { apiFinancerefundLists } from '@/api/refundrecord'
import { timeFormat } from '@/utils/util'
import { apiprocurement_contractApprove, apiprocurement_contractFlows } from '@/api/flowSet'
import type { TabsPaneContext } from 'element-plus'
const activeName = ref('demo-tabs-1')
@ -387,6 +400,7 @@ const setFormData = async (data: Record<any, any>) => {
financereceiptLists()
payapplyLists()
financerefundLists()
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
@ -415,7 +429,13 @@ const handleClose = () => {
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiprocurement_contractFlows()
flows.value = res
}

View File

@ -1,6 +1,6 @@
<template>
<div>
<el-card class="!border-none mb-4" shadow="never">
<!-- <el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="采购合同id" prop="procurement_contract_id">
<el-input class="w-[280px]" v-model="queryParams.procurement_contract_id" clearable
@ -17,7 +17,7 @@
:page-size="pager.size" />
</el-form-item>
</el-form>
</el-card>
</el-card> -->
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
<!-- <el-button v-perms="['procurement_contract_detail/add']" type="primary" @click="handleAdd">
<template #icon>

View File

@ -16,13 +16,25 @@
</el-descriptions-item>
</el-descriptions>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_cost_adjustmentApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_cost_adjustmentApprove, apiproject_cost_adjustmentFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_cost_adjustmentFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { ref, reactive } from "vue"
import { apiproject_cost_adjustmentApprove, apiproject_cost_adjustmentFlows } from '@/api/flowSet'
const descriptionList = reactive([
{
lable: "项目名称",
@ -61,6 +73,7 @@ const formData: any = reactive({
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
//
@ -72,7 +85,13 @@ const open = () => {
const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_cost_adjustmentFlows()
flows.value = res
}
defineExpose({

View File

@ -44,13 +44,25 @@
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
</div>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_cost_budgetApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_cost_budgetApprove, apiproject_cost_budgetFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_cost_budgetFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { apiProjectCostBudgetDetailLists } from '@/api/project_cost_budget_detail.ts'
import { apiproject_cost_budgetApprove, apiproject_cost_budgetFlows } from '@/api/flowSet'
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
@ -122,7 +134,7 @@ const setFormData = async (data: Record<any, any>) => {
}
getbidDocumentExaminationFlows()
}
@ -151,7 +163,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_cost_budgetFlows()
flows.value = res
}

View File

@ -45,13 +45,25 @@
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
</div>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_equipment_budgetApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_equipment_budgetApprove, apiproject_equipment_budgetFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_equipment_budgetFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { apiProjectEquipmentBudgetDetailLists } from '@/api/project_equipment_budget_detail'
import { apiproject_equipment_budgetApprove, apiproject_equipment_budgetFlows } from '@/api/flowSet'
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
@ -120,11 +132,8 @@ const setFormData = async (data: Record<any, any>) => {
};
});
Object.assign(formDataannex, arry1)
}
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
@ -153,7 +162,13 @@ const handleClose = () => {
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_equipment_budgetFlows()
flows.value = res
}

View File

@ -10,13 +10,25 @@
</el-descriptions-item>
</el-descriptions>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_expense_reimbursementApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_expense_reimbursementApprove, apiproject_expense_reimbursementFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_expense_reimbursementFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { ref, reactive } from "vue"
import { apiproject_expense_reimbursementApprove, apiproject_expense_reimbursementFlows } from '@/api/flowSet'
const descriptionList = reactive([
{
lable: "项目名称",
@ -92,6 +104,7 @@ const formData: any = reactive({
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
//
@ -104,7 +117,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_expense_reimbursementFlows()
flows.value = res
}
defineExpose({
open,

View File

@ -43,13 +43,26 @@
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
</div>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_labor_budgetApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_labor_budgetApprove, apiproject_labor_budgetFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_labor_budgetFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { apiProjectLaborBudgetDetailLists } from '@/api/project_labor_budget_detail'
import { apiproject_labor_budgetApprove, apiproject_labor_budgetFlows } from '@/api/flowSet'
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
@ -118,11 +131,8 @@ const setFormData = async (data: Record<any, any>) => {
};
});
Object.assign(formDataannex, arry1)
}
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
@ -150,7 +160,13 @@ const handleClose = () => {
emit('close')
}
// /
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_labor_budgetFlows()
flows.value = res
}

View File

@ -76,7 +76,6 @@ const baseData2 = reactive({
]
})
const baseData3 = reactive({
fetchFun: apiFinancerefundLists,
delApi: apiFinancerefundDelete,

View File

@ -16,13 +16,25 @@
</el-descriptions-item>
</el-descriptions>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_loan_applyApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_loan_applyApprove, apiproject_loan_applyFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_loan_applyFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { ref, reactive } from "vue"
import { apiproject_loan_applyApprove, apiproject_loan_applyFlows } from '@/api/flowSet'
const descriptionList = reactive([
{
lable: "项目名称",
@ -93,6 +105,7 @@ const formData: any = reactive({
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
//
@ -104,7 +117,13 @@ const open = () => {
const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_loan_applyFlows()
flows.value = res
}
defineExpose({

View File

@ -17,8 +17,6 @@
<el-date-picker class="flex-1 !flex" v-model="formData.loan_date" clearable value-format="YYYY-MM-DD "
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="借款金额" prop="loan_amount">
<el-input v-model="formData.loan_amount" clearable placeholder="请输入借款金额" />
@ -68,9 +66,6 @@
<el-form-item label="开户账号">
<el-input v-model="formData.bank_account.account" readonly />
</el-form-item>
</el-form>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
@ -110,7 +105,6 @@ const mode = ref('add')
const showDialog = ref(false)
const showDialog1 = ref(false)
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目财务-借款申请' : '新增项目财务-借款申请'
@ -149,7 +143,6 @@ const handleAvatarSuccess_four = (response: any) => {
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
const customEvent = (e: any) => {
console.log(e)
formData.project_id = e.id
formData.project_name = e.name
showDialog.value = false
@ -222,8 +215,6 @@ const setFormData = async (data: Record<any, any>) => {
formData[key] = data[key]
}
}
}
const getDetail = async (row: Record<string, any>) => {
@ -256,8 +247,6 @@ const handleClose = () => {
emit('close')
}
defineExpose({
open,
setFormData,

View File

@ -51,6 +51,18 @@
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
</div>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_material_budgetApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_material_budgetApprove, apiproject_material_budgetFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_material_budgetFlows()
flows.value = res
} -->
</popup>
</div>
</template>
@ -60,7 +72,7 @@ import { MaterialbudgetDetailLists } from '@/api/project_material_budget_detail'
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apiproject_material_budgetApprove, apiproject_material_budgetFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -118,7 +130,6 @@ const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
budgetDetailLists(data.id)
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
name: `文件${index + 1}`,
@ -126,10 +137,8 @@ const setFormData = async (data: Record<any, any>) => {
};
});
Object.assign(formDataannex, arry1)
}
getbidDocumentExaminationFlows()
}
@ -158,7 +167,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_material_budgetFlows()
flows.value = res
}
@ -179,4 +194,5 @@ defineExpose({
:deep(.my-label) {
width: 150px;
}</style>
}
</style>

View File

@ -44,21 +44,29 @@
formData.remark
}}</el-descriptions-item>
</el-descriptions>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_material_budget_detailApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_material_budget_detailApprove, apiproject_material_budget_detailFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_material_budget_detailFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { MaterialbudgetDetailLists } from '@/api/project_material_budget_detail'
import { apiproject_material_budget_detailApprove, apiproject_material_budget_detailFlows } from '@/api/flowSet'
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -89,7 +97,6 @@ const formData = reactive({
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
@ -100,9 +107,8 @@ const setFormData = async (data: Record<any, any>) => {
});
Object.assign(formDataannex, arry1)
}
getbidDocumentExaminationFlows()
}
@ -131,7 +137,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_material_budget_detailFlows()
flows.value = res
}
@ -144,11 +156,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss" scoped>.tit {
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}</style>
}
</style>

View File

@ -78,6 +78,19 @@
</el-row>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_settlementApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_settlementApprove, apiproject_settlementFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_settlementFlows()
flows.value = res
} -->
</el-form>
</popup>
</div>
@ -87,7 +100,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apiproject_settlementApprove, apiproject_settlementFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -119,7 +132,6 @@ const formData = reactive({
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
name: `文件${index + 1}`,
@ -127,10 +139,8 @@ const setFormData = async (data: Record<any, any>) => {
};
});
Object.assign(formDataannex, arry1)
}
getbidDocumentExaminationFlows()
}
@ -161,7 +171,13 @@ const handleClose = () => {
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_settlementFlows()
flows.value = res
}

View File

@ -77,7 +77,20 @@
</el-row>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_subcontract_settlementApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_subcontract_settlementApprove, apiproject_subcontract_settlementFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_subcontract_settlementFlows()
flows.value = res
} -->
</el-form>
</popup>
</div>
</template>
@ -87,7 +100,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apiproject_subcontract_settlementApprove, apiproject_subcontract_settlementFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -119,7 +132,6 @@ const formData = reactive({
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
name: `文件${index + 1}`,
@ -127,10 +139,8 @@ const setFormData = async (data: Record<any, any>) => {
};
});
Object.assign(formDataannex, arry1)
}
getbidDocumentExaminationFlows()
}
@ -159,7 +169,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_subcontract_settlementFlows()
flows.value = res
}

View File

@ -4,17 +4,22 @@
<popup ref="popupRef" title="分包预算详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-descriptions :column="2" border>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="分包预算单号" label-align="left" align="left" label-class-name="my-label"> {{ formData.subpackage_budget_code }}</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{ formData.remark
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{
formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="分包预算单号" label-align="left" align="left" label-class-name="my-label"> {{
formData.subpackage_budget_code }}</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
formData.remark
}}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item"
target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else>
@ -36,8 +41,23 @@
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager1.page_no" v-model:page-size="pager1.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
<el-pagination v-model:current-page="pager1.page_no" v-model:page-size="pager1.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
</div>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_subpackage_budgetApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_subpackage_budgetApprove, apiproject_subpackage_budgetFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_subpackage_budgetFlows()
flows.value = res
} -->
</popup>
</div>
</template>
@ -47,7 +67,7 @@ import { subpackagdetailLists } from '@/api/project_subpackage_budget_detail'
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apiproject_subpackage_budgetApprove, apiproject_subpackage_budgetFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -113,11 +133,8 @@ const setFormData = async (data: Record<any, any>) => {
};
});
Object.assign(formDataannex, arry1)
}
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
@ -146,7 +163,13 @@ const handleClose = () => {
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_subpackage_budgetFlows()
flows.value = res
}

View File

@ -52,7 +52,18 @@
</el-descriptions>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_subpackage_budget_detailApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_subpackage_budget_detailApprove, approject_subpackage_budget_detailFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await approject_subpackage_budget_detailFlows()
flows.value = res
} -->
</popup>
</div>
</template>
@ -62,7 +73,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apiproject_subpackage_budget_detailApprove, approject_subpackage_budget_detailFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -96,7 +107,7 @@ const formData = reactive({
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
@ -127,7 +138,13 @@ const handleClose = () => {
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await approject_subpackage_budget_detailFlows()
flows.value = res
}

View File

@ -4,20 +4,30 @@
<popup ref="popupRef" title="项目总预算详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-descriptions :column="2" title="基本信息" border>
<el-descriptions-item label="部门名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.dept_name }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label">{{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="项目利润(元)" label-align="left" align="left" label-class-name="my-label"> {{ formData.profit }}</el-descriptions-item>
<el-descriptions-item label="项目利润率(%)" label-align="left" align="left" label-class-name="my-label"> {{ formData.profit_rate }}</el-descriptions-item>
<el-descriptions-item label="合同金额" label-align="left" align="left" label-class-name="my-label"> {{ formData.contract_amount }}</el-descriptions-item>
<el-descriptions-item label="部门名称" label-align="left" align="left" label-class-name="my-label"> {{
formData.dept_name }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label">{{
formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="项目利润(元)" label-align="left" align="left" label-class-name="my-label"> {{
formData.profit }}</el-descriptions-item>
<el-descriptions-item label="项目利润率(%)" label-align="left" align="left" label-class-name="my-label"> {{
formData.profit_rate }}</el-descriptions-item>
<el-descriptions-item label="合同金额" label-align="left" align="left" label-class-name="my-label"> {{
formData.contract_amount }}</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{ formData.remark }}</el-descriptions-item>
<el-descriptions-item label="项目经理" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_manager }}</el-descriptions-item>
<el-descriptions-item label="预算日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.budget_date }}</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
formData.remark }}</el-descriptions-item>
<el-descriptions-item label="项目经理" label-align="left" align="left" label-class-name="my-label"> {{
formData.project_manager }}</el-descriptions-item>
<el-descriptions-item label="预算日期" label-align="left" align="left" label-class-name="my-label"> {{
formData.budget_date }}</el-descriptions-item>
<el-descriptions-item label="预算清单" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.budget_list && formData.budget_list.length > 0">
<div v-for="(item, index) in formData.budget_list" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }} 查看</a>
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
target="_blank">文件{{ index + 1 }} 查看</a>
</div>
</div>
<div v-else>
@ -34,24 +44,29 @@
<div>{{ row.text }}</div>
</template>
</el-table-column>
<el-table-column label="预算成本" prop="cost" show-overflow-tooltip />
<el-table-column label="成本占比" prop="rate" width="156" show-overflow-tooltip />
</el-table>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_total_budgetApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_total_budgetApprove, apiproject_total_budgetFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_total_budgetFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apiproject_total_budgetApprove, apiproject_total_budgetFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -60,14 +75,7 @@ defineProps({
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const formDataannex = reactive([])
const datas = reactive({
provinceOptions: [],
cityOptions: [],
areaOptions: [],
});
const tableData = reactive([{
name: "材料/设备成本(元)",
@ -117,7 +125,7 @@ const setFormData = async (data: Record<any, any>) => {
tableData[2].rate = (Number(data.rg_cost) / data.total_cost).toFixed(2) + '%'
tableData[3].rate = (Number(data.fy_cost) / data.total_cost).toFixed(2) + '%'
tableData[4].rate = (Number(data.jj_cost) / data.total_cost).toFixed(2) + '%'
getbidDocumentExaminationFlows()
// console.log(tableData)
}
@ -147,7 +155,12 @@ const handleClose = () => {
}
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_total_budgetFlows()
flows.value = res
}

View File

@ -16,13 +16,25 @@
</el-descriptions-item>
</el-descriptions>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_travel_reimbursementApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_travel_reimbursementApprove, apiproject_travel_reimbursementFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_travel_reimbursementFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { ref, reactive } from "vue"
import { apiproject_travel_reimbursementApprove, apiproject_travel_reimbursementFlows } from '@/api/flowSet'
const descriptionList = reactive([
{
lable: "项目名称",
@ -132,6 +144,7 @@ const formData: any = reactive({
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
//
@ -143,7 +156,13 @@ const open = () => {
const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_travel_reimbursementFlows()
flows.value = res
}
defineExpose({

View File

@ -16,13 +16,25 @@
</el-descriptions-item>
</el-descriptions>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_trip_applyApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiproject_trip_applyApprove, apiproject_trip_applyFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_trip_applyFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { ref, reactive } from "vue"
import { apiproject_trip_applyApprove, apiproject_trip_applyFlows } from '@/api/flowSet'
const descriptionList = reactive([
{
lable: "项目名称",
@ -76,28 +88,11 @@ const popupRef = ref(null)
//
const formData: any = reactive({
// "id": 9,
// "project_id": 18,
// "trip_apply_code": "-20240201-116911",
// "origin_address": "",
// "target_address": "",
// "traffic": 3,
// "start_date": "2024-02-01",
// "end_date": "2024-02-10",
// "reason": "",
// "days": 9,
// "remark": "",
// "annex": "",
// "traffic_text": "",
// "project_name": "",
// "project_code": "P-20240126-717033",
// "project_manager": "",
// "approve_id": null
})
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
//
@ -110,7 +105,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_trip_applyFlows()
flows.value = res
}
defineExpose({
open,

View File

@ -6,54 +6,52 @@
<el-card class="mb-2">
<el-descriptions :column="2" border>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="报价日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.quotation_date }}</el-descriptions-item>
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{ formData.custom_master_name }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{
formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="报价日期" label-align="left" align="left" label-class-name="my-label"> {{
formData.quotation_date }}</el-descriptions-item>
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{
formData.custom_master_name }}</el-descriptions-item>
<el-descriptions-item label="联系电话" label-align="left" align="left" label-class-name="my-label">
{{ formData.custom_master_phone
{{ formData.custom_master_phone }}
</el-descriptions-item>
<el-descriptions-item label="制单人" label-align="left" align="left" label-class-name="my-label"> {{
formData.create_user
}}
</el-descriptions-item>
<el-descriptions-item label="制单人" label-align="left" align="left" label-class-name="my-label"> {{ formData.create_user
<el-descriptions-item label="发票类型" label-align="left" align="left" label-class-name="my-label"> {{
formData.invoice_type_text
}}</el-descriptions-item>
<el-descriptions-item label="发票类型" label-align="left" align="left" label-class-name="my-label"> {{ formData.invoice_type_text
}}</el-descriptions-item>
<el-descriptions-item label="订单金额" label-align="left" align="left" label-class-name="my-label"> {{ formData.amount_including_tax
<el-descriptions-item label="订单金额" label-align="left" align="left" label-class-name="my-label"> {{
formData.amount_including_tax
}}</el-descriptions-item>
<!-- <el-descriptions-item label="订单金额大写" label-align="left" align="left" label-class-name="my-label"> {{ formData.competitive_power
}}</el-descriptions-item> -->
<el-descriptions-item label="运费" label-align="left" align="left" label-class-name="my-label"> {{ formData.freight
<el-descriptions-item label="运费" label-align="left" align="left" label-class-name="my-label"> {{
formData.freight
}}</el-descriptions-item>
<el-descriptions-item label="其它费用" label-align="left" align="left" label-class-name="my-label"> {{
formData.other_fee
}}</el-descriptions-item>
<el-descriptions-item label="其它费用" label-align="left" align="left" label-class-name="my-label"> {{ formData.other_fee
}}</el-descriptions-item>
<el-descriptions-item label="合计金额" label-align="left" align="left" label-class-name="my-label"> {{ formData.total_amount
}}</el-descriptions-item>
<el-descriptions-item label="合计金额" label-align="left" align="left" label-class-name="my-label"> {{
formData.total_amount }}</el-descriptions-item>
<!-- <el-descriptions-item label="合计金额大写" label-align="left" align="left" label-class-name="my-label"> {{ formData.competitor_disadvantages
}}</el-descriptions-item> -->
<el-descriptions-item label="客户需求" label-align="left" align="left" label-class-name="my-label"> {{ formData.customer_require
<el-descriptions-item label="客户需求" label-align="left" align="left" label-class-name="my-label"> {{
formData.customer_require
}}</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{ formData.remark
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
formData.remark
}}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item"
target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else>
@ -79,7 +77,9 @@
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
</el-table>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager.page_no" v-model:page-size="pager.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
<el-pagination v-model:current-page="pager.page_no" v-model:page-size="pager.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper"
:total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
</el-row>
</el-card>

View File

@ -22,7 +22,8 @@
<el-col :span="8">
<el-form-item label="联系人" prop="custom_master_name">
<el-input v-model="formData.custom_master_name" disabled clearable placeholder="请输入联系人" />
</el-form-item></el-col>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系电话" prop="custom_master_phone"
:rules="[{ validator: isMobileNumber, trigger: 'blur' }]">
@ -37,7 +38,6 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="制单人" prop="create_user">
<el-input v-model="formData.create_user" clearable placeholder="请输入制单人" />
@ -52,12 +52,14 @@
</el-radio>
</el-radio-group>
</el-form-item>
</el-col> <el-col :span="8">
</el-col>
<el-col :span="8">
<el-form-item label="含税金额" prop="amount_including_tax"
:rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="formData.amount_including_tax" disabled clearable placeholder="请输入含税金额"
@input="amountinput" />
</el-form-item></el-col>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="含税金额大写" prop="amount_including_tax"
:rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
@ -88,10 +90,13 @@
<el-form-item label="客户需求" prop="customer_require"
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="formData.customer_require" clearable placeholder="请输入客户需求" />
</el-form-item></el-col><el-col :span="8">
</el-form-item></el-col>
<el-col :span="8">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item></el-col><el-col :span="8">
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="field127">
<el-upload
accept="doc, docx, xls, xlsx, ppt, pptx, pdf, txt, zip, rar, tar, jpg, png, gif, jpeg, webp, wmv, avi, mpg, mpeg, 3gp, mov, mp4, flv, f4v, rmvb, mkv"
@ -110,9 +115,6 @@
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
</div>
</div>
</el-form-item>
</el-col>
</el-row>
@ -123,7 +125,6 @@
<el-table :data="tableData">
<el-table-column label="序号">
<template #default="{ row }">
<!-- <el-button @click="handleAdd(row)" size="small">+</el-button> -->
<el-button @click="handleDelete(row)" size="small">-</el-button>
</template>
@ -186,21 +187,15 @@
<el-input v-model="row.remark" />
</template>
</el-table-column>
</el-table>
</div>
<!-- <div>
<reviewprocess></reviewprocess>
</div> -->
</el-form>
</popup>
<el-dialog v-model="showDialog" title="选择客户" width="70%">
<customDialog @customEvent="customEvent"></customDialog>
</el-dialog>
@ -232,6 +227,7 @@ const props = defineProps({
default: () => ({})
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
@ -367,7 +363,6 @@ const customEvent1 = (e: any) => {
};
//
const formRules = reactive<any>({
})
const handleAdd = (row: any) => {
@ -381,6 +376,7 @@ const handleDelete = (row: any) => {
const index = tableData.value.indexOf(row);
tableData.value.splice(index, 1);
};
//
const setFormData = async (data: Record<any, any>) => {
if (data.annex && data.annex.length > 0) {
@ -418,9 +414,6 @@ const getDetail = async (row: Record<string, any>) => {
id: row.id
})
console.log(data)
setFormData(data)
}
const isMobileNumber = (rule: any, value: string | number | any[], callback: (arg0: Error | undefined) => void) => {

View File

@ -4,9 +4,9 @@
<el-form class="mb-[-16px]" :model="queryParams" label-width="auto" inline>
<el-form-item label="客户" prop="custom_id">
<el-select class="w-[280px]" v-model="queryParams.custom_id" clearable placeholder="请选择客户">
<el-option v-for="(item, index) in customerList" :key="index" :label="item.name" :value="parseInt(item.id)" />
<el-option v-for="(item, index) in customerList" :key="index" :label="item.name"
:value="parseInt(item.id)" />
</el-select>
</el-form-item>
<el-form-item label="编码" prop="code">
<el-input class="w-[280px]" v-model="queryParams.code" clearable placeholder="请输入编码" />
@ -17,8 +17,10 @@
<el-form-item label="发票类型" prop="create_user">
<el-select class="w-[280px]" v-model="queryParams.invoice_type" clearable placeholder="请选择发票类型">
<el-option label="全部" value=""></el-option>
<el-option v-for="(item, index) in dictData.invoice_type" :key="index" :label="item.name" :value="item.value" />
</el-select> </el-form-item>
<el-option v-for="(item, index) in dictData.invoice_type" :key="index" :label="item.name"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">
查询</el-button>
@ -66,7 +68,7 @@
</el-table-column>
</el-table>
</div>
<div class="flex mt-4 justify-end">
<div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
@ -88,11 +90,9 @@ const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
//
const showEdit = ref(false)
const showDtail = ref(false)
const customerList = ref([])
//
const queryParams = reactive({
custom_id: '',
@ -132,11 +132,6 @@ const handleEdit = async (data: any) => {
await nextTick()
editRef.value?.open('edit')
editRef.value?.setFormData(res)
}
//
@ -145,6 +140,7 @@ const handleDelete = async (id: number | any[]) => {
await apiQuotationDelete({ id })
getLists()
}
//
const handleDetail = async (data: any) => {
let res = await apiQuotationDetail({ id: data.id })

View File

@ -70,17 +70,27 @@
formData.bank_account_info.account }}</el-descriptions-item>
</el-descriptions>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apifinance_returned_recordApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiInvoicingRequestsApprove, apiInvoicingRequestsFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_returned_recordFlows()
flows.value = res
} -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apifinance_returned_recordApprove, apifinance_returned_recordFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -105,7 +115,6 @@ const formData = reactive({
})
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
@ -120,7 +129,7 @@ const setFormData = async (data: Record<any, any>) => {
Object.assign(formDataannex, arry1)
}
getbidDocumentExaminationFlows()
}
@ -148,7 +157,12 @@ const handleClose = () => {
emit('close')
}
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_returned_recordFlows()
flows.value = res
}
@ -169,4 +183,5 @@ defineExpose({
:deep(.my-label) {
width: 150px;
}</style>
}
</style>

View File

@ -5,12 +5,17 @@
<el-form ref="formRef" :model="formData" label-width="160px">
<el-descriptions title="基本信息" :column="2" border>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="合同名称" label-align="left" align="left" label-class-name="my-label">{{ formData.contract_name }}</el-descriptions-item>
<el-descriptions-item label="合同编号" label-align="left" align="left" label-class-name="my-label">{{ formData.contract_code }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{
formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="合同名称" label-align="left" align="left" label-class-name="my-label">{{
formData.contract_name }}</el-descriptions-item>
<el-descriptions-item label="合同编号" label-align="left" align="left" label-class-name="my-label">{{
formData.contract_code }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{
formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="退款原因" label-align="left" align="left" label-class-name="my-label">
{{ formData.reason }}
</el-descriptions-item>
@ -34,7 +39,8 @@
<el-descriptions-item label="合同附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item"
target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
@ -45,16 +51,32 @@
</el-descriptions>
<el-descriptions title="付款账户信息" :column="3" style="margin: 20px 0;" border>
<el-descriptions-item label="账户编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.bank_account_info.account_sn }}</el-descriptions-item>
<el-descriptions-item label="开户银行" label-align="left" align="left" label-class-name="my-label"> {{ formData.bank_account_info.deposit_bank }}</el-descriptions-item>
<el-descriptions-item label="账号" label-align="left" align="left" label-class-name="my-label">{{ formData.bank_account_info.account }}</el-descriptions-item>
<el-descriptions-item label="账户编码" label-align="left" align="left" label-class-name="my-label"> {{
formData.bank_account_info.account_sn }}</el-descriptions-item>
<el-descriptions-item label="开户银行" label-align="left" align="left" label-class-name="my-label"> {{
formData.bank_account_info.deposit_bank }}</el-descriptions-item>
<el-descriptions-item label="账号" label-align="left" align="left" label-class-name="my-label">{{
formData.bank_account_info.account }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="收款账户信息" :column="3" style="margin: 20px 0;" border>
<el-descriptions-item label="开户银行" label-align="left" align="left" label-class-name="my-label"> {{ formData.collection_bank }}</el-descriptions-item>
<el-descriptions-item label="账号" label-align="left" align="left" label-class-name="my-label">{{ formData.collection_account }}</el-descriptions-item>
<el-descriptions-item label="开户银行" label-align="left" align="left" label-class-name="my-label"> {{
formData.collection_bank }}</el-descriptions-item>
<el-descriptions-item label="账号" label-align="left" align="left" label-class-name="my-label">{{
formData.collection_account }}</el-descriptions-item>
</el-descriptions>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apifinance_refund_applyApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiInvoicingRequestsApprove, apiInvoicingRequestsFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_refund_applydFlows()
flows.value = res
} -->
</el-form>
</popup>
</div>
@ -65,7 +87,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apifinance_refund_applyApprove, apifinance_refund_applydFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -94,9 +116,7 @@ const formData = reactive({
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
@ -124,12 +144,12 @@ const handleClose = () => {
emit('close')
}
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_refund_applydFlows()
flows.value = res
}
defineExpose({
open,

View File

@ -80,6 +80,18 @@
formData.account_name }}</el-descriptions-item>
</el-descriptions>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apibid_security_refundApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apibid_security_refundApprove, apbid_security_refundFlows } from '@/api/flowSet'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apbid_security_refundFlows()
flows.value = res
} -->
</popup>
</div>
@ -90,7 +102,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apibid_security_refundApprove, apbid_security_refundFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -115,13 +127,10 @@ const formData = reactive({
})
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
@ -149,7 +158,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apbid_security_refundFlows()
flows.value = res
}

View File

@ -5,12 +5,17 @@
<el-form ref="formRef" :model="formData" label-width="auto">
<el-descriptions title="基本信息" :column="2" border>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="合同名称" label-align="left" align="left" label-class-name="my-label">{{ formData.contract_name }}</el-descriptions-item>
<el-descriptions-item label="合同编号" label-align="left" align="left" label-class-name="my-label">{{ formData.contract_code }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{
formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="合同名称" label-align="left" align="left" label-class-name="my-label">{{
formData.contract_name }}</el-descriptions-item>
<el-descriptions-item label="合同编号" label-align="left" align="left" label-class-name="my-label">{{
formData.contract_code }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{
formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="期次" label-align="left" align="left" label-class-name="my-label">
{{ formData.period }}
</el-descriptions-item>
@ -44,7 +49,8 @@
<el-descriptions-item label="合同附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item"
target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
@ -54,6 +60,18 @@
</el-descriptions-item>
</el-descriptions>
</el-form>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apifinance_returned_moneyApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apiInvoicingRequestsApprove, apiInvoicingRequestsFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_returned_moneyFlows()
flows.value = res
} -->
</popup>
</div>
</template>
@ -63,7 +81,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apifinance_returned_moneyApprove, apifinance_returned_moneyFlows } from '@/api/flowSet.ts'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -93,7 +111,6 @@ const formData = reactive({
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
name: `文件${index + 1}`,
@ -101,9 +118,8 @@ const setFormData = async (data: Record<any, any>) => {
};
});
Object.assign(formDataannex, arry1)
}
getbidDocumentExaminationFlows()
}
@ -132,12 +148,13 @@ const handleClose = () => {
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apifinance_returned_moneyFlows()
flows.value = res
}
defineExpose({
open,
setFormData,

View File

@ -179,6 +179,20 @@
</div>
</el-tab-pane>
</el-tabs>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apisubcontracting_contractApprove" :id="formData?.id" @off="handleClose"></flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apibid_bidding_decisionApprove, apibid_bidding_decisionFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apisubcontracting_contractFlows()
flows.value = res
} -->
</el-form>
</popup>
</div>
@ -189,7 +203,7 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { apiProcurementContractDetailLists } from '@/api/procurement_contract_detail'
import { apisubcontracting_contractApprove, apisubcontracting_contractFlows } from '@/api/flowSet.ts'
import { apifinancereceiptLists } from '@/api/receiptrecord'
import { paymentplanLists } from '@/api/paymentplan'
import { paymentapplyLists } from '@/api/paymentrequest'
@ -420,9 +434,15 @@ const handleClose = () => {
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apisubcontracting_contractFlows()
flows.value = res
}
getbidDocumentExaminationFlows()

View File

@ -11,7 +11,7 @@
<el-button v-perms="['contract.subcontracting_contract/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
删除
</el-button> -->
<export-data class="ml-2.5" :fetch-fun="apiSubcontractingContractDetailLists" :params="queryParams"
<export-data class="ml-2.5 float-right" :fetch-fun="apiSubcontractingContractDetailLists" :params="queryParams"
:page-size="pager.size" />
<div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange">

View File

@ -84,6 +84,19 @@
</el-col>
</el-row>
</el-card>
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apisubcontracting_contract_negotiationApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
<!-- import { apibid_bidding_decisionApprove, apibid_bidding_decisionFlows } from '@/api/flowSet.ts'
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apisubcontracting_contract_negotiationFlows()
flows.value = res
} -->
</el-form>
</popup>
</div>
@ -94,8 +107,9 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import { apisubcontracting_contract_negotiationApprove, apisubcontracting_contract_negotiationFlows } from '@/api/flowSet'
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -118,15 +132,10 @@ const formData = reactive({
})
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
// console.log(data)
getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
@ -154,7 +163,13 @@ const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apisubcontracting_contract_negotiationFlows()
flows.value = res
}

View File

@ -82,7 +82,6 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apinegotiationLists, apinegotiationDelete, apinegotiationDetail } from '@/api/subcontractor'
const protype = reactive([])
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'