This commit is contained in:
weiz 2024-03-20 14:45:44 +08:00
parent 3bdadbd2bb
commit 1f8e7f2773
9 changed files with 65 additions and 168 deletions
src
api
views
contract
contract_negotiation
procurement_contract
procurement_contract_detail

@ -1,26 +1,30 @@
import request from '@/utils/request'
import request from "@/utils/request";
// 采购合同列表
export function apiProcurementContractLists(params: any) {
return request.get({ url: '/contract.procurement_contract/lists', params })
return request.get({ url: "/contract.procurement_contract/lists", params });
}
// 添加采购合同
export function apiProcurementContractAdd(params: any) {
return request.post({ url: '/contract.procurement_contract/add', params })
return request.post({ url: "/contract.procurement_contract/add", params });
}
// 编辑采购合同
export function apiProcurementContractEdit(params: any) {
return request.post({ url: '/contract.procurement_contract/edit', params })
return request.post({ url: "/contract.procurement_contract/edit", params });
}
// 删除采购合同
export function apiProcurementContractDelete(params: any) {
return request.post({ url: '/contract.procurement_contract/delete', params })
return request.post({ url: "/contract.procurement_contract/delete", params });
}
// 采购合同详情
export function apiProcurementContractDetail(params: any) {
return request.get({ url: '/contract.procurement_contract/detail', params })
}
return request.get({ url: "/contract.procurement_contract/detail", params });
}
export function apiProcurementContractSearch(params: any) {
return request.get({ url: "/contract.procurement_contract/datas", params });
}

@ -1,27 +1,30 @@
import request from '@/utils/request'
import request from "@/utils/request";
// 供应商表列表
export function apisupplierLists(params: any) {
return request.get({ url: '/supplier.supplier/lists', params })
return request.get({ url: "/supplier.supplier/lists", params });
}
// 添加供应商
export function apisupplierAdd(params: any) {
return request.post({ url: '/supplier.supplier/add', params })
return request.post({ url: "/supplier.supplier/add", params });
}
// 编辑供应商
export function apisupplierEdit(params: any) {
return request.post({ url: '/supplier.supplier/edit', params })
return request.post({ url: "/supplier.supplier/edit", params });
}
// 删除供应商
export function apisupplierDelete(params: any) {
return request.post({ url: '/supplier.supplier/delete', params })
return request.post({ url: "/supplier.supplier/delete", params });
}
// 供应商详情
export function apisupplierDetail(params: any) {
return request.get({ url: '/supplier.supplier/detail', params })
}
return request.get({ url: "/supplier.supplier/detail", params });
}
export function apiSupplierSearch(params: any) {
return request.get({ url: "/supplier.supplier/datas", params });
}

@ -43,6 +43,7 @@
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="55" />
<el-table-column label="合同编号" prop="contract_code" show-overflow-tooltip />
<el-table-column label="合同名称" prop="contract_name" 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 />

