Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
Starter Web Vue
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
product
kim3-web-vue
Starter Web Vue
Commits
c6c3093f
Commit
c6c3093f
authored
Jul 12, 2021
by
陈浩玮
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
设备管理
parent
010a1519
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
554 additions
and
82 deletions
+554
-82
src/api/oceanus.js
src/api/oceanus.js
+31
-1
src/components/popconfirm_delete/index.vue
src/components/popconfirm_delete/index.vue
+2
-2
src/components/table/SimpleTable.vue
src/components/table/SimpleTable.vue
+112
-0
src/pages/oceanus/category/components/LeftTree.vue
src/pages/oceanus/category/components/LeftTree.vue
+5
-5
src/pages/oceanus/category/components/RightTable.vue
src/pages/oceanus/category/components/RightTable.vue
+56
-35
src/pages/oceanus/category/index.vue
src/pages/oceanus/category/index.vue
+5
-0
src/pages/oceanus/equipment/Left/LeftTree.vue
src/pages/oceanus/equipment/Left/LeftTree.vue
+36
-25
src/pages/oceanus/equipment/Left/TreeDrawer.vue
src/pages/oceanus/equipment/Left/TreeDrawer.vue
+1
-1
src/pages/oceanus/equipment/Right/RightBox.vue
src/pages/oceanus/equipment/Right/RightBox.vue
+35
-8
src/pages/oceanus/equipment/Right/TabOne.vue
src/pages/oceanus/equipment/Right/TabOne.vue
+29
-0
src/pages/oceanus/equipment/Right/TabTwo.vue
src/pages/oceanus/equipment/Right/TabTwo.vue
+241
-0
src/pages/oceanus/equipment/index.vue
src/pages/oceanus/equipment/index.vue
+1
-5
No files found.
src/api/oceanus.js
View file @
c6c3093f
...
@@ -10,8 +10,13 @@ function updateOceanusTreeApi(data) {
...
@@ -10,8 +10,13 @@ function updateOceanusTreeApi(data) {
return
putReq
(
'
/oceanus/api/v1/categories
'
,
data
);
return
putReq
(
'
/oceanus/api/v1/categories
'
,
data
);
}
}
function
delOceanusTreeApi
(
data
)
{
function
delOceanusTreeApi
(
data
)
{
return
put
Req
(
`/oceanus/api/v1/categories/
${
data
.
categoryId
}
`
,
data
);
return
del
Req
(
`/oceanus/api/v1/categories/
${
data
.
categoryId
}
`
,
data
);
}
}
function
getAttributesApi
(
data
)
{
return
getReq
(
'
/oceanus/api/v1/categories/attributes
'
,
data
);
}
function
addAttributesApi
(
data
)
{
function
addAttributesApi
(
data
)
{
return
postReq
(
'
/oceanus/api/v1/categories/attributes
'
,
data
);
return
postReq
(
'
/oceanus/api/v1/categories/attributes
'
,
data
);
}
}
...
@@ -39,12 +44,32 @@ function delEquipmentsTreeApi(data) {
...
@@ -39,12 +44,32 @@ function delEquipmentsTreeApi(data) {
function
getEquipmentsInfoApi
(
data
)
{
function
getEquipmentsInfoApi
(
data
)
{
return
getReq
(
`/oceanus/api/v1/equipments/
${
data
.
catalogValue
}
`
);
return
getReq
(
`/oceanus/api/v1/equipments/
${
data
.
catalogValue
}
`
);
}
}
function
getEquipmentsAttributesApi
(
data
)
{
return
getReq
(
'
/oceanus/api/v1/equipments/attributes
'
,
data
);
}
function
addEquipmentsAttributesApi
(
data
)
{
return
postReq
(
'
/oceanus/api/v1/equipments/attributes
'
,
data
);
}
function
updateEquipmentsAttributesApi
(
data
)
{
return
putReq
(
'
/oceanus/api/v1/equipments/attributes
'
,
data
);
}
function
topEquipmentsAttributesApi
(
data
)
{
return
putReq
(
`/oceanus/api/v1/equipments/attributes/top/
${
data
.
instanceId
}
`
,{});
}
function
bottomEquipmentsAttributesApi
(
data
)
{
return
putReq
(
`/oceanus/api/v1/equipments/attributes/bottom/
${
data
.
instanceId
}
`
,{});
}
export
default
{
export
default
{
getOceanusTree
:
getOceanusTreeApi
,
getOceanusTree
:
getOceanusTreeApi
,
addOceanusTree
:
addOceanusTreeApi
,
addOceanusTree
:
addOceanusTreeApi
,
updateOceanusTree
:
updateOceanusTreeApi
,
updateOceanusTree
:
updateOceanusTreeApi
,
delOceanusTree
:
delOceanusTreeApi
,
delOceanusTree
:
delOceanusTreeApi
,
getAttributes
:
getAttributesApi
,
addAttributes
:
addAttributesApi
,
addAttributes
:
addAttributesApi
,
updateAttributes
:
updateAttributesApi
,
updateAttributes
:
updateAttributesApi
,
movementAttributes
:
movementAttributesApi
,
movementAttributes
:
movementAttributesApi
,
...
@@ -53,4 +78,9 @@ export default {
...
@@ -53,4 +78,9 @@ export default {
updateEquipmentsTree
:
updateEquipmentsTreeApi
,
updateEquipmentsTree
:
updateEquipmentsTreeApi
,
delEquipmentsTree
:
delEquipmentsTreeApi
,
delEquipmentsTree
:
delEquipmentsTreeApi
,
getEquipmentsInfo
:
getEquipmentsInfoApi
,
getEquipmentsInfo
:
getEquipmentsInfoApi
,
getEquipmentsAttributes
:
getEquipmentsAttributesApi
,
addEquipmentsAttributes
:
addEquipmentsAttributesApi
,
updateEquipmentsAttributes
:
updateEquipmentsAttributesApi
,
topEquipmentsAttributes
:
topEquipmentsAttributesApi
,
bottomEquipmentsAttributes
:
bottomEquipmentsAttributesApi
,
};
};
src/components/popconfirm_delete/index.vue
View file @
c6c3093f
...
@@ -46,10 +46,10 @@ export default {
...
@@ -46,10 +46,10 @@ export default {
await
postReq
(
this
.
url
.
url
,
this
.
url
?.
data
);
await
postReq
(
this
.
url
.
url
,
this
.
url
?.
data
);
break
;
break
;
case
'
put
'
:
case
'
put
'
:
await
putReq
(
this
.
url
.
url
,
this
.
url
?.
data
);
await
putReq
(
this
.
url
.
url
,
{},
{
data
:
this
.
url
?.
data
}
);
break
;
break
;
case
'
del
'
:
case
'
del
'
:
await
delReq
(
this
.
url
.
url
,
this
.
url
?.
data
);
await
delReq
(
this
.
url
.
url
,
{},
{
data
:
this
.
url
?.
data
}
);
break
;
break
;
}
}
}
}
...
...
src/components/table/SimpleTable.vue
0 → 100644
View file @
c6c3093f
<
template
>
<a-row
:gutter=
"[24, 24]"
>
<a-col
:span=
"24"
v-if=
"$scopedSlots.search"
>
<slot
name=
"search"
/>
</a-col>
<a-col
:span=
"24"
>
<a-table
:dataSource=
"dataSource"
:loading=
"loading"
:pagination=
"pagination"
@
change=
"pageChange"
v-bind=
"$attrs"
rowKey=
"key"
>
<slot
/>
</a-table>
</a-col>
</a-row>
</
template
>
<
script
>
const
initQuery
=
{
pageNum
:
1
,
pageSize
:
10
,
total
:
0
,
};
export
default
{
props
:
{
request
:
{
type
:
Function
,
default
:
undefined
},
otherParams
:
{
type
:
Object
,
default
:
()
=>
({})
},
rowKey
:
String
,
},
data
()
{
return
{
loading
:
true
,
dataSource
:
[],
params
:
{
...
initQuery
,
},
};
},
computed
:
{
pagination
()
{
return
{
current
:
this
.
params
.
pageNum
,
pageSize
:
this
.
params
.
pageSize
,
total
:
this
.
params
.
total
,
showQuickJumper
:
true
,
};
},
},
watch
:
{
otherParams
:
{
handler
()
{
this
.
refresh
();
},
deep
:
true
,
immediate
:
true
,
},
},
mounted
()
{
this
.
getList
({
...
this
.
params
,
...
this
.
otherParams
});
},
methods
:
{
async
getList
(
params
)
{
if
(
!
this
.
request
)
return
;
this
.
loading
=
true
;
const
data
=
await
this
.
request
(
params
);
const
{
records
,
total
,
pageNum
}
=
data
;
const
newData
=
records
.
map
((
i
)
=>
({
...
i
,
key
:
i
[
this
.
rowKey
],
editable
:
false
,
}));
this
.
dataSource
=
newData
;
this
.
params
=
{
...
this
.
params
,
total
,
pageNum
,
};
this
.
loading
=
false
;
},
refresh
()
{
const
params
=
{
...
initQuery
,
...
this
.
otherParams
,
};
this
.
getList
(
params
);
},
pageChange
(
pagination
)
{
const
params
=
{
...
this
.
params
,
...
this
.
otherParams
,
pageNum
:
pagination
.
current
,
};
this
.
getList
(
params
);
},
getTableData
()
{
return
this
.
dataSource
;
},
setTableData
(
data
)
{
this
.
dataSource
=
data
;
},
},
};
</
script
>
src/pages/oceanus/category/components/LeftTree.vue
View file @
c6c3093f
...
@@ -89,7 +89,7 @@ export default {
...
@@ -89,7 +89,7 @@ export default {
this
.
expandedKeys
=
expandedKeys
;
this
.
expandedKeys
=
expandedKeys
;
this
.
selectedKeys
=
[
treeObj
.
treeData
[
0
]?.
categoryId
];
this
.
selectedKeys
=
[
treeObj
.
treeData
[
0
]?.
categoryId
];
this
.
selectedObj
=
treeObj
.
treeData
[
0
];
this
.
selectedObj
=
treeObj
.
treeData
[
0
];
this
.
$emit
(
'
change
'
,
treeObj
.
treeData
[
0
]
);
this
.
$emit
(
'
change
'
,
{
categoryId
:
treeObj
.
treeData
[
0
].
categoryId
}
);
},
},
async
onSearch
(
searchText
)
{
async
onSearch
(
searchText
)
{
const
dataList
=
this
.
treeObj
.
data
;
const
dataList
=
this
.
treeObj
.
data
;
...
@@ -110,7 +110,7 @@ export default {
...
@@ -110,7 +110,7 @@ export default {
const
cueData
=
node
.
$props
.
dataRef
;
const
cueData
=
node
.
$props
.
dataRef
;
this
.
selectedObj
=
cueData
;
this
.
selectedObj
=
cueData
;
this
.
searchValue
=
undefined
;
this
.
searchValue
=
undefined
;
this
.
$emit
(
'
change
'
,
cueData
);
this
.
$emit
(
'
change
'
,
{
categoryId
:
cueData
.
categoryId
}
);
}
}
},
},
onExpand
(
expandedKeys
)
{
onExpand
(
expandedKeys
)
{
...
@@ -131,11 +131,11 @@ export default {
...
@@ -131,11 +131,11 @@ export default {
delete
data
.
children
;
delete
data
.
children
;
this
.
view
(
data
,
1
);
this
.
view
(
data
,
1
);
},
},
del
()
{
async
del
()
{
const
categoryId
=
this
.
selectedObj
?.
categoryId
;
const
categoryId
=
this
.
selectedObj
?.
categoryId
;
if
(
categoryId
)
return
;
if
(
!
categoryId
)
return
;
try
{
try
{
this
.
Api
.
delOceanusTree
({
categoryId
});
await
Api
.
delOceanusTree
({
categoryId
});
this
.
$message
.
success
(
'
删除成功!
'
);
this
.
$message
.
success
(
'
删除成功!
'
);
this
.
init
();
this
.
init
();
}
catch
(
e
)
{
}
catch
(
e
)
{
...
...
src/pages/oceanus/category/components/RightTable.vue
View file @
c6c3093f
<
template
>
<
template
>
<my-table
<my-card>
:style=
"
{ marginTop: 0 }"
<Table
:request=
"Api.getAttributes"
rowKey=
"attributeId"
ref=
"table"
:otherParams=
"tableParam"
>
url="/oceanus/api/v1/categories/attributes"
<!--
<template
v-if=
"tableParam.categoryId !== 1"
#search
="
{ query }">
:tableParam="{ categoryId: tableParam.categoryId }"
rowKey="key"
ref="table"
:formatData="formatData"
>
<template
v-if=
"tableParam.categoryId !== 1"
#search
="
{ query }">
<my-form-item
label=
"账号"
:colAttr=
"
{ span: 12 }">
<my-form-item
label=
"账号"
:colAttr=
"
{ span: 12 }">
<a-input
placeholder=
"Basic usage"
v-model=
"query.attributeName"
/>
<a-input
placeholder=
"Basic usage"
v-model=
"query.attributeName"
/>
</my-form-item>
</my-form-item>
</
template
>
</
template
>
-->
<
template
v-if=
"tableParam.categoryId !== 1"
#buttons
>
<!--
<template v-if="tableParam.categoryId !== 1" #buttons>
<a-button type="primary" @click="onAddTableRow">新增</a-button>
<a-button type="primary" @click="onAddTableRow">新增</a-button>
</
template
>
</template> -->
<
template
#search
>
<a-table-column
title=
"属性名称"
>
<a-row>
<
template
#default=
"row"
>
<a-col
:span=
"12"
>
<a-input
v-if=
"row.editable"
v-model=
"row.attributeName"
/>
<a-button
type=
"link"
@
click=
"onAddTableRow"
>
新增
</a-button>
<span
v-else
>
</a-col>
{{
row
.
attributeName
}}
<a-col
:span=
"12"
class=
"tw-text-right"
>
</span>
<a-input-search
</
template
>
v-model=
"attributeName"
</a-table-column>
:style=
"
{ width: '80%' }"
<a-table-column
title=
"操作"
:width=
"180"
>
placeholder="请输入搜索内容"
<
template
#default=
"row"
>
enter-button
<ActionButton
v-if=
"row.editable"
:buttons=
"editButtons"
:row=
"row"
/>
allowClear
<ActionButton
v-else
:buttons=
"buttons"
:row=
"row"
/>
@search="onSearch"
/>
</a-col>
</a-row>
</
template
>
</
template
>
</a-table-column>
</my-table>
<a-table-column
title=
"属性名称"
>
<
template
#default=
"row"
>
<a-input
v-if=
"row.editable"
v-model=
"row.attributeName"
/>
<span
v-else
>
{{
row
.
attributeName
}}
</span>
</
template
>
</a-table-column>
<a-table-column
title=
"操作"
:width=
"180"
>
<
template
#default=
"row"
>
<ActionButton
v-if=
"row.editable"
:buttons=
"editButtons"
:row=
"row"
/>
<ActionButton
v-else
:buttons=
"buttons"
:row=
"row"
/>
</
template
>
</a-table-column>
</Table>
</my-card>
</template>
</template>
<
script
>
<
script
>
import
Api
from
'
@/api/oceanus
'
;
import
Api
from
'
@/api/oceanus
'
;
import
{
formatObj
}
from
'
@/utils
'
;
import
ActionButton
from
'
@/components/action_button/index.vue
'
;
import
ActionButton
from
'
@/components/action_button/index.vue
'
;
import
Table
from
'
@/components/table/SimpleTable.vue
'
;
export
default
{
export
default
{
components
:
{
ActionButton
},
components
:
{
ActionButton
,
Table
},
props
:
{
props
:
{
param
:
Object
,
param
:
Object
,
},
},
watch
:
{
watch
:
{
param
(
val
)
{
param
:
{
this
.
tableParam
=
val
;
handler
(
val
)
{
this
.
tableParam
=
{
...
val
};
this
.
attributeName
=
''
;
},
deep
:
true
,
immediate
:
true
,
},
},
},
},
data
()
{
data
()
{
...
@@ -100,12 +117,16 @@ export default {
...
@@ -100,12 +117,16 @@ export default {
},
},
],
],
tableParam
:
{},
tableParam
:
{},
attributeName
:
''
,
Api
,
};
};
},
},
methods
:
{
methods
:
{
async
formatData
(
data
)
{
onSearch
(
val
)
{
const
newData
=
await
formatObj
(
data
.
records
,
{
key
:
'
attributeId
'
});
this
.
tableParam
=
{
return
newData
;
...
this
.
tableParam
,
attributeName
:
val
,
};
},
},
onAddTableRow
()
{
onAddTableRow
()
{
const
data
=
this
.
$refs
[
'
table
'
]?.
getTableData
();
const
data
=
this
.
$refs
[
'
table
'
]?.
getTableData
();
...
@@ -170,7 +191,7 @@ export default {
...
@@ -170,7 +191,7 @@ export default {
this
.
$refs
[
'
table
'
]?.
setTableData
(
newData
);
this
.
$refs
[
'
table
'
]?.
setTableData
(
newData
);
},
},
refreshTable
()
{
refreshTable
()
{
this
.
$refs
[
'
table
'
]?.
re
set
();
this
.
$refs
[
'
table
'
]?.
re
fresh
();
},
},
},
},
};
};
...
...
src/pages/oceanus/category/index.vue
View file @
c6c3093f
...
@@ -20,6 +20,11 @@ export default {
...
@@ -20,6 +20,11 @@ export default {
treeVale
:
{},
treeVale
:
{},
};
};
},
},
watch
:
{
treeVale
(
val
)
{
console
.
log
(
val
);
},
},
methods
:
{},
methods
:
{},
};
};
</
script
>
</
script
>
src/pages/oceanus/equipment/Left/LeftTree.vue
View file @
c6c3093f
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<div>
<div>
<my-card>
<my-card>
<a-row
:gutter=
"[16, 16]"
>
<a-row
:gutter=
"[16, 16]"
>
<a-col
:span=
"24"
>
<
!--
<
a-col
:span=
"24"
>
<a-select
<a-select
show-search
show-search
v-model=
"searchValue"
v-model=
"searchValue"
...
@@ -16,22 +16,22 @@
...
@@ -16,22 +16,22 @@
@
search=
"onSearch"
@
search=
"onSearch"
@
change=
"onChange"
@
change=
"onChange"
/>
/>
</a-col>
</a-col>
-->
<a-col
:span=
"24"
class=
"tw-text-right"
>
<a-col
:span=
"24"
class=
"tw-text-right"
>
<a-button-group>
<a-button-group>
<a-dropdown
:disabled=
"
selectedKeys.length === 0
"
>
<a-dropdown
:disabled=
"
!treeNode
"
>
<a-menu
slot=
"overlay"
>
<a-menu
slot=
"overlay"
>
<a-menu-item
<a-menu-item
key=
"1"
key=
"1"
@
click=
"addOrg"
@
click=
"addOrg"
:disabled=
"
selectedObj.catalogType === 'EQUIPMENT'
"
:disabled=
"
!(treeNode && treeNode.dataRef.catalogType !== 'EQUIPMENT')
"
>
新增组织
>
新增组织
</a-menu-item>
</a-menu-item>
<a-menu-item
key=
"2"
@
click=
"addEqu"
>
新增设备
</a-menu-item>
<a-menu-item
key=
"2"
@
click=
"addEqu"
>
新增设备
</a-menu-item>
</a-menu>
</a-menu>
<a-button
type=
"primary"
ghost
>
新增
<a-icon
type=
"down"
/></a-button>
<a-button
type=
"primary"
ghost
>
新增
<a-icon
type=
"down"
/></a-button>
</a-dropdown>
</a-dropdown>
<a-button
<
!--
<
a-button
type=
"primary"
type=
"primary"
ghost
ghost
@
click=
"edit"
@
click=
"edit"
...
@@ -39,13 +39,27 @@
...
@@ -39,13 +39,27 @@
selectedKeys.length === 0 || selectedObj.catalogType === 'ORGANIZATION'
selectedKeys.length === 0 || selectedObj.catalogType === 'ORGANIZATION'
"
"
>
编辑
</a-button
>
编辑
</a-button
>
>
<a-button
<a-button
type=
"primary"
type=
"primary"
ghost
ghost
@
click=
"del"
@
click=
"del"
:disabled=
"selectedKeys.length === 0 || selectedObj.catalogType === 'ROOTNODE'"
:disabled=
"selectedKeys.length === 0 || selectedObj.catalogType === 'ROOTNODE'"
>
删除
</a-button
>
删除
</a-button
>
-->
<a-button
type=
"primary"
ghost
@
click=
"edit"
:disabled=
"!(treeNode && treeNode.dataRef.catalogType === 'EQUIPMENT')"
>
编辑
</a-button
>
<a-button
type=
"primary"
ghost
@
click=
"del"
:disabled=
"!(treeNode && treeNode.dataRef.catalogType !== 'ROOTNODE')"
>
删除
</a-button
>
>
</a-button-group>
</a-button-group>
</a-col>
</a-col>
...
@@ -86,7 +100,6 @@ export default {
...
@@ -86,7 +100,6 @@ export default {
replaceFields
:
{
title
:
'
catalogName
'
,
key
:
'
catalogId
'
,
children
:
'
children
'
},
replaceFields
:
{
title
:
'
catalogName
'
,
key
:
'
catalogId
'
,
children
:
'
children
'
},
treeData
:
[],
treeData
:
[],
selectedKeys
:
[],
selectedKeys
:
[],
selectedObj
:
{},
allData
:
[],
allData
:
[],
treeNode
:
undefined
,
treeNode
:
undefined
,
};
};
...
@@ -112,7 +125,6 @@ export default {
...
@@ -112,7 +125,6 @@ export default {
this
.
allData
=
[...
this
.
allData
,
parentNode
];
this
.
allData
=
[...
this
.
allData
,
parentNode
];
this
.
treeNode
=
undefined
;
this
.
treeNode
=
undefined
;
this
.
selectedKeys
=
[];
this
.
selectedKeys
=
[];
this
.
selectedObj
=
{};
},
},
onLoadData
(
treeNode
)
{
onLoadData
(
treeNode
)
{
return
new
Promise
((
resolve
)
=>
{
return
new
Promise
((
resolve
)
=>
{
...
@@ -135,31 +147,29 @@ export default {
...
@@ -135,31 +147,29 @@ export default {
},
},
onChange
(
val
)
{
onChange
(
val
)
{
const
data
=
this
.
allData
.
find
((
i
)
=>
i
.
catalogId
===
val
);
const
data
=
this
.
allData
.
find
((
i
)
=>
i
.
catalogId
===
val
);
this
.
selectedObj
=
data
;
this
.
selectedKeys
=
[
val
];
this
.
selectedKeys
=
[
val
];
this
.
searchValue
=
val
;
this
.
searchValue
=
val
;
this
.
$emit
(
'
change
'
,
data
);
this
.
$emit
(
'
change
'
,
data
);
},
},
async
onSelect
(
selectedKeys
,
{
node
})
{
async
onSelect
(
selectedKeys
,
{
node
})
{
console
.
log
(
node
.
dataRef
);
this
.
treeNode
=
node
;
this
.
treeNode
=
node
;
this
.
selectedKeys
=
selectedKeys
;
this
.
selectedKeys
=
selectedKeys
;
let
data
=
{};
let
data
=
{};
if
(
selectedKeys
.
length
!==
0
)
{
if
(
selectedKeys
.
length
!==
0
)
{
const
curData
=
node
.
dataRef
;
const
curData
=
node
.
dataRef
;
this
.
selectedObj
=
curData
;
this
.
searchValue
=
undefined
;
this
.
searchValue
=
undefined
;
if
(
curData
.
catalogType
===
'
EQUIPMENT
'
)
{
if
(
curData
.
catalogType
===
'
EQUIPMENT
'
)
{
data
=
await
Api
.
getEquipmentsInfo
(
curData
);
data
=
await
Api
.
getEquipmentsInfo
(
curData
);
this
.
selectedObj
=
{
Object
.
keys
(
data
).
forEach
((
key
)
=>
{
node
.
dataRef
[
key
]
=
data
[
key
];
});
data
=
{
...
data
,
...
data
,
catalogId
:
curData
.
catalogId
,
catalogId
:
curData
.
catalogId
,
catalogType
:
curData
.
catalogType
,
catalogType
:
curData
.
catalogType
,
};
};
data
=
this
.
selectedObj
;
this
.
treeData
=
[...
this
.
treeData
]
;
}
}
}
else
{
this
.
selectedObj
=
{};
}
}
this
.
$emit
(
'
change
'
,
data
);
this
.
$emit
(
'
change
'
,
data
);
},
},
...
@@ -170,7 +180,8 @@ export default {
...
@@ -170,7 +180,8 @@ export default {
});
});
},
},
addEqu
()
{
addEqu
()
{
const
{
catalogId
}
=
this
.
selectedObj
;
const
data
=
{
...
this
.
treeNode
.
dataRef
};
const
{
catalogId
}
=
data
;
this
.
view
({
parentCatalogId
:
catalogId
,
catalogType
:
'
EQUIPMENT
'
},
0
);
this
.
view
({
parentCatalogId
:
catalogId
,
catalogType
:
'
EQUIPMENT
'
},
0
);
},
},
addOrg
()
{
addOrg
()
{
...
@@ -180,24 +191,24 @@ export default {
...
@@ -180,24 +191,24 @@ export default {
this
.
onLoadData
(
this
.
treeNode
);
this
.
onLoadData
(
this
.
treeNode
);
},
},
edit
()
{
edit
()
{
const
curData
=
{
...
this
.
treeNode
.
dataRef
};
const
data
=
{
const
data
=
{
...
this
.
selectedObj
,
...
curData
,
installTime
:
installTime
:
curData
.
installTime
&&
moment
(
curData
.
installTime
,
'
YYYY-MM-DD
'
),
this
.
selectedObj
.
installTime
&&
moment
(
this
.
selectedObj
.
installTime
,
'
YYYY-MM-DD
'
),
runTime
:
curData
.
runTime
&&
moment
(
curData
.
runTime
,
'
YYYY-MM-DD
'
),
runTime
:
this
.
selectedObj
.
runTime
&&
moment
(
this
.
selectedObj
.
runTime
,
'
YYYY-MM-DD
'
),
};
};
delete
data
.
children
;
delete
data
.
children
;
this
.
view
(
data
,
1
);
this
.
view
(
data
,
1
);
},
},
async
del
()
{
async
del
()
{
if
(
isObjEmpty
(
this
.
selectedObj
))
return
;
const
data
=
{
...
this
.
treeNode
.
dataRef
};
if
(
isObjEmpty
(
data
))
return
;
try
{
try
{
await
Api
.
delEquipmentsTree
(
this
.
selectedObj
);
await
Api
.
delEquipmentsTree
(
data
);
this
.
$message
.
success
(
'
删除成功!
'
);
this
.
$message
.
success
(
'
删除成功!
'
);
this
.
onLoadData
(
this
.
treeNode
.
$parent
);
this
.
onLoadData
(
this
.
treeNode
.
$parent
);
this
.
treeNode
=
undefined
;
this
.
treeNode
=
undefined
;
this
.
selectedKeys
=
[];
this
.
selectedKeys
=
[];
this
.
selectedObj
=
{};
}
catch
(
e
)
{
}
catch
(
e
)
{
this
.
$message
.
warning
(
'
删除失败!
'
);
this
.
$message
.
warning
(
'
删除失败!
'
);
}
}
...
@@ -212,13 +223,13 @@ export default {
...
@@ -212,13 +223,13 @@ export default {
const
{
catalogId
,
catalogType
}
=
catalogForm
;
const
{
catalogId
,
catalogType
}
=
catalogForm
;
console
.
log
(
this
.
treeNode
);
console
.
log
(
this
.
treeNode
);
this
.
treeNode
.
dataRef
.
catalogName
=
equipmentName
;
this
.
treeNode
.
dataRef
.
catalogName
=
equipmentName
;
this
.
selectedObj
=
{
const
newData
=
{
...
equipmentForm
,
...
equipmentForm
,
catalogId
,
catalogId
,
catalogType
,
catalogType
,
};
};
this
.
treeData
=
[...
this
.
treeData
];
this
.
treeData
=
[...
this
.
treeData
];
this
.
$emit
(
'
change
'
,
this
.
selectedObj
);
this
.
$emit
(
'
change
'
,
newData
);
}
}
},
},
},
},
...
...
src/pages/oceanus/equipment/Left/TreeDrawer.vue
View file @
c6c3093f
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<a-input
v-model=
"form.equipmentName"
:disabled=
"isView"
/>
<a-input
v-model=
"form.equipmentName"
:disabled=
"isView"
/>
</a-form-model-item>
</a-form-model-item>
<a-form-model-item
label=
"类别"
prop=
"categoryId"
>
<a-form-model-item
label=
"类别"
prop=
"categoryId"
>
<a-tree-select
:treeData=
"oceanusTreeList"
v-model=
"form.categoryId"
:disabled=
"
isView
"
/>
<a-tree-select
:treeData=
"oceanusTreeList"
v-model=
"form.categoryId"
:disabled=
"
type === 1
"
/>
</a-form-model-item>
</a-form-model-item>
<a-form-model-item
label=
"等级"
prop=
"equipmentGrade"
>
<a-form-model-item
label=
"等级"
prop=
"equipmentGrade"
>
<Select
v-model=
"form.equipmentGrade"
:options=
"equipmentGradeList"
:disabled=
"isView"
/>
<Select
v-model=
"form.equipmentGrade"
:options=
"equipmentGradeList"
:disabled=
"isView"
/>
...
...
src/pages/oceanus/equipment/Right/RightBox.vue
View file @
c6c3093f
<
template
>
<
template
>
<my-card>
<my-card>
<a-tabs
default-active-key=
"1"
@
change=
"callback"
>
<a-tabs
v-model=
"key"
>
<a-tab-pane
key=
"1"
tab=
"Tab 1"
>
Content of Tab Pane 1
</a-tab-pane>
<a-tab-pane
key=
"1"
tab=
"基本信息"
:forceRender=
"true"
>
<a-tab-pane
key=
"2"
tab=
"Tab 2"
force-render
>
Content of Tab Pane 2
</a-tab-pane>
<TabOne
v-if=
"key === '1'"
:dataInfo=
"dataInfo"
/>
<a-tab-pane
key=
"3"
tab=
"Tab 3"
>
Content of Tab Pane 3
</a-tab-pane>
</a-tab-pane>
<a-tab-pane
key=
"2"
tab=
"属性"
:forceRender=
"true"
>
<TabTwo
v-if=
"key === '2'"
:dataInfo=
"dataInfo"
/>
</a-tab-pane>
<a-tab-pane
key=
"3"
tab=
"事件"
:forceRender=
"true"
>
Content of Tab Pane 3
</a-tab-pane>
</a-tabs>
</a-tabs>
</my-card>
</my-card>
</
template
>
</
template
>
<
script
>
<
script
>
import
TabOne
from
'
./TabOne.vue
'
;
import
TabTwo
from
'
./TabTwo.vue
'
;
export
default
{
export
default
{
components
:
{
TabOne
,
TabTwo
},
props
:
{
info
:
{
type
:
Object
,
default
:
()
=>
({}),
},
},
data
()
{
data
()
{
return
{};
return
{
dataInfo
:
{},
key
:
'
1
'
,
};
},
},
methods
:
{
watch
:
{
callback
(
key
)
{
info
:
{
console
.
log
(
key
);
handler
(
val
)
{
this
.
dataInfo
=
val
;
this
.
key
=
'
1
'
;
},
immediate
:
true
,
deep
:
true
,
},
},
},
},
methods
:
{
// callback(key) {
// this.key = key;
// },
},
};
};
</
script
>
</
script
>
src/pages/oceanus/equipment/Right/TabOne.vue
0 → 100644
View file @
c6c3093f
<
template
>
<a-descriptions
:column=
"2"
>
<a-descriptions-item
label=
"设备编码"
>
{{
dataInfo
.
equipmentCode
}}
</a-descriptions-item>
<a-descriptions-item
label=
"设备名称"
>
{{
dataInfo
.
equipmentName
}}
</a-descriptions-item>
<a-descriptions-item
label=
"类别"
>
{{
dataInfo
.
categoryName
}}
</a-descriptions-item>
<a-descriptions-item
label=
"等级"
>
{{
dataInfo
.
equipmentGradeName
}}
</a-descriptions-item>
<a-descriptions-item
label=
"安装日期"
>
{{
dataInfo
.
installTime
?
dataInfo
.
installTime
.
substring
(
0
,
10
)
:
''
}}
</a-descriptions-item>
<a-descriptions-item
label=
"运行日期"
>
{{
dataInfo
.
runTime
?
dataInfo
.
runTime
.
substring
(
0
,
10
)
:
''
}}
</a-descriptions-item>
<a-descriptions-item
label=
"供应商"
>
{{
dataInfo
.
supplier
}}
</a-descriptions-item>
<a-descriptions-item
label=
"制造商"
>
{{
dataInfo
.
manufacturer
}}
</a-descriptions-item>
<a-descriptions-item
label=
"专业"
>
{{
dataInfo
.
specialtyCodeName
}}
</a-descriptions-item>
</a-descriptions>
</
template
>
<
script
>
export
default
{
props
:
{
dataInfo
:
{
type
:
Object
,
default
:
()
=>
({}),
},
},
methods
:
{},
};
</
script
>
src/pages/oceanus/equipment/Right/TabTwo.vue
0 → 100644
View file @
c6c3093f
<
template
>
<Table
ref=
"TableRef"
:request=
"Api.getEquipmentsAttributes"
rowKey=
"instanceId"
:otherParams=
"otherParams"
>
<template
#search
>
<a-row>
<a-col
:span=
"12"
>
<a-button
type=
"link"
@
click=
"onAddRow"
>
新增
</a-button>
<a-divider
type=
"vertical"
/>
<a-dropdown>
<a-button
type=
"link"
>
过滤
<a-icon
type=
"down"
/>
</a-button>
<a-menu
slot=
"overlay"
>
<a-menu-item>
<a
@
click=
"() => onChangeAttributeType('ALL')"
>
全部
</a>
</a-menu-item>
<a-menu-item>
<a
@
click=
"() => onChangeAttributeType('SYSTEM')"
>
系统
</a>
</a-menu-item>
<a-menu-item>
<a
@
click=
"() => onChangeAttributeType('CUSTOM')"
>
自定义
</a>
</a-menu-item>
</a-menu>
</a-dropdown>
</a-col>
<a-col
:span=
"12"
class=
"tw-text-right"
>
<a-input-search
v-model=
"attributeName"
:style=
"
{ width: '80%' }"
placeholder="请输入搜索内容"
enter-button
allowClear
@search="onSearch"
/>
</a-col>
</a-row>
</
template
>
<a-table-column
title=
"属性名称"
>
<
template
#default=
"row"
>
<a-input
v-if=
"row.editable"
v-model=
"row.attributeName"
/>
<span
v-else
>
{{
row
.
attributeName
}}
</span>
</
template
>
</a-table-column>
<a-table-column
title=
"属性值"
>
<
template
#default=
"row"
>
<a-input
v-if=
"row.editable"
v-model=
"row.instanceValue"
/>
<span
v-else
>
{{
row
.
instanceValue
}}
</span>
</
template
>
</a-table-column>
<a-table-column
title=
"属性类型"
data-index=
"attributeTypeName"
/>
<a-table-column
title=
"操作"
:width=
"180"
>
<
template
#default=
"row"
>
<ActionButton
v-if=
"row.editable"
:buttons=
"editButtons"
:row=
"row"
/>
<ActionButton
v-else
:buttons=
"buttons"
:row=
"row"
/>
</
template
>
</a-table-column>
</Table>
</template>
<
script
>
import
ActionButton
from
'
@/components/action_button/index.vue
'
;
import
Api
from
'
@/api/oceanus
'
;
import
Table
from
'
@/components/table/SimpleTable.vue
'
;
export
default
{
components
:
{
Table
,
ActionButton
},
props
:
{
dataInfo
:
{
type
:
Object
,
default
:
()
=>
({}),
},
},
watch
:
{
dataInfo
:
{
handler
(
val
)
{
const
{
equipmentId
,
categoryId
}
=
val
;
this
.
otherParams
=
{
attributeType
:
'
ALL
'
,
equipmentId
,
categoryId
,
};
this
.
attributeName
=
''
;
},
deep
:
true
,
immediate
:
true
,
},
},
data
()
{
return
{
Api
,
attributeName
:
''
,
otherParams
:
{},
buttons
:
[
{
label
:
'
编辑
'
,
click
:
this
.
onEditRow
,
},
{
type
:
'
confirm
'
,
url
:
(
row
)
=>
({
url
:
'
/oceanus/api/v1/equipments/attributes
'
,
method
:
'
del
'
,
data
:
{
instanceIds
:
[
row
.
instanceId
],
},
}),
after
:
()
=>
this
.
refreshTable
(),
isHidden
:
(
row
)
=>
{
return
row
.
attributeType
===
'
SYSTEM
'
;
},
},
{
label
:
'
置顶
'
,
click
:
async
(
row
)
=>
{
const
{
instanceId
}
=
row
;
try
{
await
Api
.
topEquipmentsAttributes
({
instanceId
});
this
.
refreshTable
();
this
.
$message
.
success
(
'
置顶成功!
'
);
}
catch
(
e
)
{
this
.
$message
.
warning
(
'
置顶失败!
'
);
}
},
},
{
label
:
'
置底
'
,
click
:
async
(
row
)
=>
{
const
{
instanceId
}
=
row
;
try
{
await
Api
.
bottomEquipmentsAttributes
({
instanceId
});
this
.
refreshTable
();
this
.
$message
.
success
(
'
置顶成功!
'
);
}
catch
(
e
)
{
this
.
$message
.
warning
(
'
置顶失败!
'
);
}
},
},
],
editButtons
:
[
{
label
:
'
确定
'
,
click
:
this
.
onSubmitRow
,
},
{
type
:
'
confirm
'
,
label
:
'
取消
'
,
title
:
'
确认是否取消?
'
,
onOk
:
this
.
onCancelRow
,
},
],
};
},
mounted
()
{},
methods
:
{
onChangeAttributeType
(
val
)
{
this
.
otherParams
=
{
...
this
.
otherParams
,
attributeType
:
val
,
};
},
onSearch
(
val
)
{
this
.
otherParams
=
{
...
this
.
otherParams
,
attributeName
:
val
,
};
},
onAddRow
()
{
const
data
=
this
.
$refs
[
'
TableRef
'
]?.
getTableData
();
const
isEdit
=
data
.
find
((
i
)
=>
i
.
action
===
'
add
'
);
if
(
isEdit
)
return
;
const
obj
=
{
editable
:
true
,
key
:
+
new
Date
(),
attributeType
:
'
CUSTOM
'
,
attributeName
:
''
,
action
:
'
add
'
,
equipmentId
:
this
.
dataInfo
.
equipmentId
,
viewIndex
:
0
,
};
this
.
$refs
[
'
TableRef
'
]?.
setTableData
([
obj
,
...
data
]);
},
async
onSubmitRow
(
row
)
{
if
(
row
.
attributeName
===
''
||
row
.
instanceValue
===
''
)
{
return
this
.
$message
.
warning
(
'
请输入属性名称、属性值
'
);
}
else
{
try
{
if
(
row
.
action
===
'
add
'
)
{
await
Api
.
addEquipmentsAttributes
(
row
);
}
if
(
row
.
action
===
'
edit
'
)
{
await
Api
.
updateEquipmentsAttributes
(
row
);
}
this
.
refreshTable
();
this
.
$message
.
success
(
'
提交成功!
'
);
}
catch
(
e
)
{
this
.
$message
.
warning
(
'
保存失败!
'
);
}
}
},
onEditRow
(
row
)
{
const
data
=
this
.
$refs
[
'
TableRef
'
]?.
getTableData
();
const
newData
=
data
.
map
((
i
)
=>
{
const
oData
=
{
...
i
};
if
(
i
.
key
===
row
.
key
)
{
oData
.
editable
=
true
;
oData
.
action
=
'
edit
'
;
}
return
oData
;
});
this
.
$refs
[
'
TableRef
'
]?.
setTableData
(
newData
);
},
onCancelRow
(
row
)
{
const
data
=
this
.
$refs
[
'
TableRef
'
]?.
getTableData
();
if
(
row
.
action
===
'
add
'
)
{
const
newData
=
data
.
filter
((
i
)
=>
i
.
key
!==
row
.
key
);
this
.
$refs
[
'
TableRef
'
]?.
setTableData
(
newData
);
}
if
(
row
.
action
===
'
edit
'
)
{
const
newData
=
data
.
map
((
i
)
=>
{
const
data
=
{
...
i
};
if
(
i
.
key
===
row
.
key
)
{
data
.
editable
=
false
;
delete
data
.
action
;
}
return
data
;
});
this
.
$refs
[
'
TableRef
'
]?.
setTableData
(
newData
);
}
},
refreshTable
()
{
this
.
$refs
[
'
TableRef
'
]?.
refresh
();
},
},
};
</
script
>
src/pages/oceanus/equipment/index.vue
View file @
c6c3093f
...
@@ -22,10 +22,6 @@ export default {
...
@@ -22,10 +22,6 @@ export default {
isObjEmpty
,
isObjEmpty
,
};
};
},
},
watch
:
{
watch
:
{},
treeVale
(
val
)
{
console
.
log
(
val
);
},
},
};
};
</
script
>
</
script
>
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