Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zendata
提交
b9def3a8
Z
zendata
项目概览
易企天创
/
zendata
11 个月 前同步成功
通知
17
Star
2
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zendata
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b9def3a8
编写于
11月 19, 2020
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
close task#8434
上级
362aba58
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
130 addition
and
96 deletion
+130
-96
src/model/model.go
src/model/model.go
+1
-1
src/server/service/excel.go
src/server/service/excel.go
+1
-1
src/server/service/res.go
src/server/service/res.go
+53
-22
src/zd.go
src/zd.go
+17
-10
ui/src/api/refer.js
ui/src/api/refer.js
+4
-4
ui/src/components/Design.vue
ui/src/components/Design.vue
+31
-35
ui/src/components/FieldRefer.vue
ui/src/components/FieldRefer.vue
+23
-23
未找到文件。
src/model/model.go
浏览文件 @
b9def3a8
...
...
@@ -231,7 +231,7 @@ type ZdExcel struct {
Model
Title
string
`gorm:"column:title" json:"title"`
Name
string
`gorm:"column:name" json:"name"`
Text
string
`gorm:"column:desc" json:"desc
"`
Sheet
string
`gorm:"column:sheet" json:"sheet
"`
Path
string
`gorm:"column:path" json:"path" yaml:"-"`
Folder
string
`gorm:"-" json:"folder" yaml:"-"`
...
...
src/server/service/excel.go
浏览文件 @
b9def3a8
...
...
@@ -55,7 +55,7 @@ func (s *ExcelService) saveResToDB(excel []model.ResFile, list []*model.ZdExcel)
for
_
,
item
:=
range
excel
{
if
!
stringUtils
.
FindInArrBool
(
item
.
Path
,
names
)
{
excel
:=
model
.
ZdExcel
{
Title
:
item
.
Title
,
Name
:
item
.
Name
,
Path
:
item
.
Path
}
excel
:=
model
.
ZdExcel
{
Title
:
item
.
Title
,
Name
:
item
.
Name
,
Path
:
item
.
Path
,
Sheet
:
item
.
Title
}
s
.
excelRepo
.
Save
(
&
excel
)
}
}
...
...
src/server/service/res.go
浏览文件 @
b9def3a8
...
...
@@ -3,13 +3,19 @@ package serverService
import
(
"github.com/360EntSecGroup-Skylar/excelize/v2"
"github.com/easysoft/zendata/src/model"
serverRepo
"github.com/easysoft/zendata/src/server/repo"
"github.com/easysoft/zendata/src/service"
constant
"github.com/easysoft/zendata/src/utils/const"
fileUtils
"github.com/easysoft/zendata/src/utils/file"
"strings"
)
type
ResService
struct
{
rangesRepo
*
serverRepo
.
RangesRepo
instancesRepo
*
serverRepo
.
InstancesRepo
configRepo
*
serverRepo
.
ConfigRepo
excelRepo
*
serverRepo
.
ExcelRepo
textRepo
*
serverRepo
.
TextRepo
defRepo
*
serverRepo
.
DefRepo
}
func
(
s
*
ResService
)
LoadRes
(
resType
string
)
(
ret
[]
model
.
ResFile
)
{
...
...
@@ -37,31 +43,44 @@ func (s *ResService) LoadRes(resType string) (ret []model.ResFile) {
return
}
func
(
s
*
ResService
)
LoadResField
(
refer
model
.
ResFile
)
(
ret
[]
model
.
ResField
)
{
resFile
,
resType
,
_
:=
fileUtils
.
GetResProp
(
refer
.
Name
)
if
resType
==
"yaml"
{
typ
,
inst
,
ranges
:=
service
.
ReadYamlData
(
resFile
)
if
typ
==
"inst"
{
for
i
,
item
:=
range
inst
.
Instances
{
field
:=
model
.
ResField
{
Name
:
item
.
Instance
,
Index
:
i
+
1
}
ret
=
append
(
ret
,
field
)
}
}
else
if
typ
==
"range"
{
i
:=
0
for
name
,
_
:=
range
ranges
.
Ranges
{
field
:=
model
.
ResField
{
Name
:
name
,
Index
:
i
+
1
}
ret
=
append
(
ret
,
field
)
i
++
}
}
func
(
s
*
ResService
)
ListReferForSelection
(
resType
string
)
(
ret
interface
{})
{
if
resType
==
"ranges"
{
ret
,
_
=
s
.
rangesRepo
.
List
()
}
else
if
resType
==
"instances"
{
ret
,
_
=
s
.
instancesRepo
.
List
()
}
else
if
resType
==
"config"
{
ret
,
_
=
s
.
configRepo
.
List
()
}
else
if
resType
==
"yaml"
{
ret
,
_
=
s
.
defRepo
.
List
()
}
else
if
resType
==
"excel"
{
ret
,
_
=
s
.
excelRepo
.
List
()
}
else
if
resType
==
"text"
{
// no need to show fields in webpage, used as list
ret
,
_
=
s
.
textRepo
.
List
()
}
return
}
func
(
s
*
ResService
)
ListReferFieldForSelection
(
resId
int
,
resType
string
)
(
ret
[]
model
.
ResField
)
{
if
resType
==
"instances"
{
items
,
_
:=
s
.
instancesRepo
.
GetItems
(
resId
)
for
i
,
item
:=
range
items
{
if
item
.
ParentID
!=
0
{
return
}
// ignore sub nodes
field
:=
model
.
ResField
{
Name
:
item
.
Instance
,
Index
:
i
+
1
}
ret
=
append
(
ret
,
field
)
}
}
else
if
resType
==
"ranges"
{
items
,
_
:=
s
.
rangesRepo
.
GetItems
(
resId
)
for
i
,
item
:=
range
items
{
if
item
.
ParentID
!=
0
{
return
}
// ignore sub nodes
field
:=
model
.
ResField
{
Name
:
item
.
Name
,
Index
:
i
+
1
}
ret
=
append
(
ret
,
field
)
}
}
else
if
resType
==
"excel"
{
excel
,
_
:=
excelize
.
OpenFile
(
resFile
)
res
,
_
:=
s
.
excelRepo
.
Get
(
uint
(
resId
))
excel
,
_
:=
excelize
.
OpenFile
(
res
.
Path
)
for
_
,
sheet
:=
range
excel
.
GetSheetList
()
{
if
re
fer
.
Title
!=
sheet
{
continue
}
if
re
s
.
Sheet
!=
sheet
{
continue
}
rows
,
_
:=
excel
.
GetRows
(
sheet
)
...
...
@@ -79,5 +98,17 @@ func (s *ResService) LoadResField(refer model.ResFile) (ret []model.ResField) {
}
}
}
return
}
func
NewResService
(
rangesRepo
*
serverRepo
.
RangesRepo
,
instancesRepo
*
serverRepo
.
InstancesRepo
,
configRepo
*
serverRepo
.
ConfigRepo
,
excelRepo
*
serverRepo
.
ExcelRepo
,
textRepo
*
serverRepo
.
TextRepo
,
defRepo
*
serverRepo
.
DefRepo
)
*
ResService
{
return
&
ResService
{
rangesRepo
:
rangesRepo
,
instancesRepo
:
instancesRepo
,
configRepo
:
configRepo
,
excelRepo
:
excelRepo
,
textRepo
:
textRepo
,
defRepo
:
defRepo
}
}
src/zd.go
浏览文件 @
b9def3a8
...
...
@@ -292,7 +292,7 @@ func Init() (err error) {
gormDb
,
err
:=
serverConfig
.
NewGormDB
(
config
)
defer
gormDb
.
Close
()
def
er
Repo
:=
serverRepo
.
NewDefRepo
(
gormDb
)
defRepo
:=
serverRepo
.
NewDefRepo
(
gormDb
)
fieldRepo
:=
serverRepo
.
NewFieldRepo
(
gormDb
)
sectionRepo
:=
serverRepo
.
NewSectionRepo
(
gormDb
)
referRepo
:=
serverRepo
.
NewReferRepo
(
gormDb
)
...
...
@@ -302,8 +302,8 @@ func Init() (err error) {
excelRepo
:=
serverRepo
.
NewExcelRepo
(
gormDb
)
configRepo
:=
serverRepo
.
NewConfigRepo
(
gormDb
)
defService
:=
serverService
.
NewDefService
(
def
er
Repo
,
fieldRepo
,
referRepo
)
fieldService
:=
serverService
.
NewFieldService
(
def
er
Repo
,
fieldRepo
,
referRepo
)
defService
:=
serverService
.
NewDefService
(
defRepo
,
fieldRepo
,
referRepo
)
fieldService
:=
serverService
.
NewFieldService
(
defRepo
,
fieldRepo
,
referRepo
)
sectionService
:=
serverService
.
NewSectionService
(
fieldRepo
,
sectionRepo
)
referService
:=
serverService
.
NewReferService
(
fieldRepo
,
referRepo
)
...
...
@@ -312,9 +312,11 @@ func Init() (err error) {
textService
:=
serverService
.
NewTextService
(
textRepo
)
excelService
:=
serverService
.
NewExcelService
(
excelRepo
)
configService
:=
serverService
.
NewConfigService
(
configRepo
)
resService
:=
serverService
.
NewResService
(
rangesRepo
,
instancesRepo
,
configRepo
,
excelRepo
,
textRepo
,
defRepo
)
server
:=
NewServer
(
config
,
defService
,
fieldService
,
sectionService
,
referService
,
rangesService
,
instancesService
,
textService
,
excelService
,
configService
)
rangesService
,
instancesService
,
textService
,
excelService
,
configService
,
resService
)
server
.
Run
()
return
...
...
@@ -427,11 +429,10 @@ func (s *Server) admin(writer http.ResponseWriter, req *http.Request) {
case
"updateRefer"
:
refer
:=
serverUtils
.
ConvertRefer
(
reqData
.
Data
)
err
=
s
.
referService
.
Update
(
&
refer
)
case
"listReferType"
:
ret
.
Data
=
s
.
resService
.
LoadRes
(
reqData
.
Mode
)
case
"listReferField"
:
refer
:=
serverUtils
.
ConvertResFile
(
reqData
.
Data
)
ret
.
Data
=
s
.
resService
.
LoadResField
(
refer
)
case
"listReferForSelection"
:
ret
.
Data
=
s
.
resService
.
ListReferForSelection
(
reqData
.
Mode
)
case
"listReferFieldForSelection"
:
ret
.
Data
=
s
.
resService
.
ListReferFieldForSelection
(
reqData
.
Id
,
reqData
.
Mode
)
case
"listRanges"
:
ret
.
Data
=
s
.
rangesService
.
List
()
...
...
@@ -530,7 +531,12 @@ func (s *Server) admin(writer http.ResponseWriter, req *http.Request) {
io
.
WriteString
(
writer
,
string
(
bytes
))
}
func
NewServer
(
config
*
serverConfig
.
Config
,
defService
*
serverService
.
DefService
,
fieldServer
*
serverService
.
FieldService
,
sectionService
*
serverService
.
SectionService
,
referService
*
serverService
.
ReferService
,
rangesService
*
serverService
.
RangesService
,
instancesService
*
serverService
.
InstancesService
,
textService
*
serverService
.
TextService
,
excelService
*
serverService
.
ExcelService
,
configService
*
serverService
.
ConfigService
,
)
*
Server
{
func
NewServer
(
config
*
serverConfig
.
Config
,
defService
*
serverService
.
DefService
,
fieldServer
*
serverService
.
FieldService
,
sectionService
*
serverService
.
SectionService
,
referService
*
serverService
.
ReferService
,
rangesService
*
serverService
.
RangesService
,
instancesService
*
serverService
.
InstancesService
,
textService
*
serverService
.
TextService
,
excelService
*
serverService
.
ExcelService
,
configService
*
serverService
.
ConfigService
,
resService
*
serverService
.
ResService
)
*
Server
{
return
&
Server
{
config
:
config
,
defService
:
defService
,
...
...
@@ -542,6 +548,7 @@ func NewServer(config *serverConfig.Config, defService *serverService.DefService
textService
:
textService
,
excelService
:
excelService
,
configService
:
configService
,
resService
:
resService
,
}
}
...
...
ui/src/api/refer.js
浏览文件 @
b9def3a8
...
...
@@ -21,8 +21,8 @@ export function updateRefer (refer, ownerType) {
}
// selection input on page
export
function
listRefer
Type
(
resType
)
{
const
data
=
{
'
action
'
:
'
listRefer
Type
'
,
mode
:
resType
}
export
function
listRefer
ForSelection
(
resType
)
{
const
data
=
{
'
action
'
:
'
listRefer
ForSelection
'
,
mode
:
resType
}
return
request
({
url
:
api
.
admin
,
...
...
@@ -30,8 +30,8 @@ export function listReferType (resType) {
data
:
data
})
}
export
function
listReferField
(
refer
)
{
const
data
=
{
'
action
'
:
'
listReferField
'
,
data
:
refer
}
export
function
listReferField
ForSelection
(
referId
,
referType
)
{
const
data
=
{
'
action
'
:
'
listReferField
ForSelection
'
,
id
:
referId
,
mode
:
referType
}
return
request
({
url
:
api
.
admin
,
...
...
ui/src/components/Design.vue
浏览文件 @
b9def3a8
...
...
@@ -135,6 +135,7 @@ export default {
time2
:
0
,
treeData
:
[],
nodeMap
:
{},
openKeys
:
[],
selectedKeys
:
[],
targetModel
:
0
,
...
...
@@ -236,62 +237,57 @@ export default {
this
.
rightVisible
=
false
}
},
getOpenKeys
(
field
)
{
if
(
!
field
)
return
getOpenKeys
(
node
)
{
if
(
!
node
)
return
this
.
openKeys
.
push
(
field
.
id
)
if
(
field
.
fields
)
{
field
.
fields
.
forEach
((
item
)
=>
{
this
.
openKeys
.
push
(
node
.
id
)
this
.
nodeMap
[
node
.
id
]
=
node
if
(
node
.
fields
)
{
node
.
fields
.
forEach
((
item
)
=>
{
this
.
getOpenKeys
(
item
)
})
}
},
onSelect
(
selectedKeys
,
e
)
{
// selectedKeys, e:{selected: bool, selectedNodes, node, event}
console
.
log
(
'
onSelect
'
,
selectedKeys
,
e
.
node
.
eventKey
)
console
.
log
(
'
onSelect
'
,
selectedKeys
,
e
.
selectedNodes
,
e
.
node
,
e
.
node
.
eventKey
)
if
(
selectedKeys
.
length
==
0
)
{
selectedKeys
[
0
]
=
e
.
node
.
eventKey
// keep selected
}
const
node
=
this
.
nodeMap
[
e
.
node
.
eventKey
]
console
.
log
(
'
node
'
,
node
.
fields
)
if
(
node
.
fields
&&
node
.
fields
.
length
>
0
)
{
this
.
rightVisible
=
false
this
.
modelData
=
{}
return
}
else
{
this
.
rightVisible
=
true
this
.
tabKey
=
'
info
'
}
this
.
getModel
(
parseInt
(
selectedKeys
[
0
]))
},
getModel
(
id
)
{
console
.
log
(
'
getModel
'
,
id
)
if
(
this
.
type
===
'
def
'
)
{
getDefField
(
id
).
then
(
res
=>
{
console
.
log
(
'
getDefField
'
,
res
)
this
.
modelData
=
res
.
data
this
.
time2
=
Date
.
now
()
// trigger data refresh
this
.
tabKey
=
'
info
'
if
(
this
.
modelData
.
parentID
==
0
)
{
this
.
rightVisible
=
false
}
else
{
this
.
rightVisible
=
true
}
})
}
else
if
(
this
.
type
===
'
ranges
'
)
{
if
(
id
==
0
)
{
this
.
rightVisible
=
false
}
else
{
getResRangesItem
(
id
).
then
(
res
=>
{
console
.
log
(
'
getResRangesItem
'
,
res
)
this
.
modelData
=
res
.
data
this
.
time2
=
Date
.
now
()
// trigger data refresh
this
.
rightVisible
=
true
})
}
getResRangesItem
(
id
).
then
(
res
=>
{
console
.
log
(
'
getResRangesItem
'
,
res
)
this
.
modelData
=
res
.
data
this
.
time2
=
Date
.
now
()
// trigger data refresh
})
}
else
if
(
this
.
type
===
'
instances
'
)
{
if
(
id
==
0
)
{
this
.
rightVisible
=
false
}
else
{
getResInstancesItem
(
id
).
then
(
res
=>
{
console
.
log
(
'
getResInstancesItem
'
,
res
)
this
.
modelData
=
res
.
data
this
.
time2
=
Date
.
now
()
// trigger data refresh
this
.
rightVisible
=
true
})
}
getResInstancesItem
(
id
).
then
(
res
=>
{
console
.
log
(
'
getResInstancesItem
'
,
res
)
this
.
modelData
=
res
.
data
this
.
time2
=
Date
.
now
()
// trigger data refresh
})
}
},
menuClick
(
e
)
{
...
...
ui/src/components/FieldRefer.vue
浏览文件 @
b9def3a8
...
...
@@ -19,7 +19,7 @@
<a-input
v-model=
"refer.file"
>
<a-select
v-model=
"referFile"
@
change=
"onReferChanged"
slot=
"addonAfter"
style=
"width: 300px"
>
<a-select-option
value=
""
>
选择
</a-select-option>
<a-select-option
v-for=
"(f, i) in files"
:value=
"f.
name+'-'+f.title
"
:key=
"i"
>
<a-select-option
v-for=
"(f, i) in files"
:value=
"f.
id
"
:key=
"i"
>
{{
f
.
title
}}
</a-select-option>
</a-select>
...
...
@@ -66,7 +66,7 @@
</
template
>
<
script
>
import
{
listRefer
Type
,
listReferField
,
getRefer
,
updateRefer
,
import
{
listRefer
ForSelection
,
listReferFieldForSelection
,
getRefer
,
updateRefer
,
}
from
"
../api/refer
"
;
export
default
{
...
...
@@ -131,26 +131,35 @@ export default {
getRefer
(
this
.
model
.
id
,
this
.
type
).
then
(
json
=>
{
console
.
log
(
'
getRefer
'
,
json
)
this
.
refer
=
json
.
data
this
.
listRefer
Type
(
this
.
refer
.
type
,
true
)
this
.
listRefer
ForSelection
(
this
.
refer
.
type
,
true
)
})
},
onTypeChanged
()
{
console
.
log
(
'
onTypeChanged
'
)
this
.
listRefer
Type
(
this
.
refer
.
type
,
false
)
this
.
listRefer
ForSelection
(
this
.
refer
.
type
,
false
)
},
onReferChanged
(
value
)
{
console
.
log
(
"
onReferChanged
"
)
this
.
refer
.
file
=
value
.
split
(
'
-
'
)[
0
]
if
(
this
.
refer
.
type
!=
'
yaml
'
&&
this
.
refer
.
type
!=
'
text
'
)
{
this
.
listDefFieldReferField
()
let
file
=
{}
for
(
let
i
=
0
;
i
<
this
.
files
.
length
;
i
++
)
{
const
f
=
this
.
files
[
i
]
if
(
f
.
id
===
value
)
{
file
=
f
break
}
}
this
.
refer
.
file
=
file
.
name
if
(
this
.
refer
.
type
!=
'
yaml
'
&&
this
.
refer
.
type
!=
'
config
'
&&
this
.
refer
.
type
!=
'
text
'
)
{
this
.
listReferFieldForSelection
()
}
else
{
this
.
refer
.
colName
=
''
}
},
onFieldNameChanged
(
value
)
{
console
.
log
(
"
onFieldChanged
"
)
console
.
log
(
"
onField
Name
Changed
"
)
this
.
refer
.
colName
=
value
},
...
...
@@ -174,9 +183,9 @@ export default {
this
.
$refs
.
editForm
.
reset
()
},
listRefer
Type
(
resType
,
init
)
{
listRefer
Type
(
resType
).
then
(
json
=>
{
console
.
log
(
'
listRefer
Type
'
,
json
)
listRefer
ForSelection
(
resType
,
init
)
{
listRefer
ForSelection
(
resType
).
then
(
json
=>
{
console
.
log
(
'
listRefer
ForSelection
'
,
json
)
this
.
files
=
json
.
data
})
...
...
@@ -185,18 +194,9 @@ export default {
this
.
referFile
=
''
}
},
listDefFieldReferField
()
{
let
file
=
{}
for
(
let
i
=
0
;
i
<
this
.
files
.
length
;
i
++
)
{
const
f
=
this
.
files
[
i
]
if
(
f
.
name
+
'
-
'
+
f
.
title
===
this
.
referFile
)
{
file
=
f
break
}
}
listReferField
(
file
).
then
(
json
=>
{
console
.
log
(
'
listReferField
'
,
json
)
listReferFieldForSelection
()
{
listReferFieldForSelection
(
this
.
referFile
,
this
.
refer
.
type
).
then
(
json
=>
{
console
.
log
(
'
listReferFieldForSelection
'
,
json
)
this
.
fields
=
json
.
data
})
this
.
refer
.
colName
=
''
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录