选商结果功能完善

This commit is contained in:
z9130 2024-10-22 19:59:41 +08:00
parent daec624df2
commit 40e5205ccb
17 changed files with 446 additions and 137 deletions

View File

@ -547,6 +547,15 @@ export default {
/** 合同系统/履行/履行提示/合同变更 获取合同变更信息 */ /** 合同系统/履行/履行提示/合同变更 获取合同变更信息 */
get_getContractChangeInfo: (data?: QueryOptions) => get_getContractChangeInfo: (data?: QueryOptions) =>
http.get('/app/lvxChange/getContractChangeInfo', data), http.get('/app/lvxChange/getContractChangeInfo', data),
/** 合同系统/履行/履行提示/合同变更 查询流程未配置人员节点 */
get_getFlowNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/lvxChange/getFlowNodeUserConfig', data),
/** 合同系统/履行/履行提示/合同变更 流程启动 */
post_startWorkFlow: (data?: BodyOptions) =>
http.post('/app/lvxChange/startWorkFlow', data),
/** 合同系统/履行/履行提示/合同变更 审核通过 */
post_submit: (data?: BodyOptions) =>
http.post('/app/lvxChange/submit', data),
}, },
contractRelieve: { contractRelieve: {
/** 合同系统/履行/履行提示/合同解除 获取合同解除信息 */ /** 合同系统/履行/履行提示/合同解除 获取合同解除信息 */
@ -579,6 +588,11 @@ export default {
lvxResult: { lvxResult: {
/** 合同系统/履行/履行结果 履行结果保存 */ /** 合同系统/履行/履行结果 履行结果保存 */
post_save: (data?: BodyOptions) => http.post('/app/lvxResult/save', data), post_save: (data?: BodyOptions) => http.post('/app/lvxResult/save', data),
/** 合同系统/履行/履行结果 分页履行结果查询 */
get_page: (data?: QueryOptions) => http.get('/app/lvxResult/page', data),
/** 合同系统/履行/履行结果 已办 */
get_pageDone: (data?: QueryOptions) =>
http.get('/app/lvxResult/pageDone', data),
}, },
contractFiling: { contractFiling: {
/** 合同系统/履行/履行提示/临时归档 保存临时归档信息 */ /** 合同系统/履行/履行提示/临时归档 保存临时归档信息 */
@ -641,7 +655,7 @@ export default {
/** 合同系统/签订 获取合同签订信息 */ /** 合同系统/签订 获取合同签订信息 */
get_getContractSignInfo: (data?: QueryOptions) => get_getContractSignInfo: (data?: QueryOptions) =>
http.get('/app/qdSign/getContractSignInfo', data), http.get('/app/qdSign/getContractSignInfo', data),
/** 合同系统/签订 打印签订审批表 */ /** 合同系统/打印 选商打印 */
get_printApprove: (data?: QueryOptions) => get_printApprove: (data?: QueryOptions) =>
http.get('/app/qdSign/printApprove', data), http.get('/app/qdSign/printApprove', data),
/** 合同系统/签订 打印文本 */ /** 合同系统/签订 打印文本 */
@ -806,6 +820,15 @@ export default {
/** 合同系统/选商/选商结果 待审核 */ /** 合同系统/选商/选商结果 待审核 */
get_toDoPage: (data?: QueryOptions) => get_toDoPage: (data?: QueryOptions) =>
http.get('/app/biddingResult/toDoPage', data), http.get('/app/biddingResult/toDoPage', data),
/** 合同系统/选商/选商结果 查询合同信息 */
get_getContractInfo: (data?: QueryOptions) =>
http.get('/app/biddingResult/getContractInfo', data),
/** 合同系统/选商/选商结果 查询供应商列表 */
get_getProviderInfo: (data?: QueryOptions) =>
http.get('/app/biddingResult/getProviderInfo', data),
/** 合同系统/选商/选商结果 选商专家列表 */
get_queryBiddingExpert: (data?: QueryOptions) =>
http.get('/app/biddingResult/queryBiddingExpert', data),
}, },
home: { home: {
/** 合同系统/首页待办/已办 首页待办 */ /** 合同系统/首页待办/已办 首页待办 */
@ -859,8 +882,8 @@ export default {
/** 设备管理/设备静态库管理/设备调拨 调拨信息保存 */ /** 设备管理/设备静态库管理/设备调拨 调拨信息保存 */
post_save: (data?: BodyOptions) => http.post('/app/equAllot/save', data), post_save: (data?: BodyOptions) => http.post('/app/equAllot/save', data),
/** 设备管理/设备静态库管理/设备调拨 调拨信息删除 */ /** 设备管理/设备静态库管理/设备调拨 调拨信息删除 */
post_delete: (data?: BodyOptions) => post_deletes: (data?: BodyOptions) =>
http.post('/app/equAllot/delete', data), http.post('/app/equAllot/deletes', data),
}, },
bidding: { bidding: {
/** 合同系统/标段信息 标段查询 */ /** 合同系统/标段信息 标段查询 */
@ -870,6 +893,9 @@ export default {
/** 合同系统/标段信息 标段信息删除 */ /** 合同系统/标段信息 标段信息删除 */
post_deletes: (data?: BodyOptions) => post_deletes: (data?: BodyOptions) =>
http.post('/app/bidding/deletes', data), http.post('/app/bidding/deletes', data),
/** 合同系统/选商/选商结果 查询标段列表 */
get_getBuddingPtInfoList: (data?: QueryOptions) =>
http.get('/app/bidding/getBuddingPtInfoList', data),
}, },
equAccident: { equAccident: {
/** 设备管理/设备使用管理/事故处理 事故处理(查询/获取) */ /** 设备管理/设备使用管理/事故处理 事故处理(查询/获取) */
@ -915,8 +941,8 @@ export default {
post_save: (data?: BodyOptions) => post_save: (data?: BodyOptions) =>
http.post('/app/equDayRepair/save', data), http.post('/app/equDayRepair/save', data),
/** 设备管理/设备使用管理/日常维修 删除 */ /** 设备管理/设备使用管理/日常维修 删除 */
get_deletes: (data?: QueryOptions) => post_deletes: (data?: BodyOptions) =>
http.get('/app/equDayRepair/deletes', data), http.post('/app/equDayRepair/deletes', data),
/** 设备管理/查询管理/日常维修查询 查询 */ /** 设备管理/查询管理/日常维修查询 查询 */
get_query: (data?: QueryOptions) => get_query: (data?: QueryOptions) =>
http.get('/app/equDayRepair/query', data), http.get('/app/equDayRepair/query', data),

View File

@ -636,7 +636,10 @@ onMounted(async () => {
保存 保存
</vben-button> </vben-button>
<vben-button <vben-button
v-if="['smEdit'].includes(selectMerchantsBasicInfo.step)" v-if="
!selectMerchantsBasicInfoId ||
['smEdit'].includes(selectMerchantsBasicInfo.step)
"
:disabled="!selectMerchantsBasicInfoId" :disabled="!selectMerchantsBasicInfoId"
variant="primary" variant="primary"
@click="handleSubmit('openModal')" @click="handleSubmit('openModal')"

View File

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, ref } from 'vue'; import { nextTick, onMounted, ref } from 'vue';
import { useVbenModal } from '@vben/common-ui'; import { useVbenModal } from '@vben/common-ui';
@ -12,12 +12,14 @@ import chooseCompanyModal from '../../company/list/choose-company-modal.vue';
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
businseeData: any;
contractId: string; contractId: string;
projectId: string; projectId: string;
}>(), }>(),
{ {
contractId: '', contractId: '',
projectId: '', projectId: '',
businseeData: () => ({}),
}, },
); );
@ -33,12 +35,10 @@ const companyChooseType = ref<'biddingProvider' | 'providerPt'>('providerPt');
/** 必填字段校验 */ /** 必填字段校验 */
const requiredFieldRules: any = { const requiredFieldRules: any = {
// contractName: { required: true, message: "" }, openDate: { required: true, message: '开标时间不得为空' },
// ctrType: { required: true, message: "" }, openPlace: { required: true, message: '开标地点不得为空' },
// ctrTwoType: { required: true, message: "" }, participant: { required: true, message: '参加人不得为空' },
// fundAllocation: { required: true, message: "" }, processDesc: { required: true, message: '过程描述不得为空' },
// fundDitch: { required: true, message: "" },
// organiza: { required: true, message: "" },
}; };
/** 必填字段校验,如果是必填字段则返回对应message */ /** 必填字段校验,如果是必填字段则返回对应message */
@ -51,6 +51,7 @@ function isRequired(field: string): string {
} }
const biddingExpertRef = ref(); const biddingExpertRef = ref();
const bidList = ref<any[]>([]);
const biddingExpertList = ref([]); const biddingExpertList = ref([]);
@ -71,14 +72,17 @@ function onAddProviderPt(type: string, data?: any) {
chooseCompanyModalApi.setData({ chooseCompanyModalApi.setData({
title: '选择单位', title: '选择单位',
limitMultipleNum: 5, limitMultipleNum: 5,
guids: tableFullData.map((item) => item.guid) || [], guids: tableFullData.map((item) => item._guid) || [],
}); });
chooseCompanyModalApi.open(); chooseCompanyModalApi.open();
} }
if (type === 'confirm') { if (type === 'confirm') {
console.log(data); console.log(data);
data.map((item) => (item.guid = undefined)); data.map((item) => {
item._guid = item.guid;
item.guid = undefined;
});
providerPtRef1.value.insert(data); providerPtRef1.value.insert(data);
providerPtRef2.value.insert(data); providerPtRef2.value.insert(data);
} }
@ -87,19 +91,22 @@ function onAddProviderPt(type: string, data?: any) {
function onAddBiddingProvider(type: string, data?: any) { function onAddBiddingProvider(type: string, data?: any) {
companyChooseType.value = 'biddingProvider'; companyChooseType.value = 'biddingProvider';
const tableFullData = biddingProviderRef.value.getTableData()?.fullData || []; const tableFullData = biddingProviderRef.value.getTableData()?.fullData || [];
console.log(tableFullData);
if (type === 'openModal') { if (type === 'openModal') {
chooseCompanyModalApi.setData({ chooseCompanyModalApi.setData({
title: '选择单位', title: '选择单位',
limitMultipleNum: 1, limitMultipleNum: 1,
guids: tableFullData.map((item) => item.guid) || [], guids: [],
}); });
chooseCompanyModalApi.open(); chooseCompanyModalApi.open();
} }
if (type === 'confirm') { if (type === 'confirm') {
console.log(data); console.log(data);
data.map((item) => (item.guid = undefined)); data.map((item) => {
item._guid = item.guid;
item.guid = undefined;
});
biddingProviderRef.value.loadData(data); biddingProviderRef.value.loadData(data);
} }
} }
@ -125,10 +132,10 @@ function onRemoveProviderPtRow(row) {
} }
function handleChooseCompanyConfirm(e) { function handleChooseCompanyConfirm(e) {
if (companyChooseType.value == 'providerPt') { if (companyChooseType.value === 'providerPt') {
onAddProviderPt('confirm', e); onAddProviderPt('confirm', e);
} }
if (companyChooseType.value == 'biddingProvider') { if (companyChooseType.value === 'biddingProvider') {
onAddBiddingProvider('confirm', e); onAddBiddingProvider('confirm', e);
} }
} }
@ -139,12 +146,17 @@ async function verify() {
for (const field of Object.keys(requiredFieldRules)) { for (const field of Object.keys(requiredFieldRules)) {
if (!biddingResult.value[field]) { if (!biddingResult.value[field]) {
message.error(isRequired(field)); message.error(isRequired(field));
return; return false;
} }
} }
return true;
} }
function getFormData() { async function getFormData() {
if (!(await verify())) {
return;
}
const _fullData1 = providerPtRef1.value.getTableData().fullData; const _fullData1 = providerPtRef1.value.getTableData().fullData;
const _fullData2 = providerPtRef2.value.getTableData().fullData; const _fullData2 = providerPtRef2.value.getTableData().fullData;
const _fullData3 = biddingExpertRef.value.getTableData().fullData; const _fullData3 = biddingExpertRef.value.getTableData().fullData;
@ -152,6 +164,64 @@ function getFormData() {
console.log(_fullData1, _fullData2, _fullData3, _fullData4); console.log(_fullData1, _fullData2, _fullData3, _fullData4);
if (_fullData1.length === 0) {
message.error('请添加标段信息');
return;
}
for (const item of _fullData1) {
if (!item.bidPlace) {
message.error('请补全标段信息中的投标地点');
return;
}
if (!item.bidMoney) {
message.error('请补全标段信息中的投标保证金');
return;
}
}
if (_fullData3.length === 0) {
message.error('请添加专家信息');
return;
}
for (const item of _fullData3) {
if (!item.expertName) {
message.error('请补全专家信息中的评委姓名');
return;
}
if (!item.expertSex) {
message.error('请补全专家信息中的性别');
return;
}
// if (!item.expertAge) {
// message.error('');
// return;
// }
// if (!item.expertDepartName) {
// message.error('');
// return;
// }
// if (!item.professionTypeName) {
// message.error('');
// return;
// }
// if (!item.titleTypeName) {
// message.error('');
// return;
// }
// if (!item.positionName) {
// message.error('');
// return;
// }
}
for (const item of _fullData2) {
if (!item.offerMoney) {
message.error('请补全单位报价及评标信息中的报价');
return;
}
}
const data1: any[] = []; const data1: any[] = [];
for (const item1 of _fullData1) { for (const item1 of _fullData1) {
@ -159,6 +229,7 @@ function getFormData() {
if (item1.providerId === item2.providerId) { if (item1.providerId === item2.providerId) {
data1.push({ data1.push({
...item1, ...item1,
phasePtId: '99999',
offerMoney: item2.offerMoney, offerMoney: item2.offerMoney,
bidScore: item2.bidScore, bidScore: item2.bidScore,
bidDesc: item2.bidDesc, bidDesc: item2.bidDesc,
@ -172,6 +243,7 @@ function getFormData() {
tempBiddingResult.projectId = props.projectId; tempBiddingResult.projectId = props.projectId;
const tempBiddingPtInfo = JSON.parse(JSON.stringify(biddingPtInfo.value)); const tempBiddingPtInfo = JSON.parse(JSON.stringify(biddingPtInfo.value));
tempBiddingPtInfo.projectId = props.projectId; tempBiddingPtInfo.projectId = props.projectId;
tempBiddingPtInfo.phasePtId = '99999';
_fullData3.map((item) => (item.projectId = props.projectId)); _fullData3.map((item) => (item.projectId = props.projectId));
const form = { const form = {
@ -186,6 +258,53 @@ function getFormData() {
onMounted(async () => { onMounted(async () => {
try { try {
// ;
let providerData = await Apis.contractRecommendProvider.get_list({
params: {
contractId: props.contractId,
},
});
providerData = providerData.rows || [];
//
nextTick(() => {
providerPtRef1.value.loadData(providerData);
providerPtRef2.value.loadData(providerData);
});
// if (props.businseeData.frameProtocol === '1') {
// for (const item of bidList.value) {
// const rows = [];
// for (const provider of providerData) {
// if (item.phaseSeq == provider.phaseSeq) {
// rows.push(provider);
// }
// }
// item.providerList = rows;
// // nextTick(() => {
// // providerGridRefs.value.get(`${item.phaseSeq}`).insert(rows);
// // });
// }
// } else {
// nextTick(() => {
// providerPtRef1.value.loadData(providerData);
// providerPtRef2.value.loadData(providerData);
// // providerGridRefs2.value.insert(providerData);
// });
// }
//
const expertData = await Apis.biddingResult.get_queryBiddingExpert({
params: {
projectId: props.projectId,
contractId: props.contractId,
},
});
console.log('专家信息', expertData);
nextTick(() => {
biddingExpertRef.value.loadData(expertData.rows);
});
// //
const data = await Apis.biddingResult.get_page({ const data = await Apis.biddingResult.get_page({
params: { params: {
@ -242,7 +361,11 @@ defineExpose({
</vxe-column> </vxe-column>
<vxe-column field="bidMoney" title="投标保证金"> <vxe-column field="bidMoney" title="投标保证金">
<template #default="{ row }"> <template #default="{ row }">
<a-input-number v-model:value="row.bidMoney" addon-after="" /> <a-input-number
v-model:value="row.bidMoney"
:min="0"
addon-after="元"
/>
</template> </template>
</vxe-column> </vxe-column>
<vxe-column field="operate" title="" width="100"> <vxe-column field="operate" title="" width="100">
@ -330,24 +453,40 @@ defineExpose({
</vxe-column> </vxe-column>
</vxe-table> </vxe-table>
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item :span="1" label="开标时间"> <a-descriptions-item :span="1">
<template #label>
<span v-if="isRequired('openDate')" class="text-red-500">*</span>
开标时间
</template>
<a-date-picker <a-date-picker
v-model:value="biddingResult.openDate" v-model:value="biddingResult.openDate"
format="YYYY-MM-DD" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/> />
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item :span="2" label="开标地点"> <a-descriptions-item :span="2">
<template #label>
<span v-if="isRequired('openPlace')" class="text-red-500">*</span>
开标地点
</template>
<a-input v-model:value="biddingResult.openPlace" /> <a-input v-model:value="biddingResult.openPlace" />
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item :span="3" label="参加人"> <a-descriptions-item :span="3">
<template #label>
<span v-if="isRequired('participant')" class="text-red-500">*</span>
参加人
</template>
<a-textarea <a-textarea
v-model:value="biddingResult.participant" v-model:value="biddingResult.participant"
:auto-size="{ minRows: 2, maxRows: 5 }" :auto-size="{ minRows: 2, maxRows: 5 }"
/> />
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item :span="3" label="过程描述"> <a-descriptions-item :span="3">
<template #label>
<span v-if="isRequired('processDesc')" class="text-red-500">*</span>
过程描述
</template>
<a-textarea <a-textarea
v-model:value="biddingResult.processDesc" v-model:value="biddingResult.processDesc"
:auto-size="{ minRows: 2, maxRows: 5 }" :auto-size="{ minRows: 2, maxRows: 5 }"
@ -384,6 +523,7 @@ defineExpose({
<template #default="{ row }"> <template #default="{ row }">
<a-input-number <a-input-number
v-model:value="row.offerMoney" v-model:value="row.offerMoney"
:min="0"
addon-after="元" addon-after="元"
/> />
</template> </template>

View File

@ -1,13 +1,14 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, onMounted, ref } from 'vue'; import { computed, onMounted, reactive, ref } from 'vue';
import { useRoute, useRouter } from 'vue-router'; import { useRoute, useRouter } from 'vue-router';
import { Page, useVbenModal } from '@vben/common-ui'; import { Page, useVbenModal } from '@vben/common-ui';
import { message, Modal } from 'ant-design-vue'; import { message, Modal, type UploadChangeParam } from 'ant-design-vue';
import { logger } from 'common-utils'; import { logger } from 'common-utils';
import Apis from '#/api'; import Apis from '#/api';
import { FileUploader } from '#/utils/file';
import AuditNodeTable from '#/views/contract/components/audit-node-table/audit-node-table.vue'; import AuditNodeTable from '#/views/contract/components/audit-node-table/audit-node-table.vue';
import FileCard from '#/views/contract/components/file-card/file-card.vue'; import FileCard from '#/views/contract/components/file-card/file-card.vue';
import ApprovalCard from '#/views/contract/iframe-info/components/info-approval/approval-card.vue'; import ApprovalCard from '#/views/contract/iframe-info/components/info-approval/approval-card.vue';
@ -20,11 +21,22 @@ const [ChooseUserModal, chooseUserModalApi] = useVbenModal({
connectedComponent: chooseUserModal, connectedComponent: chooseUserModal,
}); });
const fileUploader = new FileUploader({});
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const pageRef = ref(); const pageRef = ref();
const fillResultCardRef = ref(); const fillResultCardRef = ref();
const formRef = ref();
const form = reactive({
fileList: [],
});
const readOnly = computed(() => {
return false;
});
const id = ref(route.params.id); const id = ref(route.params.id);
const flowInstanceId = ref(route.query.flowInstanceId as string); const flowInstanceId = ref(route.query.flowInstanceId as string);
@ -39,8 +51,8 @@ const bidList = ref<any[]>([]);
const submitGuid = ref(); const submitGuid = ref();
const collapses = ['1', '2', '3', '4', '5']; // const collapses = ['1', '2', '3', '4', '5'];
// const collapses = ['5']; const collapses = ['4', '5', '6'];
const collapseActiveKey = ref(collapses); const collapseActiveKey = ref(collapses);
function areArraysEqualUnordered(arr1, arr2) { function areArraysEqualUnordered(arr1, arr2) {
if (arr1.length !== arr2.length) return false; if (arr1.length !== arr2.length) return false;
@ -55,6 +67,10 @@ function handleFold() {
collapseActiveKey.value = isFold.value ? collapses : []; collapseActiveKey.value = isFold.value ? collapses : [];
} }
const handleChange = (info: UploadChangeParam) => {
form.fileList = info.fileList.length > 0 ? info.fileList : [];
};
/** /**
* 页面返回并关闭tab * 页面返回并关闭tab
*/ */
@ -81,16 +97,33 @@ function handleBack() {
async function handleSave() { async function handleSave() {
try { try {
await fillResultCardRef.value.verify(); const form = await fillResultCardRef.value.getFormData();
} catch {
message.error('请完成必填项的填写');
return;
}
try {
const form = fillResultCardRef.value.getFormData();
console.log(form); console.log(form);
if (!form) {
return;
}
{
const tempFileList = form.fileList || [];
let tempFiles: any = [];
if (tempFileList.length > 0) {
tempFiles = await fileUploader.upload(tempFileList, { source: 'ht' });
}
if (tempFiles) {
form.biddingResult = (
tempFiles.map((item) => item.fileUuid) || []
).join(',');
}
}
const data = await Apis.biddingResult.post_save({ const data = await Apis.biddingResult.post_save({
params: {
contractId: businseeData.value.contractId,
projectId: businseeData.value.projectId,
// isKj: currData.value.frameProtocol === '1' ? '' : '',
isKj: '是',
},
data: form, data: form,
}); });
@ -103,7 +136,7 @@ async function handleSave() {
handleSubmit('openModal'); handleSubmit('openModal');
}, },
onCancel: () => { onCancel: () => {
back(); // back();
}, },
}); });
} catch (error) { } catch (error) {
@ -111,23 +144,34 @@ async function handleSave() {
} }
} }
const nodeInfo = ref<any>({});
const chooseUserIds = ref([]);
async function handleSubmit(type: 'openModal' | 'submit') { async function handleSubmit(type: 'openModal' | 'submit') {
if (type === 'openModal') { if (type === 'openModal') {
//
let tempNodeInfo = await Apis.biddingResult.get_getFlowNodeUserConfig({
params: { guid: submitGuid.value },
});
nodeInfo.value = tempNodeInfo = tempNodeInfo.rows[0];
chooseUserModalApi.setData({ chooseUserModalApi.setData({
title: '选择审批人', title: `选择${tempNodeInfo.name}(${tempNodeInfo.selectMode})`,
limitMultipleNum: tempNodeInfo.selectMode === '多选' ? 10 : 1,
}); });
chooseUserModalApi.open(); chooseUserModalApi.open();
} }
if (type === 'submit') { if (type === 'submit') {
isLoading.value = true; isLoading.value = true;
chooseUserIds.value = selectUsers.value.map((item) => item.ACCOUNT_ID);
try { try {
// await Apis.selectMerchantsBasicInfo.post_flowStart({ await Apis.selectMerchantsBasicInfo.post_flowStart({
// data: { data: {
// guid: selectMerchantsBasicInfoId.value, guid: selectMerchantsBasicInfoId.value,
// assigneeList: selectUsers.value.map((item) => item.ACCOUNT_ID), assigneeList: selectUsers.value.map((item) => item.ACCOUNT_ID),
// }, },
// }); });
message.success('提交成功'); message.success('提交成功');
back(); back();
} catch (error) { } catch (error) {
@ -151,6 +195,8 @@ onMounted(async () => {
const business: any = await Apis.selectMerchantsBasicInfo.get_getOne({ const business: any = await Apis.selectMerchantsBasicInfo.get_getOne({
params: { contractId: contract.contractId }, params: { contractId: contract.contractId },
}); });
business.frameProtocol = contract.frameProtocol;
businseeData.value = business; businseeData.value = business;
} }
} catch (error) { } catch (error) {
@ -192,6 +238,23 @@ onMounted(async () => {
> >
提交 提交
</vben-button> </vben-button>
<vben-button
v-if="['paApproval'].includes(currData.step) && taskId"
:disabled="!auditId"
variant="primary"
@click="handleAudit('openAccessModal')"
>
通过
</vben-button>
<vben-button
v-if="['paApproval'].includes(currData.step) && taskId"
:disabled="!auditId"
variant="destructive"
@click="handleAudit('openRejectModal')"
>
退回
</vben-button>
</template> </template>
<vben-button variant="secondary" @click="handleBack()"> <vben-button variant="secondary" @click="handleBack()">
返回 返回
@ -224,10 +287,41 @@ onMounted(async () => {
<FillResultCard <FillResultCard
v-if="businseeData.projectId" v-if="businseeData.projectId"
ref="fillResultCardRef" ref="fillResultCardRef"
:businsee-data="businseeData"
:contract-id="businseeData.contractId" :contract-id="businseeData.contractId"
:project-id="businseeData.projectId" :project-id="businseeData.projectId"
/> />
</a-collapse-panel> </a-collapse-panel>
<a-collapse-panel key="6" class="w-full" header="招标相关资料上传">
<a-form
ref="formRef"
:label-col="{ style: { width: '120px' } }"
:model="form"
>
<a-form-item label="合同附件" name="fileList">
<a-upload
v-model:file-list="form.fileList"
:before-upload="() => false"
:max-count="3"
accept=".pdf,.ppt,.pptx"
name="file"
@change="handleChange"
>
<a-button v-if="!readOnly">
<MdiUpload />
点击上传
</a-button>
<div
v-if="readOnly && form.fileList.length === 0"
class="text-gray-700"
>
无附件
</div>
</a-upload>
</a-form-item>
</a-form>
</a-collapse-panel>
</a-collapse> </a-collapse>
</Page> </Page>
</template> </template>

View File

@ -140,6 +140,9 @@ function handleCloseTag(row) {
checkRecords.value = checkRecords.value.filter( checkRecords.value = checkRecords.value.filter(
(item) => item.guid != row.guid, (item) => item.guid != row.guid,
); );
checkRecordIds.value = checkRecordIds.value.filter(
(item) => item != row.guid,
);
xGridRef.value?.setCheckboxRow(row, false); xGridRef.value?.setCheckboxRow(row, false);
} }

View File

@ -1,14 +1,14 @@
<script setup lang="ts"> <script setup lang="ts">
import type { VxeGridPropTypes } from 'vxe-table';
import { nextTick, onMounted, reactive, ref, watch } from 'vue'; import { nextTick, onMounted, reactive, ref, watch } from 'vue';
import { message } from 'ant-design-vue';
import { logger } from 'common-utils'; import { logger } from 'common-utils';
import Apis from '#/api'; import Apis from '#/api';
import { useVxeTable } from '#/hooks/vxeTable';
import { getAuditInfoColumns } from '#/views/contract/schema';
import { DICT_TYPE, getDictObj, getDictOptions } from '#/utils/dict';
import type { VxeGridPropTypes } from 'vxe-table';
import { useRender } from '#/hooks/useRender'; import { useRender } from '#/hooks/useRender';
import { useVxeTable } from '#/hooks/vxeTable';
import { DICT_TYPE, getDictObj } from '#/utils/dict';
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
@ -62,7 +62,7 @@ function getColumns(): any {
/** Hooks - 表格 */ /** Hooks - 表格 */
const gridOptions = reactive( const gridOptions = reactive(
gridProps({ gridProps({
height: '200px', minHeight: '120px',
columns: getColumns(), columns: getColumns(),
data: [], data: [],
toolbarConfig: { toolbarConfig: {

View File

@ -1,5 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { nextTick, onMounted, reactive, ref } from 'vue'; import { nextTick, onMounted, reactive, ref } from 'vue';
import { logger } from 'common-utils'; import { logger } from 'common-utils';
import { useVxeTable } from '#/hooks/vxeTable'; import { useVxeTable } from '#/hooks/vxeTable';
@ -25,7 +26,7 @@ const isLoading = ref(false);
/** Hooks - 表格 */ /** Hooks - 表格 */
const gridOptions = reactive( const gridOptions = reactive(
gridProps({ gridProps({
height: '200px', minHeight: '120px',
columns: getColumnsByFiles({ readOnly: true }), columns: getColumnsByFiles({ readOnly: true }),
data: [], data: [],
toolbarConfig: { toolbarConfig: {

View File

@ -5,7 +5,7 @@ import dayjs, { type Dayjs } from 'dayjs';
import { DICT_TYPE, getDictOptions } from '#/utils/dict'; import { DICT_TYPE, getDictOptions } from '#/utils/dict';
export function getFormSchema(params: any = {}) { export function getFormSchema(params: any = {}) {
const { chooseCompanyModalApi, formRef, dictMap } = params || {}; const { chooseCompanyModalApi, formRef, dictMap, sqConsignPt } = params || {};
const disabledDate = (current: Dayjs) => { const disabledDate = (current: Dayjs) => {
const form = formRef.value.form; const form = formRef.value.form;
@ -83,8 +83,12 @@ export function getFormSchema(params: any = {}) {
name: 'fs-dict-select', name: 'fs-dict-select',
vModel: 'value', vModel: 'value',
allowClear: false, allowClear: false,
showSearch: true,
filterOption: (input, option) => {
return option.label.includes(input.toLowerCase());
},
dict: dict({ dict: dict({
data: [], data: sqConsignPt,
}), }),
}, },
}, },

View File

@ -17,6 +17,8 @@ import Apis from '#/api';
import { useVxeTable } from '#/hooks/vxeTable'; import { useVxeTable } from '#/hooks/vxeTable';
import { DICT_TYPE, getDictDatasAsync } from '#/utils/dict'; import { DICT_TYPE, getDictDatasAsync } from '#/utils/dict';
import { FileUploader } from '#/utils/file'; import { FileUploader } from '#/utils/file';
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'; import chooseUserModal from '#/views/system/user/choose-user-modal.vue';
import chooseCompanyModal from '../../company/list/choose-company-modal.vue'; import chooseCompanyModal from '../../company/list/choose-company-modal.vue';
@ -265,6 +267,8 @@ const businessData = ref<any>({});
const currData = ref({}); const currData = ref({});
const sqConsignPt = ref<any>({});
onMounted(async () => { onMounted(async () => {
isLoading.value = true; isLoading.value = true;
try { try {
@ -275,6 +279,13 @@ onMounted(async () => {
contractTypeData.value = contractReferTypeData.rows || []; contractTypeData.value = contractReferTypeData.rows || [];
// //
const userData = await Apis.sqConsignPt.get_SigningaAuthorizationSerch({
params: {},
});
sqConsignPt.value = userData.rows.map((item) => ({
label: item.userPerson,
value: item.userId,
}));
const dictMap = await getDictDatasAsync( const dictMap = await getDictDatasAsync(
[ [
@ -289,6 +300,7 @@ onMounted(async () => {
chooseCompanyModalApi, chooseCompanyModalApi,
formRef, formRef,
dictMap, dictMap,
sqConsignPt: sqConsignPt.value,
}); });
formBindingByBaseInfo.value.columns = getFormSchemaByBaseInfo({ formBindingByBaseInfo.value.columns = getFormSchemaByBaseInfo({
contractTypeData: contractTypeData.value, contractTypeData: contractTypeData.value,
@ -382,17 +394,11 @@ onMounted(async () => {
<div class="mx-auto overflow-auto py-2"> <div class="mx-auto overflow-auto py-2">
<a-collapse v-model:active-key="collapseActiveKey" :bordered="false"> <a-collapse v-model:active-key="collapseActiveKey" :bordered="false">
<a-collapse-panel key="1" class="w-full" header="合同基本信息一"> <a-collapse-panel key="1" class="w-full" header="合同基本信息一">
<fs-form <ApprovalCard :info="contractData" />
ref="formRefByBaseInfo"
class="w-full"
v-bind="formBindingByBaseInfo"
/>
</a-collapse-panel> </a-collapse-panel>
<a-collapse-panel key="2" class="w-full" header="签约依据"> <a-collapse-panel key="2" class="w-full" header="签约依据">
<VxeGrid ref="xGridRef" v-bind="gridOptions" class=""> <BasisTable :basis-id="contractData.basisId" />
<template #toolbar_buttons></template>
</VxeGrid>
</a-collapse-panel> </a-collapse-panel>
<a-collapse-panel key="3" class="w-full" header="合同基本信息二"> <a-collapse-panel key="3" class="w-full" header="合同基本信息二">

View File

@ -41,11 +41,12 @@ withDefaults(
{{ getDictObj(DICT_TYPE.contract_funding_source, info.fundDitch)?.label }} {{ getDictObj(DICT_TYPE.contract_funding_source, info.fundDitch)?.label }}
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item label="预算金额"> <a-descriptions-item label="预算金额">
{{ `${info.budgetSum || ''} ${info.priceTypeName || ''}` }} <!-- {{ `${info.budgetSum || ''} ${info.priceTypeName || ''}` }} -->
{{ `${info.budgetSum || ''} ${'元'}` }}
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item :span="2" label="组织形式"> <a-descriptions-item :span="2" label="组织形式">
{{ {{
getDictObj(DICT_TYPE.contract_organization_form, info.organiza?.label) getDictObj(DICT_TYPE.contract_organization_form, info.organiza)?.label
}} }}
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item :span="3" label="相关附件"> <a-descriptions-item :span="3" label="相关附件">

View File

@ -1,21 +1,20 @@
<script setup lang="ts"> <script setup lang="ts">
import { nextTick, onMounted, reactive, ref } from 'vue'; import { onMounted, ref } from 'vue';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { logger } from 'common-utils'; import { logger } from 'common-utils';
import Apis from '#/api'; import Apis from '#/api';
import { useVxeTable } from '#/hooks/vxeTable'; import { useVxeTable } from '#/hooks/vxeTable';
import { FileUploader } from '#/utils/file';
import { getAuditInfoColumns } from '#/views/contract/schema';
import ApprovalCard from '#/views/contract/iframe-info/components/info-approval/approval-card.vue';
import AuditNodeTable from '#/views/contract/components/audit-node-table/audit-node-table.vue'; 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 BasisTable from '#/views/contract/components/basis-table/basis-table.vue';
import ApprovalCard from '#/views/contract/iframe-info/components/info-approval/approval-card.vue';
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
contractId?: string;
// flowInstanceId // flowInstanceId
flowInstanceId: string; flowInstanceId: string;
contractId?: string;
id?: string; id?: string;
}>(), }>(),
{ {
@ -66,7 +65,7 @@ onMounted(async () => {
<div class="flex h-full w-full flex-col"> <div class="flex h-full w-full flex-col">
<a-collapse v-model:active-key="collapseActiveKey"> <a-collapse v-model:active-key="collapseActiveKey">
<a-collapse-panel key="1" class="w-full" header="基本信息"> <a-collapse-panel key="1" class="w-full" header="基本信息">
<ApprovalCard :info="currData"></ApprovalCard> <ApprovalCard :info="currData" />
</a-collapse-panel> </a-collapse-panel>
<a-collapse-panel key="2" class="w-full" header="签约依据信息"> <a-collapse-panel key="2" class="w-full" header="签约依据信息">

View File

@ -20,39 +20,46 @@ onMounted(async () => {
// console.log(info.value); // console.log(info.value);
const info = props.info; const info = props.info;
// //
//
if (info.frameProtocol === '1') { //
const bidData = await Apis.bidding.get_list({ if (info.contractId) {
//
if (info.frameProtocol === '1') {
const bidData = await Apis.bidding.get_list({
params: {
projectId: info.projectId,
contractId: info.contractId,
},
});
bidData.rows.forEach((bid) => {
bid.providerList = [];
});
bidList.value = bidData.rows;
}
//
const providerData = await Apis.contractRecommendProvider.get_list({
params: { params: {
projectId: info.projectId,
contractId: info.contractId, contractId: info.contractId,
}, },
}); });
bidData.rows.forEach((bid) => { if (info.frameProtocol === '0') {
bid.providerList = []; providerPtList.value = providerData.rows.filter(
}); (item) => item.phaseSeq === 99_999,
bidList.value = bidData.rows; );
} }
if (info.frameProtocol === '1') {
// bidList.value.forEach((bid) => {
const providerData = await Apis.contractRecommendProvider.get_list({ bid.providerList = providerData.rows;
params: { });
contractId: info.contractId, }
},
});
if (info.frameProtocol === '0') {
providerPtList.value = providerData.rows;
}
if (info.frameProtocol === '1') {
bidList.value.forEach((bid) => {
bid.providerList = providerData.rows;
});
} }
}); });
</script> </script>
<template> <template>
<a-descriptions <a-descriptions
v-if="info.contractId"
:label-style="{ width: '150px' }" :label-style="{ width: '150px' }"
bordered bordered
size="small" size="small"
@ -88,7 +95,7 @@ onMounted(async () => {
{{ `${info.budgetSum || ''} ${info.priceTypeName || ''}` }} {{ `${info.budgetSum || ''} ${info.priceTypeName || ''}` }}
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item <a-descriptions-item
v-show="info.frameProtocol === '0'" v-if="info.frameProtocol === '0'"
:span="3" :span="3"
label="推荐供应商" label="推荐供应商"
> >
@ -101,7 +108,7 @@ onMounted(async () => {
</vxe-column> </vxe-column>
<vxe-column field="qualification" title="资质情况"> <vxe-column field="qualification" title="资质情况">
<template #default="{ row }"> <template #default="{ row }">
{{ row.qualification }} {{ row.aptitudeName }}
</template> </template>
</vxe-column> </vxe-column>
<vxe-column field="contactPerson" title="联系人"> <vxe-column field="contactPerson" title="联系人">
@ -124,26 +131,19 @@ onMounted(async () => {
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item <a-descriptions-item
v-show="info.frameProtocol === '1'" v-if="info.frameProtocol === '1'"
:span="3" :span="3"
label="标段信息" label="标段信息"
> >
<template v-for="bid in bidList" :key="bid.id"> <template v-for="bid in bidList" :key="bid.id">
<vxe-table :data="[bid]" size="mini"> <vxe-table :data="[bid]" size="mini">
<vxe-column field="bidName" title="标段名称"> <vxe-column field="phaseName" title="标段名称">
<template #default="{ row }"> <template #default="{ row }">
{{ row.bidName }} {{ row.phaseName }}
</template> </template>
</vxe-column> </vxe-column>
<vxe-column field="phaseMoney" title="预算金额"> <vxe-column field="phaseMoney" title="预算金额">
<template #default="{ row }"> <template #default="{ row }"> {{ row.phaseMoney }} </template>
{{ row.phaseMoney }}
</template>
</vxe-column>
<vxe-column field="phaseDesc" title="标段范围说明">
<template #default="{ row }">
{{ row.phaseDesc }}
</template>
</vxe-column> </vxe-column>
<vxe-column field="phaseDesc" title="标段范围说明"> <vxe-column field="phaseDesc" title="标段范围说明">
<template #default="{ row }"> <template #default="{ row }">
@ -160,7 +160,7 @@ onMounted(async () => {
</vxe-column> </vxe-column>
<vxe-column field="qualification" title="资质情况"> <vxe-column field="qualification" title="资质情况">
<template #default="{ row }"> <template #default="{ row }">
{{ row.qualification }} {{ row.aptitudeName }}
</template> </template>
</vxe-column> </vxe-column>
<vxe-column field="contactPerson" title="联系人"> <vxe-column field="contactPerson" title="联系人">
@ -202,4 +202,5 @@ onMounted(async () => {
{{ info.stockPlanMx || '无' }} {{ info.stockPlanMx || '无' }}
</a-descriptions-item> </a-descriptions-item>
</a-descriptions> </a-descriptions>
<a-empty v-else :image="simpleImage" />
</template> </template>

View File

@ -1,29 +1,22 @@
<script setup lang="ts"> <script setup lang="ts">
import { nextTick, onMounted, reactive, ref } from 'vue'; import { onMounted, ref } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { Modal } from 'ant-design-vue'; import { Empty, Modal } from 'ant-design-vue';
import { logger } from 'common-utils'; import { logger } from 'common-utils';
import Apis from '#/api'; import Apis from '#/api';
import { useVxeTable } from '#/hooks/vxeTable'; import { useVxeTable } from '#/hooks/vxeTable';
import { FileUploader } from '#/utils/file'; import { FileUploader } from '#/utils/file';
import {
getAuditInfoColumns,
getColumnsByFiles,
} from '#/views/contract/schema';
import { getFormSchema } from '../info-approval/curd';
import { getFormSchemaByBusiness } from './curd';
import ApprovalCard from '#/views/contract/iframe-info/components/info-approval/approval-card.vue';
import AuditNodeTable from '#/views/contract/components/audit-node-table/audit-node-table.vue'; import AuditNodeTable from '#/views/contract/components/audit-node-table/audit-node-table.vue';
import FileCard from '#/views/contract/components/file-card/file-card.vue'; import FileCard from '#/views/contract/components/file-card/file-card.vue';
import ApprovalCard from '#/views/contract/iframe-info/components/info-approval/approval-card.vue';
import BusinessCard from '#/views/contract/iframe-info/components/info-business/business-card.vue'; import BusinessCard from '#/views/contract/iframe-info/components/info-business/business-card.vue';
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
flowInstanceId: string;
contractId?: string; contractId?: string;
flowInstanceId: string;
id?: string; id?: string;
}>(), }>(),
{ {
@ -33,6 +26,8 @@ const props = withDefaults(
}, },
); );
const simpleImage = Empty.PRESENTED_IMAGE_SIMPLE;
const { xGridRef, gridProps } = useVxeTable({ ref: 'xGridRef' }); const { xGridRef, gridProps } = useVxeTable({ ref: 'xGridRef' });
const { xGridRef: xGridRefByAuditInfo } = useVxeTable({ const { xGridRef: xGridRefByAuditInfo } = useVxeTable({
ref: 'xGridRefByAuditInfo', ref: 'xGridRefByAuditInfo',
@ -70,6 +65,7 @@ onMounted(async () => {
const business: any = await Apis.selectMerchantsBasicInfo.get_getOne({ const business: any = await Apis.selectMerchantsBasicInfo.get_getOne({
params: { contractId: contract.contractId }, params: { contractId: contract.contractId },
}); });
business.frameProtocol = contract.frameProtocol;
businseeData.value = business; businseeData.value = business;
// xGridRef.value!.reloadColumn(getColumns()); // xGridRef.value!.reloadColumn(getColumns());
} }
@ -88,7 +84,10 @@ onMounted(async () => {
<template> <template>
<div class="flex h-full w-full flex-col"> <div class="flex h-full w-full flex-col">
<a-collapse v-model:active-key="collapseActiveKey"> <a-collapse
v-if="!isLoading && businseeData.contractId"
v-model:active-key="collapseActiveKey"
>
<a-collapse-panel key="1" class="w-full" header="合同基本信息"> <a-collapse-panel key="1" class="w-full" header="合同基本信息">
<ApprovalCard :info="currData" /> <ApprovalCard :info="currData" />
</a-collapse-panel> </a-collapse-panel>
@ -98,13 +97,18 @@ onMounted(async () => {
</a-collapse-panel> </a-collapse-panel>
<a-collapse-panel key="3" class="w-full" header="招标文件"> <a-collapse-panel key="3" class="w-full" header="招标文件">
<FileCard :fileUuids="''"></FileCard> <FileCard file-uuids="" />
</a-collapse-panel> </a-collapse-panel>
<a-collapse-panel key="4" class="w-full" header="审批信息"> <a-collapse-panel key="4" class="w-full" header="审批信息">
<AuditNodeTable :flow-instance-id="props.flowInstanceId" /> <AuditNodeTable :flow-instance-id="props.flowInstanceId" />
</a-collapse-panel> </a-collapse-panel>
</a-collapse> </a-collapse>
<a-empty v-if="!isLoading && !businseeData.contractId" :image="simpleImage">
<template #description>
<h3 class="text-center text-red-500">无合同选商信息</h3>
</template>
</a-empty>
</div> </div>
</template> </template>

View File

@ -72,9 +72,9 @@ const tabList = [
]; ];
onMounted(() => { onMounted(() => {
// if (type) { if (type) {
// tabKey.value = type; tabKey.value = type;
// } }
if (!type || !id) { if (!type || !id) {
console.warn('缺少参数'); console.warn('缺少参数');
@ -90,7 +90,7 @@ onMounted(() => {
:is="item.component" :is="item.component"
:id="id" :id="id"
:contract-id="contractId" :contract-id="contractId"
:flowInstanceId="flowInstanceId" :flow-instance-id="flowInstanceId"
/> />
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>

View File

@ -44,7 +44,7 @@ export default defineConfig(async () => {
'/api/czg/flowCenter': { '/api/czg/flowCenter': {
changeOrigin: true, changeOrigin: true,
rewrite: (path) => rewrite: (path) =>
path.replace(/^\/api\/flowCenter/, '/czg/flowCenter'), path.replace(/^\/api\/czg\/flowCenter/, '/flowCenter'),
// target: `http://10.71.220.24:8083/rl`, // target: `http://10.71.220.24:8083/rl`,
target: `http://192.168.147.164:19007`, target: `http://192.168.147.164:19007`,
ws: true, ws: true,
@ -52,7 +52,7 @@ export default defineConfig(async () => {
'/api/zp/flowCenter': { '/api/zp/flowCenter': {
changeOrigin: true, changeOrigin: true,
rewrite: (path) => rewrite: (path) =>
path.replace(/^\/api\/flowCenter/, '/zp/flowCenter'), path.replace(/^\/api\/zp\/flowCenter/, '/flowCenter'),
// target: `http://10.71.220.24:8083/rl`, // target: `http://10.71.220.24:8083/rl`,
target: `http://192.168.147.164:19007`, target: `http://192.168.147.164:19007`,
ws: true, ws: true,
@ -60,7 +60,7 @@ export default defineConfig(async () => {
'/api/zzz/flowCenter': { '/api/zzz/flowCenter': {
changeOrigin: true, changeOrigin: true,
rewrite: (path) => rewrite: (path) =>
path.replace(/^\/api\/flowCenter/, '/zzz/flowCenter'), path.replace(/^\/api\/zzz\/flowCenter/, '/flowCenter'),
// target: `http://10.71.220.24:8083/rl`, // target: `http://10.71.220.24:8083/rl`,
target: `http://192.168.147.164:19007`, target: `http://192.168.147.164:19007`,
ws: true, ws: true,

View File

@ -31,7 +31,7 @@ function mergeDeep(target: any, source: any) {
*/ */
function defineOverridesPreferences(preferences: DeepPartial<Preferences>) { function defineOverridesPreferences(preferences: DeepPartial<Preferences>) {
let defaultPreferences: DeepPartial<Preferences> = { const defaultPreferences: DeepPartial<Preferences> = {
app: { app: {
accessMode: 'frontend', accessMode: 'frontend',
colorGrayMode: false, colorGrayMode: false,
@ -41,7 +41,7 @@ function defineOverridesPreferences(preferences: DeepPartial<Preferences>) {
defaultAvatar: '', defaultAvatar: '',
dynamicTitle: true, dynamicTitle: true,
// 是否开启检查更新 // 是否开启检查更新
enableCheckUpdates: true, enableCheckUpdates: false,
// 检查更新的时间间隔,单位为分钟 // 检查更新的时间间隔,单位为分钟
checkUpdatesInterval: 1, checkUpdatesInterval: 1,
// 开启布局设置按钮 // 开启布局设置按钮

View File

@ -1,5 +1,6 @@
import type { BodyOptions, QueryOptions } from './global.d';
import { http } from './request/index'; import { http } from './request/index';
import type { QueryOptions, BodyOptions } from './global.d';
export default { export default {
meeting: { meeting: {
@ -549,6 +550,15 @@ export default {
/** 合同系统/履行/履行提示/合同变更 获取合同变更信息 */ /** 合同系统/履行/履行提示/合同变更 获取合同变更信息 */
get_getContractChangeInfo: (data?: QueryOptions) => get_getContractChangeInfo: (data?: QueryOptions) =>
http.get('/app/lvxChange/getContractChangeInfo', data), http.get('/app/lvxChange/getContractChangeInfo', data),
/** 合同系统/履行/履行提示/合同变更 查询流程未配置人员节点 */
get_getFlowNodeUserConfig: (data?: QueryOptions) =>
http.get('/app/lvxChange/getFlowNodeUserConfig', data),
/** 合同系统/履行/履行提示/合同变更 流程启动 */
post_startWorkFlow: (data?: BodyOptions) =>
http.post('/app/lvxChange/startWorkFlow', data),
/** 合同系统/履行/履行提示/合同变更 审核通过 */
post_submit: (data?: BodyOptions) =>
http.post('/app/lvxChange/submit', data),
}, },
contractRelieve: { contractRelieve: {
/** 合同系统/履行/履行提示/合同解除 获取合同解除信息 */ /** 合同系统/履行/履行提示/合同解除 获取合同解除信息 */
@ -581,6 +591,11 @@ export default {
lvxResult: { lvxResult: {
/** 合同系统/履行/履行结果 履行结果保存 */ /** 合同系统/履行/履行结果 履行结果保存 */
post_save: (data?: BodyOptions) => http.post('/app/lvxResult/save', data), post_save: (data?: BodyOptions) => http.post('/app/lvxResult/save', data),
/** 合同系统/履行/履行结果 分页履行结果查询 */
get_page: (data?: QueryOptions) => http.get('/app/lvxResult/page', data),
/** 合同系统/履行/履行结果 已办 */
get_pageDone: (data?: QueryOptions) =>
http.get('/app/lvxResult/pageDone', data),
}, },
contractFiling: { contractFiling: {
/** 合同系统/履行/履行提示/临时归档 保存临时归档信息 */ /** 合同系统/履行/履行提示/临时归档 保存临时归档信息 */
@ -643,7 +658,7 @@ export default {
/** 合同系统/签订 获取合同签订信息 */ /** 合同系统/签订 获取合同签订信息 */
get_getContractSignInfo: (data?: QueryOptions) => get_getContractSignInfo: (data?: QueryOptions) =>
http.get('/app/qdSign/getContractSignInfo', data), http.get('/app/qdSign/getContractSignInfo', data),
/** 合同系统/签订 打印签订审批表 */ /** 合同系统/打印 选商打印 */
get_printApprove: (data?: QueryOptions) => get_printApprove: (data?: QueryOptions) =>
http.get('/app/qdSign/printApprove', data), http.get('/app/qdSign/printApprove', data),
/** 合同系统/签订 打印文本 */ /** 合同系统/签订 打印文本 */
@ -812,6 +827,15 @@ export default {
/** 合同系统/选商/选商结果 待审核 */ /** 合同系统/选商/选商结果 待审核 */
get_toDoPage: (data?: QueryOptions) => get_toDoPage: (data?: QueryOptions) =>
http.get('/app/biddingResult/toDoPage', data), http.get('/app/biddingResult/toDoPage', data),
/** 合同系统/选商/选商结果 查询合同信息 */
get_getContractInfo: (data?: QueryOptions) =>
http.get('/app/biddingResult/getContractInfo', data),
/** 合同系统/选商/选商结果 查询供应商列表 */
get_getProviderInfo: (data?: QueryOptions) =>
http.get('/app/biddingResult/getProviderInfo', data),
/** 合同系统/选商/选商结果 选商专家列表 */
get_queryBiddingExpert: (data?: QueryOptions) =>
http.get('/app/biddingResult/queryBiddingExpert', data),
}, },
home: { home: {
/** 合同系统/首页待办/已办 首页待办 */ /** 合同系统/首页待办/已办 首页待办 */
@ -865,8 +889,8 @@ export default {
/** 设备管理/设备静态库管理/设备调拨 调拨信息保存 */ /** 设备管理/设备静态库管理/设备调拨 调拨信息保存 */
post_save: (data?: BodyOptions) => http.post('/app/equAllot/save', data), post_save: (data?: BodyOptions) => http.post('/app/equAllot/save', data),
/** 设备管理/设备静态库管理/设备调拨 调拨信息删除 */ /** 设备管理/设备静态库管理/设备调拨 调拨信息删除 */
post_delete: (data?: BodyOptions) => post_deletes: (data?: BodyOptions) =>
http.post('/app/equAllot/delete', data), http.post('/app/equAllot/deletes', data),
}, },
bidding: { bidding: {
/** 合同系统/标段信息 标段查询 */ /** 合同系统/标段信息 标段查询 */
@ -876,6 +900,9 @@ export default {
/** 合同系统/标段信息 标段信息删除 */ /** 合同系统/标段信息 标段信息删除 */
post_deletes: (data?: BodyOptions) => post_deletes: (data?: BodyOptions) =>
http.post('/app/bidding/deletes', data), http.post('/app/bidding/deletes', data),
/** 合同系统/选商/选商结果 查询标段列表 */
get_getBuddingPtInfoList: (data?: QueryOptions) =>
http.get('/app/bidding/getBuddingPtInfoList', data),
}, },
equAccident: { equAccident: {
/** 设备管理/设备使用管理/事故处理 事故处理(查询/获取) */ /** 设备管理/设备使用管理/事故处理 事故处理(查询/获取) */
@ -921,8 +948,8 @@ export default {
post_save: (data?: BodyOptions) => post_save: (data?: BodyOptions) =>
http.post('/app/equDayRepair/save', data), http.post('/app/equDayRepair/save', data),
/** 设备管理/设备使用管理/日常维修 删除 */ /** 设备管理/设备使用管理/日常维修 删除 */
get_deletes: (data?: QueryOptions) => post_deletes: (data?: BodyOptions) =>
http.get('/app/equDayRepair/deletes', data), http.post('/app/equDayRepair/deletes', data),
/** 设备管理/查询管理/日常维修查询 查询 */ /** 设备管理/查询管理/日常维修查询 查询 */
get_query: (data?: QueryOptions) => get_query: (data?: QueryOptions) =>
http.get('/app/equDayRepair/query', data), http.get('/app/equDayRepair/query', data),