Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
T
topsun-bpm
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
鲁鑫
topsun-bpm
Commits
d9ed1b47
Commit
d9ed1b47
authored
Dec 16, 2023
by
覃振观
👶
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
23-12-16: 下班前提交
parent
08074efd
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
166 additions
and
76 deletions
+166
-76
listeningFromData.js
...xt/src/main/webapp/biz/topsun/common/listeningFromData.js
+151
-60
productDetail.js
...un-xt/src/main/webapp/biz/topsun/product/productDetail.js
+15
-16
No files found.
topsun-xt/src/main/webapp/biz/topsun/common/listeningFromData.js
View file @
d9ed1b47
...
@@ -6,16 +6,16 @@
...
@@ -6,16 +6,16 @@
*/
*/
function
mapping
(
dataMapping
,
rawData
)
{
function
mapping
(
dataMapping
,
rawData
)
{
window
.
dataSet
=
{};
window
.
dataSet
=
{};
window
.
dataSet
.
tempId
=
950366
;
if
(
!
rawData
)
{
if
(
!
rawData
)
{
window
.
dataSet
.
isInsert
=
true
;
window
.
dataSet
.
isInsert
=
true
;
var
rawData
=
{};
var
rawData
=
{};
}
else
{
}
else
{
window
.
dataSet
.
isInsert
=
false
;
window
.
dataSet
.
isInsert
=
false
;
}
}
let
mapper
=
{};
let
mapper
=
{}
,
returnData
=
{}
;
delete
dataMapping
.
M
apper
;
delete
dataMapping
.
m
apper
;
let
entitySet
=
Object
.
entries
(
dataMapping
);
let
entitySet
=
Object
.
entries
(
dataMapping
);
let
returnData
=
{};
tryForEach
(
entitySet
,(
entity
)
=>
{
tryForEach
(
entitySet
,(
entity
)
=>
{
let
beanName
=
entity
[
0
],
propertyNames
=
entity
[
1
],
entityData
=
rawData
[
beanName
];
let
beanName
=
entity
[
0
],
propertyNames
=
entity
[
1
],
entityData
=
rawData
[
beanName
];
if
(
!
isExist
(
rawData
,
beanName
))
{
throw
{};
}
if
(
!
isExist
(
rawData
,
beanName
))
{
throw
{};
}
...
@@ -39,21 +39,28 @@ function mapping(dataMapping, rawData) {
...
@@ -39,21 +39,28 @@ function mapping(dataMapping, rawData) {
});
});
}
else
if
(
propertyNames
instanceof
Object
)
{
}
else
if
(
propertyNames
instanceof
Object
)
{
// Grid 时执行此逻辑
// Grid 时执行此逻辑
let
listMap
=
{},
ids
=
[]
;
let
listMap
=
{},
ids
=
[]
,
rowId
=
''
;
//tryForEach 变量作用域注意
entityData
.
forEach
(
rowData
=>
{
entityData
.
forEach
(
rowData
=>
{
let
id
=
rowData
[
propertyNames
.
id
];
debugger
;
listMap
.
id
=
rowData
;
rowId
=
rowData
[
propertyNames
.
id
];
ids
.
push
(
id
);
listMap
[
rowId
]
=
rowData
;
ids
.
push
(
rowId
);
tryForEach
(
propertyNames
.
columns
,
(
property
)
=>
{
tryForEach
(
propertyNames
.
columns
,
(
property
)
=>
{
mapper
[
property
]
=
{};
mapper
[
property
]
=
[];
mapper
[
property
][
id
]
=
beanName
;
let
data
=
{};
data
[
rowId
]
=
beanName
;
mapper
[
property
].
push
(
data
)
});
});
})
})
rawData
[
beanName
]
=
{};
rawData
[
beanName
].
raw
=
entityData
;
rawData
[
beanName
].
compares
=
listMap
;
rawData
[
beanName
].
ids
=
ids
;
debugger
;
return
;
return
;
}
}
});
});
dataMapping
.
M
apper
=
mapper
;
dataMapping
.
m
apper
=
mapper
;
// ---------------- 暂不处理无法执行到此处的情况 ----------------
// ---------------- 暂不处理无法执行到此处的情况 ----------------
// 这里写死 映射对象为:‘dataMapping’
// 这里写死 映射对象为:‘dataMapping’
window
.
dataMapping
=
dataMapping
;
window
.
dataMapping
=
dataMapping
;
...
@@ -115,6 +122,92 @@ function isExist(obj, property, objName) {
...
@@ -115,6 +122,92 @@ function isExist(obj, property, objName) {
return
true
;
return
true
;
}
}
/**
* 若需要监听 Grid 数据,必须在此调用组件初始化,此处获取元素 ID
* @param elId
* @param options
* @returns {*}
*/
function
listeningGrid
(
elId
,
options
)
{
let
dataMapping
=
window
.
dataMapping
;
let
mappingEntry
=
Object
.
entries
(
dataMapping
);
tryForEach
(
mappingEntry
,
entry
=>
{
let
beanName
=
entry
[
0
],
property
=
entry
[
1
];
if
(
!
(
property
instanceof
Array
)
&&
elId
.
indexOf
(
beanName
)
>
0
)
{
let
gridId
=
property
.
id
;
if
(
!
gridId
)
{
console
.
error
(
"若需要监听 GridData ,必须在映射配置指定 ID !请检查。"
);
throw
{};
}
options
.
columns
.
unshift
({
name
:
gridId
,
hide
:
true
});
}
});
let
data
=
{};
if
(
!
options
.
data
){
console
.
error
(
'listeningGrid 必须传入 Data !请检查'
);
data
.
Rows
=
''
;
}
else
{
data
.
Rows
=
options
.
data
.
raw
;
}
options
.
data
=
data
;
const
originalOnBeforeEdit
=
options
.
onBeforeEdit
;
options
.
onBeforeEdit
=
function
(
editParm
){
originalOnBeforeEdit
.
call
(
this
,
editParm
);
let
domIds
=
editParm
.
column
.
__domid
.
split
(
'|'
),
recordId
=
editParm
.
record
.
__id
;
let
parentDomId
=
domIds
[
0
]
+
'|'
+
2
+
'|'
+
recordId
;
// +'|'+domIds[2];
let
rowDOM
;
if
(
!
(
rowDOM
=
document
.
getElementById
(
domIds
[
0
]
+
'|'
+
2
+
'|'
+
recordId
)))
{
rowDOM
=
document
.
getElementById
(
domIds
[
0
]
+
'|'
+
1
+
'|'
+
recordId
)
}
debugger
;
let
rowId
=
rowDOM
.
childNodes
[
0
].
childNodes
[
0
].
innerText
;
}
const
toolbar
=
options
.
toolbar
;
if
(
toolbar
)
{
toolbar
.
items
tryForEach
(
toolbar
.
items
,
but
=>
{
if
(
but
.
id
===
"menuAdd"
)
{
const
originalOnClick
=
but
.
click
;
but
.
click
=
function
()
{
originalOnClick
.
call
(
this
);
let
mappingEntry
=
Object
.
entries
(
window
.
dataMapping
);
tryForEach
(
mappingEntry
,
entry
=>
{
let
beanName
=
entry
[
0
];
if
(
elId
.
indexOf
(
beanName
)
>
0
)
{
let
idProperty
=
entry
[
1
].
id
;
if
(
!
idProperty
)
{
console
.
error
(
"若需要监听 GridData ,必须在映射配置指定 ID !请检查。"
);
throw
{};
}
let
mapper
=
window
.
dataMapping
.
mapper
;
let
rowId
=
window
.
dataSet
.
tempId
+=
1
let
data
=
{},
mapperData
=
{};
mapperData
[
rowId
]
=
beanName
;
mapper
[
idProperty
].
push
(
mapperData
);
window
.
dataSet
.
newData
[
beanName
].
ids
.
push
(
rowId
);
tryForEach
(
entry
[
1
].
columns
,
property
=>
{
data
[
property
]
=
''
;
});
data
[
idProperty
]
=
rowId
;
window
.
dataSet
.
newData
[
beanName
].
compares
[
rowId
]
=
data
;
debugger
;
UICtrl
.
addGridRow
(
gridManager
,
data
);
}
})
}
}
})
debugger
;
}
addObserver
(
elId
);
var
gridManager
=
UICtrl
.
grid
(
elId
,
options
);
return
gridManager
;
}
/**
/**
* 监听 input 管理页面显示的 Data。
* 监听 input 管理页面显示的 Data。
*/
*/
...
@@ -132,24 +225,23 @@ function inputEventListener() {
...
@@ -132,24 +225,23 @@ function inputEventListener() {
* @param event
* @param event
*/
*/
function
listenerContent
(
event
)
{
function
listenerContent
(
event
)
{
let
mapper
=
window
.
dataMapping
.
Mapper
;
const
property
=
event
.
target
.
getAttribute
(
'name'
);
let
property
=
event
.
target
.
getAttribute
(
'name'
);
const
beanMapping
=
window
.
dataMapping
.
mapper
[
property
];
let
beanMapping
=
mapper
[
property
];
if
(
!
beanMapping
)
{
if
(
!
beanMapping
)
{
console
.
error
(
"The configuration was not found in the 'dataMapping' : '"
+
property
+
"'"
)
console
.
error
(
"The configuration was not found in the 'dataMapping' : '"
+
property
+
"'"
)
}
}
let
newData
=
window
.
dataSet
.
newData
;
let
newData
=
window
.
dataSet
.
newData
;
// Grid 时执行此逻辑
此处根据页面 editor 元素 Id 匹配。出现异常请检查该元素 Id 生成规则是否发生变化
// Grid 时执行此逻辑
if
(
typeof
beanMapping
===
"string"
)
{
if
(
beanMapping
instanceof
Array
)
{
let
eleId
=
event
.
currentTarget
.
id
;
tryForEach
(
beanMapping
,
row
=>
{
let
labels
=
eleId
.
split
(
'_'
);
let
rowEntry
=
Object
.
entries
(
row
);
if
(
labels
[
0
].
indexOf
(
beanMapping
)
<
0
)
{
debugger
;
console
.
error
(
'页面配置的gridId "'
+
labels
[
0
]
+
'" 与映射配置中的 "'
+
beanMapping
+
'" 不匹配! 注意匹配规则为: elementId.indexOf('
+
tryForEach
(
rowEntry
,
entry
=>
{
' Mapping.ArrayKey )'
)
;
let
rowNum
=
entry
[
0
],
beanName
=
entry
[
1
]
;
}
else
{
newData
[
beanName
].
compares
[
rowNum
][
event
.
target
.
getAttribute
(
'name'
)]
=
event
.
target
.
value
;
newData
[
beanMapping
][
labels
[
2
]][
labels
[
1
]]
=
event
.
target
.
value
;
console
.
log
(
'Input value changed:'
,
event
.
target
.
value
)
;
console
.
log
(
'Input value changed:'
,
event
.
target
.
value
);
})
}
}
)
return
;
return
;
}
}
// Form 时执行此逻辑
// Form 时执行此逻辑
...
@@ -205,52 +297,51 @@ const gridEditor = function(event) {
...
@@ -205,52 +297,51 @@ const gridEditor = function(event) {
const
mutationConfig
=
{
attributes
:
true
,
childList
:
true
,
subtree
:
true
}
const
mutationConfig
=
{
attributes
:
true
,
childList
:
true
,
subtree
:
true
}
function
checkUpdata
()
{
function
checkUpdata
()
{
let
rawData
=
window
.
dataSet
.
rawData
;
let
dataSet
=
window
.
dataSet
;
let
newData
=
window
.
dataSet
.
newData
;
let
rawData
=
dataSet
.
rawData
,
newData
=
dataSet
.
newData
;
window
.
dataSet
.
upData
=
{};
window
.
dataSet
.
upData
=
{};
let
rawEntry
=
Object
.
entries
(
rawData
);
let
rawEntry
=
Object
.
entries
(
rawData
);
tryForEach
(
rawEntry
,
entry
=>
{
tryForEach
(
rawEntry
,
entry
=>
{
let
beanName
=
entry
[
0
];
let
beanName
=
entry
[
0
];
debugger
;
let
mapping
=
window
.
dataMapping
[
beanName
],
raw
=
rawData
[
beanName
],
now
=
newData
[
beanName
];
let
raw
=
rawData
[
beanName
];
if
(
mapping
instanceof
Array
)
{
let
now
=
newData
[
beanName
];
// Form 时 执行此逻辑
if
(
raw
instanceof
Array
)
{
if
(
!
(
getHashCode
(
JSON
.
stringify
(
raw
))
===
getHashCode
(
JSON
.
stringify
(
now
))))
{
debugger
;
dataSet
.
upData
[
beanName
]
=
newData
[
beanName
];
}
return
;
return
;
}
else
if
(
raw
instanceof
Object
)
{
}
else
if
(
mapping
instanceof
Object
)
{
let
rawHash
=
getHashCode
(
JSON
.
stringify
(
raw
));
// Grid 时 执行此逻辑
let
newHash
=
getHashCode
(
JSON
.
stringify
(
now
));
let
rawCompares
=
raw
.
compares
,
nowCompares
=
now
.
compares
;
if
(
!
(
rawHash
===
newHash
))
{
if
(
!
(
getHashCode
(
JSON
.
stringify
(
rawCompares
))
===
getHashCode
(
JSON
.
stringify
(
nowCompares
))))
{
window
.
dataSet
.
upData
[
beanName
]
=
newData
[
beanName
];
let
rawIds
=
raw
.
ids
,
nowIds
=
now
.
ids
;
dataSet
.
upData
[
beanName
]
=
{};
dataSet
.
upData
[
beanName
].
del
=
[];
let
delIds
=
rawIds
.
filter
(
x
=>
!
nowIds
.
includes
(
x
));
tryForEach
(
delIds
,
id
=>
{
dataSet
.
upData
[
beanName
].
del
.
push
(
rawCompares
[
id
]);
});
dataSet
.
upData
[
beanName
].
add
=
[]
let
addIds
=
nowIds
.
filter
(
x
=>
!
rawIds
.
includes
(
x
));
tryForEach
(
addIds
,
id
=>
{
dataSet
.
upData
[
beanName
].
add
.
push
(
nowCompares
[
id
]);
});
dataSet
.
upData
[
beanName
].
up
=
[]
let
nowEntry
=
Object
.
entries
(
nowCompares
);
tryForEach
(
nowEntry
,
row
=>
{
let
key
=
row
[
0
],
rowNow
=
row
[
1
];
if
(
rawCompares
[
key
])
{
if
(
!
(
getHashCode
(
JSON
.
stringify
(
rawCompares
[
key
]))
===
getHashCode
(
JSON
.
stringify
(
rowNow
))))
{
dataSet
.
upData
[
beanName
].
up
.
push
(
rowNow
);
}
}
});
}
}
}
}
})
})
}
}
/**
* 若需要监听 Grid 数据,必须在此调用组件初始化,此处获取元素 ID
* @param elId
* @param options
* @returns {*}
*/
function
listeningGrid
(
elId
,
options
)
{
let
dataMapping
=
window
.
dataMapping
;
debugger
;
const
originalOnBeforeEdit
=
options
.
onBeforeEdit
;
options
.
onBeforeEdit
=
function
(
editParm
){
originalOnBeforeEdit
.
call
(
this
,
editParm
);
let
domIds
=
editParm
.
column
.
__domid
.
split
(
'|'
);
let
columnindex
=
editParm
.
column
.
columnindex
;
let
recordId
=
editParm
.
record
.
__id
;
let
rowId
=
domIds
[
0
]
+
'|'
+
columnindex
+
'|'
+
recordId
+
'|'
+
domIds
[
2
];
debugger
;
}
addObserver
(
elId
);
return
UICtrl
.
grid
(
elId
,
options
);
}
/**
/**
* 用于判断字符串是否更改
* 用于判断字符串是否更改
* @param str
* @param str
...
...
topsun-xt/src/main/webapp/biz/topsun/product/productDetail.js
View file @
d9ed1b47
...
@@ -26,19 +26,25 @@ function initializeUI() {
...
@@ -26,19 +26,25 @@ function initializeUI() {
});
});
}
}
function
deleteHandler
(){
DataUtil
.
del
({
gridManager
:
gridManager
,
idFieldName
:
'id'
,
onSuccess
:
function
(){
}
});
}
function
faceGrid
(
elId
,
data
)
{
function
faceGrid
(
elId
,
data
)
{
var
toolbarOptions
=
UICtrl
.
getDefaultToolbarOptions
({
var
toolbarOptions
=
UICtrl
.
getDefaultToolbarOptions
({
addHandler
:
function
(){
addHandler
:
function
(){
UICtrl
.
addGridRow
(
gridManager
);
},
},
updateHandler
:
function
(){
updateHandler
:
function
(){
updateHandler
();
updateHandler
();
},
},
aaHandler
:
{
id
:
'ccAA'
,
text
:
'Hello'
,
img
:
'fa-music'
,
className
:
'btn-gray'
,
deleteHandler
:
()
=>
{
click
:
function
()
{
gridManager
.
deleteSelectedRow
();
alert
(
'hello~!'
);
},
}
}
});
});
var
gridManager
=
listeningGrid
(
elId
,
{
var
gridManager
=
listeningGrid
(
elId
,
{
columns
:
[
columns
:
[
...
@@ -46,9 +52,7 @@ function faceGrid(elId, data) {
...
@@ -46,9 +52,7 @@ function faceGrid(elId, data) {
type
:
'text'
,
type
:
'text'
,
required
:
true
required
:
true
}},
}},
{
display
:
"油墨覆盖率(%)"
,
name
:
"coverageRate"
,
width
:
120
,
minWidth
:
60
,
type
:
"string"
,
align
:
"left"
,
editor
:
{
type
:
'text'
,
required
:
true
}
},
{
display
:
"油墨覆盖率(%)"
,
name
:
"coverageRate"
,
width
:
120
,
minWidth
:
60
,
type
:
"string"
,
align
:
"left"
,
editor
:
{
type
:
'text'
,
required
:
true
}
}
{
name
:
"colorId"
,
hide
:
true
},
{
name
:
"colorId"
}
],
],
toolbar
:
toolbarOptions
,
toolbar
:
toolbarOptions
,
dataType
:
"local"
,
dataType
:
"local"
,
...
@@ -107,13 +111,10 @@ function loadDataTest() {
...
@@ -107,13 +111,10 @@ function loadDataTest() {
data
:
params
.
get
(
"data"
)
data
:
params
.
get
(
"data"
)
},
function
(
data
)
{
},
function
(
data
)
{
var
showData
=
mapping
(
dataMapping
,
data
.
rawData
);
var
showData
=
mapping
(
dataMapping
,
data
.
rawData
);
debugger
;
$
(
'#submitForm'
).
formSet
(
showData
);
$
(
'#submitForm'
).
formSet
(
showData
);
var
fronData
=
{};
var
fronData
=
{};
fronData
.
Rows
=
data
.
rawData
.
fronColors
;
faceGrid
(
"#fronColorsGrid"
,
data
.
rawData
.
fronColors
);
faceGrid
(
"#fronColorsGrid"
,
fronData
);
faceGrid
(
"#backColorsGrid"
,
data
.
rawData
.
backColors
);
fronData
.
Rows
=
data
.
backColors
;
faceGrid
(
"#backColorsGrid"
,
fronData
);
inputEventListener
();
inputEventListener
();
});
});
}
}
...
@@ -122,8 +123,6 @@ function loadDataTest() {
...
@@ -122,8 +123,6 @@ function loadDataTest() {
// alias必须唯一.这里不再要求所有对象的属性名唯一 { property : alias }
// alias必须唯一.这里不再要求所有对象的属性名唯一 { property : alias }
// 未设 alias 情况同 { property : property }
// 未设 alias 情况同 { property : property }
// Grid: 需要监听 Grid Data 时,必须设置 唯一 id 列。
// Grid: 需要监听 Grid Data 时,必须设置 唯一 id 列。
// 匹配规则 elementId.indexOf( dataMapping.ArrayKey )
// 即当前页面 ‘fronColorsGrid’.indexOf('fronColors')
var
dataMapping
=
{
var
dataMapping
=
{
Product
:
[
Product
:
[
"productId"
"productId"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment