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 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -134,6 +109,9 @@
@click="handleDelete(row.id)">
删除
+
+ 详情
+
@@ -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