合同申报功能完善
This commit is contained in:
parent
9ca397a7c5
commit
2541303ba6
|
@ -17,7 +17,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
path: '/contract/config',
|
path: '/contract/config',
|
||||||
component: () => import('#/views/contract/config/index.vue'),
|
component: () => import('#/views/contract/config/index.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
keepAlive: true,
|
|
||||||
hideInMenu: true,
|
hideInMenu: true,
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '合同配置',
|
title: '合同配置',
|
||||||
|
@ -46,7 +45,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
},
|
},
|
||||||
component: () => import('#/views/contract/approval/edit/index.vue'),
|
component: () => import('#/views/contract/approval/edit/index.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
keepAlive: true,
|
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '立项申报',
|
title: '立项申报',
|
||||||
activePath: '/contract/approval/edit/:id?',
|
activePath: '/contract/approval/edit/:id?',
|
||||||
|
@ -57,7 +55,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
path: '/contract/approval/list',
|
path: '/contract/approval/list',
|
||||||
component: () => import('#/views/contract/approval/list/index.vue'),
|
component: () => import('#/views/contract/approval/list/index.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
keepAlive: true,
|
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '立项编制',
|
title: '立项编制',
|
||||||
},
|
},
|
||||||
|
@ -67,7 +64,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
path: '/contract/approval/todo',
|
path: '/contract/approval/todo',
|
||||||
component: () => import('#/views/contract/approval/todo/index.vue'),
|
component: () => import('#/views/contract/approval/todo/index.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
keepAlive: true,
|
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '立项提示',
|
title: '立项提示',
|
||||||
},
|
},
|
||||||
|
@ -79,7 +75,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
component: () =>
|
component: () =>
|
||||||
import('#/views/contract/approval/signing-basis/index.vue'),
|
import('#/views/contract/approval/signing-basis/index.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
keepAlive: true,
|
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '签约依据维护',
|
title: '签约依据维护',
|
||||||
},
|
},
|
||||||
|
@ -102,7 +97,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
hideInMenu: true,
|
hideInMenu: true,
|
||||||
hideInTab: true,
|
hideInTab: true,
|
||||||
keepAlive: true,
|
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '选商填报',
|
title: '选商填报',
|
||||||
activePath: '/contract/business/todo',
|
activePath: '/contract/business/todo',
|
||||||
|
@ -115,7 +109,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
hideInMenu: true,
|
hideInMenu: true,
|
||||||
hideInTab: true,
|
hideInTab: true,
|
||||||
keepAlive: true,
|
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '选商结果填报',
|
title: '选商结果填报',
|
||||||
activePath: '/contract/business/todo',
|
activePath: '/contract/business/todo',
|
||||||
|
@ -129,7 +122,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '选商编制',
|
title: '选商编制',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -140,7 +132,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '选商结果编制',
|
title: '选商结果编制',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -150,7 +141,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '选商提示',
|
title: '选商提示',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -177,7 +167,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
hideInMenu: true,
|
hideInMenu: true,
|
||||||
hideInTab: true,
|
hideInTab: true,
|
||||||
keepAlive: true,
|
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '申报填报',
|
title: '申报填报',
|
||||||
activePath: '/contract/declaration/todo',
|
activePath: '/contract/declaration/todo',
|
||||||
|
@ -190,7 +179,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '申报编制',
|
title: '申报编制',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -200,7 +188,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '申报提示',
|
title: '申报提示',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -211,7 +198,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '合同打印',
|
title: '合同打印',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -252,7 +238,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '合同签订',
|
title: '合同签订',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
@ -271,7 +256,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '签订填报',
|
title: '签订填报',
|
||||||
activePath: '/contract/sign/todo',
|
activePath: '/contract/sign/todo',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -281,7 +265,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '签订编制',
|
title: '签订编制',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -291,7 +274,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '签订提示',
|
title: '签订提示',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -303,7 +285,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '合同履行',
|
title: '合同履行',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
@ -322,7 +303,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '履行填报',
|
title: '履行填报',
|
||||||
activePath: '/contract/perform/todo',
|
activePath: '/contract/perform/todo',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -332,7 +312,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '履行编制',
|
title: '履行编制',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -342,7 +321,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '履行提示',
|
title: '履行提示',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -352,7 +330,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '履行结果填报',
|
title: '履行结果填报',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -363,7 +340,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '履行结果编制',
|
title: '履行结果编制',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -374,7 +350,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '临时归档',
|
title: '临时归档',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -386,7 +361,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '合同归档',
|
title: '合同归档',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
@ -397,7 +371,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '合同归档',
|
title: '合同归档',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -408,7 +381,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '合同回档',
|
title: '合同回档',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -418,7 +390,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '归档查询',
|
title: '归档查询',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -430,7 +401,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '签约授权管理',
|
title: '签约授权管理',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
@ -448,7 +418,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '签约授权申报',
|
title: '签约授权申报',
|
||||||
activePath: '/contract/sign-authorization/edit/:id?',
|
activePath: '/contract/sign-authorization/edit/:id?',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -459,7 +428,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '签约授权查询',
|
title: '签约授权查询',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -471,7 +439,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '合同相对人',
|
title: '合同相对人',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
@ -488,7 +455,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '相对人录入维护',
|
title: '相对人录入维护',
|
||||||
activePath: '/contract/company/edit/:id?',
|
activePath: '/contract/company/edit/:id?',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -498,7 +464,6 @@ const routes: RouteRecordRaw[] = [
|
||||||
meta: {
|
meta: {
|
||||||
icon: 'lucide:area-chart',
|
icon: 'lucide:area-chart',
|
||||||
title: '相对人查询',
|
title: '相对人查询',
|
||||||
keepAlive: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
@ -76,6 +76,7 @@ export default {
|
||||||
{ label: '选商编制', value: 'smEdit' },
|
{ label: '选商编制', value: 'smEdit' },
|
||||||
{ label: '选商审批中', value: 'smApproval' },
|
{ label: '选商审批中', value: 'smApproval' },
|
||||||
{ label: '选商结果编制', value: 'smrEdit' },
|
{ label: '选商结果编制', value: 'smrEdit' },
|
||||||
|
{ label: '结束', value: 'end' },
|
||||||
]),
|
]),
|
||||||
|
|
||||||
contract_business_flow_node: createEntry('合同选商节点流程', [
|
contract_business_flow_node: createEntry('合同选商节点流程', [
|
||||||
|
@ -88,6 +89,7 @@ export default {
|
||||||
{ label: '待主管领导审批', value: 'smManager' },
|
{ label: '待主管领导审批', value: 'smManager' },
|
||||||
{ label: '待公司领导审核', value: 'smLeaders' },
|
{ label: '待公司领导审核', value: 'smLeaders' },
|
||||||
{ label: '选商结果填报', value: 'smrEdit' },
|
{ label: '选商结果填报', value: 'smrEdit' },
|
||||||
|
{ label: '结束', value: 'end' },
|
||||||
]),
|
]),
|
||||||
|
|
||||||
contract_abolish_flow_node: createEntry('合同立项节点流程', [
|
contract_abolish_flow_node: createEntry('合同立项节点流程', [
|
||||||
|
|
|
@ -508,6 +508,7 @@ async function handleAudit(
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
message.success('审核通过');
|
message.success('审核通过');
|
||||||
|
temporaryFormModalApi.close();
|
||||||
back();
|
back();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('审核通过失败', error);
|
logger.error('审核通过失败', error);
|
||||||
|
|
|
@ -230,7 +230,7 @@ async function getFormData() {
|
||||||
if (item1.providerId === item2.providerId) {
|
if (item1.providerId === item2.providerId) {
|
||||||
data1.push({
|
data1.push({
|
||||||
...item1,
|
...item1,
|
||||||
phasePtId: '99999',
|
phasePtId: '',
|
||||||
offerMoney: item2.offerMoney,
|
offerMoney: item2.offerMoney,
|
||||||
bidScore: item2.bidScore,
|
bidScore: item2.bidScore,
|
||||||
bidDesc: item2.bidDesc,
|
bidDesc: item2.bidDesc,
|
||||||
|
@ -244,7 +244,7 @@ async 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';
|
tempBiddingPtInfo.phasePtId = '';
|
||||||
_fullData3.map((item) => (item.projectId = props.projectId));
|
_fullData3.map((item) => (item.projectId = props.projectId));
|
||||||
|
|
||||||
const form = {
|
const form = {
|
||||||
|
|
|
@ -111,7 +111,7 @@ async function handleSave() {
|
||||||
tempFiles = await fileUploader.upload(tempFileList, { source: 'ht' });
|
tempFiles = await fileUploader.upload(tempFileList, { source: 'ht' });
|
||||||
}
|
}
|
||||||
if (tempFiles) {
|
if (tempFiles) {
|
||||||
form.biddingResult = (
|
form.biddingResult.fileUuid = (
|
||||||
tempFiles.map((item) => item.fileUuid) || []
|
tempFiles.map((item) => item.fileUuid) || []
|
||||||
).join(',');
|
).join(',');
|
||||||
}
|
}
|
||||||
|
@ -279,7 +279,12 @@ onMounted(async () => {
|
||||||
<FileCard file-uuids="" />
|
<FileCard file-uuids="" />
|
||||||
</a-collapse-panel>
|
</a-collapse-panel>
|
||||||
|
|
||||||
<a-collapse-panel key="4" class="w-full" header="审批信息">
|
<a-collapse-panel
|
||||||
|
v-if="flowInstanceId"
|
||||||
|
key="4"
|
||||||
|
class="w-full"
|
||||||
|
header="审批信息"
|
||||||
|
>
|
||||||
<AuditNodeTable :flow-instance-id="flowInstanceId" />
|
<AuditNodeTable :flow-instance-id="flowInstanceId" />
|
||||||
</a-collapse-panel>
|
</a-collapse-panel>
|
||||||
|
|
||||||
|
|
|
@ -125,18 +125,18 @@ export function getFormSchema(params: any = {}) {
|
||||||
},
|
},
|
||||||
rules: [{ required: true, message: '请选择合同相对人' }],
|
rules: [{ required: true, message: '请选择合同相对人' }],
|
||||||
},
|
},
|
||||||
media: {
|
// media: {
|
||||||
title: '公告发布方式',
|
// title: '公告发布方式',
|
||||||
key: 'media',
|
// key: 'media',
|
||||||
col: { span: 12 },
|
// col: { span: 12 },
|
||||||
component: {
|
// component: {
|
||||||
name: 'a-input',
|
// name: 'a-input',
|
||||||
vModel: 'value',
|
// vModel: 'value',
|
||||||
},
|
// },
|
||||||
},
|
// },
|
||||||
isPerformDate: {
|
performType: {
|
||||||
title: '履行期限',
|
title: '履行期限',
|
||||||
key: 'isPerformDate',
|
key: 'performType',
|
||||||
col: { span: 24 },
|
col: { span: 24 },
|
||||||
component: {
|
component: {
|
||||||
name: 'a-input',
|
name: 'a-input',
|
||||||
|
@ -156,11 +156,11 @@ export function getFormSchema(params: any = {}) {
|
||||||
<a-form-item class="!mb-0 inline-block">
|
<a-form-item class="!mb-0 inline-block">
|
||||||
<a-radio-group
|
<a-radio-group
|
||||||
options={options1}
|
options={options1}
|
||||||
v-model:value={form.isPerformDate}
|
v-model:value={form.performType}
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<div class="w-2"></div>
|
<div class="w-2"></div>
|
||||||
{form.isPerformDate === '0' && (
|
{form.performType === '0' && (
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<span class="mx-1">从</span>
|
<span class="mx-1">从</span>
|
||||||
<a-form-item class="!mb-0 inline-block">
|
<a-form-item class="!mb-0 inline-block">
|
||||||
|
@ -216,9 +216,9 @@ export function getFormSchema(params: any = {}) {
|
||||||
vModel: 'value',
|
vModel: 'value',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
projectNum9: {
|
disputeMethod: {
|
||||||
title: '纠纷解决方式',
|
title: '纠纷解决方式',
|
||||||
key: 'projectNum9',
|
key: 'disputeMethod',
|
||||||
col: { span: 16 },
|
col: { span: 16 },
|
||||||
component: {
|
component: {
|
||||||
name: 'fs-dict-radio',
|
name: 'fs-dict-radio',
|
||||||
|
|
|
@ -12,6 +12,7 @@ import {
|
||||||
type UploadFile,
|
type UploadFile,
|
||||||
} from 'ant-design-vue';
|
} from 'ant-design-vue';
|
||||||
import { logger } from 'common-utils';
|
import { logger } from 'common-utils';
|
||||||
|
import { merge } from 'lodash-es';
|
||||||
|
|
||||||
import Apis from '#/api';
|
import Apis from '#/api';
|
||||||
import temporaryFormModal from '#/components/temporary-form-modal/temporary-form-modal.vue';
|
import temporaryFormModal from '#/components/temporary-form-modal/temporary-form-modal.vue';
|
||||||
|
@ -67,19 +68,11 @@ const formBindingByBaseInfo = ref({
|
||||||
|
|
||||||
const formBinding = ref<any>(null);
|
const formBinding = ref<any>(null);
|
||||||
|
|
||||||
function getColumns(): any {
|
const contractData = ref<any>({});
|
||||||
return [
|
|
||||||
{ type: 'seq', title: '序号', width: 60 },
|
const currData = ref({});
|
||||||
{ field: 'referenceName', title: '签约依据名称', minWidth: 150 },
|
|
||||||
{ field: 'referenceId', title: '签约依据编号', width: 200 },
|
const sqConsignPt = ref<any>({});
|
||||||
{ field: 'attachments', title: '附件', width: 120 },
|
|
||||||
{
|
|
||||||
title: '操作',
|
|
||||||
width: 120,
|
|
||||||
slots: { default: 'operation' },
|
|
||||||
},
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
const fileList = ref<UploadFile[]>([]);
|
const fileList = ref<UploadFile[]>([]);
|
||||||
|
|
||||||
|
@ -176,34 +169,34 @@ async function handleSave() {
|
||||||
|
|
||||||
const form = formRef.value.form;
|
const form = formRef.value.form;
|
||||||
|
|
||||||
// 合同附件
|
// 相关资料
|
||||||
// {
|
{
|
||||||
// const tempFileList = contractForm.fileList;
|
const tempFileList = fileList.value;
|
||||||
// let tempFiles: any = [];
|
let tempFiles: any = [];
|
||||||
// if (fileList.value && tempFileList.length > 0) {
|
if (tempFileList && tempFileList.length > 0) {
|
||||||
// tempFiles = await fileUploader.upload(tempFileList, { source: 'ht' });
|
tempFiles = await fileUploader.upload(tempFileList, { source: 'ht' });
|
||||||
// }
|
}
|
||||||
// console.log(tempFiles);
|
console.log(tempFiles);
|
||||||
// if (tempFiles) {
|
if (tempFiles) {
|
||||||
// contractForm.fileUuid = (
|
form.fileUuid = (tempFiles.map((item) => item.fileUuid) || []).join(
|
||||||
// tempFiles.map((item) => item.fileUuid) || []
|
',',
|
||||||
// ).join(',');
|
);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
// 招标文件
|
// 文本上传
|
||||||
// {
|
{
|
||||||
// const tempFileList = fileList.value;
|
const tempFileList = fileListByProfile.value;
|
||||||
// let tempFiles: any = [];
|
let tempFiles: any = [];
|
||||||
// if (fileList.value && tempFileList.length > 0) {
|
if (tempFileList && tempFileList.length > 0) {
|
||||||
// tempFiles = await fileUploader.upload(tempFileList, { source: 'ht' });
|
tempFiles = await fileUploader.upload(tempFileList, { source: 'ht' });
|
||||||
// }
|
}
|
||||||
// if (tempFiles) {
|
if (tempFiles) {
|
||||||
// bussinessForm.fileUuid = (
|
form.fileUuid2 = (tempFiles.map((item) => item.fileUuid) || []).join(
|
||||||
// tempFiles.map((item) => item.fileUuid) || []
|
',',
|
||||||
// ).join(',');
|
);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
console.log('提交表单', form);
|
console.log('提交表单', form);
|
||||||
|
|
||||||
|
@ -220,11 +213,24 @@ async function handleSave() {
|
||||||
// newForm.fileUuid = (files.map((item) => item.fileUuid) || []).join(',')
|
// newForm.fileUuid = (files.map((item) => item.fileUuid) || []).join(',')
|
||||||
// }
|
// }
|
||||||
|
|
||||||
form.ctrBaseId = form.contractId;
|
form.ctrBaseId = contractData.value.contractId;
|
||||||
form.ctrName = form.contractName;
|
form.ctrName = contractData.value.contractName;
|
||||||
delete form.guid;
|
// delete form.guid;
|
||||||
|
const guid = form.guid;
|
||||||
const data = await Apis.sbCtrBasePt.post_save({ data: form });
|
const data = await Apis.sbCtrBasePt.post_save({
|
||||||
|
data: {
|
||||||
|
...merge(form, contractData.value),
|
||||||
|
guid,
|
||||||
|
inputDeptId: contractData.value.inputDepartId,
|
||||||
|
inputDeptName: contractData.value.inputDepartName,
|
||||||
|
inputDepartUserId: contractData.value.inputUserId,
|
||||||
|
inputOpinion: contractData.value.inputOpinion,
|
||||||
|
inputPerson: contractData.value.inputPerson,
|
||||||
|
inputUnitId: contractData.value.inputUnitId,
|
||||||
|
inputUnitName: contractData.value.inputUnitName,
|
||||||
|
inputUserId: contractData.value.inputUserId,
|
||||||
|
},
|
||||||
|
});
|
||||||
id.value = data.value;
|
id.value = data.value;
|
||||||
message.success('保存成功');
|
message.success('保存成功');
|
||||||
Modal.confirm({
|
Modal.confirm({
|
||||||
|
@ -258,7 +264,7 @@ async function handleSubmit(type: 'openModal' | 'submit') {
|
||||||
try {
|
try {
|
||||||
await Apis.sbCtrBasePt.post_start({
|
await Apis.sbCtrBasePt.post_start({
|
||||||
data: {
|
data: {
|
||||||
guid: sbCtrBasePt.value.guid,
|
guid: sbCtrBasePt.value.guid || id.value,
|
||||||
assigneeList: selectUsers.value.map((item) => item.ACCOUNT_ID),
|
assigneeList: selectUsers.value.map((item) => item.ACCOUNT_ID),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -365,12 +371,6 @@ async function handleAudit(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const contractData = ref<any>({});
|
|
||||||
|
|
||||||
const currData = ref({});
|
|
||||||
|
|
||||||
const sqConsignPt = ref<any>({});
|
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
isLoading.value = true;
|
isLoading.value = true;
|
||||||
try {
|
try {
|
||||||
|
@ -409,31 +409,48 @@ onMounted(async () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// 先查合同基本信息
|
// 先查合同基本信息
|
||||||
let contract: any = await Apis.contractBaseInfo.get_page({
|
const contract: any = await Apis.contractBaseInfo.get_getOne({
|
||||||
params: { contractId: id.value },
|
params: { contractId: id.value },
|
||||||
});
|
});
|
||||||
contract = contract.rows[0];
|
// contract = contract.rows[0];
|
||||||
|
|
||||||
if (contract && contract.contractId) {
|
if (contract && contract.contractId) {
|
||||||
contractData.value = contract;
|
contractData.value = contract;
|
||||||
|
|
||||||
// 查询
|
// 查询
|
||||||
let sbCtrBasePtData: any = await Apis.sbCtrBasePt.post_page({
|
let sbCtrBasePtData: any = await Apis.sbCtrBasePt.post_page({
|
||||||
// params: { ctrBaseId: contract.contractId },
|
params: { CTRBASEID: id.value },
|
||||||
params: { ctrBaseId: '123456' },
|
// params: { ctrBaseId: '123456' },
|
||||||
});
|
});
|
||||||
sbCtrBasePtData = sbCtrBasePtData.rows[0];
|
sbCtrBasePtData.signUnitName = '克拉玛依市热力有限责任公司';
|
||||||
|
|
||||||
console.log(sbCtrBasePtData);
|
if (sbCtrBasePtData.rows.length > 0) {
|
||||||
if (sbCtrBasePtData.fileUuid) {
|
sbCtrBasePtData = sbCtrBasePtData.rows[0];
|
||||||
const files = await fileUploader.select(sbCtrBasePtData.fileUuid);
|
|
||||||
sbCtrBasePtData.fileList = files;
|
console.log(sbCtrBasePtData);
|
||||||
|
if (sbCtrBasePtData.fileUuid) {
|
||||||
|
const files = await fileUploader.select(sbCtrBasePtData.fileUuid);
|
||||||
|
sbCtrBasePtData.fileList = files;
|
||||||
|
}
|
||||||
|
sbCtrBasePtData.signUnitName = '克拉玛依市热力有限责任公司';
|
||||||
|
sbCtrBasePt.value = sbCtrBasePtData;
|
||||||
|
|
||||||
|
// 查询附件-相关资料
|
||||||
|
if (sbCtrBasePtData.fileUuid) {
|
||||||
|
fileList.value = await fileUploader.select(
|
||||||
|
sbCtrBasePtData.fileUuid,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (sbCtrBasePtData.fileUuid2) {
|
||||||
|
fileListByProfile.value = await fileUploader.select(
|
||||||
|
sbCtrBasePtData.fileUuid2,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
nextTick(() => {
|
||||||
|
formRef.value.setFormData(sbCtrBasePtData);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
sbCtrBasePt.value = sbCtrBasePtData;
|
|
||||||
|
|
||||||
nextTick(() => {
|
|
||||||
formRef.value.setFormData(sbCtrBasePtData);
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
throw new Error('当前合同信息不存在');
|
throw new Error('当前合同信息不存在');
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,42 +1,54 @@
|
||||||
import type { VxeGridPropTypes } from 'vxe-table';
|
import type { VxeGridPropTypes } from 'vxe-table';
|
||||||
import { useRender } from '#/hooks/useRender';
|
|
||||||
import dayjs from 'dayjs';
|
|
||||||
import { DICT_TYPE, getDictOptions } from '#/utils/dict';
|
|
||||||
import { dict } from '@fast-crud/fast-crud';
|
import { dict } from '@fast-crud/fast-crud';
|
||||||
|
|
||||||
export const PrimaryKey = 'guid';
|
import { useRender } from '#/hooks/useRender';
|
||||||
|
import { DICT_TYPE, getDictOptions } from '#/utils/dict';
|
||||||
|
|
||||||
|
export const PrimaryKey = 'GUID';
|
||||||
|
|
||||||
export function getColumns(params: any = {}): VxeGridPropTypes.Columns {
|
export function getColumns(params: any = {}): VxeGridPropTypes.Columns {
|
||||||
return [
|
return [
|
||||||
{ type: 'radio', width: 40, slots: { radio: 'radio_cell' }, align: 'center', fixed: 'left' },
|
|
||||||
{ field: 'ctrBaseId', title: '合同申报编号', width: 150 },
|
|
||||||
{ field: 'contractNumber', title: '合同编号', width: 100 },
|
|
||||||
{
|
{
|
||||||
field: 'ctrName', title: '合同名称', minWidth: 200, slots: {
|
type: 'radio',
|
||||||
default: 'contract-name-slot'
|
width: 40,
|
||||||
}
|
slots: { radio: 'radio_cell' },
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'left',
|
||||||
},
|
},
|
||||||
{ field: 'objects', title: '合同标的', width: 150 },
|
{ field: 'CTR_BASE_ID', title: '合同申报编号', width: 150 },
|
||||||
|
{ field: 'CONTRACT_NUMBER', title: '合同编号', width: 100 },
|
||||||
{
|
{
|
||||||
field: 'objectsSum', title: '标的金额', width: 150, slots: {
|
field: 'CTR_NAME',
|
||||||
|
title: '合同名称',
|
||||||
|
minWidth: 200,
|
||||||
|
slots: {
|
||||||
|
default: 'contract-name-slot',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ field: 'OBJECTS', title: '合同标的', width: 150 },
|
||||||
|
{
|
||||||
|
field: 'OBJECTS_SUM',
|
||||||
|
title: '标的金额',
|
||||||
|
width: 150,
|
||||||
|
slots: {
|
||||||
default: ({ row }) => {
|
default: ({ row }) => {
|
||||||
return useRender.renderText(row.objectsSum, row.priceTypeName);
|
return useRender.renderText(row.OBJECTS_SUM, row.PRICE_TYPE_NAME);
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{ field: 'inputPerson', title: '合同承办人', width: 120 },
|
{ field: 'INPUT_PERSON', title: '合同承办人', width: 120 },
|
||||||
{ field: 'providerName', title: '合同相对人名称', width: 150 },
|
{ field: 'PROVIDER_NAME', title: '合同相对人名称', width: 150 },
|
||||||
{ field: 'contractSourceType', title: '合同来源', width: 100 },
|
{ field: 'CONTRACT_SOURCE_TYPE', title: '合同来源', width: 100 },
|
||||||
{ field: 'choiceTypeName', title: '采购方式', width: 120 },
|
{ field: 'CHOICE_TYPE_NAME', title: '采购方式', width: 120 },
|
||||||
{ field: 'inputDeptName', title: '承办人部门', width: 120 },
|
{ field: 'INPUT_DEPT_NAME', title: '承办人部门', width: 120 },
|
||||||
{ field: 'inputDate', title: '承办时间', width: 150 }
|
{ field: 'INPUT_DATE', title: '承办时间', width: 150 },
|
||||||
]
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getFormSchema(_params: any = {}) {
|
export function getFormSchema(_params: any = {}) {
|
||||||
return {
|
return {
|
||||||
initialForm: {
|
initialForm: {},
|
||||||
},
|
|
||||||
columns: {
|
columns: {
|
||||||
ctrBaseId: {
|
ctrBaseId: {
|
||||||
title: '合同编号',
|
title: '合同编号',
|
||||||
|
@ -79,32 +91,40 @@ export function getFormSchema(_params: any = {}) {
|
||||||
autoSearchTrigger: 'enter',
|
autoSearchTrigger: 'enter',
|
||||||
show: true,
|
show: true,
|
||||||
render({ form }) {
|
render({ form }) {
|
||||||
//注意此处的v-model写法
|
// 注意此处的v-model写法
|
||||||
return (
|
return (
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<a-form-item class="inline-block !mb-0">
|
<a-form-item class="!mb-0 inline-block">
|
||||||
<a-input-number v-model:value={form.budgetSum1} class="!w-[120px]" placeholder=""/>
|
<a-input-number
|
||||||
|
class="!w-[120px]"
|
||||||
|
placeholder=""
|
||||||
|
v-model:value={form.budgetSum1}
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<span class="mx-1">至</span>
|
<span class="mx-1">至</span>
|
||||||
<a-form-item class="inline-block !mb-0">
|
<a-form-item class="!mb-0 inline-block">
|
||||||
<a-input-number v-model:value={form.budgetSum2} class="!w-[120px]" placeholder=""/>
|
<a-input-number
|
||||||
|
class="!w-[120px]"
|
||||||
|
placeholder=""
|
||||||
|
v-model:value={form.budgetSum2}
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
choiceType: {
|
choiceType: {
|
||||||
title: "选商方式",
|
title: '选商方式',
|
||||||
key: "choiceType",
|
key: 'choiceType',
|
||||||
autoSearchTrigger: 'enter',
|
autoSearchTrigger: 'enter',
|
||||||
show: true,
|
show: true,
|
||||||
component: {
|
component: {
|
||||||
name: "fs-dict-select",
|
name: 'fs-dict-select',
|
||||||
vModel: "value",
|
vModel: 'value',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
class: 'min-w-[200px]',
|
class: 'min-w-[200px]',
|
||||||
dict: dict({
|
dict: dict({
|
||||||
data: getDictOptions(DICT_TYPE.contract_selection_method)
|
data: getDictOptions(DICT_TYPE.contract_selection_method),
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -114,32 +134,42 @@ export function getFormSchema(_params: any = {}) {
|
||||||
autoSearchTrigger: 'enter',
|
autoSearchTrigger: 'enter',
|
||||||
show: true,
|
show: true,
|
||||||
render({ form }) {
|
render({ form }) {
|
||||||
//注意此处的v-model写法
|
// 注意此处的v-model写法
|
||||||
return (
|
return (
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<a-form-item class="inline-block !mb-0">
|
<a-form-item class="!mb-0 inline-block">
|
||||||
<a-date-picker v-model:value={form.startDate} placeholder="" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
|
<a-date-picker
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
placeholder=""
|
||||||
|
v-model:value={form.startDate}
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<span class="mx-1">至</span>
|
<span class="mx-1">至</span>
|
||||||
<a-form-item class="inline-block !mb-0">
|
<a-form-item class="!mb-0 inline-block">
|
||||||
<a-date-picker v-model:value={form.endDate} placeholder="" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
|
<a-date-picker
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
placeholder=""
|
||||||
|
v-model:value={form.endDate}
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
fundDitch: {
|
fundDitch: {
|
||||||
title: "资金渠道",
|
title: '资金渠道',
|
||||||
key: "fundDitch",
|
key: 'fundDitch',
|
||||||
autoSearchTrigger: 'enter',
|
autoSearchTrigger: 'enter',
|
||||||
show: true,
|
show: true,
|
||||||
component: {
|
component: {
|
||||||
name: "fs-dict-select",
|
name: 'fs-dict-select',
|
||||||
vModel: "value",
|
vModel: 'value',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
class: 'min-w-[200px]',
|
class: 'min-w-[200px]',
|
||||||
dict: dict({
|
dict: dict({
|
||||||
data: getDictOptions(DICT_TYPE.contract_funding_source)
|
data: getDictOptions(DICT_TYPE.contract_funding_source),
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,22 +1,27 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, onMounted, reactive, ref } from "vue";
|
import { computed, onMounted, reactive, ref } from 'vue';
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from 'vue-router';
|
||||||
|
|
||||||
import { Page } from "@vben/common-ui";
|
import { Page } from '@vben/common-ui';
|
||||||
import { MdiExport, MdiRadioChecked, MdiRadioUnchecked, MdiUpdate } from "@vben/icons";
|
import {
|
||||||
|
MdiExport,
|
||||||
|
MdiRadioChecked,
|
||||||
|
MdiRadioUnchecked,
|
||||||
|
MdiUpdate,
|
||||||
|
} from '@vben/icons';
|
||||||
|
|
||||||
import { message } from "ant-design-vue";
|
import { message } from 'ant-design-vue';
|
||||||
|
|
||||||
import Apis from "#/api";
|
import Apis from '#/api';
|
||||||
import { useVxeTable } from "#/hooks/vxeTable";
|
import { useVxeTable } from '#/hooks/vxeTable';
|
||||||
|
|
||||||
import { getColumns, getFormSchema, PrimaryKey } from "./crud.tsx";
|
import { getColumns, getFormSchema, PrimaryKey } from './crud.tsx';
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
const searchRef = ref();
|
const searchRef = ref();
|
||||||
|
|
||||||
const { xGridRef, triggerProxy, gridProps } = useVxeTable({ ref: "xGridRef" });
|
const { xGridRef, triggerProxy, gridProps } = useVxeTable({ ref: 'xGridRef' });
|
||||||
|
|
||||||
/** Hooks - 表格 */
|
/** Hooks - 表格 */
|
||||||
const gridOptions = reactive(
|
const gridOptions = reactive(
|
||||||
|
@ -42,14 +47,14 @@ const gridOptions = reactive(
|
||||||
toolbarConfig: {
|
toolbarConfig: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
},
|
},
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
function handleEdit(record?: any) {
|
function handleEdit(record?: any) {
|
||||||
if (record && record[PrimaryKey]) {
|
if (record && record[PrimaryKey]) {
|
||||||
router.push(`/contract/declaration/edit/${record.ctrBaseId}`);
|
router.push(`/contract/declaration/edit/${record.CONTRACT_ID}`);
|
||||||
} else {
|
} else {
|
||||||
router.push("/contract/declaration/edit");
|
router.push('/contract/declaration/edit');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,9 +62,9 @@ function handleExport() {
|
||||||
const $grid = xGridRef.value;
|
const $grid = xGridRef.value;
|
||||||
if ($grid) {
|
if ($grid) {
|
||||||
$grid.exportData({
|
$grid.exportData({
|
||||||
type: "xlsx",
|
type: 'xlsx',
|
||||||
});
|
});
|
||||||
message.success("导出成功");
|
message.success('导出成功');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,13 +88,13 @@ function handleCellClick({ row }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
triggerProxy("reload");
|
triggerProxy('reload');
|
||||||
});
|
});
|
||||||
|
|
||||||
const searchForm = ref({
|
const searchForm = ref({
|
||||||
...getFormSchema(),
|
...getFormSchema(),
|
||||||
onSearch(context: any) {
|
onSearch(context: any) {
|
||||||
triggerProxy("reload");
|
triggerProxy('reload');
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -120,7 +125,11 @@ const searchForm = ref({
|
||||||
</fs-search>
|
</fs-search>
|
||||||
|
|
||||||
<div class="min-h-300px flex-1">
|
<div class="min-h-300px flex-1">
|
||||||
<vxe-grid ref="xGridRef" v-bind="gridOptions" @cell-click="handleCellClick">
|
<vxe-grid
|
||||||
|
ref="xGridRef"
|
||||||
|
v-bind="gridOptions"
|
||||||
|
@cell-click="handleCellClick"
|
||||||
|
>
|
||||||
<template #toolbar_buttons>
|
<template #toolbar_buttons>
|
||||||
<a-space>
|
<a-space>
|
||||||
<vben-button
|
<vben-button
|
||||||
|
@ -146,8 +155,11 @@ const searchForm = ref({
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #contract-name-slot="{ row }">
|
<template #contract-name-slot="{ row }">
|
||||||
<span class="text-blue cursor-pointer hover:underline" @click="toDetail(row)">
|
<span
|
||||||
{{ row.ctrName }}
|
class="text-blue cursor-pointer hover:underline"
|
||||||
|
@click="toDetail(row)"
|
||||||
|
>
|
||||||
|
{{ row.CTR_NAME }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -99,12 +99,49 @@ function toDetail(row) {
|
||||||
|
|
||||||
async function handlePrint(row, type: string) {
|
async function handlePrint(row, type: string) {
|
||||||
const hideLoading = message.loading('加载中', 0);
|
const hideLoading = message.loading('加载中', 0);
|
||||||
|
console.log(row);
|
||||||
try {
|
try {
|
||||||
const form: any = {};
|
if (type === 'xs') {
|
||||||
await Apis.qdSign.get_printApprove({
|
await Apis.qdSign.get_printApprove({
|
||||||
params: form,
|
params: {
|
||||||
});
|
modelId: '1',
|
||||||
|
caseId: row.ctrBaseId,
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
meta: {
|
||||||
|
responseType: 'blob',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (type === 'qy') {
|
||||||
|
await Apis.qdSign.get_printApprove({
|
||||||
|
params: {
|
||||||
|
modelId: '2',
|
||||||
|
caseId: row.ctrBaseId,
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
meta: {
|
||||||
|
responseType: 'blob',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (type === 'wb') {
|
||||||
|
await Apis.qdSign.get_textPrint({
|
||||||
|
params: {
|
||||||
|
ctrBaseId: row.ctrBaseId,
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
meta: {
|
||||||
|
responseType: 'blob',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
message.success('文件已下载');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
message.error('文件下载失败');
|
||||||
logger.error('打印失败', error);
|
logger.error('打印失败', error);
|
||||||
} finally {
|
} finally {
|
||||||
hideLoading();
|
hideLoading();
|
||||||
|
|
|
@ -1,15 +1,35 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { watch } from 'vue';
|
||||||
|
|
||||||
import { DICT_TYPE, getDictObj } from '#/utils/dict';
|
import { DICT_TYPE, getDictObj } from '#/utils/dict';
|
||||||
import FileCard from '#/views/contract/components/file-card/file-card.vue';
|
import FileCard from '#/views/contract/components/file-card/file-card.vue';
|
||||||
|
|
||||||
withDefaults(
|
// 使用 withDefaults 和 defineProps 定义 props
|
||||||
|
const props = withDefaults(
|
||||||
defineProps<{
|
defineProps<{
|
||||||
info: any;
|
info: any;
|
||||||
}>(),
|
}>(),
|
||||||
{
|
{
|
||||||
info: () => {},
|
info: () => ({}), // 默认值为空对象
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// 监听 info 的变化
|
||||||
|
watch(
|
||||||
|
() => props.info,
|
||||||
|
async (newInfo) => {
|
||||||
|
if (newInfo && Object.keys(newInfo).length > 0) {
|
||||||
|
// // 查询码表,更新
|
||||||
|
// console.log('info 有数据,加载接口...');
|
||||||
|
// // 在 info 有数据时,调用接口并更新数据
|
||||||
|
// const updatedData = await fetchData();
|
||||||
|
// // 假设更新后的数据需要合并到 info 中
|
||||||
|
// Object.assign(props.info, updatedData);
|
||||||
|
// console.log('info 更新后:', props.info);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }, // immediate: true 表示首次加载时也会触发
|
||||||
|
);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -23,10 +43,10 @@ withDefaults(
|
||||||
{{ info.contractName }}
|
{{ info.contractName }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item :span="1" label="合同类别">
|
<a-descriptions-item :span="1" label="合同类别">
|
||||||
{{ info.contractName }}
|
{{ info.ctrTypeName }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item :span="1" label="二级类别">
|
<a-descriptions-item :span="1" label="二级类别">
|
||||||
{{ info.contractName }}
|
{{ info.ctrTwoTypeName }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item :span="1" label="框架协议">
|
<a-descriptions-item :span="1" label="框架协议">
|
||||||
{{ getDictObj(DICT_TYPE.common_whether, info.frameProtocol)?.label }}
|
{{ getDictObj(DICT_TYPE.common_whether, info.frameProtocol)?.label }}
|
||||||
|
|
|
@ -5,7 +5,6 @@ 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 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';
|
import ApprovalCard from '#/views/contract/iframe-info/components/info-approval/approval-card.vue';
|
||||||
|
@ -24,11 +23,6 @@ const props = withDefaults(
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const { xGridRef, gridProps } = useVxeTable({ ref: 'xGridRef' });
|
|
||||||
const { xGridRef: xGridRefByAuditInfo } = useVxeTable({
|
|
||||||
ref: 'xGridRefByAuditInfo',
|
|
||||||
});
|
|
||||||
|
|
||||||
const currData = ref<any>({});
|
const currData = ref<any>({});
|
||||||
|
|
||||||
const isLoading = ref(false);
|
const isLoading = ref(false);
|
||||||
|
@ -72,8 +66,13 @@ onMounted(async () => {
|
||||||
<BasisTable :basis-id="currData.basisId" />
|
<BasisTable :basis-id="currData.basisId" />
|
||||||
</a-collapse-panel>
|
</a-collapse-panel>
|
||||||
|
|
||||||
<a-collapse-panel key="3" class="w-full" header="审批信息">
|
<a-collapse-panel
|
||||||
<AuditNodeTable :flow-instance-id="props.flowInstanceId" />
|
v-if="currData.flowInstanceId"
|
||||||
|
key="3"
|
||||||
|
class="w-full"
|
||||||
|
header="审批信息"
|
||||||
|
>
|
||||||
|
<AuditNodeTable :flow-instance-id="currData.flowInstanceId" />
|
||||||
</a-collapse-panel>
|
</a-collapse-panel>
|
||||||
</a-collapse>
|
</a-collapse>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -100,7 +100,12 @@ onMounted(async () => {
|
||||||
<FileCard file-uuids="" />
|
<FileCard file-uuids="" />
|
||||||
</a-collapse-panel>
|
</a-collapse-panel>
|
||||||
|
|
||||||
<a-collapse-panel key="4" class="w-full" header="审批信息">
|
<a-collapse-panel
|
||||||
|
v-if="props.flowInstanceId"
|
||||||
|
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>
|
||||||
|
|
|
@ -4,9 +4,6 @@ import { h } from 'vue';
|
||||||
|
|
||||||
import { Tooltip } from 'ant-design-vue';
|
import { Tooltip } from 'ant-design-vue';
|
||||||
|
|
||||||
import { DICT_TYPE, getDictObj } from '#/utils/dict';
|
|
||||||
import { useRender } from '#/hooks/useRender';
|
|
||||||
|
|
||||||
export const PrimaryKey = 'guid';
|
export const PrimaryKey = 'guid';
|
||||||
|
|
||||||
/** 获取待办/已办列表的列 */
|
/** 获取待办/已办列表的列 */
|
||||||
|
@ -104,7 +101,12 @@ export function getAuditInfoColumns(
|
||||||
title: '任务名称',
|
title: '任务名称',
|
||||||
minWidth: 200,
|
minWidth: 200,
|
||||||
},
|
},
|
||||||
{ field: 'assigneeId', title: '审批人', width: 150 },
|
{
|
||||||
|
field: 'assigneeId',
|
||||||
|
title: '审批人',
|
||||||
|
width: 150,
|
||||||
|
slots: { default: ({ row }) => row.userName || row.assigneeId },
|
||||||
|
},
|
||||||
{ field: 'startTime', title: '送审时间', width: 150 },
|
{ field: 'startTime', title: '送审时间', width: 150 },
|
||||||
{ field: 'endTime', title: '审批时间', width: 150 },
|
{ field: 'endTime', title: '审批时间', width: 150 },
|
||||||
{ field: 'type', title: '审批状态', width: 100 },
|
{ field: 'type', title: '审批状态', width: 100 },
|
||||||
|
|
|
@ -372,11 +372,16 @@ onMounted(async () => {
|
||||||
>
|
>
|
||||||
保存
|
保存
|
||||||
</vben-button>
|
</vben-button>
|
||||||
<vben-button
|
<vben-button variant="primary" @click="handleSubmit('openModal')">
|
||||||
v-if="!id || currData.step === 'edit' || !currData.taskId"
|
提交
|
||||||
variant="primary"
|
</vben-button>
|
||||||
@click="handleSubmit('openModal')"
|
<vben-button variant="primary" @click="handleSubmit('openModal')">
|
||||||
>
|
签约审批表打印
|
||||||
|
</vben-button>
|
||||||
|
<vben-button variant="primary" @click="handleSubmit('openModal')">
|
||||||
|
合同文本打印
|
||||||
|
</vben-button>
|
||||||
|
<vben-button variant="primary" @click="handleSubmit('openModal')">
|
||||||
提交
|
提交
|
||||||
</vben-button>
|
</vben-button>
|
||||||
<vben-button
|
<vben-button
|
||||||
|
|
Loading…
Reference in New Issue