This commit is contained in:
zmj 2024-04-09 17:35:44 +08:00
parent a45ed7521e
commit df2619a433
13 changed files with 1091 additions and 121 deletions

BIN
dist.zip

Binary file not shown.

View File

View File

@ -774,3 +774,128 @@ export const marketing_custom: Iconfig = {
{ create_time: "录入日期" },
],
};
import { attendanceRecordLists } from "@/api/project_attendance_record";
export const project_attendance_record: Iconfig = {
fetchFn: attendanceRecordLists,
// dictData: "return_visit_type",
serchList: [
// {
// label: "客户名称",
// value: "name",
// },
// {
// label: "客户编号",
// value: "code",
// },
// {
// label: "重要等级",
// value: "important_level",
// select: "custom_important_level",
// },
],
tableList: [
{ attendance_code: "日记工单号" },
{ project_code: "项目编码" },
{ project_name: "项目名称" },
{ attendance_date: "日期" },
{ cqrs: "出勤人数" },
{ work_record_num_total: "记工数量" },
{ daily_salary_total: "日工资合计" },
{ daily_living_total: "日生活费合计" },
{ daily_subsidy_total: "日补贴合计" },
{ daily_other_total: "日其它合计" },
{ daily_income_total: "日收入合计" },
],
};
import { apimketingFrameworkAgreementLists } from "@/api/marketing_framework_agreement";
export const marketing_framework_agreement: Iconfig = {
fetchFn: apimketingFrameworkAgreementLists,
dictData: "custom_important_level,cost_consultation_business_nature",
serchList: [
{
label: "合同名称",
value: "contract_name",
},
{
label: "协议性质",
value: "important_level",
select: "custom_important_level",
},
{
label: "业务性质",
value: "business_nature",
select: "cost_consultation_business_nature",
},
],
tableList: [
{ contract_name: "协议名称" },
{ contract_code: "合同编号" },
{ part_a_contact: "甲方签约单位联系人" },
{ part_b: "乙方签约单位" },
{ business_nature_text: "业务性质" },
{ signed_dept_name: "签订部门" },
{ signed_head_name: "签订负责人" },
{ seal_user_name: "盖章人" },
{ agreement_nature_text: "协议性质" },
{ seal_name_text: "盖章名称" },
{ is_limit_text: "是否限制次数" },
{ file_type_text: "文件类型" },
],
};
import { apiMarketingContractLists } from "@/api/marketing_contract";
export const marketing_contract: Iconfig = {
fetchFn: apiMarketingContractLists,
dictData: "cost_consultation_business_nature",
serchList: [
{
label: "合同类型",
value: "contract_type",
select: [
{
name: "主合同",
value: 0,
},
{
name: "框架协议",
value: 1,
},
{
name: "补充协议",
value: 2,
},
],
},
{
label: "合同名称",
value: "contract_name",
},
{
label: "业务性质",
value: "business_nature",
select: "cost_consultation_business_nature",
},
],
tableList: [
{ contract_name: "合同名称" },
{ contract_code: "合同编号" },
{ part_a_name: "甲方签约单位" },
{ part_b: "乙方签约单位" },
{ part_b_signatory_name: "乙方签约人" },
{ business_nature_text: "业务性质" },
{ industry_nature_text: "行业性质" },
{ fund_sources_text: "资金来源" },
{ const_area_text: "建设区域" },
{ project_money: "工程总投资" },
{ project_scale: "工程规模及概况" },
{ signed_rate: "合同签订费率" },
{ service_duration: "合同服务工期" },
{ start_date: "计划开始日期" },
{ end_date: "计划结束日期" },
],
};

View File

