Commit 3e1a6698 authored by XieZhiXiong's avatar XieZhiXiong

对接进销存

parent df4777ca
...@@ -20,61 +20,52 @@ const MemberRoute = { ...@@ -20,61 +20,52 @@ const MemberRoute = {
{ {
path: '/memberCenter/memberAbility/manage/import', path: '/memberCenter/memberAbility/manage/import',
name: 'memberImport', name: 'memberImport',
key: 'memberImport',
component: '@/pages/member/memberImport/index', component: '@/pages/member/memberImport/index',
}, },
{ {
path: '/memberCenter/memberAbility/manage/importDetail', path: '/memberCenter/memberAbility/manage/importDetail',
name: 'importDetail', name: 'importDetail',
key: 'importDetail',
hideInMenu: true, hideInMenu: true,
component: '@/pages/member/memberImport/importDetail', component: '@/pages/member/memberImport/importDetail',
}, },
{ {
path: '/memberCenter/memberAbility/manage/addMember', path: '/memberCenter/memberAbility/manage/addMember',
name: 'addMember', name: 'addMember',
key: 'addMember',
hideInMenu: true, hideInMenu: true,
component: '@/pages/member/memberImport/addMember', component: '@/pages/member/memberImport/addMember',
}, },
{ {
path: '/memberCenter/memberAbility/manage/maintain', path: '/memberCenter/memberAbility/manage/maintain',
name: 'memberMaintain', name: 'memberMaintain',
key: 'memberMaintain',
component: '@/pages/member/memberMaintain/index', component: '@/pages/member/memberMaintain/index',
}, },
{ {
path: '/memberCenter/memberAbility/manage/maintainDetail', path: '/memberCenter/memberAbility/manage/maintainDetail',
name: 'maintainDetail', name: 'maintainDetail',
key: 'maintainDetail',
hideInMenu: true, hideInMenu: true,
component: '@/pages/member/memberMaintain/detailed', component: '@/pages/member/memberMaintain/detailed',
routes: [ routes: [
{ {
path: '/memberCenter/memberAbility/manage/maintainDetail/basicInfo', path: '/memberCenter/memberAbility/manage/maintainDetail/basicInfo',
name: 'basicInfo', name: 'basicInfo',
key: 'basicInfo',
component: '@/pages/member/memberMaintain/detailed/basicInfo', component: '@/pages/member/memberMaintain/detailed/basicInfo',
hideInMenu: true, hideInMenu: true,
}, },
{ {
path: '/memberCenter/memberAbility/manage/maintainDetail/levelInfo', path: '/memberCenter/memberAbility/manage/maintainDetail/levelInfo',
name: 'levelInfo', name: 'levelInfo',
key: 'levelInfo',
component: '@/pages/member/memberMaintain/detailed/levelInfo', component: '@/pages/member/memberMaintain/detailed/levelInfo',
hideInMenu: true, hideInMenu: true,
}, },
{ {
path: '/memberCenter/memberAbility/manage/maintainDetail/equityInfo', path: '/memberCenter/memberAbility/manage/maintainDetail/equityInfo',
name: 'equityInfo', name: 'equityInfo',
key: 'equityInfo',
component: '@/pages/member/memberMaintain/detailed/equityInfo', component: '@/pages/member/memberMaintain/detailed/equityInfo',
hideInMenu: true, hideInMenu: true,
}, },
{ {
path: '/memberCenter/memberAbility/manage/maintainDetail/sincerityInfo', path: '/memberCenter/memberAbility/manage/maintainDetail/sincerityInfo',
name: 'sincerityInfo', name: 'sincerityInfo',
key: 'sincerityInfo',
component: '@/pages/member/memberMaintain/detailed/sincerityInfo', component: '@/pages/member/memberMaintain/detailed/sincerityInfo',
hideInMenu: true, hideInMenu: true,
}, },
...@@ -83,78 +74,66 @@ const MemberRoute = { ...@@ -83,78 +74,66 @@ const MemberRoute = {
{ {
path: '/memberCenter/memberAbility/manage/frozen', path: '/memberCenter/memberAbility/manage/frozen',
name: 'maintainFrozen', name: 'maintainFrozen',
key: 'maintainFrozen',
hideInMenu: true, hideInMenu: true,
component: '@/pages/member/memberMaintain/frozen', component: '@/pages/member/memberMaintain/frozen',
}, },
{ {
path: '/memberCenter/memberAbility/manage/memberPrSubmit', path: '/memberCenter/memberAbility/manage/memberPrSubmit',
name: 'memberPrSubmit', name: 'memberPrSubmit',
key: 'memberPrSubmit',
component: '@/pages/member/memberPrSubmit/index' component: '@/pages/member/memberPrSubmit/index'
}, },
{ {
path: '/memberCenter/memberAbility/manage/auditPrSubmit', path: '/memberCenter/memberAbility/manage/auditPrSubmit',
name: 'auditPrSubmit', name: 'auditPrSubmit',
key: 'auditPrSubmit',
hideInMenu: true, hideInMenu: true,
component: '@/pages/member/memberPrSubmit/auditPrSubmit' component: '@/pages/member/memberPrSubmit/auditPrSubmit'
}, },
{ {
path: '/memberCenter/memberAbility/manage/memberPr1', path: '/memberCenter/memberAbility/manage/memberPr1',
name: 'memberPr1', name: 'memberPr1',
key: 'memberPr1',
component: '@/pages/member/memberPr1/index' component: '@/pages/member/memberPr1/index'
}, },
{ {
path: '/memberCenter/memberAbility/manage/auditPr1', path: '/memberCenter/memberAbility/manage/auditPr1',
name: 'auditPr1', name: 'auditPr1',
key: 'auditPr1',
hideInMenu: true, hideInMenu: true,
component: '@/pages/member/memberPr1/auditPr1' component: '@/pages/member/memberPr1/auditPr1'
}, },
{ {
path: '/memberCenter/memberAbility/manage/memberPr2', path: '/memberCenter/memberAbility/manage/memberPr2',
name: 'memberPr2', name: 'memberPr2',
key: 'memberPr2',
component: '@/pages/member/memberPr2/index' component: '@/pages/member/memberPr2/index'
}, },
{ {
path: '/memberCenter/memberAbility/manage/auditPr2', path: '/memberCenter/memberAbility/manage/auditPr2',
name: 'auditPr2', name: 'auditPr2',
key: 'auditPr2',
hideInMenu: true, hideInMenu: true,
component: '@/pages/member/memberPr2/auditPr2' component: '@/pages/member/memberPr2/auditPr2'
}, },
{ {
path: '/memberCenter/memberAbility/manage/memberPrConfirm', path: '/memberCenter/memberAbility/manage/memberPrConfirm',
name: 'memberPrConfirm', name: 'memberPrConfirm',
key: 'memberPrConfirm',
component: '@/pages/member/memberPrConfirm/index' component: '@/pages/member/memberPrConfirm/index'
}, },
{ {
path: '/memberCenter/memberAbility/manage/auditPrComfirm', path: '/memberCenter/memberAbility/manage/auditPrComfirm',
name: 'auditPrComfirm', name: 'auditPrComfirm',
key: 'auditPrComfirm',
hideInMenu: true, hideInMenu: true,
component: '@/pages/member/memberPrConfirm/auditPrComfirm' component: '@/pages/member/memberPrConfirm/auditPrComfirm'
}, },
{ {
path: '/memberCenter/memberAbility/manage/upgradeRule', path: '/memberCenter/memberAbility/manage/upgradeRule',
name: 'memberUpgradeRule', name: 'memberUpgradeRule',
key: 'memberUpgradeRule',
component: '@/pages/member/memberUpgradeRule/index', component: '@/pages/member/memberUpgradeRule/index',
}, },
{ {
path: '/memberCenter/memberAbility/manage/level', path: '/memberCenter/memberAbility/manage/level',
name: 'memberLevel', name: 'memberLevel',
key: 'memberLevel',
component: '@/pages/member/memberLevel/index' component: '@/pages/member/memberLevel/index'
}, },
{ {
path: '/memberCenter/memberAbility/manage/level/addEquity', path: '/memberCenter/memberAbility/manage/level/addEquity',
name: 'addEquity', name: 'addEquity',
key: 'addEquity',
hideInMenu: true, hideInMenu: true,
component: '@/pages/member/memberLevel/addEquity', component: '@/pages/member/memberLevel/addEquity',
}, },
...@@ -163,13 +142,11 @@ const MemberRoute = { ...@@ -163,13 +142,11 @@ const MemberRoute = {
{ {
path: '/memberCenter/memberAbility/query', path: '/memberCenter/memberAbility/query',
name: 'memberQuery', name: 'memberQuery',
key: 'memberQuery',
component: '@/pages/member/memberQuery/index', component: '@/pages/member/memberQuery/index',
}, },
{ {
path: '/memberCenter/memberAbility/query/detailed', path: '/memberCenter/memberAbility/query/detailed',
name: 'memberQueryDetailed', name: 'memberQueryDetailed',
key: 'memberQueryDetailed',
component: '@/pages/member/memberQuery/detailed', component: '@/pages/member/memberQuery/detailed',
hideInMenu: true, hideInMenu: true,
routes: [ routes: [
...@@ -206,7 +183,6 @@ const MemberRoute = { ...@@ -206,7 +183,6 @@ const MemberRoute = {
{ {
path: '/memberCenter/memberAbility/update', path: '/memberCenter/memberAbility/update',
name: 'memberUpdate', name: 'memberUpdate',
key: 'memberUpdate',
hideInMenu: true, hideInMenu: true,
component: '@/pages/member/memberQuery/update', component: '@/pages/member/memberQuery/update',
}, },
......
/* /*
* @Author: LeeJiancong * @Author: LeeJiancong
* @Date: 2020-07-31 19:56:22 * @Date: 2020-07-31 19:56:22
* @LastEditors: LeeJiancong * @LastEditors: XieZhiXiong
* @Copyright: 1549414730@qq.com * @Copyright: 1549414730@qq.com
* @LastEditTime: 2020-09-10 17:07:48 * @LastEditTime: 2020-09-14 19:37:53
*/ */
const TranactionRoute = { const TranactionRoute = {
...@@ -20,46 +20,39 @@ const TranactionRoute = { ...@@ -20,46 +20,39 @@ const TranactionRoute = {
{ {
path: '/memberCenter/tranactionAbility/stockSellStorage/warehouse', path: '/memberCenter/tranactionAbility/stockSellStorage/warehouse',
name: 'warehouse', name: 'warehouse',
key: 'warehouse',
component: '@/pages/transaction/stockSellStorage/warehouse/index', component: '@/pages/transaction/stockSellStorage/warehouse/index',
}, },
{ {
path: '/memberCenter/tranactionAbility/stockSellStorage/addWarehouse', path: '/memberCenter/tranactionAbility/stockSellStorage/addWarehouse',
name: 'addWarehouse', name: 'addWarehouse',
key: 'addWarehouse',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/stockSellStorage/warehouse/addWarehouse', component: '@/pages/transaction/stockSellStorage/warehouse/addWarehouse',
}, },
{ {
path: '/memberCenter/tranactionAbility/stockSellStorage/billsType', path: '/memberCenter/tranactionAbility/stockSellStorage/billsType',
name: 'billsType', name: 'billsType',
key: 'billsType',
component: '@/pages/transaction/stockSellStorage/billsType/index', component: '@/pages/transaction/stockSellStorage/billsType/index',
}, },
{ {
path: '/memberCenter/tranactionAbility/stockSellStorage/addBillsType', path: '/memberCenter/tranactionAbility/stockSellStorage/addBillsType',
name: 'addBillsType', name: 'addBillsType',
key: 'addBillsType',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/stockSellStorage/billsType/addBillsType', component: '@/pages/transaction/stockSellStorage/billsType/addBillsType',
}, },
{ {
path: '/memberCenter/tranactionAbility/stockSellStorage/bills', path: '/memberCenter/tranactionAbility/stockSellStorage/bills',
name: 'bills', name: 'bills',
key: 'bills',
component: '@/pages/transaction/stockSellStorage/bills/index', component: '@/pages/transaction/stockSellStorage/bills/index',
}, },
{ {
path: '/memberCenter/tranactionAbility/stockSellStorage/addBills', path: '/memberCenter/tranactionAbility/stockSellStorage/addBills',
name: 'addBills', name: 'addBills',
key: 'addBills',
hideInMenu: true, hideInMenu: true,
component: '@/pages/transaction/stockSellStorage/bills/addBills', component: '@/pages/transaction/stockSellStorage/bills/addBills',
}, },
{ {
path: '/memberCenter/tranactionAbility/stockSellStorage/inventory', path: '/memberCenter/tranactionAbility/stockSellStorage/inventory',
name: 'inventory', name: 'inventory',
key: 'inventory',
component: '@/pages/transaction/stockSellStorage/inventory/index', component: '@/pages/transaction/stockSellStorage/inventory/index',
}, },
] ]
......
...@@ -267,3 +267,19 @@ export const POSITION_STATUS = { ...@@ -267,3 +267,19 @@ export const POSITION_STATUS = {
[POSITION_STATUS_EFFECTIVE]: '有效', [POSITION_STATUS_EFFECTIVE]: '有效',
[POSITION_STATUS_INVALID]: '无效', [POSITION_STATUS_INVALID]: '无效',
}; };
// 单据类型状态
export const DOC_TYPE_STATUS_EFFECTIVE = 1; // 有效的
export const DOC_TYPE_STATUS_INVALID = 0; // 无效的
export const DOC_TYPE_STATUS = {
[DOC_TYPE_STATUS_EFFECTIVE]: '有效',
[DOC_TYPE_STATUS_INVALID]: '无效',
};
// 单据类型方向
export const DOC_DIRECTION_WAREHOUSING = 1; // 入库
export const DOC_DIRECTION_OUTGOING = 2; // 出库
export const DOC_DIRECTION = {
[DOC_DIRECTION_WAREHOUSING]: '入库 + ',
[DOC_DIRECTION_OUTGOING]: '出库 - ',
};
\ No newline at end of file
...@@ -134,6 +134,7 @@ export const auditModalSchema: ISchema = { ...@@ -134,6 +134,7 @@ export const auditModalSchema: ISchema = {
type: 'string', type: 'string',
title: '审核不通过原因', title: '审核不通过原因',
'x-component': 'textarea', 'x-component': 'textarea',
required: true,
'x-component-props': { 'x-component-props': {
placeholder: '在此输入你的内容,最长120个字符,60个汉字', placeholder: '在此输入你的内容,最长120个字符,60个汉字',
maxLength: 60, maxLength: 60,
......
...@@ -133,6 +133,7 @@ export const auditModalSchema: ISchema = { ...@@ -133,6 +133,7 @@ export const auditModalSchema: ISchema = {
reason: { reason: {
type: 'string', type: 'string',
title: '审核不通过原因', title: '审核不通过原因',
required: true,
'x-component': 'textarea', 'x-component': 'textarea',
'x-component-props': { 'x-component-props': {
placeholder: '在此输入你的内容,最长120个字符,60个汉字', placeholder: '在此输入你的内容,最长120个字符,60个汉字',
......
...@@ -16,6 +16,7 @@ import { PublicApi } from '@/services/api'; ...@@ -16,6 +16,7 @@ import { PublicApi } from '@/services/api';
import { GetMemberAbilityValidateStep1DetailResponse } from '@/services/MemberApi'; import { GetMemberAbilityValidateStep1DetailResponse } from '@/services/MemberApi';
import { createFormActions, FormEffectHooks, FormPath } from '@formily/antd'; import { createFormActions, FormEffectHooks, FormPath } from '@formily/antd';
import NiceForm from '@/components/NiceForm'; import NiceForm from '@/components/NiceForm';
import { MEMBER_OUTER_STATUS_SUCCESS } from '@/constants';
import { MEMBER_INNER_STATUS_BADGE_COLOR, MEMBER_STATUS_TAG_MAP, MEMBER_OUTER_STATUS_TYPE } from '../constant'; import { MEMBER_INNER_STATUS_BADGE_COLOR, MEMBER_STATUS_TAG_MAP, MEMBER_OUTER_STATUS_TYPE } from '../constant';
import { auditModalSchema } from './schema'; import { auditModalSchema } from './schema';
import HeadInfo from '../components/HeadInfo'; import HeadInfo from '../components/HeadInfo';
...@@ -85,6 +86,21 @@ const AuditPrComfirm: React.FC<{}> = () => { ...@@ -85,6 +86,21 @@ const AuditPrComfirm: React.FC<{}> = () => {
} }
setMemberInfo(res.data || null); setMemberInfo(res.data || null);
// 外部状态为 审核通过 才能选择 审核通过选项
if (res.data.outerStatus !== MEMBER_OUTER_STATUS_SUCCESS) {
modalFormActions.setFieldState('agree', state => {
const newMenu =
state.props.enum.map(
(item: { label: string, value: any }) => ({
...item,
disabled: item.value === 1,
})
);
FormPath.setIn(state, 'props.enum', newMenu);
FormPath.setIn(state, 'value', 0);
});
}
}).finally(() => { }).finally(() => {
setInfoLoading(false); setInfoLoading(false);
}); });
......
...@@ -124,8 +124,15 @@ export const auditModalSchema: ISchema = { ...@@ -124,8 +124,15 @@ export const auditModalSchema: ISchema = {
type: 'string', type: 'string',
default: 1, default: 1,
enum: [ enum: [
{ label: '审核通过', value: 1 }, {
{ label: '审核不通过', value: 0 }, label: '审核通过',
value: 1,
disabled: false,
},
{
label: '审核不通过',
value: 0,
},
], ],
'x-component': 'radio', 'x-component': 'radio',
'x-component-props': {}, 'x-component-props': {},
...@@ -133,6 +140,7 @@ export const auditModalSchema: ISchema = { ...@@ -133,6 +140,7 @@ export const auditModalSchema: ISchema = {
reason: { reason: {
type: 'string', type: 'string',
title: '审核不通过原因', title: '审核不通过原因',
required: true,
'x-component': 'textarea', 'x-component': 'textarea',
'x-component-props': { 'x-component-props': {
placeholder: '在此输入你的内容,最长120个字符,60个汉字', placeholder: '在此输入你的内容,最长120个字符,60个汉字',
......
...@@ -16,6 +16,10 @@ import { PublicApi } from '@/services/api'; ...@@ -16,6 +16,10 @@ import { PublicApi } from '@/services/api';
import { GetMemberAbilityValidateCommitDetailResponse } from '@/services/MemberApi'; import { GetMemberAbilityValidateCommitDetailResponse } from '@/services/MemberApi';
import { createAsyncFormActions, createFormActions, FormEffectHooks, FormPath } from '@formily/antd'; import { createAsyncFormActions, createFormActions, FormEffectHooks, FormPath } from '@formily/antd';
import NiceForm from '@/components/NiceForm'; import NiceForm from '@/components/NiceForm';
import {
MEMBER_TYPE_CHANNEL_CORPORATE,
MEMBER_TYPE_CHANNEL_INDIVIDUAL,
} from '@/constants';
import { MEMBER_INNER_STATUS_BADGE_COLOR, MEMBER_STATUS_TAG_MAP, MEMBER_OUTER_STATUS_TYPE } from '../constant'; import { MEMBER_INNER_STATUS_BADGE_COLOR, MEMBER_STATUS_TAG_MAP, MEMBER_OUTER_STATUS_TYPE } from '../constant';
import { channelSchema, auditModalSchema } from './schema'; import { channelSchema, auditModalSchema } from './schema';
import HeadInfo from '../components/HeadInfo'; import HeadInfo from '../components/HeadInfo';
...@@ -167,20 +171,27 @@ const AuditPrSubmit: React.FC<{}> = () => { ...@@ -167,20 +171,27 @@ const AuditPrSubmit: React.FC<{}> = () => {
}; };
// 提交审核 // 提交审核
const handleSubmit = values => { const handleSubmit = async values => {
setConfirmLoading(true); setConfirmLoading(true);
// 调用渠道 Form 的 submit
const promises: any = [ // 存在渠道信息,则先修改渠道信息,在提交审核结果
formActions.submit(), if (
PublicApi.postMemberAbilityValidateCommitSubmit({ memberInfo.memberTypeEnum === MEMBER_TYPE_CHANNEL_CORPORATE ||
memberInfo.memberTypeEnum === MEMBER_TYPE_CHANNEL_INDIVIDUAL
) {
const updatedRes: any = await formActions.submit();
if (updatedRes.payload.code !== 1000) {
setConfirmLoading(false);
return;
}
}
const commitRes = await PublicApi.postMemberAbilityValidateCommitSubmit({
memberId: id, memberId: id,
validateId: validateId, validateId: validateId,
...values, ...values,
}), });
];
Promise.all(promises).then(resArr => { if (commitRes.code === 1000) {
if (resArr.every((item: { code: number }) => item.code === 1000)) {
setModalVisible(false); setModalVisible(false);
setUnsaved(false); setUnsaved(false);
setTimeout(() => { setTimeout(() => {
...@@ -188,9 +199,6 @@ const AuditPrSubmit: React.FC<{}> = () => { ...@@ -188,9 +199,6 @@ const AuditPrSubmit: React.FC<{}> = () => {
}, 800); }, 800);
} }
setConfirmLoading(false); setConfirmLoading(false);
}).catch(err => {
setConfirmLoading(false);
});
}; };
return ( return (
......
...@@ -218,18 +218,13 @@ export const auditModalSchema: ISchema = { ...@@ -218,18 +218,13 @@ export const auditModalSchema: ISchema = {
reason: { reason: {
type: 'string', type: 'string',
title: '审核不通过原因', title: '审核不通过原因',
required: true,
'x-component': 'textarea', 'x-component': 'textarea',
'x-component-props': { 'x-component-props': {
placeholder: '在此输入你的内容,最长120个字符,60个汉字', placeholder: '在此输入你的内容,最长120个字符,60个汉字',
maxLength: 60, maxLength: 60,
rows: 5, rows: 5,
}, },
'x-rules': [
// {
// required: true,
// message: '请填写审核不通过原因',
// }
],
}, },
}, },
}, },
......
import React from 'react'; import React, { useState, useEffect } from 'react';
import { history } from 'umi'; import { Button, Card, Spin } from 'antd';
import { history, Prompt } from 'umi';
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { SaveOutlined } from '@ant-design/icons'; import { SaveOutlined } from '@ant-design/icons';
import { createFormActions } from '@formily/antd'; import { createFormActions, FormEffectHooks } from '@formily/antd';
import { Button, Card } from 'antd';
import ReutrnEle from '@/components/ReturnEle'; import ReutrnEle from '@/components/ReturnEle';
import NiceForm from '@/components/NiceForm'; import NiceForm from '@/components/NiceForm';
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus'; import { usePageStatus, PageStatus } from '@/hooks/usePageStatus';
...@@ -11,27 +11,68 @@ import { useInitValue } from '@/formSchema/effects/useInitValue'; ...@@ -11,27 +11,68 @@ import { useInitValue } from '@/formSchema/effects/useInitValue';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { billsTypeDetailSchema } from './schema'; import { billsTypeDetailSchema } from './schema';
const addSchemaAction = createFormActions(); const formActions = createFormActions();
const {
onFormInputChange$,
} = FormEffectHooks;
const AddWarehouse: React.FC<{}> = props => { const AddWarehouse: React.FC<{}> = props => {
const { pageStatus, preview, id } = usePageStatus(); const { pageStatus, preview, id } = usePageStatus();
const initValue = useInitValue(PublicApi.getWarehouseInvoicesTypeDetails); const initValue = useInitValue(PublicApi.getWarehouseInvoicesTypeDetails);
const [info, setInfo] = useState({});
const [unsaved, setUnsaved] = useState(false);
const [infoLoading, setInfoLoading] = useState(false);
const [submitLoading, setSubmitLoading] = useState(false);
const docTypeInfo = async () => {
if (!id) {
return;
}
setInfoLoading(true);
const infoRes = await PublicApi.getWarehouseInvoicesTypeDetails({
id,
});
if (infoRes.code === 1000) {
setInfo(infoRes.data);
}
setInfoLoading(false);
};
useEffect(() => {
docTypeInfo();
}, []);
const handleSubmit = value => { const handleSubmit = value => {
if (pageStatus === 0) { if (!id) {
PublicApi.postWarehouseInvoicesTypeAdd({ ...value }).then(res => { setSubmitLoading(true);
if (res.code === 1000) return history.goBack(); PublicApi.postWarehouseInvoicesTypeAdd({ ...value })
.then(res => {
if (res.code === 1000) {
setTimeout(() => {
history.goBack()
}, 800);
};
})
.finally(() => {
setSubmitLoading(false);
}); });
} else { } else {
setSubmitLoading(true);
PublicApi.postWarehouseInvoicesTypeUpdate({ PublicApi.postWarehouseInvoicesTypeUpdate({
id: id, id: id,
...value, ...value,
}).then(res => { }).then(res => {
if (res.code === 1000) return history.goBack(); if (res.code === 1000) {
history.goBack();
}
}); });
} }
setUnsaved(false);
}; };
return ( return (
<Spin spinning={infoLoading}>
<PageHeaderWrapper <PageHeaderWrapper
onBack={() => history.goBack()} onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回" />} backIcon={<ReutrnEle description="返回" />}
...@@ -49,7 +90,8 @@ const AddWarehouse: React.FC<{}> = props => { ...@@ -49,7 +90,8 @@ const AddWarehouse: React.FC<{}> = props => {
key="1" key="1"
type="primary" type="primary"
icon={<SaveOutlined />} icon={<SaveOutlined />}
onClick={() => addSchemaAction.submit()} loading={submitLoading}
onClick={() => formActions.submit()}
> >
保存 保存
</Button>, </Button>,
...@@ -61,14 +103,22 @@ const AddWarehouse: React.FC<{}> = props => { ...@@ -61,14 +103,22 @@ const AddWarehouse: React.FC<{}> = props => {
<NiceForm <NiceForm
previewPlaceholder="' '" previewPlaceholder="' '"
editable={pageStatus !== PageStatus.PREVIEW} editable={pageStatus !== PageStatus.PREVIEW}
effects={$ => {}} effects={$ => {
initialValues={initValue} onFormInputChange$().subscribe(() => {
if (!unsaved) {
setUnsaved(true);
}
});
}}
initialValues={info}
onSubmit={handleSubmit} onSubmit={handleSubmit}
actions={addSchemaAction} actions={formActions}
schema={billsTypeDetailSchema} schema={billsTypeDetailSchema}
/> />
</Card> </Card>
<Prompt when={unsaved} message="您还有未保存的内容,是否确定要离开?" />
</PageHeaderWrapper> </PageHeaderWrapper>
</Spin>
); );
}; };
......
import React, { useState, useEffect, useRef } from 'react'; import React, { useRef } from 'react';
import { history } from 'umi'; import { history } from 'umi';
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { import {
Tooltip,
Input,
Button, Button,
Card, Card,
Row,
Col,
Space, Space,
Popconfirm, Popconfirm,
} from 'antd'; } from 'antd';
import { createFormActions } from '@formily/antd';
import { StandardTable } from 'god';
import { PlusOutlined } from '@ant-design/icons'; import { PlusOutlined } from '@ant-design/icons';
import { PublicApi } from '@/services/api';
import EyePreview from '@/components/EyePreview'; import EyePreview from '@/components/EyePreview';
import StatusSwitch from '@/components/StatusSwitch'; import StatusSwitch from '@/components/StatusSwitch';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { PublicApi } from '@/services/api'; import NiceForm from '@/components/NiceForm';
import { DOC_TYPE_STATUS_EFFECTIVE, DOC_TYPE_STATUS_INVALID, DOC_DIRECTION } from '@/constants';
import { searchSchema } from './schema';
const formActions = createFormActions();
const billsType: React.FC<{}> = () => { const billsType: React.FC<{}> = () => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [searchKey, setSearchKey] = useState<any>({
name: '',
state: '',
});
const columns: ColumnType<any>[] = [ const columns: ColumnType<any>[] = [
{ {
title: 'ID', title: 'ID',
dataIndex: 'id', dataIndex: 'id',
align: 'center', align: 'center',
key: 'id',
}, },
{ {
title: '单据类型编号', title: '单据类型编号',
dataIndex: 'number', dataIndex: 'number',
align: 'center', align: 'center',
key: 'number',
}, },
{ {
title: '单据名称', title: '单据名称',
dataIndex: 'name', dataIndex: 'name',
align: 'center', align: 'center',
key: 'name',
render: (text: any, record: any) => { render: (text: any, record: any) => {
return ( return (
<EyePreview <EyePreview
...@@ -57,25 +52,21 @@ const billsType: React.FC<{}> = () => { ...@@ -57,25 +52,21 @@ const billsType: React.FC<{}> = () => {
title: '方向', title: '方向',
dataIndex: 'direction', dataIndex: 'direction',
align: 'center', align: 'center',
key: 'direction', render: text => {
render: (text: any, record: any) => { return <span>{DOC_DIRECTION[text]}</span>;
return <span>{record.direction === 1 ? '入库 +' : '出库 -'}</span>;
}, },
}, },
{ {
title: '状态', title: '状态',
dataIndex: 'status', dataIndex: 'status',
align: 'center', align: 'center',
key: 'status', sorter: (a, b) => a.state - b.state,
sorter: true, render: (text: any, record: any) => (
render: (text: any, record: any) => {
return (
<StatusSwitch <StatusSwitch
handleConfirm={() => handleModify(record)} handleConfirm={() => handleModify(record)}
record={record} record={record}
/> />
); ),
},
}, },
{ {
title: '操作', title: '操作',
...@@ -83,7 +74,7 @@ const billsType: React.FC<{}> = () => { ...@@ -83,7 +74,7 @@ const billsType: React.FC<{}> = () => {
align: 'center', align: 'center',
render: (text: any, record: any) => ( render: (text: any, record: any) => (
<> <>
{record.state != 1 ? ( {record.state === DOC_TYPE_STATUS_INVALID && (
<> <>
<Button <Button
type="link" type="link"
...@@ -96,32 +87,31 @@ const billsType: React.FC<{}> = () => { ...@@ -96,32 +87,31 @@ const billsType: React.FC<{}> = () => {
编辑 编辑
</Button> </Button>
<Popconfirm <Popconfirm
title="确定要执行这个操作?" title="确定要删除该单据类型吗?"
onConfirm={() => handleDelete(record)} onConfirm={() => handleDelete(record)}
onCancel={() => console.log('...')}
okText="是" okText="是"
cancelText="否" cancelText="否"
> >
<Button type="link">删除</Button> <Button type="link" danger>删除</Button>
</Popconfirm> </Popconfirm>
</> </>
) : (
''
)} )}
</> </>
), ),
}, },
]; ];
// 模拟请求 const fetchListData = (params: any) => {
const fetchData = (params: any) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
PublicApi.getWarehouseInvoicesTypeList({ PublicApi.getWarehouseInvoicesTypeList(params)
...searchKey, .then(res => {
current: params.current, if (res.code === 1000) {
pageSize: params.pageSize,
}).then(res => {
resolve(res.data); resolve(res.data);
}
reject();
})
.catch(() => {
reject();
}); });
}); });
}; };
...@@ -129,9 +119,11 @@ const billsType: React.FC<{}> = () => { ...@@ -129,9 +119,11 @@ const billsType: React.FC<{}> = () => {
const handleModify = (record: any) => { const handleModify = (record: any) => {
PublicApi.postWarehouseInvoicesTypeStateUpdate({ PublicApi.postWarehouseInvoicesTypeStateUpdate({
id: record.id, id: record.id,
state: record.state === 1 ? 0 : 1, state: record.state === DOC_TYPE_STATUS_EFFECTIVE ? DOC_TYPE_STATUS_INVALID : DOC_TYPE_STATUS_EFFECTIVE,
}).then(res => { }).then(res => {
if (res.code === 1000) return ref.current.reload(); if (res.code === 1000) {
ref.current.reload();
}
}); });
}; };
...@@ -139,77 +131,50 @@ const billsType: React.FC<{}> = () => { ...@@ -139,77 +131,50 @@ const billsType: React.FC<{}> = () => {
PublicApi.postWarehouseInvoicesTypeDelete({ PublicApi.postWarehouseInvoicesTypeDelete({
id: record.id, id: record.id,
}).then(res => { }).then(res => {
if (res.code === 1000) return ref.current.reload(); if (res.code === 1000) {
ref.current.reload();
};
}); });
}; };
const handleJumpAdd = () => {
history.push(`/memberCenter/tranactionAbility/stockSellStorage/addBillsType`);
};
const Actions = (
<Space>
<Button
type="primary"
icon={<PlusOutlined />}
onClick={handleJumpAdd}
>
新建
</Button>
</Space>
);
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Card> <Card>
<StandardTable <StandardTable
tableProps={{ tableProps={{
rowKey: 'id', rowKey: 'id',
onChange: (pagination, filters, sorter) => {
let state =
sorter.order === 'ascend'
? 1
: sorter.order === 'descend'
? 0
: '';
setSearchKey({ ...searchKey, state: state });
},
}} }}
columns={columns} columns={columns}
currentRef={ref} currentRef={ref}
fetchTableData={(params: any) => fetchData(params)} fetchTableData={(params: any) => fetchListData(params)}
controlRender={ controlRender={
<Row justify="space-between" style={{ marginBottom: '16px' }}> <NiceForm
<Col> actions={formActions}
<Space> expressionScope={{
<Button Actions,
type="primary"
onClick={() =>
history.push(
'/memberCenter/tranactionAbility/stockSellStorage/addBillsType',
)
}
>
<PlusOutlined />
新建
</Button>
</Space>
</Col>
<Col>
<Space style={{ justifyContent: 'flex-end', width: '100%' }}>
<Tooltip
trigger={['focus']}
placement="top"
title={<span>输入单据名称进行搜索</span>}
>
<Input.Search
style={{ width: '232px' }}
value={searchKey.name}
placeholder="搜索"
onChange={e =>
setSearchKey({ ...searchKey, name: e.target.value })
}
onSearch={(val, e) => {
e.preventDefault();
ref.current.reload();
}} }}
/> effects={($, actions) => {
</Tooltip>
<Button
onClick={() => {
setSearchKey({ name: '', state: '' });
ref.current.reload();
}} }}
> schema={searchSchema}
重置 onSubmit={values => ref.current.reload(values)}
</Button> />
</Space>
</Col>
</Row>
} }
/> />
</Card> </Card>
......
import { ISchema } from '@formily/antd'; import { ISchema } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const'; import { FORM_FILTER_PATH } from '@/formSchema/const';
import { DOC_DIRECTION_WAREHOUSING, DOC_DIRECTION_OUTGOING, DOC_DIRECTION } from '@/constants';
export const billsTypeSchema: ISchema = { export const billsTypeSchema: ISchema = {
type: 'object', type: 'object',
...@@ -32,16 +33,27 @@ export const billsTypeDetailSchema: ISchema = { ...@@ -32,16 +33,27 @@ export const billsTypeDetailSchema: ISchema = {
title: '单据类型名称', title: '单据类型名称',
'x-component-props': { 'x-component-props': {
placeholder: '最长20个字符,10个汉字', placeholder: '最长20个字符,10个汉字',
maxLength: 10,
}, },
required: true, required: true,
'x-rules': [
{
limitByte: true, // 自定义校验规则
maxByte: 20,
}
],
}, },
direction: { direction: {
type: 'string', type: 'string',
title: '仓库负责人', title: '单据类型方向',
enum: [ enum: [
{ label: '入库', value: 1 }, {
{ label: '出库', value: 2 }, label: DOC_DIRECTION[DOC_DIRECTION_WAREHOUSING],
value: DOC_DIRECTION_WAREHOUSING,
},
{
label: DOC_DIRECTION[DOC_DIRECTION_OUTGOING],
value: DOC_DIRECTION_OUTGOING,
},
], ],
'x-component-props': { 'x-component-props': {
placeholder: '请选择', placeholder: '请选择',
...@@ -52,3 +64,33 @@ export const billsTypeDetailSchema: ISchema = { ...@@ -52,3 +64,33 @@ export const billsTypeDetailSchema: ISchema = {
}, },
}, },
}; };
export const searchSchema: ISchema = {
type: 'object',
properties: {
searchWrap: {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
grid: true,
},
properties: {
actions: {
type: 'object',
'x-component': 'Children',
'x-component-props': {
children: '{{Actions}}',
},
},
name: {
type: 'string',
'x-component': 'Search',
'x-component-props': {
placeholder: '搜索',
advanced: false,
},
},
},
},
},
};
...@@ -25,6 +25,9 @@ const AddWarehouse: React.FC<{}> = (props: any) => { ...@@ -25,6 +25,9 @@ const AddWarehouse: React.FC<{}> = (props: any) => {
const [submitLoading, setSubmitLoading] = useState(false); const [submitLoading, setSubmitLoading] = useState(false);
const getWarehouseInfo = async () => { const getWarehouseInfo = async () => {
if (!id) {
return;
}
setInfoLoading(true); setInfoLoading(true);
const infoRes = await PublicApi.getWarehouseWarehouseDetails({ const infoRes = await PublicApi.getWarehouseWarehouseDetails({
id, id,
......
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