@ -3,18 +3,6 @@
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="160px" :rules="formRules">
<div
style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
<el-select class="w-[180px]" v-model="formData.dept_id" clearable placeholder="请选择部门">
<el-option v-for="(item, index) in list2" :key="index" :label="item.name" :value="item.id" />
</el-select>
<el-select class="w-[180px]" v-model="formData.org_id" clearable placeholder="请选择组织"
@change="deptrmt">
<el-option v-for="(item, index) in list1" :key="index" :label="item.name" :value="item.id" />
</el-select>
</div>
<el-row>
<el-col :span="8">
<el-form-item label="合同名称" prop="contract_id" @click="showDialog = true"
@ -191,10 +179,7 @@ const profit = ref(0)
const formDataannex1 = reactive([])
const formDataannex2 = reactive([])
const contract_pricing_method = ref('')
const list1 = reactive([])
const list2 = reactive([])
import { deptAll } from '@/api/org/department'
import { getAll } from '@/api/org/organization'
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑合同洽商' : '新增合同洽商'
@ -238,10 +223,7 @@ const delFileFn2 = (index: number) => {
//
const formData = reactive({
id: '',
dept_id: '',
org_id: '',
contract_id: '',
// approve_id: '',
negotiation_name: '',
negotiation_no: '',
negotiation_amount: '',
@ -320,34 +302,6 @@ watch(
}
)
//
const getlist = () => {
getAll().then((res) => {
Object.assign(list1, res)
if (res.length > 0 && !formData.org_id) {
formData.org_id = res[0].id
deptAll({ 'org_id': res[0].id }).then((res) => {
if (res.length > 0) {
Object.assign(list2, res)
formData.dept_id = res[0].id
}
})
}
})
}
//
const deptrmt = (e: any) => {
formData.dept_id = ''
getlist1(e)
}
//
const getlist1 = (id: any) => {
deptAll({ 'org_id': id }).then((res) => {
list2.splice(0, list2.length, ...res)
})
}
//
const setFormData = async (data: Record<any, any>) => {
if (data.negotiation_quotation && data.negotiation_quotation.length > 0) {
@ -379,10 +333,6 @@ const setFormData = async (data: Record<any, any>) => {
}
}
if (data.dept_id) {
getlist1(data.org_id)
}
business_director.value = data.business_director
contract_name.value = data.contract_name
contract_code.value = data.contract_code
@ -422,7 +372,6 @@ const handleSubmit = async () => {
const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
getlist()
}
//

@ -2,16 +2,19 @@
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="关联合同" prop="contract_id">
<selectRemote :formData="queryParams" model="contract_id" :api="apiContractSearch" />
</el-form-item>
<el-form-item label="所属项目" prop="project_id">
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
</el-form-item>
<el-form-item label="客户名称" prop="custom_id">
<selectRemote :formData="queryParams" model="custom_id" :api="apiCustomSearch" />
</el-form-item>
<el-form-item label="洽商编号" prop="negotiation_no">
<el-input class="w-[280px]" v-model="queryParams.negotiation_no" clearable placeholder="请输入洽商编号" />
</el-form-item>
<el-form-item label="项目名称" prop="project_name">
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="洽商单名称" prop="negotiation_name">
<el-input class="w-[280px]" v-model="queryParams.negotiation_name" clearable placeholder="请输入洽商单名称" />
</el-form-item>
<el-form-item label="洽商单名称" prop="negotiation_type">
<el-form-item label="洽商类别" prop="negotiation_type">
<el-select class="w-[280px]" v-model="queryParams.negotiation_type" clearable placeholder="请选择洽商类别">
<el-option v-for="(item, index) in dictData.negotiation_type" :key="index" :label="item.name"
:value="item.value" />
@ -42,6 +45,7 @@
<el-table-column label="序号" type="index" width="55" />
<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="contract_name" 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="negotiation_amount" show-overflow-tooltip />
@ -60,7 +64,8 @@
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['contract.contract_negotiation/detail']" link @click="handleDetail(row)">
<el-button v-perms="['contract.contract_negotiation/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template>
@ -80,7 +85,9 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiContractNegotiationLists, apiContractNegotiationDelete, apiContractNegotiationDetail } from '@/api/contract_negotiation'
import { timeFormat } from '@/utils/util'
import { apiContractSearch } from '@/api/contract'
import { apiProjectSearch } from '@/api/project'
import { apiCustomSearch } from '@/api/custom'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
@ -94,8 +101,9 @@ const showDtail = ref(false)
//
const queryParams = reactive({
project_name: '',
negotiation_name: '',
contract_id: '',
project_id: '',
custom_id: '',
negotiation_no: '',
negotiation_type: ''
})
@ -160,4 +168,3 @@ if (route.query?.listId) {
}
getLists()
</script>

@ -5,8 +5,10 @@
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="基本信息" name="demo-tabs-1">
<el-descriptions :column="2" border>
<el-descriptions-item label="供应商编码" label-align="left" align="left"
label-class-name="my-label">{{ formData.supplier_code }}</el-descriptions-item>
<el-descriptions-item label="供应商名称" label-align="left" align="left"
label-class-name="my-label">{{ formData.supplier_name }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left"
label-class-name="my-label">
{{ formData.project_name }}</el-descriptions-item>
@ -17,10 +19,6 @@
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_no }}</el-descriptions-item>
<el-descriptions-item label="供应商编码" label-align="left" align="left"
label-class-name="my-label">{{ formData.supplier_code }}</el-descriptions-item>
<el-descriptions-item label="供应商名称" label-align="left" align="left"
label-class-name="my-label">{{ formData.supplier_name }}</el-descriptions-item>
<el-descriptions-item label="合同类型" label-align="left" align="left"
label-class-name="my-label">
{{ formData.contract_type_text }}

@ -3,18 +3,6 @@
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
<div
style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
<el-select class="w-[180px]" v-model="formData.dept_id" clearable placeholder="请选择部门">
<el-option v-for="(item, index) in list2" :key="index" :label="item.name" :value="item.id" />
</el-select>
<el-select class="w-[180px]" v-model="formData.org_id" clearable placeholder="请选择组织"
@change="deptrmt">
<el-option v-for="(item, index) in list1" :key="index" :label="item.name" :value="item.id" />
</el-select>
</div>
<el-row>
<el-col :span="8">
<el-form-item label="供应商名称" prop="supplier_id" @click="showDialog1 = true"
@ -279,10 +267,7 @@ import projectTable from '@/components/project/index.vue'
import suppliertable from '@/components/supplier/index.vue'
import { useDictData } from '@/hooks/useDictOptions'
import prodctTable from '@/components/Materialprocurement_details/index.vue'
const list1 = reactive([])
const list2 = reactive([])
import { deptAll } from '@/api/org/department'
import { getAll } from '@/api/org/organization'
import { paymentplanLists } from '@/api/paymentplan'
import { apiProcurementContractDetailLists } from '@/api/procurement_contract_detail'
import { apiProcurementContractAdd, apiProcurementContractEdit, apiProcurementContractDetail } from '@/api/procurement_contract'
@ -406,41 +391,9 @@ const paymentplanList = (id: any) => {
})
}
//
const getlist = () => {
getAll().then((res) => {
Object.assign(list1, res)
if (res.length > 0 && !formData.org_id) {
formData.org_id = res[0].id
deptAll({ 'org_id': res[0].id }).then((res) => {
if (res.length > 0) {
Object.assign(list2, res)
formData.dept_id = res[0].id
}
})
}
})
}
//
const deptrmt = (e: any) => {
formData.dept_id = ''
getlist1(e)
}
//
const getlist1 = (id: any) => {
deptAll({ 'org_id': id }).then((res) => {
list2.splice(0, list2.length, ...res)
})
}
//
const formData = reactive({
id: '',
dept_id: '',
org_id: '',
supplier_id: '',
project_id: '',
contract_name: '',
@ -532,9 +485,6 @@ const setFormData = async (data: Record<any, any>) => {
});
Object.assign(formDataannex, arry1)
}
if (data.dept_id) {
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
@ -595,7 +545,6 @@ const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
getlist()
}
//

