diff --git a/dist.zip b/dist.zip deleted file mode 100644 index 4f11483..0000000 Binary files a/dist.zip and /dev/null differ diff --git a/src/api/index b/src/api/index deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/dialogTable/dialogTableConfig.ts b/src/components/dialogTable/dialogTableConfig.ts index ce66dc1..1145e4a 100644 --- a/src/components/dialogTable/dialogTableConfig.ts +++ b/src/components/dialogTable/dialogTableConfig.ts @@ -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: "计划结束日期" }, + ], +}; diff --git a/src/views/marketing_contract/detail.vue b/src/views/marketing_contract/detail.vue new file mode 100644 index 0000000..f2136de --- /dev/null +++ b/src/views/marketing_contract/detail.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/src/views/marketing_contract/edit.vue b/src/views/marketing_contract/edit.vue index f152b3f..b5753ee 100644 --- a/src/views/marketing_contract/edit.vue +++ b/src/views/marketing_contract/edit.vue @@ -4,8 +4,9 @@ - - + + @@ -29,7 +30,8 @@ - + @@ -85,11 +87,11 @@ - + @@ -123,7 +125,7 @@ - + @@ -151,11 +153,7 @@ - - - - - + @@ -252,7 +250,8 @@ - + + + + + + +
+ + + + + + + + @@ -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>, @@ -302,6 +318,8 @@ const formRef = shallowRef(); const popupRef = shallowRef>(); 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({ @@ -531,6 +571,10 @@ const formRules = reactive({ message: "请输入计划结束日期", trigger: ["blur"], }, + { + validator: chekcDate, + trigger: ['blur'] + } ], performance_money: [ { diff --git a/src/views/marketing_contract/index.vue b/src/views/marketing_contract/index.vue index 0670fe4..20a9d80 100644 --- a/src/views/marketing_contract/index.vue +++ b/src/views/marketing_contract/index.vue @@ -14,14 +14,12 @@ - + - + @@ -58,8 +56,7 @@ - + @@ -87,14 +84,13 @@ - + - - - - - - + + + + + @@ -103,28 +99,7 @@ - - - - - - - - - - - - - - - - - - - - - - + @@ -144,21 +122,25 @@ + + + + diff --git a/src/views/marketing_framework_agreement/edit.vue b/src/views/marketing_framework_agreement/edit.vue index 01002eb..eb0cc09 100644 --- a/src/views/marketing_framework_agreement/edit.vue +++ b/src/views/marketing_framework_agreement/edit.vue @@ -18,7 +18,7 @@ - @@ -78,10 +78,8 @@ - - @@ -158,10 +156,7 @@ - - -
@@ -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 } diff --git a/src/views/marketing_framework_agreement/index.vue b/src/views/marketing_framework_agreement/index.vue index 018e17f..5c67317 100644 --- a/src/views/marketing_framework_agreement/index.vue +++ b/src/views/marketing_framework_agreement/index.vue @@ -6,19 +6,26 @@ - + + + - + + + - + + + + - + 查询 重置 @@ -39,22 +46,32 @@
- + - + - - - + + + + + + + + + @@ -65,6 +82,8 @@ + +
@@ -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>() const editRef = shallowRef>() -// 是否显示编辑框 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 () => { diff --git a/src/views/marketing_supplementary_agreement/detail.vue b/src/views/marketing_supplementary_agreement/detail.vue new file mode 100644 index 0000000..18e965c --- /dev/null +++ b/src/views/marketing_supplementary_agreement/detail.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/src/views/marketing_supplementary_agreement/edit.vue b/src/views/marketing_supplementary_agreement/edit.vue index 225826a..bca5299 100644 --- a/src/views/marketing_supplementary_agreement/edit.vue +++ b/src/views/marketing_supplementary_agreement/edit.vue @@ -10,12 +10,14 @@ - + - + @@ -35,12 +37,16 @@ - + - + + + @@ -144,6 +150,14 @@
+ + + + + + + + @@ -151,38 +165,45 @@ diff --git a/src/views/marketing_supplementary_agreement/index.vue b/src/views/marketing_supplementary_agreement/index.vue index 67feaf0..de701b4 100644 --- a/src/views/marketing_supplementary_agreement/index.vue +++ b/src/views/marketing_supplementary_agreement/index.vue @@ -36,21 +36,30 @@ - + - - - - + + + + + + + + + @@ -59,7 +68,10 @@ - + + + @@ -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>() const editRef = shallowRef>() -// 是否显示编辑框 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() diff --git a/src/views/project_attendance_detail/edit.vue b/src/views/project_attendance_detail/edit.vue index 4d5f20d..53eda39 100644 --- a/src/views/project_attendance_detail/edit.vue +++ b/src/views/project_attendance_detail/edit.vue @@ -5,15 +5,17 @@ - - - - + + + + + - - + + +
@@ -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