新增项目结算甲方 以及分包

This commit is contained in:
jia 2023-12-29 17:37:32 +08:00
parent 3009ae3aa8
commit 72f9a4162e
57 changed files with 1294 additions and 487 deletions

View File

@ -1,4 +0,0 @@
NODE_ENV = 'production'
# Base API
VITE_APP_BASE_URL='https://ceshi-engineering.lihaink.cn'

View File

@ -37,4 +37,9 @@ export function getAllJobs(params: any) {
//获取所有部门
export function getAllDept(params: any) {
return request.get({ url: "/dept.dept/getAllDept", params });
}
}
//某个项目下的项目合同列表
export function projectcontracts(params: any) {
return request.get({ url: "/project.project/contracts", params });
}

View File

@ -2,26 +2,26 @@ import request from '@/utils/request'
// 保险管理列表
export function insurancemanagementLists(params: any) {
return request.get({ url: '/project.project_insurance_management//lists', params })
return request.get({ url: '/project.project_insurance_management/lists', params })
}
// 添加保险管理
export function insurancemanagementAdd(params: any) {
return request.post({ url: '/project.project_insurance_management//add', params })
return request.post({ url: '/project.project_insurance_management/add', params })
}
// 编辑保险管理
export function insurancemanagementEdit(params: any) {
return request.post({ url: '/project.project_insurance_management//edit', params })
return request.post({ url: '/project.project_insurance_management/edit', params })
}
// 删除保险管理
export function insurancemanagementDelete(params: any) {
return request.post({ url: '/project.project_insurance_management//delete', params })
return request.post({ url: '/project.project_insurance_management/delete', params })
}
// 保险管理详情
export function insurancemanagementDetail(params: any) {
return request.get({ url: '/project.project_insurance_management//detail', params })
return request.get({ url: '/project.project_insurance_management/detail', params })
}

View File

@ -0,0 +1,27 @@
import request from '@/utils/request'
// 甲方结算列表
export function apiprojectsettlementLists(params: any) {
return request.get({ url: '/project.project_settlement/lists', params })
}
// 添加甲方结算
export function apiprojectsettlementAdd(params: any) {
return request.post({ url: '/project.project_settlement/add', params })
}
// 编辑甲方结算
export function apiprojectsettlementEdit(params: any) {
return request.post({ url: '/project.project_settlement/edit', params })
}
// 删除甲方结算
export function apiprojectsettlementDelete(params: any) {
return request.post({ url: '/project.project_settlement/delete', params })
}
// 甲方结算详情
export function apiprojectsettlementDetail(params: any) {
return request.get({ url: '/project.project_settlement/detail', params })
}

View File

@ -0,0 +1,26 @@
import request from '@/utils/request'
// 分包结算表列表
export function subcontractsettlementLists(params: any) {
return request.get({ url: '/project.project_subcontract_settlement/lists', params })
}
// 添加分包结算
export function subcontractsettlementAdd(params: any) {
return request.post({ url: '/project.project_subcontract_settlement/add', params })
}
// 编辑分包结算
export function subcontractsettlementEdit(params: any) {
return request.post({ url: '/project.project_subcontract_settlement/edit', params })
}
// 删除分包结算
export function subcontractsettlementDelete(params: any) {
return request.post({ url: '/project.project_subcontract_settlement/delete', params })
}
// 分包结算详情
export function subcontractsettlementDetail(params: any) {
return request.get({ url: '/project.project_subcontract_settlement/detail', params })
}

View File

@ -14,8 +14,8 @@
<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 label="客户名称" prop="bid_document_no" show-overflow-tooltip />
<el-table-column label="项目名称" prop="bid_document_no" show-overflow-tooltip />
<el-table-column label="客户名称" prop="customer_name" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="标书编号" prop="bid_document_no" show-overflow-tooltip />
<el-table-column label="招标公司名称" width="120" prop="invite_tenders_company_name" show-overflow-tooltip />
<el-table-column label="投标公司名称" width="120" prop="bid_company_name" show-overflow-tooltip />

View File

@ -0,0 +1,117 @@
<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="流程编号" prop="approve_id" show-overflow-tooltip />
<el-table-column label="客户名称" prop="customer_id" show-overflow-tooltip />
<el-table-column label="客户名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
<el-table-column label="合同名称" prop="contract_name" show-overflow-tooltip />
<el-table-column label="合同编号" prop="contract_code" show-overflow-tooltip />
<el-table-column label="合同类型" prop="contract_type">
<template #default="{ row }">
<dict-value :options="dictData.contract_type" :value="row.contract_type" />
</template>
</el-table-column>
<el-table-column label="甲方" prop="party_a" show-overflow-tooltip />
<el-table-column label="甲方通讯地址" prop="party_a_contact_address" show-overflow-tooltip />
<el-table-column label="甲方主要负责人" prop="party_a_diretor" show-overflow-tooltip />
<el-table-column label="甲方电话" prop="party_a_phone" show-overflow-tooltip />
<el-table-column label="甲方手机" prop="party_a_mobile" show-overflow-tooltip />
<el-table-column label="甲方邮箱" prop="party_a_email" show-overflow-tooltip />
<el-table-column label="乙方" prop="party_b" show-overflow-tooltip />
<el-table-column label="乙方通讯地址" prop="party_b_contact_address" show-overflow-tooltip />
<el-table-column label="乙方主要负责人" prop="party_b_diretor" show-overflow-tooltip />
<el-table-column label="乙方电话 " prop="party_b_phone" show-overflow-tooltip />
<el-table-column label="乙方手机 " prop="party_b_mobile" show-overflow-tooltip />
<el-table-column label="乙方邮箱 " prop="party_b_email" show-overflow-tooltip />
<el-table-column label="合同金额" prop="amount" show-overflow-tooltip />
<el-table-column label="金额大写 " prop="amount_daxie" show-overflow-tooltip />
<el-table-column label="合同有效期" prop="expire" show-overflow-tooltip />
<el-table-column label="状态" prop="contract_status" show-overflow-tooltip>
<template #default="{ row }">
<dict-value :options="dictData.contract_status" :value="row.contract_status" />
</template>
</el-table-column>
<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="" show-overflow-tooltip />
<el-table-column label="未开票" prop="" show-overflow-tooltip />
<el-table-column label="实际合同金额" prop="business_director" show-overflow-tooltip />
<el-table-column label="已退款金额" prop="contract_status" show-overflow-tooltip />
<el-table-column label="合同附件" prop="expire" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, index) in row.annex" :key="index" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</a>
</div>
</div>
<div v-else>暂无文件</div>
</template>
</el-table-column>
<el-table-column label="投标编号" prop="contract_date" show-overflow-tooltip />
<el-table-column label="签约日期" prop="contract_date" show-overflow-tooltip />
<el-table-column label="业务负责人" prop="contract_date" show-overflow-tooltip />
</el-table>
</div>
<div class="flex mt-4 justify-end">
<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 { projectcontracts } from '@/api/common'
import { defineEmits } from "vue"
import { timeFormat } from '@/utils/util'
const props = defineProps({
productid: {
type: String
}
})
console.log(props.productid)
//
const queryParams = reactive({
project_id: props.productid,
});
const { dictData } = useDictData('contract_type,contract_pricing_method,contract_status')
//
const emits = defineEmits(["customEvent"]);
//
const handleCurrentChange = (value: any) => {
emits("customEvent", value);
};
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: projectcontracts,
params: queryParams,
});
getLists();
</script>

View File

@ -15,8 +15,8 @@
<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 label="序号" property="name" />
<el-table-column label="建档人" property="custom_type" />
<el-table-column label="序号" type="index" />
<el-table-column label="建档人" property="create_user" />
<el-table-column label="供应商名称" property="supplier_name" />
<el-table-column label="供应商编码" property="supplier_code" />
<el-table-column label="供应商分组" prop="group_id">

View File

@ -6,5 +6,5 @@ const config = {
urlPrefix: "adminapi", //请求默认前缀
timeout: 10 * 1000, //请求超时时长
};
console.log(import.meta)
export default config;

View File

