Commit 65f13e18 authored by 前端-黄佳鑫's avatar 前端-黄佳鑫

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

parents eb6c4bd9 58c6f221
src/assets/imgs/level1.png

5.06 KB | W: | H:

src/assets/imgs/level1.png

7.02 KB | W: | H:

src/assets/imgs/level1.png
src/assets/imgs/level1.png
src/assets/imgs/level1.png
src/assets/imgs/level1.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/imgs/level2.png

5.08 KB | W: | H:

src/assets/imgs/level2.png

7.22 KB | W: | H:

src/assets/imgs/level2.png
src/assets/imgs/level2.png
src/assets/imgs/level2.png
src/assets/imgs/level2.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/imgs/level3.png

5.16 KB | W: | H:

src/assets/imgs/level3.png

6.53 KB | W: | H:

src/assets/imgs/level3.png
src/assets/imgs/level3.png
src/assets/imgs/level3.png
src/assets/imgs/level3.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/imgs/level4.png

5.02 KB | W: | H:

src/assets/imgs/level4.png

6.46 KB | W: | H:

src/assets/imgs/level4.png
src/assets/imgs/level4.png
src/assets/imgs/level4.png
src/assets/imgs/level4.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-08-31 17:52:14
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-30 13:34:05
* @LastEditTime: 2021-06-29 16:13:23
* @Description: 状态 tag
*/
import React from 'react';
......
......@@ -2,9 +2,10 @@
* @Author: XieZhiXiong
* @Date: 2021-05-18 17:36:53
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-05-19 15:40:57
* @LastEditTime: 2021-06-29 16:18:42
* @Description: 会员相关常量
*/
/* --------------------------------- 会员类型 -------------------------------- */
/**
* 企业会员
......@@ -32,6 +33,7 @@ export const MEMBER_TYPE = {
[MEMBER_TYPE_CHANNEL_INDIVIDUAL]: '渠道个人会员',
};
/* --------------------------------- 会员状态 -------------------------------- */
/**
* 正常的
......@@ -46,69 +48,179 @@ export const MEMBER_TYPE = {
[MEMBER_STATUS_FROZEN]: '冻结',
};
/* --------------------------------- 会员外部状态 -------------------------------- */
/**
* 待提交审核
*/
export const MEMBER_OUTER_STATUS_UNCOMMITTED = 0;
export const MEMBER_OUTER_TO_PLATFORM_VERIFY = 1;
/**
* 待审核
* 待平台审核
*/
export const MEMBER_OUTER_STATUS_UNREVIEWED = 1;
export const MEMBER_OUTER_STATUS_PLATFORM_VERIFYING = 2;
/**
* 审核不通过
* 平台审核通过
*/
export const MEMBER_OUTER_STATUS_FAILED = 2;
export const MEMBER_OUTER_STATUS_PLATFORM_VERIFY_PASSED = 3;
/**
* 审核通过
* 平台审核不通过
*/
export const MEMBER_OUTER_STATUS_SUCCESS = 3;
export const MEMBER_OUTER_STATUS_PLATFORM_VERIFY_NOT_PASSED = 4;
/**
* 会员外部状态对应中文
* 待审核会员入库
*/
export const MEMBER_OUTER_STATUS = {
[MEMBER_OUTER_STATUS_UNCOMMITTED]: '待提交',
[MEMBER_OUTER_STATUS_UNREVIEWED]: '待审核',
[MEMBER_OUTER_STATUS_FAILED]: '审核不通过',
[MEMBER_OUTER_STATUS_SUCCESS]: '审核通过',
};
export const MEMBER_OUTER_STATUS_DEPOSITING = 5;
/**
* 入库审核通过
*/
export const MEMBER_OUTER_STATUS_DEPOSITORY_PASSED = 6;
/**
* 入库审核不通过
*/
export const MEMBER_OUTER_STATUS_DEPOSITORY_NOT_PASSED = 7;
/**
* 待审核会员变更
*/
export const MEMBER_OUTER_STATUS_MODIFYING = 8;
/**
* 会员变更审核通过
*/
export const MEMBER_OUTER_STATUS_MODIFY_PASSED = 9;
/**
* 会员变更审核不通过
*/
export const MEMBER_OUTER_STATUS_MODIFY_NOT_PASSED = 10;
/* --------------------------------- 会员内部状态 -------------------------------- */
/* --------------------------------- 会员内部状态(非平台会员,即上级不是平台会员) -------------------------------- */
/**
* 申请注册(已注册)
* 待审核入库资料
*/
export const MEMBER_INNER_STATUS_REGISTERED = 0;
export const MEMBER_INNER_STATUS_TO_VERIFY_DEPOSITORY_DETAIL = 1;
/**
* 待提交审核
* 入库资料审核不通过
*/
export const MEMBER_INNER_STATUS_UNCOMMITTED = 1;
export const MEMBER_INNER_STATUS_DEPOSITORY_DETAIL_NOT_PASSED = 2;
/**
* 待一级审核
* 待审核入库资质
*/
export const MEMBER_INNER_STATUS_UNREVIEWED_1 = 2;
export const MEMBER_INNER_STATUS_TO_VERIFY_DEPOSITORY_QUALIFICATION = 3;
/**
* 待二级审核
* 入库资质审核不通过
*/
export const MEMBER_INNER_STATUS_UNREVIEWED_2 = 3;
export const MEMBER_INNER_STATUS_DEPOSITORY_QUALIFICATION_NOT_PASSED = 4;
/**
* 审核不通过
* 待入库考察
*/
export const MEMBER_INNER_STATUS_TO_INSPECT_DEPOSITORY = 5;
/**
* 入库考察不通过
*/
export const MEMBER_INNER_STATUS_DEPOSITORY_INSPECTION_NOT_PASSED = 6;
/**
* 待入库分类
*/
export const MEMBER_INNER_STATUS_TO_CLASSFIY_DEPOSITORY = 7;
/**
* 入库分类不通过
*/
export const MEMBER_INNER_STATUS_DEPOSITORY_CLASSIFICATION_NOT_PASSED = 8;
/**
* 待审核入库(一级)
*/
export const MEMBER_INNER_STATUS_FAILED = 4;
export const MEMBER_INNER_STATUS_TO_DEPOSIT_GRADE_ONE = 9;
/**
* 入库审核不通过(一级)
*/
export const MEMBER_INNER_STATUS_DEPOSITORY_GRADE_ONE_NOT_PASSED = 10;
/**
* 待审核入库(二级)
*/
export const MEMBER_INNER_STATUS_TO_DEPOSIT_GRADE_TWO = 11;
/**
* 待审核入库不通过(二级)
*/
export const MEMBER_INNER_STATUS_DEPOSITORY_GRADE_TWO_NOT_PASSED = 12;
/**
* 待确认入库
*/
export const MEMBER_INNER_STATUS_TO_COMFIRM_DEPOSITORY = 13;
/**
* 审核通过
*/
export const MEMBER_INNER_STATUS_SUCCESS = 5;
export const MEMBER_INNER_STATUS_VERIFY_PASSED = 14;
/**
* 审核不通过
*/
export const MEMBER_INNER_STATUS_VERIFY_NOT_PASSED = 15;
/**
* 会员内部状态对应中文
* 待审核会员变更(一级)
*/
export const MEMBER_INNER_STATUS = {
[MEMBER_INNER_STATUS_REGISTERED]: '申请注册',
[MEMBER_INNER_STATUS_UNCOMMITTED]: '待提交审核',
[MEMBER_INNER_STATUS_UNREVIEWED_1]: '待一级审核',
[MEMBER_INNER_STATUS_UNREVIEWED_2]: '待二级审核',
[MEMBER_INNER_STATUS_FAILED]: '审核不通过',
[MEMBER_INNER_STATUS_SUCCESS]: '审核通过',
};
export const MEMBER_INNER_STATUS_VERIFY_TO_MODIFY_GRADE_ONE = 16;
/**
* 会员变更审核不通过(一级)
*/
export const MEMBER_INNER_STATUS_MODIFY_GRADE_ONE_NOT_PASSED = 17;
/**
* 待审核会员变更(二级)
*/
export const MEMBER_INNER_STATUS_TO_MODIFY_GRADE_TWO = 18;
/**
* 会员变更审核不通过(二级)
*/
export const MEMBER_INNER_STATUS_MODIFY_GRADE_TWO_NOT_PASSED = 19;
/**
* 待确认会员变更
*/
export const MEMBER_INNER_STATUS_TO_COMFIRM_MODIFY = 20;
/**
* 会员变更审核通过
*/
export const MEMBER_INNER_STATUS_MODIFY_PASSED = 21;
/**
* 会员变更审核不通过
*/
export const MEMBER_INNER_STATUS_MODIFY_NOT_PASSED = 22;
/* --------------------------------- 会员内部状态(平台会员) -------------------------------- */
/**
* 待提交平台审核
*/
export const PLATFORM_MEMBER_INNER_STATUS_TO_BE_COMMIT = 1;
/**
* 提交审核不通过
*/
export const PLATFORM_MEMBER_INNER_STATUS_COMMIT_NOT_PASSED = 2;
/**
* 待平台审核(一级)
*/
export const PLATFORM_MEMBER_INNER_STATUS_TO_BE_VERIFY_STEP1 = 3;
/**
* 审核会员不通过(一级)
*/
export const PLATFORM_MEMBER_INNER_STATUS_VERIFY_STEP1_NOT_PASSED = 4;
/**
* 待平台审核(二级)
*/
export const PLATFORM_MEMBER_INNER_STATUS_TO_BE_VERIFY_STEP2 = 5;
/**
* 审核会员不通过(二级)
*/
export const PLATFORM_MEMBER_INNER_STATUS_VERIFY_STEP2_NOT_PASSED = 6;
/**
* 待确认会员
*/
export const PLATFORM_MEMBER_INNER_STATUS_TO_CONFIRM = 7;
/**
* 平台审核不通过
*/
export const PLATFORM_MEMBER_INNER_STATUS_VERIFY_NOT_PASSED = 8;
/**
* 平台审核通过
*/
export const PLATFORM_MEMBER_INNER_STATUS_VERIFY_PASSED = 9;
/* --------------------------------- 会员等级类型枚举 -------------------------------- */
/**
......
......@@ -309,6 +309,11 @@ export const SELECT_NAME = {
2: '关于我们'
}
export const CHANNEL_SELECT_NAME = {
1: '渠道商城首页',
2: '关于我们'
}
/** 门户类型 */
export enum DOORTYPE {
/** 店铺门户 */
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-04 15:09:09
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-08 14:44:38
* @LastEditTime: 2021-06-29 14:16:40
* @Description: 维修商品抽屉组件
*/
import React from 'react';
......@@ -495,7 +495,7 @@ class GoodsDrawer extends React.Component<GoodsDrawerProps, GoodsDrawerState> {
return now.externalState === PayOutWorkState.CONFIRM_ACCOUNT ? +(new BigNumber(+product.purchaseCount).multipliedBy(product.price).multipliedBy(new BigNumber(now.payRatio).dividedBy(100))).toFixed(2) + prev : prev;
}, 0)
: 0,
taxInclusive: product.taxInclusive || !!product.taxRate,
taxInclusive: product.taxInclusive || +!!product.taxRate,
});
}
});
......
......@@ -5,7 +5,7 @@ import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ReutrnEle from '@/components/ReturnEle';
import RequireItem from '@/components/RequireItem';
import { QuestionCircleOutlined } from '@ant-design/icons';
import { SELECT_NAME, DOORTYPE } from '@/constants';
import { CHANNEL_SELECT_NAME, DOORTYPE } from '@/constants/procurement';
import { PublicApi } from '@/services/api';
const { TabPane } = Tabs
const layout: any = {
......@@ -36,7 +36,7 @@ const ChannelSeoAdded = () => {
...value,
link: `http://${link}`,
doorType: DOORTYPE.PLACE_DOORTYPE,
name: SELECT_NAME[type]
name: CHANNEL_SELECT_NAME[type]
}
setConfirmLoading(true)
fetch(params).then(res => {
......@@ -90,7 +90,7 @@ const ChannelSeoAdded = () => {
rules={[{ required: true, message: "请选择页面名称" }]}
>
<Select disabled={link === 'detail'}>
<Select.Option value={1}>店铺首页</Select.Option>
<Select.Option value={1}>渠道商场首页</Select.Option>
<Select.Option value={2}>关于我们</Select.Option>
</Select>
</Form.Item>
......
......@@ -47,6 +47,7 @@ const ChannelSeo = () => {
title: '页面名称',
key: 'name',
dataIndex: 'name',
// eslint-disable-next-line react/display-name
render: (text: any,record: any) => <Typography.Link href={`/memberCenter/shopAbility/shopSeo/detail?id=${record.id}`}>{text}</Typography.Link>
},
{
......@@ -83,6 +84,7 @@ const ChannelSeo = () => {
key: 'action',
dataIndex: 'action',
width: 256,
// eslint-disable-next-line react/display-name
render: (_text: any, record: any) => (
<>
<Popconfirm
......@@ -116,7 +118,7 @@ const ChannelSeo = () => {
const controllerBtns = <Row>
<Col span={6}>
<Button
onClick={() => history.push('/memberCenter/shopAbility/shopSeo/add')}
onClick={() => history.push('/memberCenter/channelAbility/channelSeo/add')}
type="primary"
icon={<PlusOutlined />}
>
......
import { ColumnsType } from 'antd/es/table';
export const enterprisesColumn: ColumnsType<any> = [
{
title: '会员ID',
dataIndex: 'memberId'
},
{
title: '会员名称',
dataIndex: 'name',
},
{
title: '会员类型',
dataIndex: "memberTypeName"
},
{
title: '会员角色',
dataIndex: "roleName"
},
{
title: '会员等级',
dataIndex: "levelTag"
}
]
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { ISchema } from '@formily/antd';
export const enterprisesSchema: ISchema = {
type: 'object',
properties: {
megaLayout: {
type: 'object',
'x-component': 'mega-layout',
properties: {
name: {
type: 'string',
'x-component': 'Search',
'x-component-props': {
placeholder: '搜索会员名称',
align: 'flex-left',
tip: '输入会员名称进行搜索',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
grid: true,
full: true,
columns: 1,
},
properties: {
roleId: {
type: 'string',
default: undefined,
enum: [],
'x-component-props': {
placeholder: '会员角色',
allowClear: true,
style: {
width: 160,
},
},
},
submit: {
'x-component': 'Submit',
'x-mega-props': {
span: 1,
},
'x-component-props': {
children: '查询',
},
},
},
},
},
},
},
};
/**
* 加工商品schema
*/
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { ISchema } from '@formily/antd';
export const productSchema: ISchema = {
type: 'object',
properties: {
megaLayout: {
type: 'object',
'x-component': 'mega-layout',
properties: {
name: {
type: 'string',
'x-component': 'Search',
'x-component-props': {
placeholder: '搜索商品名称',
align: 'flex-left',
tip: '输入商品名称进行搜索',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
grid: true,
full: true,
columns: 3,
},
properties: {
customerCategoryId: {
type: 'string',
'x-component': 'Cascader',
'x-component-props': {
placeholder: '请选择商品品类',
allowClear:true,
style: {
width: '160px',
// margin: '0 20px 0 0'
},
fieldNames: { label: 'title', value: 'id', children: 'children' }
}
},
brandId: {
type: 'string',
// 'x-component': 'Select',
enum: [],
'x-component-props': {
placeholder: '请选择商品品牌',
allowClear:true,
showSearch: true,
optionFilterProp: "children",
}
},
submit: {
'x-component': 'Submit',
'x-mega-props': {
span: 1,
},
'x-component-props': {
children: '查询',
},
},
},
},
},
},
},
};
......@@ -15,7 +15,6 @@ export const mapTextComponent = (
): React.JSXElementConstructor<any> => {
const { editable } = fieldProps
// console.log("props", props, "fieldProps", fieldProps);
console.log(fieldProps.form.getFieldValue("detail.layout1.productList.0"))
if (editable !== undefined) {
if (editable === false) {
return PreviewText
......@@ -40,4 +39,7 @@ export const mapStyledProps = (
export default connect({
// getProps: mapStyledProps, //处理状态映射
getComponent: mapTextComponent //处理详情态
})((Input))
})((props) => {
const { dataSource, value, onChange } = props;
return <Input value={value} onChange={onChange} />
})
This diff is collapsed.
This diff is collapsed.
......@@ -12,7 +12,8 @@ import { getAuth } from '@/utils/auth';
interface Iprops {};
const { StaticsDataList } = Layout
const url = '/memberCenter/procurementAbility/purchaseInquiry/inquiry';
const consumerUrl = '/memberCenter/procurementAbility/purchaseInquiry/inquiry';
const providerUrl = '/memberCenter/procurementAbility/offter/offter'
const KEY_TITLE = {
purchaseInquiryList: '采购询价 ',
......@@ -41,7 +42,6 @@ const PurchaseCenter: React.FC<Iprops> = () => {
if (!inViewPort || (!hasPurchaseAuth)) {
return;
}
// console.log((!isBusiness.includes(auth.memberType)), isConsumer !== auth.memberRoleType)
async function findCurrMemberPurchase() {
const { data, code } = await PublicApi.getTemplateWebMemberPurchaseWebFindCurrMemberPurchase();
if (code === 1000) {
......@@ -51,6 +51,8 @@ const PurchaseCenter: React.FC<Iprops> = () => {
findCurrMemberPurchase()
}, [inViewPort, hasPurchaseAuth])
const purchaseCenterUrl = useMemo(() => isConsumer === auth.memberRoleType ? consumerUrl : providerUrl ,[auth])
return (
<Layout
viewRef={ref}
......@@ -58,10 +60,10 @@ const PurchaseCenter: React.FC<Iprops> = () => {
tips="提供在线采购询价、在线报价、在线招投标、在线竞价、制订采购计划、创建采购门户等功能"
extra={
<Authorize
url={url}
url={purchaseCenterUrl}
>
<div>
<Link to={url}>进入采购中心</Link>
<Link to={purchaseCenterUrl}>进入采购中心</Link>
</div>
</Authorize>
}
......
......@@ -13,7 +13,7 @@ import {
MEMBER_INNER_STATUS_BADGE_COLOR,
MEMBER_OUTER_STATUS_TYPE,
} from '../../constant';
import StatusTag from '../../components/StatusTag';
import StatusTag from '@/components/StatusTag';
/**
*
......
......@@ -13,7 +13,7 @@ import {
MEMBER_INNER_STATUS_BADGE_COLOR,
MEMBER_OUTER_STATUS_TYPE,
} from '../../constant';
import StatusTag from '../../components/StatusTag';
import StatusTag from '@/components/StatusTag';
import styles from '../styles.less';
/**
......
......@@ -101,7 +101,7 @@ const TobeEvaluateDetail = () => {
return (
<Spin spinning={false}>
<AnchorPage
title={initialValue?.subject}
title={`事件主题:${initialValue?.subject}`}
anchors={headers}
extra={
<Button type="primary" onClick={onSubmitRes}>处理结果信息</Button>
......
import React from 'react';
import {
Steps,
Tabs,
} from 'antd';
import MellowCard from '@/components/MellowCard';
import styles from './index.less';
interface AuditProcessProp {
outerVerifyCurrent?: number;
innerVerifyCurrent?: number;
outerVerifySteps?: { step: number, stepName: string, roleName: string }[];
innerVerifySteps?: { step: number, stepName: string, roleName: string }[];
};
const AuditProcess: React.FC<AuditProcessProp> = ({
outerVerifyCurrent = 0,
innerVerifyCurrent = 0,
outerVerifySteps = [],
innerVerifySteps = [],
}) => (
<MellowCard>
<Tabs onChange={() => {}}>
<Tabs.TabPane tab="外部审核流程" key="1">
<Steps style={{ marginTop: 30 }} progressDot current={outerVerifyCurrent}>
{outerVerifySteps.map(item => (
<Steps.Step
key={item.step}
title={item.stepName}
description={item.roleName}
/>
))}
</Steps>
</Tabs.TabPane>
<Tabs.TabPane tab="内部审核流程" key="2">
<Steps style={{ marginTop: 30 }} progressDot current={innerVerifyCurrent}>
{innerVerifySteps.map(item => (
<Steps.Step
key={item.step}
title={item.roleName}
description={item.stepName}
/>
))}
</Steps>
</Tabs.TabPane>
</Tabs>
</MellowCard>
);
export default AuditProcess;
\ No newline at end of file
.basicInfo {
.descriptions {
:global {
.ant-descriptions-item-label {
flex: 0 0 128px;
color: rgba(107, 119, 140, 1);
}
}
}
}
\ No newline at end of file
import React, { useState } from 'react';
import {
Row,
Col,
Descriptions,
} from 'antd';
import MellowCard from '@/components/MellowCard';
import {
MEMBER_TYPE_CHANNEL_CORPORATE,
MEMBER_TYPE_CHANNEL_INDIVIDUAL,
} from '@/constants/member';
import PicWrap from '../PicWrap';
import FlowRecords, { InnerHistoryItem, OuterHistoryItem } from '../FlowRecords';
import styles from './index.less';
interface BasicInfoProps {
basic?: {
account?: string,
phone?: string,
email?: string,
created?: string,
};
channel?: {
memberType?: number,
level?: string,
type?: string,
areas?: string[],
desc?: string,
};
extra?: {
groupName: string,
elements: {
fieldCNName?: string,
fieldType?: string,
fieldValue?: any,
}[],
}[];
outerHistory?: OuterHistoryItem[];
innerHistory?: InnerHistoryItem[];
channelRender?: React.ReactNode; // 自定义渲染渠道信息
}
const BasicInfo: React.FC<BasicInfoProps> = ({
basic = {},
channel = {},
extra = [],
outerHistory = [],
innerHistory,
channelRender,
}) => {
return (
<div className={styles.basicInfo}>
<Row gutter={[0, 24]}>
<Col span={24}>
<MellowCard
title="基本信息"
>
<Descriptions column={2} className={styles.descriptions}>
<Descriptions.Item label="登录账户">{basic.account}</Descriptions.Item>
<Descriptions.Item label="注册手机号">{basic.phone}</Descriptions.Item>
<Descriptions.Item label="注册邮箱">{basic.email}</Descriptions.Item>
<Descriptions.Item label="申请时间">{basic.created}</Descriptions.Item>
</Descriptions>
</MellowCard>
</Col>
{
(
channel.memberType === MEMBER_TYPE_CHANNEL_CORPORATE ||
channel.memberType === MEMBER_TYPE_CHANNEL_INDIVIDUAL
) && (
<Col span={24}>
<MellowCard
title="渠道信息"
>
{!channelRender ? (
<Descriptions column={2} className={styles.descriptions}>
<Descriptions.Item label="渠道级别">{channel.level}</Descriptions.Item>
<Descriptions.Item label="渠道类型">{channel.type}</Descriptions.Item>
<Descriptions.Item label="代理地市">
<Row gutter={[16, 16]}>
{
channel.areas ?
channel.areas.map(item => (
<Col key={item} span={12}>{item}</Col>
)) :
null
}
</Row>
</Descriptions.Item>
<Descriptions.Item label="渠道描述">{channel.desc}</Descriptions.Item>
</Descriptions>
) : channelRender}
</MellowCard>
</Col>
)
}
{extra.map((item, index) => (
<Col key={index} span={24}>
<MellowCard
title={item.groupName}
>
<Row gutter={20}>
<Col span={12}>
<Descriptions column={1} className={styles.descriptions}>
{item.elements.map((ele, index) => (index + 1) % 2 !== 0 ? (
<Descriptions.Item key={index} label={ele.fieldCNName}>
{
ele.fieldType !== 'upload' ?
ele.fieldValue :
(
<PicWrap
pics={[ele.fieldValue]}
/>
)
}
</Descriptions.Item>
) : null)}
</Descriptions>
</Col>
<Col span={12}>
<Descriptions column={1} className={styles.descriptions}>
{item.elements.map((ele, index) => (index + 1) % 2 === 0 ? (
<Descriptions.Item key={index} label={ele.fieldCNName}>
{
ele.fieldType !== 'upload' ?
ele.fieldValue :
(
<PicWrap
pics={[ele.fieldValue]}
/>
)
}
</Descriptions.Item>
) : null)}
</Descriptions>
</Col>
</Row>
</MellowCard>
</Col>
))}
<Col span={24}>
<FlowRecords
outerHistory={outerHistory}
innerHistory={innerHistory}
/>
</Col>
</Row>
</div>
);
};
export default BasicInfo;
@import '../../../../global/styles/utils.less';
.equityInfo {
.container {
display: flex;
flex-direction: column;
justify-content: center;
padding: 0 24px;
height: 192px;
background: #ffffff;
border-radius: 8px;
&-title {
margin-bottom: 20px;
line-height: 24px;
font-size: 14px;
font-weight: 500;
color: rgba(23, 43, 77, 1);
}
&-content {
}
}
.tofo {
display: flex;
padding: 0 0 4px;
margin: 0;
min-height: 101px;
overflow-x: auto;
.silkyScrollbar();
&-item {
flex: 0 0 33.333%;
list-style: none;
&-logo {
width: 40px;
height: 40px;
margin: 0 auto 4px;
text-align: center;
> img {
width: 100%;
height: 100%;
}
}
&-title {
margin-bottom: 9px;
line-height: 22px;
font-size: 12px;
font-weight: 400;
color: rgba(23, 43, 77, 1);
text-align: center;
:global {
.anticon {
margin-left: 4px;
}
}
}
&-extra {
text-align: center;
}
&-tag {
line-height: 22px;
padding: 0 6px;
font-size: 12px;
font-weight: 400;
text-align: center;
border-radius: 4px;
&-price {
color: rgba(101, 84, 192, 1);
background: rgba(234, 230, 255, 1);
}
&-recurrence {
color: rgba(230, 63, 59, 1);
background: rgba(255, 235, 230, 1);
}
&-integral {
color: rgba(255, 153, 31, 1);
background: rgba(255, 250, 230, 1);
}
}
}
}
.exhibition {
display: flex;
align-items: center;
&-left {
flex: 1;
}
&-right {
flex-shrink: 0;
}
&-title {
line-height: 20px;
margin-bottom: 24px;
font-size: 12px;
font-weight: 400;
color: rgba(107, 119, 140, 1);
}
&-amount {
font-size: 24px;
font-weight: 500;
color: rgba(23, 43, 77, 1);
line-height: 24px;
> span {
margin-left: 8px;
line-height: 12px;
font-size: 12px;
font-weight: 400;
color: rgba(107, 119, 140, 1);
}
}
&-logo {
width: 72px;
height: 72px;
> img {
width: 100%;
height: 100%;
}
}
}
}
\ No newline at end of file
This diff is collapsed.
import React from 'react';
import {
Tabs,
Badge,
} from 'antd';
import { STATUS_COLOR_MAP, STATUS_COLOR_TXT } from '../../constant';
import PolymericTable from '@/components/PolymericTable';
import { EditableColumns } from '@/components/PolymericTable/interface';
import MellowCard from '@/components/MellowCard';
import {
MEMBER_STATUS_TAG_MAP,
MEMBER_INNER_STATUS_BADGE_COLOR,
MEMBER_OUTER_STATUS_BADGE_COLOR,
MEMBER_OUTER_STATUS_TYPE,
} from '../../constant';
import styles from './index.less';
export interface InnerHistoryItem {
createTime?: string,
id?: number;
operatorName?: string;
operatorOrgName?: string;
operatorJobTitle?: string;
operation?: string;
innerStatusName?: string;
remark?: string;
innerStatus?: number;
};
export interface OuterHistoryItem {
createTime?: string,
id?: number;
operation?: string;
operatorRoleName?: string;
remark?: string;
statusDescription?: string;
status?: number,
};
interface FlowRecordsProps {
outerHistory?: OuterHistoryItem[];
innerHistory?: InnerHistoryItem[];
};
const FlowRecords: React.FC<FlowRecordsProps> = ({ outerHistory = [], innerHistory }) => {
const outerColumns: EditableColumns[] = [
{
title: '序号',
dataIndex: 'index',
align: 'center',
render: (text, record, index) => index + 1,
},
{
title: '操作角色',
dataIndex: 'operatorRoleName',
align: 'center',
},
{
title: '状态',
dataIndex: 'statusDescription',
align: 'center',
render: (text, record) => (
<Badge color={MEMBER_OUTER_STATUS_BADGE_COLOR[record.status]} text={text} />
),
},
{
title: '操作',
dataIndex: 'operation',
align: 'center',
},
{
title: '操作时间',
dataIndex: 'createTime',
align: 'center',
ellipsis: true,
},
{
title: '审核意见',
dataIndex: 'remark',
align: 'center',
ellipsis: true,
},
];
const innerColumns: EditableColumns[] = [
{
title: '序号',
dataIndex: 'index',
align: 'center',
render: (text, record, index) => index + 1,
},
{
title: '操作人',
dataIndex: 'operatorName',
align: 'center',
},
{
title: '部门',
dataIndex: 'operatorOrgName',
align: 'center',
},
{
title: '职位',
dataIndex: 'operatorJobTitle',
align: 'center',
},
{
title: '状态',
dataIndex: 'innerStatusName',
align: 'center',
render: (text, record) => (
<Badge color={MEMBER_INNER_STATUS_BADGE_COLOR[record.innerStatus]} text={text} />
),
},
{
title: '操作',
dataIndex: 'operation',
align: 'center',
},
{
title: '操作时间',
dataIndex: 'createTime',
align: 'center',
ellipsis: true,
},
{
title: '审核意见',
dataIndex: 'remark',
align: 'center',
ellipsis: true,
},
];
return (
<MellowCard>
<Tabs onChange={() => {}}>
<Tabs.TabPane tab="流转记录" key="1">
<PolymericTable
dataSource={outerHistory}
columns={outerColumns}
loading={false}
pagination={null}
/>
</Tabs.TabPane>
{innerHistory && (
<Tabs.TabPane tab="内部单据流转记录" key="2">
<PolymericTable
dataSource={innerHistory}
columns={innerColumns}
loading={false}
pagination={null}
/>
</Tabs.TabPane>
)}
</Tabs>
</MellowCard>
);
};
export default FlowRecords;
\ No newline at end of file
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-05-18 16:27:14
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-05-18 16:27:15
* @LastEditTime: 2021-06-29 15:37:48
* @Description: 会员基础信息
*/
import React from 'react';
......@@ -72,7 +72,7 @@ const MemberBasicInfo: React.FC<IProps> = (props: IProps) => {
const basicInfo = [
{
title: '会员ID',
value: dataSource.memberId || '',
value: dataSource.memberId !== undefined ? dataSource.memberId : '',
},
{
title: '会员类型',
......
......@@ -5,52 +5,87 @@
* @LastEditTime: 2021-05-21 18:18:11
* @Description: 会员变更信息
*/
import React from 'react';
import React, { useState, useEffect } from 'react';
import MellowCard, { MellowCardProps } from '@/components/MellowCard';
import PolymericTable from '@/components/PolymericTable';
import { EditableColumns } from '@/components/PolymericTable/interface';
interface IProps extends MellowCardProps {}
export type ChangeItemType = {
/**
* 数据id
*/
id: number,
/**
* 变更时间
*/
createTime: string,
/**
* 变更项目
*/
fieldLocalName: string,
/**
* 变更后的内容
*/
fieldValue: string,
/**
* 变更前的内容
*/
lastValue: string,
}
const mockData = [
{
id: 1,
index: 1,
createTime: '2020-12-08',
item: '会员名称',
before: '广州市商旅科技有限公司',
after: '广州市数商云网络科技有限公司',
},
{
id: 2,
index: 2,
createTime: '2020-12-08',
item: '注册资金',
before: '200万',
after: '500万',
},
{
id: 3,
index: 3,
createTime: '2020-12-08',
item: '联系人电话',
before: '185 2929 6758',
after: '185 2929 6758',
},
{
id: 4,
index: 4,
createTime: '2020-12-08',
item: '经营范围',
before: '经营全粒面牛皮、修面皮、漆色皮、打腊皮、水腊皮、修面皮、漆色皮、打腊皮、水腊皮、漆色皮、打...',
after: '经营全粒面牛皮、修面皮、漆色皮、打腊皮、水腊皮、修面皮、漆色皮、打腊皮、水腊皮、漆色皮、打...',
},
];
export type FetchParamsType = {
pageSize: string,
current: string,
}
export type ReponseType = {
data: ChangeItemType[],
totalCount: number,
}
interface IProps extends MellowCardProps {
/**
* 数据
*/
fetchList: (params: FetchParamsType) => Promise<ReponseType>,
}
const PAGE_SIZE = 10;
const MemberChangedInfo: React.FC<IProps> = (props: IProps) => {
const {
fetchList,
...rest
} = props;
const [page, setPage] = useState(1);
const [size, setSize] = useState(PAGE_SIZE);
const [loading, setLoading] = useState(false);
const [list, setList] = useState<ReponseType>({
totalCount: 0,
data: [],
});
const getList = (params?: FetchParamsType) => {
if (fetchList) {
setLoading(true);
const nextPage = params?.current || page;
const nextSize = params?.pageSize || size;
fetchList({
current: `${nextPage}`,
pageSize: `${nextSize}`,
}).then((res) => {
if (res.data) {
setList(res);
}
}).finally(() => {
setLoading(false);
});
}
};
useEffect(() => {
getList();
}, []);
const columns: EditableColumns[] = [
{
......@@ -63,30 +98,45 @@ const MemberChangedInfo: React.FC<IProps> = (props: IProps) => {
},
{
title: '变更项目',
dataIndex: 'item',
dataIndex: 'fieldLocalName',
ellipsis: true,
},
{
title: '变更前内容',
dataIndex: 'before',
dataIndex: 'fieldValue',
ellipsis: true,
},
{
title: '变更前内容',
dataIndex: 'after',
dataIndex: 'lastValue',
ellipsis: true,
},
];
const handlePaginationChange = (page: number, size: number) => {
setPage(page);
setSize(size);
getList({
current: `${page}`,
pageSize: `${size}`,
});
};
return (
<MellowCard
title="变更信息"
{...rest}
>
<PolymericTable
dataSource={mockData}
dataSource={list.data}
columns={columns}
loading={false}
loading={loading}
pagination={{
current: page,
pageSize: size,
total: list.totalCount,
}}
onPaginationChange={handlePaginationChange}
/>
</MellowCard>
);
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-05-20 17:40:29
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-05-20 18:00:40
* @LastEditTime: 2021-06-29 15:25:01
* @Description: 会员诚信信息统计信息
*/
import React, { HTMLAttributes } from 'react';
......@@ -74,7 +74,7 @@ interface IProps extends HTMLAttributes<HTMLDivElement> {
/**
* 积分列表
*/
integralItems: {
integralItems: {
id: number,
creditTypeName: string,
remark: string,
......
.sincerityInfo {
.tofo {
height: 100%;
:global {
.antd-card {
height: 100%;
}
}
&-item {
width: 50%;
padding: 55px 24px;
&-logo {
width: 72px;
height: 72px;
}
}
}
}
.contentBox {
position: relative;
padding-right: 72px;
background: #ffffff;
&-main {
}
&-extra {
position: absolute;
top: 0;
right: 0;
bottom: 0;
}
.title {
margin-bottom: 20px;
line-height: 20px;
font-size: 12px;
font-weight: 400;
color: rgba(107, 119, 140, 1);
:global {
.anticon {
margin-left: 6px;
}
}
}
.txt {
line-height: 32px;
font-size: 24px;
font-weight: 500;
color: rgba(23, 43, 77, 1);
}
}
.record {
&-tabs {
:global {
.ant-tabs-nav::before {
border-bottom: none;
}
}
}
&-btns {
margin-bottom: 16px;
}
&-row {
:global {
.ant-table-cell:first-child {
background-color: rgba(250, 251, 252, 1);
}
}
}
}
\ No newline at end of file
This diff is collapsed.
.tag {
line-height: 22px;
padding: 0 8px;
font-size: 12px;
font-weight: 400;
color: #00B37A;
background: #EBF7F2;
border-radius: 4px;
&__success {
color: #00B37A;
background: #EBF7F2;
}
&__warnning {
color: #FF991F;
background: #FFFAE6;
}
&__default {
color: #606266;
background: #F4F5F7;
}
&__danger {
color: #E63F3B;
background: #FFEBE6;
}
&__primary {
color: #3F7ED2;
background: #F0F8FF;
}
}
\ No newline at end of file
/*
* @Author: XieZhiXiong
* @Date: 2020-08-31 17:52:14
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-08-31 18:59:18
* @Description: 状态 tag
*/
import React from 'react';
import classNames from 'classnames';
import styles from './index.less';
interface StatusTagProps {
type: 'success' | 'warning' | 'default' | 'danger' | 'primary';
title: string;
};
const StatusTag: React.FC<StatusTagProps> = ({ type, title }) => {
const cls = classNames(styles.tag, styles[`tag__${type}`]);
return (
<span className={cls}>{title}</span>
);
};
export default StatusTag;
\ No newline at end of file
......@@ -29,8 +29,8 @@ interface Iprops {
footer?: React.ReactNode,
tableProps?: {
rowKey: string | ((record) => any)
},
width?: number,
mode: 'checkbox' | 'radio',
customizeRadio?: boolean,
/**
......@@ -45,6 +45,7 @@ interface Iprops {
* format话参数
*/
format?: ((value) => any) | null,
components?: { [key: string]: any },
effects?: ($, actions) => void,
fetchData: (params: any) => any,
onClose: () => void,
......@@ -53,7 +54,7 @@ interface Iprops {
}
const TableModal: React.FC<Iprops> = (props: Iprops) => {
const { title, visible, schema, columns, effects, tableProps, mode, expressionScope, fetchData, onClose, onOk, value, format, customizeRadio, modalType, footer } = props;
const { title, visible, schema, columns, effects, tableProps, mode, expressionScope, fetchData, onClose, onOk, value, format, customizeRadio, modalType, footer, width, components } = props;
const ref = useRef<any>({});
const isFirstLoad = useRef<boolean>(true)
const [selectRow, setSelectRow] = useState<number[] | string[]>(() => {
......@@ -132,7 +133,7 @@ const TableModal: React.FC<Iprops> = (props: Iprops) => {
visible={visible}
onCancel={handleOnClose}
// onOk={handleOk}
width={840}
width={width}
{...otherProps}
>
<StandardTable
......@@ -150,14 +151,19 @@ const TableModal: React.FC<Iprops> = (props: Iprops) => {
hideSelectAll: customizeRadio,
}}
formRender={(child, ps) => (
<div style={{display: "flex", flexDirection: 'row', justifyContent: 'space-between'}}>
<div>{child}</div>
<div>{ps}</div>
// <div style={{display: "flex", flexDirection: 'row', justifyContent: 'space-between'}}>
// <div>{child}</div>
// <div>{ps}</div>
// </div>
<div style={{position: "relative", }}>
<div >{child}</div>
<div style={{position: 'absolute', right: 0, top: 0}}>{ps}</div>
</div>
)}
controlRender={
<NiceForm
schema={schema}
components={components}
actions={formActions}
onSubmit={handleSearch}
expressionScope={expressionScope}
......@@ -182,7 +188,9 @@ TableModal.defaultProps = {
format: null,
customizeRadio: false,
modalType: "Modal",
footer: null
footer: null,
width: 840,
components: {}
}
export default TableModal;
.col {
margin-bottom: 16px;
}
.subRow {
width: 100%;
.subCol {
width : 100%;
text-align: right;
.select {
width : 160px;
margin : 0 0 16px 16px;
text-align: left;
&:nth-of-type(1) {
margin-left: 0;
}
}
}
}
.mainCol {
background-color: #fff;
margin-bottom : 24px;
padding : 0 24px;
box-sizing : border-box;
&-title {
font-size : 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color : #303133;
padding : 20px 0;
}
&:nth-last-of-type(1) {
margin: 0;
}
&-row {
display : flex;
flex-wrap : wrap;
padding-bottom: 16px;
&-col {
display: flex;
width : calc(100% / 2);
padding: 16px 0;
&-option {
flex : 1;
font-size : 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color : #909399;
&:nth-last-of-type(1) {
flex : 3;
padding-right: 20px;
box-sizing : border-box;
color : #303133;
}
}
}
}
&-rows {
display : flex;
padding-bottom: 16px;
&-cols {
flex: 1;
.cols-main {
display: flex;
padding: 16px 0;
&:nth-last-of-type(1) {
padding-bottom: 0;
}
&-options {
flex : 1;
font-size : 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color : #909399;
&:nth-last-of-type(1) {
flex : 3;
padding-right: 20px;
box-sizing : border-box;
color : #303133;
}
}
}
}
}
}
.nameCell {
text-align: left;
.nameCellTitle {
color : @main-color;
cursor: pointer;
}
.levelIcon1 {
width : 100%;
height : 16px;
background : url("/static/imgs/level1@2x.png") no-repeat;
background-size: 54px 16px;
margin-top : 8px;
}
.levelIcon2 {
width : 100%;
height : 16px;
background : url("/static/imgs/level2@2x.png") no-repeat;
background-size: 54px 16px;
margin-top : 8px;
}
.levelIcon3 {
width : 100%;
height : 16px;
background : url("/static/imgs/level3@2x.png") no-repeat;
background-size: 54px 16px;
margin-top : 8px;
}
}
.headerTop {
display : flex;
align-items: center;
font-size : 20px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
&-prefix {
width : 48px;
height : 48px;
line-height : 48px;
border-radius : 4px;
border : 1px solid #DFE1E6;
color : #fff;
text-align : center;
background-color: #8777D9;
}
&-name {
color : #303133;
margin: 0 8px 0 12px;
}
}
.headerMain {
display: flex;
&-left {
flex : 6;
display : flex;
flex-wrap : wrap;
padding-left: 90px;
&-option {
display : flex;
width : calc(100% / 3);
margin-bottom: 17px;
font-size : 12px;
font-family : PingFangSC-Regular, PingFang SC;
font-weight : 400;
color : #909399;
padding-right: 20px;
// &:nth-of-type(n + 4) {
// margin: 0;
// }
&:nth-of-type(3n+1) {
margin: 0;
}
div {
flex: 1;
&:nth-last-of-type(1) {
flex: 2;
}
}
}
}
&-right {
flex : 1;
text-align: right;
}
}
.saveBtn {
color : #fff;
background : @main-color;
margin-left: 10px;
}
......@@ -4,19 +4,51 @@ import {
MEMBER_STATUS_NORMAL,
MEMBER_STATUS_FROZEN,
MEMBER_INNER_STATUS_REGISTERED,
MEMBER_INNER_STATUS_UNCOMMITTED,
MEMBER_INNER_STATUS_UNREVIEWED_1,
MEMBER_INNER_STATUS_UNREVIEWED_2,
MEMBER_INNER_STATUS_FAILED,
MEMBER_INNER_STATUS_SUCCESS,
MEMBER_INNER_STATUS_TO_VERIFY_DEPOSITORY_DETAIL,
MEMBER_INNER_STATUS_DEPOSITORY_DETAIL_NOT_PASSED,
MEMBER_INNER_STATUS_TO_VERIFY_DEPOSITORY_QUALIFICATION,
MEMBER_INNER_STATUS_DEPOSITORY_QUALIFICATION_NOT_PASSED,
MEMBER_INNER_STATUS_TO_INSPECT_DEPOSITORY,
MEMBER_INNER_STATUS_DEPOSITORY_INSPECTION_NOT_PASSED,
MEMBER_INNER_STATUS_TO_CLASSFIY_DEPOSITORY,
MEMBER_INNER_STATUS_DEPOSITORY_CLASSIFICATION_NOT_PASSED,
MEMBER_INNER_STATUS_TO_DEPOSIT_GRADE_ONE,
MEMBER_INNER_STATUS_DEPOSITORY_GRADE_ONE_NOT_PASSED,
MEMBER_INNER_STATUS_TO_DEPOSIT_GRADE_TWO,
MEMBER_INNER_STATUS_DEPOSITORY_GRADE_TWO_NOT_PASSED,
MEMBER_INNER_STATUS_TO_COMFIRM_DEPOSITORY,
MEMBER_INNER_STATUS_VERIFY_PASSED,
MEMBER_INNER_STATUS_VERIFY_NOT_PASSED,
MEMBER_INNER_STATUS_VERIFY_TO_MODIFY_GRADE_ONE,
MEMBER_INNER_STATUS_MODIFY_GRADE_ONE_NOT_PASSED,
MEMBER_INNER_STATUS_TO_MODIFY_GRADE_TWO,
MEMBER_INNER_STATUS_MODIFY_GRADE_TWO_NOT_PASSED,
MEMBER_INNER_STATUS_TO_COMFIRM_MODIFY,
MEMBER_INNER_STATUS_MODIFY_PASSED,
MEMBER_INNER_STATUS_MODIFY_NOT_PASSED,
MEMBER_OUTER_STATUS_UNCOMMITTED,
MEMBER_OUTER_STATUS_UNREVIEWED,
MEMBER_OUTER_STATUS_FAILED,
MEMBER_OUTER_STATUS_SUCCESS,
PLATFORM_MEMBER_INNER_STATUS_COMMIT_NOT_PASSED,
PLATFORM_MEMBER_INNER_STATUS_TO_BE_VERIFY_STEP1,
PLATFORM_MEMBER_INNER_STATUS_VERIFY_STEP1_NOT_PASSED,
PLATFORM_MEMBER_INNER_STATUS_TO_BE_VERIFY_STEP2,
PLATFORM_MEMBER_INNER_STATUS_VERIFY_STEP2_NOT_PASSED,
PLATFORM_MEMBER_INNER_STATUS_TO_CONFIRM,
PLATFORM_MEMBER_INNER_STATUS_VERIFY_NOT_PASSED,
PLATFORM_MEMBER_INNER_STATUS_VERIFY_PASSED,
MEMBER_OUTER_TO_PLATFORM_VERIFY,
MEMBER_OUTER_STATUS_PLATFORM_VERIFYING,
MEMBER_OUTER_STATUS_PLATFORM_VERIFY_PASSED,
MEMBER_OUTER_STATUS_PLATFORM_VERIFY_NOT_PASSED,
MEMBER_OUTER_STATUS_DEPOSITING,
MEMBER_OUTER_STATUS_DEPOSITORY_PASSED,
MEMBER_OUTER_STATUS_DEPOSITORY_NOT_PASSED,
MEMBER_OUTER_STATUS_MODIFYING,
MEMBER_OUTER_STATUS_MODIFY_PASSED,
MEMBER_OUTER_STATUS_MODIFY_NOT_PASSED,
} from '@/constants/member';
import { EditableColumns } from '@/components/PolymericTable/interface';
import StatusTag from '@/components/StatusTag';
export const STATUS_COLOR_MAP = {
0: '#669EDE',
......@@ -36,40 +68,53 @@ export const MEMBER_STATUS_TAG_MAP = {
[MEMBER_STATUS_FROZEN]: 'default'
};
// 会员内部状态 StatusTag map
export const MEMBER_INNER_STATUS_TYPE = {
[MEMBER_INNER_STATUS_REGISTERED]: 'default',
[MEMBER_INNER_STATUS_UNCOMMITTED]: 'primary',
[MEMBER_INNER_STATUS_UNREVIEWED_1]: 'warning',
[MEMBER_INNER_STATUS_UNREVIEWED_2]: 'warning',
[MEMBER_INNER_STATUS_FAILED]: 'danger',
[MEMBER_INNER_STATUS_SUCCESS]: 'success',
};
// 会员外部状态 StatusTag map
export const MEMBER_OUTER_STATUS_TYPE = {
[MEMBER_OUTER_STATUS_UNCOMMITTED]: 'primary',
[MEMBER_OUTER_STATUS_UNREVIEWED]: 'warning',
[MEMBER_OUTER_STATUS_FAILED]: 'danger',
[MEMBER_OUTER_STATUS_SUCCESS]: 'success',
[MEMBER_OUTER_TO_PLATFORM_VERIFY]: 'default',
[MEMBER_OUTER_STATUS_PLATFORM_VERIFYING]: 'warning',
[MEMBER_OUTER_STATUS_PLATFORM_VERIFY_PASSED]: 'success',
[MEMBER_OUTER_STATUS_PLATFORM_VERIFY_NOT_PASSED]: 'danger',
[MEMBER_OUTER_STATUS_DEPOSITING]: 'warning',
[MEMBER_OUTER_STATUS_DEPOSITORY_PASSED]: 'success',
[MEMBER_OUTER_STATUS_DEPOSITORY_NOT_PASSED]: 'danger',
[MEMBER_OUTER_STATUS_MODIFYING]: 'warning',
[MEMBER_OUTER_STATUS_MODIFY_PASSED]: 'success',
[MEMBER_OUTER_STATUS_MODIFY_NOT_PASSED]: 'danger',
};
// 会员内部状态 Tag badge map
export const MEMBER_INNER_STATUS_BADGE_COLOR = {
[MEMBER_INNER_STATUS_REGISTERED]: '#606266',
[MEMBER_INNER_STATUS_UNCOMMITTED]: '#669EDE',
[MEMBER_INNER_STATUS_UNREVIEWED_1]: '#FFC400',
[MEMBER_INNER_STATUS_UNREVIEWED_2]: '#FFC400',
[MEMBER_INNER_STATUS_FAILED]: '#EF6260',
[MEMBER_INNER_STATUS_SUCCESS]: '#41CC9E',
};
[MEMBER_INNER_STATUS_TO_VERIFY_DEPOSITORY_DETAIL]: 'orange',
[MEMBER_INNER_STATUS_DEPOSITORY_DETAIL_NOT_PASSED]: 'red',
[MEMBER_INNER_STATUS_TO_VERIFY_DEPOSITORY_QUALIFICATION]: 'orange',
[MEMBER_INNER_STATUS_DEPOSITORY_QUALIFICATION_NOT_PASSED]: 'red',
[MEMBER_INNER_STATUS_TO_INSPECT_DEPOSITORY]: 'orange',
[MEMBER_INNER_STATUS_DEPOSITORY_INSPECTION_NOT_PASSED]: 'red',
[MEMBER_INNER_STATUS_TO_CLASSFIY_DEPOSITORY]: 'orange',
[MEMBER_INNER_STATUS_DEPOSITORY_CLASSIFICATION_NOT_PASSED]: 'red',
[MEMBER_INNER_STATUS_TO_DEPOSIT_GRADE_ONE]: 'orange',
[MEMBER_INNER_STATUS_DEPOSITORY_GRADE_ONE_NOT_PASSED]: 'red',
[MEMBER_INNER_STATUS_TO_DEPOSIT_GRADE_TWO]: 'orange',
[MEMBER_INNER_STATUS_DEPOSITORY_GRADE_TWO_NOT_PASSED]: 'red',
[MEMBER_INNER_STATUS_TO_COMFIRM_DEPOSITORY]: 'blue',
[MEMBER_INNER_STATUS_VERIFY_PASSED]: 'green',
[MEMBER_INNER_STATUS_VERIFY_NOT_PASSED]: 'red',
[MEMBER_INNER_STATUS_VERIFY_TO_MODIFY_GRADE_ONE]: 'orange',
[MEMBER_INNER_STATUS_MODIFY_GRADE_ONE_NOT_PASSED]: 'red',
[MEMBER_INNER_STATUS_TO_MODIFY_GRADE_TWO]: 'orange',
[MEMBER_INNER_STATUS_MODIFY_GRADE_TWO_NOT_PASSED]: 'red',
[MEMBER_INNER_STATUS_TO_COMFIRM_MODIFY]: 'blue',
[MEMBER_INNER_STATUS_MODIFY_PASSED]: 'green',
[MEMBER_INNER_STATUS_MODIFY_NOT_PASSED]: 'red',
// 会员外部状态 Tag badge map
export const MEMBER_OUTER_STATUS_BADGE_COLOR = {
[MEMBER_OUTER_STATUS_UNCOMMITTED]: '#FFC400',
[MEMBER_OUTER_STATUS_UNREVIEWED]: '#669EDE',
[MEMBER_OUTER_STATUS_FAILED]: '#EF6260',
[MEMBER_OUTER_STATUS_SUCCESS]: '#41CC9E',
[PLATFORM_MEMBER_INNER_STATUS_COMMIT_NOT_PASSED]: 'red',
[PLATFORM_MEMBER_INNER_STATUS_TO_BE_VERIFY_STEP1]: 'orange',
[PLATFORM_MEMBER_INNER_STATUS_VERIFY_STEP1_NOT_PASSED]: 'red',
[PLATFORM_MEMBER_INNER_STATUS_TO_BE_VERIFY_STEP2]: 'orange',
[PLATFORM_MEMBER_INNER_STATUS_VERIFY_STEP2_NOT_PASSED]: 'red',
[PLATFORM_MEMBER_INNER_STATUS_TO_CONFIRM]: 'blue',
[PLATFORM_MEMBER_INNER_STATUS_VERIFY_NOT_PASSED]: 'red',
[PLATFORM_MEMBER_INNER_STATUS_VERIFY_PASSED]: 'green',
};
export const MEMBER_OUTER_COLUMNS: EditableColumns[] = [
......@@ -89,7 +134,7 @@ export const MEMBER_OUTER_COLUMNS: EditableColumns[] = [
dataIndex: 'outerStatusName',
align: 'center',
render: (text, record) => (
<Badge color={MEMBER_OUTER_STATUS_BADGE_COLOR[record.outerStatus]} text={text} />
<StatusTag type={MEMBER_INNER_STATUS_BADGE_COLOR[record.outerStatus]} title={text} />
),
},
{
......
......@@ -24,7 +24,7 @@ const EvaluateDetail = () => {
return (
<Spin spinning={loading}>
<AnchorPage
title={initialValue?.subject}
title={`考评单号: ${initialValue?.appraisalNo}`}
anchors={anchorHeader}
// extra={headExtra && headExtra(detailInfo, returnAddress, exchangeAddress)}
>
......
......@@ -83,7 +83,7 @@ const TobeEvaluateDetail = () => {
return (
<Spin spinning={loading}>
<AnchorPage
title={initialValue?.name}
title={`考评单号: ${initialValue?.appraisalNo}`}
anchors={anchorHeader}
extra={
(
......
......@@ -36,7 +36,7 @@ const TobeEvaluateDetail = () => {
return (
<Spin spinning={loading}>
<AnchorPage
title={initialValue?.subject}
title={`考评单号: ${initialValue?.appraisalNo}`}
anchors={anchorHeader}
extra={
<Button loading={submitLoading} type="primary" onClick={onSubmitRes} icon={<CheckCircleOutlined />}>单据审核</Button>
......
......@@ -44,7 +44,7 @@ const TobeEvaluateDetail = () => {
return (
<Spin spinning={loading}>
<AnchorPage
title={initialValue?.subject}
title={`考评单号: ${initialValue?.appraisalNo}`}
anchors={anchorHeader}
extra={
<Button type="primary" onClick={() => toggle(true)} icon={<CheckCircleOutlined />}>单据审核</Button>
......
......@@ -44,7 +44,7 @@ const TobeEvaluateDetail = () => {
return (
<Spin spinning={loading}>
<AnchorPage
title={initialValue?.subject}
title={`考评单号: ${initialValue?.appraisalNo}`}
anchors={anchorHeader}
extra={
<Button type="primary" onClick={() => toggle(true)} icon={<CheckCircleOutlined />}>单据审核</Button>
......
......@@ -154,7 +154,7 @@ const TobeEvaluateDetail = () => {
return (
<Spin spinning={loading}>
<AnchorPage
title={initialValue?.subject}
title={`考评单号: ${initialValue?.appraisalNo}`}
anchors={anchorHeader}
extra={
(
......
......@@ -25,10 +25,10 @@ import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { PublicApi } from '@/services/api';
import { getAuth } from '@/utils/auth';
import {
MEMBER_OUTER_STATUS_UNCOMMITTED,
MEMBER_OUTER_STATUS_FAILED,
MEMBER_OUTER_STATUS_TO_PLATFORM_VERIFY,
MEMBER_OUTER_STATUS_PLATFORM_VERIFY_NOT_PASSED,
} from '@/constants/member';
import StatusTag from '../components/StatusTag';
import StatusTag from '@/components/StatusTag';
import { importSchema, auditModalSchema } from './schema';
import { coverColFiltersItem } from '../utils';
import { MEMBER_OUTER_STATUS_TYPE, MEMBER_STATUS_TAG_MAP } from '../constant';
......
......@@ -189,12 +189,15 @@ export const memberSchema: ISchema = {
layout: {
type: 'object',
'x-component': 'mega-layout',
"x-component-props": {
inline: true
},
properties: {
name: {
type: 'string',
'x-component': 'Search',
'x-component-props': {
placeholder: '搜索会员名称',
placeholder: '搜索会员名称1',
tip: '输入 会员名称 进行搜索',
advanced: false,
},
......
......@@ -99,7 +99,7 @@ const InspectionDetail: React.FC<Iprops> = (props: Iprops) => {
return (
<Spin spinning={loading}>
<AnchorPage
title={initialValue?.subject}
title={`考察主题: ${initialValue?.subject}`}
anchors={anchorHeader}
>
<div style={{ margin: `${theme["@margin-md"]} 0` }}>
......
......@@ -2,19 +2,41 @@
* @Author: XieZhiXiong
* @Date: 2021-05-21 18:18:44
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-05-21 18:20:06
* @LastEditTime: 2021-06-30 10:49:31
* @Description: 会员变更信息详情
*/
import React from 'react';
import { Row, Col } from 'antd';
import ChangedInfo from '../../components/MemberChangedInfo';
import { usePageStatus } from '@/hooks/usePageStatus';
import { PublicApi } from '@/services/api';
import ChangedInfo, { FetchParamsType, ReponseType } from '../../components/MemberChangedInfo';
const MemberChangedInfo = () => {
const { validateId } = usePageStatus();
const getInspectList = (params: FetchParamsType): Promise<ReponseType> => {
return new Promise((resolve, reject) => {
PublicApi.getMemberAbilityMaintenanceDetailDepositHistoryPage({
validateId,
...params,
})
.then((res) => {
if (res.code === 1000) {
resolve(res.data);
}
reject(res);
})
.catch((err) => {
reject(err);
});
});
};
return (
<Row gutter={[16, 16]}>
{/* 分类信息 */}
<Col span={24}>
<ChangedInfo id="changedInfo" />
<ChangedInfo fetchList={getInspectList} id="changedInfo" />
</Col>
</Row>
);
......
......@@ -15,7 +15,7 @@ import { FORM_FILTER_PATH } from '@/formSchema/const';
import EyePreview from '@/components/EyePreview';
import NiceForm from '@/components/NiceForm';
import LevelBrand from '@/components/LevelBrand';
import StatusTag from '../components/StatusTag';
import StatusTag from '@/components/StatusTag';
import { PublicApi } from '@/services/api';
import useSpliceArray from '@/hooks/useSpliceArray';
import { querySchema } from './schema';
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-05-26 16:52:48
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-17 10:46:31
* @LastEditTime: 2021-06-30 10:22:49
* @Description: 申请会员
*/
import React, { useState, useEffect, useRef } from 'react';
......@@ -66,7 +66,7 @@ type ValueType = {
},
}
let countDownLen = 3;
let countDownLen = 10;
const formActions = createFormActions();
const {
......@@ -164,12 +164,9 @@ const MemberQueryApplyMember: React.FC = () => {
}, []);
const handleSubmit = (values: ValueType) => {
const {
step3,
step4: {
qualities = [],
},
} = values;
const step3 = values.step3 || {};
// 没有触发 step4 下的表单元素改变的话,step4 为 undefined
const { qualities = [] } = values.step4 || {};
setSubmitLoading(true);
const msg = message.loading({
content: '正在保存,请稍候...',
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-05-26 17:00:39
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-15 14:05:18
* @LastEditTime: 2021-06-30 09:55:17
* @Description:
*/
import { ISchema } from '@formily/antd';
......
......@@ -20,7 +20,7 @@ const EvaluateDetail = () => {
return (
<Spin spinning={loading}>
<AnchorPage
title={initialValue?.subject}
title={`考评单号: ${initialValue?.appraisalNo}`}
anchors={anchorHeader}
// extra={headExtra && headExtra(detailInfo, returnAddress, exchangeAddress)}
>
......
......@@ -17,11 +17,12 @@ import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import EyePreview from '@/components/EyePreview';
import NiceForm from '@/components/NiceForm';
import StatusTag from '@/components/StatusTag';
import { PublicApi } from '@/services/api';
import useSpliceArray from '@/hooks/useSpliceArray';
import { querySchema } from './schema';
import {
MEMBER_OUTER_STATUS_BADGE_COLOR,
MEMBER_OUTER_STATUS_TYPE,
} from '../constant';
import LevelBrand from '../../../components/LevelBrand';
import AddRoleDrawer from './components/AddRoleDrawer';
......@@ -102,7 +103,7 @@ const MemberQuery: React.FC<{}> = () => {
filters: [],
onFilter: (value, record) => record.outerStatus === value,
filterMultiple: false,
render: (text, record) => <Badge color={MEMBER_OUTER_STATUS_BADGE_COLOR[record.outerStatus] || '#606266'} text={text} />,
render: (text, record) => <StatusTag type={MEMBER_OUTER_STATUS_TYPE[record.outerStatus]} title={text} />,
},
{
title: '操作',
......
......@@ -85,7 +85,7 @@ const rectificationAddDetail = () => {
return (
<Spin spinning={loading}>
<AnchorPage
title={initialValue?.subject}
title={`整改单号: ${initialValue?.rectifyNo}`}
anchors={headers}
extra={
initialValue?.currentOuterStep === 2 && (
......
......@@ -20,7 +20,7 @@ const TobeEvaluateDetail = () => {
return (
<Spin spinning={false}>
<AnchorPage
title={initialValue?.subject}
title={`事件主题:${initialValue?.subject}`}
anchors={headers}
>
<CustomizeColumn id="detail" data={basicInfo} title="投诉建议信息" column={3} />
......
......@@ -53,7 +53,7 @@ const rectificationAddDetail = () => {
return (
<Spin spinning={loading}>
<AnchorPage
title={initialValue?.subject}
title={`整改单号: ${initialValue?.rectifyNo}`}
anchors={headers}
>
<AuditProcess
......
import React from 'react';
import { PATTERN_MAPS } from '@/constants/regExp';
import PicWrap from './components/PicWrap';
export type ElementType = {
/**
......@@ -194,4 +196,23 @@ export function createMemberSchema(elements: ElementType[]) {
components[item.fieldName as string] = getFieldType(item);
}
return components;
};
// 根据 fieldType 渲染对应的内容
export function renderFieldTypeContent(fieldType: FieldType, fieldValue: any): React.ReactNode {
// 默认渲染 string
let node: React.ReactNode = fieldValue;
switch (fieldType) {
case 'upload':
node = (
<PicWrap
pics={[fieldValue.fieldValue]}
/>
);
break;
default:
break;
}
return node;
};
\ No newline at end of file
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