add
This commit is contained in:
parent
6d9813e77e
commit
685d39ce11
26
src/api/marketing_branch_filing.ts
Normal file
26
src/api/marketing_branch_filing.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 市场经营--分支机构备案列表
|
||||||
|
export function apiMarketingBranchFilingLists(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_branch_filing/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加市场经营--分支机构备案
|
||||||
|
export function apiMarketingBranchFilingAdd(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_branch_filing/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑市场经营--分支机构备案
|
||||||
|
export function apiMarketingBranchFilingEdit(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_branch_filing/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除市场经营--分支机构备案
|
||||||
|
export function apiMarketingBranchFilingDelete(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_branch_filing/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 市场经营--分支机构备案详情
|
||||||
|
export function apiMarketingBranchFilingDetail(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_branch_filing/detail', params })
|
||||||
|
}
|
26
src/api/marketing_contract.ts
Normal file
26
src/api/marketing_contract.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 市场经营--合同信息列表
|
||||||
|
export function apiMarketingContractLists(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_contract/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加市场经营--合同信息
|
||||||
|
export function apiMarketingContractAdd(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_contract/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑市场经营--合同信息
|
||||||
|
export function apiMarketingContractEdit(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_contract/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除市场经营--合同信息
|
||||||
|
export function apiMarketingContractDelete(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_contract/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 市场经营--合同信息详情
|
||||||
|
export function apiMarketingContractDetail(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_contract/detail', params })
|
||||||
|
}
|
35
src/api/marketing_framework_agreement.ts
Normal file
35
src/api/marketing_framework_agreement.ts
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 市场经营--项目备案明细列表
|
||||||
|
export function apimketingFrameworkAgreementLists(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_framework_agreement/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加市场经营--项目备案明细
|
||||||
|
export function apimketingFrameworkAgreementAdd(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_framework_agreement/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑市场经营--项目备案明细
|
||||||
|
export function apimketingFrameworkAgreementEdit(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_framework_agreement/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除市场经营--项目备案明细
|
||||||
|
export function apimketingFrameworkAgreementDelete(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_framework_agreement/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 市场经营--项目备案明细详情
|
||||||
|
export function apimketingFrameworkAgreementDetail(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_framework_agreement/detail', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 市场经营--项目备案明细列表
|
||||||
|
export function apimarketingFrameworkAgreementFlows(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_framework_agreement/flows', params })
|
||||||
|
}
|
||||||
|
// 市场经营--项目备案明细列表
|
||||||
|
export function apimarketingFrameworkAgreementApprove(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_framework_agreement/approve', params })
|
||||||
|
}
|
12
src/api/marketing_handover_contract.ts
Normal file
12
src/api/marketing_handover_contract.ts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 市场经营--项目备案明细列表
|
||||||
|
export function apiMarketingHandoverContractLists(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_handover_contract/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加市场经营--项目备案明细
|
||||||
|
export function apiMarketingHandoverContractHandover(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_handover_contract/handover', params })
|
||||||
|
}
|
||||||
|
|
26
src/api/marketing_project_filing.ts
Normal file
26
src/api/marketing_project_filing.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 市场经营--项目备案列表
|
||||||
|
export function apiMarketingProjectFilingLists(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_project_filing/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加市场经营--项目备案
|
||||||
|
export function apiMarketingProjectFilingAdd(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_project_filing/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑市场经营--项目备案
|
||||||
|
export function apiMarketingProjectFilingEdit(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_project_filing/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除市场经营--项目备案
|
||||||
|
export function apiMarketingProjectFilingDelete(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_project_filing/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 市场经营--项目备案详情
|
||||||
|
export function apiMarketingProjectFilingDetail(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_project_filing/detail', params })
|
||||||
|
}
|
26
src/api/marketing_project_filing_detail.ts
Normal file
26
src/api/marketing_project_filing_detail.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 市场经营--项目备案明细列表
|
||||||
|
export function apiMarketingProjectFilingDetailLists(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_project_filing_detail/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加市场经营--项目备案明细
|
||||||
|
export function apiMarketingProjectFilingDetailAdd(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_project_filing_detail/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑市场经营--项目备案明细
|
||||||
|
export function apiMarketingProjectFilingDetailEdit(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_project_filing_detail/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除市场经营--项目备案明细
|
||||||
|
export function apiMarketingProjectFilingDetailDelete(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_project_filing_detail/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 市场经营--项目备案明细详情
|
||||||
|
export function apiMarketingProjectFilingDetailDetail(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_project_filing_detail/detail', params })
|
||||||
|
}
|
26
src/api/marketing_supplementary_agreement.ts
Normal file
26
src/api/marketing_supplementary_agreement.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 市场经营--项目备案列表
|
||||||
|
export function apiMarketingSupplementaryAgreementLists(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_supplementary_agreement/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加市场经营--项目备案
|
||||||
|
export function apiMarketingSupplementaryAgreementAdd(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_supplementary_agreement/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑市场经营--项目备案
|
||||||
|
export function apiMarketingSupplementaryAgreementEdit(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_supplementary_agreement/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除市场经营--项目备案
|
||||||
|
export function apiMarketingSupplementaryAgreementDelete(params: any) {
|
||||||
|
return request.post({ url: '/marketing.marketing_supplementary_agreement/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 市场经营--项目备案详情
|
||||||
|
export function apiMarketingSupplementaryAgreementDetail(params: any) {
|
||||||
|
return request.get({ url: '/marketing.marketing_supplementary_agreement/detail', params })
|
||||||
|
}
|
@ -7,7 +7,7 @@
|
|||||||
<el-table-column label="操作">
|
<el-table-column label="操作">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-form-item label-width="0">
|
<el-form-item label-width="0">
|
||||||
<div class="!flex justify-center items-center w-[100%]">
|
<div class="my-0 mx-auto">
|
||||||
<el-button @click="handleAdd">+</el-button>
|
<el-button @click="handleAdd">+</el-button>
|
||||||
<el-button @click="handleDelete(row)">-</el-button>
|
<el-button @click="handleDelete(row)">-</el-button>
|
||||||
</div>
|
</div>
|
||||||
@ -20,38 +20,51 @@
|
|||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<!-- 下拉框 -->
|
<!-- 下拉框 -->
|
||||||
<el-form-item v-if="item.select" label-width="0">
|
<el-form-item v-if="item.select" label-width="0">
|
||||||
<el-select v-model="row[item.value]">
|
<div class="my-0 mx-auto">
|
||||||
<el-option v-for="items in (Array.isArray(item.select) ? item.select : dictData[item.select])"
|
<el-select v-model="row[item.value]">
|
||||||
:label="items.name" :value="items.value"></el-option>
|
<el-option
|
||||||
</el-select>
|
v-for="items in (Array.isArray(item.select) ? item.select : dictData[item.select])"
|
||||||
|
:label="items.name" :value="items.value"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 时间框 -->
|
<!-- 时间框 -->
|
||||||
<el-form-item v-else-if="item.date" :prop="`${item.check[0]}[${$index}].${item.value}`" :rules="item?.check ? {
|
<el-form-item v-else-if="item.date && !item.check" label-width=" 0">
|
||||||
validator: item.check[1],
|
|
||||||
trigger: ['blur'],
|
|
||||||
} : ''" label-width="0">
|
|
||||||
<el-date-picker class="flex-1 !flex" v-model="row[item.value]" clearable value-format="YYYY-MM-DD"
|
<el-date-picker class="flex-1 !flex" v-model="row[item.value]" clearable value-format="YYYY-MM-DD"
|
||||||
placeholder="请选择日期">
|
placeholder="请选择日期">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 带校验的时间框 -->
|
||||||
|
<el-form-item v-else-if="item.date && item.check" :prop="`${item.check[0]}[${$index}].${item.value}`"
|
||||||
|
:rules="item?.check ? {
|
||||||
|
validator: item.check[1],
|
||||||
|
trigger: ['blur'],
|
||||||
|
} : ''" label-width="0">
|
||||||
|
<el-date-picker class="flex-1 !flex" v-model="row[item.value]" clearable value-format="YYYY-MM-DD"
|
||||||
|
placeholder="请选择日期">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 校验单位不能为数字的文本输入框 -->
|
||||||
<el-form-item v-else-if="item.label.includes('单位')" :prop="item.check ? item.value : ''"
|
<el-form-item v-else-if="item.label.includes('单位')" :prop="item.check ? item.value : ''"
|
||||||
label-width="0">
|
label-width="0">
|
||||||
<el-input v-model="row[item.value]"
|
<el-input v-model="row[item.value]"
|
||||||
@input="row[item.value] = row[item.value].replace(/\d+/g, '')" />
|
@input="row[item.value] = row[item.value].replace(/\d+/g, '')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item v-else-if="item.check" label-width="0" :prop="`${item.check[0]}[${$index}].${item.value}`"
|
<!-- 自定义校验的文本输入框 -->
|
||||||
:rules="item?.check ? {
|
<el-form-item v-else-if="item.check && ($index >= 0)" label-width="0"
|
||||||
|
:prop="`${item.check[0]}[${$index}].${item.value}`" :rules="item?.check ? {
|
||||||
validator: item.check[1],
|
validator: item.check[1],
|
||||||
trigger: ['blur'],
|
trigger: ['blur'],
|
||||||
} : ''">
|
} : ''">
|
||||||
<el-input v-model="row[item.value]" :type="item.type == 'number' ? 'number' : 'text'" />
|
<el-input v-model="row[item.value]" :type="item.type == 'number' ? 'number' : 'text'" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item v-else label-width="0">
|
<!-- 普通文本输入框(type为number为数字输入框) -->
|
||||||
|
<el-form-item label-width="0" v-else>
|
||||||
<el-input v-model="row[item.value]" :type="item.type == 'number' ? 'number' : 'text'" />
|
<el-input v-model="row[item.value]" :type="item.type == 'number' ? 'number' : 'text'" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
@ -97,7 +110,7 @@ const getInitialData = () => {
|
|||||||
acc[curr] = '';
|
acc[curr] = '';
|
||||||
return acc;
|
return acc;
|
||||||
}, {});
|
}, {});
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
@ -113,4 +126,5 @@ const handleDelete = async (row: any) => {
|
|||||||
props.formData.splice(index, 1);
|
props.formData.splice(index, 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
@ -22,9 +22,8 @@ export function isEmail(data: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// input框校验
|
// input框校验
|
||||||
//电话
|
// 电话
|
||||||
export function checkPhone(rules: any, value: any, callback: any) {
|
export function checkPhone(rules: any, value: any, callback: any) {
|
||||||
|
|
||||||
/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(
|
/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(
|
||||||
value
|
value
|
||||||
)
|
)
|
||||||
@ -40,8 +39,9 @@ export function checkEmail(rules: any, value: any, callback: any) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//idcard
|
//idcard
|
||||||
export function checkIdcard(rules: any, value: any, callback: any) {
|
export function checkIdCard(rules: any, value: any, callback: any) {
|
||||||
/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)
|
/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)
|
||||||
? callback()
|
? callback()
|
||||||
: callback(new Error("请输入正确的身份证号码"));
|
: callback(new Error("请输入正确的身份证号码"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,8 +140,8 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
</el-col> <el-col :span="8">
|
</el-col> <el-col :span="8">
|
||||||
<el-form-item label="账号" prop="bank_accnout">
|
<el-form-item label="银行账号" prop="bank_accnout">
|
||||||
<el-input v-model="formData.bank_accnout" clearable placeholder="请输入开票公司名称" type="number" />
|
<el-input v-model="formData.bank_accnout" clearable placeholder="请输入银行账号" type="number" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
</el-col> <el-col :span="8">
|
</el-col> <el-col :span="8">
|
||||||
|
@ -40,7 +40,10 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="预计退还时间" prop="refund_date">
|
<el-form-item label="预计退还时间" prop="refund_date" :rules="{
|
||||||
|
validator: chekcDate,
|
||||||
|
trigger: ['blur']
|
||||||
|
}">
|
||||||
<el-date-picker class="flex-1 !flex" v-model="formData.refund_date" clearable type="date"
|
<el-date-picker class="flex-1 !flex" v-model="formData.refund_date" clearable type="date"
|
||||||
value-format="YYYY-MM-DD" placeholder="选择日期">
|
value-format="YYYY-MM-DD" placeholder="选择日期">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
@ -184,6 +187,15 @@ const popupTitle = computed(() => {
|
|||||||
return mode.value == 'edit' ? '编辑投标保证金表' : '新增投标保证金表'
|
return mode.value == 'edit' ? '编辑投标保证金表' : '新增投标保证金表'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const chekcDate = (rule: any, value: any, callback: any) => {
|
||||||
|
if (new Date(formData.refund_date) < new Date(bidding_time.value)) {
|
||||||
|
callback(new Error('预计退还时间不能早于投标时间'))
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 表单数据
|
// 表单数据
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
id: '',
|
id: '',
|
||||||
|
@ -133,13 +133,13 @@
|
|||||||
|
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="收款开户银行" prop="payee_bank"
|
<el-form-item label="银行名称" prop="payee_bank"
|
||||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||||
<el-input v-model="formData.payee_bank" clearable placeholder="请输入开户银行" />
|
<el-input v-model="formData.payee_bank" clearable placeholder="请输入开户银行" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="收款开户银行名称" prop="payee_account_name"
|
<el-form-item label="银行支行名称" prop="payee_account_name"
|
||||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||||
<el-input v-model="formData.payee_account_name" clearable placeholder="请输入收款开户银行名称" />
|
<el-input v-model="formData.payee_account_name" clearable placeholder="请输入收款开户银行名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -220,12 +220,12 @@ const customEvent1 = (e: any) => {
|
|||||||
|
|
||||||
//获取税率Name
|
//获取税率Name
|
||||||
const getTaxValue = (value) => {
|
const getTaxValue = (value) => {
|
||||||
let i = props.dictData.tax_rate.findIndex((item) => item.value == value)
|
let i = dictData.tax_rate.findIndex((item) => item.value == value)
|
||||||
return (props.dictData.tax_rate[i]?.name / 100) || 0
|
return (dictData.tax_rate[i]?.name / 100) || 0
|
||||||
}
|
}
|
||||||
|
|
||||||
//监听输入
|
//监听输入
|
||||||
const amountinput = (e) => {
|
const amountinput = () => {
|
||||||
formData.tax = (formData.invoice_amount * getTaxValue(formData.invoice_tax_rate)).toFixed(2)
|
formData.tax = (formData.invoice_amount * getTaxValue(formData.invoice_tax_rate)).toFixed(2)
|
||||||
formData.amount_excluding_tax = (formData.invoice_amount - formData.tax).toFixed(2)
|
formData.amount_excluding_tax = (formData.invoice_amount - formData.tax).toFixed(2)
|
||||||
formData.invoice_amount_daxie = toChinesNum(formData.invoice_amount)
|
formData.invoice_amount_daxie = toChinesNum(formData.invoice_amount)
|
||||||
@ -281,7 +281,9 @@ const setFormData = async (data: Record<any, any>) => {
|
|||||||
contract_name.value = data.contract_name
|
contract_name.value = data.contract_name
|
||||||
project_name.value = data.project_name
|
project_name.value = data.project_name
|
||||||
project_code.value = data.project_code
|
project_code.value = data.project_code
|
||||||
amountinput()
|
setTimeout(() => {
|
||||||
|
amountinput()
|
||||||
|
}, 700)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -308,9 +310,7 @@ const handleSubmit = async () => {
|
|||||||
const open = (type = 'add') => {
|
const open = (type = 'add') => {
|
||||||
mode.value = type
|
mode.value = type
|
||||||
popupRef.value?.open()
|
popupRef.value?.open()
|
||||||
|
|
||||||
getAllProjectTypes().then((res) => {
|
getAllProjectTypes().then((res) => {
|
||||||
|
|
||||||
protype.splice('', protype.length, ...res);
|
protype.splice('', protype.length, ...res);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -164,12 +164,6 @@ const handledetail = async (data: any) => {
|
|||||||
|
|
||||||
const table = ref('')
|
const table = ref('')
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
table.value.doLayout()
|
|
||||||
|
|
||||||
console.log(table.value)
|
|
||||||
console.log("出发了")
|
|
||||||
}, 3000);
|
|
||||||
|
|
||||||
|
|
||||||
if (route.query?.listId) {
|
if (route.query?.listId) {
|
||||||
|
@ -239,7 +239,7 @@ const amountinput = (e) => {
|
|||||||
}
|
}
|
||||||
// 弹窗标题
|
// 弹窗标题
|
||||||
const popupTitle = computed(() => {
|
const popupTitle = computed(() => {
|
||||||
return mode.value == 'edit' ? '编辑退款纪录表' : '新增退款纪录表'
|
return mode.value == 'edit' ? '编辑退款记录表' : '新增退款记录表'
|
||||||
})
|
})
|
||||||
|
|
||||||
// 表单数据
|
// 表单数据
|
||||||
|
@ -93,6 +93,16 @@ const customEvent = (e: any) => {
|
|||||||
formData.project_name = e.project_name
|
formData.project_name = e.project_name
|
||||||
showDialog.value = false
|
showDialog.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const chekcDate = (rule: any, value: any, callback: any) => {
|
||||||
|
if (new Date(formData.accept_date) < new Date(formData.send_date)) {
|
||||||
|
callback(new Error('收文日期不能早于发文日期开始时间'))
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 表单验证
|
// 表单验证
|
||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
project_id: [{
|
project_id: [{
|
||||||
@ -124,7 +134,13 @@ const formRules = reactive<any>({
|
|||||||
required: true,
|
required: true,
|
||||||
message: '请输入收文日期',
|
message: '请输入收文日期',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
},
|
||||||
|
{
|
||||||
|
validator: chekcDate,
|
||||||
|
trigger: ['blur']
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
read_user: [{
|
read_user: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入传阅人',
|
message: '请输入传阅人',
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="edit-popup">
|
<div class="edit-popup">
|
||||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
<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 ref="formRef" :model="formData" label-width="150px" :rules="formRules">
|
||||||
<el-form-item label="项目名称" prop="project_name">
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
|
||||||
@click="showDialog = true" />
|
@click="showDialog = true" />
|
||||||
@ -11,7 +11,7 @@
|
|||||||
value-format="YYYY-MM" placeholder="请选择日期">
|
value-format="YYYY-MM" placeholder="请选择日期">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="累计工程进度" prop="progress">
|
<el-form-item label="累计工程进度(%)" prop="progress">
|
||||||
<el-input v-model="formData.progress" clearable placeholder="请输入累计工程进度" type="number" />
|
<el-input v-model="formData.progress" clearable placeholder="请输入累计工程进度" type="number" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="工程状态" prop="status">
|
<el-form-item label="工程状态" prop="status">
|
||||||
@ -31,7 +31,6 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="附件" prop="annex">
|
<el-form-item label="附件" prop="annex">
|
||||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
@ -66,14 +65,6 @@ const popupTitle = computed(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
const handleAvatarSuccess_four = (response: any) => {
|
|
||||||
formData.annex ||= []
|
|
||||||
// @ts-ignore
|
|
||||||
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
|
||||||
};
|
|
||||||
|
|
||||||
// 删除上传的文件
|
|
||||||
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
|
||||||
|
|
||||||
// 表单数据
|
// 表单数据
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
|
@ -263,8 +263,13 @@ const chekcDate1 = (rule: any, value: any, callback: any) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const chekcDate2 = (rule: any, value: any, callback: any) => {
|
||||||
|
if (new Date(formData.initiation_date) < new Date(formData.actual_start_date)) {
|
||||||
|
callback(new Error('立项日期不能早于实际开工日期'))
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 表单验证
|
// 表单验证
|
||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
@ -380,6 +385,10 @@ const formRules = reactive<any>({
|
|||||||
required: true,
|
required: true,
|
||||||
message: '请输入立项日期',
|
message: '请输入立项日期',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: chekcDate2,
|
||||||
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
project_leader: [{
|
project_leader: [{
|
||||||
required: true,
|
required: true,
|
||||||
|
325
src/views/marketing_branch_filing/edit.vue
Normal file
325
src/views/marketing_branch_filing/edit.vue
Normal file
@ -0,0 +1,325 @@
|
|||||||
|
<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="90px" :rules="formRules">
|
||||||
|
<el-form-item label="机构名称" prop="org_name">
|
||||||
|
<el-input v-model="formData.org_name" clearable placeholder="请输入机构名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备案类型" prop="filing_type">
|
||||||
|
<el-input v-model="formData.filing_type" clearable placeholder="请输入备案类型" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="法定代表人" prop="fddbr">
|
||||||
|
<el-input v-model="formData.fddbr" clearable placeholder="请输入法定代表人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系电话" prop="telephone">
|
||||||
|
<el-input v-model="formData.telephone" clearable placeholder="请输入联系电话" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="营业执照编号" prop="yyzzbh">
|
||||||
|
<el-input v-model="formData.yyzzbh" clearable placeholder="请输入营业执照编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="资质证书编号" prop="zzzsbh">
|
||||||
|
<el-input v-model="formData.zzzsbh" clearable placeholder="请输入资质证书编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="组织机构代码证" prop="zzjgdmz">
|
||||||
|
<el-input v-model="formData.zzjgdmz" clearable placeholder="请输入组织机构代码证" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="总公司联系电话" prop="zgslxdh">
|
||||||
|
<el-input v-model="formData.zgslxdh" clearable placeholder="请输入总公司联系电话" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="主项监理范围" prop="zyxjlfw">
|
||||||
|
<el-input v-model="formData.zyxjlfw" clearable placeholder="请输入主项监理范围" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="增项监理范围" prop="zjxjlfw">
|
||||||
|
<el-input v-model="formData.zjxjlfw" clearable placeholder="请输入增项监理范围" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="本地办公地址" prop="bdbgdz">
|
||||||
|
<el-input v-model="formData.bdbgdz" clearable placeholder="请输入本地办公地址" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="本地公司联系电话" prop="bdgslxdh">
|
||||||
|
<el-input v-model="formData.bdgslxdh" clearable placeholder="请输入本地公司联系电话" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="人员信息" prop="ryxx">
|
||||||
|
<el-input v-model="formData.ryxx" clearable placeholder="请输入人员信息" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="机构注册地址" prop="jgzcdz">
|
||||||
|
<el-input v-model="formData.jgzcdz" clearable placeholder="请输入机构注册地址" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备案开始期" prop="baksq">
|
||||||
|
<el-input v-model="formData.baksq" clearable placeholder="请输入备案开始期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备案结束期" prop="bajsq">
|
||||||
|
<el-input v-model="formData.bajsq" clearable placeholder="请输入备案结束期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备案时间" prop="basj">
|
||||||
|
<el-input v-model="formData.basj" clearable placeholder="请输入备案时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="经办人" prop="jbr">
|
||||||
|
<el-input v-model="formData.jbr" clearable placeholder="请输入经办人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="年检时间" prop="njsj">
|
||||||
|
<el-input v-model="formData.njsj" clearable placeholder="请输入年检时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="负责人" prop="fzr">
|
||||||
|
<el-input v-model="formData.fzr" clearable placeholder="请输入负责人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="负责人手机" prop="fzrsj">
|
||||||
|
<el-input v-model="formData.fzrsj" clearable placeholder="请输入负责人手机" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="技术负责人" prop="jsfzr">
|
||||||
|
<el-input v-model="formData.jsfzr" clearable placeholder="请输入技术负责人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="技术负责人手机" prop="jsfzrsj">
|
||||||
|
<el-input v-model="formData.jsfzrsj" clearable placeholder="请输入技术负责人手机" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingBranchFilingEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiMarketingBranchFilingAdd, apiMarketingBranchFilingEdit, apiMarketingBranchFilingDetail } from '@/api/marketing_branch_filing'
|
||||||
|
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 mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑市场经营--分支机构备案' : '新增市场经营--分支机构备案'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
org_name: '',
|
||||||
|
filing_type: '',
|
||||||
|
fddbr: '',
|
||||||
|
telephone: '',
|
||||||
|
yyzzbh: '',
|
||||||
|
zzzsbh: '',
|
||||||
|
zzjgdmz: '',
|
||||||
|
zgslxdh: '',
|
||||||
|
zyxjlfw: '',
|
||||||
|
zjxjlfw: '',
|
||||||
|
bdbgdz: '',
|
||||||
|
bdgslxdh: '',
|
||||||
|
ryxx: '',
|
||||||
|
jgzcdz: '',
|
||||||
|
baksq: '',
|
||||||
|
bajsq: '',
|
||||||
|
basj: '',
|
||||||
|
jbr: '',
|
||||||
|
njsj: '',
|
||||||
|
fzr: '',
|
||||||
|
fzrsj: '',
|
||||||
|
jsfzr: '',
|
||||||
|
jsfzrsj: '',
|
||||||
|
remark: '',
|
||||||
|
annex: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
org_name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入机构名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
filing_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备案类型',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
fddbr: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入法定代表人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
telephone: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入联系电话',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
yyzzbh: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入营业执照编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
zzzsbh: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入资质证书编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
zzjgdmz: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入组织机构代码证',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
zgslxdh: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入总公司联系电话',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
zyxjlfw: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入主项监理范围',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
zjxjlfw: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入增项监理范围',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
bdbgdz: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入本地办公地址',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
bdgslxdh: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入本地公司联系电话',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
ryxx: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入人员信息',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
jgzcdz: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入机构注册地址',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
baksq: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备案开始期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
bajsq: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备案结束期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
basj: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备案时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
jbr: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入经办人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
njsj: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入年检时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
fzr: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入负责人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
fzrsj: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入负责人手机',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
jsfzr: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入技术负责人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
jsfzrsj: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入技术负责人手机',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
annex: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiMarketingBranchFilingDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiMarketingBranchFilingEdit(data)
|
||||||
|
: await apiMarketingBranchFilingAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script>
|
146
src/views/marketing_branch_filing/index.vue
Normal file
146
src/views/marketing_branch_filing/index.vue
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form
|
||||||
|
class="mb-[-16px]"
|
||||||
|
:model="queryParams"
|
||||||
|
inline
|
||||||
|
>
|
||||||
|
<el-form-item label="机构名称" prop="org_name">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.org_name" clearable placeholder="请输入机构名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="法定代表人" prop="fddbr">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.fddbr" clearable placeholder="请输入法定代表人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系电话" prop="telephone">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.telephone" clearable placeholder="请输入联系电话" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="机构注册地址" prop="jgzcdz">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.jgzcdz" 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="['marketing.marketing_branch_filing/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-perms="['marketing.marketing_branch_filing/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="机构名称" prop="org_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="法定代表人" prop="fddbr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="联系电话" prop="telephone" show-overflow-tooltip />
|
||||||
|
<el-table-column label="机构注册地址" prop="jgzcdz" show-overflow-tooltip />
|
||||||
|
<el-table-column label="备案开始期" prop="baksq" show-overflow-tooltip />
|
||||||
|
<el-table-column label="备案结束期" prop="bajsq" show-overflow-tooltip />
|
||||||
|
<el-table-column label="经办人" prop="jbr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="年检时间" prop="njsj" show-overflow-tooltip />
|
||||||
|
<el-table-column label="负责人" prop="fzr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="负责人手机" prop="fzrsj" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button
|
||||||
|
v-perms="['marketing.marketing_branch_filing/edit']"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
@click="handleEdit(row)"
|
||||||
|
>
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-perms="['marketing.marketing_branch_filing/delete']"
|
||||||
|
type="danger"
|
||||||
|
link
|
||||||
|
@click="handleDelete(row.id)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingBranchFilingLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiMarketingBranchFilingLists, apiMarketingBranchFilingDelete } from '@/api/marketing_branch_filing'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
org_name: '',
|
||||||
|
fddbr: '',
|
||||||
|
telephone: '',
|
||||||
|
jgzcdz: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiMarketingBranchFilingLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiMarketingBranchFilingDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
475
src/views/marketing_contract/edit.vue
Normal file
475
src/views/marketing_contract/edit.vue
Normal file
@ -0,0 +1,475 @@
|
|||||||
|
<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="90px" :rules="formRules">
|
||||||
|
<el-form-item label="关联主合同id" prop="related_contract_id">
|
||||||
|
<el-input v-model="formData.related_contract_id" clearable placeholder="请输入关联主合同id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同类型 0-主合同 1-框架协议 2-补充协议" prop="contract_type">
|
||||||
|
<el-input v-model="formData.contract_type" clearable placeholder="请输入合同类型 0-主合同 1-框架协议 2-补充协议" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同名称" prop="contract_name">
|
||||||
|
<el-input v-model="formData.contract_name" clearable placeholder="请输入合同名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同编号" prop="contract_code">
|
||||||
|
<el-input v-model="formData.contract_code" clearable placeholder="请输入合同编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="甲方签约单位" prop="part_a">
|
||||||
|
<el-input v-model="formData.part_a" clearable placeholder="请输入甲方签约单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系人" prop="part_a_contact">
|
||||||
|
<el-input v-model="formData.part_a_contact" clearable placeholder="请输入联系人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业主地址" prop="part_a_address">
|
||||||
|
<el-input v-model="formData.part_a_address" clearable placeholder="请输入业主地址" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="乙方签约单位" prop="part_b">
|
||||||
|
<el-input v-model="formData.part_b" clearable placeholder="请输入乙方签约单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="乙方签约人" prop="part_b_signatory">
|
||||||
|
<el-input v-model="formData.part_b_signatory" clearable placeholder="请输入乙方签约人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业务性质" prop="business_nature">
|
||||||
|
<el-input v-model="formData.business_nature" clearable placeholder="请输入业务性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="行业性质" prop="industry_nature">
|
||||||
|
<el-input v-model="formData.industry_nature" clearable placeholder="请输入行业性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="资金来源" prop="fund_sources">
|
||||||
|
<el-input v-model="formData.fund_sources" clearable placeholder="请输入资金来源" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="建设区域" prop="const_area">
|
||||||
|
<el-input v-model="formData.const_area" clearable placeholder="请输入建设区域" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="协议性质" prop="agreement_nature">
|
||||||
|
<el-input v-model="formData.agreement_nature" clearable placeholder="请输入协议性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="工程总投资" prop="project_money">
|
||||||
|
<el-input v-model="formData.project_money" clearable placeholder="请输入工程总投资" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="工程规模及概况" prop="project_scale">
|
||||||
|
<el-input v-model="formData.project_scale" clearable placeholder="请输入工程规模及概况" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订金额" prop="signed_amount">
|
||||||
|
<el-input v-model="formData.signed_amount" clearable placeholder="请输入签订金额" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同签订费率" prop="signed_rate">
|
||||||
|
<el-input v-model="formData.signed_rate" clearable placeholder="请输入合同签订费率" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同服务工期" prop="service_duration">
|
||||||
|
<el-input v-model="formData.service_duration" clearable placeholder="请输入合同服务工期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划开始日期" prop="start_date">
|
||||||
|
<el-input v-model="formData.start_date" clearable placeholder="请输入计划开始日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划结束日期" prop="end_date">
|
||||||
|
<el-input v-model="formData.end_date" clearable placeholder="请输入计划结束日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="履约金" prop="performance_money">
|
||||||
|
<el-input v-model="formData.performance_money" clearable placeholder="请输入履约金" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="履约金到期时间" prop="performance_money_expiration_time">
|
||||||
|
<el-input v-model="formData.performance_money_expiration_time" clearable placeholder="请输入履约金到期时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同付款方式" prop="payment_method">
|
||||||
|
<el-input v-model="formData.payment_method" clearable placeholder="请输入合同付款方式" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同主要内容" prop="content">
|
||||||
|
<el-input v-model="formData.content" clearable placeholder="请输入合同主要内容" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订部门" prop="signed_dept">
|
||||||
|
<el-input v-model="formData.signed_dept" clearable placeholder="请输入签订部门" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订负责人" prop="signed_head">
|
||||||
|
<el-input v-model="formData.signed_head" clearable placeholder="请输入签订负责人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="监管部门" prop="supervise_dept">
|
||||||
|
<el-input v-model="formData.supervise_dept" clearable placeholder="请输入监管部门" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目总监/经理" prop="project_manager">
|
||||||
|
<el-input v-model="formData.project_manager" clearable placeholder="请输入项目总监/经理" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="实施方式" prop="implement_method">
|
||||||
|
<el-input v-model="formData.implement_method" clearable placeholder="请输入实施方式" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章名称" prop="seal_name">
|
||||||
|
<el-input v-model="formData.seal_name" clearable placeholder="请输入盖章名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否限制" prop="is_limit">
|
||||||
|
<el-input v-model="formData.is_limit" clearable placeholder="请输入是否限制" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="限制次数" prop="limit_num">
|
||||||
|
<el-input v-model="formData.limit_num" clearable placeholder="请输入限制次数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文件类型" prop="file_type">
|
||||||
|
<el-input v-model="formData.file_type" clearable placeholder="请输入文件类型" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章份数" prop="seal_num">
|
||||||
|
<el-input v-model="formData.seal_num" clearable placeholder="请输入盖章份数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章人" prop="seal_user">
|
||||||
|
<el-input v-model="formData.seal_user" clearable placeholder="请输入盖章人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="骑缝盖章" prop="plance_seal">
|
||||||
|
<el-input v-model="formData.plance_seal" clearable placeholder="请输入骑缝盖章" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="发出日期" prop="send_date">
|
||||||
|
<el-input v-model="formData.send_date" clearable placeholder="请输入发出日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="邮寄编号" prop="mailing_number">
|
||||||
|
<el-input v-model="formData.mailing_number" clearable placeholder="请输入邮寄编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="评审状态 0-待移交 1-已移交" prop="review_status">
|
||||||
|
<el-input v-model="formData.review_status" clearable placeholder="请输入评审状态 0-待移交 1-已移交" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="立项状态 0-待立项 1-已立项" prop="status">
|
||||||
|
<el-input v-model="formData.status" clearable placeholder="请输入立项状态 0-待立项 1-已立项" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="录入人" prop="create_user">
|
||||||
|
<el-input v-model="formData.create_user" clearable placeholder="请输入录入人" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingContractEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiMarketingContractAdd, apiMarketingContractEdit, apiMarketingContractDetail } from '@/api/marketing_contract'
|
||||||
|
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 mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑市场经营--合同信息' : '新增市场经营--合同信息'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
related_contract_id: '',
|
||||||
|
contract_type: '',
|
||||||
|
contract_name: '',
|
||||||
|
contract_code: '',
|
||||||
|
part_a: '',
|
||||||
|
part_a_contact: '',
|
||||||
|
part_a_address: '',
|
||||||
|
part_b: '',
|
||||||
|
part_b_signatory: '',
|
||||||
|
business_nature: '',
|
||||||
|
industry_nature: '',
|
||||||
|
fund_sources: '',
|
||||||
|
const_area: '',
|
||||||
|
agreement_nature: '',
|
||||||
|
project_money: '',
|
||||||
|
project_scale: '',
|
||||||
|
signed_amount: '',
|
||||||
|
signed_rate: '',
|
||||||
|
service_duration: '',
|
||||||
|
start_date: '',
|
||||||
|
end_date: '',
|
||||||
|
performance_money: '',
|
||||||
|
performance_money_expiration_time: '',
|
||||||
|
payment_method: '',
|
||||||
|
content: '',
|
||||||
|
annex: '',
|
||||||
|
signed_dept: '',
|
||||||
|
signed_head: '',
|
||||||
|
supervise_dept: '',
|
||||||
|
project_manager: '',
|
||||||
|
implement_method: '',
|
||||||
|
seal_name: '',
|
||||||
|
is_limit: '',
|
||||||
|
limit_num: '',
|
||||||
|
file_type: '',
|
||||||
|
seal_num: '',
|
||||||
|
seal_user: '',
|
||||||
|
plance_seal: '',
|
||||||
|
send_date: '',
|
||||||
|
mailing_number: '',
|
||||||
|
review_status: '',
|
||||||
|
status: '',
|
||||||
|
create_user: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
related_contract_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入关联主合同id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同类型 0-主合同 1-框架协议 2-补充协议',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_code: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入甲方签约单位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a_contact: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入联系人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a_address: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入业主地址',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_b: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入乙方签约单位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_b_signatory: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入乙方签约人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
business_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入业务性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
industry_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入行业性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
fund_sources: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入资金来源',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
const_area: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入建设区域',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
agreement_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入协议性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_money: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入工程总投资',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_scale: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入工程规模及概况',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_amount: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订金额',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_rate: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同签订费率',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
service_duration: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同服务工期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
start_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入计划开始日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
end_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入计划结束日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
performance_money: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入履约金',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
performance_money_expiration_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入履约金到期时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
payment_method: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同付款方式',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
content: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同主要内容',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_dept: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订部门',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_head: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订负责人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
supervise_dept: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入监管部门',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_manager: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目总监/经理',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
implement_method: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入实施方式',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
is_limit: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入是否限制',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
limit_num: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入限制次数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
file_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文件类型',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_num: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章份数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
plance_seal: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入骑缝盖章',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
send_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入发出日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
mailing_number: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入邮寄编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
review_status: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入评审状态 0-待移交 1-已移交',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
status: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入立项状态 0-待立项 1-已立项',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
create_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入录入人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiMarketingContractDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiMarketingContractEdit(data)
|
||||||
|
: await apiMarketingContractAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script>
|
181
src/views/marketing_contract/index.vue
Normal file
181
src/views/marketing_contract/index.vue
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="合同类型 0-主合同 1-框架协议 2-补充协议" prop="contract_type">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_type" clearable
|
||||||
|
placeholder="请输入合同类型 0-主合同 1-框架协议 2-补充协议" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同名称" prop="contract_name">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_name" clearable placeholder="请输入合同名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同编号" prop="contract_code">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_code" clearable placeholder="请输入合同编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="甲方签约单位" prop="part_a">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.part_a" clearable placeholder="请输入甲方签约单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业务性质" prop="business_nature">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.business_nature" clearable placeholder="请输入业务性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="行业性质" prop="industry_nature">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.industry_nature" clearable placeholder="请输入行业性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="资金来源" prop="fund_sources">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.fund_sources" clearable placeholder="请输入资金来源" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="建设区域" prop="const_area">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.const_area" clearable placeholder="请输入建设区域" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订金额" prop="signed_amount">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.signed_amount" 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="['marketing.marketing_contract/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['marketing.marketing_contract/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="合同名称" prop="contract_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同编号" prop="contract_code" show-overflow-tooltip />
|
||||||
|
<el-table-column label="甲方签约单位" prop="part_a" show-overflow-tooltip />
|
||||||
|
<el-table-column label="乙方签约单位" prop="part_b" show-overflow-tooltip />
|
||||||
|
<el-table-column label="乙方签约人" prop="part_b_signatory" show-overflow-tooltip />
|
||||||
|
<el-table-column label="业务性质" prop="business_nature" show-overflow-tooltip />
|
||||||
|
<el-table-column label="行业性质" prop="industry_nature" show-overflow-tooltip />
|
||||||
|
<el-table-column label="资金来源" prop="fund_sources" show-overflow-tooltip />
|
||||||
|
<el-table-column label="建设区域" prop="const_area" show-overflow-tooltip />
|
||||||
|
<el-table-column label="协议性质" prop="agreement_nature" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工程总投资" prop="project_money" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工程规模及概况" prop="project_scale" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订金额" prop="signed_amount" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同签订费率" prop="signed_rate" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同服务工期" prop="service_duration" show-overflow-tooltip />
|
||||||
|
<el-table-column label="计划开始日期" prop="start_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="计划结束日期" prop="end_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="履约金" prop="performance_money" show-overflow-tooltip />
|
||||||
|
<el-table-column label="履约金到期时间" prop="performance_money_expiration_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同付款方式" prop="payment_method" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同主要内容" prop="content" show-overflow-tooltip />
|
||||||
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订部门" prop="signed_dept" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订负责人" prop="signed_head" show-overflow-tooltip />
|
||||||
|
<el-table-column label="监管部门" prop="supervise_dept" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目总监/经理" prop="project_manager" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实施方式" prop="implement_method" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章名称" prop="seal_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="是否限制" prop="is_limit" show-overflow-tooltip />
|
||||||
|
<el-table-column label="限制次数" prop="limit_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文件类型" prop="file_type" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章份数" prop="seal_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章人" prop="seal_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="骑缝盖章" prop="plance_seal" show-overflow-tooltip />
|
||||||
|
<el-table-column label="发出日期" prop="send_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="邮寄编号" prop="mailing_number" show-overflow-tooltip />
|
||||||
|
<el-table-column label="评审状态 0-待移交 1-已移交" prop="review_status" show-overflow-tooltip />
|
||||||
|
<el-table-column label="立项状态 0-待立项 1-已立项" prop="status" show-overflow-tooltip />
|
||||||
|
<el-table-column label="录入人" prop="create_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['marketing.marketing_contract/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['marketing.marketing_contract/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingContractLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiMarketingContractLists, apiMarketingContractDelete } from '@/api/marketing_contract'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
contract_type: '',
|
||||||
|
contract_name: '',
|
||||||
|
contract_code: '',
|
||||||
|
part_a: '',
|
||||||
|
business_nature: '',
|
||||||
|
industry_nature: '',
|
||||||
|
fund_sources: '',
|
||||||
|
const_area: '',
|
||||||
|
signed_amount: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiMarketingContractLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiMarketingContractDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
475
src/views/marketing_framework_agreement/edit.vue
Normal file
475
src/views/marketing_framework_agreement/edit.vue
Normal file
@ -0,0 +1,475 @@
|
|||||||
|
<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="90px" :rules="formRules">
|
||||||
|
<el-form-item label="关联主合同id" prop="related_contract_id">
|
||||||
|
<el-input v-model="formData.related_contract_id" clearable placeholder="请输入关联主合同id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同类型 0-主合同 1-框架协议 2-补充协议" prop="contract_type">
|
||||||
|
<el-input v-model="formData.contract_type" clearable placeholder="请输入合同类型 0-主合同 1-框架协议 2-补充协议" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同名称" prop="contract_name">
|
||||||
|
<el-input v-model="formData.contract_name" clearable placeholder="请输入合同名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同编号" prop="contract_code">
|
||||||
|
<el-input v-model="formData.contract_code" clearable placeholder="请输入合同编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="甲方签约单位" prop="part_a">
|
||||||
|
<el-input v-model="formData.part_a" clearable placeholder="请输入甲方签约单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系人" prop="part_a_contact">
|
||||||
|
<el-input v-model="formData.part_a_contact" clearable placeholder="请输入联系人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业主地址" prop="part_a_address">
|
||||||
|
<el-input v-model="formData.part_a_address" clearable placeholder="请输入业主地址" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="乙方签约单位" prop="part_b">
|
||||||
|
<el-input v-model="formData.part_b" clearable placeholder="请输入乙方签约单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="乙方签约人" prop="part_b_signatory">
|
||||||
|
<el-input v-model="formData.part_b_signatory" clearable placeholder="请输入乙方签约人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业务性质" prop="business_nature">
|
||||||
|
<el-input v-model="formData.business_nature" clearable placeholder="请输入业务性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="行业性质" prop="industry_nature">
|
||||||
|
<el-input v-model="formData.industry_nature" clearable placeholder="请输入行业性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="资金来源" prop="fund_sources">
|
||||||
|
<el-input v-model="formData.fund_sources" clearable placeholder="请输入资金来源" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="建设区域" prop="const_area">
|
||||||
|
<el-input v-model="formData.const_area" clearable placeholder="请输入建设区域" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="协议性质" prop="agreement_nature">
|
||||||
|
<el-input v-model="formData.agreement_nature" clearable placeholder="请输入协议性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="工程总投资" prop="project_money">
|
||||||
|
<el-input v-model="formData.project_money" clearable placeholder="请输入工程总投资" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="工程规模及概况" prop="project_scale">
|
||||||
|
<el-input v-model="formData.project_scale" clearable placeholder="请输入工程规模及概况" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订金额" prop="signed_amount">
|
||||||
|
<el-input v-model="formData.signed_amount" clearable placeholder="请输入签订金额" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同签订费率" prop="signed_rate">
|
||||||
|
<el-input v-model="formData.signed_rate" clearable placeholder="请输入合同签订费率" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同服务工期" prop="service_duration">
|
||||||
|
<el-input v-model="formData.service_duration" clearable placeholder="请输入合同服务工期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划开始日期" prop="start_date">
|
||||||
|
<el-input v-model="formData.start_date" clearable placeholder="请输入计划开始日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划结束日期" prop="end_date">
|
||||||
|
<el-input v-model="formData.end_date" clearable placeholder="请输入计划结束日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="履约金" prop="performance_money">
|
||||||
|
<el-input v-model="formData.performance_money" clearable placeholder="请输入履约金" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="履约金到期时间" prop="performance_money_expiration_time">
|
||||||
|
<el-input v-model="formData.performance_money_expiration_time" clearable placeholder="请输入履约金到期时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同付款方式" prop="payment_method">
|
||||||
|
<el-input v-model="formData.payment_method" clearable placeholder="请输入合同付款方式" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同主要内容" prop="content">
|
||||||
|
<el-input v-model="formData.content" clearable placeholder="请输入合同主要内容" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订部门" prop="signed_dept">
|
||||||
|
<el-input v-model="formData.signed_dept" clearable placeholder="请输入签订部门" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订负责人" prop="signed_head">
|
||||||
|
<el-input v-model="formData.signed_head" clearable placeholder="请输入签订负责人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="监管部门" prop="supervise_dept">
|
||||||
|
<el-input v-model="formData.supervise_dept" clearable placeholder="请输入监管部门" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目总监/经理" prop="project_manager">
|
||||||
|
<el-input v-model="formData.project_manager" clearable placeholder="请输入项目总监/经理" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="实施方式" prop="implement_method">
|
||||||
|
<el-input v-model="formData.implement_method" clearable placeholder="请输入实施方式" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章名称" prop="seal_name">
|
||||||
|
<el-input v-model="formData.seal_name" clearable placeholder="请输入盖章名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否限制" prop="is_limit">
|
||||||
|
<el-input v-model="formData.is_limit" clearable placeholder="请输入是否限制" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="限制次数" prop="limit_num">
|
||||||
|
<el-input v-model="formData.limit_num" clearable placeholder="请输入限制次数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文件类型" prop="file_type">
|
||||||
|
<el-input v-model="formData.file_type" clearable placeholder="请输入文件类型" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章份数" prop="seal_num">
|
||||||
|
<el-input v-model="formData.seal_num" clearable placeholder="请输入盖章份数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章人" prop="seal_user">
|
||||||
|
<el-input v-model="formData.seal_user" clearable placeholder="请输入盖章人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="骑缝盖章" prop="plance_seal">
|
||||||
|
<el-input v-model="formData.plance_seal" clearable placeholder="请输入骑缝盖章" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="发出日期" prop="send_date">
|
||||||
|
<el-input v-model="formData.send_date" clearable placeholder="请输入发出日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="邮寄编号" prop="mailing_number">
|
||||||
|
<el-input v-model="formData.mailing_number" clearable placeholder="请输入邮寄编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="评审状态 0-待移交 1-已移交" prop="review_status">
|
||||||
|
<el-input v-model="formData.review_status" clearable placeholder="请输入评审状态 0-待移交 1-已移交" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="立项状态 0-待立项 1-已立项" prop="status">
|
||||||
|
<el-input v-model="formData.status" clearable placeholder="请输入立项状态 0-待立项 1-已立项" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="录入人" prop="create_user">
|
||||||
|
<el-input v-model="formData.create_user" clearable placeholder="请输入录入人" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingContractEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiMarketingContractAdd, apiMarketingContractEdit, apiMarketingContractDetail } from '@/api/marketing_contract'
|
||||||
|
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 mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑市场经营--合同信息' : '新增市场经营--合同信息'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
related_contract_id: '',
|
||||||
|
contract_type: '',
|
||||||
|
contract_name: '',
|
||||||
|
contract_code: '',
|
||||||
|
part_a: '',
|
||||||
|
part_a_contact: '',
|
||||||
|
part_a_address: '',
|
||||||
|
part_b: '',
|
||||||
|
part_b_signatory: '',
|
||||||
|
business_nature: '',
|
||||||
|
industry_nature: '',
|
||||||
|
fund_sources: '',
|
||||||
|
const_area: '',
|
||||||
|
agreement_nature: '',
|
||||||
|
project_money: '',
|
||||||
|
project_scale: '',
|
||||||
|
signed_amount: '',
|
||||||
|
signed_rate: '',
|
||||||
|
service_duration: '',
|
||||||
|
start_date: '',
|
||||||
|
end_date: '',
|
||||||
|
performance_money: '',
|
||||||
|
performance_money_expiration_time: '',
|
||||||
|
payment_method: '',
|
||||||
|
content: '',
|
||||||
|
annex: '',
|
||||||
|
signed_dept: '',
|
||||||
|
signed_head: '',
|
||||||
|
supervise_dept: '',
|
||||||
|
project_manager: '',
|
||||||
|
implement_method: '',
|
||||||
|
seal_name: '',
|
||||||
|
is_limit: '',
|
||||||
|
limit_num: '',
|
||||||
|
file_type: '',
|
||||||
|
seal_num: '',
|
||||||
|
seal_user: '',
|
||||||
|
plance_seal: '',
|
||||||
|
send_date: '',
|
||||||
|
mailing_number: '',
|
||||||
|
review_status: '',
|
||||||
|
status: '',
|
||||||
|
create_user: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
related_contract_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入关联主合同id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同类型 0-主合同 1-框架协议 2-补充协议',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_code: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入甲方签约单位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a_contact: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入联系人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a_address: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入业主地址',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_b: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入乙方签约单位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_b_signatory: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入乙方签约人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
business_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入业务性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
industry_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入行业性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
fund_sources: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入资金来源',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
const_area: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入建设区域',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
agreement_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入协议性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_money: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入工程总投资',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_scale: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入工程规模及概况',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_amount: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订金额',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_rate: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同签订费率',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
service_duration: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同服务工期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
start_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入计划开始日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
end_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入计划结束日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
performance_money: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入履约金',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
performance_money_expiration_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入履约金到期时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
payment_method: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同付款方式',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
content: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同主要内容',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_dept: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订部门',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_head: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订负责人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
supervise_dept: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入监管部门',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_manager: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目总监/经理',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
implement_method: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入实施方式',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
is_limit: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入是否限制',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
limit_num: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入限制次数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
file_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文件类型',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_num: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章份数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
plance_seal: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入骑缝盖章',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
send_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入发出日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
mailing_number: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入邮寄编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
review_status: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入评审状态 0-待移交 1-已移交',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
status: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入立项状态 0-待立项 1-已立项',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
create_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入录入人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiMarketingContractDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiMarketingContractEdit(data)
|
||||||
|
: await apiMarketingContractAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script>
|
165
src/views/marketing_framework_agreement/index.vue
Normal file
165
src/views/marketing_framework_agreement/index.vue
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="合同名称">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_name" clearable placeholder="请输入合同名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="协议性质">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.agreement_nature" clearable placeholder="请输入合同编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业务性质">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.business_nature" clearable placeholder="请输入甲方签约单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订部门">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.signed_dept" clearable placeholder="请输入业务性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="甲方签约单位">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.part_a" 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="['marketing.marketing_contract/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['marketing.marketing_contract/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="合同名称" prop="contract_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同编号" prop="contract_code" show-overflow-tooltip />
|
||||||
|
<el-table-column label="甲方签约单位" prop="part_a" show-overflow-tooltip />
|
||||||
|
<el-table-column label="乙方签约单位" prop="part_b" show-overflow-tooltip />
|
||||||
|
<el-table-column label="乙方签约人" prop="part_b_signatory" show-overflow-tooltip />
|
||||||
|
<el-table-column label="业务性质" prop="business_nature" show-overflow-tooltip />
|
||||||
|
<!-- <el-table-column label="行业性质" prop="industry_nature" show-overflow-tooltip />
|
||||||
|
<el-table-column label="资金来源" prop="fund_sources" show-overflow-tooltip />
|
||||||
|
<el-table-column label="建设区域" prop="const_area" show-overflow-tooltip />
|
||||||
|
<el-table-column label="协议性质" prop="agreement_nature" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工程总投资" prop="project_money" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工程规模及概况" prop="project_scale" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订金额" prop="signed_amount" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同签订费率" prop="signed_rate" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同服务工期" prop="service_duration" show-overflow-tooltip />
|
||||||
|
<el-table-column label="计划开始日期" prop="start_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="计划结束日期" prop="end_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="履约金" prop="performance_money" show-overflow-tooltip />
|
||||||
|
<el-table-column label="履约金到期时间" prop="performance_money_expiration_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同付款方式" prop="payment_method" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同主要内容" prop="content" show-overflow-tooltip />
|
||||||
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订部门" prop="signed_dept" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订负责人" prop="signed_head" show-overflow-tooltip />
|
||||||
|
<el-table-column label="监管部门" prop="supervise_dept" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目总监/经理" prop="project_manager" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实施方式" prop="implement_method" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章名称" prop="seal_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="是否限制" prop="is_limit" show-overflow-tooltip />
|
||||||
|
<el-table-column label="限制次数" prop="limit_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文件类型" prop="file_type" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章份数" prop="seal_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章人" prop="seal_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="骑缝盖章" prop="plance_seal" show-overflow-tooltip />
|
||||||
|
<el-table-column label="发出日期" prop="send_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="邮寄编号" prop="mailing_number" show-overflow-tooltip />
|
||||||
|
<el-table-column label="评审状态 0-待移交 1-已移交" prop="review_status" show-overflow-tooltip />
|
||||||
|
<el-table-column label="立项状态 0-待立项 1-已立项" prop="status" show-overflow-tooltip />
|
||||||
|
<el-table-column label="录入人" prop="create_user" show-overflow-tooltip /> -->
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['marketing.marketing_contract/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['marketing.marketing_contract/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingContractLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apimketingFrameworkAgreementLists, apimketingFrameworkAgreementDelete, apimketingFrameworkAgreementDetail } from '@/api/marketing_framework_agreement'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
contract_name: '',
|
||||||
|
agreement_nature: '',
|
||||||
|
business_nature: '',
|
||||||
|
signed_dept: '',
|
||||||
|
part_a: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apimketingFrameworkAgreementLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apimketingFrameworkAgreementDetail({ 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 apimketingFrameworkAgreementDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
475
src/views/marketing_handover_contract/edit.vue
Normal file
475
src/views/marketing_handover_contract/edit.vue
Normal file
@ -0,0 +1,475 @@
|
|||||||
|
<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="90px" :rules="formRules">
|
||||||
|
<el-form-item label="关联主合同id" prop="related_contract_id">
|
||||||
|
<el-input v-model="formData.related_contract_id" clearable placeholder="请输入关联主合同id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同类型 0-主合同 1-框架协议 2-补充协议" prop="contract_type">
|
||||||
|
<el-input v-model="formData.contract_type" clearable placeholder="请输入合同类型 0-主合同 1-框架协议 2-补充协议" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同名称" prop="contract_name">
|
||||||
|
<el-input v-model="formData.contract_name" clearable placeholder="请输入合同名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同编号" prop="contract_code">
|
||||||
|
<el-input v-model="formData.contract_code" clearable placeholder="请输入合同编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="甲方签约单位" prop="part_a">
|
||||||
|
<el-input v-model="formData.part_a" clearable placeholder="请输入甲方签约单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系人" prop="part_a_contact">
|
||||||
|
<el-input v-model="formData.part_a_contact" clearable placeholder="请输入联系人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业主地址" prop="part_a_address">
|
||||||
|
<el-input v-model="formData.part_a_address" clearable placeholder="请输入业主地址" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="乙方签约单位" prop="part_b">
|
||||||
|
<el-input v-model="formData.part_b" clearable placeholder="请输入乙方签约单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="乙方签约人" prop="part_b_signatory">
|
||||||
|
<el-input v-model="formData.part_b_signatory" clearable placeholder="请输入乙方签约人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业务性质" prop="business_nature">
|
||||||
|
<el-input v-model="formData.business_nature" clearable placeholder="请输入业务性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="行业性质" prop="industry_nature">
|
||||||
|
<el-input v-model="formData.industry_nature" clearable placeholder="请输入行业性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="资金来源" prop="fund_sources">
|
||||||
|
<el-input v-model="formData.fund_sources" clearable placeholder="请输入资金来源" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="建设区域" prop="const_area">
|
||||||
|
<el-input v-model="formData.const_area" clearable placeholder="请输入建设区域" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="协议性质" prop="agreement_nature">
|
||||||
|
<el-input v-model="formData.agreement_nature" clearable placeholder="请输入协议性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="工程总投资" prop="project_money">
|
||||||
|
<el-input v-model="formData.project_money" clearable placeholder="请输入工程总投资" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="工程规模及概况" prop="project_scale">
|
||||||
|
<el-input v-model="formData.project_scale" clearable placeholder="请输入工程规模及概况" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订金额" prop="signed_amount">
|
||||||
|
<el-input v-model="formData.signed_amount" clearable placeholder="请输入签订金额" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同签订费率" prop="signed_rate">
|
||||||
|
<el-input v-model="formData.signed_rate" clearable placeholder="请输入合同签订费率" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同服务工期" prop="service_duration">
|
||||||
|
<el-input v-model="formData.service_duration" clearable placeholder="请输入合同服务工期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划开始日期" prop="start_date">
|
||||||
|
<el-input v-model="formData.start_date" clearable placeholder="请输入计划开始日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划结束日期" prop="end_date">
|
||||||
|
<el-input v-model="formData.end_date" clearable placeholder="请输入计划结束日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="履约金" prop="performance_money">
|
||||||
|
<el-input v-model="formData.performance_money" clearable placeholder="请输入履约金" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="履约金到期时间" prop="performance_money_expiration_time">
|
||||||
|
<el-input v-model="formData.performance_money_expiration_time" clearable placeholder="请输入履约金到期时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同付款方式" prop="payment_method">
|
||||||
|
<el-input v-model="formData.payment_method" clearable placeholder="请输入合同付款方式" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同主要内容" prop="content">
|
||||||
|
<el-input v-model="formData.content" clearable placeholder="请输入合同主要内容" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订部门" prop="signed_dept">
|
||||||
|
<el-input v-model="formData.signed_dept" clearable placeholder="请输入签订部门" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订负责人" prop="signed_head">
|
||||||
|
<el-input v-model="formData.signed_head" clearable placeholder="请输入签订负责人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="监管部门" prop="supervise_dept">
|
||||||
|
<el-input v-model="formData.supervise_dept" clearable placeholder="请输入监管部门" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目总监/经理" prop="project_manager">
|
||||||
|
<el-input v-model="formData.project_manager" clearable placeholder="请输入项目总监/经理" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="实施方式" prop="implement_method">
|
||||||
|
<el-input v-model="formData.implement_method" clearable placeholder="请输入实施方式" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章名称" prop="seal_name">
|
||||||
|
<el-input v-model="formData.seal_name" clearable placeholder="请输入盖章名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否限制" prop="is_limit">
|
||||||
|
<el-input v-model="formData.is_limit" clearable placeholder="请输入是否限制" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="限制次数" prop="limit_num">
|
||||||
|
<el-input v-model="formData.limit_num" clearable placeholder="请输入限制次数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文件类型" prop="file_type">
|
||||||
|
<el-input v-model="formData.file_type" clearable placeholder="请输入文件类型" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章份数" prop="seal_num">
|
||||||
|
<el-input v-model="formData.seal_num" clearable placeholder="请输入盖章份数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章人" prop="seal_user">
|
||||||
|
<el-input v-model="formData.seal_user" clearable placeholder="请输入盖章人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="骑缝盖章" prop="plance_seal">
|
||||||
|
<el-input v-model="formData.plance_seal" clearable placeholder="请输入骑缝盖章" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="发出日期" prop="send_date">
|
||||||
|
<el-input v-model="formData.send_date" clearable placeholder="请输入发出日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="邮寄编号" prop="mailing_number">
|
||||||
|
<el-input v-model="formData.mailing_number" clearable placeholder="请输入邮寄编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="评审状态 0-待移交 1-已移交" prop="review_status">
|
||||||
|
<el-input v-model="formData.review_status" clearable placeholder="请输入评审状态 0-待移交 1-已移交" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="立项状态 0-待立项 1-已立项" prop="status">
|
||||||
|
<el-input v-model="formData.status" clearable placeholder="请输入立项状态 0-待立项 1-已立项" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="录入人" prop="create_user">
|
||||||
|
<el-input v-model="formData.create_user" clearable placeholder="请输入录入人" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingContractEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiMarketingContractAdd, apiMarketingContractEdit, apiMarketingContractDetail } from '@/api/marketing_contract'
|
||||||
|
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 mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑市场经营--合同信息' : '新增市场经营--合同信息'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
related_contract_id: '',
|
||||||
|
contract_type: '',
|
||||||
|
contract_name: '',
|
||||||
|
contract_code: '',
|
||||||
|
part_a: '',
|
||||||
|
part_a_contact: '',
|
||||||
|
part_a_address: '',
|
||||||
|
part_b: '',
|
||||||
|
part_b_signatory: '',
|
||||||
|
business_nature: '',
|
||||||
|
industry_nature: '',
|
||||||
|
fund_sources: '',
|
||||||
|
const_area: '',
|
||||||
|
agreement_nature: '',
|
||||||
|
project_money: '',
|
||||||
|
project_scale: '',
|
||||||
|
signed_amount: '',
|
||||||
|
signed_rate: '',
|
||||||
|
service_duration: '',
|
||||||
|
start_date: '',
|
||||||
|
end_date: '',
|
||||||
|
performance_money: '',
|
||||||
|
performance_money_expiration_time: '',
|
||||||
|
payment_method: '',
|
||||||
|
content: '',
|
||||||
|
annex: '',
|
||||||
|
signed_dept: '',
|
||||||
|
signed_head: '',
|
||||||
|
supervise_dept: '',
|
||||||
|
project_manager: '',
|
||||||
|
implement_method: '',
|
||||||
|
seal_name: '',
|
||||||
|
is_limit: '',
|
||||||
|
limit_num: '',
|
||||||
|
file_type: '',
|
||||||
|
seal_num: '',
|
||||||
|
seal_user: '',
|
||||||
|
plance_seal: '',
|
||||||
|
send_date: '',
|
||||||
|
mailing_number: '',
|
||||||
|
review_status: '',
|
||||||
|
status: '',
|
||||||
|
create_user: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
related_contract_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入关联主合同id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同类型 0-主合同 1-框架协议 2-补充协议',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_code: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入甲方签约单位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a_contact: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入联系人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a_address: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入业主地址',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_b: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入乙方签约单位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_b_signatory: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入乙方签约人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
business_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入业务性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
industry_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入行业性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
fund_sources: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入资金来源',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
const_area: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入建设区域',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
agreement_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入协议性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_money: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入工程总投资',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_scale: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入工程规模及概况',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_amount: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订金额',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_rate: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同签订费率',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
service_duration: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同服务工期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
start_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入计划开始日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
end_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入计划结束日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
performance_money: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入履约金',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
performance_money_expiration_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入履约金到期时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
payment_method: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同付款方式',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
content: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同主要内容',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_dept: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订部门',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_head: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订负责人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
supervise_dept: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入监管部门',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_manager: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目总监/经理',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
implement_method: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入实施方式',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
is_limit: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入是否限制',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
limit_num: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入限制次数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
file_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文件类型',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_num: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章份数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
plance_seal: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入骑缝盖章',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
send_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入发出日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
mailing_number: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入邮寄编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
review_status: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入评审状态 0-待移交 1-已移交',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
status: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入立项状态 0-待立项 1-已立项',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
create_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入录入人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiMarketingContractDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiMarketingContractEdit(data)
|
||||||
|
: await apiMarketingContractAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script>
|
180
src/views/marketing_handover_contract/index.vue
Normal file
180
src/views/marketing_handover_contract/index.vue
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="合同名称">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_name" clearable placeholder="请输入合同名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同编号">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_code" clearable placeholder="请输入合同编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="甲方签约单位">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.part_a" clearable placeholder="请输入业务性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业务性质">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.industry_nature" clearable placeholder="请输入行业性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="资金来源">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.fund_sources" clearable placeholder="请输入行业性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="建设区域">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.const_area" clearable placeholder="请输入行业性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订部门">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.signed_dept" clearable placeholder="请输入行业性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同类型 ">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_type" 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="['marketing.marketing_contract/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['marketing.marketing_contract/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="合同名称" prop="contract_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同编号" prop="contract_code" show-overflow-tooltip />
|
||||||
|
<el-table-column label="甲方签约单位" prop="part_a" show-overflow-tooltip />
|
||||||
|
<el-table-column label="乙方签约单位" prop="part_b" show-overflow-tooltip />
|
||||||
|
<el-table-column label="乙方签约人" prop="part_b_signatory" show-overflow-tooltip />
|
||||||
|
<el-table-column label="业务性质" prop="business_nature" show-overflow-tooltip />
|
||||||
|
<!-- <el-table-column label="行业性质" prop="industry_nature" show-overflow-tooltip />
|
||||||
|
<el-table-column label="资金来源" prop="fund_sources" show-overflow-tooltip />
|
||||||
|
<el-table-column label="建设区域" prop="const_area" show-overflow-tooltip />
|
||||||
|
<el-table-column label="协议性质" prop="agreement_nature" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工程总投资" prop="project_money" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工程规模及概况" prop="project_scale" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订金额" prop="signed_amount" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同签订费率" prop="signed_rate" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同服务工期" prop="service_duration" show-overflow-tooltip />
|
||||||
|
<el-table-column label="计划开始日期" prop="start_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="计划结束日期" prop="end_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="履约金" prop="performance_money" show-overflow-tooltip />
|
||||||
|
<el-table-column label="履约金到期时间" prop="performance_money_expiration_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同付款方式" prop="payment_method" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同主要内容" prop="content" show-overflow-tooltip />
|
||||||
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订部门" prop="signed_dept" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订负责人" prop="signed_head" show-overflow-tooltip />
|
||||||
|
<el-table-column label="监管部门" prop="supervise_dept" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目总监/经理" prop="project_manager" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实施方式" prop="implement_method" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章名称" prop="seal_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="是否限制" prop="is_limit" show-overflow-tooltip />
|
||||||
|
<el-table-column label="限制次数" prop="limit_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文件类型" prop="file_type" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章份数" prop="seal_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章人" prop="seal_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="骑缝盖章" prop="plance_seal" show-overflow-tooltip />
|
||||||
|
<el-table-column label="发出日期" prop="send_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="邮寄编号" prop="mailing_number" show-overflow-tooltip />
|
||||||
|
<el-table-column label="评审状态 0-待移交 1-已移交" prop="review_status" show-overflow-tooltip />
|
||||||
|
<el-table-column label="立项状态 0-待立项 1-已立项" prop="status" show-overflow-tooltip />
|
||||||
|
<el-table-column label="录入人" prop="create_user" show-overflow-tooltip /> -->
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['marketing.marketing_contract/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
合同移交
|
||||||
|
</el-button>
|
||||||
|
<!-- <el-button v-perms="['marketing.marketing_contract/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button> -->
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingContractLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiMarketingHandoverContractLists, apiMarketingHandoverContractHandover, } from '@/api/marketing_handover_contract'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
contract_name: '',
|
||||||
|
contract_code: '',
|
||||||
|
part_a: '',
|
||||||
|
business_nature: '',
|
||||||
|
industry_nature: '',
|
||||||
|
fund_sources: '',
|
||||||
|
const_area: '',
|
||||||
|
signed_dept: '',
|
||||||
|
contract_type: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiMarketingHandoverContractLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiMarketingHandoverContractHandover({ id: data.id })
|
||||||
|
getLists()
|
||||||
|
|
||||||
|
// showEdit.value = true
|
||||||
|
// await nextTick()
|
||||||
|
// editRef.value?.open('edit')
|
||||||
|
// editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiMarketingSupplementaryAgreementDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
140
src/views/marketing_project_filing/edit.vue
Normal file
140
src/views/marketing_project_filing/edit.vue
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
<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="90px" :rules="formRules">
|
||||||
|
<el-form-item label="合同id" prop="contract_id">
|
||||||
|
<el-input v-model="formData.contract_id" clearable placeholder="请输入合同id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="录入人" prop="create_user">
|
||||||
|
<el-input v-model="formData.create_user" clearable placeholder="请输入录入人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="录入日期" prop="create_time">
|
||||||
|
<el-input v-model="formData.create_time" clearable placeholder="请输入录入日期" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingProjectFilingEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiMarketingProjectFilingAdd, apiMarketingProjectFilingEdit, apiMarketingProjectFilingDetail } from '@/api/marketing_project_filing'
|
||||||
|
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 mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑市场经营--项目备案' : '新增市场经营--项目备案'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
contract_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: '',
|
||||||
|
create_user: '',
|
||||||
|
create_time: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
contract_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
create_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入录入人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
create_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入录入日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiMarketingProjectFilingDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiMarketingProjectFilingEdit(data)
|
||||||
|
: await apiMarketingProjectFilingAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script>
|
137
src/views/marketing_project_filing/index.vue
Normal file
137
src/views/marketing_project_filing/index.vue
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form
|
||||||
|
class="mb-[-16px]"
|
||||||
|
:model="queryParams"
|
||||||
|
inline
|
||||||
|
>
|
||||||
|
<el-form-item label="合同id" prop="contract_id">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_id" clearable placeholder="请输入合同id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="录入人" prop="create_user">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.create_user" clearable placeholder="请输入录入人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="录入日期" prop="create_time">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.create_time" 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="['marketing.marketing_project_filing/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-perms="['marketing.marketing_project_filing/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="合同id" prop="contract_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||||
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip />
|
||||||
|
<el-table-column label="录入人" prop="create_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="录入日期" prop="create_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button
|
||||||
|
v-perms="['marketing.marketing_project_filing/edit']"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
@click="handleEdit(row)"
|
||||||
|
>
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-perms="['marketing.marketing_project_filing/delete']"
|
||||||
|
type="danger"
|
||||||
|
link
|
||||||
|
@click="handleDelete(row.id)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingProjectFilingLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiMarketingProjectFilingLists, apiMarketingProjectFilingDelete } from '@/api/marketing_project_filing'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
contract_id: '',
|
||||||
|
create_user: '',
|
||||||
|
create_time: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiMarketingProjectFilingLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiMarketingProjectFilingDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
138
src/views/marketing_project_filing_detail/edit.vue
Normal file
138
src/views/marketing_project_filing_detail/edit.vue
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
<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="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目备案id" prop="project_filing_id">
|
||||||
|
<el-input v-model="formData.project_filing_id" clearable placeholder="请输入项目备案id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备案人员" prop="filing_user">
|
||||||
|
<el-input v-model="formData.filing_user" clearable placeholder="请输入备案人员" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备案角色" prop="filing_role">
|
||||||
|
<el-input v-model="formData.filing_role" clearable placeholder="请输入备案角色" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="登记时间" prop="reg_time">
|
||||||
|
<el-input v-model="formData.reg_time" clearable placeholder="请输入登记时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="status">
|
||||||
|
<el-input v-model="formData.status" clearable placeholder="请输入状态" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingProjectFilingDetailEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiMarketingProjectFilingDetailAdd, apiMarketingProjectFilingDetailEdit, apiMarketingProjectFilingDetailDetail } from '@/api/marketing_project_filing_detail'
|
||||||
|
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 mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑市场经营--项目备案明细' : '新增市场经营--项目备案明细'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_filing_id: '',
|
||||||
|
filing_user: '',
|
||||||
|
filing_role: '',
|
||||||
|
reg_time: '',
|
||||||
|
status: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_filing_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目备案id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
filing_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备案人员',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
filing_role: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备案角色',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
reg_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入登记时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
status: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入状态',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiMarketingProjectFilingDetailDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiMarketingProjectFilingDetailEdit(data)
|
||||||
|
: await apiMarketingProjectFilingDetailAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script>
|
141
src/views/marketing_project_filing_detail/index.vue
Normal file
141
src/views/marketing_project_filing_detail/index.vue
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form
|
||||||
|
class="mb-[-16px]"
|
||||||
|
:model="queryParams"
|
||||||
|
inline
|
||||||
|
>
|
||||||
|
<el-form-item label="项目备案id" prop="project_filing_id">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_filing_id" clearable placeholder="请输入项目备案id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备案人员" prop="filing_user">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.filing_user" clearable placeholder="请输入备案人员" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备案角色" prop="filing_role">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.filing_role" clearable placeholder="请输入备案角色" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="status">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.status" 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="['marketing.marketing_project_filing_detail/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-perms="['marketing.marketing_project_filing_detail/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="项目备案id" prop="project_filing_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="备案人员" prop="filing_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="备案角色" prop="filing_role" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记时间" prop="reg_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="状态" prop="status" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button
|
||||||
|
v-perms="['marketing.marketing_project_filing_detail/edit']"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
@click="handleEdit(row)"
|
||||||
|
>
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-perms="['marketing.marketing_project_filing_detail/delete']"
|
||||||
|
type="danger"
|
||||||
|
link
|
||||||
|
@click="handleDelete(row.id)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingProjectFilingDetailLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiMarketingProjectFilingDetailLists, apiMarketingProjectFilingDetailDelete } from '@/api/marketing_project_filing_detail'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_filing_id: '',
|
||||||
|
filing_user: '',
|
||||||
|
filing_role: '',
|
||||||
|
status: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiMarketingProjectFilingDetailLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiMarketingProjectFilingDetailDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
475
src/views/marketing_supplementary_agreement/edit.vue
Normal file
475
src/views/marketing_supplementary_agreement/edit.vue
Normal file
@ -0,0 +1,475 @@
|
|||||||
|
<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="90px" :rules="formRules">
|
||||||
|
<el-form-item label="关联主合同id" prop="related_contract_id">
|
||||||
|
<el-input v-model="formData.related_contract_id" clearable placeholder="请输入关联主合同id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同类型 0-主合同 1-框架协议 2-补充协议" prop="contract_type">
|
||||||
|
<el-input v-model="formData.contract_type" clearable placeholder="请输入合同类型 0-主合同 1-框架协议 2-补充协议" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同名称" prop="contract_name">
|
||||||
|
<el-input v-model="formData.contract_name" clearable placeholder="请输入合同名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同编号" prop="contract_code">
|
||||||
|
<el-input v-model="formData.contract_code" clearable placeholder="请输入合同编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="甲方签约单位" prop="part_a">
|
||||||
|
<el-input v-model="formData.part_a" clearable placeholder="请输入甲方签约单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系人" prop="part_a_contact">
|
||||||
|
<el-input v-model="formData.part_a_contact" clearable placeholder="请输入联系人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业主地址" prop="part_a_address">
|
||||||
|
<el-input v-model="formData.part_a_address" clearable placeholder="请输入业主地址" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="乙方签约单位" prop="part_b">
|
||||||
|
<el-input v-model="formData.part_b" clearable placeholder="请输入乙方签约单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="乙方签约人" prop="part_b_signatory">
|
||||||
|
<el-input v-model="formData.part_b_signatory" clearable placeholder="请输入乙方签约人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业务性质" prop="business_nature">
|
||||||
|
<el-input v-model="formData.business_nature" clearable placeholder="请输入业务性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="行业性质" prop="industry_nature">
|
||||||
|
<el-input v-model="formData.industry_nature" clearable placeholder="请输入行业性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="资金来源" prop="fund_sources">
|
||||||
|
<el-input v-model="formData.fund_sources" clearable placeholder="请输入资金来源" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="建设区域" prop="const_area">
|
||||||
|
<el-input v-model="formData.const_area" clearable placeholder="请输入建设区域" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="协议性质" prop="agreement_nature">
|
||||||
|
<el-input v-model="formData.agreement_nature" clearable placeholder="请输入协议性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="工程总投资" prop="project_money">
|
||||||
|
<el-input v-model="formData.project_money" clearable placeholder="请输入工程总投资" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="工程规模及概况" prop="project_scale">
|
||||||
|
<el-input v-model="formData.project_scale" clearable placeholder="请输入工程规模及概况" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订金额" prop="signed_amount">
|
||||||
|
<el-input v-model="formData.signed_amount" clearable placeholder="请输入签订金额" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同签订费率" prop="signed_rate">
|
||||||
|
<el-input v-model="formData.signed_rate" clearable placeholder="请输入合同签订费率" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同服务工期" prop="service_duration">
|
||||||
|
<el-input v-model="formData.service_duration" clearable placeholder="请输入合同服务工期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划开始日期" prop="start_date">
|
||||||
|
<el-input v-model="formData.start_date" clearable placeholder="请输入计划开始日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划结束日期" prop="end_date">
|
||||||
|
<el-input v-model="formData.end_date" clearable placeholder="请输入计划结束日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="履约金" prop="performance_money">
|
||||||
|
<el-input v-model="formData.performance_money" clearable placeholder="请输入履约金" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="履约金到期时间" prop="performance_money_expiration_time">
|
||||||
|
<el-input v-model="formData.performance_money_expiration_time" clearable placeholder="请输入履约金到期时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同付款方式" prop="payment_method">
|
||||||
|
<el-input v-model="formData.payment_method" clearable placeholder="请输入合同付款方式" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同主要内容" prop="content">
|
||||||
|
<el-input v-model="formData.content" clearable placeholder="请输入合同主要内容" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订部门" prop="signed_dept">
|
||||||
|
<el-input v-model="formData.signed_dept" clearable placeholder="请输入签订部门" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订负责人" prop="signed_head">
|
||||||
|
<el-input v-model="formData.signed_head" clearable placeholder="请输入签订负责人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="监管部门" prop="supervise_dept">
|
||||||
|
<el-input v-model="formData.supervise_dept" clearable placeholder="请输入监管部门" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目总监/经理" prop="project_manager">
|
||||||
|
<el-input v-model="formData.project_manager" clearable placeholder="请输入项目总监/经理" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="实施方式" prop="implement_method">
|
||||||
|
<el-input v-model="formData.implement_method" clearable placeholder="请输入实施方式" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章名称" prop="seal_name">
|
||||||
|
<el-input v-model="formData.seal_name" clearable placeholder="请输入盖章名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否限制" prop="is_limit">
|
||||||
|
<el-input v-model="formData.is_limit" clearable placeholder="请输入是否限制" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="限制次数" prop="limit_num">
|
||||||
|
<el-input v-model="formData.limit_num" clearable placeholder="请输入限制次数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文件类型" prop="file_type">
|
||||||
|
<el-input v-model="formData.file_type" clearable placeholder="请输入文件类型" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章份数" prop="seal_num">
|
||||||
|
<el-input v-model="formData.seal_num" clearable placeholder="请输入盖章份数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="盖章人" prop="seal_user">
|
||||||
|
<el-input v-model="formData.seal_user" clearable placeholder="请输入盖章人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="骑缝盖章" prop="plance_seal">
|
||||||
|
<el-input v-model="formData.plance_seal" clearable placeholder="请输入骑缝盖章" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="发出日期" prop="send_date">
|
||||||
|
<el-input v-model="formData.send_date" clearable placeholder="请输入发出日期" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="邮寄编号" prop="mailing_number">
|
||||||
|
<el-input v-model="formData.mailing_number" clearable placeholder="请输入邮寄编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="评审状态 0-待移交 1-已移交" prop="review_status">
|
||||||
|
<el-input v-model="formData.review_status" clearable placeholder="请输入评审状态 0-待移交 1-已移交" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="立项状态 0-待立项 1-已立项" prop="status">
|
||||||
|
<el-input v-model="formData.status" clearable placeholder="请输入立项状态 0-待立项 1-已立项" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="录入人" prop="create_user">
|
||||||
|
<el-input v-model="formData.create_user" clearable placeholder="请输入录入人" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingContractEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiMarketingContractAdd, apiMarketingContractEdit, apiMarketingContractDetail } from '@/api/marketing_contract'
|
||||||
|
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 mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑市场经营--合同信息' : '新增市场经营--合同信息'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
related_contract_id: '',
|
||||||
|
contract_type: '',
|
||||||
|
contract_name: '',
|
||||||
|
contract_code: '',
|
||||||
|
part_a: '',
|
||||||
|
part_a_contact: '',
|
||||||
|
part_a_address: '',
|
||||||
|
part_b: '',
|
||||||
|
part_b_signatory: '',
|
||||||
|
business_nature: '',
|
||||||
|
industry_nature: '',
|
||||||
|
fund_sources: '',
|
||||||
|
const_area: '',
|
||||||
|
agreement_nature: '',
|
||||||
|
project_money: '',
|
||||||
|
project_scale: '',
|
||||||
|
signed_amount: '',
|
||||||
|
signed_rate: '',
|
||||||
|
service_duration: '',
|
||||||
|
start_date: '',
|
||||||
|
end_date: '',
|
||||||
|
performance_money: '',
|
||||||
|
performance_money_expiration_time: '',
|
||||||
|
payment_method: '',
|
||||||
|
content: '',
|
||||||
|
annex: '',
|
||||||
|
signed_dept: '',
|
||||||
|
signed_head: '',
|
||||||
|
supervise_dept: '',
|
||||||
|
project_manager: '',
|
||||||
|
implement_method: '',
|
||||||
|
seal_name: '',
|
||||||
|
is_limit: '',
|
||||||
|
limit_num: '',
|
||||||
|
file_type: '',
|
||||||
|
seal_num: '',
|
||||||
|
seal_user: '',
|
||||||
|
plance_seal: '',
|
||||||
|
send_date: '',
|
||||||
|
mailing_number: '',
|
||||||
|
review_status: '',
|
||||||
|
status: '',
|
||||||
|
create_user: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
related_contract_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入关联主合同id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同类型 0-主合同 1-框架协议 2-补充协议',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
contract_code: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入甲方签约单位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a_contact: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入联系人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_a_address: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入业主地址',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_b: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入乙方签约单位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
part_b_signatory: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入乙方签约人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
business_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入业务性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
industry_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入行业性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
fund_sources: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入资金来源',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
const_area: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入建设区域',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
agreement_nature: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入协议性质',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_money: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入工程总投资',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_scale: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入工程规模及概况',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_amount: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订金额',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_rate: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同签订费率',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
service_duration: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同服务工期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
start_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入计划开始日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
end_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入计划结束日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
performance_money: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入履约金',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
performance_money_expiration_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入履约金到期时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
payment_method: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同付款方式',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
content: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入合同主要内容',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_dept: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订部门',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
signed_head: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入签订负责人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
supervise_dept: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入监管部门',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
project_manager: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目总监/经理',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
implement_method: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入实施方式',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
is_limit: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入是否限制',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
limit_num: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入限制次数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
file_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文件类型',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_num: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章份数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
seal_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入盖章人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
plance_seal: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入骑缝盖章',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
send_date: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入发出日期',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
mailing_number: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入邮寄编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
review_status: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入评审状态 0-待移交 1-已移交',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
status: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入立项状态 0-待立项 1-已立项',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
create_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入录入人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiMarketingContractDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiMarketingContractEdit(data)
|
||||||
|
: await apiMarketingContractAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script>
|
161
src/views/marketing_supplementary_agreement/index.vue
Normal file
161
src/views/marketing_supplementary_agreement/index.vue
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="协议名称">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_name" clearable placeholder="请输入合同名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业务性质">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.business_nature" clearable placeholder="请输入合同编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="签订部门">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.signed_dept" clearable placeholder="请输入业务性质" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="甲方签约单位">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.part_a" 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="['marketing.marketing_contract/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['marketing.marketing_contract/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="合同名称" prop="contract_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同编号" prop="contract_code" show-overflow-tooltip />
|
||||||
|
<el-table-column label="甲方签约单位" prop="part_a" show-overflow-tooltip />
|
||||||
|
<el-table-column label="乙方签约单位" prop="part_b" show-overflow-tooltip />
|
||||||
|
<el-table-column label="乙方签约人" prop="part_b_signatory" show-overflow-tooltip />
|
||||||
|
<el-table-column label="业务性质" prop="business_nature" show-overflow-tooltip />
|
||||||
|
<!-- <el-table-column label="行业性质" prop="industry_nature" show-overflow-tooltip />
|
||||||
|
<el-table-column label="资金来源" prop="fund_sources" show-overflow-tooltip />
|
||||||
|
<el-table-column label="建设区域" prop="const_area" show-overflow-tooltip />
|
||||||
|
<el-table-column label="协议性质" prop="agreement_nature" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工程总投资" prop="project_money" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工程规模及概况" prop="project_scale" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订金额" prop="signed_amount" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同签订费率" prop="signed_rate" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同服务工期" prop="service_duration" show-overflow-tooltip />
|
||||||
|
<el-table-column label="计划开始日期" prop="start_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="计划结束日期" prop="end_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="履约金" prop="performance_money" show-overflow-tooltip />
|
||||||
|
<el-table-column label="履约金到期时间" prop="performance_money_expiration_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同付款方式" prop="payment_method" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同主要内容" prop="content" show-overflow-tooltip />
|
||||||
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订部门" prop="signed_dept" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订负责人" prop="signed_head" show-overflow-tooltip />
|
||||||
|
<el-table-column label="监管部门" prop="supervise_dept" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目总监/经理" prop="project_manager" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实施方式" prop="implement_method" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章名称" prop="seal_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="是否限制" prop="is_limit" show-overflow-tooltip />
|
||||||
|
<el-table-column label="限制次数" prop="limit_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文件类型" prop="file_type" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章份数" prop="seal_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="盖章人" prop="seal_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="骑缝盖章" prop="plance_seal" show-overflow-tooltip />
|
||||||
|
<el-table-column label="发出日期" prop="send_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="邮寄编号" prop="mailing_number" show-overflow-tooltip />
|
||||||
|
<el-table-column label="评审状态 0-待移交 1-已移交" prop="review_status" show-overflow-tooltip />
|
||||||
|
<el-table-column label="立项状态 0-待立项 1-已立项" prop="status" show-overflow-tooltip />
|
||||||
|
<el-table-column label="录入人" prop="create_user" show-overflow-tooltip /> -->
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['marketing.marketing_contract/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['marketing.marketing_contract/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="marketingContractLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiMarketingSupplementaryAgreementLists, apiMarketingSupplementaryAgreementDelete, apiMarketingSupplementaryAgreementDetail } from '@/api/marketing_supplementary_agreement'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
contract_name: '',
|
||||||
|
business_nature: '',
|
||||||
|
signed_dept: '',
|
||||||
|
part_a: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiMarketingSupplementaryAgreementLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiMarketingSupplementaryAgreementDetail({ 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 apiMarketingSupplementaryAgreementDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
@ -182,6 +182,9 @@ const open = (type = 'add') => {
|
|||||||
popupRef.value?.open()
|
popupRef.value?.open()
|
||||||
}
|
}
|
||||||
const area_change = (e: any) => {
|
const area_change = (e: any) => {
|
||||||
|
formData.dept_id = '';
|
||||||
|
formData.job_id = '';
|
||||||
|
if (!e) return
|
||||||
depts.value = []
|
depts.value = []
|
||||||
deptAll({ org_id: e }).then((res) => {
|
deptAll({ org_id: e }).then((res) => {
|
||||||
Object.assign(depts.value, res)
|
Object.assign(depts.value, res)
|
||||||
@ -189,6 +192,7 @@ const area_change = (e: any) => {
|
|||||||
}
|
}
|
||||||
const area_change1 = (e: any) => {
|
const area_change1 = (e: any) => {
|
||||||
jobs.value = []
|
jobs.value = []
|
||||||
|
if (!e) return
|
||||||
jobsAll({ dept_id: e }).then((res) => {
|
jobsAll({ dept_id: e }).then((res) => {
|
||||||
Object.assign(jobs.value, res)
|
Object.assign(jobs.value, res)
|
||||||
formData.job_id = ''
|
formData.job_id = ''
|
||||||
|
@ -3,41 +3,22 @@
|
|||||||
<el-card class="!border-none" shadow="never">
|
<el-card class="!border-none" shadow="never">
|
||||||
<el-form class="mb-[-16px]" :model="formData" inline>
|
<el-form class="mb-[-16px]" :model="formData" inline>
|
||||||
<el-form-item label="管理员账号">
|
<el-form-item label="管理员账号">
|
||||||
<el-input
|
<el-input v-model="formData.account" class="w-[280px]" clearable @keyup.enter="resetPage" />
|
||||||
v-model="formData.account"
|
|
||||||
class="w-[280px]"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="resetPage"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="管理员名称">
|
<el-form-item label="管理员名称">
|
||||||
<el-input
|
<el-input v-model="formData.name" class="w-[280px]" clearable @keyup.enter="resetPage" />
|
||||||
v-model="formData.name"
|
|
||||||
class="w-[280px]"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="resetPage"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="管理员角色">
|
<el-form-item label="管理员角色">
|
||||||
<el-select class="w-[280px]" v-model="formData.role_id">
|
<el-select class="w-[280px]" v-model="formData.role_id">
|
||||||
<el-option label="全部" value="" />
|
<el-option label="全部" value="" />
|
||||||
<el-option
|
<el-option v-for="(item, index) in optionsData.role" :key="index" :label="item.name"
|
||||||
v-for="(item, index) in optionsData.role"
|
:value="item.id" />
|
||||||
:key="index"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
<export-data
|
<export-data class="ml-2.5" :fetch-fun="adminLists" :params="formData" :page-size="pager.size" />
|
||||||
class="ml-2.5"
|
|
||||||
:fetch-fun="adminLists"
|
|
||||||
:params="formData"
|
|
||||||
:page-size="pager.size"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -58,49 +39,24 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="账号" prop="account" min-width="100" />
|
<el-table-column label="账号" prop="account" min-width="100" />
|
||||||
<el-table-column label="名称" prop="name" min-width="100" />
|
<el-table-column label="名称" prop="name" min-width="100" />
|
||||||
<el-table-column
|
<el-table-column label="角色" prop="role_name" min-width="100" show-tooltip-when-overflow />
|
||||||
label="角色"
|
<el-table-column label="部门" prop="dept_name" min-width="100" show-tooltip-when-overflow />
|
||||||
prop="role_name"
|
|
||||||
min-width="100"
|
|
||||||
show-tooltip-when-overflow
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="部门"
|
|
||||||
prop="dept_name"
|
|
||||||
min-width="100"
|
|
||||||
show-tooltip-when-overflow
|
|
||||||
/>
|
|
||||||
<el-table-column label="创建时间" prop="create_time" min-width="180" />
|
<el-table-column label="创建时间" prop="create_time" min-width="180" />
|
||||||
<el-table-column label="最近登录时间" prop="login_time" min-width="180" />
|
<el-table-column label="最近登录时间" prop="login_time" min-width="180" />
|
||||||
<el-table-column label="最近登录IP" prop="login_ip" min-width="120" />
|
<el-table-column label="最近登录IP" prop="login_ip" min-width="120" />
|
||||||
<el-table-column label="状态" min-width="100" v-perms="['auth.admin/edit']">
|
<el-table-column label="状态" min-width="100" v-perms="['auth.admin/edit']">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-switch
|
<el-switch v-if="row.root != 1" v-model="row.disable" :active-value="0" :inactive-value="1"
|
||||||
v-if="row.root != 1"
|
@change="changeStatus(row)" />
|
||||||
v-model="row.disable"
|
|
||||||
:active-value="0"
|
|
||||||
:inactive-value="1"
|
|
||||||
@change="changeStatus(row)"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="120" fixed="right">
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button
|
<el-button v-perms="['auth.admin/edit']" type="primary" link @click="handleEdit(row)">
|
||||||
v-perms="['auth.admin/edit']"
|
|
||||||
type="primary"
|
|
||||||
link
|
|
||||||
@click="handleEdit(row)"
|
|
||||||
>
|
|
||||||
编辑
|
编辑
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-if="row.root != 1" v-perms="['auth.admin/delete']" type="danger" link
|
||||||
v-if="row.root != 1"
|
@click="handleDelete(row.id)">
|
||||||
v-perms="['auth.admin/delete']"
|
|
||||||
type="danger"
|
|
||||||
link
|
|
||||||
@click="handleDelete(row.id)"
|
|
||||||
>
|
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="edit-popup">
|
<div class="edit-popup">
|
||||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||||
<el-form ref="formRef" :model="formData" label-width="160px" :rules="formRules">
|
<el-form ref="formRef" :model="formData" label-width="170px" :rules="formRules">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="项目" prop="project_id" @click="showDialog = true"
|
<el-form-item label="项目" prop="project_id" @click="showDialog = true"
|
||||||
@ -13,26 +13,26 @@
|
|||||||
<el-input v-model="project_code" readonly clearable placeholder="请选择项目" />
|
<el-input v-model="project_code" readonly clearable placeholder="请选择项目" />
|
||||||
</el-form-item> </el-col>
|
</el-form-item> </el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="材料预算花费比例(%)" prop="material_budget_expenditure_ratio">
|
<el-form-item label="材料预算花费比例(%)" prop="material_budget_expenditure_ratio">
|
||||||
<el-input v-model="formData.material_budget_expenditure_ratio" clearable
|
<el-input v-model="formData.material_budget_expenditure_ratio" clearable
|
||||||
placeholder="请输入材料预算花费比例(%)" />
|
placeholder="请输入材料预算花费比例(%)" />
|
||||||
</el-form-item> </el-col>
|
</el-form-item> </el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="人工预算花费比例(%)" prop="labour_budget_expenditure_ratio">
|
<el-form-item label="人工预算花费比例(%)" prop="labour_budget_expenditure_ratio">
|
||||||
<el-input v-model="formData.labour_budget_expenditure_ratio" clearable
|
<el-input v-model="formData.labour_budget_expenditure_ratio" clearable
|
||||||
placeholder="请输入人工预算花费比例(%)" />
|
placeholder="请输入人工预算花费比例(%)" />
|
||||||
</el-form-item> </el-col>
|
</el-form-item> </el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="费用预算花费比例(%)" prop="cost_budget_expenditure_ratio">
|
<el-form-item label="费用预算花费比例(%)" prop="cost_budget_expenditure_ratio">
|
||||||
<el-input v-model="formData.cost_budget_expenditure_ratio" clearable
|
<el-input v-model="formData.cost_budget_expenditure_ratio" clearable
|
||||||
placeholder="请输入费用预算花费比例(%)" />
|
placeholder="请输入费用预算花费比例(%)" />
|
||||||
</el-form-item> </el-col>
|
</el-form-item> </el-col>
|
||||||
|
|
||||||
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="分包预算花费比例(%)" prop="subcontract_budget_expenditure_ratio">
|
<el-form-item label="分包预算花费比例(%)" prop="subcontract_budget_expenditure_ratio">
|
||||||
<el-input v-model="formData.subcontract_budget_expenditure_ratio" clearable
|
<el-input v-model="formData.subcontract_budget_expenditure_ratio" clearable
|
||||||
placeholder="请输入分包预算花费比例(%)" />
|
placeholder="请输入分包预算花费比例(%)" />
|
||||||
</el-form-item> </el-col>
|
</el-form-item> </el-col>
|
||||||
|
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -34,13 +34,12 @@
|
|||||||
|
|
||||||
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
|
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
|
||||||
|
|
||||||
<el-table-column label="材料预算花费比例(%)(%)" prop="material_budget_expenditure_ratio"
|
<el-table-column label="材料预算花费比例(%)" prop="material_budget_expenditure_ratio" show-overflow-tooltip />
|
||||||
show-overflow-tooltip />
|
|
||||||
|
|
||||||
<el-table-column label="人工预算花费比例(%)(%)" prop="labour_budget_expenditure_ratio" show-overflow-tooltip />
|
<el-table-column label="人工预算花费比例(%)" prop="labour_budget_expenditure_ratio" show-overflow-tooltip />
|
||||||
|
|
||||||
<el-table-column label="费用预算花费比例(%)(%)" prop="cost_budget_expenditure_ratio" show-overflow-tooltip />
|
<el-table-column label="费用预算花费比例(%)" prop="cost_budget_expenditure_ratio" show-overflow-tooltip />
|
||||||
<el-table-column label="分包预算花费比例(%)(%)" prop="subcontract_budget_expenditure_ratio"
|
<el-table-column label="分包预算花费比例(%)" prop="subcontract_budget_expenditure_ratio"
|
||||||
show-overflow-tooltip />
|
show-overflow-tooltip />
|
||||||
<el-table-column label="操作" width="170" fixed="right">
|
<el-table-column label="操作" width="170" fixed="right">
|
||||||
|
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="edit-popup">
|
<div class="edit-popup">
|
||||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="60%" @confirm="handleSubmit"
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="60%" @confirm="handleSubmit" @close="handleClose">
|
||||||
@close="handleClose">
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
|
|
||||||
<el-row>
|
<el-row>
|
||||||
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
@ -17,8 +16,8 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="日期" prop="attendance_date">
|
<el-form-item label="日期" prop="attendance_date">
|
||||||
<el-date-picker class="flex-1 !flex" clearable v-model="formData.attendance_date"
|
<el-date-picker class="flex-1 !flex" clearable v-model="formData.attendance_date" type="date"
|
||||||
type="date" value-format="YYYY-MM-DD" placeholder="选择日期">
|
value-format="YYYY-MM-DD" placeholder="选择日期">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -45,20 +44,19 @@
|
|||||||
<el-form-item label="上班时间" prop="work_start_time">
|
<el-form-item label="上班时间" prop="work_start_time">
|
||||||
|
|
||||||
<el-time-select v-model="formData.work_start_time" start="06:30" step="00:15" end="23:30"
|
<el-time-select v-model="formData.work_start_time" start="06:30" step="00:15" end="23:30"
|
||||||
placeholder="请选择" />
|
placeholder="请选择" class="flex-1 flex" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="下班时间" prop="work_end_time">
|
<el-form-item label="下班时间" prop="work_end_time">
|
||||||
|
|
||||||
<el-time-select v-model="formData.work_end_time" start="06:30" step="00:15" end="23:30"
|
<el-time-select v-model="formData.work_end_time" start="06:30" step="00:15" end="23:30"
|
||||||
placeholder="请选择" />
|
placeholder="请选择" class="flex-1 flex" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="记工数量" prop="work_record_num">
|
<el-form-item label="记工数量" prop="work_record_num">
|
||||||
<el-input v-model="formData.work_record_num" type="number" clearable
|
<el-input v-model="formData.work_record_num" type="number" clearable placeholder="请输入记工数量" />
|
||||||
placeholder="请输入记工数量" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
@ -114,9 +112,6 @@ import Popup from '@/components/popup/index.vue'
|
|||||||
import projectDialog from '@/components/project/index.vue'
|
import projectDialog from '@/components/project/index.vue'
|
||||||
import { attendancedetailAdd, attendancedetailEdit, attendancedetailDetail } from '@/api/project_attendance_detail'
|
import { attendancedetailAdd, attendancedetailEdit, attendancedetailDetail } from '@/api/project_attendance_detail'
|
||||||
import customDialog from '@/components/project_personnel/index.vue'
|
import customDialog from '@/components/project_personnel/index.vue'
|
||||||
import type { PropType } from 'vue'
|
|
||||||
import { useDictData } from '@/hooks/useDictOptions'
|
|
||||||
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
|
|
||||||
let props = defineProps({
|
let props = defineProps({
|
||||||
project: Object
|
project: Object
|
||||||
})
|
})
|
||||||
@ -129,13 +124,9 @@ const showDialog1 = ref(false)
|
|||||||
const project_name = ref('')
|
const project_name = ref('')
|
||||||
const project_code = ref('')
|
const project_code = ref('')
|
||||||
const idcard = ref('')
|
const idcard = ref('')
|
||||||
const people = ref('')
|
|
||||||
const work_type = ref('')
|
const work_type = ref('')
|
||||||
import configs from "@/config"
|
|
||||||
import useUserStore from "@/stores/modules/user";
|
import useUserStore from "@/stores/modules/user";
|
||||||
const base_url = configs.baseUrl + configs.urlPrefix
|
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const formDataannex = reactive([])
|
|
||||||
const userInfo = userStore.userInfo
|
const userInfo = userStore.userInfo
|
||||||
// 表单数据
|
// 表单数据
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
@ -172,7 +163,7 @@ if (props.project) customEvent(props.project);
|
|||||||
|
|
||||||
const customEvent1 = (e) => {
|
const customEvent1 = (e) => {
|
||||||
formData.person_id = e.id
|
formData.person_id = e.id
|
||||||
formData.people = e.name
|
formData.person_name = e.name
|
||||||
idcard.value = e.idcard
|
idcard.value = e.idcard
|
||||||
work_type.value = e.work_type_text
|
work_type.value = e.work_type_text
|
||||||
showDialog1.value = false
|
showDialog1.value = false
|
||||||
@ -182,26 +173,6 @@ const customEvent1 = (e) => {
|
|||||||
const popupTitle = computed(() => {
|
const popupTitle = computed(() => {
|
||||||
return mode.value == 'edit' ? '编辑考勤明细' : '新增考勤明细'
|
return mode.value == 'edit' ? '编辑考勤明细' : '新增考勤明细'
|
||||||
})
|
})
|
||||||
// 上传文件
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 表单验证
|
// 表单验证
|
||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
@ -213,18 +184,6 @@ const formRules = reactive<any>({
|
|||||||
|
|
||||||
// 获取详情
|
// 获取详情
|
||||||
const setFormData = async (data: Record<any, any>) => {
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
for (const key in formData) {
|
for (const key in formData) {
|
||||||
if (data[key] != null && data[key] != undefined) {
|
if (data[key] != null && data[key] != undefined) {
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
@ -234,7 +193,6 @@ const setFormData = async (data: Record<any, any>) => {
|
|||||||
project_name.value = data.project_name
|
project_name.value = data.project_name
|
||||||
project_code.value = data.project_code
|
project_code.value = data.project_code
|
||||||
idcard.value = data.person_idcard
|
idcard.value = data.person_idcard
|
||||||
// people.value = data.person_name
|
|
||||||
work_type.value = data.work_type_text
|
work_type.value = data.work_type_text
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,9 +206,6 @@ const getDetail = async (row: Record<string, any>) => {
|
|||||||
|
|
||||||
// 提交按钮
|
// 提交按钮
|
||||||
const handleSubmit = async () => {
|
const handleSubmit = async () => {
|
||||||
if (formDataannex.length > 0) {
|
|
||||||
formData.annex = formDataannex.map((item: any) => item.uri)
|
|
||||||
}
|
|
||||||
await formRef.value?.validate()
|
await formRef.value?.validate()
|
||||||
formData.work_start_time = formData.work_start_time ? formData.attendance_date + ` ${formData.work_start_time}` : ""
|
formData.work_start_time = formData.work_start_time ? formData.attendance_date + ` ${formData.work_start_time}` : ""
|
||||||
formData.work_end_time = formData.work_end_time ? formData.attendance_date + ` ${formData.work_end_time}` : ""
|
formData.work_end_time = formData.work_end_time ? formData.attendance_date + ` ${formData.work_end_time}` : ""
|
||||||
|
@ -148,14 +148,9 @@ import projectDialog from '@/components/project/index.vue'
|
|||||||
import { attendanceRecordAdd, attendanceRecordEdit, attendanceRecordDetail } from '@/api/project_attendance_record'
|
import { attendanceRecordAdd, attendanceRecordEdit, attendanceRecordDetail } from '@/api/project_attendance_record'
|
||||||
import { attendancedetailDelete, attendancedetailLists } from '@/api/project_attendance_detail'
|
import { attendancedetailDelete, attendancedetailLists } from '@/api/project_attendance_detail'
|
||||||
import projectPersonnel from '@/components/project_personnel/index.vue'
|
import projectPersonnel from '@/components/project_personnel/index.vue'
|
||||||
import type { PropType } from 'vue'
|
|
||||||
import configs from "@/config"
|
|
||||||
import useUserStore from "@/stores/modules/user";
|
import useUserStore from "@/stores/modules/user";
|
||||||
import { watch } from "vue"
|
|
||||||
import { useDictData } from '@/hooks/useDictOptions'
|
|
||||||
import { cloneDeep } from 'lodash'
|
import { cloneDeep } from 'lodash'
|
||||||
|
|
||||||
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
|
|
||||||
let props = defineProps({
|
let props = defineProps({
|
||||||
project: Object
|
project: Object
|
||||||
})
|
})
|
||||||
@ -165,7 +160,7 @@ const formData = reactive({
|
|||||||
project_id: '',
|
project_id: '',
|
||||||
attendance_date: '',
|
attendance_date: '',
|
||||||
remark: '',
|
remark: '',
|
||||||
file: '',
|
annex: '',
|
||||||
attendance_detail: [],
|
attendance_detail: [],
|
||||||
|
|
||||||
})
|
})
|
||||||
@ -178,15 +173,10 @@ const showDialog = ref(false)
|
|||||||
const showDialog1 = ref(false)
|
const showDialog1 = ref(false)
|
||||||
const project_name = ref('')
|
const project_name = ref('')
|
||||||
const project_code = ref('')
|
const project_code = ref('')
|
||||||
// const renshu = ref('')
|
|
||||||
const base_url = configs.baseUrl + configs.urlPrefix
|
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const formDataannex = reactive([])
|
|
||||||
const userInfo = userStore.userInfo
|
const userInfo = userStore.userInfo
|
||||||
|
|
||||||
const handleAdd = (row: any) => {
|
const handleAdd = (row: any) => {
|
||||||
// const index = formData.attendance_detail.indexOf(row);
|
|
||||||
// formData.attendance_detail.splice(index + 1, 0, {});
|
|
||||||
formData.attendance_detail.push({})
|
formData.attendance_detail.push({})
|
||||||
};
|
};
|
||||||
const handleDelete = async (row: any) => {
|
const handleDelete = async (row: any) => {
|
||||||
|
@ -27,8 +27,8 @@
|
|||||||
<el-form-item label="收款金额" prop="sk_amount">
|
<el-form-item label="收款金额" prop="sk_amount">
|
||||||
<el-input v-model="formData.sk_amount" clearable placeholder="请输入收款金额" type="number" />
|
<el-input v-model="formData.sk_amount" clearable placeholder="请输入收款金额" type="number" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="提成比例(%)(%)" prop="tc_rate">
|
<el-form-item label="提成比例(%)" prop="tc_rate">
|
||||||
<el-input v-model="formData.tc_rate" clearable placeholder="请输入提成比例(%)(%)" type="number" />
|
<el-input v-model="formData.tc_rate" clearable placeholder="请输入提成比例(%)" type="number" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="应提成金额" prop="tc_amount">
|
<el-form-item label="应提成金额" prop="tc_amount">
|
||||||
<el-input v-model="formData.tc_amount" clearable placeholder="请输入应提成金额" type="number" />
|
<el-input v-model="formData.tc_amount" clearable placeholder="请输入应提成金额" type="number" />
|
||||||
|
@ -15,8 +15,7 @@
|
|||||||
</el-form-item> </el-col>
|
</el-form-item> </el-col>
|
||||||
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="姓名" @click="showDialog1 = true"
|
<el-form-item label="姓名" @click="showDialog1 = true">
|
||||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
|
||||||
<el-input v-model="person_name" clearable placeholder="请选择项目人员" />
|
<el-input v-model="person_name" clearable placeholder="请选择项目人员" />
|
||||||
</el-form-item> </el-col>
|
</el-form-item> </el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
@ -32,8 +31,10 @@
|
|||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item> </el-col>
|
</el-form-item> </el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="到期日期" prop="due_date"
|
<el-form-item label="到期日期" prop="due_date" :rules="{
|
||||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
validator: chekcDate,
|
||||||
|
trigger: ['blur']
|
||||||
|
}">
|
||||||
<el-date-picker class="flex-1 !flex" v-model="formData.due_date" clearable type="date"
|
<el-date-picker class="flex-1 !flex" v-model="formData.due_date" clearable type="date"
|
||||||
value-format="YYYY-MM-DD" placeholder="选择到期日期">
|
value-format="YYYY-MM-DD" placeholder="选择到期日期">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
@ -119,9 +120,7 @@ const idcard = ref('')
|
|||||||
|
|
||||||
import configs from "@/config"
|
import configs from "@/config"
|
||||||
import useUserStore from "@/stores/modules/user";
|
import useUserStore from "@/stores/modules/user";
|
||||||
const base_url = configs.baseUrl + configs.urlPrefix
|
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const formDataannex = reactive([])
|
|
||||||
const userInfo = userStore.userInfo
|
const userInfo = userStore.userInfo
|
||||||
// 表单数据
|
// 表单数据
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
@ -141,6 +140,13 @@ const formData = reactive({
|
|||||||
annex: [],
|
annex: [],
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const chekcDate = (rule: any, value: any, callback: any) => {
|
||||||
|
if (new Date(formData.due_date) < new Date(formData.insurance_date)) {
|
||||||
|
callback(new Error('到期日期不能早于投保日期'))
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//获取值
|
//获取值
|
||||||
const customEvent = (e) => {
|
const customEvent = (e) => {
|
||||||
@ -168,6 +174,7 @@ const popupTitle = computed(() => {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 表单验证
|
// 表单验证
|
||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
|
|
||||||
|
@ -14,8 +14,7 @@
|
|||||||
<el-input class="w-[220px]" v-model="project_code" clearable placeholder="请输入项目编码" disabled />
|
<el-input class="w-[220px]" v-model="project_code" clearable placeholder="请输入项目编码" disabled />
|
||||||
</el-form-item> </el-col>
|
</el-form-item> </el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="姓名" @click="showDialog1 = true"
|
<el-form-item label="姓名" @click="showDialog1 = true">
|
||||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
|
||||||
<el-input class="w-[220px]" v-model="person_name" clearable placeholder="请选择项目人员" />
|
<el-input class="w-[220px]" v-model="person_name" clearable placeholder="请选择项目人员" />
|
||||||
</el-form-item> </el-col>
|
</el-form-item> </el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
|
@ -136,9 +136,8 @@ import salescontractDialog from '@/components/contract/index.vue'
|
|||||||
import projectDialog from '@/components/project/index.vue'
|
import projectDialog from '@/components/project/index.vue'
|
||||||
import { appointmentAdd, appointmentEdit, appointmentDetail } from '@/api/appointment'
|
import { appointmentAdd, appointmentEdit, appointmentDetail } from '@/api/appointment'
|
||||||
import type { PropType } from 'vue'
|
import type { PropType } from 'vue'
|
||||||
import useUserStore from "@/stores/modules/user";
|
|
||||||
const protype = ref()
|
const protype = ref()
|
||||||
const userStore = useUserStore();
|
import { getAllProjectTypes } from '@/api/projecttype'
|
||||||
|
|
||||||
const contract_name = ref('')
|
const contract_name = ref('')
|
||||||
const project_name = ref('')
|
const project_name = ref('')
|
||||||
@ -146,7 +145,6 @@ const project_code = ref('')
|
|||||||
const contract_no = ref('')
|
const contract_no = ref('')
|
||||||
const custom_name = ref('')
|
const custom_name = ref('')
|
||||||
const manage_name = ref('')
|
const manage_name = ref('')
|
||||||
const userInfo = userStore.userInfo
|
|
||||||
const personnel = ref<any>()
|
const personnel = ref<any>()
|
||||||
|
|
||||||
|
|
||||||
@ -160,8 +158,6 @@ const emit = defineEmits(['success', 'close'])
|
|||||||
const formRef = shallowRef<FormInstance>()
|
const formRef = shallowRef<FormInstance>()
|
||||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
const mode = ref('add')
|
const mode = ref('add')
|
||||||
const amount_daxie = ref('')
|
|
||||||
const showDialog = ref(false)
|
|
||||||
const showDialog1 = ref(false)
|
const showDialog1 = ref(false)
|
||||||
const showDialog2 = ref(false)
|
const showDialog2 = ref(false)
|
||||||
|
|
||||||
@ -176,6 +172,9 @@ const customEvent2 = (e: any) => {
|
|||||||
formData.project_id = e.id;
|
formData.project_id = e.id;
|
||||||
project_name.value = e.name;
|
project_name.value = e.name;
|
||||||
project_code.value = e.project_code;
|
project_code.value = e.project_code;
|
||||||
|
// formData.project_type_id = e.project_type;
|
||||||
|
|
||||||
|
|
||||||
custom_name.value = e.custom_name;
|
custom_name.value = e.custom_name;
|
||||||
contract_name.value = ''
|
contract_name.value = ''
|
||||||
contract_no.value = ''
|
contract_no.value = ''
|
||||||
@ -277,7 +276,9 @@ const handleClose = () => {
|
|||||||
emit('close')
|
emit('close')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getAllProjectTypes().then(res => {
|
||||||
|
protype.value = res
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="身份证号" prop="idcard"
|
<el-form-item label="身份证号" prop="idcard"
|
||||||
:rules="[{ required: true, validator: checkIDcard, trigger: 'blur' }]">
|
:rules="[{ required: true, validator: checkIdCard, trigger: 'blur' }]">
|
||||||
<el-input v-model="formData.idcard" clearable placeholder="请输入身份证号" />
|
<el-input v-model="formData.idcard" clearable placeholder="请输入身份证号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -160,7 +160,7 @@ const checkPhone = (rule: any, value: any, callback: (arg0: Error) => any) => {
|
|||||||
}, 100)
|
}, 100)
|
||||||
}
|
}
|
||||||
|
|
||||||
const checkIDcard = (rule: any, value: any, callback: (arg0: Error) => any) => {
|
const checkIdCard = (rule: any, value: any, callback: (arg0: Error) => any) => {
|
||||||
const Reg = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[Xx\d]$/
|
const Reg = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[Xx\d]$/
|
||||||
if (!value) {
|
if (!value) {
|
||||||
return callback(new Error('身份证号码不能为空'))
|
return callback(new Error('身份证号码不能为空'))
|
||||||
|
@ -7,10 +7,11 @@
|
|||||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" />
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="合同名称" prop="contract_id" @click="showDialog1 = true">
|
<el-form-item label="合同名称" prop="contract_id" @click="showDialog1 = true">
|
||||||
<el-input v-model="formData.contract_name" clearable readonly placeholder="系统自动填写" />
|
<el-input v-model="formData.contract_name" clearable readonly placeholder="点击选择合同" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结算金额" prop="settlement_amount">
|
<el-form-item label="结算金额" prop="settlement_amount">
|
||||||
<el-input v-model="formData.settlement_amount" clearable placeholder="请输入结算金额" @input="amountinput" />
|
<el-input v-model="formData.settlement_amount" clearable placeholder="请输入结算金额" @input="amountinput"
|
||||||
|
type="number" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结算金额大写" prop="settlement_amount_uppercase">
|
<el-form-item label="结算金额大写" prop="settlement_amount_uppercase">
|
||||||
<el-input v-model="formData.settlement_amount_uppercase" readonly disabled placeholder="系统自动填写" />
|
<el-input v-model="formData.settlement_amount_uppercase" readonly disabled placeholder="系统自动填写" />
|
||||||
@ -106,6 +107,7 @@ const popupTitle = computed(() => {
|
|||||||
|
|
||||||
// 表单数据
|
// 表单数据
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
|
id: "",
|
||||||
project_name: "",
|
project_name: "",
|
||||||
project_id: '',
|
project_id: '',
|
||||||
contract_id: '',
|
contract_id: '',
|
||||||
|
@ -63,17 +63,17 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="工作量">
|
<el-table-column label="工作量">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-input v-model="row.num" @input="subtractji1(row, $index)" />
|
<el-input v-model="row.num" @input="subtractji1(row, $index)" type="number" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="单价" prop="price">
|
<el-table-column label="单价" prop="price">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-input v-model="row.price" @input="subtractji1(row, $index)" />
|
<el-input v-model="row.price" @input="subtractji1(row, $index)" type="number" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="金额" prop="amount">
|
<el-table-column label="金额" prop="amount">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-input v-model="row.amount" />
|
<el-input v-model="row.amount" type="number" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
const detailConfig = {
|
const detailConfig = {
|
||||||
title: "安全事故表",
|
title: "质量事故表",
|
||||||
config: [
|
config: [
|
||||||
{
|
{
|
||||||
label: "组织名称",
|
label: "组织名称",
|
||||||
@ -29,6 +29,9 @@ const detailConfig = {
|
|||||||
label: "设备事故",
|
label: "设备事故",
|
||||||
value: "device_accident"
|
value: "device_accident"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
label: "承包商人员",
|
label: "承包商人员",
|
||||||
value: "contractor_user"
|
value: "contractor_user"
|
||||||
@ -45,10 +48,6 @@ const detailConfig = {
|
|||||||
label: "内容",
|
label: "内容",
|
||||||
value: "content"
|
value: "content"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: "承包商人员",
|
|
||||||
value: "contractor_user"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "备注",
|
label: "备注",
|
||||||
value: "remark",
|
value: "remark",
|
||||||
|
@ -186,9 +186,8 @@ const setFormData = async (data: Record<any, any>) => {
|
|||||||
formData[key] = data[key]
|
formData[key] = data[key]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (data.dept_id) {
|
if (data.org_id) {
|
||||||
getlist1(data.dept_id
|
getlist1(data.org_id)
|
||||||
)
|
|
||||||
}
|
}
|
||||||
project_name.value = data.project_name
|
project_name.value = data.project_name
|
||||||
project_code.value = data.project_code
|
project_code.value = data.project_code
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="序号" prop="serial_number">
|
<el-form-item label="序号" prop="serial_number">
|
||||||
<el-input v-model="formData.serial_number" clearable placeholder="请输入序号" />
|
<el-input v-model="formData.serial_number" clearable placeholder="请输入序号" v-type="'code'" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
@ -50,14 +50,16 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="合格率" prop="pass_rate">
|
<el-form-item label="合格率(%)" prop="pass_rate">
|
||||||
<el-input v-model="formData.pass_rate" type="number" clearable placeholder="请输入合格率" />
|
<el-input v-model="formData.pass_rate" type="number" clearable placeholder="请输入合格率" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="允许偏差" prop="allowable_deviation">
|
<el-form-item label="允许偏差" prop="allowable_deviation">
|
||||||
<el-input v-model="formData.allowable_deviation" type="number" clearable
|
<el-input-number v-model="formData.allowable_deviation" :min="1" :max="10"
|
||||||
placeholder="请输入允许偏差" />
|
placeholder="范围为1-200" class="flex flex-1" />
|
||||||
|
|
||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
@ -153,7 +155,7 @@ const formData = reactive({
|
|||||||
basic_requirements: "",
|
basic_requirements: "",
|
||||||
target_specification: '',
|
target_specification: '',
|
||||||
file: [],
|
file: [],
|
||||||
allowable_deviation: "",
|
allowable_deviation: undefined,
|
||||||
pass_rate: "",
|
pass_rate: "",
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@
|
|||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="收款账号" prop="collection_account">
|
<el-form-item label="收款账号" prop="collection_account">
|
||||||
<el-input v-model="formData.collection_account" clearable placeholder="请输入收款账号" />
|
<el-input v-model="formData.collection_account" clearable placeholder="请输入收款账号" type="number" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="edit-popup">
|
<div class="edit-popup">
|
||||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
<el-form ref="formRef" :model="formData" label-width="130px" :rules="formRules">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="供应商名称" prop="supplier_id" @click="showDialog1 = true" :rules="[
|
<el-form-item label="供应商名称" prop="supplier_id" @click="showDialog1 = true" :rules="[
|
||||||
@ -100,8 +100,9 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="质保金比例(%)" prop="retention_money_rate">
|
<el-form-item label="质保金比例(%)" prop="retention_money_rate">
|
||||||
<el-input v-model="formData.retention_money_rate" clearable placeholder="请输入质保金比例(%)" />
|
<el-input v-model="formData.retention_money_rate" clearable placeholder="请输入质保金比例(%)"
|
||||||
|
type="number" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
@ -159,12 +160,12 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="工作量" prop="num">
|
<el-table-column label="工作量" prop="num">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-input v-model="row.num" />
|
<el-input v-model="row.num" type="number" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="含税单价" prop="price">
|
<el-table-column label="含税单价" prop="price">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-input v-model="row.price" />
|
<el-input v-model="row.price" type="number" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
@ -219,7 +220,9 @@
|
|||||||
</el-date-picker> </template></el-table-column>
|
</el-date-picker> </template></el-table-column>
|
||||||
<el-table-column label="金额" prop="amount">
|
<el-table-column label="金额" prop="amount">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-input v-model="row.amount" /> </template></el-table-column>
|
<el-input v-model="row.amount" type="number" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="备注" prop="remark">
|
<el-table-column label="备注" prop="remark">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="验收类型" prop="accept_type">
|
<el-form-item label="验收类型" prop="accept_type">
|
||||||
<el-select class="flex-1" v-model="formData.accept_type" clearable placeholder="请选择巡视类型">
|
<el-select class="flex-1" v-model="formData.accept_type" clearable placeholder="请选择验收类型">
|
||||||
<el-option v-for="(item, index) in dictData.accept_type" :key="index" :label="item.name"
|
<el-option v-for="(item, index) in dictData.accept_type" :key="index" :label="item.name"
|
||||||
:value="item.value" />
|
:value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="身份证">
|
<el-form-item label="身份证" prop="id_card">
|
||||||
<el-input v-model="formData.id_card" clearable placeholder="请输入身份证" />
|
<el-input v-model="formData.id_card" clearable placeholder="请输入身份证" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -141,6 +141,8 @@ import {
|
|||||||
} from "@/api/supervision_construction_management_personnel";
|
} from "@/api/supervision_construction_management_personnel";
|
||||||
import type { PropType } from "vue";
|
import type { PropType } from "vue";
|
||||||
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig";
|
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig";
|
||||||
|
import { checkIdCard } from "@/utils/validate"
|
||||||
|
|
||||||
|
|
||||||
defineProps({
|
defineProps({
|
||||||
dictData: {
|
dictData: {
|
||||||
@ -246,6 +248,10 @@ const formRules = reactive<any>({
|
|||||||
message: "请输入身份证",
|
message: "请输入身份证",
|
||||||
trigger: ["blur"],
|
trigger: ["blur"],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
validator: checkIdCard,
|
||||||
|
trigger: ['blur']
|
||||||
|
}
|
||||||
],
|
],
|
||||||
technical_title: [
|
technical_title: [
|
||||||
{
|
{
|
||||||
|
@ -41,11 +41,98 @@
|
|||||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<createUserLable :formData="formData" flag></createUserLable>
|
<createUserLable :formData="formData" flag></createUserLable>
|
||||||
|
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
<div style="margin-bottom: 30px;">设备信息</div>
|
||||||
|
<div style="margin-bottom: 30px;">
|
||||||
|
<el-table :data="formData.entry_detail">
|
||||||
|
<template #empty>
|
||||||
|
<span class="cursor-pointer">暂无数据,点击添加 <el-button @click="handleAdd">+</el-button></span>
|
||||||
|
</template>
|
||||||
|
<el-table-column label="序号" width="150px">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-form-item prop="" label-width="0">
|
||||||
|
<el-button @click="handleAdd()">+</el-button>
|
||||||
|
<el-button @click="handleDelete(row)">-</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="设备名称" prop="name">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-form-item prop="" label-width="0">
|
||||||
|
<el-input v-model="scope.row.name"
|
||||||
|
@click="showDialog3 = true, tableIndex = scope.$index" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="设备品牌" prop="brand">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-form-item prop="" label-width="0">
|
||||||
|
<el-input v-model="scope.row.brand" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="计数单位" prop="unit">
|
||||||
|
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-form-item prop="" label-width="0">
|
||||||
|
<el-input v-model="row.unit" v-type="'unit'" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="是否合同约定品牌" prop="contract_brand">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-form-item prop="" label-width="0">
|
||||||
|
<el-select class="flex-1" v-model="row.contract_brand" clearable placeholder="请选择">
|
||||||
|
<el-option label="否" :value="0" />
|
||||||
|
<el-option label="是" :value="1" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="型号" prop="model">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-form-item prop="" label-width="0">
|
||||||
|
<el-input v-model="row.model" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="进场数量" prop="" label-width="0">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`entry_detail[${$index}].entry_number`" :rules="{
|
||||||
|
validator: checkNum,
|
||||||
|
trigger: ['blur']
|
||||||
|
}" label-width="0">
|
||||||
|
<el-input v-model="row.entry_number" />
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="证明文件是否安全" prop="documentation">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-form-item prop="" label-width="0">
|
||||||
|
<el-select class="flex-1" v-model="row.documentation" clearable placeholder="请选择">
|
||||||
|
<el-option label="否" :value="0" />
|
||||||
|
<el-option label="是" :value="1" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="核对是否一致" prop="verify">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-form-item prop="" label-width="0">
|
||||||
|
<el-select class="flex-1" v-model="row.verify" clearable placeholder="请选择">
|
||||||
|
<el-option label="否" :value="0" />
|
||||||
|
<el-option label="是" :value="1" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<formTable :formData="formData.entry_problem" :config="tableConfig" :dictData="dictData"></formTable>
|
||||||
|
|
||||||
|
|
||||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
<dialogTable @customEvent="customEvent" :config="supervision_project" />
|
<dialogTable @customEvent="customEvent" :config="supervision_project" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
@ -56,86 +143,17 @@
|
|||||||
</dialogTable>
|
</dialogTable>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog v-model="showDialog3" title="选择材料信息" width="70%">
|
<el-dialog v-model="showDialog3" title="选择设备信息" width="70%">
|
||||||
<dialogTable :config="supervision_material_equipment_info" :query="{ type: 1 }"
|
<dialogTable :config="supervision_material_equipment_info" :query="{ type: 1 }"
|
||||||
@customEvent="customEvent2">
|
@customEvent="customEvent2">
|
||||||
</dialogTable>
|
</dialogTable>
|
||||||
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<div style="margin-bottom: 30px;">设备信息</div>
|
|
||||||
<div style="margin-bottom: 30px;">
|
|
||||||
<el-table :data="formData.entry_detail">
|
|
||||||
<template #empty>
|
|
||||||
<span class="cursor-pointer">暂无数据,点击添加 <el-button @click="handleAdd">+</el-button></span>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<el-table-column label="序号" width="150px">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<el-button @click="handleAdd()">+</el-button>
|
|
||||||
<el-button @click="handleDelete(row)">-</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="设备名称" prop="name">
|
|
||||||
|
|
||||||
<template #default="scope">
|
|
||||||
<el-input v-model="scope.row.name" @click="showDialog3 = true, tableIndex = scope.$index" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="设备品牌" prop="brand">
|
|
||||||
|
|
||||||
<template #default="scope">
|
|
||||||
<el-input v-model="scope.row.brand" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="计数单位" prop="unit">
|
|
||||||
|
|
||||||
<template #default="{ row }">
|
|
||||||
<el-input v-model="row.unit" v-type="'unit'" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="是否合同约定品牌" prop="contract_brand">
|
|
||||||
|
|
||||||
<template #default="{ row }">
|
|
||||||
<el-select class="flex-1" v-model="row.contract_brand" clearable placeholder="请选择">
|
|
||||||
<el-option label="否" :value="0" />
|
|
||||||
<el-option label="是" :value="1" />
|
|
||||||
</el-select>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="型号" prop="model">
|
|
||||||
|
|
||||||
<template #default="{ row }">
|
|
||||||
<el-input v-model="row.model" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="进场数量" prop="entry_number">
|
|
||||||
|
|
||||||
<template #default="{ row }">
|
|
||||||
<el-input v-model="row.entry_number" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="证明文件是否安全" prop="documentation">
|
|
||||||
|
|
||||||
<template #default="{ row }">
|
|
||||||
<el-select class="flex-1" v-model="row.documentation" clearable placeholder="请选择">
|
|
||||||
<el-option label="否" :value="0" />
|
|
||||||
<el-option label="是" :value="1" />
|
|
||||||
</el-select>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="核对是否一致" prop="verify">
|
|
||||||
|
|
||||||
<template #default="{ row }">
|
|
||||||
<el-select class="flex-1" v-model="row.verify" clearable placeholder="请选择">
|
|
||||||
<el-option label="否" :value="0" />
|
|
||||||
<el-option label="是" :value="1" />
|
|
||||||
</el-select>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
<formTable :formData="formData.entry_problem" :config="tableConfig" :dictData="dictData"></formTable>
|
|
||||||
|
|
||||||
</popup>
|
</popup>
|
||||||
</div>
|
</div>
|
||||||
@ -223,7 +241,8 @@ const handleAdd = () => {
|
|||||||
"contract_brand": 0,
|
"contract_brand": 0,
|
||||||
"entry_number": 0,
|
"entry_number": 0,
|
||||||
"documentation": 0,
|
"documentation": 0,
|
||||||
"verify": 0
|
"verify": 0,
|
||||||
|
number: 0
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const handleDelete = async (row: any) => {
|
const handleDelete = async (row: any) => {
|
||||||
@ -253,11 +272,26 @@ const customEvent1 = (e) => {
|
|||||||
showDialog2.value = false
|
showDialog2.value = false
|
||||||
}
|
}
|
||||||
const customEvent2 = (e) => {
|
const customEvent2 = (e) => {
|
||||||
let { name, brand, model, unit, contract_brand, entry_number, documentation, verify } = e
|
let { name, brand, model, unit, contract_brand, entry_number, documentation, verify, number } = e
|
||||||
Object.assign(formData.entry_detail[tableIndex.value], { name, brand, model, unit, contract_brand, entry_number, documentation, verify })
|
Object.assign(formData.entry_detail[tableIndex.value], { name, brand, model, unit, contract_brand, entry_number, documentation, verify, number })
|
||||||
showDialog3.value = false
|
showDialog3.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const checkNum = (rule: any, value: any, callback: any, source) => {
|
||||||
|
const regex = /\[(\d+)\]/; // 匹配方括号内的数字,也就是table的下标
|
||||||
|
let index = 0
|
||||||
|
|
||||||
|
for (let key in source) {
|
||||||
|
index = key.match(regex)[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
(+value) > (+formData.entry_detail[index].number)
|
||||||
|
? callback(new Error(`超过设备计划数量(${formData.entry_detail[index].number})`))
|
||||||
|
: callback()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 表单验证
|
// 表单验证
|
||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
project_id: [{
|
project_id: [{
|
||||||
|
@ -178,6 +178,9 @@ const chekcDate = (rule: any, value: any, callback: any) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
project_id: [{
|
project_id: [{
|
||||||
required: true,
|
required: true,
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="edit-popup">
|
<div class="edit-popup">
|
||||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit"
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||||
@close="handleClose">
|
|
||||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
@ -12,18 +11,17 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="分部分项工程" prop="partial_project">
|
<el-form-item label="分部分项工程" prop="partial_project">
|
||||||
<el-select class="flex-1" v-model="formData.partial_project" clearable
|
<el-select class="flex-1" v-model="formData.partial_project" clearable placeholder="请选择分部分项工程">
|
||||||
placeholder="请选择分部分项工程">
|
<el-option v-for="(item, index) in dictData.partial_project" :key="index" :label="item.name"
|
||||||
<el-option v-for="(item, index) in dictData.partial_project" :key="index"
|
:value="parseInt(item.value)" />
|
||||||
:label="item.name" :value="parseInt(item.value)" />
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="归属年月" prop="attribution_date">
|
<el-form-item label="归属年月" prop="attribution_date">
|
||||||
|
|
||||||
<el-date-picker class="flex-1 !flex" v-model="formData.attribution_date" clearable
|
<el-date-picker class="flex-1 !flex" v-model="formData.attribution_date" clearable type="month"
|
||||||
type="month" value-format="YYYY-MM" placeholder="请选择日期">
|
value-format="YYYY-MM" placeholder="请选择日期">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -113,7 +111,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="检查时间">
|
<el-form-item label="检查时间" prop="check_time">
|
||||||
<el-date-picker class="flex-1 !flex" v-model="formData.check_time" clearable
|
<el-date-picker class="flex-1 !flex" v-model="formData.check_time" clearable
|
||||||
value-format="YYYY-MM-DD" placeholder="选择检查时间">
|
value-format="YYYY-MM-DD" placeholder="选择检查时间">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
@ -225,6 +223,17 @@ const customEvent = (e) => {
|
|||||||
formData.project_name = e.project_name
|
formData.project_name = e.project_name
|
||||||
showDialog.value = false
|
showDialog.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const chekcDate = (rule: any, value: any, callback: any) => {
|
||||||
|
if (new Date(formData.check_time) < new Date(formData.actual_construction_time)) {
|
||||||
|
callback(new Error('检查时间不能早于实际施工时间 '))
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 表单验证
|
// 表单验证
|
||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
project_id: [{
|
project_id: [{
|
||||||
@ -259,27 +268,27 @@ const formRules = reactive<any>({
|
|||||||
}],
|
}],
|
||||||
is_discuss: [{
|
is_discuss: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入是否已经专家组论证 0-否 1-是',
|
message: '请输入是否已经专家组论证',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
is_modify: [{
|
is_modify: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入是否已按专家意见修改 0-否 1-是',
|
message: '请输入是否已按专家意见修改',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
is_agree: [{
|
is_agree: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入监理审批是否同意 0-否 1-是',
|
message: '请输入监理审批是否同意',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
is_accept: [{
|
is_accept: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入是否实施验收 0-否 1-是',
|
message: '请输入是否实施验收',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
is_accept_to_plan: [{
|
is_accept_to_plan: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入是否按方案实施验收 0-否 1-是',
|
message: '请输入是否按方案实施验收',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
check_user: [{
|
check_user: [{
|
||||||
@ -291,6 +300,10 @@ const formRules = reactive<any>({
|
|||||||
required: true,
|
required: true,
|
||||||
message: '请输入检查时间',
|
message: '请输入检查时间',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: chekcDate,
|
||||||
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
problems_rectification: [{
|
problems_rectification: [{
|
||||||
required: true,
|
required: true,
|
||||||
@ -304,12 +317,12 @@ const formRules = reactive<any>({
|
|||||||
}],
|
}],
|
||||||
exceed_the_control_value: [{
|
exceed_the_control_value: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入是否超控制值 0-否 1-是',
|
message: '请输入是否超控制值',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
exceed_the_warning_value: [{
|
exceed_the_warning_value: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入是否超预警值 0-否 1-是',
|
message: '请输入是否超预警值',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
control_measures: [{
|
control_measures: [{
|
||||||
|
@ -300,14 +300,12 @@ const customEvent1 = (e) => {
|
|||||||
|
|
||||||
const chekcDate = (rule: any, value: any, callback: any) => {
|
const chekcDate = (rule: any, value: any, callback: any) => {
|
||||||
if (new Date(formData.end_time) < new Date(formData.start_time)) {
|
if (new Date(formData.end_time) < new Date(formData.start_time)) {
|
||||||
callback(new Error('巡视结束时间早于巡视开始时间'))
|
callback(new Error('巡视结束时间不能早于巡视开始时间'))
|
||||||
} else {
|
} else {
|
||||||
callback()
|
callback()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 表单验证
|
// 表单验证
|
||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
project_id: [{
|
project_id: [{
|
||||||
|
@ -40,12 +40,12 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<formTable :formData="formData.detail" :config="tableConfig"></formTable>
|
||||||
<el-dialog v-model="showDialog2" title="选择来源单据" width="70%">
|
<el-dialog v-model="showDialog2" title="选择来源单据" width="70%">
|
||||||
<dialogTable :config="supervision_material_entry" @customEvent="customEvent1"
|
<dialogTable :config="supervision_material_entry" @customEvent="customEvent1"
|
||||||
:query="{ parallel_test: 1 }"></dialogTable>
|
:query="{ parallel_test: 1 }"></dialogTable>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</el-form>
|
</el-form>
|
||||||
<formTable :formData="formData.detail" :config="tableConfig"></formTable>
|
|
||||||
</popup>
|
</popup>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -92,6 +92,19 @@ const formData = reactive({
|
|||||||
"detail": []
|
"detail": []
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const checkNum = (rule: any, value: any, callback: any, source) => {
|
||||||
|
const regex = /\[(\d+)\]/; // 匹配方括号内的数字,也就是table的下标
|
||||||
|
let index = 0
|
||||||
|
|
||||||
|
for (let key in source) {
|
||||||
|
index = key.match(regex)[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
(+formData.detail[index].num) > (+formData.detail[index].entry_number)
|
||||||
|
? callback(new Error(`超过进场数量(${formData.detail[index].entry_number})`))
|
||||||
|
: callback()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const tableConfig = reactive(
|
const tableConfig = reactive(
|
||||||
{
|
{
|
||||||
@ -135,6 +148,7 @@ const tableConfig = reactive(
|
|||||||
{
|
{
|
||||||
label: "检验数量",
|
label: "检验数量",
|
||||||
value: 'num',
|
value: 'num',
|
||||||
|
check: ['detail', checkNum]
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
deleteApi: apisupervision_material_parallel_testing_delete
|
deleteApi: apisupervision_material_parallel_testing_delete
|
||||||
|
@ -57,15 +57,15 @@
|
|||||||
@click="handleDetail(row.id)">
|
@click="handleDetail(row.id)">
|
||||||
详情
|
详情
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button type="primary" link>
|
||||||
<router-link :to="{
|
<router-link :to="{
|
||||||
path: '/supervision/supervision_work/supervision_material_parallel_testing_detail',
|
path: '/supervision/supervision_work/supervision_material_parallel_testing_detail',
|
||||||
query: { id: row.id }
|
query: { id: row.id }
|
||||||
}">
|
}">
|
||||||
<el-button type="primary" link>
|
|
||||||
明细
|
明细
|
||||||
</el-button>
|
</router-link>
|
||||||
</router-link>
|
</el-button>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
@ -101,11 +101,6 @@ const formData = reactive({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//电话
|
|
||||||
function checkPhone1(rules: any, value: any, callback: any) {
|
|
||||||
console.log(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
const tableConfig = reactive(
|
const tableConfig = reactive(
|
||||||
{
|
{
|
||||||
title: "联系人",
|
title: "联系人",
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="资质状态 ">
|
<el-form-item label="资质状态 ">
|
||||||
<el-select class="flex-1" v-model="formData.qualification_status" clearable placeholder="请选择部门">
|
<el-select class="flex-1" v-model="formData.qualification_status" clearable placeholder="请选择资质状态">
|
||||||
<el-option label="有效" :value="0" />
|
<el-option label="有效" :value="0" />
|
||||||
<el-option label="无效" :value="1" />
|
<el-option label="无效" :value="1" />
|
||||||
</el-select>
|
</el-select>
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-perms="['supervision_work.supervision_problem/detail']" link
|
<el-button v-perms="['supervision_work.supervision_problem/detail']" link
|
||||||
@click="handleDetail(row.id)">
|
@click="handleDetail(row.id)" v-if="row.is_rectification != 0">
|
||||||
详情
|
详情
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
@ -144,7 +144,7 @@ import Popup from '@/components/popup/index.vue'
|
|||||||
import { apiSupervisionSafetyManagementPersonnelAdd, apiSupervisionSafetyManagementPersonnelEdit, } from '@/api/supervision_safety_management_personnel'
|
import { apiSupervisionSafetyManagementPersonnelAdd, apiSupervisionSafetyManagementPersonnelEdit, } from '@/api/supervision_safety_management_personnel'
|
||||||
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig"
|
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig"
|
||||||
import type { PropType } from 'vue'
|
import type { PropType } from 'vue'
|
||||||
import { checkIdcard, checkPhone } from "@/utils/validate"
|
import { checkIdCard } from "@/utils/validate"
|
||||||
|
|
||||||
|
|
||||||
defineProps({
|
defineProps({
|
||||||
@ -249,7 +249,7 @@ const formRules = reactive<any>({
|
|||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
validator: checkIdcard,
|
validator: checkIdCard,
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -86,7 +86,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="旁站人员" prop="side_station_user">
|
<el-form-item label="旁站人员" prop="side_station_user">
|
||||||
<el-input v-model="formData.side_station_user" clearable placeholder="请输入关注人" />
|
<el-input v-model="formData.side_station_user" clearable placeholder="请输入旁站人员" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
@ -209,7 +209,7 @@ const tableConfig = reactive(
|
|||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "检查类容",
|
label: "检查内容",
|
||||||
value: 'check_content'
|
value: 'check_content'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -59,6 +59,8 @@ import Popup from '@/components/popup/index.vue'
|
|||||||
import { apiSupervisionSpecialOperationPersonnelAdd, apiSupervisionSpecialOperationPersonnelEdit, } from '@/api/supervision_special_operation_personnel'
|
import { apiSupervisionSpecialOperationPersonnelAdd, apiSupervisionSpecialOperationPersonnelEdit, } from '@/api/supervision_special_operation_personnel'
|
||||||
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig"
|
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig"
|
||||||
import type { PropType } from 'vue'
|
import type { PropType } from 'vue'
|
||||||
|
import { checkIdCard } from "@/utils/validate"
|
||||||
|
|
||||||
defineProps({
|
defineProps({
|
||||||
dictData: {
|
dictData: {
|
||||||
type: Object as PropType<Record<string, any[]>>,
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
@ -145,6 +147,10 @@ const formRules = reactive<any>({
|
|||||||
required: true,
|
required: true,
|
||||||
message: '请输入身份证',
|
message: '请输入身份证',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: checkIdCard,
|
||||||
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
validity_period: [{
|
validity_period: [{
|
||||||
required: true,
|
required: true,
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="edit-popup">
|
<div class="edit-popup">
|
||||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit"
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||||
@close="handleClose">
|
|
||||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
@ -47,6 +46,7 @@
|
|||||||
<createUserLable :formData="formData" flag></createUserLable>
|
<createUserLable :formData="formData" flag></createUserLable>
|
||||||
|
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<formTable :formData="formData.sampling_detail" :config="tableConfig"></formTable>
|
||||||
|
|
||||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
<dialogTable @customEvent="customEvent" :config="supervision_project" />
|
<dialogTable @customEvent="customEvent" :config="supervision_project" />
|
||||||
@ -56,7 +56,6 @@
|
|||||||
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</el-form>
|
</el-form>
|
||||||
<formTable :formData="formData.sampling_detail" :config="tableConfig"></formTable>
|
|
||||||
|
|
||||||
</popup>
|
</popup>
|
||||||
</div>
|
</div>
|
||||||
@ -110,6 +109,21 @@ const formData = reactive({
|
|||||||
sampling_detail: []
|
sampling_detail: []
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const checkNum = (rule: any, value: any, callback: any, source) => {
|
||||||
|
const regex = /\[(\d+)\]/; // 匹配方括号内的数字,也就是table的下标
|
||||||
|
let index = 0
|
||||||
|
|
||||||
|
for (let key in source) {
|
||||||
|
index = key.match(regex)[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
(+value) > (+formData.sampling_detail[index].entry_number)
|
||||||
|
? callback(new Error(`超过进场数量(${formData.sampling_detail[index].entry_number})`))
|
||||||
|
: callback()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const tableConfig = reactive(
|
const tableConfig = reactive(
|
||||||
{
|
{
|
||||||
title: "材料信息",
|
title: "材料信息",
|
||||||
@ -151,6 +165,8 @@ const tableConfig = reactive(
|
|||||||
{
|
{
|
||||||
label: "取样数量",
|
label: "取样数量",
|
||||||
value: 'num',
|
value: 'num',
|
||||||
|
check: ['sampling_detail', checkNum]
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
],
|
],
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
<el-table-column label="取样日期" prop="sampling_date" show-overflow-tooltip />
|
<el-table-column label="取样日期" prop="sampling_date" show-overflow-tooltip />
|
||||||
<el-table-column label="见证人" prop="witness" show-overflow-tooltip />
|
<el-table-column label="见证人" prop="witness" show-overflow-tooltip />
|
||||||
<el-table-column label="取样人" prop="sampler" show-overflow-tooltip />
|
<el-table-column label="取样人" prop="sampler" show-overflow-tooltip />
|
||||||
<el-table-column label="操作" width="120" fixed="right">
|
<el-table-column label="操作" width="170" fixed="right">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button v-perms="['supervision_work.supervision_witness_sampling/edit']" type="primary" link
|
<el-button v-perms="['supervision_work.supervision_witness_sampling/edit']" type="primary" link
|
||||||
@click="handleEdit(row)">
|
@click="handleEdit(row)">
|
||||||
|
@ -364,6 +364,7 @@ const submituser = (e: any) => {
|
|||||||
|
|
||||||
|
|
||||||
const checkDate = (rule: any, value: any, callback: any, source) => {
|
const checkDate = (rule: any, value: any, callback: any, source) => {
|
||||||
|
|
||||||
const regex = /\[(\d+)\]/; // 匹配方括号内的数字,也就是table的下标
|
const regex = /\[(\d+)\]/; // 匹配方括号内的数字,也就是table的下标
|
||||||
let index = 0
|
let index = 0
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user