@ -314,7 +314,6 @@ const customEvent1 = (e: any) => {
formData.contract_id = e.id;
project_name.value = e.project_name;
project_code.value = e.project_code;
contract_name.value = e.contract_name;
contract_no.value = e.contract_code
@ -328,19 +327,19 @@ const popupTitle = computed(() => {
//
const formData = reactive({
id: '',
customer_id: 0,
contract_id: 0,
approve_id: 0,
customer_id: '',
contract_id: '',
approve_id: '',
invoicing_date: "",
period: "",
accumulate_amount: 0,
accumulated_payments_received: 0,
accumulate_amount: '',
accumulated_payments_received: '',
tax_rate: "",
invoice_type: '',
invoicing_amount: 0,
invoicing_amount: '',
invoicing_amount_daxie: "",
tax: 0,
amount_including_tax: 0,
tax: '',
amount_including_tax: '',
content: "",
invoice_no: "",
remark: "",

View File

@ -61,7 +61,7 @@
<el-table-column label="开票金额(含税)" prop="invoicing_amount" show-overflow-tooltip />
<el-table-column label="开票金额(非税)" prop="amount_including_tax" show-overflow-tooltip />
<el-table-column label="税率" prop="tax_rate" show-overflow-tooltip />
<!-- <el-table-column label="开票金额(税额)" prop="status" show-overflow-tooltip /> -->
<el-table-column label="开票金额(税额)" prop="tax" show-overflow-tooltip />
<el-table-column label="操作" width="160" fixed="right">
<template #default="{ row }">
<el-button v-perms="['InvoicingRequests.InvoicingRequests/edit']" type="primary" link @click="handleEdit(row)">

View File

@ -153,7 +153,7 @@
</el-dialog>
<el-dialog v-model="showDialog2" title="选择销售合同" width="70%">
<salescontract @customEvent="customEvent2" contract_type="2"></salescontract>
<salescontractDialog @customEvent="customEvent2" contract_type="2"></salescontractDialog>
</el-dialog>
<el-dialog v-model="showDialog" title="选择客户" width="70%">
@ -362,7 +362,7 @@ const setFormData = async (data: Record<any, any>) => {
}
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
contract_name.value = data.contract.contract_name;
contract_no.value = data.contract.contract_code;

View File

@ -25,27 +25,27 @@
<el-row>
<el-col :span="8">
<el-form-item label="供应商编码" prop="supplier_id" @click="showDialog = true">
<el-form-item label="供应商编码" prop="supplier_id" @click="showDialog = true" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="supplier_contract_name" readonly clearable placeholder="请选择供应商" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="供应商编码" prop="supplier_id">
<el-form-item label="供应商编码" prop="supplier_id" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="supplier_contract_no" disabled clearable placeholder="系统自动填写" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="合同名称" prop="contract_name">
<el-input v-model="formData.contract_name" clearable placeholder="由系统自动生成" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="合同编号" prop="contract_no">
<el-input v-model="formData.contract_no" clearable placeholder="请输入供应商合同号" />
<el-input v-model="formData.contract_no" clearable placeholder="由系统自动生成" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="合同名称" prop="contract_name" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="formData.contract_name" clearable placeholder="请输入合同名称" />
</el-form-item> </el-col>
<el-col :span="24">
<el-form-item label="采购分类" prop="procurement_type">
<el-form-item label="采购分类" prop="procurement_type" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-radio-group v-model="formData.procurement_type" placeholder="请选择采购分类">
<el-radio v-for="(item, index) in dictData.procurement_type" :key="index" :label="parseInt(item.value)">
{{ item.name }}
@ -58,7 +58,7 @@
<el-input v-model="formData.asset_apply_no" clearable placeholder="请输入资产申请单号" />
</el-form-item> </el-col>
<el-col :span="24">
<el-form-item label="付款方式" prop="pay_type">
<el-form-item label="付款方式" prop="pay_type" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-radio-group v-model="formData.pay_type" placeholder="请选择付款方式">
<el-radio v-for="(item, index) in dictData.pay_type" :key="index" :label="parseInt(item.value)">
{{ item.name }}
@ -68,13 +68,13 @@
<el-col :span="8">
<el-form-item label="开始日期" prop="start_date">
<el-form-item label="开始日期" prop="start_date" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-date-picker class="flex-1 !flex" v-model="formData.start_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择签订日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="结束日期" prop="end_date">
<el-form-item label="结束日期" prop="end_date" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-date-picker class="flex-1 !flex" v-model="formData.end_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择签订日期">
</el-date-picker>
</el-form-item>
@ -87,11 +87,11 @@
</el-col>
<el-col :span="8">
<el-form-item label="合同金额" prop="amount">
<el-form-item label="合同金额" prop="amount" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="formData.amount" clearable placeholder="请输入合同金额" @input="amountinput" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="合同金额大写" prop="amount_daxie">
<el-form-item label="合同金额大写" prop="amount_daxie" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="formData.amount_daxie" disabled clearable placeholder="系统自动填写" />
</el-form-item> </el-col>
<el-col :span="24">
@ -277,7 +277,7 @@ const setFormData = async (data: Record<any, any>) => {
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {

View File

@ -51,9 +51,9 @@
<el-table-column label="合同金额" prop="amount" show-overflow-tooltip />
<el-table-column label="资产申请单号" prop="amount_including_tax" show-overflow-tooltip />
<el-table-column label="采购分类" prop="contract_type">
<el-table-column label="采购分类" prop="procurement_type">
<template #default="{ row }">
<dict-value :options="dictData.procurement_contract_type" :value="row.contract_type" />
<dict-value :options="dictData.procurement_type" :value="row.procurement_type" />
</template>
</el-table-column>
<el-table-column label="签约日期" prop="signing_date">
@ -126,7 +126,7 @@ const handleSelectionChange = (val: any[]) => {
}
//
const { dictData } = useDictData('procurement_contract_type,pay_type,account_period,pay_period,procurement_type')
const { dictData } = useDictData('procurement_type,pay_type,account_period,pay_period')
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiadministrativeLists,

View File

@ -22,17 +22,17 @@
</el-col>
<el-col :span="8">
<el-form-item label="合同名称" prop="administrative_contract_id">
<el-input v-model="contract_name" clearable placeholder="请输入合同名称" />
<el-input v-model="contract_name" clearable disabled placeholder="系统自动填写" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="供应商名称" rop="administrative_contract_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="supplier_name" readonly clearable placeholder="请选择客户" />
<el-input v-model="supplier_name" readonly clearable disabled placeholder="系统自动填写" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="供应商编码" rop="administrative_contract_id">
<el-input v-model="supplier_no" readonly clearable placeholder="请选择客户" />
<el-input v-model="supplier_no" readonly clearable disabled placeholder="系统自动填写" />
</el-form-item>
</el-col>
@ -59,8 +59,13 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="合计已付款" prop="invoice_sn">
<el-input v-model="formData.invoice_sn" readonly clearable placeholder="请输入合计已付款" />
<el-form-item label="合同金额" prop="administrative_contract_id">
<el-input v-model="formData_amont" clearable disabled placeholder="系统自动填写" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="合计已付款" prop="administrative_contract_id">
<el-input v-model="formData_amont" readonly clearable disabled placeholder="系统自动填写" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -71,7 +76,6 @@
<el-col :span="8">
<el-form-item label="本次支付金额" prop="payment_amount">
<el-input v-model="formData.payment_amount" clearable placeholder="请输入支付金额" @input="amountinput" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -207,11 +211,12 @@ const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
const amount_daxie = ref('')
const showDialog1 = ref(false)
const formData_amont = ref('')
const customEvent1 = (e: any) => {
formData.administrative_contract_id = e.id;
contract_name.value = e.contract_name;
formData_amont.value = e.amount
contract_no.value = e.contract_no;
supplier_name.value = e.contract_name;
supplier_no.value = e.contract_no;
@ -257,7 +262,7 @@ const amountinput = (e) => {
}
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑行政收票表' : '新增行政收票表'
return mode.value == 'edit' ? '编辑行政付款表' : '新增行政付款表'
})
//
@ -300,6 +305,9 @@ const setFormData = async (data: Record<any, any>) => {
}
if (data.dept_id) {
getlist1(data.org_id)
}
for (const key in formData) {

View File

@ -14,16 +14,16 @@
<el-row>
<el-col :span="8">
<el-form-item label="项目名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" @click="showDialog = true">
<el-form-item label="项目名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]" @click="showDialog = true">
<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: 'blur' }]">
<el-form-item label="项目编码" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item></el-col>
<el-col :span="8">
<el-form-item label="客户名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-form-item label="客户名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="matsname" clearable disabled placeholder="系统自动填写" />
</el-form-item></el-col><el-col :span="8">
<el-form-item label="项目估算" prop="project_estimation" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
@ -265,7 +265,7 @@ const setFormData = async (data: Record<any, any>) => {
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {

View File

@ -39,16 +39,16 @@
<el-table-column label="处理流程" prop="project_id" show-overflow-tooltip />
<el-table-column label="流程步骤" prop="project_id" show-overflow-tooltip />
<el-table-column label="流程编号" prop="project_id" show-overflow-tooltip />
<el-table-column label="客户名称" prop="project_id" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_id" show-overflow-tooltip />
<el-table-column label="项目估算(万元)" prop="project_estimation" show-overflow-tooltip />
<el-table-column label="招标项目资金来源" prop="bidding_project_fund_source">
<el-table-column label="客户名称" prop="custom_name" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="项目估算(万元)" width="125" prop="project_estimation" show-overflow-tooltip />
<el-table-column label="招标项目资金来源" width="155" prop="bidding_project_fund_source">
<template #default="{ row }">
<dict-value :options="dictData.construction_funds_sources" :value="row.bidding_project_fund_source" />
</template>
</el-table-column>
<el-table-column label="投标时间" prop="bidding_time" show-overflow-tooltip />
<el-table-column label="购买标书时间" prop="buy_bid_document_date" show-overflow-tooltip />
<el-table-column label="投标时间" prop="bidding_time" width="155" show-overflow-tooltip />
<el-table-column label="购买标书时间" width="155" prop="buy_bid_document_date" show-overflow-tooltip />
<el-table-column label="招标方式" prop="bid_type">
<template #default="{ row }">
<dict-value :options="dictData.bidding_method" :value="row.bid_type" />
@ -60,15 +60,15 @@
<dict-value :options="dictData.whether_status" :value="row.is_margin" />
</template>
</el-table-column> -->
<el-table-column label="保证金金额" prop="margin_amount" show-overflow-tooltip />
<el-table-column label="保证金金额" prop="margin_amount" width="125" show-overflow-tooltip />
<el-table-column label="开标日期" prop="bid_opening_date" show-overflow-tooltip />
<el-table-column label="保证金退还时间" prop="margin_amount_return_date" show-overflow-tooltip />
<el-table-column label="有无内部资源" prop="is_internal_resources">
<el-table-column label="保证金退还时间" width="155" prop="margin_amount_return_date" show-overflow-tooltip />
<el-table-column label="有无内部资源" width="155" prop="is_internal_resources">
<template #default="{ row }">
<dict-value :options="dictData.whether_status" :value="row.is_internal_resources" />
</template>
</el-table-column>
<el-table-column label="项目把握度" prop="project_assurance" show-overflow-tooltip>
<el-table-column label="项目把握度" width="85" prop="project_assurance" show-overflow-tooltip>
<template #default="{ row }">
<dict-value :options="dictData.project_assurance" :value="row.project_assurance" />
</template>

View File

@ -13,16 +13,16 @@
</div>
<el-row>
<el-col :span="8">
<el-form-item label="项目名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" @click="showDialog = true">
<el-form-item label="项目名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]" @click="showDialog = true">
<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: 'blur' }]">
<el-form-item label="项目编码" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item></el-col>
<el-col :span="8">
<el-form-item label="客户名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-form-item label="客户名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="matsname" clearable disabled placeholder="系统自动填写" />
</el-form-item></el-col><el-col :span="8">
<el-form-item label="招标公司名称" prop="invite_tenders_company_name" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">

View File

@ -471,7 +471,7 @@ const setFormData = async (data: Record<any, any>) => {
}
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
if (data.annex && data.annex.length > 0) {

View File

@ -29,7 +29,7 @@
<el-col :span="12">
<el-form-item label="是否中标">
{{ formData.is_successful }}
<dict-value :options="dictData.whether_status" :value="formData.is_successful" />
</el-form-item>
</el-col>
<el-col :span="12">

View File

@ -14,9 +14,14 @@
<el-form-item label="客户名称" prop="project_id">
<el-input v-model="project_matername" clearable disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="是否中标" prop="is_successful">
<el-input v-model="formData.is_successful" clearable placeholder="请输入是否中标" />
<el-select v-model="formData.is_successful" clearable placeholder="请选择是否中标">
<el-option v-for="(item, index) in dictData.whether_status" :key="index" :label="item.name" :value="parseInt(item.value)" />
</el-select>
</el-form-item>
<el-form-item label="中标单位" prop="bidder">
<el-input v-model="formData.bidder" clearable placeholder="请输入中标单位" />
</el-form-item>

View File

@ -40,7 +40,11 @@
<el-table-column label="项目编码" prop="project_id" show-overflow-tooltip />
<el-table-column label="投标时间" prop="project_id" show-overflow-tooltip />
<el-table-column label="开标日期" prop="project_id" show-overflow-tooltip />
<el-table-column label="是否中标" prop="is_successful" show-overflow-tooltip />
<el-table-column label="是否中标" prop="is_successful" show-overflow-tooltip>
<template #default="{ row }">
<dict-value :options="dictData.whether_status" :value="row.is_successful" />
</template>
</el-table-column>
<el-table-column label="中标单位" prop="bidder" show-overflow-tooltip />
<el-table-column label="中标金额" prop="bidder_amount" show-overflow-tooltip />
<el-table-column label="中标金额大写" prop="bidder_amount_daxie" show-overflow-tooltip />
@ -103,7 +107,7 @@ const handleSelectionChange = (val: any[]) => {
}
//
const { dictData } = useDictData('')
const { dictData } = useDictData('whether_status')
//
const { pager, getLists, resetParams, resetPage } = usePaging({

View File

@ -338,7 +338,7 @@ const setFormData = async (data: Record<any, any>) => {
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {

View File

@ -14,28 +14,28 @@
<el-row>
<el-col :span="8">
<el-form-item label="合同名称" prop="contract_id" @click="showDialog = true">
<el-input v-model="contract_name" readonly clearable placeholder="请选择合同" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
<el-form-item label="合同名称" prop="contract_id" @click="showDialog = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="contract_name" readonly clearable placeholder="请选择项目合同" />
</el-form-item></el-col><el-col :span="8">
<el-form-item label="合同编号" prop="contract_id" @click="showDialog = true">
<el-input v-model="contract_code" readonly clearable placeholder="请选择合同" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
<el-form-item label="合同编号" prop="contract_id" @click="showDialog = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="contract_code" clearable placeholder="请选择合同" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
</el-form-item></el-col><el-col :span="8">
<el-form-item label="项目名称" prop="contract_id" @click="showDialog = true">
<el-input v-model="project_name" readonly clearable placeholder="请选择合同" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
<el-input v-model="project_name" clearable placeholder="请选择合同" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
</el-form-item></el-col><el-col :span="8">
<el-form-item label="客户名称" prop="contract_id" @click="showDialog = true">
<el-input v-model="custom_name" readonly clearable placeholder="请选择合同" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
<el-input v-model="custom_name" clearable placeholder="请选择合同" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
</el-form-item></el-col>
<el-col :span="8">
<el-form-item label="合同类型" prop="contract_id">
<el-form-item label="合同类型" prop="contract_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-select v-model="contract_type" clearable placeholder="请选择合同类型">
<el-option v-for="(item, index) in dictData.contract_type" :key="index" :label="item.name" :value="parseInt(item.value)" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="合同计价方式" prop="contract_id">
<el-form-item label="合同计价方式" prop="contract_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-select class="flex-1" v-model="contract_pricing_method" clearable placeholder="请选择合同计价方式">
<el-option v-for="(item, index) in dictData.contract_pricing_method" :key="index" :label="item.name" :value="parseInt(item.value)" />
</el-select>
@ -45,7 +45,7 @@
<el-col :span="8">
<el-form-item label="业务负责人" prop="contract_id" @click="showDialog = true">
<el-input v-model="business_director" readonly clearable placeholder="请选择合同" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
<el-input v-model="business_director" readonly clearable placeholder="请选择人员" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
</el-form-item></el-col><el-col :span="8">
<el-form-item label="审批id" prop="approve_id">
@ -114,7 +114,7 @@ import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiContractNegotiationAdd, apiContractNegotiationEdit, apiContractNegotiationDetail } from '@/api/contract_negotiation'
import { timeFormat } from '@/utils/util'
import proontractTable from "@/components/proontract/index.vue"
import proontractTable from "@/components/project_contract/index.vue"
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -223,7 +223,7 @@ const setFormData = async (data: Record<any, any>) => {
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
business_director.value = data.business_director
contract_name.value = data.contract_name

View File

@ -390,7 +390,7 @@ const setFormData = async (data: Record<any, any>) => {
// console.log(arry2, '22222222')
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
// console.log(formData, '2222222222')

View File

@ -390,7 +390,7 @@ const setFormData = async (data: Record<any, any>) => {
// console.log(arry2, '22222222')
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
// console.log(formData, '2222222222')

View File

@ -360,7 +360,7 @@ const setFormData = async (data: Record<any, any>) => {
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
formData.other_contacts = JSON.parse(data.other_contacts)

View File

@ -18,13 +18,23 @@
<el-input v-model="project_name" readonly clearable placeholder="请输入项目名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目编码" prop="project_id">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户名称" prop="custom_id">
<el-input v-model="custom_name" readonly clearable placeholder="请输入客户名称" />
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<!-- <el-col :span="12">
<el-form-item label="合同号" prop="project_id">
<el-input v-model="project_code" clearable readonly placeholder="系统自动填写" />
</el-form-item>
</el-col>-->
<!-- <el-col :span="12">
<el-form-item label="审批id" prop="approve_id">
<el-input v-model="formData.approve_id" clearable placeholder="请输入审批id" />
</el-form-item>
@ -37,7 +47,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="联系电话" prop="phone">
<el-form-item label="联系电话" prop="phone" :rules="[{ validator: checkPhone, trigger: 'blur' }]">
<el-input v-model="formData.phone" clearable placeholder="请输入联系电话" />
</el-form-item>
</el-col>
@ -69,8 +79,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="指定处理人" prop="processed_admin_id">
<el-input v-model="formData.processed_admin_id" clearable placeholder="请输入指定处理人" />
<el-form-item label="指定处理人" prop="processed_admin_id" @click="userclick">
<el-input v-model="processed_admin_name" clearable readonly placeholder="请输入指定处理人" />
</el-form-item>
</el-col>
<el-col :span="12">
@ -119,13 +129,23 @@
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<peojectDialog @customEvent="customEvent"></peojectDialog>
</el-dialog>
<el-dialog v-model="showDialog1" title="选择客户" width="70%">
<peojectDialog @customEvent="customEvent1"></peojectDialog>
</el-dialog>
<el-dialog v-model="showDialog2" title="选择销售合同" width="70%">
<salescontractDialog @customEvent="customEvent2" contract_type="2"></salescontractDialog>
</el-dialog>
<personnelselector ref="personnel" @confirm="submituser" type="1"></personnelselector>
</div>
</template>
<script lang="ts" setup name="customServiceEdit">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import customDialog from '@/components/custom-dialog/index.vue'
import salescontractDialog from '@/components/salescontract/index.vue'
import { apiCustomServiceAdd, apiCustomServiceEdit, apiCustomServiceDetail } from '@/api/custom_service'
import personnelselector from '@/components/personnelselector/index.vue'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
import useUserStore from "@/stores/modules/user";
@ -141,8 +161,12 @@ const base_url = configs.baseUrl + configs.urlPrefix
const userStore = useUserStore();
const list = reactive([])
const showDialog = ref(false)
const showDialog1 = ref(false)
const showDialog2 = ref(false)
const custom_name = ref('')
const project_name = ref('')
const processed_admin_name = ref('')
const personnel = ref<any>()
const formDataannex = reactive([])
const customEvent = (e: any) => {
console.log(e)
@ -154,7 +178,20 @@ const customEvent = (e: any) => {
};
const customEvent1 = (e: any) => {
console.log(e)
showDialog1.value = false;
};
const customEvent2 = (e: any) => {
console.log(e)
showDialog2.value = false;
};
//
const handleAvatarSuccess_four = (
@ -186,7 +223,28 @@ const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
//
const userclick = () => {
// console.log(personnel.value, '1111111')
personnel.value.open()
}
//
const submituser = (e: any) => {
formData.processed_admin_id = e.id;
processed_admin_name.value = e.name;
}
//
const checkPhone = (rule: any, value: any, callback: (arg0: Error) => any) => {
if (value && !/^1\d{10}$/.test(value)) {
callback(new Error('请输入正确的手机号码'));
} else {
callback()
}
}
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑客户售后' : '新增客户售后'
@ -262,7 +320,7 @@ const setFormData = async (data: Record<any, any>) => {
Object.assign(formDataannex, arry1)
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {

View File

@ -35,31 +35,39 @@
<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="project_id" show-overflow-tooltip />
<el-table-column label="客户" prop="custom_id" show-overflow-tooltip />
<el-table-column label="联系人" prop="contacts" show-overflow-tooltip />
<el-table-column label="电话" prop="phone" show-overflow-tooltip />
<el-table-column label="日期" prop="date">
<template #default="{ row }">
<span>{{ row.date ? timeFormat(row.date, 'yyyy-mm-dd hh:MM:ss') : '' }}</span>
</template>
</el-table-column>
<el-table-column label="流程编号" type="" width="55" />
<el-table-column label="流程步骤" type="" width="55" />
<el-table-column label="客户名称" type="" width="55" />
<el-table-column label="项目名称" type="" width="55" />
<el-table-column label="项目编码" prop="" show-overflow-tooltip />
<el-table-column label="合同编号" prop="" show-overflow-tooltip />
<el-table-column label="投诉主题" prop="name" show-overflow-tooltip />
<el-table-column label="日期" prop="date" show-overflow-tooltip />
<el-table-column label="接待人" prop="receiver" show-overflow-tooltip />
<el-table-column label="分类" prop="classification">
<template #default="{ row }">
<dict-value :options="dictData.classification" :value="row.classification" />
</template>
</el-table-column>
<el-table-column label="投诉人" prop="" show-overflow-tooltip />
<el-table-column label="联系电话" prop="phone" show-overflow-tooltip />
<el-table-column label="处理结果" prop="" show-overflow-tooltip />
<el-table-column label="紧急程度" prop="urgency">
<template #default="{ row }">
<dict-value :options="dictData.urgency" :value="row.urgency" />
</template>
</el-table-column>
<el-table-column label="接待人" prop="receiver" show-overflow-tooltip />
<el-table-column label="指定处理人" prop="processed_admin_id" show-overflow-tooltip />
<el-table-column label="投诉主题" prop="name" show-overflow-tooltip />
<el-table-column label="问题描述" prop="description" show-overflow-tooltip />
<el-table-column label="备注" prop="notes" show-overflow-tooltip />
<el-table-column label="状态" prop="status" 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="" 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="操作" width="160" fixed="right">
<template #default="{ row }">
<el-button v-perms="['custom_service.custom_service/edit']" type="primary" link @click="handleEdit(row)">

View File

@ -390,7 +390,7 @@ const setFormData = async (data: Record<any, any>) => {
// console.log(arry2, '22222222')
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
// console.log(formData, '2222222222')

View File

@ -156,7 +156,7 @@ const formRules = reactive<any>({
const setFormData = async (data: Record<any, any>) => {
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {

View File

@ -102,7 +102,7 @@ const formRules = reactive<any>({
const setFormData = async (data: Record<any, any>) => {
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {

View File

@ -240,7 +240,7 @@ const setFormData = async (data: Record<any, any>) => {
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {

View File

@ -361,7 +361,7 @@ const setFormData = async (data: Record<any, any>) => {
}
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
contract_name.value = data.contract.contract_name;
contract_no.value = data.contract.contract_code;

View File

@ -9,7 +9,8 @@
<el-form-item label="费用科目id" prop="cost_subject_id">
<el-select class="w-[280px]" v-model="queryParams.cost_subject_id" clearable placeholder="请选择费用科目id">
<el-option v-for="(item, index) in dictData.invoice_type" :key="index" :label="item.name" :value="item.value" />
<el-option v-for="(item, index) in dictData.invoice_type" :key="index" :label="item.name"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item>
@ -66,8 +67,8 @@ import { reimbursementdetails } from '@/api/expense_reimbursement'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
// import EditPopup from './edit.vue'
// import DetailPopup from './detail.vue'
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
//

View File

@ -391,7 +391,7 @@ const setFormData = async (data: Record<any, any>) => {
Object.assign(formDataannex, arry1)
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {

View File

@ -18,11 +18,11 @@
<el-input v-model="formData.contract_no" readonly clearable placeholder="点击选择要变更的采购合同" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="供应商合同号" prop="supplier_contract_no">
<el-form-item label="供应商合同号" prop="supplier_contract_no" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="formData.supplier_contract_no" clearable placeholder="请输入供应商合同号" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="供应商名称" prop="supplier_contract_no">
<el-form-item label="供应商名称" prop="supplier_contract_no" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="supplier_name" clearable disabled placeholder="系统自动填写" />
</el-form-item> </el-col>
<el-col :span="8">
@ -41,7 +41,7 @@
<el-col :span="24">
<el-form-item label="合同类型" prop="contract_type">
<el-form-item label="合同类型" prop="contract_type" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-radio-group v-model="formData.contract_type" placeholder="请选择合同类型" readonly>
<el-radio v-for="(item, index) in dictData.procurement_contract_type" :key="index" :label="parseInt(item.value)">
{{ item.name }}
@ -49,7 +49,7 @@
</el-radio-group>
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="签订日期" prop="signing_date">
<el-form-item label="签订日期" prop="signing_date" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-date-picker class="flex-1 !flex" v-model="formData.signing_date" clearable type="date" value-format="YYYY-MM-DD" placeholder="选择签订日期">
</el-date-picker>
</el-form-item>
@ -64,7 +64,7 @@
</el-radio-group>
</el-form-item> </el-col>
<el-col :span="24">
<el-form-item label="账期" prop="account_period">
<el-form-item label="账期" prop="account_period" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-radio-group v-model="formData.account_period" placeholder="请选择账期" readonly>
<el-radio v-for="(item, index) in dictData.account_period" :key="index" :label="parseInt(item.value)">
{{ item.name }}
@ -80,7 +80,7 @@
<el-input v-model="formData.amount_excluding_tax" clearable disabled placeholder="系统自动计算" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="金额大写" prop="amount_daxie">
<el-form-item label="金额大写" prop="amount_daxie" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="formData.amount_daxie" clearable disabled placeholder="系统自动填写" />
</el-form-item> </el-col>
<el-col :span="8">
@ -88,7 +88,7 @@
<el-input v-model="formData.retention_money_rate" clearable placeholder="请输入质保金比例" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="质保金" prop="retention_money">
<el-form-item label="质保金" prop="retention_money" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="formData.retention_money" clearable disabled placeholder="系统自动计算" />
</el-form-item> </el-col>
<el-col :span="8">
@ -406,7 +406,7 @@ const setFormData = async (data: Record<any, any>) => {
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
project_name.value = data.project.name
project_code.value = data.project.project_code

View File

@ -83,6 +83,8 @@
<el-table-column label="客户" prop="custom_name" show-overflow-tooltip />
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
<el-table-column label="项目名称" prop="name" show-overflow-tooltip />
<el-table-column label="项目状态" prop="status" show-overflow-tooltip />
<el-table-column label="项目所在地" prop="project_address" show-overflow-tooltip />
<el-table-column label="项目类型" prop="project_type">
<template #default="{ row }">
<!-- <dict-value :options="dictData.protype" :value="row.project_type" /> -->
@ -90,21 +92,6 @@
</template>
</el-table-column>
<!-- <el-table-column label="项目内容" prop="project_content">
<template #default="{ row }">
<dict-value :options="dictData.project_content" :value="row.project_content" />
</template>
</el-table-column> -->
<el-table-column label="项目所在地" prop="project_address" show-overflow-tooltip />
<el-table-column label="信息来源" prop="industry">
<template #default="{ row }">
<dict-value :options="dictData.information_sources" :value="row.information_sources" />
</template>
</el-table-column>
<el-table-column label="负责人" prop="person" show-overflow-tooltip />
<el-table-column label="战略意义" prop="strategic_significance">
<template #default="{ row }">
<dict-value :options="dictData.strategic_significance" :value="row.strategic_significance" />
@ -120,7 +107,18 @@
<dict-value :options="dictData.unit_nature" :value="row.unit_nature" />
</template>
</el-table-column>
<el-table-column label="项目状态" prop="status" show-overflow-tooltip />
<el-table-column label="招标方式" prop="bidding_method">
<template #default="{ row }">
<dict-value :options="dictData.bidding_method" :value="row.bidding_method" />
</template>
</el-table-column>
<el-table-column label="信息来源" prop="industry">
<template #default="{ row }">
<dict-value :options="dictData.information_sources" :value="row.information_sources" />
</template>
</el-table-column>
<el-table-column label="负责人" prop="person" show-overflow-tooltip />
<el-table-column label="操作" width="160" fixed="right">
<template #default="{ row }">
<el-button v-perms="['project.project/edit']" type="primary" link @click="handleEdit(row)">

View File

@ -21,8 +21,8 @@
<el-form-item label="联系人" prop="contacts">
<el-input v-model="formData.contacts" clearable placeholder="请输入联系人" />
</el-form-item> </el-col><el-col :span="8">
<el-form-item label="联系方式" prop="contact_information">
<el-input v-model="formData.contact_information" clearable placeholder="请输入联系方式" @blur="validatephone()" />
<el-form-item label="联系方式" prop="contact_information" :rules="[{ validator: checkPhone, trigger: 'blur' }]">
<el-input v-model="formData.contact_information" clearable placeholder="请输入联系方式" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="项目角色" prop="project_role">
@ -233,11 +233,12 @@ const getDetail = async (row: Record<string, any>) => {
setFormData(data)
}
const validatephone = (e: any) => {
const phoneReg = /^1[3|4|5|7|8][0-9]{9}$/
if (phoneReg.test(formData.contact_information)) {
const checkPhone = (rule: any, value: any, callback: (arg0: Error) => any) => {
if (value && !/^1\d{10}$/.test(value)) {
callback(new Error('请输入正确的手机号码'));
} else {
feedback.msgError('电话号码格式不正确')
callback()
}
}

View File

@ -104,7 +104,7 @@
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="55" />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="客户名称" prop="executor" show-overflow-tooltip />
<el-table-column label="客户名称" prop="custom_name" show-overflow-tooltip />
<el-table-column label="执行人" prop="executor" show-overflow-tooltip />

View File

@ -0,0 +1,175 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="甲方结算详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px">
<el-card class="mb-2">
<el-row>
<el-col :span="12">
<el-form-item label="结算单号">
{{ formData.settlement_code }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目名称">
{{ formData.project_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合同编号">
{{ formData.contract_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户名称">
{{ formData.custom_name
}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合同名称">
{{ formData.contract_code
}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结算日期">
{{ formData.settlement_date
}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结算金额">
{{ formData.settlement_amount }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结算金额大写">
{{ formData.settlement_amount_uppercase
}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合同金额">
{{ formData.contract_amount
}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="合同附件">
<div v-if="formDataannex.length > 0">
<div v-for="(item, index) in formDataannex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
</div>
</div>
<div v-else>暂无附件</div>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-form>
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const formDataannex = reactive([])
const datas = reactive({
provinceOptions: [],
cityOptions: [],
areaOptions: [],
});
//
const formData = reactive({
})
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
name: `文件${index + 1}`,
uri: item
};
});
Object.assign(formDataannex, arry1)
}
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiCustomDetail({
id: row.id
})
setFormData(data)
}
//
const handleSubmit = async () => {
popupRef.value?.close()
}
//
const open = () => {
console.log('1111111')
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
defineExpose({
open,
setFormData,
getDetail
})
</script>
<style lang="scss">
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
</style>

View File

@ -1,76 +1,45 @@
<template>
<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="org_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-select class="flex-1" v-model="formData.org_id" clearable placeholder="请选择组织id" @change="area_change">
<el-option v-for="(item, index) in orglist" :key="index" :label="item.name" :value="parseInt(item.id)" />
</el-select>
</el-form-item>
<el-form-item label="部门id" prop="dept_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-select class="flex-1" v-model="formData.dept_id" clearable placeholder="请选择部门id">
<el-option v-for="(item, index) in jobs" :key="index" :label="item.name" :value="parseInt(item.id)" />
</el-select>
</el-form-item>
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-form-item label="项目名称" prop="project_id" @click="showDialog = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="project_name" clearable placeholder="请输入项目id" />
</el-form-item>
<el-form-item label="项目编码" prop="project_id">
<el-input v-model="project_code
" clearable placeholder="请输入项目id" />
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="唯一标识" prop="theme">
<el-input v-model="formData.theme" clearable placeholder="请输入唯一标识" />
<el-form-item label="合同名称" prop="project_id" @click="showDialog1 = true">
<el-input v-model="project_code" clearable readonly placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="日期" prop="recording_time">
<el-date-picker class="flex-1 !flex" v-model="formData.recording_time" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择日期">
<el-form-item label="合同编号" prop="project_id">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="客户名称" prop="project_id">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="合同金额" prop="project_id">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="合同金额大写" prop="project_id">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="结算金额" prop="settlement_amount">
<el-input v-model="formData.settlement_amount" clearable placeholder="请输入结算金额" @input="amountinput" />
</el-form-item>
<el-form-item label="结算金额大写" prop="settlement_amount_uppercase">
<el-input v-model="formData.settlement_amount_uppercase" readonly disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="结算差异" prop="remaining_amount">
<el-input v-model="formData.remaining_amount" readonly disabled placeholder="系统自动计算" />
</el-form-item>
<el-form-item label="结算日期" prop="settlement_date">
<el-date-picker class="flex-1 !flex" v-model="formData.settlement_date" clearable type="date" value-format="YYYY-MM-DD" placeholder="选择结算日期">
</el-date-picker>
</el-form-item>
<el-form-item label="姓名" prop="supplier">
<el-input v-model="formData.supplier" clearable placeholder="请输入姓名" />
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" type="textarea" clearable placeholder="请输入备注" />
</el-form-item>
<el-form-item label="身份证号" prop="supplier_contacts" :rules="[{ validator: checkPhone, trigger: 'blur' }]">
<el-input v-model="formData.supplier_contacts" clearable placeholder="身份证号" />
</el-form-item>
<el-form-item label="工种" prop="importance">
<el-radio-group v-model="formData.importance" placeholder="请选择工种">
<el-radio v-for="(item, index) in dictData.importance" :key="index" :label="parseInt(item.value)">
{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="总收入" prop="demand_content">
<el-input v-model="formData.demand_content" clearable placeholder="请输入总收入" />
</el-form-item>
<el-form-item label="总支出" prop="demand_content">
<el-input v-model="formData.demand_content" clearable placeholder="请输入总支出" />
</el-form-item>
<el-form-item label="未发放" prop="demand_content">
<el-input v-model="formData.demand_content" clearable placeholder="请输入未发放" />
</el-form-item>
<el-form-item label="本次申请付款金额" prop="demand_content">
<el-input v-model="formData.demand_content" clearable placeholder="请输入本次申请付款金额" />
</el-form-item>
<el-form-item label="备注" prop="demand_content">
<el-input v-model="formData.demand_content" clearable placeholder="请输入备注" />
</el-form-item>
<el-form-item label="银行卡号" prop="demand_content">
<el-input v-model="formData.demand_content" clearable placeholder="请输入银行卡号" />
</el-form-item>
<el-form-item label="开户银行" prop="demand_content">
<el-input v-model="formData.demand_content" clearable placeholder="请输入开户银行" />
</el-form-item>
<el-form-item label="附件" prop="field127">
<el-form-item label="结算明细附件" prop="field127">
<el-upload accept="doc, docx, xls, xlsx, ppt, pptx, pdf, txt, zip, rar, tar, jpg, png, gif, jpeg, webp, wmv, avi, mpg, mpeg, 3gp, mov, mp4, flv, f4v, rmvb, mkv" class="upload-demo" :show-file-list="false" aria-hidden="true" :headers="{ Token: userStore.token }" :action="base_url + '/upload/file'" :on-success="handleAvatarSuccess_four" ref="upload">
<el-button type="primary">
上传
@ -89,6 +58,9 @@
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<projectTable @customEvent="customEvent"></projectTable>
</el-dialog>
<el-dialog v-model="showDialog1" title="选择合同" width="70%">
<contractTable @customEvent="customEvent1" :productid="formData.project_id"></contractTable>
</el-dialog>
</div>
</template>
@ -98,8 +70,11 @@ import Popup from '@/components/popup/index.vue'
import { deptAll } from '@/api/org/department'
import { getAll } from '@/api/org/organization'
import projectTable from "@/components/project/index.vue"
import { apiCustomerDemandAdd, apiCustomerDemandEdit, apiCustomerDemandDetail } from '@/api/customer_demand'
import { timeFormat } from '@/utils/util'
import contractTable from "@/components/project_contract/index.vue"
import { apiprojectsettlementAdd, apiprojectsettlementEdit, apiprojectsettlementDetail } from '@/api/project_settlement'
import { timeFormat, toChinesNum } from '@/utils/util'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -113,10 +88,8 @@ const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
const orglist = reactive([])
const jobs = reactive([])
const project_name
= ref('')
const project_code
= ref('')
const project_name = ref('')
const project_code = ref('')
const custom_name
= ref('')
const formDataannex = reactive([])
@ -145,6 +118,7 @@ const delFileFn = (index: number) => {
}
// dialog
const showDialog = ref(false)
const showDialog1 = ref(false)
const customEvent = (e: any) => {
formData.project_id = e.id;
project_name.value = e.name;
@ -154,6 +128,15 @@ const customEvent = (e: any) => {
.value = e.custom_name;
showDialog.value = false;
};
const customEvent1 = (e: any) => {
formData.project_id = e.id;
project_name.value = e.name;
project_code
.value = e.project_code;
custom_name
.value = e.custom_name;
showDialog.value = false;
};
const getlista = () => {
getAll().then((res) => {
@ -176,7 +159,7 @@ const area_change = (e: any) => {
}
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑客户需求' : '新增客户需求'
return mode.value == 'edit' ? '编辑甲方结算' : '新增甲方结算'
})
//
@ -185,12 +168,12 @@ const formData = reactive({
org_id: '',
dept_id: '',
project_id: '',
theme: '',
supplier: '',
supplier_contacts: '',
importance: '',
recording_time: '',
demand_content: '',
contract_id: '',
settlement_amount: '',
settlement_amount_uppercase: '',
remaining_amount: '',
settlement_date: '',
remark: '',
annex: '',
})
const checkPhone = (rule: any, value: any, callback: (arg0: Error) => any) => {
@ -210,7 +193,15 @@ const checkPhone = (rule: any, value: any, callback: (arg0: Error) => any) => {
}
}
//
const amountinput = (e) => {
// console.log(e)
if (e && e > 0) {
formData.remaining_amount = e
formData.settlement_amount_uppercase = toChinesNum(e)
}
}
//
const formRules = reactive<any>({
@ -246,7 +237,7 @@ const setFormData = async (data: Record<any, any>) => {
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiCustomerDemandDetail({
const data = await apiprojectsettlementDetail({
id: row.id
})
setFormData(data)
@ -261,8 +252,8 @@ const handleSubmit = async () => {
await formRef.value?.validate()
const data = { ...formData, }
mode.value == 'edit'
? await apiCustomerDemandEdit(data)
: await apiCustomerDemandAdd(data)
? await apiprojectsettlementEdit(data)
: await apiprojectsettlementAdd(data)
popupRef.value?.close()
emit('success')
}

View File

@ -0,0 +1,147 @@
<template>
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="结算单号" prop="settlement_code">
<el-input v-model="queryParams.settlement_code" 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">
<el-button v-perms="['project.project_settlement/add']" type="primary" @click="handleAdd">
<template #icon>
<icon name="el-icon-Plus" />
</template>
新增
</el-button>
<!-- <el-button v-perms="['project.project_settlement/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="person_idcard" show-overflow-tooltip />
<el-table-column label="流程步骤" prop="person_idcard" show-overflow-tooltip />
<el-table-column label="结算单号" prop="settlement_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_code" show-overflow-tooltip />
<el-table-column label="结算日期" prop="settlement_date" show-overflow-tooltip />
<el-table-column label="合同金额" prop="contract_amount" show-overflow-tooltip />
<el-table-column label="结算金额" prop="settlement_amount" show-overflow-tooltip />
<el-table-column label="结算差异" prop="remaining_amount" show-overflow-tooltip />
<el-table-column label="添加人" prop="add_user_name" show-overflow-tooltip />
<!-- <el-table-column label="负责人" prop="add_user_name" show-overflow-tooltip /> -->
<el-table-column label="操作" width="160" fixed="right">
<template #default="{ row }">
<!-- <el-button v-perms="['project.project_settlement/edit']" type="primary" link @click="handleEdit(row)">
编辑
</el-button> -->
<!-- <el-button v-perms="['project.project_settlement/delete']" type="danger" link @click="handleDelete(row.id)">
删除
</el-button> -->
<el-button v-perms="['project.project_settlement/detail']" link @click="handledetail(row)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
</div>
</template>
<script lang="ts" setup name="projectLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiprojectsettlementLists, apiprojectsettlementDelete, apiprojectsettlementDetail } from '@/api/project_settlement'
import { timeFormat } from '@/utils/util'
import { getAllProjectTypes } from '@/api/projecttype'
const protype = reactive([])
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
//
const showEdit = ref(false)
const showDtail = ref(false)
//
const queryParams = reactive({
settlement_code: ''
})
//
const selectData = ref<any[]>([])
//
const handleSelectionChange = (val: any[]) => {
selectData.value = val.map(({ id }) => id)
}
//
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiprojectsettlementLists,
params: queryParams
})
//
const handleAdd = async () => {
showEdit.value = true
await nextTick()
editRef.value?.open('add')
}
//
const handleEdit = async (data: any) => {
console.log(data.id)
let res = await apiprojectsettlementDetail({ 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 apiprojectsettlementDelete({ id })
getLists()
}
const handledetail = async (data: any) => {
let res = await apiprojectsettlementDetail({ id: data.id })
showDtail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -1,177 +0,0 @@
<template>
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="保单号" prop="insurance_no">
<el-input v-model="queryParams.insurance_no" clearable placeholder="请输入保单号" />
</el-form-item>
<el-form-item label="保险种类" prop="type">
<el-input v-model="queryParams.type" clearable placeholder="请输入保险种类" />
</el-form-item>
<el-form-item label="保险公司" prop="insurance_company">
<el-input v-model="queryParams.insurance_company" clearable placeholder="请输入保险公司" />
</el-form-item>
<el-form-item label="发票编号" prop="invoice_no">
<el-input v-model="queryParams.invoice_no" clearable placeholder="请输入发票编号" />
</el-form-item>
<el-form-item label="经办人" prop="handler">
<el-input v-model="queryParams.handler" 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">
<el-button v-perms="['project.project_salary/add']" type="primary" @click="handleAdd">
<template #icon>
<icon name="el-icon-Plus" />
</template>
新增
</el-button>
<el-button v-perms="['project.project_salary/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="序号" type="index" show-overflow-tooltip />
<el-table-column label="处理流程" prop="person_idcard" show-overflow-tooltip />
<el-table-column label="流程步骤" prop="person_idcard" show-overflow-tooltip />
<el-table-column label="工资付款单号" prop="person_idcard" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="姓名" prop="person_name" show-overflow-tooltip />
<el-table-column label="付款类型" prop="person_idcard" show-overflow-tooltip />
<el-table-column label="申请日期" prop="insurance_date" show-overflow-tooltip />
<el-table-column label="合计金额" prop="due_date" show-overflow-tooltip />
<el-table-column label="合计金额大写" prop="insurance_no" show-overflow-tooltip />
<el-table-column label="账户编码)" prop="insurance" show-overflow-tooltip />
<el-table-column label="投保金额(万元)" prop="insured_amount" show-overflow-tooltip />
<el-table-column label="开户银行" prop="insurance_company" show-overflow-tooltip />
<el-table-column label="账号" prop="insurance_detail" show-overflow-tooltip />
<el-table-column label="开户名称" prop="invoice_no" show-overflow-tooltip />
<el-table-column label="是否计息" prop="handler" show-overflow-tooltip />
<el-table-column label="开始计息日期" prop="handler" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
<!-- <el-table-column label="人员标识" prop="per_daily_living" show-overflow-tooltip /> -->
<el-table-column label="操作" width="160" fixed="right">
<template #default="{ row }">
<el-button v-perms="['project.project_salary/edit']" type="primary" link @click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['project.project_salary/delete']" type="danger" link @click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['project.project_salary/detail']" link @click="handledetail(row)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
</div>
</template>
<script lang="ts" setup name="projectLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { insurancemanagementLists, insurancemanagementDelete, insurancemanagementDetail } from '@/api/project_salary'
import { timeFormat } from '@/utils/util'
import { getAllProjectTypes } from '@/api/projecttype'
const protype = reactive([])
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
//
const showEdit = ref(false)
const showDtail = ref(false)
//
const queryParams = reactive({
type: '',
insurance_no: '',
insurance_company: '',
invoice_no: '',
handler: '',
})
//
const selectData = ref<any[]>([])
//
const handleSelectionChange = (val: any[]) => {
selectData.value = val.map(({ id }) => id)
}
//
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: insurancemanagementLists,
params: queryParams
})
//
const handleAdd = async () => {
showEdit.value = true
await nextTick()
editRef.value?.open('add')
}
//
const handleEdit = async (data: any) => {
console.log(data.id)
let res = await insurancemanagementDetail({ 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 insurancemanagementDelete({ id })
getLists()
}
const handledetail = async (data: any) => {
let res = await insurancemanagementDetail({ id: data.id })
showDtail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -1,74 +1,62 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="保险管理详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<popup ref="popupRef" title="分包结算详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px">
<el-card class="mb-2">
<el-row>
<el-col :span="12">
<el-form-item label="结算单号">
{{ formData.settlement_code }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="供应商名称">
{{ formData.supplier_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目名称">
{{ formData.project_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目编号">
{{ formData.project_code }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="姓名">
{{ formData.person_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号">
{{ formData.person_idcard }}
<el-form-item label="合同编号">
{{ formData.contract_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="投保日期">
{{ formData.insurance_date }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="到期日期">
{{ formData.due_date }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="保费(元)">
{{ formData.insurance }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="投保金额(万元)">
{{ formData.insured_amount }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="保险公司">
{{ formData.insurance_company }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="保单明细">
{{ formData.insurance_detail }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发票编号">
{{ formData.invoice_no
<el-form-item label="合同名称">
{{ formData.contract_code
}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经办人">
{{ formData.handler
<el-form-item label="结算日期">
{{ formData.settlement_date
}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结算金额">
{{ formData.settlement_amount }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结算金额大写">
{{ formData.settlement_amount_uppercase
}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合同金额">
{{ formData.contract_amount
}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="合同附件">
<div v-if="formDataannex.length > 0">

View File

@ -0,0 +1,279 @@
<template>
<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">
<el-form-item label="项目名称" prop="project_id" @click="showDialog = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="project_name" clearable placeholder="请输入项目id" />
</el-form-item>
<el-form-item label="项目编码" prop="project_id">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="合同名称" prop="project_id" @click="showDialog1 = true">
<el-input v-model="project_code" clearable readonly placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="合同编号" prop="project_id">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="客户名称" prop="project_id">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="合同金额" prop="project_id">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="合同金额大写" prop="project_id">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="结算金额" prop="settlement_amount">
<el-input v-model="formData.settlement_amount" clearable placeholder="请输入结算金额" @input="amountinput" />
</el-form-item>
<el-form-item label="结算金额大写" prop="settlement_amount_uppercase">
<el-input v-model="formData.settlement_amount_uppercase" readonly disabled placeholder="系统自动填写" />
</el-form-item>
<el-form-item label="结算差异" prop="remaining_amount">
<el-input v-model="formData.remaining_amount" readonly disabled placeholder="系统自动计算" />
</el-form-item>
<el-form-item label="结算日期" prop="settlement_date">
<el-date-picker class="flex-1 !flex" v-model="formData.settlement_date" clearable type="date" value-format="YYYY-MM-DD" placeholder="选择结算日期">
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" type="textarea" clearable placeholder="请输入备注" />
</el-form-item>
<el-form-item label="结算明细附件" prop="field127">
<el-upload accept="doc, docx, xls, xlsx, ppt, pptx, pdf, txt, zip, rar, tar, jpg, png, gif, jpeg, webp, wmv, avi, mpg, mpeg, 3gp, mov, mp4, flv, f4v, rmvb, mkv" class="upload-demo" :show-file-list="false" aria-hidden="true" :headers="{ Token: userStore.token }" :action="base_url + '/upload/file'" :on-success="handleAvatarSuccess_four" ref="upload">
<el-button type="primary">
上传
</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" target="_blank">{{ item.name }}</a>
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
</div>
</div>
</el-form-item>
</el-form>
</popup>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<projectTable @customEvent="customEvent"></projectTable>
</el-dialog>
<el-dialog v-model="showDialog1" title="选择合同" width="70%">
<contractTable @customEvent="customEvent1" :productid="formData.project_id"></contractTable>
</el-dialog>
</div>
</template>
<script lang="ts" setup name="customerDemandEdit">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { deptAll } from '@/api/org/department'
import { getAll } from '@/api/org/organization'
import projectTable from "@/components/project/index.vue"
import contractTable from "@/components/project_contract/index.vue"
import { subcontractsettlementAdd, subcontractsettlementEdit, subcontractsettlementDetail } from '@/api/project_subcontract_settlement'
import { timeFormat, toChinesNum } from '@/utils/util'
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
const orglist = reactive([])
const jobs = reactive([])
const project_name = ref('')
const project_code = ref('')
const custom_name
= ref('')
const formDataannex = reactive([])
import configs from "@/config"
const base_url = configs.baseUrl + configs.urlPrefix
import useUserStore from "@/stores/modules/user";
const userStore = useUserStore();
//
const handleAvatarSuccess_four = (
response,
uploadFile
) => {
if (response.code == 0) {
ElMessage.error(response.msg);
return;
}
formDataannex.push(
{ uri: response.data.uri, name: response.data.name }
);
};
//
const delFileFn = (index: number) => {
formDataannex.splice(index, 1)
}
// dialog
const showDialog = ref(false)
const showDialog1 = ref(false)
const customEvent = (e: any) => {
formData.project_id = e.id;
project_name.value = e.name;
project_code
.value = e.project_code;
custom_name
.value = e.custom_name;
showDialog.value = false;
};
const customEvent1 = (e: any) => {
formData.project_id = e.id;
project_name.value = e.name;
project_code
.value = e.project_code;
custom_name
.value = e.custom_name;
showDialog.value = false;
};
const getlista = () => {
getAll().then((res) => {
// orglist = res.data
Object.assign(orglist, res)
})
}
const area_change = (e: any) => {
formData.org_id = e
let data = { 'org_id': e }
// console.log(data)
deptAll(data).then((res) => {
Object.assign(jobs, res)
})
}
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑分包结算' : '新增分包结算'
})
//
const formData = reactive({
id: '',
org_id: '',
dept_id: '',
project_id: '',
contract_id: '',
settlement_amount: '',
settlement_amount_uppercase: '',
remaining_amount: '',
settlement_date: '',
remark: '',
annex: '',
})
const checkPhone = (rule: any, value: any, callback: (arg0: Error) => any) => {
const phoneReg = /^1[3|4|5|7|8][0-9]{9}$/
// if (!value) {
// return callback(new Error(''))
// }
if (value) {
setTimeout(() => {
if (phoneReg.test(value)) {
callback()
} else {
callback(new Error('电话号码格式不正确'))
}
}, 100)
}
}
//
const amountinput = (e) => {
// console.log(e)
if (e && e > 0) {
formData.remaining_amount = e
formData.settlement_amount_uppercase = toChinesNum(e)
}
}
//
const formRules = reactive<any>({
})
//
const setFormData = async (data: Record<any, any>) => {
deptAll({ 'org_id': data.org_id }).then((res) => {
Object.assign(jobs, res)
})
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
name: `文件${index + 1}`,
uri: item
};
});
Object.assign(formDataannex, arry1)
}
project_name.value = data.project_name
custom_name.value = data.custom_name
project_code.value = data.project_code
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
}
}
//@ts-ignore
formData.recording_time = timeFormat(formData.recording_time, 'yyyy-mm-dd hh:MM:ss')
}
const getDetail = async (row: Record<string, any>) => {
const data = awaitsubcontractsettlementDetail({
id: row.id
})
setFormData(data)
}
//
const handleSubmit = async () => {
if (formDataannex.length > 0) {
formData.annex = JSON.stringify(formDataannex.map((item) => item.uri))
}
await formRef.value?.validate()
const data = { ...formData, }
mode.value == 'edit'
? awaitsubcontractsettlementEdit(data)
: awaitsubcontractsettlementAdd(data)
popupRef.value?.close()
emit('success')
}
//
const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
getlista()
defineExpose({
open,
setFormData,
getDetail
})
</script>

View File

@ -0,0 +1,143 @@
<template>
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="结算单号" prop="settlement_code">
<el-input v-model="queryParams.settlement_code" 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">
<el-button v-perms="['project.project_subcontract_settlement/add']" type="primary" @click="handleAdd">
<template #icon>
<icon name="el-icon-Plus" />
</template>
新增
</el-button>
<!-- <el-button v-perms="['project.project_subcontract_settlement/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="person_idcard" show-overflow-tooltip />
<el-table-column label="流程步骤" prop="person_idcard" show-overflow-tooltip />
<el-table-column label="结算单号" prop="settlement_code" 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_code" show-overflow-tooltip />
<el-table-column label="结算日期" prop="settlement_date" show-overflow-tooltip />
<el-table-column label="合同金额" prop="contract_amount" show-overflow-tooltip />
<el-table-column label="结算金额" prop="settlement_amount" show-overflow-tooltip />
<el-table-column label="结算差异" prop="remaining_amount" show-overflow-tooltip />
<el-table-column label="添加人" prop="add_user_name" show-overflow-tooltip />
<el-table-column label="操作" width="160" fixed="right">
<template #default="{ row }">
<!-- <el-button v-perms="['project.project_subcontract_settlement/edit']" type="primary" link @click="handleEdit(row)">
编辑
</el-button> -->
<!-- <el-button v-perms="['project.project_subcontract_settlement/delete']" type="danger" link @click="handleDelete(row.id)">
删除
</el-button> -->
<el-button v-perms="['project.project_subcontract_settlement/detail']" link @click="handledetail(row)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
</div>
</template>
<script lang="ts" setup name="projectLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { subcontractsettlementLists, subcontractsettlementDelete, subcontractsettlementDetail } from '@/api/project_subcontract_settlement'
import { timeFormat } from '@/utils/util'
import { getAllProjectTypes } from '@/api/projecttype'
const protype = reactive([])
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
//
const showEdit = ref(false)
const showDtail = ref(false)
//
const queryParams = reactive({
settlement_code: ''
})
//
const selectData = ref<any[]>([])
//
const handleSelectionChange = (val: any[]) => {
selectData.value = val.map(({ id }) => id)
}
//
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: subcontractsettlementLists,
params: queryParams
})
//
const handleAdd = async () => {
showEdit.value = true
await nextTick()
editRef.value?.open('add')
}
//
const handleEdit = async (data: any) => {
console.log(data.id)
let res = await subcontractsettlementDetail({ 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 subcontractsettlementDelete({ id })
getLists()
}
const handledetail = async (data: any) => {
let res = await subcontractsettlementDetail({ id: data.id })
showDtail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists()
</script>

View File

@ -310,7 +310,7 @@ const setFormData = async (data: Record<any, any>) => {
Object.assign(formDataannex, arry1)
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
customer_name.value = data.custom.name
for (const key in formData) {

View File

@ -60,7 +60,7 @@
</el-table-column>
<el-table-column label="收款人" prop="receiver" show-overflow-tooltip />
<!-- <el-table-column label="开户银行" prop="remark" show-overflow-tooltip /> -->
<el-table-column label="开户银行" prop="deposit_bank" show-overflow-tooltip />
<el-table-column label="操作" width="150" fixed="right">
<template #default="{ row }">
<el-button v-perms="['recordsPayment.recordsPayment/edit']" type="primary" link @click="handleEdit(row)">

View File

@ -296,7 +296,7 @@ const setFormData = async (data: Record<any, any>) => {
}
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
// customer_name.value = data.custom.name
bill_sn.value = data.acceptance.bill_sn

View File

@ -13,30 +13,30 @@
</div>
<el-row>
<el-col :span="8">
<el-form-item label="项目名称" prop="project_id" @click="showDialog = true">
<el-form-item label="项目名称" prop="project_id" @click="showDialog = true" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-input v-model="project_name" clearable placeholder="请选择项目" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="项目编码" prop="project_id">
<el-form-item label="项目编码" prop="project_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="contract_no">
<el-form-item label="合同编号" prop="contract_no" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="formData.contract_no" clearable placeholder="请输入合同编号" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="合同名称" prop="contract_name">
<el-form-item label="合同名称" prop="contract_name" :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-form-item label="供应商名称" prop="supplier_id" @change="showDialog1 = true">
<el-form-item label="供应商名称" prop="supplier_id" @change="showDialog1 = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="supplier_name" readonly clearable placeholder="请选择供应商" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="供应商编码" prop="supplier_id">
<el-form-item label="供应商编码" prop="supplier_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="supplier_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
</el-col>
@ -47,7 +47,7 @@
<el-col :span="24">
<el-form-item label="合同类型" prop="contract_type">
<el-form-item label="合同类型" prop="contract_type" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-radio-group v-model="formData.contract_type" placeholder="请选择合同类型">
<el-radio v-for="(item, index) in dictData.contract_type" :key="index" :label="parseInt(item.value)">
{{ item.name }}
@ -55,7 +55,7 @@
</el-radio-group>
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="签订日期" prop="signing_date">
<el-form-item label="签订日期" prop="signing_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-date-picker class="flex-1 !flex" v-model="formData.signing_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择签订日期">
</el-date-picker>
</el-form-item>
@ -70,7 +70,7 @@
</el-radio-group>
</el-form-item> </el-col>
<el-col :span="24">
<el-form-item label="账期" prop="account_period">
<el-form-item label="账期" prop="account_period" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-radio-group v-model="formData.account_period" placeholder="请选择账期">
<el-radio v-for="(item, index) in dictData.account_period" :key="index" :label="parseInt(item.value)">
{{ item.name }}
@ -84,9 +84,16 @@
<el-input v-model="formData.amount" clearable placeholder="请输入合同金额" @input="amountinput" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="金额大写" prop="amount_daxie">
<el-form-item label="金额大写" prop="amount_daxie" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="formData.amount_daxie" clearable disabled placeholder="系统自动填写" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="税率" prop="tax_rate" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-select v-model="formData.tax_rate" placeholder="税率">
<el-option v-for="(item, index) in dictData.tax_rate" :key="index" :label="item.name" :value="parseInt(item.value)" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="不含税金额" prop="amount_excluding_tax">
@ -162,11 +169,6 @@
</template>
</el-table-column>
<el-table-column label="税率" prop="tax_rate">
<template #default="{ row }">
<el-input v-model="row.tax_rate" />
</template>
</el-table-column>
<el-table-column label="不含税金额" prop="amount_excluding_tax">
<template #default="{ row }">
@ -325,6 +327,7 @@ const formData = reactive({
pay_type: '',
account_period: '',
amount: '',
tax_rate: '',
amount_excluding_tax: '',
amount_daxie: '',
retention_money_rate: '',
@ -403,7 +406,7 @@ const setFormData = async (data: Record<any, any>) => {
}
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.split(',').map((item: any, index: any) => {

View File

@ -43,34 +43,39 @@
<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="project_name" show-overflow-tooltip />
<el-table-column label="流程步骤" prop="project_name" show-overflow-tooltip />
<el-table-column label="流程编号" prop="project_name" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
<el-table-column label="合同编号" prop="contract_no" show-overflow-tooltip />
<el-table-column label="合同名称" prop="contract_name" show-overflow-tooltip />
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
<el-table-column label="签订日期" prop="signing_date" show-overflow-tooltip />
<el-table-column label="合同类型" prop="contract_type">
<template #default="{ row }">
<dict-value :options="dictData.contract_type" :value="row.contract_type" />
</template>
</el-table-column>
<el-table-column label="签订日期" prop="signing_date" show-overflow-tooltip />
<el-table-column label="付款方式" prop="pay_type" show-overflow-tooltip />
<el-table-column label="账期" prop="account_period">
<template #default="{ row }">
<dict-value :options="dictData.account_period" :value="row.account_period" />
</template>
</el-table-column>
<el-table-column label="合同金额" prop="amount" show-overflow-tooltip />
<el-table-column label="金额大写" prop="amount_daxie" show-overflow-tooltip />
<el-table-column label="税率" prop="tax_rate">
<template #default="{ row }">
<dict-value :options="dictData.tax_rate" :value="row.tax_rate" />
</template>
</el-table-column>
<el-table-column label="调整金额" prop="" show-overflow-tooltip />
<el-table-column label="不含税金额" prop="amount_excluding_tax" show-overflow-tooltip />
<el-table-column label="质保金比例" prop="retention_money" show-overflow-tooltip />
<el-table-column label="质保金" prop="retention_money_rate" 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="" 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="操作" width="160" fixed="right">
<template #default="{ row }">
<el-button v-perms="['contract.subcontracting_contract/edit']" type="primary" link @click="handleEdit(row)">

View File

@ -278,7 +278,7 @@ const setFormData = async (data: Record<any, any>) => {
Object.assign(formDataannex, arry1)
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
if (data.negotiation_basis.length > 0) {

View File

@ -341,7 +341,7 @@ const setFormData = async (data: Record<any, any>) => {
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {

View File

@ -44,7 +44,7 @@
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="55" />
<el-table-column label="建档人" prop="project_id" show-overflow-tooltip />
<el-table-column label="建档人" prop="create_user" 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="brand_category" show-overflow-tooltip />

View File

@ -360,7 +360,7 @@ const setFormData = async (data: Record<any, any>) => {
}
if (data.dept_id) {
getlist1(data.dept_id)
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {