Files
graduate-design/orion-ops-vue/src/components/app/AppReleaseAuditModal.vue
2026-03-06 14:01:32 +08:00

84 lines
1.8 KiB
Vue

<template>
<a-modal v-model="visible"
title="发布审核"
:maskClosable="false"
:destroyOnClose="true"
:width="550">
<a-spin :spinning="loading">
<div class="audit-description">
<span class="description-label normal-label mr8">审核描述</span>
<a-textarea class="description-area" v-model="description" :maxLength="64"/>
</div>
</a-spin>
<!-- 操作 -->
<template #footer>
<a-button @click="audit(false)" :disabled="loading">驳回</a-button>
<a-button type="primary" @click="audit(true)" :disabled="loading">通过</a-button>
</template>
</a-modal>
</template>
<script>
import { AUDIT_STATUS } from '@/lib/enum'
export default {
name: 'AppReleaseAuditModal',
data() {
return {
id: null,
visible: false,
loading: false,
description: null
}
},
methods: {
open(id) {
this.visible = true
this.loading = false
this.id = id
},
audit(res) {
if (!res && !this.description) {
this.$message.warning('请输入驳回描述')
return
}
this.loading = true
this.$api.auditAppRelease({
id: this.id,
status: res ? AUDIT_STATUS.RESOLVE.value : AUDIT_STATUS.REJECT.value,
reason: this.description
}).then(() => {
this.$message.success('审核完成')
this.$emit('audit', this.id, res)
this.close()
}).catch(() => {
this.loading = false
})
},
close() {
this.visible = false
this.loading = false
this.description = null
this.id = null
}
}
}
</script>
<style lang="less" scoped>
.audit-description {
display: flex;
align-items: baseline;
.description-label {
width: 80px;
}
.description-area {
height: 60px;
}
}
</style>