Commit 0cfba7e9 authored by alwayOnlie's avatar alwayOnlie

解决冲突

parent 29d1f445
......@@ -87,12 +87,17 @@ const contracRoute = {
name: '合同查询详情',
hideInMenu: true,
component: '@/pages/contract/manage/QueryList/QueryListdetails',
},
{
path: '/memberCenter/contract/manage/add',
path: '/memberCenter/contract/manage/add/addList',
name: '待新增合同',
component: '@/pages/contract/manage/add',
component: '@/pages/contract/manage/add/addList',
},
{
path: '/memberCenter/contract/manage/add/addList/contracAdd',
name: '待新增合同详情',
hideInMenu: true,
component: '@/pages/contract/manage/add/contracAdd',
},
// 待提交审核合同
{
......@@ -133,26 +138,39 @@ const contracRoute = {
path: '/memberCenter/contract/contractexecution/contractexecutionList/details',
name: '合同执行详情',
hideInMenu: true,
noMargin: true,
component: '@/pages/contract/contractexecution/details',
},
],
},
// 合同请款
/* 合同请款 */
{
path: '/memberCenter/contract/funds',
name: '合同请款',
routes: [
{
path: '/memberCenter/contract/funds/bill',
name: '请款单查询详情',
name: '请款单查询',
component: '@/pages/contract/funds/bill',
},
{
path: '/memberCenter/contract/funds/bill/details',
name: '请款单查询详情',
hideInMenu: true,
noMargin: true,
component: '@/pages/contract/funds/bill/details',
},
{
path: '/memberCenter/contract/funds/addbill',
name: '待新增请款单',
component: '@/pages/contract/funds/addbill',
},
{
path: '/memberCenter/contract/funds/addbill/Details',
name: '待新增请款单',
hideInMenu: true,
component: '@/pages/contract/funds/addbill/Details',
},
],
},
],
......
......@@ -4,12 +4,12 @@
* @return {type}
*/
export const callForBidsRoute = [
export const callForBidsRoute = [
// 招标
{
path:'/memberCenter/procurementAbility/callForBids',
name:'招标',
routes:[
path: '/memberCenter/procurementAbility/callForBids',
name: '招标',
routes: [
// 招标查询
{
path: '/memberCenter/procurementAbility/callForBids/callForBidsSearch',
......@@ -212,8 +212,8 @@ export const callForBidsRoute = [
name: '评标模板',
component: '@/pages/procurement/callForBids/remarkBidTemplate',
},
// 评标模板-新建
{
// 评标模板-新建
{
path: '/memberCenter/procurementAbility/callForBids/remarkBidTemplate/add',
name: '评标模板',
component: '@/pages/procurement/callForBids/addRemarkBidTemplate',
......
This diff is collapsed.
import React, { ReactText, useRef, useEffect, useLayoutEffect } from 'react';
import {StandardTable} from 'god';
import { StandardTable } from 'god';
import NestTable from '@/components/NestTable';
import { IStandardTableProps } from 'god/dist/src/standard-table';
import { Row, Col, Drawer, Space, Button } from 'antd';
......@@ -31,7 +31,7 @@ export interface DrawerTableProps extends IStandardTableProps<any> {
formilyProps?: any,
}
const DrawerTable:React.FC<DrawerTableProps> = (props) => {
const DrawerTable: React.FC<DrawerTableProps> = (props) => {
const {
width = 1000,
drawerTitle,
......@@ -47,7 +47,7 @@ const DrawerTable:React.FC<DrawerTableProps> = (props) => {
searchName,
formilyProps,
...resetTable
} = props
} = props
const selfRef = currentRef || useRef<any>({})
......@@ -84,15 +84,15 @@ const DrawerTable:React.FC<DrawerTableProps> = (props) => {
rowClassName={(_, index) => (index % 2) === 0 && "tb_bg"}
{...nestTableProps}
/>
) : (
<StandardTable
currentRef={selfRef}
formilyProps={formilyProps}
{...resetTable}
/>
) : (
<StandardTable
currentRef={selfRef}
formilyProps={formilyProps}
{...resetTable}
/>
)
}
<div style={{height: 56, width: '100%'}}></div>
<div style={{ height: 56, width: '100%' }}></div>
<Row className={styles.footer}>
<Col span={24}>
<Space size={[16, 0]}>
......
.anchorWrap :global .ant-anchor {
display: flex;
}
.anchorWrap :global .ant-anchor .ant-anchor-ink {
display: none;
}
.anchorWrap :global .ant-anchor .ant-anchor-link {
padding: 14px 0 !important;
margin: 0 16px;
}
.anchorWrap :global .ant-anchor .ant-anchor-link .ant-anchor-link-title {
font-size: 14px;
color: #909399;
}
.anchorWrap :global .ant-anchor .ant-anchor-link-active {
position: relative;
border-bottom: 2px solid #00B37A;
box-sizing: border-box;
}
.anchorWrap :global .ant-anchor .ant-anchor-link-active .ant-anchor-link-title {
font-weight: 500;
color: #303133;
}
.anchorWrap .titleBox {
padding: 8px 16px;
}
.anchorWrap .anchorBox {
display: flex;
padding: 0 16px;
}
/** 卡片样式 */
.card {
margin: 24px;
}
.card :global .ant-card {
margin-bottom: 24px;
}
.card :global .ant-card .ant-card-head > .ant-card-head-wrapper {
padding: 12px 0;
}
.card :global .ant-card .ant-card-extra {
padding: 0 0;
}
.card :global .ant-card .ant-card-extra .ant-radio-button-wrapper {
height: 24px;
line-height: 23px;
}
.card :global .ant-card .ant-card-extra .ant-radio-button-wrapper:hover {
color: #606266;
}
.card :global .ant-card .ant-card-extra .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #fff;
background: #6B778C;
border-color: #6B778C;
}
.card :global .god-table-control {
margin-bottom: 0;
}
.card .list {
display: flex;
}
.card .list h5 {
margin-bottom: 2em;
}
.card .list .listLable {
flex: 0 0 25%;
color: #909399;
}
.listItem {
display: flex;
}
.listItem .label {
flex: 0.2;
padding: 0 16px;
background: linear-gradient(270deg, #ffffff 0%, #daf2e7 100%);
}
.listItem .text {
padding: 0px 0px;
flex: 1;
}
.listItem p {
margin-bottom: 0;
}
.warp {
display: flex;
width: 100%;
}
.warp .warp_item {
width: 20%;
border: 1px solid #F4F5F7;
border-radius: 10px;
padding: 16px;
margin-right: 10px;
}
.warp .warp_item .title {
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #909399;
}
.warp .warp_item .proportion {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #303133;
padding: 12px 0;
}
.warp .warp_item .Price {
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #303133;
}
.warp .warp_item .warp_List {
margin-top: 32px;
}
.warp .warp_item .warp_List .warp_ListItem {
display: flex;
margin-bottom: 16px;
}
.warp .warp_item .warp_List .warp_ListItem .label {
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #909399;
flex: 0.5;
}
.warp .warp_item .warp_List .warp_ListItem .text {
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #303133;
flex: 1;
}
.upload_item {
margin-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
.upload_item .upload_left {
display: flex;
align-items: center;
color: #303133;
background-color: #fafbfc;
}
.upload_item .upload_left :global .anticon-file-word {
color: #4279df;
font-size: 18px;
margin-right: 8px;
}
.upload_item .upload_right {
color: #00b37a;
cursor: pointer;
}
.upload_item .upload_right :global .anticon-delete {
margin-left: 19px;
color: #c0c4cc;
}
......@@ -23,6 +23,7 @@
}
}
}
}
.titleBox {
padding: 8px 16px;
......
This diff is collapsed.
.box {
width: 100%;
}
.box :global .ant-table-expanded-row-level-1 .ant-table-cell {
padding: 0px !important;
background-color: #ffffff;
}
.box :global .ant-btn-primary {
background: #6B778C;
}
.box .listItem {
display: flex;
}
.box .listItem .label {
flex: 0.2;
padding: 0 16px;
background: linear-gradient(270deg, #ffffff 0%, #daf2e7 100%);
}
.box .listItem .text {
padding: 0px 0px;
flex: 1;
}
.box .listItem p {
margin-bottom: 0;
}
.flex {
display: flex;
align-items: center;
justify-content: center;
}
.flex span {
background: #e4e6eb;
padding: 7px 12px;
color: #c0c4cc;
}
.upload_item {
margin-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
.upload_item .upload_left {
display: flex;
align-items: center;
color: #303133;
background-color: #fafbfc;
}
.upload_item .upload_left :global .anticon-file-word {
color: #4279df;
font-size: 18px;
margin-right: 8px;
}
.upload_item .upload_right {
color: #00b37a;
cursor: pointer;
}
.upload_item .upload_right :global .anticon-delete {
margin-left: 19px;
color: #c0c4cc;
}
.tagAtive {
padding: 5px 15px;
background: #6B778C;
color: #fff;
}
.tag {
padding: 5px 15px;
border-top: 1px solid #E4E6EB;
border-right: 1px solid #E4E6EB;
border-bottom: 1px solid #E4E6EB;
}
.box {
width: 100%;
:global {
.ant-table-expanded-row-level-1 .ant-table-cell {
padding: 0px !important;
background-color: #ffffff;
}
.ant-btn-primary{
background: #6B778C;
}
}
.listItem {
display: flex;
.label {
flex: 0.2;
padding: 0 16px;
background: linear-gradient(270deg, #ffffff 0%, #daf2e7 100%);
}
.text {
padding: 0px 0px;
flex: 1;
}
p {
margin-bottom: 0;
}
}
}
.flex {
display: flex;
align-items: center;
justify-content: center;
span {
background: #e4e6eb;
padding: 7px 12px;
color: #c0c4cc;
}
}
.upload_item {
margin-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
.upload_left {
display: flex;
align-items: center;
color: #303133;
background-color: #fafbfc;
:global {
.anticon-file-word {
color: #4279df;
font-size: 18px;
margin-right: 8px;
}
}
}
.upload_right {
color: #00b37a;
cursor: pointer;
:global {
.anticon-delete {
margin-left: 19px;
color: #c0c4cc;
}
}
}
}
.tagAtive{
padding: 5px 15px;
background: #6B778C;
color: #fff;
}
.tag{
padding: 5px 15px;
border-top: 1px solid #E4E6EB;
border-right: 1px solid #E4E6EB;
border-bottom: 1px solid #E4E6EB;
}
import React, { useState, useRef, ReactNode } from 'react'
import { history, Link } from 'umi';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, Button, Space } from 'antd';
import statuStyle from '../../common/colorTag'
import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god';
import NiceForm from '@/components/NiceForm';
import { createFormActions } from '@formily/antd';
import EyePreview from '@/components/EyePreview';
import { PlusOutlined } from '@ant-design/icons';
import { PublicApi } from '@/services/api'
const formActions = createFormActions();
const Addbilldetails: React.FC<{}> = () => {
const ref = useRef<any>({});
//表头
const columns: ColumnType<any>[] = [{
title: '请款单号/摘要',
dataIndex: 'No',
render: (text: any, record: any) => {
return (
<div>
<EyePreview
url={`/memberCenter/contract/funds/addbill/Details?id=${record.id}`}
>
{text}
</EyePreview>
<p>{record.name}</p>
</div>
);
},
}, {
title: '单据时间',
dataIndex: 'time',
}, {
title: '收款方',
dataIndex: 'NikName',
},
{
title: '合同编号',
dataIndex: 'PyNo',
render: (text: any, record: any) => <EyePreview
url={`/memberCenter/contract/funds/addbill/details/?id=${record.id}`}
>
{text}
</EyePreview>
},
{
title: '合同总金额',
dataIndex: 'totalPrice',
},
{
title: '请款金额',
dataIndex: 'Price',
},
{
title: '内部状态',
dataIndex: 'description',
}, {
title: '操作',
dataIndex: 'action',
render: (text: any, record: any) => {
let component: ReactNode = null
component = (
<>
<span style={statuStyle.success}>已完成签约</span>
</>
)
return component
}
}]
// 模拟请求
const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数
return new Promise((resolve, reject) => {
let data = {
code: 1000,
data: [
{
id: 1,
No: 'QPTY12',
name: '进口头层黄牛皮荔枝纹采购请款',
time: '2020-10-25 08:49',
NikName: '广州白马皮具交易中心',
PyNo: 'H-13-00001',
totalPrice: '¥100,000.00',
Price: '¥10,000.00',
status: 1,
type: 1,
description: '待提交审核',
},
{
id: 2,
No: 'QPTY12',
name: '进口头层黄牛皮荔枝纹采购请款',
time: '2020-10-25 08:49',
NikName: '广州白马皮具交易中心',
PyNo: 'H-13-00001',
totalPrice: '¥100,000.00',
Price: '¥10,000.00',
status: 1,
type: 1,
description: '待提交审核',
}
]
}
resolve(data)
})
}
const handleJumpAdd = () => {
};
const Actions = (
<Space>
<Button
type="primary"
icon={<PlusOutlined />}
onClick={handleJumpAdd}
>
新建
</Button>
</Space>
);
return (
<PageHeaderWrapper>
<Card>
<StandardTable
tableProps={{
rowKey: 'id',
}}
columns={columns}
currentRef={ref}
fetchTableData={(params: any) => fetchData(params)}
controlRender={
<NiceForm
actions={formActions}
expressionScope={{
Actions,
}}
effects={($, actions) => {
}}
schema={{
type: 'object',
properties: {
searchWrap: {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
grid: true,
},
properties: {
actions: {
type: 'object',
'x-component': 'Children',
'x-component-props': {
children: '{{Actions}}',
},
},
name: {
type: 'string',
'x-component': 'Search',
'x-component-props': {
placeholder: '合同模板名称',
advanced: false,
},
},
},
},
},
}}
onSubmit={values => ref.current.reload(values)}
/>
}
/>
</Card>
</PageHeaderWrapper>
)
}
export default Addbilldetails
import React, { useEffect, useState, useRef } from 'react';
import { Anchor, Radio, Steps, Row, Col, Table } from 'antd';
import { Anchor, Radio, Steps, Row, Col, Input, Button, Modal } from 'antd';
import style from './index.less';
import { ArrowLeftOutlined } from '@ant-design/icons';
import { StandardTable } from 'god';
......@@ -16,10 +16,11 @@ const { Link } = Anchor;
const { Step } = Steps;
const activeAnchorClassName = 'ant-anchor-link-active'
const { TextArea } = Input;
const BillDetails = (props: any) => {
const ref = useRef({});
const [currLink, setCurrLink] = useState(activeAnchorClassName)
const [isAllMember, setIsAllMember] = useState(true)
const [tabPane] = useState([
{ id: 'progress', title: '流转进度' },
{ id: 'process', title: '基本流程' },
......@@ -27,6 +28,7 @@ const BillDetails = (props: any) => {
{ id: 'record', title: '流转记录' },
])
const [targetOffset, setTargetOffset] = useState<number | undefined>(undefined);
const [Visible, setIsModalVisible] = useState<boolean>(false)
useEffect(() => {
setTargetOffset(window.innerHeight / 6);
}, []);
......@@ -58,9 +60,18 @@ const BillDetails = (props: any) => {
{ label: '合同有效期:', extra: '2020-08-25 至 2020-10-25' },
],
}
const isTitle = (title, Price) => {
return (
<div className="a">
<div>{title}</div>
<div>合计金额:¥{Price}</div>
</div>
)
}
/* 请款明细 */
const columns: ColumnType<any>[] = [{
title: '合同编号/摘要',
title: '单据号/摘要',
dataIndex: 'No',
align: 'center',
render: (text, record) =>
......@@ -73,52 +84,98 @@ const BillDetails = (props: any) => {
<p>{record.name}</p>
</div>
}, {
title: '合同生效/失效时间',
title: '单据类型',
dataIndex: 'number',
align: 'center',
}, {
title: '合同乙方',
title: '单据状态',
dataIndex: 'memberName',
align: 'center',
},
{
title: '合同总金额',
title: '单据时间',
dataIndex: 'time',
align: 'center',
defaultSortOrder: 'descend',
sorter: (a, b) => a.age - b.age,
},
{
title: '已执行金额',
title: isTitle('单据金额', '188999'),
dataIndex: 'Price',
align: 'center',
},
{
title: '已付款',
title: '含税/税率',
dataIndex: 'Price',
align: 'center',
},
{
title: '已请款待付款',
title: isTitle('已付款', '188999'),
dataIndex: 'Price',
align: 'center',
},
{
title: '未请款',
title: isTitle('已请款待付款', '188999'),
dataIndex: 'Price',
align: 'center',
},
{
title: '外部状态',
dataIndex: 'state',
title: isTitle('请款金额', '18000'),
dataIndex: 'Price',
align: 'center',
render: (record) => {
return (
<span style={statuStyle.success}>已完成签约</span>
)
}
}]
const columnsList: ColumnType<any>[] = [{
title: '序号',
dataIndex: 'No',
align: 'center',
}, {
title: '操作角色',
dataIndex: 'number',
align: 'center',
}, {
title: '部门',
dataIndex: 'memberName',
align: 'center',
},
{
title: '职位',
dataIndex: 'time',
align: 'center',
defaultSortOrder: 'descend',
sorter: (a, b) => a.age - b.age,
},
{
title: '状态',
dataIndex: 'Price',
align: 'center',
},
{
title: '操作',
dataIndex: 'Price',
align: 'center',
},
{
title: '操作时间',
dataIndex: 'Price',
align: 'center',
},
{
title: '审核意见',
dataIndex: 'Price',
align: 'center',
},
// {
// title: '外部状态',
// dataIndex: 'state',
// align: 'center',
// render: (record) => {
// return (
// <span style={statuStyle.success}>已完成签约</span>
// )
// }
// }
]
// 列表数据
const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数
......@@ -157,6 +214,10 @@ const BillDetails = (props: any) => {
resolve(data)
})
}
const handleIsAllMemberChange = (v: any) => {
setIsAllMember(v.target.value)
}
return (
<div className={style.anchorWrap}>
<Anchor
......@@ -198,6 +259,9 @@ const BillDetails = (props: any) => {
</div>
</div>
<div>
<Button type="primary" style={{ width: 80, marginRight: 16 }} onClick={() => setIsModalVisible(!Visible)}>单据作废 </Button>
</div>
</Anchor>
<div id='content' className={style.card}>
{/* 流转进度 */}
......@@ -317,7 +381,7 @@ const BillDetails = (props: any) => {
tableProps={{
rowKey: 'id',
}}
columns={columns}
columns={columnsList}
currentRef={ref}
fetchTableData={(params: any) => fetchData(params)}
formilyProps={{
......@@ -342,6 +406,16 @@ const BillDetails = (props: any) => {
</div>
</div>
</div>
<Modal title="单据作废" visible={Visible} onOk={() => setIsModalVisible(!Visible)} onCancel={() => setIsModalVisible(!Visible)}>
<Radio.Group onChange={handleIsAllMemberChange}>
<Radio value={true}>作废</Radio>
<Radio value={false}>不作废</Radio>
</Radio.Group>
<p style={{ padding: 10, margin: 0 }}>单据作废原因 <span style={{ color: 'red' }}>*</span></p>
<TextArea placeholder="在此输入你的原因,最多60个汉字" maxLength={120} />
</Modal>
</div>
)
}
......
.anchorWrap :global .ant-pro-basicLayout-content {
margin: 0 !important;
}
.anchorWrap :global .ant-anchor {
display: flex;
align-items: center;
}
.anchorWrap :global .ant-anchor .ant-anchor-ink {
display: none;
......
.anchorWrap {
:global {
.ant-pro-basicLayout-content{
margin: 0 !important;
}
.ant-anchor {
display: flex;
align-items: center;
.ant-anchor-ink {
display: none;
}
......@@ -32,6 +36,7 @@
padding: 0 16px;
}
}
/** 卡片样式 */
.card {
margin: 24px;
......@@ -165,7 +170,6 @@
.upload_right {
color: #00b37a;
cursor: pointer;
:global {
.anticon-delete {
margin-left: 19px;
......@@ -173,4 +177,8 @@
}
}
}
}
......@@ -72,7 +72,7 @@ export const tableListSchema: ISchema = {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['开始时间','结束时间'],
placeholder: ['开始时间', '结束时间'],
},
},
submit: {
......@@ -85,3 +85,290 @@ export const tableListSchema: ISchema = {
},
}
}
export const addBillSchema: ISchema = {
type: 'object',
properties: {
/* 定义tab */
REPOSIT_TABS: {
type: 'object',
'x-component': 'tab',
'x-component-props': {
type: 'card',
},
/* tab下面对应的值 */
properties: {
'tab-1': {
type: 'object',
'x-component': 'tabpane',
'x-component-props': {
tab: '基本信息',
},
properties: {
MEGA_LAYOUT1: {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
labelCol: 2,
wrapperCol: 10,
labelAlign: 'left',
},
properties: {
/* 合同编号 */
number: {
type: 'string',
title: '合同编号',
'x-rules': [
{
required: true,
message: '请填写合同编号',
},
{
limitByte: true, // 自定义校验规则
maxByte: 60,
},
],
},
abstract: {
type: 'string',
title: '合同摘要',
'x-rules': [
{
required: true,
message: '请填写合同摘要',
},
{
limitByte: true, // 自定义校验规则
maxByte: 60,
},
],
},
deliveryType: {
title: '寻源类型',
type: 'string',
enum: [
{ label: '采购询价', value: 1 },
{ label: '招标询价', value: 2 },
],
'x-component-props': {
placeholder: '请选择',
style: {
width: '100%',
},
},
'x-rules': [
{
required: true,
message: '请选择配送方式',
},
],
},
supplierMember: {
type: 'string',
title: '供应会员',
'x-component': 'CustomRelevance',
'x-component-props': {
title: '关联',
tip: '请选择对应单据',
modalProps: {
title: '选择会员',
},
columns: supplierColumns,
fetchTableData: getSupplier,
formilyProps: {
ctx: {
schema: supplierSchema,
components: {
Search,
Submit,
},
effects: ($, actions) => { },
inline: false,
},
},
tableProps: {
rowKey: 'id',
lableKey: 'name',
},
},
'x-mega-props': {
wrapperCol: 10,
},
'x-rules': [
{
required: true,
message: '请选择供应会员',
},
],
},
supplierMember1: {
type: 'string',
title: '授标会员',
'x-component': 'CustomRelevance',
'x-component-props': {
title: '关联',
tip: '请选择对应单据',
modalProps: {
title: '选择会员',
},
columns: supplierColumns,
fetchTableData: getSupplier,
formilyProps: {
ctx: {
schema: supplierSchema,
components: {
Search,
Submit,
},
effects: ($, actions) => { },
inline: false,
},
},
tableProps: {
rowKey: 'id',
lableKey: 'name',
},
},
'x-mega-props': {
wrapperCol: 10,
},
'x-rules': [
{
required: true,
message: '请选择供应会员',
},
],
},
requestTime: {
type: 'string',
'x-component': 'daterange',
title: '合同有效期',
required: true,
'x-component-props': {
placeholder: ['选择生效日期', '选择失效日期'],
disabledDate: current => {
return current && current < moment().startOf('day');
},
style: { width: '100%' },
},
},
outerStatus: {
type: 'string',
title: '外部状态',
'x-component': 'Children',
'x-component-props': {
children: '{{OuterStatus}}',
},
},
innerStatus: {
type: 'string',
title: '内部状态',
'x-component': 'Children',
'x-component-props': {
children: '{{InnerStatus}}',
},
},
},
},
},
},
'tab-2': {
type: 'object',
'x-component': 'tabpane',
'x-component-props': {
tab: '采购物料',
},
properties: {
MEGA_LAYOUT1: {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
labelCol: 2,
wrapperCol: 10,
labelAlign: 'left',
},
properties: {
/* 合同编号 */
innerWorkFlow: {
type: 'array:number',
'x-mega-props': {
wrapperCol: '100%',
},
'x-component': 'Children',
'x-component-props': {
children: '{{List}}',
},
},
},
},
},
},
'tab-3': {
type: 'object',
'x-component': 'tabpane',
'x-component-props': {
tab: '付款计划',
},
properties: {
MEGA_LAYOUT1: {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
labelCol: 2,
wrapperCol: 10,
labelAlign: 'left',
},
properties: {
/* 合同编号 */
innerWorkFlow: {
type: 'array:number',
'x-mega-props': {
wrapperCol: '100%',
},
'x-component': 'Children',
'x-component-props': {
children: '{{table}}',
},
},
},
},
},
},
'tab-4': {
type: 'object',
'x-component': 'tabpane',
'x-component-props': {
tab: '合同文本',
},
properties: {
MEGA_LAYOUT1: {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
labelCol: 2,
wrapperCol: 10,
labelAlign: 'left',
},
properties: {
/* 合同编号 */
innerWorkFlow: {
type: 'array:number',
'x-mega-props': {
wrapperCol: '100%',
},
'x-component': 'Children',
'x-component-props': {
children: '{{FromDom}}',
},
},
},
},
},
},
},
},
},
};
......@@ -58,8 +58,6 @@
}
.card .list {
display: flex;
}
.card .list h5 {
margin-bottom: 2em;
}
.card .list .listLable {
......@@ -72,6 +70,7 @@
.listItem .label {
flex: 0.2;
padding: 0 16px;
color: #00b37a;
background: linear-gradient(270deg, #ffffff 0%, #daf2e7 100%);
}
.listItem .text {
......@@ -157,3 +156,7 @@
margin-left: 19px;
color: #c0c4cc;
}
.box :global .ant-table-expanded-row-level-1 .ant-table-cell {
padding: 0px !important;
background-color: #ffffff;
}
......@@ -65,8 +65,9 @@
}
.list {
display: flex;
margin-bottom: 2em;
h5 {
margin-bottom: 2em;
// margin-bottom: 2em;
}
.listLable {
flex: 0 0 25%;
......@@ -80,6 +81,7 @@
.label {
flex: 0.2;
padding: 0 16px;
color: #00b37a;
background: linear-gradient(270deg, #ffffff 0%, #daf2e7 100%);
}
.text {
......@@ -174,3 +176,12 @@
}
}
}
.box{
:global {
.ant-table-expanded-row-level-1 .ant-table-cell {
padding: 0px !important;
background-color: #ffffff;
}
}
}
......@@ -6,76 +6,119 @@ import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god';
import EyePreview from '@/components/EyePreview'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { tableListSchema } from '../schema'
import { QueryListSchema } from '../schema'
import StatusTag from '@/components/StatusTag';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api';
const QueryList = () => {
const ref = useRef<any>({});
//表头
const columns: ColumnType<any>[] = [{
title: '需求单号/摘要',
dataIndex: 'No',
title: '合同编号/摘要',
dataIndex: 'contractNo',
align: 'center',
render: (text, record) =>
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
url={`/memberCenter/contract/manage/QueryList/QueryListdetails?contractId=${record.id}`}
>
{text}
</EyePreview>
<p>{record.name}</p>
<p>{record.contractAbstract}</p>
</div>
}, {
title: '投标编号',
dataIndex: 'number',
title: '合同生效/失效时间',
dataIndex: 'startTime',
align: 'center',
render: (text, record) =>
<div>
<p>{text}</p>
<p>{record.endTime}</p>
</div>
}, {
title: '中标会员',
dataIndex: 'memberName',
title: '合同乙方',
dataIndex: 'partyBName',
align: 'center',
},
{
title: '中标通知时间',
dataIndex: 'time',
title: '合同总金额',
dataIndex: 'totalAmount',
align: 'center',
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '中标金额',
dataIndex: 'Price',
title: '对应单据/寻源类型',
dataIndex: 'sourceNo',
align: 'center',
render: (text, record) => {
let sourceTypeList = [
"",
"采购询价",
"采购招标"
]
return (
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
<p>{sourceTypeList[record.sourceType]}</p>
</div>
)
}
},
{
title: '外部状态',
dataIndex: 'status',
dataIndex: 'outerStatus',
align: 'center',
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
render: (text, record) => {
// let outerStatusList: any = [
// { label: '所有状态', type: 'success' },
// { label: '待提交乙方签订合同', type: 'success' },
// { label: '待乙方签订合同', type: 'success' },
// { label: '乙方不同意签订合同', type: 'success' },
// { label: '待甲方签订合同', type: 'success' },
// { label: '甲方不同意签订合同', type: 'success' },
// { label: '已完成签约', type: 'success' },
// { label: '已作废', type: 'warning' },
// { label: '已作废', type: 'warning' },
// { label: '已作废', type: 'danger' },
// ]
return (
<StatusTag type={title[text].type} title={title[text].name} />
<StatusTag type="warning" title={record.outerStatusName} />
)
}
},
{
title: '内部状态',
dataIndex: 'insidestatus',
dataIndex: 'innerStatus',
align: 'center',
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
render: (text, record) => {
// let innerStatusList: any = [
// { label: '所有状态', type: 'danger' },
// { label: '待提交乙方签订合同', type: 'danger' },
// { label: '待乙方签订合同', type: 'danger' },
// { label: '待提交审核合同', type: 'danger' },
// { label: '待审核合同(一级)', type: 'danger' },
// { label: '待审核合同(二级)', type: 'danger' },
// { label: '合同审核不通过(一级)', type: 'danger' },
// { label: '合同审核通过(二级)', type: 'danger' },
// { label: '合同审核不通过(二级)', type: 'danger' },
// { label: '同意签订合同', type: 'danger' },
// { label: '不同意签订合同', type: 'danger' },
// ]
return (
<div>
<span style={statuStyle.point}> </span>
<span>{title[text].name}</span>
<span>{record.innerStatusName}</span>
</div>
)
}
......@@ -83,50 +126,29 @@ const QueryList = () => {
title: '操作',
dataIndex: 'state',
align: 'center',
render: (record) => {
console.log(record)
render: (text, record) => {
return (
<span style={statuStyle.success}>创建采购招标合同</span>
<div>
{
record.outerStatus == 6 ? <span style={{ color: '#00B37A', marginRight: 20 }}>合同变更</span> : <span> </span>
}
<span style={{ color: '#00B37A' }}>作废</span>
</div>
)
}
}]
// 列表数据
const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数
return new Promise((resolve, reject) => {
let data = {
totalCount: 1,
data: [
{
id: '1',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
},
{
id: '2',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
}
]
}
resolve(data)
PublicApi.getContractManagePageList({
...params,
innerStatus: params.innerStatus || 0,
outerStatus: params.outerStatus || 0,
}).then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
}
return (
......@@ -142,7 +164,7 @@ const QueryList = () => {
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
schema: QueryListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
......
import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, Button, Space } from 'antd'
import { history } from 'umi'
import statuStyle from '../../common/colorTag'
import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god';
import EyePreview from '@/components/EyePreview'
import { FORM_FILTER_PATH } from '@/formSchema/const';
import StatusTag from '@/components/StatusTag';
import { addListSchema } from '../schema'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api';
import { PlusCircleOutlined } from '@ant-design/icons'
const addList = () => {
const ref = useRef<any>({});
//表头
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
const columns: ColumnType<any>[] = [{
title: '合同编号/摘要',
dataIndex: 'contractNo',
align: 'center',
render: (text, record) =>
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails?contractId=${record.id}`}
>
{text}
</EyePreview>
<p>{record.contractAbstract}</p>
</div>
}, {
title: '合同生效/失效时间',
dataIndex: 'startTime',
align: 'center',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
render: (text, record) =>
<div>
<p>{text}</p>
<p>{record.endTime}</p>
</div>
}, {
title: '合同乙方',
dataIndex: 'partyBName',
align: 'center',
},
{
title: '合同总金额',
dataIndex: 'totalAmount',
align: 'center',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '对应单据/寻源类型',
dataIndex: 'sourceNo',
align: 'center',
filters: [
{ text: '采购询价', value: 1 },
{ text: '采购招标', value: 2 },
{ text: '采购竞价', value: 3 },
],
render: (text, record) => {
let sourceTypeList = [
"",
"采购询价",
"采购招标"
]
return (
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
<p>{sourceTypeList[record.sourceType]}</p>
</div>
)
}
},
{
title: '外部状态',
dataIndex: 'outerStatus',
align: 'center',
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text, record) => {
return (
<StatusTag type="warning" title={record.outerStatusName} />
)
}
},
{
title: '内部状态',
dataIndex: 'innerStatus',
align: 'center',
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text, record) => {
return (
<div>
<span style={statuStyle.point}> </span>
<span>{record.innerStatusName}</span>
</div>
)
}
}, {
title: '操作',
dataIndex: 'state',
align: 'center',
render: (text, record) => {
return (
<div>
<span style={{ color: '#00B37A' }}>修改</span>
</div>
)
}
}]
// 列表数据
const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数
return new Promise((resolve, reject) => {
PublicApi.getContractManagePageToBeAdd({
...params,
}).then(res => {
resolve(res.data)
})
})
}
const rowSelection: any = {
selectedRowKeys: selectedRowKeys,
onChange: (selectedRowKeys: any, selectedRows: any) => {
setSelectedRowKeys(selectedRowKeys)
setSelectRow(selectedRows)
}
};
return (
<PageHeaderWrapper>
<Card>
<StandardTable
tableProps={{
rowKey: 'id',
}}
columns={columns}
currentRef={ref}
rowSelection={rowSelection}
fetchTableData={(params: any) => fetchData(params)}
formilyProps={{
ctx: {
inline: false,
schema: addListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'contractNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePickerUnix,
Submit
}
},
layouts: {
order: 2,
span: 24
}
}}
formilyChilds={{
children: <Space>
<Button
icon={<PlusCircleOutlined />}
type='primary'
onClick={() => history.push('/memberCenter/contract/manage/add/addList/contracAdd')}
>
新建
</Button>
</Space>,
layouts: {
span: 8
}
}}
/>
</Card>
</PageHeaderWrapper>
)
}
export default addList
import React, { useState } from 'react'
import { Button, Card, message, Table, Input, Select, DatePicker, Form, Checkbox } from 'antd'
import { ArrayTable } from '@formily/antd-components';
import { Button, Card, Tabs, Table, Input, Select, DatePicker, Form, Checkbox } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import NiceForm from '@/components/NiceForm';
import StatusTag from '@/components/StatusTag';
import styles from './index.less'
import AddressFormItem from '../../components/AddressFormItem';
import { createFormActions } from '@formily/antd';
import {
SaveOutlined,
PlusOutlined,
FileWordFilled
FileWordFilled,
LinkOutlined
} from '@ant-design/icons'
import { addBillSchema } from './schema';
const addSchemaAction = createFormActions();
const { Option } = Select;
const { TextArea } = Input
const { TextArea, Search } = Input
const { TabPane } = Tabs;
const { RangePicker } = DatePicker;
const Add: React.FC<{}> = (props) => {
const [attrValueForm] = Form.useForm();
const [formValue, setFormValue] = useState<any>({})
const [checkNick, setCheckNick] = useState(true);
// ArrayTable自定义渲染
const renderListTableRemove = (index: number) => (
<>
<a
style={{
color: '#ff4d4f',
}}
>
删除
</a>
</>
);
const OuterStatus = (
<StatusTag type="primary" title='外部状态' />
);
const InnerStatus = (
<p>111111</p>
);
const columns: any = [
{ title: '物料编号/名称', dataIndex: 'name', key: 'name', align: 'center', },
{ title: '规格型号', dataIndex: 'age', key: 'age', align: 'center', },
......@@ -145,7 +122,143 @@ const Add: React.FC<{}> = (props) => {
description: 'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.',
},
];
const onCheckboxChange = (e: { target: { checked: boolean } }) => {
setCheckNick(e.target.checked);
};
/**
* 第一个内容
*/
const Formcontent = () => {
return (
<div>
<Form.Item
label="合同编号"
labelAlign="left"
name="contractNo"
labelCol={{ span: 2 }}
wrapperCol={{ span: 8 }}
rules={[
{
required: true,
message: '请输入合同编号',
},
]}
>
<Input placeholder='请输入合同编号' />
</Form.Item>
<Form.Item
label="合同摘要"
labelAlign="left"
name="contractAbstract"
labelCol={{ span: 2 }}
wrapperCol={{ span: 8 }}
rules={[
{
required: true,
message: '请输入合同摘要',
},
]}
>
<Input placeholder='请输入合同编号' />
</Form.Item>
<Form.Item
label="寻源类型"
labelAlign="left"
name="sourceType"
labelCol={{ span: 2 }}
wrapperCol={{ span: 8 }}
rules={[
{
required: true,
message: '请输入合同摘要',
},
]}
>
<Select>
<Option value="是" key='1'>采购询价</Option>
<Option value="否" key='2'>采购招标</Option>
<Option value="否" key='3'>采购竞价</Option>
</Select>
</Form.Item>
<Form.Item
name="range-picker"
label="合同有效期"
labelAlign="left"
labelCol={{ span: 2 }}
wrapperCol={{ span: 8 }}
rules={
[{
type: 'array' as const, required: true, message: '请选择合同合同有效期'
}]
}
>
<RangePicker style={{ width: '100%' }} />
</Form.Item>
<Form.Item
label="对应单据"
labelAlign="left"
labelCol={{ span: 2 }}
wrapperCol={{ span: 8 }}
>
<Search placeholder="最长60个字符,30个汉字" defaultValue="" readOnly enterButton={<div onClick={() => onSearch()} ><LinkOutlined /> 选择</div>} onSearch={onSearch} />
</Form.Item>
<Form.Item
label="授标会员"
labelAlign="left"
labelCol={{ span: 2 }}
wrapperCol={{ span: 8 }}
>
<Search placeholder="最长60个字符,30个汉字" defaultValue="" readOnly enterButton={<div onClick={() => onSearch()} ><LinkOutlined /> 选择</div>} />
</Form.Item>
<Form.Item
label="授标金额"
labelAlign="left"
labelCol={{ span: 2 }}
wrapperCol={{ span: 8 }}
>
<p>¥ 10000</p>
</Form.Item>
<Form.Item
label="外部状态"
labelAlign="left"
labelCol={{ span: 2 }}
wrapperCol={{ span: 8 }}
>
<p>待提交乙方签订合同</p>
</Form.Item>
<Form.Item
label="内部状态"
labelAlign="left"
labelCol={{ span: 2 }}
wrapperCol={{ span: 8 }}
>
<p>待提交乙方签订合同</p>
</Form.Item>
</div>
)
}
/**
* 第二个内容
*/
const FormList = () => (
<div className={styles.box}>
<div style={{ paddingTop: 12, paddingBottom: 12, }}>
<Button block type='dashed'><PlusOutlined />选择采购物料</Button>
</div>
<Table
columns={columns}
expandable={{
expandedRowRender: record => listItem(record),
}}
dataSource={data}
style={{
width: "100%"
}}
/>
</div>
)
/* 下拉的子元素 */
const listItem = (record) => (
<div className={styles.listItem}>
......@@ -168,24 +281,6 @@ const Add: React.FC<{}> = (props) => {
)
/* 列表 */
const List: any = (
<div className={styles.box}>
<div style={{ paddingTop: 12, paddingBottom: 12, }}>
<Button block type='dashed'><PlusOutlined />选择采购物料</Button>
</div>
<Table
columns={columns}
expandable={{
expandedRowRender: record => listItem(record),
}}
dataSource={data}
style={{
width: "100%"
}}
/>
</div>
)
/* 第三个tab */
const tabcolumns: any = [
{ title: '付款次数', dataIndex: 'name', key: 'name', align: 'center', },
......@@ -265,7 +360,7 @@ const Add: React.FC<{}> = (props) => {
description: 'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.',
},
];
const table: any = (
const table = () => (
<Table
columns={tabcolumns}
dataSource={datas}
......@@ -274,11 +369,8 @@ const Add: React.FC<{}> = (props) => {
}}
/>
)
const onCheckboxChange = (e: { target: { checked: boolean } }) => {
setCheckNick(e.target.checked);
};
/* 第四个tab */
const FromDom = (
const FromDom = () => (
<div
style={{
width: '100%',
......@@ -310,36 +402,58 @@ const Add: React.FC<{}> = (props) => {
</div>
)
/**
* @param name tag标签名
* @param components 显示内容
*/
const TabList = [
{ name: '基本信息', components: Formcontent() },
{ name: '采购物料', components: FormList() },
{ name: '付款计划', components: table() },
{ name: '合同文本', components: FromDom() },
]
/* 显示弹出 */
const onSearch = () => {
// alert(1111111111111)
}
/* 提交*/
const submit = () => {
attrValueForm.validateFields().then(values => {
console.log('====================================');
console.log(values);
console.log('====================================');
}).catch(error => {
console.error(error)
})
}
return (
<PageHeaderWrapper
title="新建合同"
extra={[
<Button key="1" type="primary" icon={<SaveOutlined />} > </Button>
<Button key="1" type="primary" icon={<SaveOutlined />} onClick={() => submit()} > 保存</Button>
]}
>
<Card>
<NiceForm
previewPlaceholder=" "
expressionScope={{
OuterStatus,
InnerStatus,
List,
table,
FromDom,
renderListTableRemove,
}}
components={{
ArrayTable,
AddressFormItem,
}}
effects={($, actions) => {
const { setFieldState } = actions;
}}
<Tabs defaultActiveKey="0" type="card" size="small">
{
TabList.map((item, index) => (
<TabPane tab={item.name} key={index}>
actions={addSchemaAction}
schema={addBillSchema}
/>
<Form
form={attrValueForm}
name="edit_infomation"
layout="horizontal"
labelAlign="left"
initialValues={formValue}
colon={false}
autoComplete="off"
>
{item.components}
</Form>
</TabPane>
))
}
</Tabs>
</Card>
</PageHeaderWrapper>
)
......
This diff is collapsed.
import React, { useRef } from 'react'
import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card } from 'antd';
import statuStyle from '../../common/colorTag'
import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god';
import EyePreview from '@/components/EyePreview'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { tableListSchema } from '../schema'
import { FORM_FILTER_PATH } from '@/formSchema/const';
import StatusTag from '@/components/StatusTag';
import { BidListSchema } from '../schema'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api';
const BiddingList = () => {
const ref = useRef<any>({});
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
//表头
const columns: ColumnType<any>[] = [{
title: '需求单号/摘要',
dataIndex: 'No',
title: '招标编号/项目',
dataIndex: 'inviteBidNO',
align: 'center',
render: (text, record) =>
<div>
<EyePreview
url={`/memberCenter/payandSettle/capitalAccounts/accountLists/detail?id=${record.id}`}
// url={`/memberCenter/payandSettle/capitalAccounts/accountLists/detail?id=${record.id}`}
>
{text}
</EyePreview>
<p>{record.name}</p>
<p>{record.inviteBidAbstract}</p>
</div>
}, {
title: '投标编号',
dataIndex: 'number',
dataIndex: 'bidNo',
align: 'center',
}, {
},
{
title: '中标会员',
dataIndex: 'memberName',
dataIndex: 'bidWinnerName',
align: 'center',
},
{
title: '中标通知时间',
dataIndex: 'time',
dataIndex: 'bidWinnerNoticeTime',
align: 'center',
sorter: {
compare: (a, b) => a.bidWinnerNoticeTime - b.bidWinnerNoticeTime,
multiple: 1,
},
},
{
title: '中标金额',
dataIndex: 'Price',
dataIndex: 'bidWinnerAmount',
align: 'center',
sorter: {
compare: (a, b) => a.bidWinnerAmount - b.bidWinnerAmount,
multiple: 1,
},
},
{
title: '外部状态',
dataIndex: 'status',
dataIndex: 'outerStatus',
align: 'center',
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
return (
<StatusTag type={title[text].type} title={title[text].name} />
<StatusTag type="success" title={text} />
)
}
},
{
title: '内部状态',
dataIndex: 'insidestatus',
dataIndex: 'innerStatus',
align: 'center',
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
return (
<div>
<span style={statuStyle.point}> </span>
<span>{title[text].name}</span>
<span>{text}</span>
</div>
)
}
......@@ -95,66 +106,21 @@ const BiddingList = () => {
const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数
return new Promise((resolve, reject) => {
let data = {
totalCount: 1,
data: [
{
id: '1',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
},
{
id: '2',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
},
{
id: '1',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
},
{
id: '3',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
},
]
}
resolve(data)
PublicApi.getContractPurchaseInviteBidPageToBeCreate({
...params,
}).then(res => {
resolve(res.data)
})
})
}
const rowSelection: any = {
selectedRowKeys: selectedRowKeys,
onChange: (selectedRowKeys: any, selectedRows: any) => {
setSelectedRowKeys(selectedRowKeys)
setSelectRow(selectedRows)
}
};
return (
<PageHeaderWrapper>
<Card>
......@@ -164,16 +130,17 @@ const BiddingList = () => {
}}
columns={columns}
currentRef={ref}
rowSelection={rowSelection}
fetchTableData={(params: any) => fetchData(params)}
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
schema: BidListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
'inviteBidNO',
FORM_FILTER_PATH,
);
},
......
......@@ -8,11 +8,12 @@ import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god';
import EyePreview from '@/components/EyePreview'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { tableListSchema } from '../schema'
import { examineSchema } from '../schema'
import StatusTag from '@/components/StatusTag';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api';
const Examine = () => {
const ref = useRef<any>({});
......@@ -20,66 +21,105 @@ const Examine = () => {
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
//表头
const columns: ColumnType<any>[] = [{
title: '需求单号/摘要',
dataIndex: 'No',
title: '合同编号/摘要',
dataIndex: 'contractNo',
align: 'center',
render: (text, record) =>
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
url={`/memberCenter/contract/manage/QueryList/QueryListdetails?contractId=${record.id}`}
>
{text}
</EyePreview>
<p>{record.name}</p>
<p>{record.contractAbstract}</p>
</div>
}, {
title: '投标编号',
dataIndex: 'number',
title: '合同生效/失效时间',
dataIndex: 'startTime',
align: 'center',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
render: (text, record) =>
<div>
<p>{text}</p>
<p>{record.endTime}</p>
</div>
}, {
title: '中标会员',
dataIndex: 'memberName',
title: '合同乙方',
dataIndex: 'partyBName',
align: 'center',
},
{
title: '中标通知时间',
dataIndex: 'time',
title: '合同总金额',
dataIndex: 'totalAmount',
align: 'center',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '中标金额',
dataIndex: 'Price',
title: '对应单据/寻源类型',
dataIndex: 'sourceNo',
align: 'center',
filters: [
{ text: '采购询价', value: 1 },
{ text: '采购招标', value: 2 },
{ text: '采购竞价', value: 3 },
],
render: (text, record) => {
let sourceTypeList = [
"",
"采购询价",
"采购招标"
]
return (
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
<p>{sourceTypeList[record.sourceType]}</p>
</div>
)
}
},
{
title: '外部状态',
dataIndex: 'status',
dataIndex: 'outerStatus',
align: 'center',
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text, record) => {
return (
<StatusTag type={title[text].type} title={title[text].name} />
<StatusTag type="warning" title={record.outerStatusName} />
)
}
},
{
title: '内部状态',
dataIndex: 'insidestatus',
dataIndex: 'innerStatus',
align: 'center',
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text, record) => {
return (
<div>
<span style={statuStyle.point}> </span>
<span>{title[text].name}</span>
<span>{record.innerStatusName}</span>
</div>
)
}
......@@ -87,59 +127,25 @@ const Examine = () => {
title: '操作',
dataIndex: 'state',
align: 'center',
render: (record) => {
console.log(record)
render: (text, record) => {
return (
<span style={statuStyle.success}>创建采购招标合同</span>
<div>
<span style={{ color: '#00B37A' }}>提交审核</span>
</div>
)
}
}]
const handleSubmitBatch = async () => {
}
const controllerBtns = (
<Space>
<Button onClick={handleSubmitBatch}>
批量审核通过
</Button>
</Space>
);
// 列表数据
const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数
return new Promise((resolve, reject) => {
let data = {
totalCount: 1,
data: [
{
id: '1',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
},
{
id: '2',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
}
]
}
resolve(data)
PublicApi.getContractManagePageToBeSubmitExamine({
...params,
}).then(res => {
resolve(res.data)
})
})
}
......@@ -164,12 +170,12 @@ const Examine = () => {
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
schema: examineSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
'contractNo',
FORM_FILTER_PATH,
);
},
......
import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, Space, Button } from 'antd';
......@@ -8,11 +7,12 @@ import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god';
import EyePreview from '@/components/EyePreview'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { tableListSchema } from '../schema'
import { examineSchema } from '../schema'
import StatusTag from '@/components/StatusTag';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api';
const Levelexamine = () => {
const ref = useRef<any>({});
......@@ -20,66 +20,105 @@ const Levelexamine = () => {
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
//表头
const columns: ColumnType<any>[] = [{
title: '需求单号/摘要',
dataIndex: 'No',
title: '合同编号/摘要',
dataIndex: 'contractNo',
align: 'center',
render: (text, record) =>
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
url={`/memberCenter/contract/manage/QueryList/QueryListdetails?contractId=${record.id}`}
>
{text}
</EyePreview>
<p>{record.name}</p>
<p>{record.contractAbstract}</p>
</div>
}, {
title: '投标编号',
dataIndex: 'number',
title: '合同生效/失效时间',
dataIndex: 'startTime',
align: 'center',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
render: (text, record) =>
<div>
<p>{text}</p>
<p>{record.endTime}</p>
</div>
}, {
title: '中标会员',
dataIndex: 'memberName',
title: '合同乙方',
dataIndex: 'partyBName',
align: 'center',
},
{
title: '中标通知时间',
dataIndex: 'time',
title: '合同总金额',
dataIndex: 'totalAmount',
align: 'center',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '中标金额',
dataIndex: 'Price',
title: '对应单据/寻源类型',
dataIndex: 'sourceNo',
align: 'center',
filters: [
{ text: '采购询价', value: 1 },
{ text: '采购招标', value: 2 },
{ text: '采购竞价', value: 3 },
],
render: (text, record) => {
let sourceTypeList = [
"",
"采购询价",
"采购招标"
]
return (
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
<p>{sourceTypeList[record.sourceType]}</p>
</div>
)
}
},
{
title: '外部状态',
dataIndex: 'status',
dataIndex: 'outerStatus',
align: 'center',
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text, record) => {
return (
<StatusTag type={title[text].type} title={title[text].name} />
<StatusTag type="warning" title={record.outerStatusName} />
)
}
},
{
title: '内部状态',
dataIndex: 'insidestatus',
dataIndex: 'innerStatus',
align: 'center',
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text, record) => {
return (
<div>
<span style={statuStyle.point}> </span>
<span>{title[text].name}</span>
<span>{record.innerStatusName}</span>
</div>
)
}
......@@ -87,59 +126,25 @@ const Levelexamine = () => {
title: '操作',
dataIndex: 'state',
align: 'center',
render: (record) => {
console.log(record)
render: (text, record) => {
return (
<span style={statuStyle.success}>创建采购招标合同</span>
<div>
<span style={{ color: '#00B37A' }}>提交审核</span>
</div>
)
}
}]
const handleSubmitBatch = async () => {
}
const controllerBtns = (
<Space>
<Button onClick={handleSubmitBatch}>
批量审核通过
</Button>
</Space>
);
// 列表数据
const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数
return new Promise((resolve, reject) => {
let data = {
totalCount: 1,
data: [
{
id: '1',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
},
{
id: '2',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
}
]
}
resolve(data)
PublicApi.getContractManagePageToBeExamineStepOne({
...params,
}).then(res => {
resolve(res.data)
})
})
}
......@@ -164,12 +169,12 @@ const Levelexamine = () => {
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
schema: examineSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
'contractNo',
FORM_FILTER_PATH,
);
},
......
import React, { useRef } from 'react'
import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card } from 'antd';
import statuStyle from '../../common/colorTag'
......@@ -6,76 +6,97 @@ import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god';
import EyePreview from '@/components/EyePreview'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { tableListSchema } from '../schema'
import StatusTag from '@/components/StatusTag';
import { purchaseSchema } from '../schema'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api';
import { history } from 'umi'
const PurchaseList = () => {
const ref = useRef<any>({});
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
//表头
const columns: ColumnType<any>[] = [{
title: '需求单号/摘要',
dataIndex: 'No',
dataIndex: 'demandNO',
align: 'center',
render: (text, record) =>
<div>
<EyePreview
url={`/memberCenter/payandSettle/capitalAccounts/accountLists/detail?id=${record.id}`}
// url={`/memberCenter/payandSettle/capitalAccounts/accountLists/detail?id=${record.id}`}
>
{text}
</EyePreview>
<p>{record.name}</p>
<p>{record.demandAbstract}</p>
</div>
}, {
title: '投标编号',
dataIndex: 'number',
title: '需求发布时间',
dataIndex: 'demandPublishTime',
align: 'center',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
}, {
title: '标会员',
dataIndex: 'memberName',
title: '标会员',
dataIndex: 'awardName',
align: 'center',
},
{
title: '中标通知时间',
dataIndex: 'time',
title: '授标时间',
dataIndex: 'awardTime',
align: 'center',
sorter: {
compare: (a, b) => a.awardTime - b.awardTime,
multiple: 1,
},
},
{
title: '标金额',
dataIndex: 'Price',
title: '标金额',
dataIndex: 'awardAmount',
align: 'center',
sorter: {
compare: (a, b) => a.awardAmount - b.awardAmount,
multiple: 1,
},
render: (text) => {
return (
<div>
{text}
</div>
)
}
},
{
title: '外部状态',
dataIndex: 'status',
dataIndex: 'outerStatus',
align: 'center',
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
return (
<StatusTag type={title[text].type} title={title[text].name} />
<StatusTag type="success" title={text} />
)
}
},
{
title: '内部状态',
dataIndex: 'insidestatus',
dataIndex: 'innerStatus',
align: 'center',
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
return (
<div>
<span style={statuStyle.point}> </span>
<span>{title[text].name}</span>
<span>{text}</span>
</div>
)
}
......@@ -85,49 +106,30 @@ const PurchaseList = () => {
align: 'center',
render: (record) => {
return (
<span style={statuStyle.success}>创建采购招标合同</span>
<span style={{ color: '#00B37A' }} onClick={() => history.push('/memberCenter/contract/manage/add/addList/contracAdd')} >创建采购询价合同</span>
)
}
}]
const rowSelection: any = {
selectedRowKeys: selectedRowKeys,
onChange: (selectedRowKeys: any, selectedRows: any) => {
setSelectedRowKeys(selectedRowKeys)
setSelectRow(selectedRows)
}
};
// 列表数据
const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数
return new Promise((resolve, reject) => {
let data = {
totalCount: 1,
data: [
{
id: '1',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
},
{
id: '2',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
}
]
}
resolve(data)
PublicApi.getContractPurchaseInquiryPageToBeCreate({
...params,
}).then(res => {
resolve(res.data)
})
})
}
return (
<PageHeaderWrapper>
<Card>
......@@ -137,16 +139,17 @@ const PurchaseList = () => {
}}
columns={columns}
currentRef={ref}
rowSelection={rowSelection}
fetchTableData={(params: any) => fetchData(params)}
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
schema: purchaseSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
'demandNO',
FORM_FILTER_PATH,
);
},
......
This diff is collapsed.
import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, Space, Button } from 'antd';
......@@ -8,11 +7,12 @@ import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god';
import EyePreview from '@/components/EyePreview'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { tableListSchema } from '../schema'
import { examineSchema } from '../schema'
import StatusTag from '@/components/StatusTag';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api';
const Secondaryexamine = () => {
const ref = useRef<any>({});
......@@ -20,66 +20,105 @@ const Secondaryexamine = () => {
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
//表头
const columns: ColumnType<any>[] = [{
title: '需求单号/摘要',
dataIndex: 'No',
title: '合同编号/摘要',
dataIndex: 'contractNo',
align: 'center',
render: (text, record) =>
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
url={`/memberCenter/contract/manage/QueryList/QueryListdetails?contractId=${record.id}`}
>
{text}
</EyePreview>
<p>{record.name}</p>
<p>{record.contractAbstract}</p>
</div>
}, {
title: '投标编号',
dataIndex: 'number',
title: '合同生效/失效时间',
dataIndex: 'startTime',
align: 'center',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
render: (text, record) =>
<div>
<p>{text}</p>
<p>{record.endTime}</p>
</div>
}, {
title: '中标会员',
dataIndex: 'memberName',
title: '合同乙方',
dataIndex: 'partyBName',
align: 'center',
},
{
title: '中标通知时间',
dataIndex: 'time',
title: '合同总金额',
dataIndex: 'totalAmount',
align: 'center',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '中标金额',
dataIndex: 'Price',
title: '对应单据/寻源类型',
dataIndex: 'sourceNo',
align: 'center',
filters: [
{ text: '采购询价', value: 1 },
{ text: '采购招标', value: 2 },
{ text: '采购竞价', value: 3 },
],
render: (text, record) => {
let sourceTypeList = [
"",
"采购询价",
"采购招标"
]
return (
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
<p>{sourceTypeList[record.sourceType]}</p>
</div>
)
}
},
{
title: '外部状态',
dataIndex: 'status',
dataIndex: 'outerStatus',
align: 'center',
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text, record) => {
return (
<StatusTag type={title[text].type} title={title[text].name} />
<StatusTag type="warning" title={record.outerStatusName} />
)
}
},
{
title: '内部状态',
dataIndex: 'insidestatus',
dataIndex: 'innerStatus',
align: 'center',
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text, record) => {
return (
<div>
<span style={statuStyle.point}> </span>
<span>{title[text].name}</span>
<span>{record.innerStatusName}</span>
</div>
)
}
......@@ -87,59 +126,25 @@ const Secondaryexamine = () => {
title: '操作',
dataIndex: 'state',
align: 'center',
render: (record) => {
console.log(record)
render: (text, record) => {
return (
<span style={statuStyle.success}>创建采购招标合同</span>
<div>
<span style={{ color: '#00B37A' }}>提交审核</span>
</div>
)
}
}]
const handleSubmitBatch = async () => {
}
const controllerBtns = (
<Space>
<Button onClick={handleSubmitBatch}>
批量审核通过
</Button>
</Space>
);
// 列表数据
const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数
return new Promise((resolve, reject) => {
let data = {
totalCount: 1,
data: [
{
id: '1',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
},
{
id: '2',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
}
]
}
resolve(data)
PublicApi.getContractManagePageToBeExamineStepTwo({
...params,
}).then(res => {
resolve(res.data)
})
})
}
......@@ -164,12 +169,12 @@ const Secondaryexamine = () => {
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
schema: examineSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
'contractNo',
FORM_FILTER_PATH,
);
},
......
import React, { useRef } from 'react'
import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card } from 'antd';
import { Card, Space, Button } from 'antd';
import statuStyle from '../../common/colorTag'
import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god';
import EyePreview from '@/components/EyePreview'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { tableListSchema } from '../schema'
import { examineSchema } from '../schema'
import StatusTag from '@/components/StatusTag';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api';
const Signacontract = () => {
const ref = useRef<any>({});
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
//表头
const columns: ColumnType<any>[] = [{
title: '需求单号/摘要',
dataIndex: 'No',
title: '合同编号/摘要',
dataIndex: 'contractNo',
align: 'center',
render: (text, record) =>
<div>
<EyePreview
url={`/memberCenter/payandSettle/capitalAccounts/accountLists/detail?id=${record.id}`}
url={`/memberCenter/contract/manage/QueryList/QueryListdetails?contractId=${record.id}`}
>
{text}
</EyePreview>
<p>{record.name}</p>
<p>{record.contractAbstract}</p>
</div>
}, {
title: '投标编号',
dataIndex: 'number',
title: '合同生效/失效时间',
dataIndex: 'startTime',
align: 'center',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
render: (text, record) =>
<div>
<p>{text}</p>
<p>{record.endTime}</p>
</div>
}, {
title: '中标会员',
dataIndex: 'memberName',
title: '合同乙方',
dataIndex: 'partyBName',
align: 'center',
},
{
title: '中标通知时间',
dataIndex: 'time',
title: '合同总金额',
dataIndex: 'totalAmount',
align: 'center',
defaultSortOrder: 'descend',
sorter: (a, b) => a.age - b.age,
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '中标金额',
dataIndex: 'Price',
title: '对应单据/寻源类型',
dataIndex: 'sourceNo',
align: 'center',
filters: [
{ text: '采购询价', value: 1 },
{ text: '采购招标', value: 2 },
{ text: '采购竞价', value: 3 },
],
render: (text, record) => {
let sourceTypeList = [
"",
"采购询价",
"采购招标"
]
return (
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
<p>{sourceTypeList[record.sourceType]}</p>
</div>
)
}
},
{
title: '外部状态',
dataIndex: 'status',
dataIndex: 'outerStatus',
align: 'center',
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text, record) => {
return (
<StatusTag type={title[text].type} title={title[text].name} />
<StatusTag type="warning" title={record.outerStatusName} />
)
}
},
{
title: '内部状态',
dataIndex: 'insidestatus',
dataIndex: 'innerStatus',
align: 'center',
render: (text) => {
let title: any = [
{},
{ name: '已完成', type: "success" },
{ name: '未完成', type: "primary" },
]
filters: [
{ text: 'Joe', value: 'Joe' },
{ text: 'Jim', value: 'Jim' },
],
render: (text, record) => {
return (
<div>
<span style={statuStyle.point}> </span>
<span>{title[text].name}</span>
<span>{record.innerStatusName}</span>
</div>
)
}
......@@ -87,82 +126,79 @@ const Signacontract = () => {
title: '操作',
dataIndex: 'state',
align: 'center',
render: (record) => {
render: (text, record) => {
return (
<span style={statuStyle.success}>创建采购招标合同</span>
<div>
<span style={{ color: '#00B37A' }}>提交审核</span>
</div>
)
}
}]
// 列表数据
const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数
return new Promise((resolve, reject) => {
let data = {
totalCount: 1,
data: [
{
id: '1',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
},
{
id: '2',
No: 'ZPTY12',
name: '进口头层黄牛皮荔枝纹',
number: 'ZPTY12',
memberName: '温州龙昌手袋有限公司',
time: '2020-12-25 09:00',
Price: '¥50,000.00',
status: 1,
insidestatus: 1,
addText: '创建采购招标合同',
state: '',
}
]
}
resolve(data)
PublicApi.getContractManagePageToBeSign({
...params,
}).then(res => {
resolve(res.data)
})
})
}
const rowSelection: any = {
selectedRowKeys: selectedRowKeys,
onChange: (selectedRowKeys: any, selectedRows: any) => {
setSelectedRowKeys(selectedRowKeys)
setSelectRow(selectedRows)
}
};
return (
<PageHeaderWrapper>
<Card>
<StandardTable
tableProps={{
rowKey: 'id',
}}
columns={columns}
currentRef={ref}
fetchTableData={(params: any) => fetchData(params)}
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePickerUnix,
Submit
}
<Card>
<StandardTable
fetchTableData={params => fetchData(params)}
rowSelection={rowSelection}
columns={columns}
currentRef={ref}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
ctx: {
inline: false,
schema: examineSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'contractNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePickerUnix,
Submit
}
}}
/>
</Card>
</PageHeaderWrapper>
},
layouts: {
order: 2,
span: 24
}
}}
formilyChilds={{
children: <Space>
<Button >批量提交审核</Button>
</Space>,
layouts: {
span: 8
}
}}
/>
</Card>
)
}
......
......@@ -24,7 +24,7 @@ export interface RelateProductDrawerProps {
const formActions = createFormActions();
export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
export const RelevanceTenderProduct: React.FC<RelateProductDrawerProps> = ({
type = 'checkbox',
title,
schemaAction,
......@@ -34,7 +34,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
...restProps
}) => {
const { visible, setVisible } = useModalTable({type, customKey: 'id'})
const { visible, setVisible } = useModalTable({ type, customKey: 'id' })
const [childVisible, setChildVisible] = useState<boolean>(false)
const [selectRow, setSelectRow] = useState<any[]>([]) // 子级抽屉选择的行数据
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
......@@ -49,7 +49,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
}, [])
// 注册virtual组件 一般用于布局
registerVirtualBox("CustomLayout", ({props, schema}) => {
registerVirtualBox("CustomLayout", ({ props, schema }) => {
const {
showStar = false,
......@@ -60,7 +60,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
return (
<div style={{ border: "1px solid #DAF2E7", marginBottom: 16 }}>
<p style={{paddingLeft: 8, fontSize: 12, backgroundColor: headerBackgroundColor, color: headerColor}}>{props['title']}<span style={{color: 'red'}}>{showStar?'*':null}</span></p>
<p style={{ paddingLeft: 8, fontSize: 12, backgroundColor: headerBackgroundColor, color: headerColor }}>{props['title']}<span style={{ color: 'red' }}>{showStar ? '*' : null}</span></p>
<div className={style['card-list']}>
{
whetherSelect ?
......@@ -82,7 +82,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
</Row>
</Col>
</Row>
}
}
</div>
</div>
);
......@@ -130,7 +130,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
// setVisible(false)
formActions.validate().then((res) => {
console.log(res)
if(res['errors']['length'] === 0) {
if (res['errors']['length'] === 0) {
formActions.submit(v => console.log(v))
}
})
......@@ -141,7 +141,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
textAlign: 'right',
}}
>
<Button onClick={()=>setVisible(false)} style={{ marginRight: 8 }}>
<Button onClick={() => setVisible(false)} style={{ marginRight: 8 }}>
取消
</Button>
<Button onClick={confirmSubmit} type="primary">
......@@ -180,7 +180,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
dataIdList={dataIdList}
footer={footer}
onClose={() => setVisible(false)}
isForm = {true}
isForm={true}
actions={formActions}
// effects={($, ctx) => {
// $('onFormMount').subscribe(() => {
......@@ -201,7 +201,7 @@ export const RelevanceTenderProduct:React.FC<RelateProductDrawerProps> = ({
{
ctx: {
schema: productSearch,
components: { ModalSearch: Search, Submit } ,
components: { ModalSearch: Search, Submit },
effects: ($, actions) => {
actions.reset()
useStateFilterSearchLinkageEffect(
......
......@@ -12,6 +12,7 @@ import * as AfterService from './AfterServiceApi'
import * as EnhanceApi from './EnhanceApi';
import * as ReportApi from './ReportApi';
import * as PurchaseApi from './PurchaseApi';
import * as ContractApi from './ContractApi';
/**
* 可在这里写入自定义的接口
......@@ -36,4 +37,5 @@ export const PublicApi = {
...EnhanceApi,
...ReportApi,
...PurchaseApi,
...ContractApi
}
......@@ -13,6 +13,7 @@ const tokenList = [
{ name: 'Enhance', token: '594a7e7ff17f6f40fb9fb726c1da9a3f282a926a8d386eb6cbfd668a3f75f251', categoryIds: [0], }, // 加工服务
{ name: 'Report', token: '69ee5a79363c763ded1a2eb42952a5181ffcdfc5ffb93b6e1e22ac92a25b38bf', categoryIds: [0], }, // 报表服务
{ name: 'Purchase', token: '425043481f605f76064951c72d26c412e5ba1baf2d70158300f560ef58358f41', categoryIds: [0], }, // 采购服务
{ name: 'Contract', token: 'b376fc4757c974c0d0c635881b732d97062e3ad41d6f00a003d1e249c91789cf', categoryIds: [0], } // 合同能力
// { name: 'Purchase', token: 'a09e2b66e00079df9881fc660eb17db0265e33362c13f03f2003ba81d26f49d8', categoryIds: [0], }, // 采购服务
]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment