Commit 2f93ac65 authored by 前端-许佳敏's avatar 前端-许佳敏
parents e7548b1b 3b90542c
......@@ -129,8 +129,7 @@ export enum LAYOUT_TYPE {
// 本地环境跳过权限校验
export const isDev = false;
// export const isDev = process.env.NODE_ENV === "development"
export const isDev = process.env.NODE_ENV === "development"
......
......@@ -3,10 +3,11 @@
.changed {
width: 100%;
display: flex;
align-items: center;
align-items: flex-start;
justify-content: space-between;
.new {
flex-shrink: 0;
padding: 0 2px;
color: #FFFFFF;
font-size: @font-size-sm;
......
......@@ -2,12 +2,14 @@
* @Author: XieZhiXiong
* @Date: 2021-05-21 17:14:39
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-10 09:57:18
* @LastEditTime: 2021-07-03 14:57:41
* @Description: 会员入库信息
*/
import React from 'react';
import { Tooltip } from 'antd';
import CustomizeColumn, { IProps as CustomizeColumnProps, DataItem } from '@/components/CustomizeColumn';
import { renderFieldTypeContent, FieldType } from '../../utils';
import PicWrap from '../PicWrap';
import styles from './index.less';
interface IProps extends Omit<CustomizeColumnProps, 'data' | 'columns'> {
......@@ -39,6 +41,10 @@ interface IProps extends Omit<CustomizeColumnProps, 'data' | 'columns'> {
* 修改之前的值,如果没有为空字符串
*/
lastValue?: string,
/**
* 类型
*/
fieldType?: string,
}[],
}[],
}
......@@ -57,7 +63,8 @@ const MemberDocIncomingInfo: React.FC<IProps> = (props: IProps) => {
title: ele.fieldLocalName,
value: (
<div className={styles.changed}>
{ele.fieldValue}
{/* {ele.fieldValue} */}
{renderFieldTypeContent(ele.fieldType, ele.fieldValue)}
{ele.lastValue && (
<Tooltip title={`变更前:${ele.lastValue}`}>
<span className={styles.new}>NEW</span>
......
......@@ -21,7 +21,12 @@
margin-right: @margin-sm;
width: 175px;
height: 120px;
border: 1px solid #EBECF0;
> img {
width: 100%;
height: 100%;
object-fit: contain;
}
}
&-right {
......
......@@ -2,22 +2,13 @@
* @Author: XieZhiXiong
* @Date: 2021-05-21 17:25:39
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-18 17:47:44
* @LastEditTime: 2021-07-03 11:32:38
* @Description: 会员公司资质
*/
import React from 'react';
// import { Descriptions } from 'antd';
import {
createFormActions,
} from '@formily/antd';
import { DatePicker, Checkbox } from '@formily/antd-components';
import { normalizeFiledata } from '@/utils';
import NiceForm from '@/components/NiceForm';
import { Descriptions } from 'antd';
import MellowCard, { MellowCardProps } from '@/components/MellowCard';
import { schema } from './schema';
import QualitiesUpload from '../QualitiesUpload';
import QualitiesUploadFormItem from '../QualitiesUploadFormItem';
// import styles from './index.less';
import styles from './index.less';
export type ValueType = {
/**
......@@ -45,63 +36,31 @@ interface IProps extends MellowCardProps {
dataSource: ValueType[],
}
const formActions = createFormActions();
const MemberDocQualification: React.FC<IProps> = (props: IProps) => {
const { dataSource = [], ...rest } = props;
const qualities = (
Array.isArray(dataSource)
? dataSource.map((item) => ({
file: item.url ? [normalizeFiledata(item.url)] : [],
expireDay: item.expireDay,
permanent: item.permanent === 1 ? [item.permanent] : [],
}))
: []
);
return (
<MellowCard
title="资质证明"
bodyStyle={{
paddingBottom: 0,
}}
{...rest}
>
{/* <ul className={styles.qualification}>
<li className={styles['qualification-item']}>
<div className={styles['qualification-item-wrap']}>
<div className={styles['qualification-item-left']}>
</div>
<div className={styles['qualification-item-right']}>
<Descriptions column={1}>
<Descriptions.Item label="到期日">2022-10-01</Descriptions.Item>
<Descriptions.Item label="有效期" style={{ paddingBottom: 0 }}>长期有效</Descriptions.Item>
</Descriptions>
<ul className={styles.qualification}>
{dataSource.map((item, index) => (
<li key={index} className={styles['qualification-item']}>
<div className={styles['qualification-item-wrap']}>
<div className={styles['qualification-item-left']}>
<img src={item.url} />
</div>
<div className={styles['qualification-item-right']}>
<Descriptions column={1}>
<Descriptions.Item label="到期日">{item.expireDay || ''}</Descriptions.Item>
<Descriptions.Item label="有效期" style={{ paddingBottom: 0 }}>{item.permanent === 1 ? '长期有效' : ''}</Descriptions.Item>
</Descriptions>
</div>
</div>
</div>
</li>
</ul> */}
<NiceForm
previewPlaceholder=" "
initialValues={{
qualities,
}}
components={{
DatePicker,
Checkbox,
CheckboxGroup: Checkbox.Group,
QualitiesUpload,
QualitiesUploadFormItem,
}}
effects={() => {
}}
actions={formActions}
schema={schema}
editable={false}
/>
</li>
))}
</ul>
</MellowCard>
);
};
......
......@@ -6,9 +6,17 @@
}
}
.no-img {
:global {
.ant-upload.ant-upload-select-picture-card {
border: none;
}
}
}
.img {
width: 175px;
height: 120px;
object-fit: contain;
object-fit: cover;
}
}
\ No newline at end of file
......@@ -2,13 +2,14 @@
* @Author: XieZhiXiong
* @Date: 2021-06-04 17:26:51
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-21 14:50:58
* @LastEditTime: 2021-07-03 13:58:05
* @Description: 资质上传组件
*/
import React, { useState } from 'react';
import { Upload } from 'antd';
import { PlusOutlined, FileOutlined, LoadingOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
import { UploadChangeParam } from 'antd/lib/upload';
import classNames from 'classnames';
import styles from './index.less';
const QualitiesUpload = (props) => {
......@@ -73,6 +74,11 @@ const QualitiesUpload = (props) => {
);
};
const uploadCls = classNames({
[styles['no-img']]: arrValue.length,
className,
});
return (
<div className={styles.upload}>
<Upload
......@@ -83,6 +89,7 @@ const QualitiesUpload = (props) => {
fileList={arrValue}
onChange={handleChange}
disabled={!editable}
className={uploadCls}
>
{!loading ? (
arrValue.length ? renderFile() : uploadButton
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-06-01 16:13:35
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-18 17:50:57
* @LastEditTime: 2021-07-03 14:48:39
* @Description: 资质证明上传组件
*/
import React from 'react';
......@@ -108,7 +108,7 @@ const QualitiesUploadFormItem = (props) => {
<div style={{ width: '100%' }}>
<ArrayList value={value}>
<Row
gutter={{ sm: 44, md: 88, lg: 88 }}
gutter={[66, 66]}
>
{toArr(value).map((item, index) => (
<Col key={index} {...span}>
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-05-28 15:24:56
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-18 15:57:10
* @LastEditTime: 2021-07-03 14:10:53
* @Description:
*/
import React, { useState } from 'react';
......@@ -92,7 +92,11 @@ const ComingConfigTable = (props) => {
};
const filtered = keyword ? value.filter((item) => item.fieldLocalName.includes(keyword)) : [...value];
const dataSource = pagingArr(page, size, filtered);
let dataSource = filtered;
if (!editable) {
dataSource = pagingArr(page, size, filtered);
}
return (
<div className={styles['config-table']}>
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-05-28 15:19:56
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-01 14:47:01
* @LastEditTime: 2021-07-03 14:03:52
* @Description: 入库资料操作组
*/
import React, { useState, useRef, useEffect } from 'react';
......@@ -129,9 +129,9 @@ const ComingCtl = (props: IProps) => {
新建入库资料
</Button>
)}
<Button>
{/* <Button>
预览入库资料
</Button>
</Button> */}
</Space>
<Drawer
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-05-28 14:30:06
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-08 16:27:02
* @LastEditTime: 2021-07-03 14:02:39
* @Description: 搜索组件
*/
import React, { useState, useEffect } from 'react';
......@@ -49,12 +49,12 @@ const MySearch: React.FC<IProps> = (props: IProps) => {
}
}, [value]);
const handleChange = (e) => {
const handleChange = (next: string) => {
if (!('value' in props)) {
setKeyword(e.target.value);
setKeyword(next);
}
if (onChange) {
onChange(e.target.value);
onChange(next);
}
};
......@@ -65,9 +65,9 @@ const MySearch: React.FC<IProps> = (props: IProps) => {
};
const handleReset = () => {
onChange('');
handleChange('');
if (searchOnResetAction) {
onSearch('');
handleSearch('');
}
if (onReset) {
onReset();
......@@ -79,7 +79,7 @@ const MySearch: React.FC<IProps> = (props: IProps) => {
<Input.Search
style={{ width: '200px', marginRight: 16 }}
value={keyword}
onChange={handleChange}
onChange={(e) => handleChange(e.target.value)}
onSearch={handleSearch}
{...rest}
/>
......
......@@ -10,9 +10,9 @@ import NiceForm from '@/components/NiceForm';
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { useLinkageUtils } from '@/utils/formEffectUtils';
import { PublicApi } from '@/services/api';
import { GetMemberAbilitySubGetResponse, GetMemberMainpageDetailGetResponse } from '@/services/MemberV2Api';
import { initDetailSchema } from './schema';
import { getAuth, setAuth } from '@/utils/auth';
import { initDetailSchema } from './schema';
import AreaSelect from '../../../components/AreaSelect';
const formActions = createFormActions();
const {
......@@ -559,6 +559,7 @@ const MemberForm: React.FC<MemberFormProps> = ({
components={{
RadioGroup: Radio.Group,
CheckboxGroup: Checkbox.Group,
AreaSelect,
}}
effects={($, actions) => {
useAsyncInitSelect(
......
......@@ -6,7 +6,7 @@ import {
} from 'antd';
import { usePageStatus } from '@/hooks/usePageStatus';
import { PublicApi } from '@/services/api';
import { GetMemberAbilitySubGetResponse } from '@/services/MemberV2Api';
import { GetMemberAbilitySubDetailResponse } from '@/services/MemberV2Api';
import {
MEMBER_TYPE_CHANNEL_CORPORATE,
MEMBER_TYPE_CHANNEL_INDIVIDUAL,
......@@ -19,7 +19,6 @@ import FlowRecords from '@/components/FlowRecords';
import CustomizeColumn from '@/components/CustomizeColumn';
import {
MEMBER_OUTER_COLUMNS,
MEMBER_INNER_COLUMNS,
} from '../constant';
import MemberBasicInfo from '../components/MemberBasicInfo';
import MemberChannelInfo from '../components/MemberChannelInfo';
......@@ -27,13 +26,13 @@ import PicWrap from '../components/PicWrap';
const ImportDetail: React.FC<{}> = () => {
const { id, validateId } = usePageStatus();
const [memberInfo, setMemberInfo] = useState<GetMemberAbilitySubGetResponse>(null);
const [memberInfo, setMemberInfo] = useState<GetMemberAbilitySubDetailResponse>(null);
const [infoLoading, setInfoLoading] = useState(false);
const getDetailedInfo = () => {
if (id && validateId) {
setInfoLoading(true);
PublicApi.getMemberAbilitySubGet({
PublicApi.getMemberAbilitySubDetail({
memberId: id,
validateId,
}).then(res => {
......@@ -137,7 +136,7 @@ const ImportDetail: React.FC<{}> = () => {
<MemberChannelInfo
dataSource={{
level: memberInfo?.channelLevelTag,
type: memberInfo?.channelTypeName,
type: memberInfo?.channelLevelTag,
areas: memberInfo?.areas,
desc: memberInfo?.remark,
}}
......@@ -180,11 +179,8 @@ const ImportDetail: React.FC<{}> = () => {
<Col span={24}>
<FlowRecords
outerColumns={MEMBER_OUTER_COLUMNS}
innerColumns={MEMBER_INNER_COLUMNS}
outerRowkey="id"
innerRowkey="id"
outerDataSource={memberInfo?.outerHistory}
innerDataSource={memberInfo?.innerHistory}
id="flowRecords"
/>
</Col>
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-05-21 16:45:32
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-18 17:04:06
* @LastEditTime: 2021-07-03 15:44:03
* @Description: 会员档案信息
*/
import React, { useEffect, useState } from 'react';
......@@ -186,7 +186,7 @@ const MemberArchiveInfo = () => {
const getAppraisalList = (params: ParamsType): Promise<ReponseType<AppraisalListItemType>> => {
return new Promise((resolve, reject) => {
PublicApi.getMemberAbilityMaintenanceDatailAppraisalPage({
PublicApi.getMemberAbilityMaintenanceDetailAppraisalPage({
validateId,
...params,
})
......@@ -254,7 +254,7 @@ const MemberArchiveInfo = () => {
{/* 分类信息 */}
<Col span={24}>
<MemberDocCategory
dataSource={archiveInfo?.classfication}
dataSource={archiveInfo?.classification}
id="categoryInfo"
/>
</Col>
......
......@@ -142,7 +142,7 @@ const MemberMaintain: React.FC<[]> = () => {
</Link>
)}
{record.showCorrect && (
<Link to={`/memberCenter/memberAbility/memberRectification/rectificationAdd/add?validateId=${record.validateId}`}>
<Link to={`/memberCenter/memberAbility/memberRectification/rectificationAdd/add?memberName=${record.name}&memberId=${record.memberId}&roleId=${record.roleId}`}>
<Button
type="link"
>
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-05-26 16:52:48
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-30 10:22:49
* @LastEditTime: 2021-07-03 14:50:48
* @Description: 申请会员
*/
import React, { useState, useEffect, useRef } from 'react';
......@@ -21,6 +21,7 @@ import ReutrnEle from '@/components/ReturnEle';
import NiceForm from '@/components/NiceForm';
import MellowCard from '@/components/MellowCard';
import { PublicApi } from '@/services/api';
import { normalizeFiledata, FileData } from '@/utils';
import schema, { GroupItem } from './schema';
import { useBusinessEffects } from '../../components/QualitiesUploadFormItem/effects';
import ComingAgreement from './components/ComingAgreement';
......@@ -66,6 +67,16 @@ type ValueType = {
},
}
interface MemberInfo {
step4: {
qualities: {
file: FileData[],
expireDay: string,
permanent: number[],
}[],
},
}
let countDownLen = 10;
const formActions = createFormActions();
......@@ -86,6 +97,7 @@ const MemberQueryApplyMember: React.FC = () => {
const [loading, setLoading] = useState(false);
const [agreement, setAgreement] = useState('');
const [agreementLoading, setAgreementLoading] = useState(false);
const [memberInfo, setMemberInfo] = useState<MemberInfo>();
const stepRef = useRef(!validateId ? 0 : 1);
......@@ -131,7 +143,17 @@ const MemberQueryApplyMember: React.FC = () => {
validateId: `${validateId}`,
});
if (res.code === 1000) {
const qualities = res.data.qualities || [];
setDepositInfo(res.data.groups);
setMemberInfo({
step4: {
qualities: qualities.map((item) => ({
file: item.url ? [normalizeFiledata(item.url)] : [],
expireDay: item.expireDay,
permanent: item.permanent === 1 ? [item.permanent] : [],
}))
},
});
}
setLoading(false);
};
......@@ -172,6 +194,16 @@ const MemberQueryApplyMember: React.FC = () => {
content: '正在保存,请稍候...',
duration: 0,
});
const commonPayload = {
qualities: qualities.map((item) => ({
expireDay: item.expireDay || '',
permanent: item.permanent && item.permanent[0] || 0,
url: item.file && item.file[0] ? item.file[0].url : '',
name: item.file && item.file[0] ? item.file[0].name : '',
})),
};
if (!validateId) {
if ((!upperMemberId || !upperRoleId)) {
return;
......@@ -180,12 +212,7 @@ const MemberQueryApplyMember: React.FC = () => {
upperMemberId,
upperRoleId,
depositDetails: step3,
qualities: qualities.map((item) => ({
expireDay: item.expireDay || '',
permanent: item.permanent && item.permanent[0] || 0,
url: item.file && item.file[0] ? item.file[0].url : '',
name: item.file && item.file[0] ? item.file[0].name : '',
})),
...commonPayload,
}).then(res => {
if (res.code !== 1000) {
return;
......@@ -200,12 +227,7 @@ const MemberQueryApplyMember: React.FC = () => {
PublicApi.postMemberAbilityInfoDepositDetailUpdate({
validateId,
detail: step3,
qualities: qualities.map((item) => ({
expireDay: item.expireDay || '',
permanent: item.permanent && item.permanent[0] || 0,
url: item.file && item.file[0] ? item.file[0].url : '',
name: item.file && item.file[0] ? item.file[0].name : '',
})),
...commonPayload,
}).then(res => {
if (res.code !== 1000) {
return;
......@@ -320,7 +342,7 @@ const MemberQueryApplyMember: React.FC = () => {
previewPlaceholder=" "
onSubmit={handleSubmit}
actions={formActions}
initialValues={{}}
initialValues={memberInfo}
components={{
Checkbox,
CheckboxGroup: Checkbox.Group,
......
......@@ -184,7 +184,7 @@ const MemberArchiveInfo = () => {
const getAppraisalList = (params: ParamsType): Promise<ReponseType<AppraisalListItemType>> => {
return new Promise((resolve, reject) => {
PublicApi.getMemberAbilityInfoDatailAppraisalPage({
PublicApi.getMemberAbilityInfoDetailAppraisalPage({
validateId,
...params,
})
......
......@@ -94,7 +94,7 @@ export function coverColFiltersItem(
}
};
type FieldType = 'string' | 'long' | 'upload' | 'radio' | 'select' | 'checkbox' | 'area';
export type FieldType = 'string' | 'long' | 'upload' | 'radio' | 'select' | 'checkbox' | 'area' | string & {};
// 字段校验规则枚举:0-无校验规则,1-邮箱规则,2-手机号码规则,3-身份证规则,4-电话号码规则
const RULE_REG_MAP = {
......@@ -154,7 +154,6 @@ const getFieldType = (field: ElementType) => {
'x-component': 'RadioGroup',
enum: field.fieldEnum,
'x-component-props': {
showDesc: false,
disabled: !!field.disabled,
},
};
......@@ -163,6 +162,9 @@ const getFieldType = (field: ElementType) => {
case 'select': {
description = {
enum: field.fieldEnum,
'x-component-props': {
disabled: !!field.disabled,
},
};
break;
}
......@@ -170,12 +172,18 @@ const getFieldType = (field: ElementType) => {
description = {
'x-component': 'CheckboxGroup',
enum: field.fieldEnum,
'x-component-props': {
disabled: !!field.disabled,
},
};
break;
}
case 'area': {
description = {
'x-component': 'AreaSelect',
'x-component-props': {
disabled: !!field.disabled,
},
};
break;
}
......@@ -206,7 +214,7 @@ export function renderFieldTypeContent(fieldType: FieldType, fieldValue: any): R
case 'upload':
node = (
<PicWrap
pics={[fieldValue.fieldValue]}
pics={[fieldValue]}
/>
);
break;
......
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