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="操作">
|
||||
<template #default="{ row }">
|
||||
<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="handleDelete(row)">-</el-button>
|
||||
</div>
|
||||
@ -20,38 +20,51 @@
|
||||
<template #default="{ row, $index }">
|
||||
<!-- 下拉框 -->
|
||||
<el-form-item v-if="item.select" label-width="0">
|
||||
<el-select v-model="row[item.value]">
|
||||
<el-option v-for="items in (Array.isArray(item.select) ? item.select : dictData[item.select])"
|
||||
:label="items.name" :value="items.value"></el-option>
|
||||
</el-select>
|
||||
<div class="my-0 mx-auto">
|
||||
<el-select v-model="row[item.value]">
|
||||
<el-option
|
||||
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 v-else-if="item.date" :prop="`${item.check[0]}[${$index}].${item.value}`" :rules="item?.check ? {
|
||||
validator: item.check[1],
|
||||
trigger: ['blur'],
|
||||
} : ''" label-width="0">
|
||||
<el-form-item v-else-if="item.date && !item.check" 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.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 : ''"
|
||||
label-width="0">
|
||||
<el-input v-model="row[item.value]"
|
||||
@input="row[item.value] = row[item.value].replace(/\d+/g, '')" />
|
||||
</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],
|
||||
trigger: ['blur'],
|
||||
} : ''">
|
||||
<el-input v-model="row[item.value]" :type="item.type == 'number' ? 'number' : 'text'" />
|
||||
</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-form-item>
|
||||
</template>
|
||||
@ -97,7 +110,7 @@ const getInitialData = () => {
|
||||
acc[curr] = '';
|
||||
return acc;
|
||||
}, {});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
const handleAdd = () => {
|
||||
@ -113,4 +126,5 @@ const handleDelete = async (row: any) => {
|
||||
props.formData.splice(index, 1);
|
||||
};
|
||||
|
||||
|
||||
</script>
|
||||
|
@ -22,9 +22,8 @@ export function isEmail(data: string) {
|
||||
}
|
||||
|
||||
// input框校验
|
||||
//电话
|
||||
// 电话
|
||||
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(
|
||||
value
|
||||
)
|
||||
@ -40,8 +39,9 @@ export function checkEmail(rules: any, value: any, callback: any) {
|
||||
}
|
||||
|
||||
//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)
|
||||
? callback()
|
||||
: callback(new Error("请输入正确的身份证号码"));
|
||||
}
|
||||
|
||||
|
@ -140,8 +140,8 @@
|
||||
</el-form-item>
|
||||
|
||||
</el-col> <el-col :span="8">
|
||||
<el-form-item label="账号" prop="bank_accnout">
|
||||
<el-input v-model="formData.bank_accnout" clearable placeholder="请输入开票公司名称" type="number" />
|
||||
<el-form-item label="银行账号" prop="bank_accnout">
|
||||
<el-input v-model="formData.bank_accnout" clearable placeholder="请输入银行账号" type="number" />
|
||||
</el-form-item>
|
||||
|
||||
</el-col> <el-col :span="8">
|
||||
|
@ -40,7 +40,10 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<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"
|
||||
value-format="YYYY-MM-DD" placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
@ -184,6 +187,15 @@ const popupTitle = computed(() => {
|
||||
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({
|
||||
id: '',
|
||||
|
@ -133,13 +133,13 @@
|
||||
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="收款开户银行" prop="payee_bank"
|
||||
<el-form-item label="银行名称" prop="payee_bank"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.payee_bank" clearable placeholder="请输入开户银行" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<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' }]">
|
||||
<el-input v-model="formData.payee_account_name" clearable placeholder="请输入收款开户银行名称" />
|
||||
</el-form-item>
|
||||
|
@ -220,12 +220,12 @@ const customEvent1 = (e: any) => {
|
||||
|
||||
//获取税率Name
|
||||
const getTaxValue = (value) => {
|
||||
let i = props.dictData.tax_rate.findIndex((item) => item.value == value)
|
||||
return (props.dictData.tax_rate[i]?.name / 100) || 0
|
||||
let i = dictData.tax_rate.findIndex((item) => item.value == value)
|
||||
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.amount_excluding_tax = (formData.invoice_amount - formData.tax).toFixed(2)
|
||||
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
|
||||
project_name.value = data.project_name
|
||||
project_code.value = data.project_code
|
||||
amountinput()
|
||||
setTimeout(() => {
|
||||
amountinput()
|
||||
}, 700)
|
||||
|
||||
|
||||
}
|
||||
@ -308,9 +310,7 @@ const handleSubmit = async () => {
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
|
||||
getAllProjectTypes().then((res) => {
|
||||
|
||||
protype.splice('', protype.length, ...res);
|
||||
})
|
||||
}
|
||||
|
@ -164,12 +164,6 @@ const handledetail = async (data: any) => {
|
||||
|
||||
const table = ref('')
|
||||
|
||||
setTimeout(() => {
|
||||
table.value.doLayout()
|
||||
|
||||
console.log(table.value)
|
||||
console.log("出发了")
|
||||
}, 3000);
|
||||
|
||||
|
||||
if (route.query?.listId) {
|
||||
|
@ -239,7 +239,7 @@ const amountinput = (e) => {
|
||||
}
|
||||
// 弹窗标题
|
||||
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
|
||||
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>({
|
||||
project_id: [{
|
||||
@ -124,7 +134,13 @@ const formRules = reactive<any>({
|
||||
required: true,
|
||||
message: '请输入收文日期',
|
||||
trigger: ['blur']
|
||||
}],
|
||||
},
|
||||
{
|
||||
validator: chekcDate,
|
||||
trigger: ['blur']
|
||||
}
|
||||
|
||||
],
|
||||
read_user: [{
|
||||
required: true,
|
||||
message: '请输入传阅人',
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<el-form ref="formRef" :model="formData" label-width="150px" :rules="formRules">
|
||||
<el-form-item label="项目名称" prop="project_name">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
|
||||
@click="showDialog = true" />
|
||||
@ -11,7 +11,7 @@
|
||||
value-format="YYYY-MM" placeholder="请选择日期">
|
||||
</el-date-picker>
|
||||
</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-form-item>
|
||||
<el-form-item label="工程状态" prop="status">
|
||||
@ -31,7 +31,6 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" prop="annex">
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<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({
|
||||
|
@ -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>({
|
||||
@ -380,6 +385,10 @@ const formRules = reactive<any>({
|
||||
required: true,
|
||||
message: '请输入立项日期',
|
||||
trigger: ['blur']
|
||||
},
|
||||
{
|
||||
validator: chekcDate2,
|
||||
trigger: ['blur']
|
||||
}],
|
||||
project_leader: [{
|
||||
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()
|
||||
}
|
||||
const area_change = (e: any) => {
|
||||
formData.dept_id = '';
|
||||
formData.job_id = '';
|
||||
if (!e) return
|
||||
depts.value = []
|
||||
deptAll({ org_id: e }).then((res) => {
|
||||
Object.assign(depts.value, res)
|
||||
@ -189,6 +192,7 @@ const area_change = (e: any) => {
|
||||
}
|
||||
const area_change1 = (e: any) => {
|
||||
jobs.value = []
|
||||
if (!e) return
|
||||
jobsAll({ dept_id: e }).then((res) => {
|
||||
Object.assign(jobs.value, res)
|
||||
formData.job_id = ''
|
||||
|
@ -3,41 +3,22 @@
|
||||
<el-card class="!border-none" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="formData" inline>
|
||||
<el-form-item label="管理员账号">
|
||||
<el-input
|
||||
v-model="formData.account"
|
||||
class="w-[280px]"
|
||||
clearable
|
||||
@keyup.enter="resetPage"
|
||||
/>
|
||||
<el-input v-model="formData.account" class="w-[280px]" clearable @keyup.enter="resetPage" />
|
||||
</el-form-item>
|
||||
<el-form-item label="管理员名称">
|
||||
<el-input
|
||||
v-model="formData.name"
|
||||
class="w-[280px]"
|
||||
clearable
|
||||
@keyup.enter="resetPage"
|
||||
/>
|
||||
<el-input v-model="formData.name" class="w-[280px]" clearable @keyup.enter="resetPage" />
|
||||
</el-form-item>
|
||||
<el-form-item label="管理员角色">
|
||||
<el-select class="w-[280px]" v-model="formData.role_id">
|
||||
<el-option label="全部" value="" />
|
||||
<el-option
|
||||
v-for="(item, index) in optionsData.role"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
<el-option v-for="(item, index) in optionsData.role" :key="index" :label="item.name"
|
||||
:value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
<export-data
|
||||
class="ml-2.5"
|
||||
:fetch-fun="adminLists"
|
||||
:params="formData"
|
||||
:page-size="pager.size"
|
||||
/>
|
||||
<export-data class="ml-2.5" :fetch-fun="adminLists" :params="formData" :page-size="pager.size" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@ -58,49 +39,24 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="账号" prop="account" min-width="100" />
|
||||
<el-table-column label="名称" prop="name" min-width="100" />
|
||||
<el-table-column
|
||||
label="角色"
|
||||
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="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="login_time" min-width="180" />
|
||||
<el-table-column label="最近登录IP" prop="login_ip" min-width="120" />
|
||||
<el-table-column label="状态" min-width="100" v-perms="['auth.admin/edit']">
|
||||
<template #default="{ row }">
|
||||
<el-switch
|
||||
v-if="row.root != 1"
|
||||
v-model="row.disable"
|
||||
:active-value="0"
|
||||
:inactive-value="1"
|
||||
@change="changeStatus(row)"
|
||||
/>
|
||||
<el-switch v-if="row.root != 1" v-model="row.disable" :active-value="0" :inactive-value="1"
|
||||
@change="changeStatus(row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['auth.admin/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
<el-button v-perms="['auth.admin/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.root != 1"
|
||||
v-perms="['auth.admin/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
<el-button v-if="row.root != 1" v-perms="['auth.admin/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="160px" :rules="formRules">
|
||||
<el-form ref="formRef" :model="formData" label-width="170px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目" prop="project_id" @click="showDialog = true"
|
||||
@ -13,26 +13,26 @@
|
||||
<el-input v-model="project_code" readonly clearable placeholder="请选择项目" />
|
||||
</el-form-item> </el-col>
|
||||
<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
|
||||
placeholder="请输入材料预算花费比例(%)" />
|
||||
placeholder="请输入材料预算花费比例(%)" />
|
||||
</el-form-item> </el-col>
|
||||
<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
|
||||
placeholder="请输入人工预算花费比例(%)" />
|
||||
placeholder="请输入人工预算花费比例(%)" />
|
||||
</el-form-item> </el-col>
|
||||
<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
|
||||
placeholder="请输入费用预算花费比例(%)" />
|
||||
placeholder="请输入费用预算花费比例(%)" />
|
||||
</el-form-item> </el-col>
|
||||
|
||||
|
||||
<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
|
||||
placeholder="请输入分包预算花费比例(%)" />
|
||||
placeholder="请输入分包预算花费比例(%)" />
|
||||
</el-form-item> </el-col>
|
||||
|
||||
</el-row>
|
||||
|
@ -34,13 +34,12 @@
|
||||
|
||||
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="材料预算花费比例(%)(%)" prop="material_budget_expenditure_ratio"
|
||||
show-overflow-tooltip />
|
||||
<el-table-column label="材料预算花费比例(%)" prop="material_budget_expenditure_ratio" 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="subcontract_budget_expenditure_ratio"
|
||||
<el-table-column label="费用预算花费比例(%)" prop="cost_budget_expenditure_ratio" show-overflow-tooltip />
|
||||
<el-table-column label="分包预算花费比例(%)" prop="subcontract_budget_expenditure_ratio"
|
||||
show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="170" fixed="right">
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="60%" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="60%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-row>
|
||||
|
||||
<el-col :span="8">
|
||||
@ -17,8 +16,8 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="日期" prop="attendance_date">
|
||||
<el-date-picker class="flex-1 !flex" clearable v-model="formData.attendance_date"
|
||||
type="date" value-format="YYYY-MM-DD" placeholder="选择日期">
|
||||
<el-date-picker class="flex-1 !flex" clearable v-model="formData.attendance_date" type="date"
|
||||
value-format="YYYY-MM-DD" placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -45,20 +44,19 @@
|
||||
<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"
|
||||
placeholder="请选择" />
|
||||
placeholder="请选择" class="flex-1 flex" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<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"
|
||||
placeholder="请选择" />
|
||||
placeholder="请选择" class="flex-1 flex" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="记工数量" prop="work_record_num">
|
||||
<el-input v-model="formData.work_record_num" type="number" clearable
|
||||
placeholder="请输入记工数量" />
|
||||
<el-input v-model="formData.work_record_num" type="number" clearable placeholder="请输入记工数量" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
@ -114,9 +112,6 @@ import Popup from '@/components/popup/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import { attendancedetailAdd, attendancedetailEdit, attendancedetailDetail } from '@/api/project_attendance_detail'
|
||||
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({
|
||||
project: Object
|
||||
})
|
||||
@ -129,13 +124,9 @@ const showDialog1 = ref(false)
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
const idcard = ref('')
|
||||
const people = ref('')
|
||||
const work_type = ref('')
|
||||
import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
const userStore = useUserStore();
|
||||
const formDataannex = reactive([])
|
||||
const userInfo = userStore.userInfo
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
@ -172,7 +163,7 @@ if (props.project) customEvent(props.project);
|
||||
|
||||
const customEvent1 = (e) => {
|
||||
formData.person_id = e.id
|
||||
formData.people = e.name
|
||||
formData.person_name = e.name
|
||||
idcard.value = e.idcard
|
||||
work_type.value = e.work_type_text
|
||||
showDialog1.value = false
|
||||
@ -182,26 +173,6 @@ const customEvent1 = (e) => {
|
||||
const popupTitle = computed(() => {
|
||||
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>({
|
||||
@ -213,18 +184,6 @@ const formRules = reactive<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) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
@ -234,7 +193,6 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
project_name.value = data.project_name
|
||||
project_code.value = data.project_code
|
||||
idcard.value = data.person_idcard
|
||||
// people.value = data.person_name
|
||||
work_type.value = data.work_type_text
|
||||
}
|
||||
|
||||
@ -248,9 +206,6 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = formDataannex.map((item: any) => item.uri)
|
||||
}
|
||||
await formRef.value?.validate()
|
||||
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}` : ""
|
||||
|
@ -148,14 +148,9 @@ import projectDialog from '@/components/project/index.vue'
|
||||
import { attendanceRecordAdd, attendanceRecordEdit, attendanceRecordDetail } from '@/api/project_attendance_record'
|
||||
import { attendancedetailDelete, attendancedetailLists } from '@/api/project_attendance_detail'
|
||||
import projectPersonnel from '@/components/project_personnel/index.vue'
|
||||
import type { PropType } from 'vue'
|
||||
import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
import { watch } from "vue"
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { cloneDeep } from 'lodash'
|
||||
|
||||
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
|
||||
let props = defineProps({
|
||||
project: Object
|
||||
})
|
||||
@ -165,7 +160,7 @@ const formData = reactive({
|
||||
project_id: '',
|
||||
attendance_date: '',
|
||||
remark: '',
|
||||
file: '',
|
||||
annex: '',
|
||||
attendance_detail: [],
|
||||
|
||||
})
|
||||
@ -178,15 +173,10 @@ const showDialog = ref(false)
|
||||
const showDialog1 = ref(false)
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
// const renshu = ref('')
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
const userStore = useUserStore();
|
||||
const formDataannex = reactive([])
|
||||
const userInfo = userStore.userInfo
|
||||
|
||||
const handleAdd = (row: any) => {
|
||||
// const index = formData.attendance_detail.indexOf(row);
|
||||
// formData.attendance_detail.splice(index + 1, 0, {});
|
||||
formData.attendance_detail.push({})
|
||||
};
|
||||
const handleDelete = async (row: any) => {
|
||||
|
@ -27,8 +27,8 @@
|
||||
<el-form-item label="收款金额" prop="sk_amount">
|
||||
<el-input v-model="formData.sk_amount" clearable placeholder="请输入收款金额" type="number" />
|
||||
</el-form-item>
|
||||
<el-form-item label="提成比例(%)(%)" prop="tc_rate">
|
||||
<el-input v-model="formData.tc_rate" clearable placeholder="请输入提成比例(%)(%)" type="number" />
|
||||
<el-form-item label="提成比例(%)" prop="tc_rate">
|
||||
<el-input v-model="formData.tc_rate" clearable placeholder="请输入提成比例(%)" type="number" />
|
||||
</el-form-item>
|
||||
<el-form-item label="应提成金额" prop="tc_amount">
|
||||
<el-input v-model="formData.tc_amount" clearable placeholder="请输入应提成金额" type="number" />
|
||||
|
@ -15,8 +15,7 @@
|
||||
</el-form-item> </el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名" @click="showDialog1 = true"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="姓名" @click="showDialog1 = true">
|
||||
<el-input v-model="person_name" clearable placeholder="请选择项目人员" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
@ -32,8 +31,10 @@
|
||||
</el-date-picker>
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="到期日期" prop="due_date"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="到期日期" prop="due_date" :rules="{
|
||||
validator: chekcDate,
|
||||
trigger: ['blur']
|
||||
}">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.due_date" clearable type="date"
|
||||
value-format="YYYY-MM-DD" placeholder="选择到期日期">
|
||||
</el-date-picker>
|
||||
@ -119,9 +120,7 @@ const idcard = ref('')
|
||||
|
||||
import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
const userStore = useUserStore();
|
||||
const formDataannex = reactive([])
|
||||
const userInfo = userStore.userInfo
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
@ -141,6 +140,13 @@ const formData = reactive({
|
||||
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) => {
|
||||
@ -168,6 +174,7 @@ const popupTitle = computed(() => {
|
||||
|
||||
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
|
@ -14,8 +14,7 @@
|
||||
<el-input class="w-[220px]" v-model="project_code" clearable placeholder="请输入项目编码" disabled />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名" @click="showDialog1 = true"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="姓名" @click="showDialog1 = true">
|
||||
<el-input class="w-[220px]" v-model="person_name" clearable placeholder="请选择项目人员" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
|
@ -136,9 +136,8 @@ import salescontractDialog from '@/components/contract/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import { appointmentAdd, appointmentEdit, appointmentDetail } from '@/api/appointment'
|
||||
import type { PropType } from 'vue'
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
const protype = ref()
|
||||
const userStore = useUserStore();
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
|
||||
const contract_name = ref('')
|
||||
const project_name = ref('')
|
||||
@ -146,7 +145,6 @@ const project_code = ref('')
|
||||
const contract_no = ref('')
|
||||
const custom_name = ref('')
|
||||
const manage_name = ref('')
|
||||
const userInfo = userStore.userInfo
|
||||
const personnel = ref<any>()
|
||||
|
||||
|
||||
@ -160,8 +158,6 @@ const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const amount_daxie = ref('')
|
||||
const showDialog = ref(false)
|
||||
const showDialog1 = ref(false)
|
||||
const showDialog2 = ref(false)
|
||||
|
||||
@ -176,6 +172,9 @@ const customEvent2 = (e: any) => {
|
||||
formData.project_id = e.id;
|
||||
project_name.value = e.name;
|
||||
project_code.value = e.project_code;
|
||||
// formData.project_type_id = e.project_type;
|
||||
|
||||
|
||||
custom_name.value = e.custom_name;
|
||||
contract_name.value = ''
|
||||
contract_no.value = ''
|
||||
@ -277,7 +276,9 @@ const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
getAllProjectTypes().then(res => {
|
||||
protype.value = res
|
||||
})
|
||||
|
||||
|
||||
defineExpose({
|
||||
|
@ -27,7 +27,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<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-form-item>
|
||||
</el-col>
|
||||
@ -160,7 +160,7 @@ const checkPhone = (rule: any, value: any, callback: (arg0: Error) => any) => {
|
||||
}, 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]$/
|
||||
if (!value) {
|
||||
return callback(new Error('身份证号码不能为空'))
|
||||
|
@ -7,10 +7,11 @@
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" />
|
||||
</el-form-item>
|
||||
<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 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 label="结算金额大写" prop="settlement_amount_uppercase">
|
||||
<el-input v-model="formData.settlement_amount_uppercase" readonly disabled placeholder="系统自动填写" />
|
||||
@ -106,6 +107,7 @@ const popupTitle = computed(() => {
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: "",
|
||||
project_name: "",
|
||||
project_id: '',
|
||||
contract_id: '',
|
||||
|
@ -63,17 +63,17 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="工作量">
|
||||
<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>
|
||||
</el-table-column>
|
||||
<el-table-column label="单价" prop="price">
|
||||
<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>
|
||||
</el-table-column>
|
||||
<el-table-column label="金额" prop="amount">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.amount" />
|
||||
<el-input v-model="row.amount" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
const detailConfig = {
|
||||
title: "安全事故表",
|
||||
title: "质量事故表",
|
||||
config: [
|
||||
{
|
||||
label: "组织名称",
|
||||
@ -29,6 +29,9 @@ const detailConfig = {
|
||||
label: "设备事故",
|
||||
value: "device_accident"
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
label: "承包商人员",
|
||||
value: "contractor_user"
|
||||
@ -45,10 +48,6 @@ const detailConfig = {
|
||||
label: "内容",
|
||||
value: "content"
|
||||
},
|
||||
{
|
||||
label: "承包商人员",
|
||||
value: "contractor_user"
|
||||
},
|
||||
{
|
||||
label: "备注",
|
||||
value: "remark",
|
||||
|
@ -186,9 +186,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id
|
||||
)
|
||||
if (data.org_id) {
|
||||
getlist1(data.org_id)
|
||||
}
|
||||
project_name.value = data.project_name
|
||||
project_code.value = data.project_code
|
||||
|
@ -36,7 +36,7 @@
|
||||
|
||||
<el-col :span="24">
|
||||
<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-col>
|
||||
|
||||
|
@ -50,14 +50,16 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<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-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="允许偏差" prop="allowable_deviation">
|
||||
<el-input v-model="formData.allowable_deviation" type="number" clearable
|
||||
placeholder="请输入允许偏差" />
|
||||
<el-input-number v-model="formData.allowable_deviation" :min="1" :max="10"
|
||||
placeholder="范围为1-200" class="flex flex-1" />
|
||||
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
@ -153,7 +155,7 @@ const formData = reactive({
|
||||
basic_requirements: "",
|
||||
target_specification: '',
|
||||
file: [],
|
||||
allowable_deviation: "",
|
||||
allowable_deviation: undefined,
|
||||
pass_rate: "",
|
||||
|
||||
|
||||
|
@ -89,7 +89,7 @@
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="8">
|
||||
<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-col>
|
||||
<el-col :span="8">
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<el-form ref="formRef" :model="formData" label-width="130px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="供应商名称" prop="supplier_id" @click="showDialog1 = true" :rules="[
|
||||
@ -100,8 +100,9 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="质保金比例(%)" prop="retention_money_rate">
|
||||
<el-input v-model="formData.retention_money_rate" clearable placeholder="请输入质保金比例(%)" />
|
||||
<el-form-item label="质保金比例(%)" prop="retention_money_rate">
|
||||
<el-input v-model="formData.retention_money_rate" clearable placeholder="请输入质保金比例(%)"
|
||||
type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
@ -159,12 +160,12 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="工作量" prop="num">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.num" />
|
||||
<el-input v-model="row.num" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="含税单价" prop="price">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.price" />
|
||||
<el-input v-model="row.price" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
@ -219,7 +220,9 @@
|
||||
</el-date-picker> </template></el-table-column>
|
||||
<el-table-column label="金额" prop="amount">
|
||||
<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">
|
||||
<template #default="{ row }">
|
||||
|
@ -16,7 +16,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<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"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
|
@ -15,7 +15,7 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<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-form-item>
|
||||
</el-col>
|
||||
@ -141,6 +141,8 @@ import {
|
||||
} from "@/api/supervision_construction_management_personnel";
|
||||
import type { PropType } from "vue";
|
||||
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig";
|
||||
import { checkIdCard } from "@/utils/validate"
|
||||
|
||||
|
||||
defineProps({
|
||||
dictData: {
|
||||
@ -246,6 +248,10 @@ const formRules = reactive<any>({
|
||||
message: "请输入身份证",
|
||||
trigger: ["blur"],
|
||||
},
|
||||
{
|
||||
validator: checkIdCard,
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
technical_title: [
|
||||
{
|
||||
|
@ -41,11 +41,98 @@
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<createUserLable :formData="formData" flag></createUserLable>
|
||||
|
||||
</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%">
|
||||
<dialogTable @customEvent="customEvent" :config="supervision_project" />
|
||||
</el-dialog>
|
||||
@ -56,86 +143,17 @@
|
||||
</dialogTable>
|
||||
</el-dialog>
|
||||
</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 }"
|
||||
@customEvent="customEvent2">
|
||||
</dialogTable>
|
||||
|
||||
</el-dialog>
|
||||
|
||||
|
||||
|
||||
</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>
|
||||
</div>
|
||||
@ -223,7 +241,8 @@ const handleAdd = () => {
|
||||
"contract_brand": 0,
|
||||
"entry_number": 0,
|
||||
"documentation": 0,
|
||||
"verify": 0
|
||||
"verify": 0,
|
||||
number: 0
|
||||
})
|
||||
}
|
||||
const handleDelete = async (row: any) => {
|
||||
@ -253,11 +272,26 @@ const customEvent1 = (e) => {
|
||||
showDialog2.value = false
|
||||
}
|
||||
const customEvent2 = (e) => {
|
||||
let { name, brand, model, unit, contract_brand, entry_number, documentation, verify } = e
|
||||
Object.assign(formData.entry_detail[tableIndex.value], { name, brand, model, unit, contract_brand, entry_number, documentation, verify })
|
||||
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, number })
|
||||
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>({
|
||||
project_id: [{
|
||||
|
@ -178,6 +178,9 @@ const chekcDate = (rule: any, value: any, callback: any) => {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const formRules = reactive<any>({
|
||||
project_id: [{
|
||||
required: true,
|
||||
|
@ -1,7 +1,6 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
@ -12,18 +11,17 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="分部分项工程" prop="partial_project">
|
||||
<el-select class="flex-1" v-model="formData.partial_project" clearable
|
||||
placeholder="请选择分部分项工程">
|
||||
<el-option v-for="(item, index) in dictData.partial_project" :key="index"
|
||||
:label="item.name" :value="parseInt(item.value)" />
|
||||
<el-select class="flex-1" v-model="formData.partial_project" clearable placeholder="请选择分部分项工程">
|
||||
<el-option v-for="(item, index) in dictData.partial_project" :key="index" :label="item.name"
|
||||
:value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="归属年月" prop="attribution_date">
|
||||
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.attribution_date" clearable
|
||||
type="month" value-format="YYYY-MM" placeholder="请选择日期">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.attribution_date" clearable type="month"
|
||||
value-format="YYYY-MM" placeholder="请选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -113,7 +111,7 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<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
|
||||
value-format="YYYY-MM-DD" placeholder="选择检查时间">
|
||||
</el-date-picker>
|
||||
@ -225,6 +223,17 @@ const customEvent = (e) => {
|
||||
formData.project_name = e.project_name
|
||||
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>({
|
||||
project_id: [{
|
||||
@ -259,27 +268,27 @@ const formRules = reactive<any>({
|
||||
}],
|
||||
is_discuss: [{
|
||||
required: true,
|
||||
message: '请输入是否已经专家组论证 0-否 1-是',
|
||||
message: '请输入是否已经专家组论证',
|
||||
trigger: ['blur']
|
||||
}],
|
||||
is_modify: [{
|
||||
required: true,
|
||||
message: '请输入是否已按专家意见修改 0-否 1-是',
|
||||
message: '请输入是否已按专家意见修改',
|
||||
trigger: ['blur']
|
||||
}],
|
||||
is_agree: [{
|
||||
required: true,
|
||||
message: '请输入监理审批是否同意 0-否 1-是',
|
||||
message: '请输入监理审批是否同意',
|
||||
trigger: ['blur']
|
||||
}],
|
||||
is_accept: [{
|
||||
required: true,
|
||||
message: '请输入是否实施验收 0-否 1-是',
|
||||
message: '请输入是否实施验收',
|
||||
trigger: ['blur']
|
||||
}],
|
||||
is_accept_to_plan: [{
|
||||
required: true,
|
||||
message: '请输入是否按方案实施验收 0-否 1-是',
|
||||
message: '请输入是否按方案实施验收',
|
||||
trigger: ['blur']
|
||||
}],
|
||||
check_user: [{
|
||||
@ -291,6 +300,10 @@ const formRules = reactive<any>({
|
||||
required: true,
|
||||
message: '请输入检查时间',
|
||||
trigger: ['blur']
|
||||
},
|
||||
{
|
||||
validator: chekcDate,
|
||||
trigger: ['blur']
|
||||
}],
|
||||
problems_rectification: [{
|
||||
required: true,
|
||||
@ -304,12 +317,12 @@ const formRules = reactive<any>({
|
||||
}],
|
||||
exceed_the_control_value: [{
|
||||
required: true,
|
||||
message: '请输入是否超控制值 0-否 1-是',
|
||||
message: '请输入是否超控制值',
|
||||
trigger: ['blur']
|
||||
}],
|
||||
exceed_the_warning_value: [{
|
||||
required: true,
|
||||
message: '请输入是否超预警值 0-否 1-是',
|
||||
message: '请输入是否超预警值',
|
||||
trigger: ['blur']
|
||||
}],
|
||||
control_measures: [{
|
||||
|
@ -300,14 +300,12 @@ const customEvent1 = (e) => {
|
||||
|
||||
const chekcDate = (rule: any, value: any, callback: any) => {
|
||||
if (new Date(formData.end_time) < new Date(formData.start_time)) {
|
||||
callback(new Error('巡视结束时间早于巡视开始时间'))
|
||||
callback(new Error('巡视结束时间不能早于巡视开始时间'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
project_id: [{
|
||||
|
@ -40,12 +40,12 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<formTable :formData="formData.detail" :config="tableConfig"></formTable>
|
||||
<el-dialog v-model="showDialog2" title="选择来源单据" width="70%">
|
||||
<dialogTable :config="supervision_material_entry" @customEvent="customEvent1"
|
||||
:query="{ parallel_test: 1 }"></dialogTable>
|
||||
</el-dialog>
|
||||
</el-form>
|
||||
<formTable :formData="formData.detail" :config="tableConfig"></formTable>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
@ -92,6 +92,19 @@ const formData = reactive({
|
||||
"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(
|
||||
{
|
||||
@ -135,6 +148,7 @@ const tableConfig = reactive(
|
||||
{
|
||||
label: "检验数量",
|
||||
value: 'num',
|
||||
check: ['detail', checkNum]
|
||||
},
|
||||
],
|
||||
deleteApi: apisupervision_material_parallel_testing_delete
|
||||
|
@ -57,15 +57,15 @@
|
||||
@click="handleDetail(row.id)">
|
||||
详情
|
||||
</el-button>
|
||||
|
||||
<router-link :to="{
|
||||
path: '/supervision/supervision_work/supervision_material_parallel_testing_detail',
|
||||
query: { id: row.id }
|
||||
}">
|
||||
<el-button type="primary" link>
|
||||
<el-button type="primary" link>
|
||||
<router-link :to="{
|
||||
path: '/supervision/supervision_work/supervision_material_parallel_testing_detail',
|
||||
query: { id: row.id }
|
||||
}">
|
||||
明细
|
||||
</el-button>
|
||||
</router-link>
|
||||
</router-link>
|
||||
</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -101,11 +101,6 @@ const formData = reactive({
|
||||
|
||||
|
||||
|
||||
//电话
|
||||
function checkPhone1(rules: any, value: any, callback: any) {
|
||||
console.log(value)
|
||||
}
|
||||
|
||||
const tableConfig = reactive(
|
||||
{
|
||||
title: "联系人",
|
||||
|
@ -27,7 +27,7 @@
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<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="1" />
|
||||
</el-select>
|
||||
|
@ -55,7 +55,7 @@
|
||||
删除
|
||||
</el-button>
|
||||
<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>
|
||||
</template>
|
||||
|
@ -144,7 +144,7 @@ import Popup from '@/components/popup/index.vue'
|
||||
import { apiSupervisionSafetyManagementPersonnelAdd, apiSupervisionSafetyManagementPersonnelEdit, } from '@/api/supervision_safety_management_personnel'
|
||||
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig"
|
||||
import type { PropType } from 'vue'
|
||||
import { checkIdcard, checkPhone } from "@/utils/validate"
|
||||
import { checkIdCard } from "@/utils/validate"
|
||||
|
||||
|
||||
defineProps({
|
||||
@ -249,7 +249,7 @@ const formRules = reactive<any>({
|
||||
trigger: ['blur']
|
||||
},
|
||||
{
|
||||
validator: checkIdcard,
|
||||
validator: checkIdCard,
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
|
@ -86,7 +86,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<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-col>
|
||||
<el-col :span="8">
|
||||
@ -209,7 +209,7 @@ const tableConfig = reactive(
|
||||
|
||||
},
|
||||
{
|
||||
label: "检查类容",
|
||||
label: "检查内容",
|
||||
value: 'check_content'
|
||||
},
|
||||
{
|
||||
|
@ -59,6 +59,8 @@ import Popup from '@/components/popup/index.vue'
|
||||
import { apiSupervisionSpecialOperationPersonnelAdd, apiSupervisionSpecialOperationPersonnelEdit, } from '@/api/supervision_special_operation_personnel'
|
||||
import { supervision_participating_units_qualifications } from "@/components/dialogTable/dialogTableConfig"
|
||||
import type { PropType } from 'vue'
|
||||
import { checkIdCard } from "@/utils/validate"
|
||||
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
@ -145,6 +147,10 @@ const formRules = reactive<any>({
|
||||
required: true,
|
||||
message: '请输入身份证',
|
||||
trigger: ['blur']
|
||||
},
|
||||
{
|
||||
validator: checkIdCard,
|
||||
trigger: ['blur']
|
||||
}],
|
||||
validity_period: [{
|
||||
required: true,
|
||||
|
@ -1,7 +1,6 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
@ -47,6 +46,7 @@
|
||||
<createUserLable :formData="formData" flag></createUserLable>
|
||||
|
||||
</el-row>
|
||||
<formTable :formData="formData.sampling_detail" :config="tableConfig"></formTable>
|
||||
|
||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||
<dialogTable @customEvent="customEvent" :config="supervision_project" />
|
||||
@ -56,7 +56,6 @@
|
||||
|
||||
</el-dialog>
|
||||
</el-form>
|
||||
<formTable :formData="formData.sampling_detail" :config="tableConfig"></formTable>
|
||||
|
||||
</popup>
|
||||
</div>
|
||||
@ -110,6 +109,21 @@ const formData = reactive({
|
||||
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(
|
||||
{
|
||||
title: "材料信息",
|
||||
@ -151,6 +165,8 @@ const tableConfig = reactive(
|
||||
{
|
||||
label: "取样数量",
|
||||
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="witness" 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 }">
|
||||
<el-button v-perms="['supervision_work.supervision_witness_sampling/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
|
@ -364,6 +364,7 @@ const submituser = (e: any) => {
|
||||
|
||||
|
||||
const checkDate = (rule: any, value: any, callback: any, source) => {
|
||||
|
||||
const regex = /\[(\d+)\]/; // 匹配方括号内的数字,也就是table的下标
|
||||
let index = 0
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user