a
This commit is contained in:
parent
f0e25500d6
commit
ef45268da3
@ -1,3 +1,4 @@
|
||||
NODE_ENV = 'development'
|
||||
|
||||
VITE_APP_BASE_URL = 'https://ceshi-engineering.lihaink.cn/'
|
||||
# VITE_APP_BASE_URL = 'https://ceshi-engineering.lihaink.cn/'
|
||||
VITE_APP_BASE_URL = 'http://192.168.1.13:8089/'
|
69
src/components/materialPurchase/index.vue
Normal file
69
src/components/materialPurchase/index.vue
Normal file
@ -0,0 +1,69 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="查询" prop="name">
|
||||
<!-- <el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入内容" /> -->
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @cell-click="handleCurrentChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="流程dsfdsf步骤" prop="customer_name" show-overflow-tooltip />
|
||||
<el-table-column label="采购申请单号" prop="material_purchase_request_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="开票日期" prop="apply_date" show-overflow-tooltip />
|
||||
<el-table-column label="希望到货日期" prop="arrival_date" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { usePaging } from "@/hooks/usePaging"
|
||||
import { useDictData } from "@/hooks/useDictOptions"
|
||||
import { materialrequestLists } from '@/api/material_purchase_request.ts'
|
||||
import { ref, reactive, defineProps } from "vue"
|
||||
import { defineEmits } from "vue"
|
||||
import { timeFormat } from '@/utils/util'
|
||||
const props = defineProps({
|
||||
project_id: Number
|
||||
})
|
||||
|
||||
const queryParams = reactive({
|
||||
project_id: props.project_id
|
||||
});
|
||||
const { dictData } = useDictData('contract_type,contract_pricing_method')
|
||||
|
||||
// 选中数据
|
||||
const emits = defineEmits(["customEvent"]);
|
||||
|
||||
// 选中数据子父传递
|
||||
const handleCurrentChange = (value: any) => {
|
||||
emits("customEvent", value);
|
||||
};
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: materialrequestLists,
|
||||
params: queryParams,
|
||||
|
||||
});
|
||||
|
||||
getLists();
|
||||
</script>
|
@ -203,6 +203,7 @@ const customEvent = (e: any) => {
|
||||
matsname.value = e.custom_name
|
||||
project_name.value = e.project_name
|
||||
project_code.value = e.project_code
|
||||
formData.bid_document_no = ''
|
||||
showDialog.value = false;
|
||||
};
|
||||
|
||||
|
@ -2,14 +2,14 @@
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules" inline>
|
||||
<el-steps :active="2" align-center style="margin-bottom: 30px;">
|
||||
<!-- <el-steps :active="2" align-center style="margin-bottom: 30px;">
|
||||
<el-step title="销售发起" />
|
||||
<el-step title="商务部技术部" />
|
||||
<el-step title="财务部" />
|
||||
<el-step title="事业部总工" />
|
||||
<el-step title="事业部总经理审批" />
|
||||
<el-step title="销售副总" />
|
||||
</el-steps>
|
||||
</el-steps> -->
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="标书编号" prop="buy_bidding_document_id" @click="showDialog = true"
|
||||
@ -25,7 +25,7 @@
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="buy_bidding_document_id"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="bid_document_no" clearable disabled placeholder="系统自动填写" />
|
||||
<el-input v-model="formData.custom_name" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
@ -249,7 +249,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="金额" prop="cost_amount">
|
||||
<el-table-column label="成本金额" prop="cost_amount">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.cost_amount" type="number" disabled placeholder="系统自动计算" />
|
||||
</template>
|
||||
@ -289,6 +289,7 @@ import biddocumentTable from "@/components/biddocument/index.vue"
|
||||
import { apiBidDocumentExaminationAdd, apiBidDocumentExaminationEdit, apiBidDocumentExaminationDetail } from '@/api/bid_document_examination'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
import { watch } from "vue"
|
||||
|
||||
defineProps({
|
||||
dictData: {
|
||||
@ -369,7 +370,6 @@ const delFileFn1 = (index: number) => {
|
||||
}
|
||||
//金额计算
|
||||
const jiprice1 = (row: any, index: any) => {
|
||||
console.log(row)
|
||||
if (row.cost_price) {
|
||||
row.cost_amount = row.num * row.cost_price
|
||||
}
|
||||
@ -378,7 +378,6 @@ const jiprice1 = (row: any, index: any) => {
|
||||
}
|
||||
}
|
||||
const jiprice2 = (row: any, index: any) => {
|
||||
console.log(row)
|
||||
if (row.num) {
|
||||
row.cost_amount = row.num * row.cost_price
|
||||
}
|
||||
@ -388,7 +387,6 @@ const jiprice3 = (row: any, index: any) => {
|
||||
if (row.num) {
|
||||
row.sale_amount = row.num * row.sale_price
|
||||
}
|
||||
// console.log(row)
|
||||
}
|
||||
|
||||
// 上传文件
|
||||
@ -437,7 +435,7 @@ const formData = reactive({
|
||||
id: '',
|
||||
approve_id: 0,
|
||||
buy_bidding_document_id: '',
|
||||
|
||||
custom_name: "",
|
||||
bidding_project_overview: '',
|
||||
project_introduction: '',
|
||||
technical_protocol_deviation: '',
|
||||
@ -453,6 +451,15 @@ const formData = reactive({
|
||||
quotation_detail: []
|
||||
})
|
||||
|
||||
watch(tableData.value, (newVal, oldVal) => {
|
||||
formData.business_review_total_amount = 0
|
||||
tableData.value.forEach(item => {
|
||||
formData.business_review_total_amount += Number(item.sale_amount)
|
||||
item.sale_amount = item.num * item.sale_price
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
//获取值
|
||||
const customEvent = (e: any) => {
|
||||
formData.buy_bidding_document_id = e.id;
|
||||
@ -473,6 +480,7 @@ const customEvent = (e: any) => {
|
||||
bidding_project_overview.value = e.bid_project_overview
|
||||
project_introduction.value = e.project_desc
|
||||
showDialog.value = false
|
||||
formData.custom_name = e.custom_name
|
||||
|
||||
};
|
||||
const customEvent1 = (e: any) => {
|
||||
@ -486,7 +494,6 @@ const customEvent1 = (e: any) => {
|
||||
// customer_name.value = e.name;
|
||||
showDialog1.value = false;
|
||||
|
||||
console.log(tableData.value)
|
||||
};
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
@ -502,7 +509,7 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
}
|
||||
}
|
||||
if (data.dept_id) {
|
||||
getlist1(data.org_id)
|
||||
// getlist1(data.org_id)
|
||||
}
|
||||
|
||||
|
||||
@ -594,7 +601,7 @@ const handleSubmit = async () => {
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
getlist()
|
||||
// getlist()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
|
@ -3,18 +3,29 @@
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-row>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="bid_document_examination_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" @click="showDialog = true">
|
||||
<el-form-item label="标书审查" prop="bid_document_examination_id"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" @click="showDialog = true">
|
||||
<el-input v-model="formData.code" readonly clearable placeholder="请选择标书审查" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="bid_document_examination_id"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_name" readonly clearable placeholder="请选择项目" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="bid_document_examination_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="项目编码" prop="bid_document_examination_id"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="bid_document_examination_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="matsname" clearable disabled placeholder="系统自动填写" />
|
||||
<el-form-item label="客户名称" prop="bid_document_examination_id"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.custom_name" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<!-- @click="showDialog1 = true" -->
|
||||
@ -63,13 +74,14 @@
|
||||
<el-dialog v-model="showDialog1" title="选择产品" width="70%">
|
||||
<prodctTable @customEvent="customEvent1"></prodctTable>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="bidDocumentExaminationDetailEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import biddocumentTable from "@/components/biddocument/index.vue"
|
||||
import biddocumentTable from "@/components/document_examination/index.vue"
|
||||
import prodctTable from '@/components/product/index.vue'
|
||||
import { apiBidDocumentExaminationDetailAdd, apiBidDocumentExaminationDetailEdit, apiBidDocumentExaminationDetailDetail } from '@/api/bid_document_examination_detail'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
@ -108,6 +120,9 @@ const formData = reactive({
|
||||
amount: '',
|
||||
cost_price: '',
|
||||
sale_price: '',
|
||||
code: "",
|
||||
custom_name: ""
|
||||
|
||||
})
|
||||
|
||||
|
||||
@ -118,10 +133,12 @@ const formRules = reactive<any>({
|
||||
|
||||
//获取值
|
||||
const customEvent = (e: any) => {
|
||||
formData.bid_document_examination_id = e.id;
|
||||
matsname.value = e.customer_name
|
||||
// formData.bid_document_examination_id = e.id;
|
||||
formData.custom_name = e.custom_name
|
||||
project_name.value = e.project_name
|
||||
project_code.value = e.project_code
|
||||
formData.bid_document_examination_id = e.id
|
||||
formData.code = e.code
|
||||
showDialog.value = false;
|
||||
|
||||
|
||||
|
@ -3,7 +3,8 @@
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="标书审查编码" prop="bid_document_examination_code">
|
||||
<el-input class="w-[280px]" v-model="queryParams.bid_document_examination_code" clearable placeholder="请输入标书审查编码" />
|
||||
<el-input class="w-[280px]" v-model="queryParams.bid_document_examination_code" clearable
|
||||
placeholder="请输入标书审查编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="产品名称" prop="product_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.product_name" clearable placeholder="请输入产品名称" />
|
||||
@ -21,7 +22,8 @@
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['bid.bid_document_examination_detail/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
<el-button v-perms="['bid.bid_document_examination_detail/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
@ -31,8 +33,8 @@
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="客户名称" prop="custom_name" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="项目编码" prop="product_code" show-overflow-tooltip />
|
||||
<el-table-column label="投标审查单号" prop="cost_price" show-overflow-tooltip />
|
||||
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="投标审查单号" prop="bid_document_examination_code" show-overflow-tooltip />
|
||||
<el-table-column label="产品名称" prop="product_name" show-overflow-tooltip />
|
||||
<el-table-column label="型号规格" prop="product_specs" show-overflow-tooltip />
|
||||
<el-table-column label="单位" prop="product_unit" show-overflow-tooltip />
|
||||
@ -45,20 +47,23 @@
|
||||
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['bid.bid_document_examination_detail/edit']" type="primary" link @click="handleEdit(row)">
|
||||
<el-button v-perms="['bid.bid_document_examination_detail/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['bid.bid_document_examination_detail/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
<el-button v-perms="['bid.bid_document_examination_detail/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['bid.bid_document_examination_detail/detail']" link @click="handledetail(row)">
|
||||
<el-button v-perms="['bid.bid_document_examination_detail/detail']" link
|
||||
@click="handledetail(row)">
|
||||
详情
|
||||
</el-button>
|
||||
</template>
|
||||
</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>
|
||||
|
@ -4,85 +4,108 @@
|
||||
<popup ref="popupRef" title="项目合同详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px">
|
||||
|
||||
|
||||
<el-descriptions title="基本信息" :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.bid_document_no }}</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_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.bid_document_no }}</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.contract_type_text }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="合同计价方式" label-align="left" align="left" label-class-name="my-label"> {{ formData.contract_pricing_method_text
|
||||
<el-descriptions-item label="合同计价方式" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.contract_pricing_method_text
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="甲方" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a
|
||||
<el-descriptions-item label="甲方" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_a
|
||||
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="乙方" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b }}</el-descriptions-item>
|
||||
<el-descriptions-item label="乙方" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_b }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="通讯地址" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a_contact_address
|
||||
<el-descriptions-item label="通讯地址" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_a_contact_address
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="通讯地址" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b_contact_address
|
||||
<el-descriptions-item label="通讯地址" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_b_contact_address
|
||||
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="主要负责人" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a_diretor
|
||||
<el-descriptions-item label="主要负责人" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_a_diretor
|
||||
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="主要负责人" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b_diretor
|
||||
<el-descriptions-item label="主要负责人" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_b_diretor
|
||||
|
||||
}}</el-descriptions-item>
|
||||
|
||||
|
||||
|
||||
|
||||
<el-descriptions-item label="电话" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a_phone
|
||||
<el-descriptions-item label="电话" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_a_phone
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="电话" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b_phone
|
||||
<el-descriptions-item label="电话" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_b_phone
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="手机" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a_mobile
|
||||
<el-descriptions-item label="手机" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_a_mobile
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="手机" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b_mobile
|
||||
<el-descriptions-item label="手机" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_b_mobile
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="邮箱" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a_email
|
||||
<el-descriptions-item label="邮箱" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_a_email
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="邮箱" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b_email
|
||||
<el-descriptions-item label="邮箱" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.party_b_email
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="金额" label-align="left" align="left" label-class-name="my-label"> {{ formData.amount
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="金额大写" label-align="left" align="left" label-class-name="my-label"> {{ formData.amount
|
||||
|
||||
}}</el-descriptions-item> -->
|
||||
<el-descriptions-item label="业务负责人" label-align="left" align="left" label-class-name="my-label"> {{ formData.business_director_name
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="状态" label-align="left" align="left" label-class-name="my-label"> {{ formData.contract_status_text
|
||||
<el-descriptions-item label="金额" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.amount
|
||||
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="合同有效期" label-align="left" align="left" label-class-name="my-label"> {{ formData.expire
|
||||
<el-descriptions-item label="业务负责人" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.business_director_name
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="签约日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.contract_date
|
||||
<el-descriptions-item label="状态" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.contract_status_text
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="主要条款" label-align="left" align="left" label-class-name="my-label"> {{ formData.main_content
|
||||
|
||||
<el-descriptions-item label="合同有效期" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.expire
|
||||
|
||||
}}</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.contract_date
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="主要条款" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.main_content
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.remark
|
||||
|
||||
}}</el-descriptions-item>
|
||||
|
||||
@ -90,7 +113,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>
|
||||
@ -105,16 +129,18 @@
|
||||
</div>
|
||||
<div>
|
||||
<el-table :data="tableData" stripe style="width: 100%">
|
||||
<el-table-column label="期次" prop='customer_demand_name' width="180" />
|
||||
<el-table-column label="计划回款日期" prop='submission_time' width="180" />
|
||||
<el-table-column label="金额" prop='solution_content' />
|
||||
<el-table-column label="期次" prop='period' width="180" />
|
||||
<el-table-column label="计划回款日期" prop='return_date' width="180" />
|
||||
<el-table-column label="金额" prop='amount' />
|
||||
|
||||
<el-table-column label="备注" prop="annex" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
|
||||
</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>
|
||||
|
||||
|
||||
@ -133,6 +159,8 @@ 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 type { TabsPaneContext } from 'element-plus'
|
||||
|
||||
|
||||
@ -147,7 +175,7 @@ defineProps({
|
||||
const pager1 = reactive({
|
||||
page_size: 10,
|
||||
page_no: 1,
|
||||
customer_demand_id: ""
|
||||
contract_id: ""
|
||||
})
|
||||
|
||||
const total = ref(0)
|
||||
@ -188,11 +216,9 @@ const handleCurrentChange1 = (val: number) => {
|
||||
|
||||
// 解决方案列表
|
||||
const solutionLists = () => {
|
||||
apiCustomerDemandSolutionLists(pager1).then((res) => {
|
||||
apireturnedLists(pager1).then((res) => {
|
||||
tableData.value = res.lists
|
||||
|
||||
total.value = res.count
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
@ -201,7 +227,8 @@ const solutionLists = () => {
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formData, data)
|
||||
pager1.customer_demand_id = data.id
|
||||
console.log(formData, "formdata")
|
||||
pager1.contract_id = data.id
|
||||
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
@ -212,7 +239,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
}
|
||||
competitorLists()
|
||||
// competitorLists()
|
||||
solutionLists()
|
||||
|
||||
}
|
||||
|
||||
|
@ -37,11 +37,11 @@
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.contract_name" clearable placeholder="请输入合同名称" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="合同编号" prop="contract_code"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.contract_code" clearable placeholder="请输入合同编号" />
|
||||
</el-form-item></el-col>
|
||||
<el-input v-model="formData.contract_code" placeholder="系统自动填写" disabled />
|
||||
</el-form-item></el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同类型" prop="contract_type"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
|
||||
@ -200,7 +200,7 @@
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form>
|
||||
<reviewprocess />
|
||||
<!-- <reviewprocess /> -->
|
||||
</popup>
|
||||
<el-dialog v-model="showDialog" title="选择客户" width="70%">
|
||||
<customDialog @customEvent="customEvent"></customDialog>
|
||||
@ -223,11 +223,11 @@
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import biddocumentTable from "@/components/biddocument/index.vue"
|
||||
import reviewprocess from '@/components/reviewprocess/index.vue'
|
||||
import projectTable from "@/components/project/index.vue"
|
||||
import personnelselector from '@/components/personnelselector/index.vue'
|
||||
import { apiContractAdd, apiContractEdit, apiContractDetail } from '@/api/contract'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { apireturnedLists } from "@/api/remittance.ts"
|
||||
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
@ -354,7 +354,10 @@ const tanchuan = () => {
|
||||
const customEvent = (e: any) => {
|
||||
formData.custom_id = e.id;
|
||||
custom_name.value = e.name;
|
||||
console.log(custom_name.value, e.name)
|
||||
// console.log(custom_name.value, e.name)
|
||||
bidding_code.value = ''
|
||||
project_name.value = ''
|
||||
project_code.value = ''
|
||||
showDialog.value = false;
|
||||
};
|
||||
const customEvent1 = (e: any) => {
|
||||
@ -368,6 +371,7 @@ const customEvent2 = (e: any) => {
|
||||
project_id.value = e.id;
|
||||
project_name.value = e.name;
|
||||
project_code.value = e.project_code
|
||||
bidding_code.value = ''
|
||||
showDialog2.value = false;
|
||||
};
|
||||
|
||||
@ -487,6 +491,13 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
project_code.value = data.project_code
|
||||
bidding_code.value = data.bid_document_no
|
||||
business_director_name.value = data.business_director_name
|
||||
let res = await apireturnedLists({ contract_id: data.id })
|
||||
paymentList.splice(0, 9999)
|
||||
res.lists.forEach((item: any) => {
|
||||
paymentList.push(item)
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
|
@ -8,7 +8,8 @@
|
||||
<el-form-item label="合同类型" prop="contract_type">
|
||||
<el-select class="w-[280px]" v-model="queryParams.contract_type" clearable placeholder="请选择合同类型">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option v-for="(item, index) in dictData.contract_type" :key="index" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="(item, index) in dictData.contract_type" :key="index" :label="item.name"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@ -24,15 +25,15 @@
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['contract.contract/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
<el-button v-perms="['contract.contract/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="流程编号" prop="code" show-overflow-tooltip />
|
||||
<el-table-column label="合同编号" prop="bid_document_no" show-overflow-tooltip />
|
||||
<el-table-column label="合同编号" prop="contract_code" show-overflow-tooltip />
|
||||
<el-table-column label="客户名称" prop="custom_name" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
|
||||
@ -47,9 +48,6 @@
|
||||
<dict-value :options="dictData.contract_pricing_method" :value="row.contract_pricing_method" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="甲方" prop="party_a" show-overflow-tooltip />
|
||||
<el-table-column label="乙方" prop="party_b" show-overflow-tooltip />
|
||||
<el-table-column label="金额" prop="amount" show-overflow-tooltip />
|
||||
<el-table-column label="业务负责人" prop="business_director_name" show-overflow-tooltip />
|
||||
<el-table-column label="合同状态" prop="contract_status" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
@ -57,15 +55,23 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合同有效期" prop="expire" show-overflow-tooltip />
|
||||
|
||||
|
||||
<el-table-column label="签约日期" prop="contract_date" show-overflow-tooltip />
|
||||
<el-table-column label="合同金额" prop="amount" show-overflow-tooltip />
|
||||
<el-table-column label="洽商金额" prop="negotiation_amount" show-overflow-tooltip />
|
||||
<el-table-column label="实际合同金额" prop="reality_contract_amount" show-overflow-tooltip />
|
||||
<el-table-column label="已回款" prop="returned_amount" show-overflow-tooltip />
|
||||
<el-table-column label="未回款" prop="not_returned_amount" show-overflow-tooltip />
|
||||
<el-table-column label="已开票" prop="invoicing_amount" show-overflow-tooltip />
|
||||
<el-table-column label="未开票" prop="not_invoicing_amount" show-overflow-tooltip />
|
||||
<el-table-column label="已退款金额" prop="refund_amount" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="操作" width="150" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['contract.contract/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['contract.contract/delete']" type="danger" link @click="handleDelete(row.approve_id)">
|
||||
<el-button v-perms="['contract.contract/delete']" type="danger" link
|
||||
@click="handleDelete(row.approve_id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['contract.contract/detail']" link @click="handleDetail(row)">
|
||||
@ -75,7 +81,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>
|
||||
@ -153,11 +159,11 @@ const handleDetail = async (data: any) => {
|
||||
let res = await apiContractDetail({
|
||||
id: data.id
|
||||
})
|
||||
|
||||
showDtail.value = true
|
||||
await nextTick()
|
||||
detailRef.value?.open()
|
||||
detailRef.value?.setFormData(res)
|
||||
await nextTick()
|
||||
detailRef.value?.open()
|
||||
}
|
||||
getLists()
|
||||
</script>
|
||||
|
@ -38,8 +38,6 @@
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="流程步骤" prop="" show-overflow-tooltip />
|
||||
<el-table-column label="流程编号" prop="" show-overflow-tooltip />
|
||||
<el-table-column label="洽商编号" prop="negotiation_no" show-overflow-tooltip />
|
||||
<el-table-column label="合同编号" prop="contract_code" show-overflow-tooltip />
|
||||
<el-table-column label="客户名称" prop="custom_name" show-overflow-tooltip />
|
||||
|
@ -231,10 +231,8 @@ import suppliertable from '@/components/supplier/index.vue'
|
||||
import subcontractingDialog from '@/components/procurementsubcontracting_selector/index.vue'
|
||||
import paylistDialog from '@/components/paylist/index.vue'
|
||||
import subcontracting from '@/components/procurementsubcontracting_selector/subcontracting.vue'
|
||||
|
||||
const active = ref(0)
|
||||
import bankaccountDialog from '@/components/bankaccount/index.vue'
|
||||
|
||||
import { paymentapplyAdd, paymentapplyEdit, paymentapplyDetail } from '@/api/paymentrequest'
|
||||
import { toChinesNum } from "@/utils/util";
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
@ -370,31 +368,24 @@ const popupTitle = computed(() => {
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
supplier_id: 1,
|
||||
approve_id: '',
|
||||
contract_id: '',
|
||||
pay_date: '',
|
||||
period: '',
|
||||
finance_payment_plan_id: '',
|
||||
pay_type: '',
|
||||
applier: '',
|
||||
invoice_status: '',
|
||||
amount: '',
|
||||
amount_daxie: '',
|
||||
desc: '',
|
||||
remark: '',
|
||||
annex: [],
|
||||
bank: '',
|
||||
account_name: '',
|
||||
account: '',
|
||||
contract_cate: 1,
|
||||
id: "",
|
||||
"supplier_id": 0,
|
||||
"contract_cate": 0,
|
||||
"contract_id": 0,
|
||||
"finance_payment_plan_id": 0,
|
||||
"pay_date": "string",
|
||||
"payment_nature": 0,
|
||||
"apply_user": "",
|
||||
"payee_bank": "",
|
||||
"payee_account_name": "",
|
||||
"payee_account": "",
|
||||
"bank_account_id": '',
|
||||
bank_account_name: ""
|
||||
"pay_type": 0,
|
||||
"apply_user": "string",
|
||||
"invoice_status": 0,
|
||||
"amount": 0,
|
||||
"desc": "string",
|
||||
"remark": "string",
|
||||
"annex": "string",
|
||||
"payee_bank": "string",
|
||||
"payee_account_name": "string",
|
||||
"payee_account": "string",
|
||||
"bank_account_id": 0
|
||||
})
|
||||
|
||||
|
||||
|
@ -119,7 +119,7 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div style=" display: flex;justify-content: flex-end;margin-bottom: 30px;">
|
||||
<el-button @click="showDialog2 = true" type="primary" plain>选择项目MRP缺口</el-button>
|
||||
<el-button @click="showDialog2 = true" type="primary" plain>选择采购申请</el-button>
|
||||
</div>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
@ -445,6 +445,10 @@ const customEvent = (e: any) => {
|
||||
formData.project_id = e.id
|
||||
project_code.value = e.project_code
|
||||
showDialog.value = false;
|
||||
materialList.splice(0, 9999)
|
||||
|
||||
|
||||
|
||||
};
|
||||
const customEvent1 = (e: any) => {
|
||||
|
||||
@ -467,14 +471,14 @@ const customEvent2 = (e: any) => {
|
||||
}
|
||||
//监听材料运算
|
||||
const materialji1 = (row: any, index: any) => {
|
||||
// console.log(row)
|
||||
|
||||
const num = Number(row.num) || 0
|
||||
const price = Number(row.price) || 0
|
||||
const tax_rate = Number(row.tax_rate ? row.tax_rate.name : 0) || 0
|
||||
row.amount_excluding_tax = num * price
|
||||
row.amount_including_tax = num * price * (tax_rate / 100)
|
||||
amount.value = num * price
|
||||
amount_excluding_tax.value = num * price * (tax_rate / 100)
|
||||
row.amount_including_tax = num * price
|
||||
// row.amount_including_tax = num * price * (tax_rate / 100)
|
||||
// amount.value = num * price
|
||||
// amount_excluding_tax.value = num * price * (tax_rate / 100)
|
||||
};
|
||||
const materialji2 = (row: any, index: any, e) => {
|
||||
console.log(e, row)
|
||||
|
@ -2,21 +2,25 @@
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<el-form-item label="采购合同id" prop="procurement_contract_id">
|
||||
<el-input v-model="formData.procurement_contract_id" clearable placeholder="请输入采购合同id" />
|
||||
<el-form-item label="采购合同名称" prop="procurement_contract_id">
|
||||
<el-input v-model="formData.procurement_contract_code" clearable readonly placeholder="点击选则采购合同"
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="材料采购申请id" prop="material_procurement_application_id">
|
||||
<el-input v-model="formData.material_procurement_application_id" clearable placeholder="请输入材料采购申请id" />
|
||||
<el-form-item label="材料采购申请" prop="material_procurement_application_id">
|
||||
<el-input v-model="formData.material_purchase_request_code"
|
||||
:disabled="!formData.procurement_contract_code" readonly placeholder="请输入材料采购申请"
|
||||
@click="showDialog1 = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="数量" prop="num">
|
||||
<el-input v-model="formData.num" clearable placeholder="请输入数量" />
|
||||
<el-input v-model="formData.num" clearable placeholder="请输入数量" type="number" />
|
||||
</el-form-item>
|
||||
<el-form-item label="含税单价" prop="unit_price_including_tax">
|
||||
<el-input v-model="formData.unit_price_including_tax" clearable placeholder="请输入含税单价" />
|
||||
<el-input v-model="formData.unit_price_including_tax" clearable placeholder="请输入含税单价" type="number" />
|
||||
</el-form-item>
|
||||
<el-form-item label="税率" prop="tax_rate">
|
||||
<el-select class="flex-1" v-model="formData.tax_rate" clearable placeholder="请选择税率">
|
||||
<el-option v-for="(item, index) in dictData.tax_rate" :key="index" :label="item.name" :value="item.value" />
|
||||
<el-option v-for="(item, index) in dictData.tax_rate" :key="index" :label="item.name"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="不含税金额" prop="amount_excluding_tax">
|
||||
@ -25,8 +29,18 @@
|
||||
<el-form-item label="含税金额" prop="amount_including_tax">
|
||||
<el-input v-model="formData.amount_including_tax" clearable placeholder="请输入含税金额" />
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
|
||||
<el-dialog v-model="showDialog" title="选择采购合同" width="70%">
|
||||
<procurementsubcontractingSelector @customEvent="customEvent"></procurementsubcontractingSelector>
|
||||
</el-dialog>
|
||||
<div v-if="showDialog1">
|
||||
<el-dialog v-model="showDialog1" title="选择采购合同" width="70%">
|
||||
<materialPurchase @customEvent="customEvent1" :project_id="formData.project_id"></materialPurchase>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
@ -35,8 +49,12 @@
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiProcurementContractDetailAdd, apiProcurementContractDetailEdit, apiProcurementContractDetailDetail } from '@/api/procurement_contract_detail'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
|
||||
import procurementsubcontractingSelector from "@/components/procurementsubcontracting_selector/index.vue"
|
||||
import materialPurchase from "@/components/materialPurchase/index.vue"
|
||||
|
||||
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
@ -47,6 +65,8 @@ const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const showDialog = ref(false)
|
||||
const showDialog1 = ref(false)
|
||||
|
||||
|
||||
// 弹窗标题
|
||||
@ -58,7 +78,10 @@ const popupTitle = computed(() => {
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
procurement_contract_id: '',
|
||||
project_id: "",
|
||||
procurement_contract_code: "",
|
||||
material_procurement_application_id: '',
|
||||
material_purchase_request_code: "",
|
||||
num: '',
|
||||
unit_price_including_tax: '',
|
||||
tax_rate: '',
|
||||
@ -66,7 +89,21 @@ const formData = reactive({
|
||||
amount_including_tax: '',
|
||||
})
|
||||
|
||||
const customEvent = (e: any) => {
|
||||
console.log(e)
|
||||
formData.procurement_contract_id = e.id
|
||||
formData.project_id = e.project_id
|
||||
formData.procurement_contract_code = e.contract_name
|
||||
formData.material_procurement_application_id = ''
|
||||
formData.material_purchase_request_code = ''
|
||||
showDialog.value = false
|
||||
|
||||
}
|
||||
const customEvent1 = (e: any) => {
|
||||
formData.material_procurement_application_id = e.id
|
||||
formData.material_purchase_request_code = e.material_purchase_request_code
|
||||
showDialog1.value = false
|
||||
}
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
|
@ -3,10 +3,12 @@
|
||||
<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 placeholder="请输入采购合同id" />
|
||||
<el-input class="w-[280px]" v-model="queryParams.procurement_contract_id" clearable
|
||||
placeholder="请输入采购合同id" />
|
||||
</el-form-item>
|
||||
<el-form-item label="材料采购申请id" prop="material_procurement_application_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.material_procurement_application_id" clearable placeholder="请输入材料采购申请id" />
|
||||
<el-input class="w-[280px]" v-model="queryParams.material_procurement_application_id" clearable
|
||||
placeholder="请输入材料采购申请id" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
@ -15,15 +17,16 @@
|
||||
</el-form>
|
||||
</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">
|
||||
<!-- <el-button v-perms="['procurement_contract_detail/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['procurement_contract_detail/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
</el-button> -->
|
||||
<!-- <el-button v-perms="['procurement_contract_detail/delete']" :disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
@ -50,10 +53,12 @@
|
||||
<el-table-column label="参数说明" prop="material_parameter_description" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['procurement_contract_detail/edit']" type="primary" link @click="handleEdit(row)">
|
||||
<el-button v-perms="['procurement_contract_detail/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['procurement_contract_detail/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
<el-button v-perms="['procurement_contract_detail/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['procurement_contract_detail/detail']" link @click="handleDetail(row)">
|
||||
@ -63,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>
|
||||
|
@ -19,6 +19,17 @@
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<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-col :span="8">
|
||||
<el-form-item label="联系电话" prop="custom_master_phone"
|
||||
:rules="[{ validator: isMobileNumber, trigger: 'blur' }]">
|
||||
<el-input v-model="formData.custom_master_phone" disabled clearable placeholder="请输入联系电话"
|
||||
:regex="/^ 1[3 - 9]\d{ 9}$ /" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="报价日期" prop="quotation_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.quotation_date" clearable type="date"
|
||||
@ -26,17 +37,7 @@
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="联系人" prop="custom_master_name">
|
||||
<el-input v-model="formData.custom_master_name" clearable placeholder="请输入联系人" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="联系电话" prop="custom_master_phone"
|
||||
:rules="[{ validator: isMobileNumber, trigger: 'blur' }]">
|
||||
<el-input v-model="formData.custom_master_phone" clearable placeholder="请输入联系电话"
|
||||
:regex="/^ 1[3 - 9]\d{ 9}$ /" />
|
||||
</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="请输入制单人" />
|
||||
@ -123,7 +124,7 @@
|
||||
<el-table-column label="序号">
|
||||
<template #default="{ row }">
|
||||
|
||||
<el-button @click="handleAdd(row)" size="small">+</el-button>
|
||||
<!-- <el-button @click="handleAdd(row)" size="small">+</el-button> -->
|
||||
<el-button @click="handleDelete(row)" size="small">-</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -159,8 +160,7 @@
|
||||
<el-table-column label="税率(%)" prop="tax_rate">
|
||||
<template #default="{ row }">
|
||||
|
||||
<el-select class="flex-1" v-model="row.tax_rate" clearable placeholder="请选择税率"
|
||||
@change="test(row)">
|
||||
<el-select class="flex-1" v-model="row.tax_rate" clearable placeholder="请选择税率">
|
||||
<el-option v-for="(item, index) in dictData.tax_rate" :key="index" :label="item.name"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
@ -191,9 +191,9 @@
|
||||
|
||||
</el-table>
|
||||
</div>
|
||||
<div>
|
||||
<!-- <div>
|
||||
<reviewprocess></reviewprocess>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
|
||||
</el-form>
|
||||
@ -338,7 +338,10 @@ const formData = reactive({
|
||||
const customEvent = (e: any) => {
|
||||
formData.custom_id = e.id;
|
||||
customer_name.value = e.name;
|
||||
formData.custom_master_name = e.master_name
|
||||
formData.custom_master_phone = e.master_phone
|
||||
showDialog.value = false;
|
||||
|
||||
};
|
||||
const customEvent1 = (e: any) => {
|
||||
tableData.value.push({
|
||||
@ -477,7 +480,16 @@ const totalPrice = computed(() => {
|
||||
watch(tableData.value, (newVal, oldVal) => {
|
||||
let num = 0;
|
||||
tableData.value.forEach(item => {
|
||||
num += item.price * item.product_num
|
||||
item.amount = item.price * item.product_num
|
||||
let name;
|
||||
props.dictData.tax_rate.forEach(items => {
|
||||
if (items.value == item.tax_rate) {
|
||||
name = items.name
|
||||
}
|
||||
})
|
||||
item.amount_including = item.amount * (1 - (Number(name) / 100)) || 0
|
||||
num += item.amount
|
||||
|
||||
})
|
||||
formData.amount_including_tax = num
|
||||
amount_including_daxie.value = convertToChinese(num)
|
||||
|
@ -459,29 +459,53 @@ const materialji1 = (row: any, index: any) => {
|
||||
const num = Number(row.num) || 0
|
||||
const price = Number(row.price) || 0
|
||||
const tax_rate = Number(row.tax_rate ? row.tax_rate.name : 0) || 0
|
||||
row.amount_excluding_tax = num * price
|
||||
row.amount_including_tax = (num * price * (tax_rate / 100)).toFixed(2)
|
||||
amount.value = num * price
|
||||
amount_excluding_tax.value = (num * price * (tax_rate / 100)).toFixed(2)
|
||||
row.amount_including_tax = num * price
|
||||
row.amount_excluding_tax = (num * price * (1 - tax_rate / 100)).toFixed(2)
|
||||
|
||||
|
||||
|
||||
|
||||
// amount.value = num * price
|
||||
// amount_excluding_tax.value = (num * price * (tax_rate / 100)).toFixed(2)
|
||||
};
|
||||
const materialji2 = (row: any, index: any, e) => {
|
||||
console.log(e, row)
|
||||
const num = Number(row.num) || 0
|
||||
const price = Number(row.price) || 0
|
||||
const tax_rate = Number(row.tax_rate.name) || 0
|
||||
row.amount_excluding_tax = num * price
|
||||
row.amount_including_tax = num * price * (tax_rate / 100)
|
||||
amount.value = num * price
|
||||
amount_excluding_tax.value = num * price * (tax_rate / 100)
|
||||
row.amount_including_tax = num * price
|
||||
row.amount_excluding_tax = (num * price * (1 - tax_rate / 100)).toFixed(2)
|
||||
// amount.value = num * price
|
||||
// amount_excluding_tax.value = num * price * (tax_rate / 100)
|
||||
};
|
||||
|
||||
|
||||
|
||||
watch(
|
||||
() => amount.value,
|
||||
() => subcontractList,
|
||||
() => {
|
||||
if (amount.value && amount.value > 0) {
|
||||
amount_daxie.value = toChinesNum(amount.value)
|
||||
}
|
||||
// if (amount.value && amount.value > 0) {
|
||||
// amount_daxie.value = toChinesNum(amount.value)
|
||||
// }
|
||||
amount.value = 0
|
||||
amount_excluding_tax.value = 0
|
||||
subcontractList.forEach(item => {
|
||||
amount.value += Number(item.amount_including_tax)
|
||||
amount_excluding_tax.value += Number(item.amount_excluding_tax)
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
)
|
||||
|
||||
// watch(
|
||||
// () => amount.value,
|
||||
// () => {
|
||||
// if (amount.value && amount.value > 0) {
|
||||
// amount_daxie.value = toChinesNum(amount.value)
|
||||
// }
|
||||
// }
|
||||
// )
|
||||
//监听质保金
|
||||
watch(
|
||||
() => formData.retention_money_rate,
|
||||
|
@ -44,14 +44,15 @@
|
||||
<el-button v-perms="['contract.subcontracting_contract/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button> -->
|
||||
<el-button v-perms="['contract.subcontracting_contract/detail']" link @click="handleDetail(row)">
|
||||
<el-button v-perms="['contract.subcontracting_contract/detail']" link
|
||||
@click="handleDetail(row)">
|
||||
详情
|
||||
</el-button>
|
||||
</template>
|
||||
</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>
|
||||
@ -121,6 +122,7 @@ const handleDelete = async (id: number | any[]) => {
|
||||
}
|
||||
const handleDetail = async (data: any) => {
|
||||
let res = await apiSubcontractingContractDetailDetail({ id: data.id })
|
||||
console.log(res, "res")
|
||||
showDtail.value = true
|
||||
await nextTick()
|
||||
detailRef.value?.open()
|
||||
|
@ -146,10 +146,7 @@
|
||||
<el-input v-model="formData.remark" type="textarea" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="24">
|
||||
|
||||
<el-form-item label="附件" prop="field87">
|
||||
<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"
|
||||
@ -160,7 +157,6 @@
|
||||
上传
|
||||
</el-button>
|
||||
</el-upload>
|
||||
|
||||
<div>
|
||||
<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"
|
||||
@ -168,25 +164,18 @@
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
|
||||
<el-dialog v-model="showDialog1" title="选择汇票" width="70%">
|
||||
<acceptanceDialog @customEvent="customEvent1"></acceptanceDialog>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showDialog2" title="选择合同" width="70%">
|
||||
<subcontractDialog @customEvent="customEvent2"></subcontractDialog>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showDialog" title="选择供应商" width="70%">
|
||||
<supplierDialog @customEvent="customEvent"></supplierDialog>
|
||||
</el-dialog>
|
||||
|
||||
</el-form>
|
||||
</popup>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user