Merge remote-tracking branch 'origin/master'

This commit is contained in:
sunyu
2025-08-01 14:55:38 +08:00
5 changed files with 68 additions and 32 deletions

View File

@ -32,6 +32,7 @@ export default defineConfig({
targets: { targets: {
ie: 11, ie: 11,
}, },
jsMinifier: 'terser',
define: { define: {
PROJECT_THEME: JSON.stringify(theme), PROJECT_THEME: JSON.stringify(theme),
}, },

View File

@ -32,6 +32,11 @@ export default [{
path: '/System/CategoryManagement', path: '/System/CategoryManagement',
component: './CategoryManagement/components/CategoryMaintenance', component: './CategoryManagement/components/CategoryMaintenance',
}, },
{//品类管理
name: '供应商账号管理',
path: '/System/SupplierAccount',
component: './System/SupplierUser',
},
{//定时任务管理 {//定时任务管理
path: '/System/Scheduled', path: '/System/Scheduled',
component: './System/Scheduled', component: './System/Scheduled',

View File

@ -242,9 +242,9 @@ const Sing: React.FC<{}> = () => {
<Spin spinning={spin}> <Spin spinning={spin}>
<div className='xsy-headerDiv pd24'> <div className='xsy-headerDiv pd24'>
<h3 className="first-title floatLeft">{showNameT.kb}</h3> <h3 className="first-title floatLeft">{showNameT.kb}</h3>
<div className='xsy-rightDiv-struct'> {/* <div className='xsy-rightDiv-struct'>
<Button type="primary" onClick={() => window.open(`/bidOpening/bidOpening.html?&roomType=${roomType}`)}>虚拟大厅</Button> <Button type="primary" onClick={() => window.open(`/bidOpening/bidOpening.html?&roomType=${roomType}`)}>虚拟大厅</Button>
</div> </div> */}
</div> </div>
<ProTable <ProTable
columns={columns}//表格 columns={columns}//表格

View File

@ -1,5 +1,5 @@
import React, { useEffect, useRef, useState } from 'react'; import React, { useEffect, useRef, useState } from 'react';
import { Button, Checkbox, Col, Collapse, DatePicker, Drawer, Form, Input, message, Modal, Popconfirm, Row, Select, Spin, Upload, Image, InputNumber } from 'antd' import { Button, Checkbox, Col, Collapse, DatePicker, Drawer, Form, Input, message, Modal, Popconfirm, Row, Select, Spin, Upload, Radio, InputNumber } from 'antd'
import ProTable, { ActionType, EditableProTable, ProColumns } from '@ant-design/pro-table'; import ProTable, { ActionType, EditableProTable, ProColumns } from '@ant-design/pro-table';
import tableProps from '@/utils/tableProps'; import tableProps from '@/utils/tableProps';
import { getList, saveGroup, delOne, saveMember, changeEx, queryVoList, changeMember, applyFor, roomStatus, juryTem, rePassWord, getUserPhoto, unlockAccount, getCrotchListUsingGET, getSecs } from './service'; import { getList, saveGroup, delOne, saveMember, changeEx, queryVoList, changeMember, applyFor, roomStatus, juryTem, rePassWord, getUserPhoto, unlockAccount, getCrotchListUsingGET, getSecs } from './service';
@ -12,9 +12,10 @@ import FileDown from '@/utils/Download';
import { UploadOutlined } from '@ant-design/icons'; import { UploadOutlined } from '@ant-design/icons';
import { btnAuthority } from '@/utils/authority'; import { btnAuthority } from '@/utils/authority';
import RiskPrevention from '@/utils/RiskPrevention'; import RiskPrevention from '@/utils/RiskPrevention';
import { downloadPath } from '@/utils/DownloadUtils'; import ExtendUpload from '@/utils/ExtendUpload';
// import { downloadPath } from '@/utils/DownloadUtils';
import { sortBy } from 'lodash'; import { sortBy } from 'lodash';
import ExpertSchemeProfessionalInfo from './ExpertSchemeProfessionalInfo'; // import ExpertSchemeProfessionalInfo from './ExpertSchemeProfessionalInfo';
const JudgingPanel: React.FC<{}> = () => { const JudgingPanel: React.FC<{}> = () => {
const modalHeight = window.innerHeight * 96 / 100; const modalHeight = window.innerHeight * 96 / 100;
@ -46,7 +47,7 @@ const JudgingPanel: React.FC<{}> = () => {
// const [manNum, manNumSet] = useState<number>(5);//人数 // const [manNum, manNumSet] = useState<number>(5);//人数
const [riskVisible, setRiskVisible] = useState<boolean>(false);//风控弹窗 2021.9.7 zhoujianlong const [riskVisible, setRiskVisible] = useState<boolean>(false);//风控弹窗 2021.9.7 zhoujianlong
const [riskData, setRiskData] = useState<any[]>([]);//风控数据 2021.9.7 zhoujianlong const [riskData, setRiskData] = useState<any[]>([]);//风控数据 2021.9.7 zhoujianlong
// const [userPhotoId, setUserPhotoId] = useState<string>("");//电子评标室-录入外部专家-相片id 2022.8.29 zhoujianlong // const [userPhotoId, setUserPhotoId] = useState<string>("");//电子评标室-录入专家-相片id 2022.8.29 zhoujianlong
const userData = getSessionUserData();//当前登录人用户信息 const userData = getSessionUserData();//当前登录人用户信息
const [professionalMap, setProfessionalMap] = useState<any>(); const [professionalMap, setProfessionalMap] = useState<any>();
@ -890,7 +891,7 @@ const JudgingPanel: React.FC<{}> = () => {
}; };
//成员管理 //成员管理
const [add, setAdd] = useState<boolean>(false);//录入外部专家Drawer显隐 const [add, setAdd] = useState<boolean>(false);//录入专家Drawer显隐
const [changeMan, changeManSet] = useState<boolean>(false);//更换Drawer显隐 const [changeMan, changeManSet] = useState<boolean>(false);//更换Drawer显隐
const [juryId, juryIdSet] = useState<any>('');//更换专家所需评委会id const [juryId, juryIdSet] = useState<any>('');//更换专家所需评委会id
const [reason, reasonSet] = useState<any>('');//更换专家原因 const [reason, reasonSet] = useState<any>('');//更换专家原因
@ -908,6 +909,7 @@ const JudgingPanel: React.FC<{}> = () => {
const [changeMemberId, changeMemberIdSet] = useState<any>('');//更换专家id const [changeMemberId, changeMemberIdSet] = useState<any>('');//更换专家id
const [changeBtn, changeBtnSet] = useState<any>(true);//更换按钮显隐 const [changeBtn, changeBtnSet] = useState<any>(true);//更换按钮显隐
const [formMem] = Form.useForm(); const [formMem] = Form.useForm();
const formMemSourceType = Form.useWatch('sourceType', formMem);
function reset() {//重置 function reset() {//重置
categorySet([]); categorySet([]);
luruSet(0); luruSet(0);
@ -1099,7 +1101,7 @@ const JudgingPanel: React.FC<{}> = () => {
message.error('录入人数已满') message.error('录入人数已满')
} }
}} }}
> </Button> > </Button>
]} ]}
/> />
</Panel> </Panel>
@ -1123,7 +1125,7 @@ const JudgingPanel: React.FC<{}> = () => {
} else { } else {
message.error('录入人数已满') message.error('录入人数已满')
} }
}}> </Button> }}> </Button>
]} ]}
/> />
</Panel> </Panel>
@ -1147,7 +1149,7 @@ const JudgingPanel: React.FC<{}> = () => {
} else { } else {
message.error('录入人数已满') message.error('录入人数已满')
} }
}}> </Button> }}> </Button>
]} ]}
/> />
</Panel> </Panel>
@ -1171,7 +1173,7 @@ const JudgingPanel: React.FC<{}> = () => {
} else { } else {
message.error('录入人数已满') message.error('录入人数已满')
} }
}}> </Button> }}> </Button>
]} ]}
/> />
</Panel> </Panel>
@ -1195,7 +1197,7 @@ const JudgingPanel: React.FC<{}> = () => {
// } else { // } else {
// message.error('录入人数已满') // message.error('录入人数已满')
// } // }
// }}> 录入外部专家</Button> // }}> 录入专家</Button>
]} ]}
/> />
</Panel> </Panel>
@ -1253,7 +1255,7 @@ const JudgingPanel: React.FC<{}> = () => {
return ( return (
<> <>
<Drawer <Drawer
title="录入外部专家" title="录入专家"
placement="right" placement="right"
width={'50%'} width={'50%'}
onClose={() => { onClose={() => {
@ -1261,11 +1263,21 @@ const JudgingPanel: React.FC<{}> = () => {
changeBtnSet(true); changeBtnSet(true);
// formMem.resetFields(); // formMem.resetFields();
}} }}
visible={add} open={add}
getContainer={false} getContainer={false}
style={{ position: 'absolute' }} style={{ position: 'absolute' }}
> >
<Form {...formLayoutDrawer} form={formMem}> <Form {...formLayoutDrawer} form={formMem}>
<Row><Col span={24}><FormItem
name="sourceType"
label="专家来源"
rules={rule('专家来源')}
>
<Radio.Group>
<Radio value="0"></Radio>
<Radio value="1"></Radio>
</Radio.Group>
</FormItem></Col></Row>
<Row><Col span={24}><FormItem <Row><Col span={24}><FormItem
name="mobile" name="mobile"
label="手机号" label="手机号"
@ -1326,6 +1338,12 @@ const JudgingPanel: React.FC<{}> = () => {
> >
<Input style={{ width: "60%" }} onChange={onCertificateChange} /> <Input style={{ width: "60%" }} onChange={onCertificateChange} />
</FormItem></Col></Row> </FormItem></Col></Row>
{formMemSourceType === '1' ? (<Row><Col span={24}><FormItem
name="fileId"
label="上传证明文件"
>
<ExtendUpload bid={formMem.getFieldValue('fileId')} btnName='选择文件' maxCount={1} uploadProps={{ name: 'fileId', accept: '.jpg,.png,.pdf' }} />
</FormItem></Col></Row>) : null}
<Row><Col span={24}><FormItem {...tailLayoutDrawer}> <Row><Col span={24}><FormItem {...tailLayoutDrawer}>
<Button type="primary" loading={loading} hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase']) || !changeBtn} onClick={async () => { <Button type="primary" loading={loading} hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase']) || !changeBtn} onClick={async () => {
loadingSet(true); loadingSet(true);
@ -1670,7 +1688,7 @@ const JudgingPanel: React.FC<{}> = () => {
dataSet(dataTem, type); dataSet(dataTem, type);
memberCountSet(memberCount + 1); memberCountSet(memberCount + 1);
} }
//录入外部专家-获取照片 //录入专家-获取照片
const getExpertPhoto = () => { const getExpertPhoto = () => {
formMem.validateFields(["certificate"]).then(value => { formMem.validateFields(["certificate"]).then(value => {
getUserPhoto(value.certificate).then(res => {//获取照片 getUserPhoto(value.certificate).then(res => {//获取照片
@ -1710,7 +1728,7 @@ const JudgingPanel: React.FC<{}> = () => {
form.setFieldsValue({ startTime, endTime }); form.setFieldsValue({ startTime, endTime });
} }
return ( return (
<div className='bgCWhite' style={{ padding: '0px 24px 24px' }}> <div className='bgCWhite' style={{ padding: '0px 0 24px' }}>
<Spin spinning={spin}> <Spin spinning={spin}>
<ProTable <ProTable
key='proTable6' key='proTable6'

View File

@ -1,7 +1,7 @@
import { UnorderedListOutlined } from "@ant-design/icons" import { UnorderedListOutlined } from "@ant-design/icons"
import ProTable, { ActionType, ProColumns } from "@ant-design/pro-table" import ProTable, { ActionType, ProColumns } from "@ant-design/pro-table"
import tableProps from '@/utils/tableProps'; import tableProps from '@/utils/tableProps';
import { Button, Card, Divider, message, Spin } from "antd" import { Button, Card, Divider, message, Modal, Popconfirm, Spin } from "antd"
import React, { useEffect, useRef, useState } from "react" import React, { useEffect, useRef, useState } from "react"
import BiddingDocument from "./components/BiddingDocument" import BiddingDocument from "./components/BiddingDocument"
import { import {
@ -95,7 +95,9 @@ const BiddingDocumentList: React.FC<{}> = (props) => {
let btn1 = ( let btn1 = (
<> <>
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => toEdit(record)}></Button> <Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => toEdit(record)}></Button>
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text" onClick={() => toRemove(record)}></Button> <Popconfirm title="确定删除吗?" onConfirm={() => toRemove(record)}>
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} type="text"></Button>
</Popconfirm>
</> </>
); );
let btn2 = ( let btn2 = (
@ -172,21 +174,31 @@ const BiddingDocumentList: React.FC<{}> = (props) => {
} }
const toRemoveMore = () => { const toRemoveMore = () => {
if (selectedRowsState.length != 0) { if (selectedRowsState.length != 0) {
setPageloading(true); Modal.confirm({
let param = [] title: '确定删除吗?',
for (const item of selectedRowsState) { onOk: () => {
param.push(item.id); setPageloading(true);
} let param = []
removefile(param).then(res => { for (const item of selectedRowsState) {
if (res.code == 200) { param.push(item.id);
message.success('删除成功'); }
} removefile(param).then(res => {
if (res.code == 200) {
message.success('删除成功');
}
setPageloading(false); setPageloading(false);
setRefresh(Math.random() + 1) setRefresh(Math.random() + 1)
setSelectedRows([]); setSelectedRows([]);
actionRef?.current?.reloadAndRest?.(); actionRef?.current?.reloadAndRest?.();
}); });
},
onCancel: () => {
setSelectedRows([]);
}
})
} else {
message.warn('请选择要删除的资审文件');
} }
} }