Commit fae112f6 authored by Bill's avatar Bill

Merge branch 'dev-srm' of 10.0.0.22:lingxi/lingxi-business-paltform into dev-srm

parents 2f1affea f4603282
......@@ -12,13 +12,13 @@ export enum DATE_SELECT_TYPE {
}
const getPrevTime = (num, flag) => {
return moment().subtract(num, flag).valueOf()
return moment().startOf('day').subtract(num, flag).valueOf()
}
const DateSelect = (props) => {
const { value, mutators } = props
const todayStartTime = moment().startOf('day').format('x')
const nowTime = moment().format('x').valueOf()
const nowTime = moment().endOf('day').format('x')
const dateMemo = useMemo(() => [
{ label: '今天', value: `${todayStartTime},${nowTime}`},
{ label: '一周内', value: `${getPrevTime(1, 'week')},${nowTime}`},
......
......@@ -83,8 +83,8 @@ const DetailedList: React.FC<Iprops> = ({
<div className='ant-card-head'>
<div className='ant-card-head-wrapper'>
<div className='ant-card-head-wrapper'>
请款统计
</div>
合同请款情况统计
</div>
</div>
</div>
<div className='ant-card-body'>
......
......@@ -59,6 +59,10 @@ const coordinationList = () => {
title: '合同总金额',
dataIndex: 'totalAmount',
align: 'left',
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '对应单据/寻源类型',
......
......@@ -70,7 +70,7 @@ const Details = (props: any) => {
let { basics, outerTaskStepList, innerTaskStepList, payPlanList, contractText } = res.data
let contractAbstract = res.data.basics.contractAbstract;
setsignatureLogId(basics.signatureLogId)
const basicInfo = {
const basicInfo: any = {
col1: [
{ label: '合同编号', extra: basics.contractNo ? basics.contractNo : '', url: `/memberCenter/contract/manage/QueryList/QueryListdetails?contractId=${contractId}` },
{ label: '合同摘要', extra: basics.contractAbstract ? basics.contractAbstract : '' },
......@@ -81,12 +81,30 @@ const Details = (props: any) => {
{ label: '寻源类型', extra: basics.sourceTypeName ? basics.sourceTypeName : '' },
{ label: '对应单据', extra: basics.sourceNo ? basics.sourceNo : '' },
{ label: '授标会员', extra: basics.partyAName ? basics.partyAName : '' },
{ label: '授标金额', extra: basics.totalAmount ? basics.totalAmount : '' },
{ label: '授标金额', extra: basics.totalAmount ? `¥${basics.totalAmount}` : '' },
],
col3: [
{ label: '合同有效期:', extra: `${basics.startTime}${basics.endTime}` },
],
}
if (basics.sourceId) {
switch (basics.sourceType) {
case 1: {
if (basics.turn && basics.sourceId) {
basicInfo.col2[1].url = `/memberCenter/procurementAbility/confirmOffer/offerInquire/preview?id=${basics.sourceId}&turn=${basics.turn}`
}
break;
};
case 2: {
basicInfo.col2[1].url = `/memberCenter/procurementAbility/callForBids/callForBidsSearch/detail?id=${basics.sourceId}`
break;
};
case 3: {
basicInfo.col2[1].url = `/memberCenter/procurementAbility/purchaseBid/search/detail?id=${basics.sourceId}&number=${basics.sourceNo}`
break;
};
}
}
setbasicInfo(basicInfo)
setouterTaskStepList(outerTaskStepList)
setinnerTaskStepList(innerTaskStepList)
......
......@@ -19,7 +19,9 @@ import { history } from 'umi';
const Sign = () => {
const ref = useRef<any>({});
const getdate = (time) => {
return new Date(Date.parse(time.replace(/-/g, "/"))).getTime() / 1000;
}
//表头
const columns: ColumnType<any>[] = [{
title: '合同编号/摘要',
......@@ -39,7 +41,7 @@ const Sign = () => {
dataIndex: 'startTime',
align: 'left',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
compare: (a, b) => getdate(a.startTime) - getdate(b.startTime),
multiple: 1,
},
render: (text, record) =>
......
......@@ -64,6 +64,10 @@ const pageToBeExamineOne = () => {
title: '合同总金额',
dataIndex: 'totalAmount',
align: 'left',
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '对应单据/寻源类型',
......
......@@ -63,6 +63,10 @@ const pageToBeExamineTwo = () => {
title: '合同总金额',
dataIndex: 'totalAmount',
align: 'left',
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '对应单据/寻源类型',
......
......@@ -61,6 +61,10 @@ const pageToBeSubmitExamine = () => {
title: '合同总金额',
dataIndex: 'totalAmount',
align: 'left',
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '对应单据/寻源类型',
......
......@@ -23,6 +23,9 @@ const Sign = () => {
const [isPass, setIsAllMember] = useState()
const [Visible, setIsModalVisible] = useState<boolean>(false)
const [id, setid] = useState("")
const getdate = (time) => {
return new Date(Date.parse(time.replace(/-/g, "/"))).getTime() / 1000;
}
//表头
const columns: ColumnType<any>[] = [{
title: '合同编号/摘要',
......@@ -42,7 +45,7 @@ const Sign = () => {
dataIndex: 'startTime',
align: 'left',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
compare: (a, b) => getdate(a.startTime) - getdate(b.startTime),
multiple: 1,
},
render: (text, record) =>
......@@ -60,6 +63,10 @@ const Sign = () => {
title: '合同总金额',
dataIndex: 'totalAmount',
align: 'left',
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '对应单据/寻源类型',
......
......@@ -30,7 +30,7 @@ const Bill: React.FC<{}> = () => {
const columns: ColumnType<any>[] = [{
title: '请款单号/摘要',
dataIndex: 'applyNo',
align: 'center',
align: 'left',
render: (text: any, record: any) => {
return (
<div>
......@@ -45,18 +45,18 @@ const Bill: React.FC<{}> = () => {
},
}, {
title: '单据时间',
align: 'center',
align: 'left',
dataIndex: 'orderTime',
}, {
title: '收款方',
align: 'center',
align: 'left',
dataIndex: 'payeeMemberName',
},
{
title: '合同编号',
align: 'center',
align: 'left',
dataIndex: 'contractNo',
render: (text: any, record: any) => <EyePreview
// type="button"
......@@ -68,7 +68,7 @@ const Bill: React.FC<{}> = () => {
},
{
title: '合同总金额',
align: 'center',
align: 'left',
dataIndex: 'contractAmount',
render: (text: any, record: any) =>
<span>{text}</span>
......@@ -76,14 +76,14 @@ const Bill: React.FC<{}> = () => {
{
title: '请款金额',
dataIndex: 'applyAmount',
align: 'center',
align: 'left',
render: (text: any, record: any) =>
<span>{text}</span>
},
{
title: '内部状态',
dataIndex: 'statusName',
align: 'center',
align: 'left',
render: (text: any, record: any) => {
let component: ReactNode = null
component = (
......@@ -97,7 +97,7 @@ const Bill: React.FC<{}> = () => {
}, {
title: '操作',
dataIndex: 'action',
align: 'center',
align: 'left',
render: (text: any, record: any) => {
// 作废:待付款、已付款、待提交审核状态的不能作废
......
......@@ -71,19 +71,19 @@ const FormList = (props: any) => {
parmas.memberId = Row.partyBMemberId;
parmas.memberRoleId = Row.partyBRoleId;
fn = PublicApi.getPurchaseQuotedPriceProductlistListContract
console.log(sourceType)
}
if (sourceType == '2') {
parmas.submitTenderId = Row.bidId;
fn = PublicApi.getPurchaseSubmitTenderMaterielGetSubmitTenderMaterielList
} else {
fn = PublicApi.getProductGoodsGetGoodsList
}
console.log(sourceType)
fn(parmas).then(res => {
console.log(res);
// return;
if (res.code === 1000) {
let data = res.data.data.map(item => {
return {
......
......@@ -21,6 +21,7 @@ const Auction = () => {
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
//表头
const columns: ColumnType<any>[] = [{
title: '竞价单号',
dataIndex: 'viePriceNO',
......@@ -55,7 +56,7 @@ const Auction = () => {
dataIndex: 'awardTime',
align: 'left',
sorter: {
compare: (a, b) => a.bidWinnerNoticeTime - b.bidWinnerNoticeTime,
compare: (a, b) => getdate(a.awardTime) - getdate(b.awardTime),
multiple: 1,
},
},
......@@ -64,9 +65,16 @@ const Auction = () => {
dataIndex: 'awardAmount',
align: 'left',
sorter: {
compare: (a, b) => a.bidWinnerAmount - b.bidWinnerAmount,
compare: (a, b) => a.awardAmount - b.awardAmount,
multiple: 1,
},
render: (text) => {
return (
<div>
{text}
</div>
)
}
},
{
title: '外部状态',
......@@ -98,12 +106,14 @@ const Auction = () => {
return (
<div>
<span style={{ color: '#00B37A', cursor: 'pointer', marginRight: 10 }} onClick={() => history.push(`/memberCenter/contract/manage/add/addList/contracAdd?contractId=${record.id}&sourceType=3`)}>创建采购竞价合同</span>
<span style={{ color: '#00B37A', cursor: 'pointer' }} onClick={() => history.push(`/memberCenter/contract/manage/Auction/details?contractId=${record.id}`)}> 查看 </span>
{/* <span style={{ color: '#00B37A', cursor: 'pointer' }} onClick={() => history.push(`/memberCenter/contract/manage/Auction/details?contractId=${record.id}`)}> 查看 </span> */}
</div>
)
}
}]
const getdate = (time) => {
return new Date(Date.parse(time.replace(/-/g, "/"))).getTime() / 1000;
}
// 列表数据
const fetchData = (params?: any) => {
params.startTime = params.startTime ? moment(Number(params.startTime)).format('YYYY-MM-DD') : '';
......
......@@ -50,7 +50,7 @@ const BiddingList = () => {
dataIndex: 'bidWinnerNoticeTime',
align: 'left',
sorter: {
compare: (a, b) => a.bidWinnerNoticeTime - b.bidWinnerNoticeTime,
compare: (a, b) => getdate(a.bidWinnerNoticeTime) - getdate(b.bidWinnerNoticeTime),
multiple: 1,
},
},
......@@ -105,7 +105,9 @@ const BiddingList = () => {
)
}
}]
const getdate = (time) => {
return new Date(Date.parse(time.replace(/-/g, "/"))).getTime() / 1000;
}
const Like = (record) => {
record.sourceId = record.inviteBidId;
......
......@@ -76,7 +76,7 @@ const Details = (props: any) => {
let { basics, outerTaskStepList, innerTaskStepList, payPlanList, contractText } = res.data
let contractAbstract = res.data.basics.contractAbstract;
setsignatureLogId(basics.signatureLogId ? basics.signatureLogId : '')
const basicInfo = {
const basicInfo: any = {
col1: [
{ label: '合同编号:', extra: basics.contractNo ? basics.contractNo : '' },
{ label: '合同摘要:', extra: basics.contractAbstract ? basics.contractAbstract : '' },
......@@ -85,14 +85,33 @@ const Details = (props: any) => {
],
col2: [
{ label: '寻源类型:', extra: basics.sourceTypeName ? basics.sourceTypeName : '' },
{ label: '对应单据:', extra: basics.sourceNo ? basics.sourceNo : '' },
{ label: '对应单据:', extra: basics.sourceNo ? basics.sourceNo : '', },
{ label: '授标会员:', extra: basics.partyBName ? basics.partyBName : '' },
{ label: '授标金额', extra: basics.totalAmount ? basics.totalAmount : '' },
{ label: '授标金额', extra: basics.totalAmount ? `¥${basics.totalAmount}` : '' },
],
col3: [
{ label: '合同有效期:', extra: `${basics.startTime}${basics.endTime}` },
],
}
if (basics.sourceId) {
switch (basics.sourceType) {
case 1: {
if (basics.turn && basics.sourceId) {
basicInfo.col2[1].url = `/memberCenter/procurementAbility/confirmOffer/offerInquire/preview?id=${basics.sourceId}&turn=${basics.turn}`
}
break;
};
case 2: {
basicInfo.col2[1].url = `/memberCenter/procurementAbility/callForBids/callForBidsSearch/detail?id=${basics.sourceId}`
break;
};
case 3: {
basicInfo.col2[1].url = `/memberCenter/procurementAbility/purchaseBid/search/detail?id=${basics.sourceId}&number=${basics.sourceNo}`
break;
};
}
}
setbasicInfo(basicInfo)
setStepList(outerTaskStepList);
setouterTaskStepList(outerTaskStepList)
......@@ -141,34 +160,77 @@ const Details = (props: any) => {
}
/*查询合同详情-分页查询合同采购物料*/
const columns: any = [
{ title: '物料编号/名称', dataIndex: 'materielNo', align: 'center', },
{
title: '物料编号/名称', dataIndex: 'materielNo', align: 'center', render: (text, item) => {
return (
<div>
<p> {text}</p>
<p>{item.materielName}</p>
</div>
)
}
},
{ title: '规格型号', dataIndex: 'type', align: 'center', },
{ title: '品类', dataIndex: 'category', align: 'center', },
{ title: '品牌', dataIndex: 'brand', align: 'center', },
{ title: '单位', dataIndex: 'unit', align: 'center', },
{ title: '采购数量', dataIndex: 'purchaseCount', align: 'center', },
{ title: '含税', dataIndex: 'isHasTaxName', align: 'center', },
{ title: '税率', dataIndex: 'taxRate', align: 'center', },
{ title: '单价(含税)', dataIndex: 'price', align: 'center', },
{
title: '税率', dataIndex: 'taxRate', align: 'center',
render: (text) => {
return (
<div>
%{text}
</div>
)
}
},
{
title: '单价(含税)', dataIndex: 'price', align: 'center',
render: (text) => {
return (
<div>
{text}
</div>
)
}
},
{
dataIndex: 'bidCount', align: 'center',
title: (item) => {
return (
<Space direction='vertical'>
<Text>授标数量</Text>
<Text>合计: {tobidCount}</Text>
<Text>合计: {tobidCount}</Text>
</Space>
)
},
render: (text) => {
return (
<div>
{text}
</div>
)
}
},
{
dataIndex: 'bidAmount', align: 'center',
title: (
<Space direction='vertical'>
<Text>金额(不含税)</Text>
<Text>合计: {bidAmount}</Text>
<Text>合计: {bidAmount}</Text>
</Space>
),
render: (text) => {
return (
<div>
{text}
</div>
)
}
},
];
const fetchListData = (params) => {
......@@ -364,7 +426,7 @@ const Details = (props: any) => {
<div className='ant-card-head'>
<div className='ant-card-head-wrapper'>
<div className='ant-card-head-wrapper'>
采购材料
合同采购材料
</div>
</div>
</div>
......
......@@ -10,6 +10,7 @@ import EyePreview from '@/components/EyePreview'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { examineSchema } from '../schema'
import StatusTag from '@/components/StatusTag';
import { history, Redirect } from 'umi';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
......@@ -121,7 +122,7 @@ const Examine = () => {
render: (text, record) => {
return (
<div>
<span style={{ color: '#00B37A', cursor: 'pointer', marginRight: 10 }} onClick={() => submitExamine(record.id)}>提交审核</span>
<span style={{ color: '#00B37A', cursor: 'pointer', marginRight: 10 }} onClick={() => history.push(`/memberCenter/contract/manage/examine/details?contractId=${record.id}&type=ManageSubmitExamine`)}>提交审核</span>
</div>
)
}
......
......@@ -13,6 +13,7 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte
import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api';
import { history, Redirect } from 'umi';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons'
import ExamineFrom from '../../components/examine'
import moment from 'moment';
......@@ -123,7 +124,7 @@ const Levelexamine = () => {
render: (text, record) => {
return (
<div>
<span style={{ color: '#00B37A', cursor: 'pointer', marginRight: 10 }} onClick={() => submitExamine(record.id)}>审核</span>
<span style={{ color: '#00B37A', cursor: 'pointer', marginRight: 10 }} onClick={() => history.push(`/memberCenter/contract/manage/levelexamine/details?contractId=${record.id}&type=ManageExamineStepOne`)}>审核</span>
</div>
)
}
......
......@@ -155,7 +155,7 @@ export const ViePriceListSchema: any = {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
placeholder: '请输入搜索需求单号',
placeholder: '请输入搜索竞价单号',
align: 'start',
},
},
......
......@@ -15,6 +15,7 @@ import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePicke
import { PublicApi } from '@/services/api';
import ExamineFrom from '../../components/examine'
import moment from 'moment';
import { history, Redirect } from 'umi';
const Secondaryexamine = () => {
const ref = useRef<any>({});
......@@ -118,7 +119,7 @@ const Secondaryexamine = () => {
render: (text, record) => {
return (
<div>
<span style={{ color: '#00B37A', cursor: 'pointer', marginRight: 10 }} onClick={() => submitExamine(record.id)}>提交审核</span>
<span style={{ color: '#00B37A', cursor: 'pointer', marginRight: 10 }} onClick={() => history.push(`/memberCenter/contract/manage/secondaryexamine/details?contractId=${record.id}&type=PageToBeExamineStepTwo`)}>提交审核</span>
</div>
)
}
......
......@@ -16,6 +16,7 @@ import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePicke
import { PublicApi } from '@/services/api';
import moment from 'moment';
import '../../constants/index.less'
const Signacontract = () => {
const ref = useRef<any>({});
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
......
......@@ -71,7 +71,7 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
data.code = data['inviteTender']['code']
data.projectName = data['inviteTender']['projectName']
data.openTenderTime = formatTimeString(data['inviteTender']['openTenderTime'])
data.status = data.status ? '待发送' : '已发送'
data.status = data.status ? '已发送' : '待发送'
setInitFormValue(transformAreaField(data, 'render'))
}
})
......@@ -93,7 +93,7 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
// initRender.status = data.status ? '待发送' : '已发送'
initRender.status = '待发送'
initRender.expertExtractQueryList = initConditionData
initRender.inviteTender = { id: code}
initRender.inviteTender = { id: code }
setInitFormValue(initRender)
}
})
......@@ -193,16 +193,17 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
const addd = (<span>添加评标内容</span>)
const selectButton = pageStatus !== PageStatus.PREVIEW
const selectButton = (pageStatus !== PageStatus.PREVIEW)
?
<div style={{display: 'flex', alignItems: 'center'}}>
<div className="connectBtn" onClick={handleClick}><LinkOutlined style={{marginRight: 4}}/>选择</div>
<a style={{paddingLeft: 10, display: 'block', height: '32px', lineHeight: '32px', backgroundColor: '#fff'}} onClick={clickPreviewDetail}>查看详情</a>
</div>
:
<div style={{display: 'flex', alignItems: 'center'}}>
<a style={{paddingLeft: 10, display: 'block', height: '32px', lineHeight: '32px', backgroundColor: '#fff'}} onClick={clickPreviewDetail}>查看详情</a>
</div>
: null
const JumpDetails = () => (<a
target="_blank"
onClick={clickPreviewDetail}
>{initFormValue?.code || initFormValue?.inviteTender?.code}</a>)
const selectExpertButton = pageStatus !== PageStatus.PREVIEW && <Space size={16} style={{marginBottom: 16}}>
<Button onClick={conditionExtractExpret} icon={<ThunderboltFilled />}>按条件抽取专家</Button>
......@@ -317,7 +318,8 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
schema={formSchema}
onSubmit={handleSubmit}
components={{
ArrayTable
ArrayTable,
JumpDetails
}}
effects={($, ctx) => {
$('onFormMount').subscribe(() => {
......
......@@ -68,6 +68,7 @@ export const formSchema: ISchema = {
type: 'string',
title: '招标编号',
readOnly: true,
'x-component': 'JumpDetails'
},
openTenderTime: {
type: 'string',
......
......@@ -16,7 +16,6 @@ export const useSelfTable = () => {
align: 'left',
dataIndex: 'id',
key: 'id',
// width: 60,
render: (text, record, index) => index + 1
},
{
......@@ -28,7 +27,7 @@ export const useSelfTable = () => {
<EyePreview url={`/memberCenter/procurementAbility/callForBids/callForBidsSearch/detail?id=${record.id}`}>
{text}
</EyePreview>
<div>{record['projectName']}</div>
<div style={{width: 240, whiteSpace: "nowrap", overflow: 'hidden', textOverflow: "ellipsis"}} title={record['projectName']}>{record['projectName']}</div>
</>
},
{
......@@ -51,7 +50,6 @@ export const useSelfTable = () => {
dataIndex: 'createTime',
key: 'createTime',
render: (text, record) => formatTimeString(record.createTime),
// width: 180
},
{
title: '报名开始/截止时间',
......@@ -62,7 +60,6 @@ export const useSelfTable = () => {
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.registerStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.registerEndTime)}</div>
</>,
// width: 180
},
{
title: '资格预审开始/截止时间',
......@@ -73,7 +70,6 @@ export const useSelfTable = () => {
{record.preCheckStartTime ? <div><PlayCircleOutlined />&nbsp;{formatTimeString(record.preCheckStartTime)}</div> : null}
{record.preCheckEndTime ? <div><PoweroffOutlined />&nbsp;{formatTimeString(record.preCheckEndTime)}</div> : null}
</>,
// width: 180
},
{
title: '投标开始/截止时间',
......
......@@ -97,7 +97,7 @@ const ExtractNoticeManageDetail: React.FC = () => {
</Col>
<Col span={18}>
<p className={styles.cardListText}>
<Button type="link" onClick={clickPreviewDetail}>{inviterInfo?.code}</Button>
<a onClick={clickPreviewDetail}>{inviterInfo?.code}</a>
</p>
</Col>
</Row>
......
.cardWrap {
:global {
.ant-radio-button-wrapper:hover {
color: #606266;
}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #fff;
background: #6B778C;
border-color: #6B778C;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: #6B778C;
}
}
}
.cardWrap {
:global {
.ant-radio-button-wrapper:hover {
color: #606266;
}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #fff;
background: #6B778C;
border-color: #6B778C;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: #6B778C;
}
}
}
.cardWrap {
:global {
.ant-radio-button-wrapper:hover {
color: #606266;
}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #fff;
background: #6B778C;
border-color: #6B778C;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: #6B778C;
}
}
}
......@@ -7,3 +7,19 @@
font-size: 12px;
color: #909399;
}
.cardWrap {
:global {
.ant-radio-button-wrapper:hover {
color: #606266;
}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #fff;
background: #6B778C;
border-color: #6B778C;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: #6B778C;
}
}
}
.cardWrap {
:global {
.ant-radio-button-wrapper:hover {
color: #606266;
}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #fff;
background: #6B778C;
border-color: #6B778C;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: #6B778C;
}
}
}
......@@ -33,3 +33,20 @@
}
}
.cardWrap {
:global {
.ant-radio-button-wrapper:hover {
color: #606266;
}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #fff;
background: #6B778C;
border-color: #6B778C;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: #6B778C;
}
}
}
......@@ -95,7 +95,7 @@
position: absolute;
right: 0;
top: 0;
height: 12px;
height: 16px;
font-size: 12px;
font-weight: 400;
color: #00B37A;
......@@ -105,7 +105,7 @@
}
.statusInfo {
color: #5243AA;
background-color: #6554C0;
background: rgba(101,84,192,0.12);
}
.statusReceive {
color: #2266EE;
......
......@@ -7,3 +7,19 @@
font-size: 12px;
color: #909399;
}
.cardWrap {
:global {
.ant-radio-button-wrapper:hover {
color: #606266;
}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #fff;
background: #6B778C;
border-color: #6B778C;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
background-color: #6B778C;
}
}
}
......@@ -15,7 +15,7 @@ import {
import { Annotation } from 'bizcharts/lib'
import moment from 'moment';
import { BidInStateTexts, BidOutStateTexts, PURCHASE_TYPE, TenderInStateTexts, TenderOutStateTexts } from '@/constants/procurement';
import { history } from 'umi';
/**
* 描述信息列表
*/
......@@ -124,7 +124,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
{
span: 8,
fieldList: [
{ title: '招标编号:', name: 'code', render: (t) => <a href={`/memberCenter/procurementAbility/tender/callForBidsSearch/detail?id=${_data.inviteTender.id}`} target="_blank">{t}</a> },
{ title: '招标编号:', name: 'code', render: (t) => <a href={`/memberCenter/procurementAbility/${apiType[0]==='c'?'callForBids':'tender'}/callForBidsSearch/detail?id=${_data.inviteTender.id}`} target="_blank">{t}</a> },
{ title: '招标会员:', name: 'memberName' },
{
title: '适用城市:',
......@@ -480,10 +480,24 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
}
]
/** 通过url字符串和apiType综合判断显示 */
const pathName = history.location.pathname
const showBasicInfo = () => {
// 待审核报名 待资格预审 待提交资格预审 显示招标信息
if(pathName.indexOf('readyCheckedRegister') !== -1 || pathName.indexOf('readyQualifityChecked') !== -1) {
return basicColumnList
}
// 招标大类显示招标信息 投标大类显示投标信息
if(apiType[apiType.length - 1] === 'r') {
return basicTenderColumnList
} else {
return basicColumnList
}
}
/** 类型数据映射 */
const Type_Data_Map = {
// 招标大类显示招标信息 投标大类显示投标信息
'basicInfo': apiType[apiType.length - 1] === 'r' ? basicTenderColumnList : basicColumnList,
// 'basicInfo': apiType[apiType.length - 1] === 'r' ? basicTenderColumnList : basicColumnList,
'basicInfo': showBasicInfo(),
// 投标显示投标要求
'bidNeed': apiType[apiType.length - 1] === 'r' ? tenderNeedList : callForNeedList,
'registerNeed': registerNeedList,
......@@ -597,7 +611,8 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
{
_data['isSend'] ? <>
<p className={style.name}>尊敬的{_data.memberName}</p>
<p>贵公司参与了我公司《{data.projectName}》竞标。在我公司综合各投标单位的基本情况,并进行充分技术交流后,经评标委员会综合评定,贵公司未能中标。我公司对贵公司的积极参与和支持深表感谢!希望下次合作成功。</p>
{/* <p>贵公司参与了我公司《{data.projectName}》竞标。在我公司综合各投标单位的基本情况,并进行充分技术交流后,经评标委员会综合评定,贵公司未能中标。我公司对贵公司的积极参与和支持深表感谢!希望下次合作成功。</p> */}
<p>{ data?.winTenderThanksContent }</p>
<p className={style.company}>{data.memberName}</p>
</> : <p>贵公司此次未中标!非常感谢贵公司的积极参与,希望下次合作成功!</p>
}
......
......@@ -26,7 +26,7 @@ export const useSelfTable = () => {
<EyePreview url={`/memberCenter/procurementAbility/tender/callForBidsSearch/detail?id=${record.id}`}>
{text}
</EyePreview>
<div>{record['projectName']}</div>
<div style={{width: 240, whiteSpace: "nowrap", overflow: 'hidden', textOverflow: "ellipsis"}} title={record['projectName']}>{record['projectName']}</div>
</>
},
// {
......
......@@ -19,6 +19,7 @@ import { UPLOAD_TYPE } from '@/constants'
import styles from './index.less'
import { validatorByte } from '@/utils/regExp'
import UploadImage from '@/components/UploadImage'
import { getAuth } from '@/utils/auth'
const { Step } = Steps;
......@@ -68,6 +69,7 @@ const AddBrand: React.FC<{}> = () => {
const [banSomeField, setBanSomeField] = useState<boolean>(false)
const [isDisabledSave, setIsDisabledSave] = useState<boolean>(false)
const [isDisabledCheck, setDisabledCheck] = useState<boolean>(true)
const { roles, memberRoleId } = getAuth() || {};
useEffect(()=>{
const { id } = history.location.query
......@@ -198,7 +200,7 @@ const AddBrand: React.FC<{}> = () => {
<Space direction="vertical" style={{width:'100%'}}>
<Card headStyle={{borderBottom:'none'}} title="流程进度">
<Steps progressDot current={currentStep}>
<Step title="提交审核" description="供应商" />
<Step title="提交审核" description={roles.filter(item => item.memberRoleId === memberRoleId)[0]['memberRoleName']} />
<Step title="审核品牌" description="平台" />
<Step title="完成" description="" />
</Steps>
......
......@@ -91,7 +91,7 @@ const LowestQuotationRecord: React.FC<TableCommonLayoutProps> = (props: any) =>
const _returnBadge = (number) => {
const _number = Number(number ?? 0);
switch (_number) {
case 0:
case 0:
return '-';
case 1:
return <img src={level1} alt='第一名' />;
......@@ -119,6 +119,7 @@ const LowestQuotationRecord: React.FC<TableCommonLayoutProps> = (props: any) =>
<h5 className={selfStyles.content}>{effect?.reportPrice ? `¥ ${priceFormat(effect?.reportPrice)}` : '-'}</h5>
</div>
<StandardTable
keepAlive={false}
currentRef={currentRef}
columns={columns}
tableProps={{ rowKew: 'id' }}
......
......@@ -126,6 +126,7 @@ const MaterialLayout: React.FC<IPROPS> = (props: any) => {
title={layoutTitle}
>
<StandardTable
keepAlive={false}
currentRef={currentRef}
columns={column ? column : columns}
tableProps={{ rowKey: 'id' }}
......
......@@ -10,152 +10,153 @@ import { Context } from '../context';
import style from './index.less';
const TYPE = {
1: '发布至平台',
2: '系统匹配',
3: '邀请会员',
1: '发布至平台',
2: '系统匹配',
3: '邀请会员',
}
const ColStyle = {
display: 'flex',
alignItems: 'center',
border: '1px solid #1fbf87',
paddingTop: ' 6px',
paddingBottom: '6px',
margin: '5px',
borderRadius: '4px',
display: 'flex',
alignItems: 'center',
border: '1px solid #1fbf87',
paddingTop: ' 6px',
paddingBottom: '6px',
margin: '5px',
borderRadius: '4px',
}
const TextStyle = {
color: '#1fbf87',
marginLeft: '10px',
color: '#1fbf87',
marginLeft: '10px',
}
export interface DemandLayoutIProps {
storeList?: any,
title?: string,
bidId: number,
number: string,
fetch?: () => Promise<unknown>
storeList?: any,
title?: string,
bidId: number,
number: string,
fetch?: () => Promise<unknown>
}
const DemandLayout: React.FC<DemandLayoutIProps> = (props: any) => {
const { storeList, title, bidId, number, fetch } = props;
const tableRef = useRef<any>({});
const context = useContext(Context);
const { storeList, title, bidId, number, fetch } = props;
const tableRef = useRef<any>({});
const context = useContext(Context);
const columns = [
{
title: '序号',
key: 'number',
dataIndex: 'number',
render: (text: any, record: any, index: number) => <>{index + 1}</>
},
{
title: '会员名称',
key: 'memberName',
dataIndex: 'memberName',
},
{
title: '会员类型',
key: 'memberTypeName',
dataIndex: 'memberTypeName',
},
{
title: '会员角色',
key: 'roleName',
dataIndex: 'roleName',
},
{
title: '会员等级',
key: 'levelTag',
dataIndex: 'levelTag',
},
{
title: '是否归属会员',
key: 'membershipOrNot',
dataIndex: 'membershipOrNot',
render: (text: any) => (<StatusTag type={text ? 'success' : 'danger'} title={text ? '是' : '否'} />)
},
{
title: (
<>
<span>需求发送</span>
<Tooltip placement="top" title='打开开关,审核通过后,将发送需求至选择的归属会员'>
<QuestionCircleOutlined
style={{
marginLeft: '5px',
fontSize: '14px',
color: '#909399'
}}
/>
</Tooltip>
</>
),
key: 'state',
dataIndex: 'state',
render: (text: any) => (
<Switch checked={text} disabled={true} />
)
},
{
title: '操作',
key: 'operate',
dataIndex: 'operate',
render: (_text: any, _record: any) => (
<Typography.Link href={`/shop?shopId=${btoa(JSON.stringify({ roleId: _record.roleId, memberId: _record.memberId }))}`} target="_blank">
进入店铺
</Typography.Link>
)
},
]
const columns = [
{
title: '序号',
key: 'number',
dataIndex: 'number',
render: (text: any, record: any, index: number) => <>{index + 1}</>
},
{
title: '会员名称',
key: 'memberName',
dataIndex: 'memberName',
},
{
title: '会员类型',
key: 'memberTypeName',
dataIndex: 'memberTypeName',
},
{
title: '会员角色',
key: 'roleName',
dataIndex: 'roleName',
},
{
title: '会员等级',
key: 'levelTag',
dataIndex: 'levelTag',
},
{
title: '是否归属会员',
key: 'membershipOrNot',
dataIndex: 'membershipOrNot',
render: (text: any) => (<StatusTag type={text ? 'success' : 'danger'} title={text ? '是' : '否'} />)
},
{
title: (
<>
<span>需求发送</span>
<Tooltip placement="top" title='打开开关,审核通过后,将发送需求至选择的归属会员'>
<QuestionCircleOutlined
style={{
marginLeft: '5px',
fontSize: '14px',
color: '#909399'
}}
/>
</Tooltip>
</>
),
key: 'state',
dataIndex: 'state',
render: (text: any) => (
<Switch checked={text} disabled={true} />
)
},
{
title: '操作',
key: 'operate',
dataIndex: 'operate',
render: (_text: any, _record: any) => (
<Typography.Link href={`/shop?shopId=${btoa(JSON.stringify({ roleId: _record.roleId, memberId: _record.memberId }))}`} target="_blank">
进入店铺
</Typography.Link>
)
},
]
/** 列表数据 */
const fetchData = (params?: any) => {
return new Promise((resolve, reject) => {
fetch({ id: bidId, number: number, ...params }).then(res => {
resolve(res.data)
})
})
}
/** 列表数据 */
const fetchData = (params?: any) => {
return new Promise((resolve, reject) => {
fetch({ id: bidId, number: number, ...params }).then(res => {
resolve(res.data)
})
})
}
return (
<Card
id='demandLayout'
title='需求对接'
>
<div className={style.list}>
<h5 className={style.listLable} style={{ flex: '0 0 100px' }}>{title}</h5>
<h5 className={style.listContent}>{TYPE[context.type]}</h5>
</div>
{context.type === 1
&& (
<Row gutter={[16, 16]}>
{storeList.map(item => (
<Col
span={6}
key={item.id}
style={ColStyle}
>
<Image width={32} height={32} src={item.logoUrl} />
<span style={TextStyle}>{item.name}</span>
</Col>
))}
</Row>
)}
{context.type !== 1
&& (
<StandardTable
currentRef={tableRef}
columns={columns}
tableProps={{ rowKew: 'id' }}
fetchTableData={(params: any) => fetchData(params)}
/>
)}
</Card>
)
return (
<Card
id='demandLayout'
title='需求对接'
>
<div className={style.list}>
<h5 className={style.listLable} style={{ flex: '0 0 100px' }}>{title}</h5>
<h5 className={style.listContent}>{TYPE[context.type]}</h5>
</div>
{context.type === 1
&& (
<Row gutter={[16, 16]}>
{storeList.map(item => (
<Col
span={6}
key={item.id}
style={ColStyle}
>
<Image width={32} height={32} src={item.logoUrl} />
<span style={TextStyle}>{item.name}</span>
</Col>
))}
</Row>
)}
{context.type !== 1
&& (
<StandardTable
keepAlive={false}
currentRef={tableRef}
columns={columns}
tableProps={{ rowKew: 'id' }}
fetchTableData={(params: any) => fetchData(params)}
/>
)}
</Card>
)
}
DemandLayout.defaultProps = {
title: '发布方式'
title: '发布方式'
}
export default DemandLayout;
......@@ -123,6 +123,7 @@ const QuotationDetailsDrawer:React.FC<QuotationDetailsDrawerProps> = (props: any
}
>
<StandardTable
keepAlive={false}
currentRef={tableRef}
columns={columns}
tableProps={{ rowKew: 'id' }}
......
......@@ -101,6 +101,7 @@ const TableCommonLayout: React.FC<TableCommonLayoutProps> = (props: any) => {
title={layoutTitle}
>
<StandardTable
keepAlive={false}
currentRef={currentRef}
columns={columns}
tableProps={{ rowKew: 'id' }}
......
......@@ -188,7 +188,8 @@ const ProductModalTable:React.FC<ProductModalTableProps> = (props) => {
environment: 1,
memberId: supplyMembersId,
// 手工下单/合并订单下单时,查询现货价格商品
priceTypeList: (modelType === OrderModalType.CONSOLIDATED_ORDER || modelType === OrderModalType.HAND_ORDER) ? [1] : undefined
priceTypeList: (modelType === OrderModalType.CONSOLIDATED_ORDER || modelType === OrderModalType.HAND_ORDER) ? [1] : undefined,
shopId: schemaAction.getFieldValue('shopId')
}
return fetchOrderApi.getProductList(params)
}
......
......@@ -111,6 +111,7 @@ export const useProductTableChangeForPay = (ctx: ISchemaFormActions | ISchemaFor
memberId: productItem?.memberId || ctx.getFieldValue('supplyMembersId'),
memberRoleId: productItem?.memberRoleId || ctx.getFieldValue('supplyMembersRoleId'),
orderModel: orderModel,
shopId: ctx.getFieldValue('shopId')
}).then(data => {
ctx.setFieldValue('paymentInformationResponses', data)
}).catch(err => {
......
......@@ -403,6 +403,9 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
const handleOrderNo = async () => {
// @todo 未完整实现功能, 缺少商品接口
// 询价报价单, 合并订单需要唤起询价弹窗
if(!addSchemaAction.getFieldValue('shopId')) {
return message.error('请先选择适应商城')
}
const orderModel = addSchemaAction.getFieldValue('orderModel')
if (orderModel === OrderModalType.INQUIRY_QUOTATION_ORDER || orderModel === OrderModalType.CONSOLIDATED_ORDER) {
inquiryRef.current.setVisible(true)
......@@ -412,6 +415,9 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
}
// 选择会员弹窗
const handleOrderMember = () => {
if(!addSchemaAction.getFieldValue('shopId')) {
return message.error('请先选择适应商城')
}
memberRef.current.setVisible(true)
}
......
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