申报审批功能
This commit is contained in:
parent
40e5205ccb
commit
9ca397a7c5
|
@ -51,6 +51,7 @@ function isRequired(field: string): string {
|
|||
}
|
||||
|
||||
const biddingExpertRef = ref();
|
||||
|
||||
const bidList = ref<any[]>([]);
|
||||
|
||||
const biddingExpertList = ref([]);
|
||||
|
|
|
@ -116,7 +116,9 @@ export function getFormSchema(params: any = {}) {
|
|||
console.log(formRef.value.form);
|
||||
chooseCompanyModalApi.setData({
|
||||
title: '选择合同相对人',
|
||||
guids: [formRef.value.form.providerId],
|
||||
guids: formRef.value.form.providerId
|
||||
? [formRef.value.form.providerId]
|
||||
: [],
|
||||
});
|
||||
chooseCompanyModalApi.open();
|
||||
},
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script setup lang="ts">
|
||||
import { computed, nextTick, onMounted, reactive, ref } from 'vue';
|
||||
import { computed, nextTick, onMounted, ref } from 'vue';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
|
||||
import { Page, useVbenModal } from '@vben/common-ui';
|
||||
|
@ -14,9 +14,11 @@ import {
|
|||
import { logger } from 'common-utils';
|
||||
|
||||
import Apis from '#/api';
|
||||
import temporaryFormModal from '#/components/temporary-form-modal/temporary-form-modal.vue';
|
||||
import { useVxeTable } from '#/hooks/vxeTable';
|
||||
import { DICT_TYPE, getDictDatasAsync } from '#/utils/dict';
|
||||
import { FileUploader } from '#/utils/file';
|
||||
import AuditNodeTable from '#/views/contract/components/audit-node-table/audit-node-table.vue';
|
||||
import BasisTable from '#/views/contract/components/basis-table/basis-table.vue';
|
||||
import ApprovalCard from '#/views/contract/iframe-info/components/info-approval/approval-card.vue';
|
||||
import chooseUserModal from '#/views/system/user/choose-user-modal.vue';
|
||||
|
@ -35,15 +37,22 @@ const [ChooseCompanyModal, chooseCompanyModalApi] = useVbenModal({
|
|||
connectedComponent: chooseCompanyModal,
|
||||
});
|
||||
|
||||
const [TemporaryFormModal, temporaryFormModalApi] = useVbenModal({
|
||||
connectedComponent: temporaryFormModal,
|
||||
});
|
||||
|
||||
const fileUploader = new FileUploader({});
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const id = ref(route.params.id);
|
||||
const taskId = route.query.taskId;
|
||||
const auditId = ref();
|
||||
|
||||
const pageRef = ref();
|
||||
|
||||
const formRef = ref();
|
||||
const formRefByBaseInfo = ref();
|
||||
const sbCtrBasePt = ref<any>({});
|
||||
|
||||
const isLoading = ref(false);
|
||||
|
||||
|
@ -72,25 +81,6 @@ function getColumns(): any {
|
|||
];
|
||||
}
|
||||
|
||||
/** Hooks - 表格 */
|
||||
const gridOptions = reactive(
|
||||
gridProps({
|
||||
height: '120px',
|
||||
columns: getColumns(),
|
||||
data: [],
|
||||
toolbarConfig: {
|
||||
enabled: false,
|
||||
},
|
||||
pagerConfig: {
|
||||
enabled: false,
|
||||
},
|
||||
rowConfig: {
|
||||
useKey: true,
|
||||
isCurrent: false,
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
const fileList = ref<UploadFile[]>([]);
|
||||
|
||||
const fileListByProfile = ref<UploadFile[]>([]);
|
||||
|
@ -109,7 +99,7 @@ function handleBack() {
|
|||
* 页面返回并关闭tab
|
||||
*/
|
||||
function back() {
|
||||
router.replace('/contract/declaration/list');
|
||||
router.replace('/contract/declaration/todo');
|
||||
}
|
||||
|
||||
const handleChange = (info: UploadChangeParam) => {
|
||||
|
@ -135,7 +125,7 @@ function handleDelete() {
|
|||
});
|
||||
}
|
||||
|
||||
const collapses = ['1', '2', '3', '4', '5'];
|
||||
const collapses = ['1', '2', '3', '4', '5', '6'];
|
||||
const collapseActiveKey = ref(collapses);
|
||||
function areArraysEqualUnordered(arr1, arr2) {
|
||||
if (arr1.length !== arr2.length) return false;
|
||||
|
@ -160,8 +150,15 @@ async function handleChooseCompanyConfirm(e) {
|
|||
});
|
||||
}
|
||||
|
||||
const selectUsers = ref([]);
|
||||
const chooseUserModalOpenType = ref<'audit' | 'reject' | 'submit'>('audit');
|
||||
async function handleChooseUserConfirm(e) {
|
||||
chooseUserModalApi.close();
|
||||
if (chooseUserModalOpenType.value === 'submit') {
|
||||
selectUsers.value = e;
|
||||
handleSubmit('submit');
|
||||
chooseUserModalApi.close();
|
||||
return;
|
||||
}
|
||||
|
||||
formRef.value.setFormData({
|
||||
assigneeList: e.map((item) => item.ACCOUNT_ID),
|
||||
|
@ -169,7 +166,6 @@ async function handleChooseUserConfirm(e) {
|
|||
// isLoading.value = true;
|
||||
}
|
||||
|
||||
function handleDownloadTemplate() {}
|
||||
async function handleSave() {
|
||||
isLoading.value = true;
|
||||
|
||||
|
@ -235,10 +231,10 @@ async function handleSave() {
|
|||
title: '提示',
|
||||
content: '保存成功!是否进行提交?',
|
||||
onOk: () => {
|
||||
handleSubmit();
|
||||
handleSubmit('openModal');
|
||||
},
|
||||
onCancel: () => {
|
||||
back();
|
||||
// back();
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
|
@ -249,21 +245,127 @@ async function handleSave() {
|
|||
}
|
||||
}
|
||||
|
||||
async function handleSubmit() {
|
||||
try {
|
||||
await Apis.sbCtrBasePt.post_submit({ params: { guid: id.value } });
|
||||
message.success('提交成功');
|
||||
back();
|
||||
} catch (error) {
|
||||
message.error('提交失败,请稍候再试');
|
||||
logger.error('申报结果报错失败', error);
|
||||
} finally {
|
||||
isLoading.value = false;
|
||||
async function handleSubmit(type: 'openModal' | 'submit') {
|
||||
if (type === 'openModal') {
|
||||
chooseUserModalOpenType.value = 'submit';
|
||||
chooseUserModalApi.setData({
|
||||
title: '选择审批人',
|
||||
});
|
||||
chooseUserModalApi.open();
|
||||
}
|
||||
|
||||
if (type === 'submit') {
|
||||
try {
|
||||
await Apis.sbCtrBasePt.post_start({
|
||||
data: {
|
||||
guid: sbCtrBasePt.value.guid,
|
||||
assigneeList: selectUsers.value.map((item) => item.ACCOUNT_ID),
|
||||
},
|
||||
});
|
||||
message.success('提交成功');
|
||||
back();
|
||||
} catch (error) {
|
||||
message.error('提交失败,请稍候再试');
|
||||
logger.error('申报结果报错失败', error);
|
||||
} finally {
|
||||
isLoading.value = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const isTemporaryFormModalLoading = ref(false);
|
||||
|
||||
async function handleAudit(
|
||||
type: 'accessConfirm' | 'reject' | 'rejectConfirm',
|
||||
data?: any,
|
||||
) {
|
||||
console.log(type);
|
||||
console.log(route);
|
||||
if (type === 'accessConfirm') {
|
||||
Modal.confirm({
|
||||
title: '提示',
|
||||
content: '是否确认审核通过?',
|
||||
onOk: async () => {
|
||||
try {
|
||||
await Apis.selectMerchantsBasicInfo.post_submit({
|
||||
params: {
|
||||
guid: sbCtrBasePt.value.guid,
|
||||
},
|
||||
data: {
|
||||
appId: id.value,
|
||||
taskId: route.query.taskId,
|
||||
nodeId: '',
|
||||
comment: '通过',
|
||||
},
|
||||
});
|
||||
message.success('审核通过');
|
||||
back();
|
||||
} catch (error) {
|
||||
logger.error('审核通过失败', error);
|
||||
message.error('审核通过失败,请稍候再试');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (type === 'reject') {
|
||||
Modal.confirm({
|
||||
title: '提示',
|
||||
content: '是否确认退回?',
|
||||
onOk: () => {
|
||||
temporaryFormModalApi.setData({
|
||||
title: '退回原因',
|
||||
schema: {
|
||||
columns: {
|
||||
comment: {
|
||||
title: '',
|
||||
key: 'comment',
|
||||
col: { span: 24 },
|
||||
colon: false,
|
||||
component: {
|
||||
name: 'a-textarea',
|
||||
vModel: 'value',
|
||||
autoSize: { minRows: 4, maxRows: 6 },
|
||||
placeholder: '请输入',
|
||||
},
|
||||
rules: [{ required: true, message: '请输入退回原因' }],
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
temporaryFormModalApi.open();
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (type === 'rejectConfirm') {
|
||||
isTemporaryFormModalLoading.value = true;
|
||||
const comment = data.comment;
|
||||
try {
|
||||
await Apis.selectMerchantsBasicInfo.post_rollback({
|
||||
params: {
|
||||
guid: sbCtrBasePt.value.guid,
|
||||
},
|
||||
data: {
|
||||
appId: sbCtrBasePt.value.guid,
|
||||
taskId: route.query.taskId,
|
||||
nodeId: '',
|
||||
comment,
|
||||
},
|
||||
});
|
||||
temporaryFormModalApi.close();
|
||||
message.success('退回成功');
|
||||
back();
|
||||
} catch (error) {
|
||||
logger.error('合同立项退回失败', error);
|
||||
message.error('退回失败,请稍候再试');
|
||||
} finally {
|
||||
isTemporaryFormModalLoading.value = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const contractData = ref<any>({});
|
||||
const businessData = ref<any>({});
|
||||
|
||||
const currData = ref({});
|
||||
|
||||
|
@ -307,25 +409,30 @@ onMounted(async () => {
|
|||
});
|
||||
|
||||
// 先查合同基本信息
|
||||
const contract: any = await Apis.contractBaseInfo.get_getOne({
|
||||
let contract: any = await Apis.contractBaseInfo.get_page({
|
||||
params: { contractId: id.value },
|
||||
});
|
||||
contract = contract.rows[0];
|
||||
|
||||
if (contract && contract.contractId) {
|
||||
contractData.value = contract;
|
||||
|
||||
const business: any = await Apis.selectMerchantsBasicInfo.get_getOne({
|
||||
params: { contractId: contract.contractId },
|
||||
// 查询
|
||||
let sbCtrBasePtData: any = await Apis.sbCtrBasePt.post_page({
|
||||
// params: { ctrBaseId: contract.contractId },
|
||||
params: { ctrBaseId: '123456' },
|
||||
});
|
||||
console.log(business);
|
||||
if (business.fileUuid) {
|
||||
const files = await fileUploader.select(business.fileUuid);
|
||||
business.fileList = files;
|
||||
sbCtrBasePtData = sbCtrBasePtData.rows[0];
|
||||
|
||||
console.log(sbCtrBasePtData);
|
||||
if (sbCtrBasePtData.fileUuid) {
|
||||
const files = await fileUploader.select(sbCtrBasePtData.fileUuid);
|
||||
sbCtrBasePtData.fileList = files;
|
||||
}
|
||||
businessData.value = business;
|
||||
sbCtrBasePt.value = sbCtrBasePtData;
|
||||
|
||||
nextTick(() => {
|
||||
formRefByBaseInfo.value.setFormData(contract);
|
||||
formRef.value.setFormData(business);
|
||||
formRef.value.setFormData(sbCtrBasePtData);
|
||||
});
|
||||
} else {
|
||||
throw new Error('当前合同信息不存在');
|
||||
|
@ -364,6 +471,12 @@ onMounted(async () => {
|
|||
@confirm="handleChooseUserConfirm"
|
||||
/>
|
||||
|
||||
<TemporaryFormModal
|
||||
v-model:loading="isTemporaryFormModalLoading"
|
||||
class="w-[950px]"
|
||||
@confirm="handleAudit('rejectConfirm', $event)"
|
||||
/>
|
||||
|
||||
<a-affix
|
||||
:offset-top="0"
|
||||
:style="{ zIndex: 50 }"
|
||||
|
@ -371,13 +484,35 @@ onMounted(async () => {
|
|||
>
|
||||
<div class="flex w-full flex-row bg-white pl-1 pt-1">
|
||||
<a-space class="flex-1">
|
||||
<vben-button variant="primary" @click="handleSave()">
|
||||
<vben-button v-if="!taskId" variant="primary" @click="handleSave()">
|
||||
保存
|
||||
</vben-button>
|
||||
<vben-button variant="primary" @click="handleSubmit()">
|
||||
<vben-button
|
||||
v-if="!taskId"
|
||||
variant="primary"
|
||||
@click="handleSubmit('openModal')"
|
||||
>
|
||||
送审
|
||||
</vben-button>
|
||||
<vben-button variant="destructive" @click="handleDelete()">
|
||||
<vben-button
|
||||
v-if="taskId"
|
||||
variant="primary"
|
||||
@click="handleAudit('accessConfirm')"
|
||||
>
|
||||
通过
|
||||
</vben-button>
|
||||
<vben-button
|
||||
v-if="taskId"
|
||||
variant="destructive"
|
||||
@click="handleAudit('reject')"
|
||||
>
|
||||
退回
|
||||
</vben-button>
|
||||
<vben-button
|
||||
v-if="sbCtrBasePt.flowInstanceId"
|
||||
variant="destructive"
|
||||
@click="handleDelete()"
|
||||
>
|
||||
废除
|
||||
</vben-button>
|
||||
<vben-button variant="secondary" @click="handleBack()">
|
||||
|
@ -449,6 +584,15 @@ onMounted(async () => {
|
|||
</a-form-item>
|
||||
</a-form>
|
||||
</a-collapse-panel>
|
||||
|
||||
<a-collapse-panel
|
||||
v-if="sbCtrBasePt.flowInstanceId"
|
||||
key="6"
|
||||
class="w-full"
|
||||
header="审批信息"
|
||||
>
|
||||
<AuditNodeTable :flow-instance-id="sbCtrBasePt.flowInstanceId" />
|
||||
</a-collapse-panel>
|
||||
</a-collapse>
|
||||
</div>
|
||||
</a-spin>
|
||||
|
|
Loading…
Reference in New Issue