Browse Source

日期选择器 时间段子表 bug修复

lwx_v27
liwenxuan 1 month ago
parent
commit
208ddfa7f6
  1. 74
      src/components/DesignForm/app/index.vue
  2. 48
      src/components/DesignForm/public/form/childTable.vue
  3. 30
      src/components/DesignForm/tableListPage/formPageCont.vue

74
src/components/DesignForm/app/index.vue

@ -358,6 +358,29 @@ let switchs: any[] = [];
let selects: any[] = [];
let tables: any[] = [];
let dofs: any[] = []; //deptOrgAndOrgCententAndFounderArr
let rangedDatePickerInTables: any[] = [];
function getAllRangedDatePickerInTables(){
let dataList = ref({});
dataList.value = props.fieldsDetailList;
if (dataList && Array.isArray(dataList.value) && dataList.value.length > 0) {
for (let i = 0; i < dataList.value.length; i++) {
if(dataList.value[i].type == "table"){
dataList.value[i].list.forEach((element: any) => {
if(element.type=="datePicker"){
//monthrange daterange datetimerange
if(element.control.type=="monthrange"||element.control.type=="daterange"||element.control.type=="datetimerange"){
let str = ""+dataList.value[i].name+"^^^*^^^"
rangedDatePickerInTables.push(str+element.name)
}
}
});
}
}
}
}
function getAsfs() {
//setTimeout(() => {
let dataList = ref({});
@ -822,7 +845,7 @@ const setUpClick = (val: string, id: string) => {
id: idList.value,
isTrue: 2,
};
softDeletion(sendData).then((data) => {
softDeletion(sendData).then((data: { mag: any; }) => {
// console.log('cancel!',data)
ElNotification({
title: "温馨提示!",
@ -1011,7 +1034,7 @@ const getPageData = () => {
//
function doImportTableData() {
dynamicVNode.value = h(importPanel, {
fields: props.fieldsDetailList.filter((val) => val.type !== "table"),
fields: props.fieldsDetailList.filter((val: { type: string; }) => val.type !== "table"),
formId: props.versionid,
commitFunc: () => {
getPageData(); //table
@ -1049,7 +1072,7 @@ function doExportTableData() {
array.push(title.join(","));
//
datas.list.forEach((item) => {
datas.list.forEach((item: { [x: string]: { [x: string]: any; }[]; }) => {
const line = [];
let maxline = 0;
//
@ -1138,10 +1161,43 @@ function doExportTableData() {
});
}
function dateStringToTimestampLocal(dateStr: string) {
const isoStr = dateStr.replace(' ', 'T');
const timestamp = new Date(isoStr).getTime();
if (isNaN(timestamp)) {
throw new Error('Invalid date string');
}
return String(timestamp);
}
const rangedDatePickerInTables1: any = []
async function doGainFormPageListCont(sendData: any) {
const data = await gainFormPageListCont(sendData);
// console.log("----------------->",data)
console.log("获取列表详细信息----------------->",data)
//console.log(dataList)
rangedDatePickerInTables.forEach(element => {
let x = element.split('^^^*^^^')
console.log(x)
rangedDatePickerInTables1.push(x)
data.data.list.forEach((item: any) => {
console.log(item)
console.log(item[x[0]])
let tableValues = item[x[0]]
tableValues.forEach((element1: any) => {
let start = dateStringToTimestampLocal(element1[x[1]])
let end = element1[x[1]+"_end"]
let arr = [start,end]
console.log(arr)
element1[x[1]] = arr
});
/* let y = dateStringToTimestampLocal(item[x[0]][x[1]])
console.log(y) */
});
});
asfDetails = props.data.columns.filter((item: any) => {
return item.fieldClass == "associatedForms";
});
@ -1197,10 +1253,11 @@ async function doGainFormPageListCont(sendData: any) {
}
}
}
return dataList.data;
});
}
return data.data;
}
@ -1231,7 +1288,7 @@ async function doGainFormPageListCont(sendData: any) {
}
});
});
console.log(data.data)
return data.data;
//tableDataList.value = data.data.list
@ -1423,6 +1480,7 @@ onMounted(() => {
drawerWith.value = container.value?.clientWidth;
});
getAsfs();
getAllRangedDatePickerInTables();
});
/**
@ 作者: 秦东
@ -1838,7 +1896,7 @@ jieguo = jieguo+"<div style='width: 100%;height: 1px;border-bottom: 1px solid #E
}
return jieguo
}
const isObject = (obj) => {
const isObject = (obj: any) => {
return typeof obj === "object";
}
</script>
@ -2456,6 +2514,7 @@ const isObject = (obj) => {
:page-info="pageInfoCont"
:table-page-class="tablePageClass"
:oper-state="operState"
:dprt="rangedDatePickerInTables1"
@getPageData="getPageData"
/>
<FormPageCont
@ -2464,6 +2523,7 @@ const isObject = (obj) => {
:page-info="currentAsfTableDataList[0]"
:table-page-class="tablePageClass"
:oper-state="operState"
:dprt="rangedDatePickerInTables1"
@getPageData="getPageData"
/>
<TableFlow

48
src/components/DesignForm/public/form/childTable.vue

@ -188,6 +188,11 @@ const timeToString = (timeVal: any, types: int) => {
return timeStr;
};
let associatedFormsIndexTablekey = 0;
/* const emits = defineEmits<{
(e: 'asfValueChanged', val: any): void
@ -207,6 +212,9 @@ function optionsValue3Get1(data: any, fieldName: string) {
emits("optionsValue3GetTable", data, fieldName);
}
</script>
<template>
<div class="form-table form-table-add">
<el-text class="mx-1" size="large">{{ sunTableName }}</el-text>
@ -235,6 +243,7 @@ function optionsValue3Get1(data: any, fieldName: string) {
:control="item.control"
/>
</div>
<!-- 这里只影响查看不影响修改 -->
<div
v-else-if="item.type == 'datePicker'"
v-html="timeToString(scope.row[item.name], item.control.type)"
@ -249,8 +258,47 @@ function optionsValue3Get1(data: any, fieldName: string) {
</div>
<div v-else>{{ getText(scope.row[item.name], scope.row, item.name) }}</div>
</div>
<!-- 这里影响编辑 -->
<div v-else>
<div v-if="item.type == 'datePicker'">
<!--
先确定当前日期选择器是否为时间段 monthrange daterange datetimerange
-->
<!-- {{ item.control.type }}-----------
{{ item.name }}------------
{{ scope.row[item.name] }}-----
{{ scope.row[item.name+'_end'] }} -->
<!-- {{ '['+scope.row[item.name]+','+scope.row[item.name+'_end']+']' }}
{{ [scope.row[item.name],scope.row[item.name+'_end']] }} -->
<div v-if="item.control.type=='datetimerange'||item.control.type=='daterange'||item.control.type=='monthrange'">
<!-- 区间 -->
<form-item
v-model="scope.row[item.name]"
:tProp="`${data.name}.${scope.$index}.${item.name}`"
:row-index="scope.$index"
:data="item"
@asf-value-changed="asfValueChanged"
@optionsValue3Get1="optionsValue3Get1"
/>
</div>
<div v-else>
<form-item
v-model="scope.row[item.name]"
:tProp="`${data.name}.${scope.$index}.${item.name}`"
:row-index="scope.$index"
:data="item"
@asf-value-changed="asfValueChanged"
@optionsValue3Get1="optionsValue3Get1"
/>
</div>
</div>
<form-item
v-else
v-model="scope.row[item.name]"
:tProp="`${data.name}.${scope.$index}.${item.name}`"
:row-index="scope.$index"

30
src/components/DesignForm/tableListPage/formPageCont.vue

@ -60,6 +60,12 @@ const props = defineProps({
return {};
},
},
dprt: {
type: Array,
default() {
return [];
},
},
});
const formEl = ref<any>();
const emits = defineEmits(["update:isShow", "getPageData", "optionsValue4Get4"]);
@ -275,7 +281,30 @@ const getCustomrrFormInfo = () => {
gainTaskFormInfoPromise.push(
gainTaskFormInfo({ id: props.pageInfo.masters_key })
.then(({ data }) => {
//console.log(data)
//console.log(formState.formData.list)
props.dprt.forEach(element => {
//console.log(element)
let tableName = element[0]
let datePickerName = element[1]
/* console.log(tableName)
console.log(datePickerName) */
data.tableData[tableName].forEach((item: any) => {
//console.log(item[datePickerName])
let arr = []
arr.push(item[datePickerName])
arr.push(item[datePickerName+"_end"])
item[datePickerName] = arr
//console.log(item[datePickerName])
});
//console.log(data.tableData[tableName][datePickerName])
});
gainTaskFormInfoData = data;
/* // console.log("获取自定义表单内容",data,data.structure)
formState.formData = stringToObj(data.structure.mastesform)
// console.log("--->",formState)
@ -544,6 +573,7 @@ function optionsValue3Get3(data: any, fieldName: any) {
:save-edit-form-info="saveEditFormInfo"
:send-draft-submit="sendDraftSubmit"
:submit-edit="submitEdit"
@optionsValue3Get3="optionsValue3Get3"
/>
<el-divider v-if="pageLog && pageLog.length > 0" content-position="left"

Loading…
Cancel
Save