@ -3,16 +3,10 @@
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline label-width="auto">
<el-form-item label="供应商" prop="supplier_id">
<el-select v-model="queryParams.supplier_id" clearable placeholder="请选择供应商">
<el-option v-for="(item, index) in supplierList" :key="index" :label="item.supplier_name"
:value="parseInt(item.value)" />
</el-select>
<selectRemote :formData="queryParams" model="supplier_id" :api="apiSupplierSearch" />
</el-form-item>
<el-form-item label="项目" prop="project_id">
<el-select v-model="queryParams.project_id" clearable placeholder="请选择项目">
<el-option v-for="(item, index) in projectList" :key="index" :label="item.name"
:value="parseInt(item.id)" />
</el-select>
<el-form-item label="所属项目" prop="project_id">
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
</el-form-item>
<el-form-item label="合同编号" prop="project_id">
<el-input class="w-[280px]" v-model="queryParams.contract_no" clearable placeholder="请输入合同编号" />
@ -41,10 +35,10 @@
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="55" show-overflow-tooltip />
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="合同名称" prop="contract_name" show-overflow-tooltip />
<el-table-column label="合同编号" prop="contract_no" show-overflow-tooltip />
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
<el-table-column label="合同类型" prop="contract_type" show-overflow-tooltip />
<el-table-column label="签订日期" prop="signing_date" show-overflow-tooltip />
<el-table-column label="合同金额" prop="contract_amount" show-overflow-tooltip />
@ -66,7 +60,8 @@
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['contract.procurement_contract/detail']" link @click="handleDetail(row)">
<el-button v-perms="['contract.procurement_contract/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template>
@ -87,8 +82,8 @@ import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiProcurementContractLists, apiProcurementContractDelete, apiProcurementContractDetail } from '@/api/procurement_contract'
import feedback from '@/utils/feedback'
import { apiProjectLists } from '@/api/project'
import { apisupplierLists } from '@/api/suppler_list'
import { apiProjectSearch } from '@/api/project'
import { apiSupplierSearch } from '@/api/suppler_list'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
@ -170,4 +165,3 @@ projectlist()
supplierlist()
getLists()
</script>

@ -1,14 +1,9 @@
<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
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-form-item label="采购合同" prop="contract_id">
<selectRemote :formData="queryParams" model="contract_id" :api="apiProcurementContractSearch" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
@ -17,14 +12,14 @@
: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>
<icon name="el-icon-Plus" />
</template>
新增
</el-button> -->
新增
</el-button> -->
<!-- <el-button v-perms="['procurement_contract_detail/delete']" :disabled="!selectData.length"
@click="handleDelete(selectData)">
删除
@ -33,10 +28,9 @@
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="55" 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="contract_name" show-overflow-tooltip />
<el-table-column label="合同编号" prop="contract_no" show-overflow-tooltip />
<el-table-column label="供应编号" prop="supplier_code" show-overflow-tooltip />
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
<el-table-column label="合同类型" prop="contract_type_text" show-overflow-tooltip />
<el-table-column label="税率" prop="tax_rate_text" show-overflow-tooltip />
@ -78,7 +72,7 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiProcurementContractDetailLists, apiProcurementContractDetailDetail } from '@/api/procurement_contract_detail'
import { timeFormat } from '@/utils/util'
import { apiProcurementContractSearch } from '@/api/procurement_contract'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
@ -92,8 +86,7 @@ const showDtail = ref(false)
//
const queryParams = reactive({
procurement_contract_id: '',
material_procurement_application_id: ''
contract_id: '',
})
//
@ -145,4 +138,3 @@ const handleDetail = async (data: any) => {
getLists()
</script>