选商结果功能完善
This commit is contained in:
parent
daec624df2
commit
40e5205ccb
|
@ -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),
|
||||||
|
|
|
@ -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')"
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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: {
|
||||||
|
|
|
@ -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: {
|
||||||
|
|
|
@ -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,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -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="合同基本信息二">
|
||||||
|
|
|
@ -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="相关附件">
|
||||||
|
|
|
@ -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="签约依据信息">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
// 开启布局设置按钮
|
// 开启布局设置按钮
|
||||||
|
|
|
@ -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),
|
||||||
|
|
Loading…
Reference in New Issue