@ -0,0 +1,286 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="合同详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-card>
<el-descriptions :column="3" border>
<el-descriptions-item label="关联协议框架" label-align="left" align="left" label-class-name="my-label"> {{
formData.contract_name }}
</el-descriptions-item>
<el-descriptions-item label="合同类型" label-align="left" align="left" label-class-name="my-label"> {{
formData.contract_type_text }}
</el-descriptions-item>
<el-descriptions-item label="合同名称" label-align="left" align="left" label-class-name="my-label"> {{
formData.contract_name }}
</el-descriptions-item>
<el-descriptions-item label="合同编号" label-align="left" align="left" label-class-name="my-label"> {{
formData.contract_code }}
</el-descriptions-item>
<el-descriptions-item label="甲方签订单位" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_a_name }}
</el-descriptions-item>
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_a_contact }}
</el-descriptions-item>
<el-descriptions-item label="业主地址" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_a_address }}
</el-descriptions-item>
<el-descriptions-item label="乙方签约单位" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_b }}
</el-descriptions-item>
<el-descriptions-item label="乙方签约人" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_b_signatory_name }}
</el-descriptions-item>
<el-descriptions-item label="业务性质" label-align="left" align="left" label-class-name="my-label"> {{
formData.business_nature_text }}
</el-descriptions-item>
<el-descriptions-item label="行业性质" label-align="left" align="left" label-class-name="my-label"> {{
formData.industry_nature_text }}
</el-descriptions-item>
<el-descriptions-item label="资金来源" label-align="left" align="left" label-class-name="my-label"> {{
formData.fund_sources_text }}
</el-descriptions-item>
<el-descriptions-item label="建设区域" label-align="left" align="left" label-class-name="my-label"> {{
formData.const_area_text }}
</el-descriptions-item>
<el-descriptions-item label="工程总投资" label-align="left" align="left" label-class-name="my-label"> {{
formData.project_money }}
</el-descriptions-item>
<el-descriptions-item label="工程规模及概况" label-align="left" align="left" label-class-name="my-label"> {{
formData.project_scale }}
</el-descriptions-item>
<el-descriptions-item label="签订金额" label-align="left" align="left" label-class-name="my-label"> {{
formData.signed_amount }}
</el-descriptions-item>
<el-descriptions-item label="合同签订费率" label-align="left" align="left" label-class-name="my-label"> {{
formData.signed_rate }}
</el-descriptions-item>
<el-descriptions-item label="合同服务工期" label-align="left" align="left" label-class-name="my-label"> {{
formData.service_duration }}
</el-descriptions-item>
<el-descriptions-item label="计划开始日期" label-align="left" align="left" label-class-name="my-label"> {{
formData.start_date }}
</el-descriptions-item>
<el-descriptions-item label="计划结束日期" label-align="left" align="left" label-class-name="my-label"> {{
formData.end_date }}
</el-descriptions-item>
<el-descriptions-item label="履约金" label-align="left" align="left" label-class-name="my-label"> {{
formData.performance_money }}
</el-descriptions-item>
<el-descriptions-item label="履约金到期时间" label-align="left" align="left" label-class-name="my-label"> {{
formData.performance_money_expiration_time }}
</el-descriptions-item>
<el-descriptions-item label="合同付款方式" label-align="left" align="left" label-class-name="my-label"> {{
formData.payment_method }}
</el-descriptions-item>
<el-descriptions-item label="合同主要内容" label-align="left" align="left" label-class-name="my-label"> {{
formData.content }}
</el-descriptions-item>
<el-descriptions-item label="签订部门" label-align="left" align="left" label-class-name="my-label"> {{
formData.signed_dept_name }}
</el-descriptions-item>
<el-descriptions-item label="签订负责人" label-align="left" align="left" label-class-name="my-label"> {{
formData.signed_head_name }}
</el-descriptions-item>
<el-descriptions-item label="监管部门" label-align="left" align="left" label-class-name="my-label"> {{
formData.supervise_dept_name }}
</el-descriptions-item>
<el-descriptions-item label="项目总监/总理" label-align="left" align="left" label-class-name="my-label"> {{
formData.project_manager_name }}
</el-descriptions-item>
<el-descriptions-item label="实施方式" label-align="left" align="left" label-class-name="my-label"> {{
formData.implement_method_text }}
</el-descriptions-item>
<el-descriptions-item label="盖章名称" label-align="left" align="left" label-class-name="my-label"> {{
formData.seal_name_text }}
</el-descriptions-item>
<el-descriptions-item label="是否限制" label-align="left" align="left" label-class-name="my-label"> {{
formData.is_limit_text }}
</el-descriptions-item>
<el-descriptions-item label="限制次数" label-align="left" align="left" label-class-name="my-label"> {{
formData.limit_num }}
</el-descriptions-item>
<el-descriptions-item label="文件类型" label-align="left" align="left" label-class-name="my-label"> {{
formData.file_type_text }}
</el-descriptions-item>
<el-descriptions-item label="盖章份数" label-align="left" align="left" label-class-name="my-label"> {{
formData.seal_num }}
</el-descriptions-item>
<el-descriptions-item label="盖章人" label-align="left" align="left" label-class-name="my-label"> {{
formData.seal_user_name }}
</el-descriptions-item>
<el-descriptions-item label="发出日期" label-align="left" align="left" label-class-name="my-label"> {{
formData.send_date }}
</el-descriptions-item>
<el-descriptions-item label="邮寄编号" label-align="left" align="left" label-class-name="my-label"> {{
formData.mailing_number }}
</el-descriptions-item>
<el-descriptions-item label="录入人" label-align="left" align="left" label-class-name="my-label"> {{
formData.create_user }}
</el-descriptions-item>
<el-descriptions-item label="录入日期" label-align="left" align="left" label-class-name="my-label"> {{
formData.create_time }}
</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<annexLink :annex="formData.annex"></annexLink>
</el-descriptions-item>
</el-descriptions>
</el-card>
<!--
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_cost_budgetApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" /> -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { apiProjectCostBudgetDetailLists } from '@/api/project_cost_budget_detail.ts'
import { apiproject_cost_budgetApprove, apiproject_cost_budgetFlows } from '@/api/flowSet'
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const formDataannex = reactive([])
const datas = reactive({
provinceOptions: [],
cityOptions: [],
areaOptions: [],
});
const tableData = ref([])
//
const formData = reactive({
id: "",
related_contract_id: "",
framework_agreement_name: "",
contract_type: "",
contract_type_text: "",
contract_name: "",
contract_code: "",
part_a: "",
part_a_name: "",
part_a_contact: "",
part_a_address: "",
part_b: "",
part_b_signatory: "",
part_b_signatory_name: "",
business_nature: "",
business_nature_text: "",
industry_nature: "",
industry_nature_text: "",
fund_sources: "",
fund_sources_text: "",
const_area: "",
const_area_text: "",
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: "",
signed_head_name: "",
supervise_dept: "",
project_manager: "",
project_manager_name: "",
implement_method: "",
seal_name: "",
is_limit: "",
limit_num: "",
file_type: "",
seal_num: "",
seal_user: "",
seal_user_name: "",
plance_seal: "",
send_date: "",
mailing_number: "",
review_status: "",
status: "",
create_user: "",
});
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
// getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiCustomDetail({
id: row.id
})
setFormData(data)
}
//
const handleSubmit = async () => {
popupRef.value?.close()
}
//
const open = () => {
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_cost_budgetFlows()
flows.value = res
}
defineExpose({
open,
setFormData,
getDetail
})
</script>
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -4,8 +4,9 @@
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
<el-row>
<el-col :span="8">
<el-form-item label="关联主合同id" prop="related_contract_id">
<el-input v-model="formData.related_contract_id" clearable placeholder="请输入关联主合同id" />
<el-form-item label="关联协议框架" prop="related_contract_id">
<el-input v-model="formData.framework_agreement_name" clearable placeholder="点击选择协议框架"
@click="showDialog1 = true" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -29,7 +30,8 @@
</el-col>
<el-col :span="8">
<el-form-item label="甲方签约单位" prop="part_a">
<el-input v-model="formData.part_a" clearable placeholder="请输入甲方签约单位" />
<el-input v-model="formData.part_a_name" clearable placeholder="请输入甲方签约单位" readonly
@click="showDialog2 = true" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -85,11 +87,11 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<!-- <el-col :span="8">
<el-form-item label="协议性质" prop="agreement_nature">
<el-input v-model="formData.agreement_nature" clearable placeholder="请输入协议性质" />
</el-form-item>
</el-col>
</el-col> -->
<el-col :span="8">
<el-form-item label="工程总投资">
<el-input v-model="formData.project_money" clearable placeholder="请输入工程总投资" type="number" />
@ -123,7 +125,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="计划结束日期">
<el-form-item label="计划结束日期" prop="end_date">
<el-date-picker class="flex-1 !flex" v-model="formData.end_date" clearable type="date"
value-format="YYYY-MM-DD" placeholder="选择发生日期">
</el-date-picker>
@ -151,11 +153,7 @@
<el-input v-model="formData.content" clearable placeholder="请输入合同主要内容" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件">
<upload-annex :form-data="formData" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="签订部门" prop="signed_dept">
<el-select v-model="formData.signed_dept" placeholder="请选择部门" class="flex-1">
@ -252,7 +250,8 @@
<el-input v-model="formData.mailing_number" clearable placeholder="请输入邮寄编号" type="number" />
</el-form-item>
</el-col>
<el-col :span="8">
<!-- <el-col :span="8">
<el-form-item label="评审状态">
<el-select v-model="formData.review_status" class="flex-1">
<el-option label="待移交" :value="0"></el-option>
@ -267,14 +266,27 @@
<el-option label="已立项" :value="1"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-col> -->
<createUserLable :form-data='formData' name='录入' flag></createUserLable>
<el-col :span="8">
<el-form-item label="附件">
<upload-annex :form-data="formData" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div v-if="showDialog">
<personnelselector ref="personnel" @confirm="submituser" type="1">
</personnelselector>
</div>
<el-dialog v-model="showDialog1" title="选择框架协议" width="70%">
<dialogTable :config="marketing_framework_agreement" @customEvent="customEvent">
</dialogTable>
</el-dialog>
<el-dialog v-model="showDialog2" title="选择甲方签订单位" width="70%">
<dialogTable :config="marketing_custom" @customEvent="customEvent1">
</dialogTable>
</el-dialog>
</popup>
</div>
</template>
@ -289,6 +301,10 @@ import {
} from "@/api/marketing_contract";
import { timeFormat } from "@/utils/util";
import type { PropType } from "vue";
import { marketing_framework_agreement, marketing_custom } from "@/components/dialogTable/dialogTableConfig";
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -302,6 +318,8 @@ const formRef = shallowRef<FormInstance>();
const popupRef = shallowRef<InstanceType<typeof Popup>>();
const mode = ref("add");
const showDialog = ref(false)
const showDialog1 = ref(false)
const showDialog2 = ref(false)
const personnel = ref(null)
@ -316,10 +334,12 @@ const popupTitle = computed(() => {
const formData = reactive({
id: "",
related_contract_id: "",
framework_agreement_name: "",
contract_type: "",
contract_name: "",
contract_code: "",
part_a: "",
part_a_name: "",
part_a_contact: "",
part_a_address: "",
part_b: "",
@ -365,6 +385,20 @@ const formData = reactive({
});
const customEvent = (e) => {
formData.related_contract_id = e.id
formData.framework_agreement_name = e.contract_name
showDialog1.value = false
}
const customEvent1 = (e) => {
formData.part_a = e.id
formData.part_a_name = e.invoice_company
showDialog2.value = false
}
let value;
const userclick = async (val) => {
showDialog.value = true
@ -377,11 +411,17 @@ const userclick = async (val) => {
//
const submituser = (e: any) => {
formData[value + '_name'] = e.name
formData.seal_user = e.id
formData[value] = e.id
showDialog.value = false
}
const chekcDate = (rule: any, value: any, callback: any) => {
if (new Date(formData.end_date) < new Date(formData.start_date)) {
callback(new Error('计划结束日期时间不能早于计划开始日期'))
} else {
callback()
}
}
//
const formRules = reactive<any>({
@ -531,6 +571,10 @@ const formRules = reactive<any>({
message: "请输入计划结束日期",
trigger: ["blur"],
},
{
validator: chekcDate,
trigger: ['blur']
}
],
performance_money: [
{

View File

@ -14,14 +14,12 @@
</el-col>
<el-col :span="6">
<el-form-item label="合同名称" prop="contract_name">
<el-input class="w-[280px]" v-model="queryParams.contract_name" clearable
placeholder="请输入合同名称" />
<el-input v-model="queryParams.contract_name" clearable placeholder="请输入合同名称" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="合同编号" prop="contract_code">
<el-input class="w-[280px]" v-model="queryParams.contract_code" clearable
placeholder="请输入合同编号" />
<el-input v-model="queryParams.contract_code" clearable placeholder="请输入合同编号" />
</el-form-item>
</el-col>
<el-col :span="6">
@ -58,8 +56,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="签订金额" prop="signed_amount">
<el-input class="w-[280px]" v-model="queryParams.signed_amount" clearable placeholder="请输入签订金额"
type="number" />
<el-input v-model="queryParams.signed_amount" clearable placeholder="请输入签订金额" type="number" />
</el-form-item>
</el-col>
<el-col :span="6">
@ -87,14 +84,13 @@
<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_a_name" 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="part_b_signatory_name" show-overflow-tooltip />
<el-table-column label="业务性质" prop="business_nature_text" show-overflow-tooltip />
<el-table-column label="行业性质" prop="industry_nature_text" show-overflow-tooltip />
<el-table-column label="资金来源" prop="fund_sources_text" show-overflow-tooltip />
<el-table-column label="建设区域" prop="const_area_text" 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 />
@ -103,28 +99,7 @@
<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">
<el-table-column label="操作" width="170" fixed="right">
<template #default="{ row }">
<el-button v-perms="['marketing.marketing_contract/edit']" type="primary" link
@click="handleEdit(row)">
@ -134,6 +109,9 @@
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['marketing.marketing_contract/detail']" link @click="handledetail(row)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -144,21 +122,25 @@
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false"
:deptList="deptList" />
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = 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 { apiMarketingContractLists, apiMarketingContractDelete, apiMarketingContractDetail } from '@/api/marketing_contract'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import { deptLists } from "@/api/org/department"
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
//
const showEdit = ref(false)
const showDtail = ref(false)
//
@ -200,10 +182,11 @@ const handleAdd = async () => {
//
const handleEdit = async (data: any) => {
let res = await apiMarketingContractDetail({ id: data.id })
showEdit.value = true
await nextTick()
editRef.value?.open('edit')
editRef.value?.setFormData(data)
editRef.value?.setFormData(res)
}
//
@ -213,6 +196,17 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handledetail = async (data: any) => {
let res = await apiMarketingContractDetail({ id: data.id })
showDtail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
const deptList = ref([])
const getDeptList = async () => {
let res = await deptLists()

View File

@ -0,0 +1,202 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="框架协议详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-card>
<el-descriptions :column="2" border>
<el-descriptions-item label="协议名称" label-align="left" align="left" label-class-name="my-label"> {{
formData.contract_name }}
</el-descriptions-item>
<el-descriptions-item label="协议性质" label-align="left" align="left" label-class-name="my-label"> {{
formData.agreement_nature_text }}
</el-descriptions-item>
<el-descriptions-item label="甲方签订单位" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_a_name }}
</el-descriptions-item>
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_a_contact }}
</el-descriptions-item>
<el-descriptions-item label="业主地址" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_a_address }}
</el-descriptions-item>
<el-descriptions-item label="乙方签约单位" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_b }}
</el-descriptions-item>
<el-descriptions-item label="乙方签约人" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_b_signatory_name }}
</el-descriptions-item>
<el-descriptions-item label="业务性质" label-align="left" align="left" label-class-name="my-label"> {{
formData.business_nature_text }}
</el-descriptions-item>
<el-descriptions-item label="暂估签订金额" label-align="left" align="left" label-class-name="my-label"> {{
formData.signed_amount }}
</el-descriptions-item>
<el-descriptions-item label="签订费率(%)" label-align="left" align="left" label-class-name="my-label"> {{
formData.signed_rate }}
</el-descriptions-item>
<el-descriptions-item label="协议有效期" label-align="left" align="left" label-class-name="my-label"> {{
formData.service_duration }}
</el-descriptions-item>
<el-descriptions-item label="取消规则" label-align="left" align="left" label-class-name="my-label"> {{
formData.payment_method }}
</el-descriptions-item>
<el-descriptions-item label="协议主要内容" label-align="left" align="left" label-class-name="my-label"> {{
formData.content }}
</el-descriptions-item>
<el-descriptions-item label="签订部门" label-align="left" align="left" label-class-name="my-label"> {{
formData.signed_dept_name }}
</el-descriptions-item>
<el-descriptions-item label="签订负责人" label-align="left" align="left" label-class-name="my-label"> {{
formData.signed_head_name }}
</el-descriptions-item>
<el-descriptions-item label="盖章名称" label-align="left" align="left" label-class-name="my-label"> {{
formData.seal_name_text }}
</el-descriptions-item>
<el-descriptions-item label="是否限制次数" label-align="left" align="left" label-class-name="my-label"> {{
formData.is_limit ? "是" : "否" }}
</el-descriptions-item>
<el-descriptions-item label="限制次数" label-align="left" align="left" label-class-name="my-label"> {{
formData.limit_num }}
</el-descriptions-item>
<el-descriptions-item label="文件类型" label-align="left" align="left" label-class-name="my-label"> {{
formData.file_type_text }}
</el-descriptions-item>
<el-descriptions-item label="盖章份数" label-align="left" align="left" label-class-name="my-label"> {{
formData.seal_num }}
</el-descriptions-item>
<el-descriptions-item label="盖章人" label-align="left" align="left" label-class-name="my-label"> {{
formData.seal_user_name }}
</el-descriptions-item>
<el-descriptions-item label="骑缝盖章" label-align="left" align="left" label-class-name="my-label"> {{
formData.plance_seal_text }}
</el-descriptions-item>
<el-descriptions-item label="发出日期" label-align="left" align="left" label-class-name="my-label"> {{
formData.send_date }}
</el-descriptions-item>
<el-descriptions-item label="邮寄编号" label-align="left" align="left" label-class-name="my-label"> {{
formData.mailing_number }}
</el-descriptions-item>
<el-descriptions-item label="录入人" label-align="left" align="left" label-class-name="my-label"> {{
formData.create_user }}
</el-descriptions-item>
<el-descriptions-item label="录入日期" label-align="left" align="left" label-class-name="my-label"> {{
formData.create_time }}
</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<annexLink :annex="formData.annex"></annexLink>
</el-descriptions-item>
</el-descriptions>
</el-card>
<!--
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_cost_budgetApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" /> -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { apiProjectCostBudgetDetailLists } from '@/api/project_cost_budget_detail.ts'
import { apiproject_cost_budgetApprove, apiproject_cost_budgetFlows } from '@/api/flowSet'
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const formDataannex = reactive([])
const datas = reactive({
provinceOptions: [],
cityOptions: [],
areaOptions: [],
});
const tableData = ref([])
//
const formData = reactive({
})
//
const budgetDetailLists = (id) => {
apiProjectCostBudgetDetailLists({ 'page_no': pager1.page_no, 'page_size': pager1.page_size, cost_budget_id: id }).then((res) => {
tableData.value = res.lists
total.value = res.count
})
}
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
budgetDetailLists(data.id)
// getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiCustomDetail({
id: row.id
})
setFormData(data)
}
//
const handleSubmit = async () => {
popupRef.value?.close()
}
//
const open = () => {
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_cost_budgetFlows()
flows.value = res
}
defineExpose({
open,
setFormData,
getDetail
})
</script>
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -18,7 +18,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="甲方签订单位" prop="part_a">
<el-input v-model="formData.part_a_text" clearable placeholder="点击选择甲方签约单位"
<el-input v-model="formData.part_a_name" clearable placeholder="点击选择甲方签约单位"
@click="showDialog1 = true" readonly />
</el-form-item>
</el-col>
@ -78,10 +78,8 @@
</el-col>
<el-col :span="8">
<el-form-item label="附件" prop="">
<upload-annex :form-data="formData"></upload-annex>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="签订部门" prop="signed_dept">
@ -158,10 +156,7 @@
</el-form-item>
</el-col>
<createUserLable :form-data='formData' name='录入' flag></createUserLable>
</el-row>
</el-form>
<div v-if="showDialog">
<personnelselector ref="personnel" @confirm="submituser" type="1">
@ -207,10 +202,11 @@ const popupTitle = computed(() => {
//
const formData = reactive({
id: "",
"contract_name": "",
"agreement_nature": '',
"part_a": '',
"part_a_text": '',
"part_a_name": '',
"part_a_contact": "",
"part_a_address": "",
"part_b": "",
@ -242,7 +238,7 @@ const formData = reactive({
const customEvent = (e) => {
formData.part_a = e.id
formData.part_a_text = e.invoice_company
formData.part_a_name = e.name
showDialog1.value = false
}

View File

@ -6,19 +6,26 @@
<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-select class='flex-1' v-model="queryParams.agreement_nature">
<el-option v-for="(item, index) in dictData.agreement_nature " :key="index" :label="item.name"
:value="parseInt(item.value)"></el-option>
</el-select>
</el-form-item>
<el-form-item label="业务性质">
<el-input class="w-[280px]" v-model="queryParams.business_nature" clearable
placeholder="请输入甲方签约单位" />
<el-select class='flex-1' v-model="queryParams.business_nature">
<el-option v-for="(item, index) in dictData.cost_consultation_business_nature " :key="index"
:label="item.name" :value="parseInt(item.value)"></el-option>
</el-select>
</el-form-item>
<el-form-item label="签订部门">
<el-input class="w-[280px]" v-model="queryParams.signed_dept" clearable placeholder="请输入业务性质" />
<el-select v-model="queryParams.signed_dept" placeholder="请选择部门">
<el-option :label="item.name" :value="item.id" v-for="item in deptList">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="甲方签约单位">
<!-- <el-form-item label="甲方签约单位">
<el-input class="w-[280px]" v-model="queryParams.part_a" clearable placeholder="请输入行业性质" />
</el-form-item>
</el-form-item> -->
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
@ -39,22 +46,32 @@
<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_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_a_contact" 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="操作" width="120" fixed="right">
<el-table-column label="业务性质" prop="business_nature_text" show-overflow-tooltip />
<el-table-column label="签订部门" prop="signed_dept_name" show-overflow-tooltip />
<el-table-column label="签订负责人" prop="signed_head_name" show-overflow-tooltip />
<el-table-column label="盖章人" prop="seal_user_name" show-overflow-tooltip />
<el-table-column label="协议性质" prop="agreement_nature_text" show-overflow-tooltip />
<el-table-column label="盖章名称" prop="seal_name_text" show-overflow-tooltip />
<el-table-column label="是否限制次数" prop="is_limit_text" show-overflow-tooltip />
<el-table-column label="文件类型" prop="file_type_text" show-overflow-tooltip />
<el-table-column label="操作" width="170" fixed="right">
<template #default="{ row }">
<el-button v-perms="['marketing.marketing_contract/edit']" type="primary" link
<el-button v-perms="['marketing.marketing_framework_agreement/edit']" type="primary" link
@click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['marketing.marketing_contract/delete']" type="danger" link
<el-button v-perms="['marketing.marketing_framework_agreement/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['marketing.marketing_framework_agreement/detail']" link
@click="handledetail(row)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -65,6 +82,8 @@
</el-card>
<edit-popup :deptList="deptList" v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists"
@close="showEdit = false" />
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
</div>
</template>
@ -76,11 +95,12 @@ import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import { deptLists } from "@/api/org/department"
import DetailPopup from './detail.vue'
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
//
const showEdit = ref(false)
const showDtail = ref(false)
//
const queryParams = reactive({
@ -131,6 +151,14 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handledetail = async (data: any) => {
let res = await apimketingFrameworkAgreementDetail({ id: data.id })
showDtail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
const deptList = ref([])
const getDeptList = async () => {

View File

@ -0,0 +1,226 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="补充协议名详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-card>
<el-descriptions :column="3" border>
<el-descriptions-item label="补充协议名称" label-align="left" align="left" label-class-name="my-label"> {{
formData.contract_name }}
</el-descriptions-item>
<el-descriptions-item label="关联主合同" label-align="left" align="left" label-class-name="my-label"> {{
formData.supplementary_agreement_name }}
</el-descriptions-item>
<el-descriptions-item label="甲方签约单位" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_a_name }}
</el-descriptions-item>
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_a_contact }}
</el-descriptions-item>
<el-descriptions-item label="业主地址" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_a_name }}
</el-descriptions-item>
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_a_contact }}
</el-descriptions-item>
<el-descriptions-item label="业主地址" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_a_address }}
</el-descriptions-item>
<el-descriptions-item label="乙方签约单位" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_b }}
</el-descriptions-item>
<el-descriptions-item label="乙方签约人" label-align="left" align="left" label-class-name="my-label"> {{
formData.part_b_signatory_name }}
</el-descriptions-item>
<el-descriptions-item label="业务性质" label-align="left" align="left" label-class-name="my-label"> {{
formData.business_nature_text }}
</el-descriptions-item>
<el-descriptions-item label="签订金额" label-align="left" align="left" label-class-name="my-label"> {{
formData.signed_amount }}
</el-descriptions-item>
<el-descriptions-item label="合同付款方式" label-align="left" align="left" label-class-name="my-label"> {{
formData.payment_method }}
</el-descriptions-item>
<el-descriptions-item label="合同主要内容" label-align="left" align="left" label-class-name="my-label"> {{
formData.content }}
</el-descriptions-item>
<el-descriptions-item label="签订部门" label-align="left" align="left" label-class-name="my-label"> {{
formData.signed_dept_name }}
</el-descriptions-item>
<el-descriptions-item label="签订负责人" label-align="left" align="left" label-class-name="my-label"> {{
formData.signed_head_name }}
</el-descriptions-item>
<el-descriptions-item label="盖章名称" label-align="left" align="left" label-class-name="my-label"> {{
formData.seal_name_text }}
</el-descriptions-item>
<el-descriptions-item label="是否限制" label-align="left" align="left" label-class-name="my-label"> {{
formData.is_limit_text }}
</el-descriptions-item>
<el-descriptions-item label="限制次数" label-align="left" align="left" label-class-name="my-label"> {{
formData.limit_num }}
</el-descriptions-item>
<el-descriptions-item label="文件类型" label-align="left" align="left" label-class-name="my-label"> {{
formData.file_type_text }}
</el-descriptions-item>
<el-descriptions-item label="盖章份数" label-align="left" align="left" label-class-name="my-label"> {{
formData.seal_num }}
</el-descriptions-item>
<el-descriptions-item label="盖章人" label-align="left" align="left" label-class-name="my-label"> {{
formData.seal_user_name }}
</el-descriptions-item>
<el-descriptions-item label="骑缝盖章" label-align="left" align="left" label-class-name="my-label"> {{
formData.plance_seal }}
</el-descriptions-item>
<el-descriptions-item label="发出日期" label-align="left" align="left" label-class-name="my-label"> {{
formData.send_date }}
</el-descriptions-item>
<el-descriptions-item label="邮寄编号" label-align="left" align="left" label-class-name="my-label"> {{
formData.mailing_number }}
</el-descriptions-item>
<el-descriptions-item label="录入人" label-align="left" align="left" label-class-name="my-label"> {{
formData.create_user }}
</el-descriptions-item>
<el-descriptions-item label="录入日期" label-align="left" align="left" label-class-name="my-label"> {{
formData.create_time }}
</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<annexLink :annex="formData.annex"></annexLink>
</el-descriptions-item>
</el-descriptions>
</el-card>
<!--
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
:submitApi="apiproject_cost_budgetApprove" :id="formData?.id" @off="handleClose">
</flowProcess>
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" /> -->
</popup>
</div>
</template>
<script lang="ts" setup name="customdetail">
import { apiProjectCostBudgetDetailLists } from '@/api/project_cost_budget_detail.ts'
import { apiproject_cost_budgetApprove, apiproject_cost_budgetFlows } from '@/api/flowSet'
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const formDataannex = reactive([])
const datas = reactive({
provinceOptions: [],
cityOptions: [],
areaOptions: [],
});
const tableData = ref([])
//
const formData = reactive({
id: "",
"contract_name": "",
"related_contract_id": '',
"supplementary_agreement_name": '',
"part_a": '',
"part_a_name": '',
"part_a_contact": "",
"part_a_address": "",
"part_b": "",
"part_b_signatory": '',
"part_b_signatory_name": '',
"business_nature": '',
"signed_amount": '',
"payment_method": "",
"content": "",
"annex": [],
"signed_dept": '',
"signed_head": '',
"signed_head_name": '',
"seal_name": '',
"is_limit": '',
"limit_num": '',
"file_type": '',
"seal_num": '',
"seal_user": '',
"seal_user_name": '',
"plance_seal": '',
"send_date": "",
"mailing_number": "",
"create_user": "",
"create_time": ""
})
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
// getbidDocumentExaminationFlows()
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiCustomDetail({
id: row.id
})
setFormData(data)
}
//
const handleSubmit = async () => {
popupRef.value?.close()
}
//
const open = () => {
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
//
const flows = ref([])
const getbidDocumentExaminationFlows = async () => {
if (formData?.approve_id) return
let res = await apiproject_cost_budgetFlows()
flows.value = res
}
defineExpose({
open,
setFormData,
getDetail
})
</script>
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -10,12 +10,14 @@
</el-col>
<el-col :span="8">
<el-form-item label="关联主合同" prop="related_contract_id">
<!-- <el-input v-model="formData.related_contract_id" clearable placeholder="点击选择" /> -->
<el-input v-model="formData.supplementary_agreement_name" clearable placeholder="点击选择"
@click="showDialog1 = true" readonly />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="甲方签约单位" prop="part_a">
<el-input v-model="formData.part_a" clearable placeholder="请输入甲方签约单位" />
<el-input v-model="formData.part_a_name" clearable placeholder="请输入甲方签约单位" readonly
@click="showDialog2 = true" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -35,12 +37,16 @@
</el-col>
<el-col :span="8">
<el-form-item label="乙方签约人" prop="part_b_signatory">
<!-- <el-input v-model="formData.part_b_signatory" clearable placeholder="请输入乙方签约人" /> -->
<el-input v-model="formData.part_b_signatory_name" clearable placeholder="点击选择"
@click="userclick('part_b_signatory')" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="业务性质" prop="business_nature">
<!-- <el-input v-model="formData.business_nature" clearable placeholder="请输入关联主合同id" /> -->
<el-select class='flex-1' v-model="formData.business_nature">
<el-option v-for="(item, index) in dictData.cost_consultation_business_nature "
:key="index" :label="item.name" :value="parseInt(item.value)"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
@ -144,6 +150,14 @@
<personnelselector ref="personnel" @confirm="submituser" type="1">
</personnelselector>
</div>
<el-dialog v-model="showDialog1" title="选择主合同" width="70%">
<dialogTable :config="marketing_contract" @customEvent="customEvent">
</dialogTable>
</el-dialog>
<el-dialog v-model="showDialog2" title="选择甲方签订单位" width="70%">
<dialogTable :config="marketing_custom" @customEvent="customEvent1">
</dialogTable>
</el-dialog>
</popup>
</div>
</template>
@ -151,38 +165,45 @@
<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 { apiMarketingSupplementaryAgreementAdd, apiMarketingSupplementaryAgreementEdit, apiMarketingSupplementaryAgreementDetail } from '@/api/marketing_supplementary_agreement'
import { marketing_contract, marketing_custom } from "@/components/dialogTable/dialogTableConfig";
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
},
deptList: Array
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
const showDialog = ref(false)
const showDialog1 = ref(false)
const showDialog2 = ref(false)
const personnel = ref(null)
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑市场经营--合同信息' : '新增市场经营--合同信息'
return mode.value == 'edit' ? '编辑市场经营--补充协议' : '新增市场经营--补充协议'
})
//
const formData = reactive({
id: "",
"contract_name": "",
"related_contract_id": '',
"supplementary_agreement_name": '',
"part_a": '',
"part_a_name": '',
"part_a_contact": "",
"part_a_address": "",
"part_b": "",
"part_b_signatory": '',
"part_b_signatory_name": '',
"business_nature": '',
"signed_amount": '',
"payment_method": "",
@ -190,12 +211,14 @@ const formData = reactive({
"annex": [],
"signed_dept": '',
"signed_head": '',
"signed_head_name": '',
"seal_name": '',
"is_limit": '',
"limit_num": '',
"file_type": '',
"seal_num": '',
"seal_user": '',
"seal_user_name": '',
"plance_seal": '',
"send_date": "",
"mailing_number": "",
@ -203,6 +226,19 @@ const formData = reactive({
"create_time": ""
})
const customEvent = (e) => {
formData.related_contract_id = e.id
formData.supplementary_agreement_name = e.contract_name
showDialog1.value = false
}
const customEvent1 = (e) => {
formData.part_a = e.id
formData.part_a_name = e.name
showDialog2.value = false
}
let value;
const userclick = async (val) => {
@ -216,7 +252,10 @@ const userclick = async (val) => {
//
const submituser = (e: any) => {
formData[value + '_name'] = e.name
formData.seal_user = e.id
formData[value] = e.id
console.log(formData[value], 'v')
showDialog.value = false
}
@ -238,12 +277,7 @@ const setFormData = async (data: Record<any, any>) => {
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiMarketingContractDetail({
id: row.id
})
setFormData(data)
}
//
@ -251,8 +285,8 @@ const handleSubmit = async () => {
await formRef.value?.validate()
const data = { ...formData, }
mode.value == 'edit'
? await apiMarketingContractEdit(data)
: await apiMarketingContractAdd(data)
? await apiMarketingSupplementaryAgreementEdit(data)
: await apiMarketingSupplementaryAgreementAdd(data)
popupRef.value?.close()
emit('success')
}
@ -273,6 +307,5 @@ const handleClose = () => {
defineExpose({
open,
setFormData,
getDetail
})
</script>

View File

@ -36,21 +36,30 @@
<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_a_name" 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="操作" width="120" fixed="right">
<el-table-column label="签订金额" prop="signed_amount" show-overflow-tooltip />
<el-table-column label="关联主合同" prop="supplementary_agreement_name" show-overflow-tooltip />
<el-table-column label="签订负责人" prop="signed_head_name" show-overflow-tooltip />
<el-table-column label="盖章人" prop="seal_user_name" show-overflow-tooltip />
<el-table-column label="业务性质" prop="business_nature_text" show-overflow-tooltip />
<el-table-column label="盖章名称" prop="seal_name_text" show-overflow-tooltip />
<el-table-column label="是否限制" prop="is_limit_text" show-overflow-tooltip />
<el-table-column label="文件类型" prop="file_type_text" show-overflow-tooltip />
<el-table-column label="操作" width="170" fixed="right">
<template #default="{ row }">
<el-button v-perms="['marketing.marketing_contract/edit']" type="primary" link
<el-button v-perms="['marketing.marketing_supplementary_agreement/edit']" type="primary" link
@click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['marketing.marketing_contract/delete']" type="danger" link
<el-button v-perms="['marketing.marketing_supplementary_agreement/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['marketing.marketing_supplementary_agreement/detail']" link
@click="handledetail(row)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
@ -59,7 +68,10 @@
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false"
:deptList="deptList" />
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
</div>
</template>
@ -67,13 +79,15 @@
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 { deptLists } from "@/api/org/department"
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
//
const showEdit = ref(false)
const showDtail = ref(false)
//
@ -93,7 +107,7 @@ const handleSelectionChange = (val: any[]) => {
}
//
const { dictData } = useDictData('')
const { dictData } = useDictData('cost_consultation_business_nature,cost_consultation_industry_nature,money_source,const_area,cost_consultation_way,cost_consultation_seal_name,cost_consultation_file_type,isqfgz')
//
const { pager, getLists, resetParams, resetPage } = usePaging({
@ -124,6 +138,23 @@ const handleDelete = async (id: number | any[]) => {
getLists()
}
//
const handledetail = async (data: any) => {
let res = await apiMarketingSupplementaryAgreementDetail({ id: data.id })
showDtail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
const deptList = ref([])
const getDeptList = async () => {
let res = await deptLists()
deptList.value = res.lists
}
getLists()
getDeptList()
</script>

View File

@ -5,15 +5,17 @@
<el-row>
<el-col :span="8">
<el-form-item label="项目名称" prop="project_id" @click="showDialog = true">
<el-input v-model="project_name" clearable placeholder="请输入项目名称" :disabled="project" />
</el-form-item> </el-col>
<el-col :span="8">
<el-form-item label="日记工单号" prop="attendance_id">
<el-input v-model="formData.attendance_code" clearable placeholder="点击选择考勤记录" readonly
@click="showDialog = true" />
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item label="项目编码" prop="project_id">
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写"
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
</el-form-item>
</el-col>
</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"
@ -94,8 +96,9 @@
</el-col>
</el-row>
</el-form>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<projectDialog @customEvent="customEvent"></projectDialog>
<el-dialog v-model="showDialog" title="选择考勤记录" width="70%">
<dialogTable :config="project_attendance_record" @customEvent="customEvent">
</dialogTable>
</el-dialog>
<div v-if="showDialog1">
<el-dialog v-model="showDialog1" title="选择项目人员" width="70%">
@ -113,6 +116,10 @@ import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import projectDialog from '@/components/project/index.vue'
import { attendancedetailAdd, attendancedetailEdit, attendancedetailDetail } from '@/api/project_attendance_detail'
import { project_attendance_record } from "@/components/dialogTable/dialogTableConfig";
import customDialog from '@/components/project_personnel/index.vue'
let props = defineProps({
project: Object
@ -133,8 +140,9 @@ const userInfo = userStore.userInfo
//
const formData = reactive({
id: '',
project_id: '',
attendance_id: "",
person_id: '',
attendance_code: "",
attendance_date: '',
work_start_time: '',
work_end_time: '',
@ -151,17 +159,14 @@ const formData = reactive({
})
//
const customEvent = (e) => {
formData.project_id = e.id
project_name.value = e.name
project_code.value = e.project_code
idcard.value = ''
work_type.value = ''
console.log(e)
formData.attendance_id = e.id
formData.attendance_code = e.attendance_code
showDialog.value = false
formData.people = ''
}
if (props.project) customEvent(props.project);
// if (props.project) customEvent(props.project);
const customEvent1 = (e) => {
formData.person_id = e.id