This commit is contained in:
zmj 2024-01-22 23:34:11 +08:00
parent ef45268da3
commit 1db03088ec
11 changed files with 111 additions and 137 deletions

View File

@ -1,4 +1,4 @@
NODE_ENV = 'development'
# VITE_APP_BASE_URL = 'https://ceshi-engineering.lihaink.cn/'
VITE_APP_BASE_URL = 'http://192.168.1.13:8089/'
VITE_APP_BASE_URL = 'https://ceshi-engineering.lihaink.cn/'
# VITE_APP_BASE_URL = 'http://192.168.1.13:8089/'

View File

@ -2,12 +2,12 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<!-- <el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="Step 1" description="Some description" />
<el-step title="Step 2" description="Some description" />
<el-step title="Step 3" description="Some description" />
<el-step title="Step 4" description="Some description" />
</el-steps>
</el-steps> -->
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -32,7 +32,8 @@
<el-col :span="24">
<el-form-item label="开户银行" prop="deposit_bank"
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="formData.deposit_bank" clearable placeholder="请输入开户银行" />
<el-input v-model="formData.deposit_bank" clearable placeholder="请输入开户银行"
@click="showDialog3 = true" />
</el-form-item>
</el-col>
@ -77,7 +78,9 @@
</el-row>
<el-dialog v-model="showDialog3" title="选择收款人信息" width="70%">
<bankaccountDialog @customEvent="customEvent3"></bankaccountDialog>
</el-dialog>
@ -99,6 +102,7 @@ import { isEmail, isIdCard, isPhone } from '@/utils/validate'
import type { PropType } from 'vue'
import configs from "@/config"
import useUserStore from "@/stores/modules/user";
import bankaccountDialog from '@/components/bankaccount/index.vue'
const list1 = reactive([])
const list2 = reactive([])
@ -112,6 +116,7 @@ const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
const showDialog3 = ref(false)
//
@ -153,7 +158,12 @@ const formData = reactive({
})
const customEvent3 = (e: any) => {
formData.deposit_bank = e.deposit_bank
formData.account_name = e.account_name
formData.account = e.account
showDialog3.value = false
};
//
const formRules = reactive<any>({

View File

@ -2,12 +2,12 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<!-- <el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="销售" />
<el-step title="事业部总经理" />
<el-step title="财务负责人" />
<el-step title="出纳" />
</el-steps>
</el-steps> -->
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">
<el-col :span="8">
@ -110,7 +110,8 @@
<el-col :span="8">
<el-form-item label="账号" prop="account" @click="showDialog2 = true"
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="formData.account" clearable placeholder="请输入账号" />
<el-input v-model="formData.account" clearable placeholder="请输入账号"
@click="showDialog3 = true" />
</el-form-item>
</el-col>
@ -137,7 +138,9 @@
<el-dialog v-model="showDialog" title="选择投标决策" width="70%">
<biddingDecisionDialog @customEvent="customEvent"></biddingDecisionDialog>
</el-dialog>
<el-dialog v-model="showDialog3" title="选择收款人信息" width="70%">
<bankaccountDialog @customEvent="customEvent3"></bankaccountDialog>
</el-dialog>
</el-form>
</popup>
@ -157,6 +160,7 @@ import { isEmail, isIdCard, isPhone } from '@/utils/validate'
import type { PropType } from 'vue'
import configs from "@/config"
import useUserStore from "@/stores/modules/user";
import bankaccountDialog from '@/components/bankaccount/index.vue'
const base_url = configs.baseUrl + configs.urlPrefix
const userStore = useUserStore();
@ -171,7 +175,6 @@ const project_code = ref('')
const contract_no = ref('')
const document_no = ref('')
const userInfo = userStore.userInfo
console.log(userInfo, '222222')
//
const handleAvatarSuccess_four = (
response,
@ -205,6 +208,7 @@ const mode = ref('add')
const refund_amount = ref('')
const refund_amount_daxie = ref('')
const showDialog = ref(false)
const showDialog3 = ref(false)
const customEvent = (e: any) => {
formData.bidding_decision_id = e.id;
@ -217,7 +221,12 @@ const customEvent = (e: any) => {
amountinput(e.margin_amount)
};
const customEvent3 = (e: any) => {
formData.deposit_bank = e.deposit_bank
formData.account_name = e.account_name
formData.account = e.account
showDialog3.value = false
};
//
const amountinput = (e) => {

View File

@ -76,10 +76,10 @@
</el-radio-group>
</el-form-item> </el-col> <el-col :span="8">
<el-form-item label="合同金额" prop="amount">
<el-input v-model="amount" clearable placeholder="请输入合同金额" />
<el-input v-model="amount" clearable disabled placeholder="系统自动计算" />
</el-form-item> </el-col> <el-col :span="8">
<el-form-item label="不含税金额" prop="amount_excluding_tax">
<el-input v-model="amount_excluding_tax" disabled clearable placeholder="请输入不含税金额" />
<el-input v-model="amount_excluding_tax" disabled clearable placeholder="系统自动计算" />
</el-form-item> </el-col> <el-col :span="8">
<el-form-item label="金额大写" prop="project_id"
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
@ -119,7 +119,8 @@
</el-col>
</el-row>
<div style=" display: flex;justify-content: flex-end;margin-bottom: 30px;">
<el-button @click="showDialog2 = true" type="primary" plain>选择采购申请</el-button>
<el-button @click="showDialog2 = true" type="primary" :disabled="!formData.project_id"
plain>选择采购申请</el-button>
</div>
<el-row>
<el-col :span="24">
@ -128,7 +129,7 @@
<el-table :data="materialList">
<el-table-column label="序号">
<template #default="{ row }">
<el-button @click="handleAdd1(row)">+</el-button>
<!-- <el-button @click="handleAdd1(row)">+</el-button> -->
<el-button @click="handleDelete1(row)">-</el-button>
</template>
</el-table-column>
@ -162,20 +163,18 @@
</el-table-column>
<el-table-column label="数量" prop="num">
<template #default="{ row, $index }">
<el-input v-model="row.num" @input="materialji1(row, $index)" />
<el-input v-model="row.num" />
</template>
</el-table-column>
<el-table-column label="含税单价" prop="price">
<template #default="{ row, $index }">
<el-input v-model="row.price" @input="materialji1(row, $index)" />
<el-input v-model="row.price" />
</template>
</el-table-column>
<el-table-column label="税率(%)" prop="tax_rate">
<template #default="{ row, $index }">
<el-select v-model="row.tax_rate" clearable placeholder="请选择税率" value-key="name"
@change="materialji2(row, $index, $event)">
<el-select v-model="row.tax_rate" clearable placeholder="请选择税率" value-key="name">
<el-option v-for="(item, index) in dictData.tax_rate" :key="index"
:label="item.name" :value="item.value" />
</el-select>
@ -202,6 +201,7 @@
<el-table-column label="序号">
<template #default="{ row }">
<el-button @click="handleAdd(row)">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
</template>
</el-table-column>
@ -273,9 +273,6 @@ let props = defineProps({
},
})
import { toChinesNum } from "@/utils/util";
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
@ -292,7 +289,6 @@ const contract_no = ref('')
const amount = ref('')
const amount_excluding_tax = ref('')
const amount_daxie = ref('')
const retention_money = ref('')
const materialList = reactive([])
const paymentList = reactive([
{
@ -336,6 +332,7 @@ const handleAdd = (row: any) => {
};
const handleDelete = (row: any) => {
if (paymentList.length <= 1) return
// row
const index = paymentList.indexOf(row);
paymentList.splice(index, 1);
@ -458,7 +455,7 @@ const customEvent1 = (e: any) => {
showDialog1.value = false;
};
const customEvent2 = (e: any) => {
materialList.splice(0, materialList.length, {
materialList.push({
'material_purchase_request_detail_id': e.id,
'material_name': e.material_name,
'material_code': e.material_code,
@ -469,45 +466,36 @@ const customEvent2 = (e: any) => {
});
showDialog2.value = false;
}
//
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_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)
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)
};
//Name
const getTaxValue = (value) => {
let i = props.dictData.tax_rate.findIndex((item) => item.value == value)
return (1 - props.dictData.tax_rate[i]?.name / 100) || 0
}
//
watch(
() => amount.value,
materialList,
() => {
if (amount.value && amount.value > 0) {
amount.value = 0
amount_excluding_tax.value = 0
materialList.forEach(item => {
item.amount_including_tax = item.num * item.price || 0 //
item.amount_excluding_tax = item.amount_including_tax * getTaxValue(item.tax_rate) || 0 //
amount.value += item.amount_including_tax || 0 //
amount_excluding_tax.value += item.amount_excluding_tax || 0//
amount_daxie.value = toChinesNum(amount.value)
}
}
)
//
watch(
() => formData.retention_money_rate,
() => {
const money_rate = Number(formData.retention_money_rate) || 0
const total = Number(amount.value) || 0
console.log(money_rate, total)
retention_money.value = (money_rate / 100) * total
});
}
)
//
const retention_money = computed(() => {
return amount.value * formData.retention_money_rate
})
//
const formRules = reactive<any>({

View File

@ -151,7 +151,11 @@
</div>
</div>
</template>
</el-table-column> <el-table-column label="备注" prop="remark">
</el-table-column>
<el-table-column label="备注" prop="remark">
<template #default="{ row }">
<el-input v-model="row.remark" />
</template>

View File

@ -2,11 +2,10 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<!-- <el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="提交委任书" />
<el-step title="项目经理确认" />
</el-steps>
</el-steps> -->
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">

View File

@ -45,7 +45,7 @@
<el-col :span="8">
<el-form-item label="期次" prop="period"
:rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-select class="flex-1" v-model="formData.period" clearable placeholder="请选择期次">
<el-select class="flex-1" v-model="formData.period" disabled clearable placeholder="请选择期次">
<el-option v-for="(item, index) in dictData.pay_period" :key="index" :label="item.name"
:value="parseInt(item.value)" />
</el-select>

View File

@ -2,12 +2,12 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<!-- <el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="商务部发起" />
<el-step title="商务总监" />
<el-step title="财务经理" />
<el-step title="总经理" />
</el-steps>
</el-steps> -->
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -75,7 +75,7 @@
</el-radio-group>
</el-form-item> </el-col> <el-col :span="8">
<el-form-item label="合同金额" prop="amount">
<el-input v-model="amount" clearable placeholder="请输入合同金额" />
<el-input v-model="amount" clearable placeholder="系统自动计算" disabled />
</el-form-item> </el-col> <el-col :span="8">
<el-form-item label="不含税金额" prop="amount_excluding_tax">
<el-input v-model="amount_excluding_tax" disabled clearable placeholder="请输入不含税金额" />
@ -122,7 +122,8 @@
</el-col>
</el-row>
<div style=" display: flex;justify-content: flex-end;margin-bottom: 30px;">
<el-button @click="showDialog2 = true" type="primary" plain>选择分包明细</el-button>
<el-button @click="showDialog2 = true" type="primary" plain
:disabled="!formData.project_id">选择分包明细</el-button>
</div>
<el-row>
@ -132,7 +133,7 @@
<el-table :data="subcontractList">
<el-table-column label="序号">
<template #default="{ row }">
<el-button @click="handleAdd1(row)">+</el-button>
<!-- <el-button @click="handleAdd1(row)">+</el-button> -->
<el-button @click="handleDelete1(row)">-</el-button>
</template>
</el-table-column>
@ -148,10 +149,6 @@
<el-table-column label="项目特征" prop="project_features">
<template #default="{ row }"> <el-input v-model="row.project_features" />
</template></el-table-column>
<el-table-column label="单位" prop="unit">
<template #default="{ row }">
<el-input v-model="row.unit" />
@ -159,23 +156,20 @@
</el-table-column>
<el-table-column label="工作量" prop="num">
<template #default="{ row }">
<el-input v-model="row.num" @input="materialji1(row, $index)" />
<el-input v-model="row.num" />
</template>
</el-table-column>
<el-table-column label="含税单价" prop="price">
<template #default="{ row }">
<el-input v-model="row.price" @input="materialji1(row, $index)" />
<el-input v-model="row.price" />
</template>
</el-table-column>
<el-table-column label="税率(%)" prop="tax_rate">
<template #default="{ row, $index }">
<el-select v-model="row.tax_rate" clearable placeholder="请选择税率" value-key="name"
@change="materialji2(row, $index, $event)">
<el-option label="全部" value=""></el-option>
<el-select v-model="row.tax_rate" clearable placeholder="请选择税率" value-key="name">
<el-option v-for="(item, index) in dictData.tax_rate" :key="index"
:label="item.name" :value="item" />
:label="item.name" :value="item.value" />
</el-select>
</template>
</el-table-column>
@ -294,7 +288,6 @@ const contract_no = ref('')
const amount = ref('')
const amount_excluding_tax = ref('')
const amount_daxie = ref('')
const retention_money = ref('')
const subcontractList = reactive([])
const paymentList = reactive([{}])
const formDataannex = reactive([])
@ -328,6 +321,7 @@ const handleAdd = (row: any) => {
};
const handleDelete = (row: any) => {
if (paymentList.length <= 1) return
// row
const index = paymentList.indexOf(row);
paymentList.splice(index, 1);
@ -450,72 +444,42 @@ const customEvent2 = (e: any) => {
'project_features': e.project_features,
'unit': e.unit,
});
showDialog2.value = false;
}
//
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_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_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)
};
//Name
const getTaxValue = (value) => {
let i = props.dictData.tax_rate.findIndex((item) => item.value == value)
return (1 - props.dictData.tax_rate[i]?.name / 100) || 0
}
//
watch(
() => subcontractList,
subcontractList,
() => {
// 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)
})
console.log(item.tax_rate, "taxreat")
item.amount_including_tax = item.num * item.price || 0 //
item.amount_excluding_tax = item.amount_including_tax * getTaxValue(item.tax_rate) || 0 //
amount.value += item.amount_including_tax || 0 //
amount_excluding_tax.value += item.amount_excluding_tax || 0//
amount_daxie.value = toChinesNum(amount.value)
});
}
)
//
const retention_money = computed(() => {
return amount.value * formData.retention_money_rate
})
// watch(
// () => amount.value,
// () => {
// if (amount.value && amount.value > 0) {
// amount_daxie.value = toChinesNum(amount.value)
// }
// }
// )
//
watch(
() => formData.retention_money_rate,
() => {
const money_rate = Number(formData.retention_money_rate) || 0
const total = Number(amount.value) || 0
console.log(money_rate, total)
retention_money.value = (money_rate / 100) * total
}
)
//
const formRules = reactive<any>({
@ -569,7 +533,7 @@ const handleSubmit = async () => {
'subpackage_budget_detail_id': item.subpackage_budget_detail_id,
'num': item.num,
'price': item.price,
'tax_rate': item.tax_rate.value,
'tax_rate': item.tax_rate,
}))
}

View File

@ -28,8 +28,8 @@
<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="" show-overflow-tooltip /> -->
<!-- <el-table-column label="流程编号" prop="" show-overflow-tooltip /> -->
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="合同编号" prop="contract_no" show-overflow-tooltip />
<el-table-column label="合同名称" prop="contract_name" show-overflow-tooltip />