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.

214 lines
6.3 KiB

<template>
<div style="height: 100%">
<w-grid
ref="mainScaleVersionGridRef"
title="客户评级主标尺版本列表"
:data-url="Environment.apiContextPath('/api/irbs/mainScaleVersion')"
:fetch-data-url="Environment.apiContextPath('/api/irbs/mainScaleVersion/query')"
:sort-no="true"
:dense="true"
:checkbox-selection="false"
:pageable="false"
:query-form-cols-num="4"
:query-form-fields="mainScaleVersionGrid.queryFormFields"
:refresh-data="true"
db-click-operation="edit"
:columns="mainScaleVersionGrid.columns"
:editor="{
dialog: {
width: '60%',
},
form: {
colsNum: 2,
fields: [
{ name: 'code', label: '版本代码', type: 'w-text' },
{ name: 'name', label: '版本名称', type: 'w-text' },
{ name: 'version', label: '版本号', type: 'w-text' },
],
},
}"
:toolbar-actions="mainScaleVersionGrid.buttons"
:sort-by="['-version']"
></w-grid>
<MainScale ref="mainScaleRef" @refresh="refreshTable"></MainScale>
<MainScaleVersionFlowDialog ref="mainScaleVersionFlowDialogRef" @refresh="refreshTable"></MainScaleVersionFlowDialog>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { useQuasar } from 'quasar';
11 months ago
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager, SessionManager } from 'platform-core';
import MainScale from './MainScale.vue';
import MainScaleVersionFlowDialog from './MainScaleVersionFlowDialog.vue';
const $q = useQuasar();
const mainScaleVersionGridRef = ref();
const mainScaleRef = ref();
const mainScaleVersionFlowDialogRef = ref();
const fromStatusFormat = (val, row) => {
if (val === 'RELEASE') {
return '发布';
} else if (val === 'DRAFT') {
return '草稿';
} else if (val === 'HISTORY') {
return '历史';
}
return '';
};
const fromApprvStatusFormat = (val, row) => {
if (val === 'AWAIT_SUBMIT') {
return '待发布';
} else if (val === 'APPROVALING') {
return '审批中';
} else if (val === 'PASS') {
return '通过';
} else if (val === 'NEGATIVED') {
return '否决';
}
return '';
};
const statusOptions = [
{ label: '发布', value: 'RELEASE' },
{ label: '草稿', value: 'DRAFT' },
{ label: '历史', value: 'HISTORY' },
];
const apprvStatusOptions = [
{ label: '待发布', value: 'AWAIT_SUBMIT' },
{ label: '审批中', value: 'APPROVALING' },
{ label: '通过', value: 'PASS' },
{ label: '否决', value: 'NEGATIVED' },
];
const mainScaleVersionGrid = {
buttons: [
'query',
'reset',
'separator',
'add',
{
extend: 'edit',
enableIf: (args) => {
if (args.selected && args.selected['status'] === 'DRAFT') {
return true;
}
return false;
},
},
{
extend: 'view',
label: '详情',
click: (args) => {
mainScaleRef.value.show(args.selected);
},
},
{
extend: 'clone',
label: '复制',
enableIf: (args) => {
if (args.selected && (args.selected['status'] === 'RELEASE' || args.selected['status'] === 'HISTORY')) {
return true;
}
return false;
},
click: (args) => {
axios
.post(Environment.apiContextPath('api/irbs/mainScaleVersion/clone/' + args.selected['id']))
.then((resp) => {
if (resp && resp.data) {
mainScaleVersionGridRef.value.refresh();
}
})
.catch((error) => {
console.info('error====', error);
NotifyManager.warn('版本复制失败');
});
},
},
11 months ago
{
extend: 'remove',
enableIf: (args) => {
if (args.selected && args.selected['apprvStatus'] === 'AWAIT_SUBMIT') {
return true;
}
return false;
},
},
'export',
'separator',
{
name: 'release',
label: '发布',
enableIf: (args) => {
if (args.selected && args.selected['apprvStatus'] === 'AWAIT_SUBMIT') {
return true;
}
return false;
},
click: (args) => {
$q.dialog({
title: '询问',
message: '是否确认发布?',
cancel: { noCaps: true },
ok: { noCaps: true },
persistent: true,
}).onOk(() => {
axios
.post(Environment.apiContextPath('api/irbs/mainScaleVersion/releaseMainScaleVersion/' + args.selected['id']))
.then((resp) => {
if (resp && resp.data) {
NotifyManager.info('发布流程提交成功');
mainScaleVersionGridRef.value.refresh();
}
})
.catch((error) => {
console.info('error====', error);
NotifyManager.warn('发布流程提交失败');
});
});
},
},
{
name: 'approve',
label: '审批',
enableIf: (args) => {
11 months ago
if (args.selected && args.selected['apprvStatus'] === 'APPROVALING' && args.selected['currentAssignee'] === SessionManager.getUser().loginName) {
return true;
}
return false;
},
click: (args) => {
mainScaleVersionFlowDialogRef.value.show(args.selected);
},
},
11 months ago
'separator',
{
name: 'forseStop',
label: '强制停止',
click: (args) => {
axios.post(Environment.apiContextPath('api/irbs/corpfeatureret/forseStop/'));
},
},
],
queryFormFields: [
{ label: '版本代码', name: 'code', type: 'w-text' },
{ label: '版本名称', name: 'name', type: 'w-text' },
{ label: '版本状态', name: 'status', type: 'w-select', options: statusOptions },
{ label: '版本号', name: 'version', type: 'w-text' },
{ label: '审核状态', name: 'apprvStatus', type: 'w-select', options: apprvStatusOptions },
],
columns: [
{ name: 'code', label: '版本代码' },
{ name: 'name', label: '版本名称' },
{ name: 'status', label: '版本状态', format: fromStatusFormat },
{ name: 'version', label: '版本号' },
{ name: 'apprvStatus', label: '审核状态', format: fromApprvStatusFormat },
{ name: 'currentAssignee', label: '当前处理人' },
],
};
const refreshTable = () => {
mainScaleVersionGridRef.value.refresh();
};
</script>