|
|
@ -3,69 +3,70 @@ |
|
|
@ 时间: 2023-07-14 08:51:25 |
|
|
@ 时间: 2023-07-14 08:51:25 |
|
|
@ 备注: 表单子表 |
|
|
@ 备注: 表单子表 |
|
|
--> |
|
|
--> |
|
|
<script lang="ts" setup> |
|
|
<script lang='ts' setup> |
|
|
import FormItem from "./formItem.vue"; |
|
|
import FormItem from './formItem.vue' |
|
|
import { inject, computed } from "vue"; |
|
|
import { inject, computed } from 'vue' |
|
|
import Tooltips from "@/components/DesignForm/tooltip.vue"; |
|
|
import Tooltips from '@/components/DesignForm/tooltip.vue' |
|
|
import { constFormProps } from "@/api/DesignForm/utils"; |
|
|
import {constFormProps } from '@/api/DesignForm/utils' |
|
|
import { jsonParseStringify } from "@/utils/DesignForm"; |
|
|
import { jsonParseStringify } from '@/utils/DesignForm' |
|
|
import LowcodeImagePage from "@/components/DesignForm/public/expand/lowcodeImage.vue"; |
|
|
import LowcodeImagePage from '@/components/DesignForm/public/expand/lowcodeImage.vue' |
|
|
import AssociatedForms from "@/widget/associatedforms/index.vue"; |
|
|
import AssociatedForms from '@/widget/associatedforms/index.vue' |
|
|
import UploadPageList from "@/components/DesignForm/public/expand/uploadPageList.vue"; |
|
|
import UploadPageList from '@/components/DesignForm/public/expand/uploadPageList.vue' |
|
|
|
|
|
|
|
|
|
|
|
import LokOrgCentent from '@/widget/org/cont.vue' |
|
|
|
|
|
import { SCOPE } from 'element-plus' |
|
|
|
|
|
|
|
|
import LokOrgCentent from "@/widget/org/cont.vue"; |
|
|
|
|
|
import { SCOPE } from "element-plus"; |
|
|
|
|
|
|
|
|
|
|
|
const props = withDefaults( |
|
|
const props = withDefaults( |
|
|
defineProps<{ |
|
|
defineProps<{ |
|
|
data: any; |
|
|
data: any |
|
|
}>(), |
|
|
}>(), |
|
|
{ |
|
|
{ |
|
|
data: () => { |
|
|
data: () => { |
|
|
return {}; |
|
|
return {} |
|
|
}, |
|
|
} |
|
|
} |
|
|
} |
|
|
); |
|
|
) |
|
|
const formProps = inject(constFormProps, {}) as any; |
|
|
const formProps = inject(constFormProps, {}) as any |
|
|
const tableDataNew = computed(() => { |
|
|
const tableDataNew = computed(() => { |
|
|
// console.log("如果编辑页禁用时-----1---->",props.data.name) |
|
|
// console.log("如果编辑页禁用时-----1---->",props.data.name) |
|
|
// console.log("如果编辑页禁用时-----2---->",formProps.value.model[props.data.name]) |
|
|
// console.log("如果编辑页禁用时-----2---->",formProps.value.model[props.data.name]) |
|
|
// console.log("如果编辑页禁用时-----3---->",formProps.value.model) |
|
|
// console.log("如果编辑页禁用时-----3---->",formProps.value.model) |
|
|
// console.log("如果编辑页禁用时-----4---->",formProps.value) |
|
|
// console.log("如果编辑页禁用时-----4---->",formProps.value) |
|
|
return formProps.value.model[props.data.name]; |
|
|
return formProps.value.model[props.data.name] |
|
|
}); |
|
|
}) |
|
|
const type = computed(() => { |
|
|
const type = computed(() => { |
|
|
return formProps.value.type; |
|
|
return formProps.value.type |
|
|
}); |
|
|
}) |
|
|
// 如果编辑页禁用时,则返回true |
|
|
// 如果编辑页禁用时,则返回true |
|
|
const editDisabled = computed(() => { |
|
|
const editDisabled = computed(() => { |
|
|
return formProps.value.type === 2 && props.data.config?.editDisabled; |
|
|
return formProps.value.type === 2 && props.data.config?.editDisabled |
|
|
}); |
|
|
}) |
|
|
const addColumn = () => { |
|
|
const addColumn = () => { |
|
|
// console.log("如果编辑页禁用时--------->",tableDataNew.value) |
|
|
// console.log("如果编辑页禁用时--------->",tableDataNew.value) |
|
|
const temp: any = {}; |
|
|
const temp: any = {} |
|
|
if (props.data.list) { |
|
|
if (props.data.list) { |
|
|
props.data.list.forEach((item: any) => { |
|
|
props.data.list.forEach((item: any) => { |
|
|
if (item.name) { |
|
|
if (item.name) { |
|
|
temp[item.name] = item.control.modelValue; |
|
|
temp[item.name] = item.control.modelValue |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
tableDataNew.value.push(jsonParseStringify(temp)) |
|
|
} |
|
|
} |
|
|
}); |
|
|
|
|
|
tableDataNew.value.push(jsonParseStringify(temp)); |
|
|
|
|
|
} |
|
|
} |
|
|
}; |
|
|
|
|
|
const getText = (text: any,val:any,name:any) => { |
|
|
const getText = (text: any,val:any,name:any) => { |
|
|
console.log("text===>", text); |
|
|
console.log("text===>",text) |
|
|
console.log("name===>", name); |
|
|
console.log("name===>",name) |
|
|
console.log("val===>", val); |
|
|
console.log("val===>",val) |
|
|
if (typeof text === "string") { |
|
|
if (typeof text === 'string') { |
|
|
return text; |
|
|
return text |
|
|
} else { |
|
|
} else { |
|
|
return text && text.toString(); |
|
|
return text && text.toString() |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
}; |
|
|
|
|
|
const delColumn = (index: number) => { |
|
|
const delColumn = (index: number) => { |
|
|
tableDataNew.value.splice(index, 1); |
|
|
tableDataNew.value.splice(index, 1) |
|
|
}; |
|
|
} |
|
|
/** |
|
|
/** |
|
|
@ 作者: 秦东 |
|
|
@ 作者: 秦东 |
|
|
@ 时间: 2024-08-02 13:22:14 |
|
|
@ 时间: 2024-08-02 13:22:14 |
|
|
@ -74,31 +75,31 @@ const delColumn = (index: number) => { |
|
|
const timeToAry = (timestamp:number) => { |
|
|
const timeToAry = (timestamp:number) => { |
|
|
const date = new Date(timestamp); |
|
|
const date = new Date(timestamp); |
|
|
const year = date.getFullYear(); |
|
|
const year = date.getFullYear(); |
|
|
const month = ("0" + (date.getMonth() + 1)).slice(-2); |
|
|
const month = ('0' + (date.getMonth() + 1)).slice(-2); |
|
|
const day = ("0" + date.getDate()).slice(-2); |
|
|
const day = ('0' + date.getDate()).slice(-2); |
|
|
const hours = ("0" + date.getHours()).slice(-2); |
|
|
const hours = ('0' + date.getHours()).slice(-2); |
|
|
const minutes = ("0" + date.getMinutes()).slice(-2); |
|
|
const minutes = ('0' + date.getMinutes()).slice(-2); |
|
|
const seconds = ("0" + date.getSeconds()).slice(-2); |
|
|
const seconds = ('0' + date.getSeconds()).slice(-2); |
|
|
return { |
|
|
return { |
|
|
year:year, |
|
|
year:year, |
|
|
month:month, |
|
|
month:month, |
|
|
day:day, |
|
|
day:day, |
|
|
hours:hours, |
|
|
hours:hours, |
|
|
minutes:minutes, |
|
|
minutes:minutes, |
|
|
seconds, |
|
|
seconds |
|
|
}; |
|
|
} |
|
|
}; |
|
|
} |
|
|
/** |
|
|
/** |
|
|
@ 作者: 秦东 |
|
|
@ 作者: 秦东 |
|
|
@ 时间: 2024-08-02 13:02:49 |
|
|
@ 时间: 2024-08-02 13:02:49 |
|
|
@ 功能: 将时间戳转换成字符串 |
|
|
@ 功能: 将时间戳转换成字符串 |
|
|
*/ |
|
|
*/ |
|
|
const timeToString = (timeVal:any,types:int) => { |
|
|
const timeToString = (timeVal:any,types:int) => { |
|
|
let timeStr = ""; |
|
|
let timeStr = "" |
|
|
if(Array.isArray(timeVal)){ |
|
|
if(Array.isArray(timeVal)){ |
|
|
if(timeVal.length >= 2){ |
|
|
if(timeVal.length >= 2){ |
|
|
let startTime = timeToAry(timeVal[0]); |
|
|
let startTime = timeToAry(timeVal[0]) |
|
|
let endTime = timeToAry(timeVal[1]); |
|
|
let endTime = timeToAry(timeVal[1]) |
|
|
switch(types){ |
|
|
switch(types){ |
|
|
case "year": //年 |
|
|
case "year": //年 |
|
|
timeStr = `${startTime.year} 至 ${endTime.year}`; |
|
|
timeStr = `${startTime.year} 至 ${endTime.year}`; |
|
|
@ -110,8 +111,8 @@ const timeToString = (timeVal: any, types: int) => { |
|
|
timeStr = `${startTime.year}-${startTime.month}-${startTime.day} ${startTime.hours}:${startTime.minutes}:${startTime.seconds} 至 ${endTime.year}-${endTime.month}-${endTime.day} ${endTime.hours}:${endTime.minutes}:${endTime.seconds}`; |
|
|
timeStr = `${startTime.year}-${startTime.month}-${startTime.day} ${startTime.hours}:${startTime.minutes}:${startTime.seconds} 至 ${endTime.year}-${endTime.month}-${endTime.day} ${endTime.hours}:${endTime.minutes}:${endTime.seconds}`; |
|
|
break; |
|
|
break; |
|
|
case "week": //周 |
|
|
case "week": //周 |
|
|
let startWeek = getYearWeek(startTime); |
|
|
let startWeek = getYearWeek(startTime) |
|
|
let endWeek = getYearWeek(endTime); |
|
|
let endWeek = getYearWeek(endTime) |
|
|
timeStr = `${startWeek} 至 ${endWeek}`; |
|
|
timeStr = `${startWeek} 至 ${endWeek}`; |
|
|
break; |
|
|
break; |
|
|
case "timeCalss": //时间 |
|
|
case "timeCalss": //时间 |
|
|
@ -131,7 +132,7 @@ const timeToString = (timeVal: any, types: int) => { |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
}else if(timeVal.length == 1){ |
|
|
}else if(timeVal.length == 1){ |
|
|
let { year, month, day, hours, minutes, seconds } = timeToAry(timeVal[0]); |
|
|
let {year,month,day,hours,minutes,seconds} = timeToAry(timeVal[0]) |
|
|
switch(types){ |
|
|
switch(types){ |
|
|
case "year": //年 |
|
|
case "year": //年 |
|
|
timeStr = `${year}`; |
|
|
timeStr = `${year}`; |
|
|
@ -143,20 +144,20 @@ const timeToString = (timeVal: any, types: int) => { |
|
|
timeStr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
|
|
timeStr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
|
|
break; |
|
|
break; |
|
|
case "week": //周 |
|
|
case "week": //周 |
|
|
timeStr = getYearWeek(timeVal); |
|
|
timeStr = getYearWeek(timeVal) |
|
|
break; |
|
|
break; |
|
|
case "timeCalss": //时间 |
|
|
case "timeCalss": //时间 |
|
|
timeStr = `${hours}:${minutes}:${seconds}`; |
|
|
timeStr = `${hours}:${minutes}:${seconds}`; |
|
|
break; |
|
|
break; |
|
|
default: |
|
|
default: |
|
|
timeStr = `${year}-${month}-${day}`; |
|
|
timeStr = `${year}-${month}-${day}` |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
}else{ |
|
|
}else{ |
|
|
timeStr = "未知时间"; |
|
|
timeStr = "未知时间" |
|
|
} |
|
|
} |
|
|
}else{ |
|
|
}else{ |
|
|
let { year, month, day, hours, minutes, seconds } = timeToAry(timeVal); |
|
|
let {year,month,day,hours,minutes,seconds} = timeToAry(timeVal) |
|
|
switch(types){ |
|
|
switch(types){ |
|
|
case "year": //年 |
|
|
case "year": //年 |
|
|
timeStr = `${year}`; |
|
|
timeStr = `${year}`; |
|
|
@ -168,32 +169,37 @@ const timeToString = (timeVal: any, types: int) => { |
|
|
timeStr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
|
|
timeStr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
|
|
break; |
|
|
break; |
|
|
case "week": //周 |
|
|
case "week": //周 |
|
|
timeStr = getYearWeek(timeVal); |
|
|
timeStr = getYearWeek(timeVal) |
|
|
break; |
|
|
break; |
|
|
case "timeCalss": //时间 |
|
|
case "timeCalss": //时间 |
|
|
timeStr = `${hours}:${minutes}:${seconds}`; |
|
|
timeStr = `${hours}:${minutes}:${seconds}`; |
|
|
break; |
|
|
break; |
|
|
default: |
|
|
default: |
|
|
timeStr = `${year}-${month}-${day}`; |
|
|
timeStr = `${year}-${month}-${day}` |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return timeStr; |
|
|
return timeStr |
|
|
}; |
|
|
} |
|
|
let associatedFormsIndexTablekey = 0; |
|
|
let associatedFormsIndexTablekey = 0 |
|
|
const emits = defineEmits<{ |
|
|
const emits = defineEmits<{ |
|
|
(e: "asfValueChanged", val: any): void; |
|
|
(e: 'asfValueChanged', val: any): void |
|
|
}>(); |
|
|
}>() |
|
|
|
|
|
|
|
|
function asfValueChanged(val:any){ |
|
|
function asfValueChanged(val:any){ |
|
|
//console.log("childTable-asfValueChanged",val) |
|
|
//console.log("childTable-asfValueChanged",val) |
|
|
emits("asfValueChanged", val); |
|
|
emits("asfValueChanged",val) |
|
|
} |
|
|
} |
|
|
</script> |
|
|
</script> |
|
|
<template> |
|
|
<template> |
|
|
|
|
|
|
|
|
<div class="form-table form-table-add"> |
|
|
<div class="form-table form-table-add"> |
|
|
<el-table v-bind="data.control" :class="[data.className]" :data="tableDataNew"> |
|
|
<el-table |
|
|
|
|
|
v-bind="data.control" |
|
|
|
|
|
:class="[data.className]" |
|
|
|
|
|
:data="tableDataNew" |
|
|
|
|
|
> |
|
|
<el-table-column |
|
|
<el-table-column |
|
|
v-for="(item, index) in data.list" |
|
|
v-for="(item, index) in data.list" |
|
|
:key="index" |
|
|
:key="index" |
|
|
@ -202,37 +208,27 @@ function asfValueChanged(val: any) { |
|
|
:width="item.item.span" |
|
|
:width="item.item.span" |
|
|
> |
|
|
> |
|
|
<template #default="scope"> |
|
|
<template #default="scope"> |
|
|
|
|
|
|
|
|
<span v-if="item.type === 'index'">{{ scope.$index + 1 }}</span> |
|
|
<span v-if="item.type === 'index'">{{ scope.$index + 1 }}</span> |
|
|
<div v-if="type === 4 || editDisabled"> |
|
|
<div v-if="type === 4 || editDisabled"> |
|
|
<LokOrgCentent |
|
|
<LokOrgCentent v-if="item.type == 'orgCentent'" :orgid="scope.row[item.name].toString()" /> |
|
|
v-if="item.type == 'orgCentent'" |
|
|
|
|
|
:orgid="scope.row[item.name].toString()" |
|
|
|
|
|
/> |
|
|
|
|
|
<div v-else-if="item.type=='lowcodeImage'"> |
|
|
<div v-else-if="item.type=='lowcodeImage'"> |
|
|
<LowcodeImagePage :data="item" v-model="scope.row[item.name]" /> |
|
|
<LowcodeImagePage :data="item" |
|
|
|
|
|
v-model="scope.row[item.name]" /> |
|
|
</div> |
|
|
</div> |
|
|
<div v-else-if="item.type=='upload'" > |
|
|
<div v-else-if="item.type=='upload'" > |
|
|
<UploadPageList |
|
|
<UploadPageList :data="item" :img-list="scope.row[item.name]" :control="item.control" /> |
|
|
:data="item" |
|
|
</div> |
|
|
:img-list="scope.row[item.name]" |
|
|
<div v-else-if="item.type=='datePicker'" v-html="timeToString(scope.row[item.name],item.control.type)"> |
|
|
:control="item.control" |
|
|
|
|
|
/> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
<div |
|
|
|
|
|
v-else-if="item.type == 'datePicker'" |
|
|
|
|
|
v-html="timeToString(scope.row[item.name], item.control.type)" |
|
|
|
|
|
></div> |
|
|
|
|
|
<div v-else-if="item.type=='associatedForms'"> |
|
|
<div v-else-if="item.type=='associatedForms'"> |
|
|
<AssociatedForms |
|
|
<AssociatedForms :data="item" |
|
|
:data="item" |
|
|
v-model="scope.row[item.name]" :tablekey="associatedFormsIndexTablekey" :row-index="scope.$index"/> |
|
|
v-model="scope.row[item.name]" |
|
|
|
|
|
:tablekey="associatedFormsIndexTablekey" |
|
|
|
|
|
:row-index="scope.$index" |
|
|
|
|
|
/> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
<div v-else>{{ getText(scope.row[item.name],scope.row,item.name) }}</div> |
|
|
<div v-else>{{ getText(scope.row[item.name],scope.row,item.name) }}</div> |
|
|
</div> |
|
|
</div> |
|
|
<div v-else> |
|
|
<div v-else> |
|
|
|
|
|
|
|
|
<form-item |
|
|
<form-item |
|
|
v-model="scope.row[item.name]" |
|
|
v-model="scope.row[item.name]" |
|
|
:tProp="`${data.name}.${scope.$index}.${item.name}`" |
|
|
:tProp="`${data.name}.${scope.$index}.${item.name}`" |
|
|
@ -253,9 +249,7 @@ function asfValueChanged(val: any) { |
|
|
v-if="[1, 2].includes(type as number) && data.config.delBtnText && !editDisabled" |
|
|
v-if="[1, 2].includes(type as number) && data.config.delBtnText && !editDisabled" |
|
|
> |
|
|
> |
|
|
<template #default="scope"> |
|
|
<template #default="scope"> |
|
|
<el-button link type="primary" @click="delColumn(scope.$index)">{{ |
|
|
<el-button link type="primary" @click="delColumn(scope.$index)">{{ data.config.delBtnText }}</el-button> |
|
|
data.config.delBtnText |
|
|
|
|
|
}}</el-button> |
|
|
|
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
</el-table> |
|
|
</el-table> |
|
|
@ -267,4 +261,6 @@ function asfValueChanged(val: any) { |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</template> |
|
|
</template> |
|
|
<style lang="scss" scoped></style> |
|
|
<style lang='scss' scoped> |
|
|
|
|
|
|
|
|
|
|
|
</style> |
|
|
|