新增项目结算甲方 以及分包
This commit is contained in:
parent
3009ae3aa8
commit
72f9a4162e
@ -1,4 +0,0 @@
|
||||
|
||||
NODE_ENV = 'production'
|
||||
# Base API
|
||||
VITE_APP_BASE_URL='https://ceshi-engineering.lihaink.cn'
|
@ -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 });
|
||||
}
|
||||
|
@ -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 })
|
||||
}
|
||||
|
||||
|
27
src/api/project_settlement.ts
Normal file
27
src/api/project_settlement.ts
Normal 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 })
|
||||
}
|
||||
|
26
src/api/project_subcontract_settlement.ts
Normal file
26
src/api/project_subcontract_settlement.ts
Normal 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 })
|
||||
}
|
@ -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 />
|
||||
|
117
src/components/project_contract/index.vue
Normal file
117
src/components/project_contract/index.vue
Normal 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>
|
@ -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">
|
||||
|
@ -6,5 +6,5 @@ const config = {
|
||||
urlPrefix: "adminapi", //请求默认前缀
|
||||
timeout: 10 * 1000, //请求超时时长
|
||||
};
|
||||
|
||||
console.log(import.meta)
|
||||
export default config;
|
||||
|
@ -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: "",
|
||||
|
@ -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)">
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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,
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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>
|
||||
|
@ -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' }]">
|
||||
|
@ -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) {
|
||||
|
@ -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">
|
||||
|
@ -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>
|
||||
|
@ -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({
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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')
|
||||
|
@ -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')
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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)">
|
||||
|
@ -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')
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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>>()
|
||||
// 是否显示编辑框
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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)">
|
||||
|
@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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 />
|
||||
|
||||
|
175
src/views/project_settlement/detail.vue
Normal file
175
src/views/project_settlement/detail.vue
Normal 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>
|
@ -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')
|
||||
}
|
147
src/views/project_settlement/index.vue
Normal file
147
src/views/project_settlement/index.vue
Normal 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>
|
||||
|
@ -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>
|
||||
|
@ -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">
|
279
src/views/project_subcontract_settlement/edit.vue
Normal file
279
src/views/project_subcontract_settlement/edit.vue
Normal 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>
|
143
src/views/project_subcontract_settlement/index.vue
Normal file
143
src/views/project_subcontract_settlement/index.vue
Normal 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>
|
||||
|
@ -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) {
|
||||
|
@ -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)">
|
||||
|
@ -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
|
||||
|
@ -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) => {
|
||||
|
@ -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)">
|
||||
|
@ -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) {
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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 />
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user