You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
270 lines
7.9 KiB
270 lines
7.9 KiB
/* |
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
|
* contributor license agreements. See the NOTICE file distributed with |
|
* this work for additional information regarding copyright ownership. |
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
|
* (the "License"); you may not use this file except in compliance with |
|
* the License. You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
<template> |
|
<div class="container"> |
|
|
|
<div class="title-box"> |
|
<span class="name">{{$t('Version Info')}}</span> |
|
</div> |
|
|
|
<div class="table-box" v-if="processDefinitionVersions.length > 0"> |
|
<table class="fixed"> |
|
<caption><!-- placeHolder --></caption> |
|
<tr> |
|
<th scope="col"> |
|
<span>#</span> |
|
</th> |
|
<th scope="col" style="min-width: 40px"> |
|
<span>Version</span> |
|
</th> |
|
<th scope="col" style="min-width: 200px;max-width: 300px;"> |
|
<span>{{$t('Description')}}</span> |
|
</th> |
|
<th scope="col" style="min-width: 50px"> |
|
<span>{{$t('Create Time')}}</span> |
|
</th> |
|
<th scope="col" style="min-width: 300px"> |
|
<span>{{$t('Operation')}}</span> |
|
</th> |
|
</tr> |
|
<tr v-for="(item, $index) in processDefinitionVersions" :key="item.id"> |
|
<td> |
|
<span>-</span> |
|
</td> |
|
<td> |
|
<span v-if="item.version"> |
|
<span v-if="item.version === processDefinition.version" style="color: green"><strong>{{item.version}} {{$t('Current Version')}}</strong></span> |
|
<span v-else>{{item.version}}</span> |
|
</span> |
|
<span v-else>-</span> |
|
</td> |
|
<td> |
|
<span v-if="item.description">{{item.description}}</span> |
|
<span v-else>-</span> |
|
</td> |
|
<td> |
|
<span v-if="item.createTime">{{item.createTime}}</span> |
|
<span v-else>-</span> |
|
</td> |
|
<td> |
|
<x-poptip |
|
:ref="'poptip-switch-version-' + $index" |
|
placement="top-end" |
|
width="90"> |
|
<p>{{$t('Confirm Switch To This Version?')}}</p> |
|
<div style="text-align: right; margin: 0;padding-top: 4px;"> |
|
<x-button type="text" size="xsmall" shape="circle" @click="_closeSwitchVersion($index)"> |
|
{{$t('Cancel')}} |
|
</x-button> |
|
<x-button type="primary" size="xsmall" shape="circle" |
|
@click="_mVersionSwitchProcessDefinitionVersion(item)">{{$t('Confirm')}} |
|
</x-button> |
|
</div> |
|
<template slot="reference"> |
|
<x-button |
|
icon="ans-icon-dependence" |
|
type="primary" |
|
shape="circle" |
|
size="xsmall" |
|
:disabled="item.version === processDefinition.version || 'ONLINE' === processDefinition.state" |
|
data-toggle="tooltip" |
|
:title="$t('Switch To This Version')"> |
|
</x-button> |
|
</template> |
|
</x-poptip> |
|
<x-poptip |
|
:ref="'poptip-delete-' + $index" |
|
placement="top-end" |
|
width="90"> |
|
<p>{{$t('Delete?')}}</p> |
|
<div style="text-align: right; margin: 0;padding-top: 4px;"> |
|
<x-button type="text" size="xsmall" shape="circle" @click="_closeDelete($index)">{{$t('Cancel')}} |
|
</x-button> |
|
<x-button type="primary" size="xsmall" shape="circle" |
|
@click="_mVersionDeleteProcessDefinitionVersion(item,$index)">{{$t('Confirm')}} |
|
</x-button> |
|
</div> |
|
<template slot="reference"> |
|
<x-button |
|
icon="ans-icon-trash" |
|
type="error" |
|
shape="circle" |
|
size="xsmall" |
|
:disabled="item.version === processDefinition.version || 'ONLINE' === processDefinition.state" |
|
data-toggle="tooltip" |
|
:title="$t('delete')"> |
|
</x-button> |
|
</template> |
|
</x-poptip> |
|
</td> |
|
</tr> |
|
</table> |
|
</div> |
|
|
|
<div v-if="processDefinitionVersions.length === 0"> |
|
<m-no-data><!----></m-no-data> |
|
</div> |
|
|
|
<div v-if="processDefinitionVersions.length > 0"> |
|
<div class="bottom-box"> |
|
<x-button type="text" @click="_close()"> {{$t('Cancel')}}</x-button> |
|
<x-page :current="pageNo" :total="total" @on-change="_mVersionGetProcessDefinitionVersionsPage" small> |
|
<!----></x-page> |
|
</div> |
|
</div> |
|
|
|
</div> |
|
</template> |
|
|
|
<script> |
|
import mNoData from '@/module/components/noData/noData' |
|
|
|
export default { |
|
name: 'versions', |
|
data () { |
|
return { |
|
tableHeaders: [ |
|
{ |
|
label: 'version', |
|
prop: 'version' |
|
}, |
|
{ |
|
label: 'createTime', |
|
prop: 'createTime' |
|
} |
|
] |
|
} |
|
}, |
|
props: { |
|
processDefinition: Object, |
|
processDefinitionVersions: Array, |
|
total: Number, |
|
pageNo: Number, |
|
pageSize: Number |
|
}, |
|
methods: { |
|
/** |
|
* switch version in process definition version list |
|
*/ |
|
_mVersionSwitchProcessDefinitionVersion (item) { |
|
this.$emit('mVersionSwitchProcessDefinitionVersion', { |
|
version: item.version, |
|
processDefinitionId: this.processDefinition.id, |
|
fromThis: this |
|
}) |
|
}, |
|
|
|
/** |
|
* delete one version of process definition |
|
*/ |
|
_mVersionDeleteProcessDefinitionVersion (item) { |
|
this.$emit('mVersionDeleteProcessDefinitionVersion', { |
|
version: item.version, |
|
processDefinitionId: this.processDefinition.id, |
|
fromThis: this |
|
}) |
|
}, |
|
|
|
/** |
|
* Paging event of process definition versions |
|
*/ |
|
_mVersionGetProcessDefinitionVersionsPage (val) { |
|
this.$emit('mVersionGetProcessDefinitionVersionsPage', { |
|
pageNo: val, |
|
pageSize: this.pageSize, |
|
processDefinitionId: this.processDefinition.id, |
|
fromThis: this |
|
}) |
|
}, |
|
|
|
/** |
|
* Close the switch version layer |
|
*/ |
|
_closeSwitchVersion (i) { |
|
if (i > 0) { |
|
this.$refs[`poptip-switch-version-${i}`][0].doClose() |
|
} |
|
}, |
|
|
|
/** |
|
* Close the delete layer |
|
*/ |
|
_closeDelete (i) { |
|
if (i > 0) { |
|
this.$refs[`poptip-delete-${i}`][0].doClose() |
|
} |
|
}, |
|
|
|
/** |
|
* Close and destroy component and component internal events |
|
*/ |
|
_close () { |
|
// flag Whether to delete a node this.$destroy() |
|
this.$emit('close', { |
|
fromThis: this |
|
}) |
|
} |
|
}, |
|
created () { |
|
}, |
|
mounted () { |
|
}, |
|
components: { mNoData } |
|
} |
|
</script> |
|
|
|
<style lang="scss" rel="stylesheet/scss"> |
|
.container { |
|
width: 500px; |
|
position: relative; |
|
|
|
.title-box { |
|
height: 61px; |
|
border-bottom: 1px solid #DCDEDC; |
|
position: relative; |
|
|
|
.name { |
|
position: absolute; |
|
left: 24px; |
|
top: 18px; |
|
font-size: 16px; |
|
} |
|
} |
|
|
|
.bottom-box { |
|
position: absolute; |
|
bottom: 0; |
|
left: 0; |
|
width: 100%; |
|
text-align: right; |
|
height: 60px; |
|
line-height: 60px; |
|
border-top: 1px solid #DCDEDC; |
|
background: #fff; |
|
|
|
.ans-page { |
|
display: inline-block; |
|
} |
|
} |
|
|
|
.table-box { |
|
overflow-y: scroll; |
|
height: calc(100vh - 61px); |
|
padding-bottom: 60px; |
|
} |
|
} |
|
</style>
|
|
|