Browse Source

穿梭框提交无值----bug修改

lwx_v10
liwenxuan 1 year ago
parent
commit
d37ce26dd6
  1. 2
      src/components/DesignForm/assembly/index.ts
  2. 1
      src/widget/associatedforms/index.vue
  3. 93
      src/widget/lowcodetransfer/index.vue
  4. 149
      src/widget/lowcodetransfer/lowcodeTransfer.vue

2
src/components/DesignForm/assembly/index.ts

@ -813,7 +813,7 @@ export default [
icon: '', icon: '',
iconFont: 'fa-arrows-h', iconFont: 'fa-arrows-h',
control: { control: {
modelValue: '', modelValue: [],
fixedOptions: [{ fixedOptions: [{
id: 'thefirstrootnode', id: 'thefirstrootnode',
label: '根节点1', label: '根节点1',

1
src/widget/associatedforms/index.vue

@ -68,6 +68,7 @@ const value = computed({
} }
}) })
const updateModel = (val: any) => { const updateModel = (val: any) => {
console.log("dfsasdfasdf")
let controlAttribute = "" let controlAttribute = ""
if(props.data.control){ if(props.data.control){
if(props.data.control.type){ if(props.data.control.type){

93
src/widget/lowcodetransfer/index.vue

@ -14,7 +14,7 @@
<input v-model="value" type="hidden" > <input v-model="value" type="hidden" >
</el-form-item> </el-form-item>
<LowcodeTransfer :data="props.data"></LowcodeTransfer> <LowcodeTransfer :data="props.data" :selected-value="value" @checked-id-list-changed="checkedIdListChangedIndex" @update-model="updateModel" ></LowcodeTransfer>
</template> </template>
<script lang='ts' setup> <script lang='ts' setup>
import LowcodeTransfer from './lowcodeTransfer.vue'; import LowcodeTransfer from './lowcodeTransfer.vue';
@ -34,10 +34,15 @@ const props = withDefaults(
}>(), }>(),
{} {}
) )
const emits = defineEmits<{ const emits = defineEmits<{
(e: 'update:modelValue', numVal: any): void (e: 'update:modelValue', numVal: any): void
}>() }>()
function checkedIdListChangedIndex(val:any){
//console.log(val)
value.value = val
}
const formProps = inject(constFormProps, {}) as any const formProps = inject(constFormProps, {}) as any
const type = computed(() => { const type = computed(() => {
return formProps.value.type return formProps.value.type
@ -48,23 +53,107 @@ const config = computed(() => {
const changeEvent = inject(constControlChange, '') as any const changeEvent = inject(constControlChange, '') as any
const parsedData = ref<any[]>([])
const value = computed({ const value = computed({
get() { get() {
if (props.tProp) { if (props.tProp) {
//console.log("a")
// //
return props.modelValue return props.modelValue
} else { } else {
return formProps.value.model[props.data.name] /* console.log(formProps.value.model)
console.log(props.data.name)
console.log(formProps.value.model[props.data.name]) */
nextTick(()=>{
if(formProps.value.model[props.data.name]&&formProps.value.model[props.data.name] != ""&&parsedData.value.length==0){
parsedData.value = JSON.parse(formProps.value.model[props.data.name]);
}
})
// eslint-disable-next-line vue/no-side-effects-in-computed-properties
// parsedData.value = arr
return parsedData.value
//return formProps.value.model[props.data.name]
} }
}, },
set(newVal: any) { set(newVal: any) {
//console.log(newVal)
if (props.tProp) { if (props.tProp) {
emits('update:modelValue', newVal) emits('update:modelValue', newVal)
} }
updateModel(newVal) updateModel(newVal)
} }
}) })
function waitModelHasValue(){
//console.log("waitModelHasValue")
setTimeout(()=>{
if(formProps.value.model&&formProps.value.model.creater){
/* console.log(formProps.value.model[props.data.name])
console.log(formProps.value.model)
console.log(props.data.name) */
/* nextTick(()=>{
if(formProps.value.model[props.data.name]&&formProps.value.model[props.data.name] != ""&&parsedData.value.length==0){
parsedData.value = JSON.parse(formProps.value.model[props.data.name]);
}
}) */
if(formProps.value.model[props.data.name]){
//console.log(formProps.value.model[props.data.name])
parsedData.value = JSON.parse(formProps.value.model[props.data.name]);
}
//console.log(""+parsedData.value)
value.value = parsedData.value
}else{
waitModelHasValue()
}
},500)
}
onMounted(() => {
/* console.log(formProps.value.model[props.data.name])
console.log(formProps.value)
console.log(props.data.name) */
//nextTick(()=>{
if(formProps.value.model&&formProps.value.model.creater){
/* console.log(formProps.value.model[props.data.name])
console.log(formProps.value.model)
console.log(props.data.name) */
nextTick(()=>{
if(formProps.value.model[props.data.name]&&formProps.value.model[props.data.name] != ""&&parsedData.value.length==0){
parsedData.value = JSON.parse(formProps.value.model[props.data.name]);
}
})
value.value = parsedData.value
}else{
waitModelHasValue()
}
//})
/* setTimeout(()=>{
nextTick(()=>{
if(formProps.value.model[props.data.name]&&formProps.value.model[props.data.name] != ""&&parsedData.value.length==0){
parsedData.value = JSON.parse(formProps.value.model[props.data.name]);
}
})
checkedIdListChangedIndex(parsedData.value)
},500) */
})
/* watch(value, (newValue, oldValue) => {
},{deep:true}); */
const updateModel = (val: any) => { const updateModel = (val: any) => {
/* console.log("updateModel")
console.log(typeof(val))
console.log(val) */
let controlAttribute = "" let controlAttribute = ""
if(props.data.control){ if(props.data.control){
if(props.data.control.type){ if(props.data.control.type){

149
src/widget/lowcodetransfer/lowcodeTransfer.vue

@ -1,6 +1,6 @@
<template> <template>
<div v-if="dataFinished" class="transfer"> <div v-if="dataFinished" class="transfer"><!-- {{props.selectedValue}} -->
<div class="leftArea"> <div class="leftArea"><!-- {{ selectedValueCompu }}{{checkedIdList}} -->
<div class="transferName">{{ transferConfig.transferName }}</div> <div class="transferName">{{ transferConfig.transferName }}</div>
<div style="padding-left: 15px; padding-right: 25px;margin-top: 10px;margin-bottom: 8px;"> <div style="padding-left: 15px; padding-right: 25px;margin-top: 10px;margin-bottom: 8px;">
<ElInput v-model="keyword" placeholder="搜索"> <ElInput v-model="keyword" placeholder="搜索">
@ -50,9 +50,21 @@ import request from '@/utils/request';
const props = defineProps({ const props = defineProps({
// eslint-disable-next-line vue/require-default-prop // eslint-disable-next-line vue/require-default-prop
data: { data: {
type: Object, type: Object,
} default() {
return {};
},
},
selectedValue: {
type: Array,
default() {
return [];
},
},
}) })
const emits = defineEmits(['checkedIdListChanged','updateModel']);
const fixedOptions = props.data?.control.fixedOptions const fixedOptions = props.data?.control.fixedOptions
const transferConfig = props.data?.config const transferConfig = props.data?.config
const treeProps = { const treeProps = {
@ -67,10 +79,69 @@ const isExpandAll = ref(false) // 是否全展开
const keyword = ref('') // const keyword = ref('') //
const checkList = ref([]) // list const checkList = ref([]) // list
const userList = ref([]) const userList = ref([])
let checkedIdList = ["302697","ceshi","301625"]; let checkedIdList = ref([]);
checkedIdList = []; let count = 0
function waitAndReGet(){
/* console.log("waitAndReGet")
console.log(props.selectedValue)
console.log(props.selectedValue.value) */
setTimeout(()=>{
let values = props.selectedValue.map(item => {
//
return item;
});
if(props.selectedValue&&values){
/* console.log("")
console.log(props.selectedValue)
console.log(values) */
//return props.selectedValue.value
checkedIdList.value = values
}else{
if(count<3){
count++
waitAndReGet()
}
/* console.log("waitAndReGet---else") */
}
},2000)
}
const selectedValueCompu = computed({
get() {
//console.log("get")
//nextTick(()=>{
let values = props.selectedValue.map(item => {
//
return item;
});
if(props.selectedValue&&values){
/* console.log(props.selectedValue.value)
console.log("computed---if") */
return values
}else{
waitAndReGet()
/* console.log("computed---else") */
return []
}
//})
},
set(){}
})
/* console.log(props.selectedValue) */
const url = transferConfig.apiUrl;/* '/javasys/lowCode/transfer/getOrgAndManTree' */ const url = transferConfig.apiUrl;/* '/javasys/lowCode/transfer/getOrgAndManTree' */
function getDetail() { function getDetail() {
//console.log(11111) //console.log(11111)
if(transferConfig.transferDataSource==="数据源"){ if(transferConfig.transferDataSource==="数据源"){
@ -90,9 +161,9 @@ if(transferConfig.transferDataSource==="数据源"){
label: '全选', label: '全选',
children: [...resData.value] children: [...resData.value]
}] }]
treeRef.value.setCheckedKeys(checkedIdList,true) treeRef.value.setCheckedKeys(checkedIdList.value,true)
setTimeout(() => { setTimeout(() => {
checkedIdList.forEach(element => { checkedIdList.value.forEach(element => {
const _node = treeRef?.value?.getNode(element) const _node = treeRef?.value?.getNode(element)
if (!_node) return if (!_node) return
const _checkList = checkList.value const _checkList = checkList.value
@ -116,7 +187,7 @@ if(transferConfig.transferDataSource==="数据源"){
}); });
} }
const getCheckedList = () => { const getCheckedList = () => {
checkedIdList = treeRef.value.getCheckedKeys(true) checkedIdList.value = treeRef.value.getCheckedKeys(true)
} }
@ -303,10 +374,10 @@ if(transferConfig.transferDataSource==="固定选项"){
children: fixedOptions children: fixedOptions
}] }]
//console.log(treeRef) //console.log(treeRef)
/* console.log(checkedIdList.value) */
treeRef.value.setCheckedKeys(checkedIdList,true) treeRef.value.setCheckedKeys(checkedIdList.value,true)
setTimeout(() => { setTimeout(() => {
checkedIdList.forEach(element => { checkedIdList.value.forEach(element => {
const _node = treeRef?.value?.getNode(element) const _node = treeRef?.value?.getNode(element)
if (!_node) return if (!_node) return
const _checkList = checkList.value const _checkList = checkList.value
@ -337,6 +408,60 @@ onMounted(() => {
}) })
// checkedIdList
watch(checkedIdList, (newValue, oldValue) => {
//console.log('checkedIdList ', newValue);
emits('checkedIdListChanged',newValue);
},{deep:true});
watch(selectedValueCompu, (newValue, oldValue) => {
//console.log('selectedValueCompu ', newValue);
checkedIdList.value = selectedValueCompu.value
//
if(transferConfig.transferDataSource==="固定选项"){
setTimeout(() => {
// 2: node
userList.value = [{
id: '全选',
label: '全选',
children: fixedOptions
}]
//console.log(treeRef)
/* console.log(checkedIdList.value) */
treeRef.value.setCheckedKeys(checkedIdList.value,true)
setTimeout(() => {
checkedIdList.value.forEach(element => {
const _node = treeRef?.value?.getNode(element)
if (!_node) return
const _checkList = checkList.value
if (_node.checked) { //
if (_node.checked && _node.childNodes.length === 0) {
_checkList.push(_node)
}
// new Set()
checkList.value = Array.from(new Set(_checkList))
// ,,
if (_node.childNodes.length > 0) {
_node.childNodes.map(item => handleCheckList(item.data))
}
} else if (!_node.checked) { //
checkList.value = checkList.value.filter(item => item.checked)
}
});
}, 50);
}, 50);
dataFinished = true
}else{
getDetail
dataFinished = true
}
//emits('updateModel',newValue);
},{deep:true});
</script> </script>

Loading…
Cancel
Save