This commit is contained in:
zmj 2024-03-20 15:57:03 +08:00
parent 3bdadbd2bb
commit d5c5e0268d
10 changed files with 118 additions and 90 deletions
dist.rar
src/views
bid_bidding_decision
bid_buy_bidding_document
quotation
supervision_material_parallel_testing
supervision_witness_sampling
stats.html

BIN
dist.rar Normal file

Binary file not shown.

@ -5,42 +5,46 @@
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
<el-row>
<el-col :span="8">
<el-form-item label="项目名称" prop="project_id"
:rules="[{ required: true, message: '不可为空', trigger: 'change' }]"
<el-form-item label="项目名称" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]"
@click="showDialog = true">
<el-input v-model="project_name" readonly clearable placeholder="选择项目"
:disabled="project" />
<el-input v-model="project_name" readonly clearable placeholder="选择项目" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目编码" prop="project_id"
:rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-form-item label="项目编码">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item></el-col>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="客户名称" prop="project_id"
:rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-form-item label="客户名称">
<el-input v-model="matsname" clearable disabled placeholder="系统自动填写" />
</el-form-item></el-col><el-col :span="8">
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目估算" prop="project_estimation"
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="formData.project_estimation" clearable placeholder="请输入项目估算"
type="number" />
</el-form-item></el-col><el-col :span="24">
<el-form-item label="招标项目资金来源" label-width="130px" prop="bidding_project_fund_source">
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目资金来源" label-width="130px" prop="bidding_project_fund_source">
<el-radio-group v-model="formData.bidding_project_fund_source" placeholder="请选择招标项目资金来源">
<el-radio v-for="(item, index) in dictData.construction_funds_sources" :key="index"
:label="parseInt(item.value)">
{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item></el-col><el-col :span="8">
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="投标时间" prop="bidding_time">
<!-- <el-input v-model="formData.bidding_time" clearable placeholder="请输入投标时间" />
-->
<el-date-picker v-model="formData.bidding_time" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" placeholder="请选择投标时间" clearable></el-date-picker>
</el-form-item></el-col><el-col :span="8">
value-format="YYYY-MM-DD" placeholder="请选择投标时间" class="!flex flex-1"
clearable></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="招标方式" prop="bid_type">
<el-radio-group v-model="formData.bid_type" placeholder="请选择招标方式">
<el-radio v-for="(item, index) in dictData.bidding_method" :key="index"
@ -48,10 +52,14 @@
{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item></el-col><el-col :span="8">
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="竞争对手" prop="competitor">
<el-input v-model="formData.competitor" clearable placeholder="请输入竞争对手" />
</el-form-item></el-col><el-col :span="24">
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否需要保证金" prop="is_margin"
:rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-radio-group v-model="formData.is_margin" placeholder="请选择是否需要保证金">
@ -60,21 +68,25 @@
{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item></el-col><el-col :span="8">
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="保证金金额" prop="margin_amount">
<el-input v-model="formData.margin_amount" clearable placeholder="请输入保证金金额" />
</el-form-item></el-col><el-col :span="8">
<el-form-item label="开标日期" prop="bid_opening_date">
<!-- <el-input v-model="formData.bid_opening_date" clearable placeholder="请输入开标日期" />
-->
<el-date-picker v-model="formData.bid_opening_date" format="YYYY-MM-DD"
<el-date-picker class="!flex flex-1" v-model="formData.bid_opening_date" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" placeholder="请输入开标日期" clearable></el-date-picker>
</el-form-item></el-col><el-col :span="8">
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="保证金退还时间" prop="margin_amount_return_date">
<!-- <el-input v-model="formData.margin_amount_return_date" clearable placeholder="请输入保证金退还时间" /> -->
<el-date-picker v-model="formData.margin_amount_return_date" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" placeholder="请输入保证金退还时间" clearable></el-date-picker>
</el-form-item></el-col><el-col :span="24">
class="!flex flex-1" value-format="YYYY-MM-DD" placeholder="请输入保证金退还时间"
clearable></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="有无内部资源" prop="is_internal_resources">
<el-radio-group v-model="formData.is_internal_resources" placeholder="请选择有无内部资源">
<el-radio v-for="(item, index) in dictData.whether_status" :key="index"
@ -82,25 +94,28 @@
{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item></el-col>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目把握度" label-width="130px" prop="project_assurance">
<el-select v-model="formData.project_assurance" clearable placeholder="请选择项目把握度">
<el-select v-model="formData.project_assurance" clearable placeholder="请选择项目把握度"
class="flex-1">
<el-option v-for="(item, index) in dictData.project_assurance" :key="index"
:label="item.name" :value="parseInt(item.value)" />
</el-select>
</el-form-item></el-col>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="招标项目概况" prop="bid_project_overview">
<el-input v-model="formData.bid_project_overview" 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="project_desc">
<el-input v-model="formData.project_desc" clearable placeholder="请输入项目简介" />
</el-form-item></el-col><el-col :span="24">
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="附件">
<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"
@ -111,7 +126,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"
@ -120,9 +134,8 @@
</div>
</div>
</el-form-item></el-col>
</el-form-item>
</el-col>
</el-row>
</el-form>
<reviewprocess />

@ -63,12 +63,14 @@
<el-table-column label="项目把握度" width="85" prop="project_assurance" show-overflow-tooltip />
<el-table-column label="操作" width="160" fixed="right">
<template #default="{ row }">
<!-- <el-button v-perms="['bid.bid_bidding_decision/edit']" type="primary" link @click="handleEdit(row)">
<el-button v-perms="['bid.bid_bidding_decision/edit']" type="primary" link
@click="handleEdit(row)">
编辑
</el-button> -->
<!-- <el-button v-perms="['bid.bid_bidding_decision/delete']" type="danger" link @click="handleDelete(row.id)">
</el-button>
<el-button v-perms="['bid.bid_bidding_decision/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button> -->
</el-button>
<el-button v-perms="['bid.bid_bidding_decision/detail']" link @click="handledetail(row)">
详情
</el-button>
@ -88,8 +90,9 @@
<script lang="ts" setup name="bidBiddingDecisionLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiBidBiddingDecisionLists, apiBidBiddingDecisionDetail } from '@/api/bid_bidding_decision'
import { apiBidBiddingDecisionLists, apiBidBiddingDecisionDetail, apiBidBiddingDecisionDelete } from '@/api/bid_bidding_decision'
import { apiProjectSearch } from '@/api/project'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
@ -141,6 +144,25 @@ const handledetail = async (data: any) => {
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
//
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()
}
getLists()
import { useRoute } from "vue-router";
const route = useRoute()

@ -31,7 +31,8 @@
<el-form-item label="投标公司名称" prop="bid_company_name"
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="formData.bid_company_name" clearable placeholder="请输入投标公司名称" />
</el-form-item></el-col>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="投标决策信息" prop="bid_decision_id"

@ -36,9 +36,7 @@
</template>
新增
</el-button>
<!-- <el-button v-perms="['bid.bid_buy_bidding_document/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" />
@ -60,12 +58,14 @@
<el-table-column label="操作" width="160" fixed="right">
<template #default="{ row }">
<!-- <el-button v-perms="['bid.bid_buy_bidding_document/edit']" type="primary" link @click="handleEdit(row)">
<el-button v-perms="['bid.bid_buy_bidding_document/edit']" type="primary" link
@click="handleEdit(row)">
编辑
</el-button> -->
<!-- <el-button v-perms="['bid.bid_buy_bidding_document/delete']" type="danger" link @click="handleDelete(row.id)">
</el-button>
<el-button v-perms="['bid.bid_buy_bidding_document/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button> -->
</el-button>
<el-button v-perms="['bid.bid_buy_bidding_document/detail']" link
@click="handledetail(row)">
详情
@ -133,21 +133,21 @@ const handleAdd = async () => {
editRef.value?.open('add')
}
// //
// const handleEdit = async (data: any) => {
// let res = await apiBidBuyBiddingDocumentDetail({ id: data.id })
// showEdit.value = true
// await nextTick()
// editRef.value?.open('edit')
// editRef.value?.setFormData(res)
// }
//
const handleEdit = async (data: any) => {
let res = await apiBidBuyBiddingDocumentDetail({ 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 apiBidBuyBiddingDocumentDelete({ id })
// getLists()
// }
//
const handleDelete = async (id: number | any[]) => {
await feedback.confirm('确定要删除?')
await apiBidBuyBiddingDocumentDelete({ id })
getLists()
}
//
const handledetail = async (data: any) => {
let res = await apiBidBuyBiddingDocumentDetail({ id: data.id })
@ -158,8 +158,8 @@ const handledetail = async (data: any) => {
detailRef.value?.setFormData(res)
}
//
//
const projectlist = async () => {
let res = await apiProjectLists({ page_no: 1, page_size: 15 })
projectList.value = res.lists
@ -173,4 +173,3 @@ if (route.query?.listId) {
projectlist()
getLists()
</script>

@ -31,9 +31,6 @@
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>
@ -45,8 +42,6 @@
<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

@ -7,7 +7,7 @@
<el-col :span="8">
<el-form-item label="客户名称" prop="custom_id"
:rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="customer_name" clearable placeholder="点击选择客户" readonly
<el-input v-model="formData.custom_name" clearable placeholder="点击选择客户" readonly
@click="showDialog = true" />
</el-form-item>
</el-col>
@ -213,7 +213,6 @@ const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
const showDialog = ref(false)
const showDialog1 = ref(false)
const customer_name = ref('')
//
@ -227,6 +226,7 @@ const formData = reactive({
id: '',
approve_id: 1,
custom_id: '',
custom_name: "",
quotation_date: '',
custom_master_name: '',
custom_master_phone: '',
@ -245,14 +245,13 @@ const formData = reactive({
const customEvent = (e: any) => {
formData.custom_id = e.id;
customer_name.value = e.name;
formData.custom_name = e.name;
formData.custom_master_name = e.master_name
formData.custom_master_phone = e.master_phone
showDialog.value = false;
};
const customEvent1 = (e: any) => {
formData.quotation_detail.push({
product_id: e.id,
product_name: e.name,
@ -273,13 +272,12 @@ const customEvent1 = (e: any) => {
const formRules = reactive<any>({
})
const handleDelete = async (row: any) => {
if (row.id) await apiQuotationDetailDelete({ id: row.id });
// row
const index = formData.quotation_detail.indexOf(row);
formData.quotation_detail.splice(index, 1);
calcAmount()
};
//
@ -337,7 +335,7 @@ const getTaxText = (index: number) => {
}
//
const calcAmount = (index: number) => {
const calcAmount = () => {
let table = formData.quotation_detail
// tax_inclusive_pricetax_rate_texttax_inclusive_amounttax_exclusive_amount,
formData.amount_including_tax = 0
@ -361,10 +359,6 @@ const total_amount_daxie = computed(() => {
})
defineExpose({
open,
setFormData,

@ -53,7 +53,7 @@
<script lang="ts" setup name="supervisionWitnessSamplingEdit">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiSupervisionMaterialParallelTestingAdd, apiSupervisionMaterialParallelTestingEdit } from '@/api/supervision_material_parallel_testing'
import { apiSupervisionMaterialParallelTestingAdd, apiSupervisionMaterialParallelTestingEdit, apisupervision_material_parallel_testing_detail } from '@/api/supervision_material_parallel_testing'
import { apisupervision_material_entry_detail } from '@/api/supervision_material_entry'
import type { PropType } from 'vue'
import { supervision_material_entry } from "@/components/dialogTable/dialogTableConfig"
@ -190,7 +190,7 @@ const setFormData = async (data: Record<any, any>) => {
}
}
let res = await apisupervision_material_entry_detail({ material_entry_id: formData.material_entry_id })
let res = await apisupervision_material_parallel_testing_detail({ material_parallel_testing_id: formData.id })
formData.detail = res.lists
}
@ -200,7 +200,9 @@ const setFormData = async (data: Record<any, any>) => {
const handleSubmit = async () => {
await formRef.value?.validate()
const data = { ...formData, }
data.detail = formData.detail.map(item => ({ material_entry_detail_id: item.id, num: item.num }))
data.detail = (mode.value == 'edit'
? formData.detail.map(item => ({ material_entry_detail_id: item.material_entry_detail_id, id: item.id, num: item.num }))
: formData.detail.map(item => ({ material_entry_detail_id: item.id, num: item.num })))
mode.value == 'edit'
? await apiSupervisionMaterialParallelTestingEdit(data)
: await apiSupervisionMaterialParallelTestingAdd(data)

@ -229,7 +229,9 @@ const getDetail = async (row: Record<string, any>) => {
const handleSubmit = async () => {
await formRef.value?.validate()
const data = { ...formData, }
data.sampling_detail = formData.sampling_detail.map(item => ({ material_entry_detail_id: item.id, num: item.num }))
data.sampling_detail = (mode.value == 'edit'
? formData.sampling_detail.map(item => ({ material_entry_detail_id: item.material_entry_detail_id, id: item.id, num: item.num }))
: formData.sampling_detail.map(item => ({ material_entry_detail_id: item.id, num: item.num })))
mode.value == 'edit'
? await apiSupervisionWitnessSamplingEdit(data)
: await apiSupervisionWitnessSamplingAdd(data)

File diff suppressed because one or more lines are too long