Commit 0d9a6c8d authored by xiexiuxing's avatar xiexiuxing

解决冲突

parents fefd59a3 859a6f7f
registry="http://10.0.0.19:4873" registry="http://npm.shushangyun.com"
# registry = "https://registry.npmjs.org/" # registry = "https://registry.npmjs.org/"
...@@ -64,8 +64,8 @@ const config: any = { ...@@ -64,8 +64,8 @@ const config: any = {
], ],
[ [
'import', 'import',
{ libraryName: 'god', libraryDirectory: 'es', style: true }, { libraryName: '@linkseeks/god', libraryDirectory: 'es', style: true },
'god', '@linkseeks/god',
], ],
[ [
'import', 'import',
...@@ -100,6 +100,9 @@ const config: any = { ...@@ -100,6 +100,9 @@ const config: any = {
logLevel: 'info', logLevel: 'info',
defaultSizes: 'parsed', // stat // gzip defaultSizes: 'parsed', // stat // gzip
}, },
plugins: [
"@linkseeks/umi-plugin-yapi"
],
inlineLimit: 10000, inlineLimit: 10000,
// chunks: isProduction && ['styles', 'vendors', 'umi', 'services'], // chunks: isProduction && ['styles', 'vendors', 'umi', 'services'],
chainWebpack: function(config, { webpack }) { chainWebpack: function(config, { webpack }) {
......
...@@ -70,6 +70,9 @@ ...@@ -70,6 +70,9 @@
"@linkseeks/design-react": "^1.0.0", "@linkseeks/design-react": "^1.0.0",
"@linkseeks/design-react-web": "^1.0.0", "@linkseeks/design-react-web": "^1.0.0",
"@linkseeks/design-ui": "^1.0.5", "@linkseeks/design-ui": "^1.0.5",
"@linkseeks/babel-plugin-yapi-import": "^1.0.0",
"@linkseeks/umi-plugin-yapi": "1.0.1",
"@linkseeks/god": "^1.0.0",
"@turf/turf": "^6.4.0", "@turf/turf": "^6.4.0",
"@types/crypto-js": "^4.0.1", "@types/crypto-js": "^4.0.1",
"@types/js-cookie": "^2.2.6", "@types/js-cookie": "^2.2.6",
...@@ -81,14 +84,12 @@ ...@@ -81,14 +84,12 @@
"antd-dayjs-webpack-plugin": "^1.0.6", "antd-dayjs-webpack-plugin": "^1.0.6",
"antd-img-crop": "^3.12.0", "antd-img-crop": "^3.12.0",
"babel-plugin-lodash": "^3.3.4", "babel-plugin-lodash": "^3.3.4",
"babel-plugin-yapi-import": "1.0.4",
"bignumber.js": "^9.0.1", "bignumber.js": "^9.0.1",
"bizcharts": "^4.1.10", "bizcharts": "^4.1.10",
"braft-editor": "^2.3.9", "braft-editor": "^2.3.9",
"copy-to-clipboard": "^3.3.1", "copy-to-clipboard": "^3.3.1",
"crypto-js": "^4.0.0", "crypto-js": "^4.0.0",
"dayjs": "^1.10.7", "dayjs": "^1.10.7",
"god": "0.2.17",
"immutability-helper": "^3.1.1", "immutability-helper": "^3.1.1",
"js-cookie": "^2.2.1", "js-cookie": "^2.2.1",
"lint-staged": "^10.0.7", "lint-staged": "^10.0.7",
...@@ -114,7 +115,6 @@ ...@@ -114,7 +115,6 @@
"sortablejs": "^1.12.0", "sortablejs": "^1.12.0",
"typescript": "^4.1.0", "typescript": "^4.1.0",
"umi": "3.5.20", "umi": "3.5.20",
"umi-plugin-yapi": "1.7.0",
"video-react": "^0.14.1", "video-react": "^0.14.1",
"yorkie": "^2.0.0" "yorkie": "^2.0.0"
}, },
...@@ -137,8 +137,8 @@ ...@@ -137,8 +137,8 @@
"express": "^4.17.1", "express": "^4.17.1",
"fs-extra": "^9.0.1", "fs-extra": "^9.0.1",
"glob": "^7.1.6", "glob": "^7.1.6",
"god-upload-scp": "1.0.1", "@linkseeks/god-upload-scp": "^1.0.0",
"god-yapi2ts": "1.11.0", "@linkseeks/god-yapi2ts": "^1.0.0",
"gulp": "^4.0.2", "gulp": "^4.0.2",
"gulp-git": "^2.10.1", "gulp-git": "^2.10.1",
"hard-source-webpack-plugin": "^0.13.1", "hard-source-webpack-plugin": "^0.13.1",
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
const git = require('gulp-git') const git = require('gulp-git')
const Logs = require('./utils/log') const Logs = require('./utils/log')
const cmd = require('node-cmd') const cmd = require('node-cmd')
const scpRun = require('god-upload-scp') const scpRun = require('@linkseeks/god-upload-scp')
const connectSSH = (done) => { const connectSSH = (done) => {
const sshInfo = JSON.parse(process.env.ssh) const sshInfo = JSON.parse(process.env.ssh)
......
...@@ -38,4 +38,4 @@ export const AuthUrl = (btnCode: string, menuCode: string) => { ...@@ -38,4 +38,4 @@ export const AuthUrl = (btnCode: string, menuCode: string) => {
continue continue
} }
return false return false
} }
\ No newline at end of file
...@@ -2,7 +2,7 @@ import React, { useEffect, useRef, useState } from 'react' ...@@ -2,7 +2,7 @@ import React, { useEffect, useRef, useState } from 'react'
import { Row, Input, Col, Button, Result, message, Modal } from 'antd'; import { Row, Input, Col, Button, Result, message, Modal } from 'antd';
import useCountDown from '@/utils/hooks'; import useCountDown from '@/utils/hooks';
import godEvent from '@/utils/event' import godEvent from '@/utils/event'
import { RiskCheck } from 'god'; import { RiskCheck } from '@linkseeks/god';
import { decryptedByAES, encryptedByAES } from '@/utils/cryptoAes'; import { decryptedByAES, encryptedByAES } from '@/utils/cryptoAes';
import { getMemberCaptcha, getMemberRegisterPhoneCheck, postMemberRegisterPswSms, postMemberRegisterSms } from '@/services/MemberV2Api'; import { getMemberCaptcha, getMemberRegisterPhoneCheck, postMemberRegisterPswSms, postMemberRegisterSms } from '@/services/MemberV2Api';
import { useIntl } from 'umi'; import { useIntl } from 'umi';
......
import React, { useState } from 'react' import React, { useState } from 'react'
import { Tag, Row } from 'antd' import { Tag, Row } from 'antd'
import { useFormEffects, ISchemaFieldComponentProps } from '@formily/antd' import { useFormEffects, ISchemaFieldComponentProps } from '@formily/antd'
import { RiskCheck } from 'god' import { RiskCheck } from '@linkseeks/god'
const SliderValidate = (props: ISchemaFieldComponentProps) => { const SliderValidate = (props: ISchemaFieldComponentProps) => {
const { value = [], mutators } = props const { value = [], mutators } = props
...@@ -24,4 +24,4 @@ SliderValidate.defaultProps = {} ...@@ -24,4 +24,4 @@ SliderValidate.defaultProps = {}
SliderValidate.isFieldComponent = true; SliderValidate.isFieldComponent = true;
export default SliderValidate export default SliderValidate
\ No newline at end of file
import React, { ReactText, useRef, useEffect } from 'react' import React, { ReactText, useRef, useEffect } from 'react'
import { StandardTable } from 'god' import { StandardTable } from '@linkseeks/god'
import NestTable from '@/components/NestTable' import NestTable from '@/components/NestTable'
import { IStandardTableProps } from 'god/dist/src/standard-table' import { IStandardTableProps } from 'god/dist/src/standard-table'
import { Row, Col, Drawer, Button, Input } from 'antd' import { Row, Col, Drawer, Button, Input } from 'antd'
......
...@@ -20,7 +20,7 @@ import { ...@@ -20,7 +20,7 @@ import {
Card, Card,
Tag, Tag,
} from 'antd'; } from 'antd';
import { IntegrateTree } from 'god'; import { IntegrateTree } from '@linkseeks/god';
import { history, useIntl, getIntl } from 'umi'; import { history, useIntl, getIntl } from 'umi';
import { historyContainer } from '@/hooks/useHistoryContainer'; import { historyContainer } from '@/hooks/useHistoryContainer';
import NiceForm from '@/components/NiceForm'; import NiceForm from '@/components/NiceForm';
......
...@@ -3,7 +3,7 @@ import { Badge, Popconfirm, Button } from 'antd'; ...@@ -3,7 +3,7 @@ import { Badge, Popconfirm, Button } from 'antd';
import { getIntl, history } from 'umi'; import { getIntl, history } from 'umi';
import { CheckCircleOutlined } from '@ant-design/icons'; import { CheckCircleOutlined } from '@ant-design/icons';
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god'; import { StandardTable } from '@linkseeks/god';
import { GlobalConfig } from '@/global/config' import { GlobalConfig } from '@/global/config'
import { formatTimeString } from '@/utils' import { formatTimeString } from '@/utils'
......
...@@ -3,7 +3,7 @@ import { Badge, Popconfirm, Button } from 'antd'; ...@@ -3,7 +3,7 @@ import { Badge, Popconfirm, Button } from 'antd';
import { getIntl, history } from 'umi'; import { getIntl, history } from 'umi';
import { CheckCircleOutlined } from '@ant-design/icons'; import { CheckCircleOutlined } from '@ant-design/icons';
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god'; import { StandardTable } from '@linkseeks/god';
import { GlobalConfig } from '@/global/config' import { GlobalConfig } from '@/global/config'
import { formatTimeString } from '@/utils' import { formatTimeString } from '@/utils'
......
import React, { useRef, useState } from 'react';
import { Drawer, Button } from 'antd';
import { ColumnType } from 'antd/lib/table/interface';
import StandardTable from '@/components/StandardTable';
import { createFormActions } from '@formily/antd'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
// import { getSettleAccountsBusinessReconciliationToReconciliationList } from '@/services/SettleV2Api'
import Submit from '@/components/NiceForm/components/Submit'
import NiceForm from '@/components/NiceForm'
import { getIntl } from 'umi';
interface ContractDrawerProps {
visible: boolean,
onClose?: () => void,
}
const intl = getIntl();
const formActions = createFormActions();
const ContractDrawer: React.FC<ContractDrawerProps> = (props: ContractDrawerProps) => {
const { visible, onClose } = props;
const ref = useRef<any>({})
const [selectedRowKeys, setSelectedRowKeys] = useState<any>([])
const loadingTableData = async (params) => {
const _params = { ...params }
const { data } = await getSettleAccountsBusinessReconciliationToReconciliationList(_params)
return data;
}
const columns: ColumnType<any>[] = [{
title: '合同编号',
key: 'memberId',
dataIndex: 'memberId',
}, {
title: '合同摘要',
key: 'memberName',
dataIndex: 'memberName',
}, {
title: '合同生效时间',
key: 'memberType',
dataIndex: 'memberType',
}, {
title: '合同失效时间',
key: 'memberRole',
dataIndex: 'memberRole',
}, {
title: '合同金额',
key: 'memberLevel',
dataIndex: 'memberLevel',
}, {
title: '合同剩余金额',
key: 'memberLevel',
dataIndex: 'memberLevel',
}];
const handleSelectChange = (record, selected, selectedRow, nativeEvent) => {
setSelectedRowKeys([record.id]);
};
return (
<Drawer
title={'选择采购合同'}
placement={'right'}
onClose={onClose}
visible={visible}
key={'right'}
width={'50%'}
footer={
<div style={{ textAlign: 'right' }}>
<Button onClick={onClose} style={{ marginRight: 8 }}>
{intl.formatMessage({ id: 'balance.quxiao' })}
</Button>
<Button onClick={onClose} type="primary">
{'确定'}
</Button>
</div>
}
>
<StandardTable
keepAlive={false}
// fetchTableData={params => loadingTableData(params)}
columns={columns}
currentRef={ref}
rowKey="id"
rowSelection={{
type: 'radio',
selectedRowKeys: selectedRowKeys,
onSelect: handleSelectChange,
}}
controlRender={
<NiceForm
actions={formActions}
onSubmit={values => ref.current.reload(values)}
effects={($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'applyNo',
FORM_FILTER_PATH,
)
}}
schema={{
type: 'object',
properties: {
mageLayout: {
type: 'object',
'x-component': 'mega-layout',
"x-component-props": {
grid: true
},
properties: {
memberName: {
type: 'string',
"x-component": 'Search',
'x-component-props': {
placeholder: '请输入会员名称',
align: 'flex-start',
},
},
}
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'flex-layout',
'x-component-props': {
rowStyle: {
flexWrap: 'nowrap',
justifyContent: 'flex-end'
},
colStyle: {
marginRight: 16,
},
},
properties: {
"applyAbstract": {
type: 'string',
'x-component-props': {
placeholder: intl.formatMessage({ id: 'balance.qingshuruqingkuandanzhaiyao' }),
allowClear: true,
}
},
"[expectPayTimeStart,expectPayTimeEnd]": {
type: 'string',
"x-component": "daterange",
"x-component-props": {
placeholder: [intl.formatMessage({ id: 'balance.yujifukuankaishishijian' }), intl.formatMessage({ id: 'balance.yujifukuanjieshushijian' })],
allowClear: true,
}
},
submit: {
'x-component': 'Submit',
'x-component-props': {
children: intl.formatMessage({ id: 'balance.chaxun' }),
},
},
},
}
}
}}
components={{
Submit,
}}
/>
}
/>
</Drawer>
);
}
export default ContractDrawer;
import React, { useRef, useState } from 'react';
import { Drawer, Button } from 'antd';
import { ColumnType } from 'antd/lib/table/interface';
import StandardTable from '@/components/StandardTable';
import { createFormActions } from '@formily/antd'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
// import { getSettleAccountsBusinessReconciliationToReconciliationList } from '@/services/SettleV2Api'
import Submit from '@/components/NiceForm/components/Submit'
import NiceForm from '@/components/NiceForm'
import { getIntl } from 'umi';
interface RequestFundsDrawerProps {
visible: boolean,
onClose?: () => void,
}
const intl = getIntl();
const formActions = createFormActions();
const RequestFundsDrawer: React.FC<RequestFundsDrawerProps> = (props: RequestFundsDrawerProps) => {
const { visible, onClose } = props;
const ref = useRef<any>({})
const [selectedRowKeys, setSelectedRowKeys] = useState<any>([])
const loadingTableData = async (params) => {
const _params = { ...params }
const { data } = await getSettleAccountsBusinessReconciliationToReconciliationList(_params)
return data;
}
const columns: ColumnType<any>[] = [{
title: '单据号',
key: 'memberId',
dataIndex: 'memberId',
}, {
title: '单据摘要',
key: 'memberName',
dataIndex: 'memberName',
}, {
title: '单据类型',
key: 'memberType',
dataIndex: 'memberType',
}, {
title: '单据时间',
key: 'memberRole',
dataIndex: 'memberRole',
}, {
title: '单据状态',
key: 'memberLevel',
dataIndex: 'memberLevel',
}, {
title: '单据金额',
key: 'memberLevel',
dataIndex: 'memberLevel',
}, {
title: '已付款',
key: 'memberLevel',
dataIndex: 'memberLevel',
}, {
title: '已请款待付款',
key: 'memberLevel',
dataIndex: 'memberLevel',
}, {
title: '待请款',
key: 'memberLevel',
dataIndex: 'memberLevel',
}];
const handleSelectChange = (record, selected, selectedRow, nativeEvent) => {
setSelectedRowKeys([record.id]);
};
return (
<Drawer
title={'选择待请款单据'}
placement={'right'}
onClose={onClose}
visible={visible}
key={'right'}
width={'50%'}
footer={
<div style={{ textAlign: 'right' }}>
<Button onClick={onClose} style={{ marginRight: 8 }}>
{intl.formatMessage({ id: 'balance.quxiao' })}
</Button>
<Button onClick={onClose} type="primary">
{'确定'}
</Button>
</div>
}
>
<StandardTable
keepAlive={false}
// fetchTableData={params => loadingTableData(params)}
columns={columns}
currentRef={ref}
rowKey="id"
rowSelection={{
type: 'radio',
selectedRowKeys: selectedRowKeys,
onSelect: handleSelectChange,
}}
controlRender={
<NiceForm
actions={formActions}
onSubmit={values => ref.current.reload(values)}
effects={($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'applyNo',
FORM_FILTER_PATH,
)
}}
schema={{
type: 'object',
properties: {
mageLayout: {
type: 'object',
'x-component': 'mega-layout',
"x-component-props": {
grid: true
},
properties: {
memberName: {
type: 'string',
"x-component": 'Search',
'x-component-props': {
placeholder: '请输入单据号',
align: 'flex-start',
},
},
}
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'flex-layout',
'x-component-props': {
rowStyle: {
flexWrap: 'nowrap',
justifyContent: 'flex-end'
},
colStyle: {
marginRight: 16,
},
},
properties: {
"applyAbstract": {
type: 'string',
'x-component-props': {
placeholder: '请输入单据摘要',
allowClear: true,
}
},
"[expectPayTimeStart,expectPayTimeEnd]": {
type: 'string',
"x-component": "daterange",
"x-component-props": {
placeholder: [intl.formatMessage({ id: 'balance.yujifukuankaishishijian' }), intl.formatMessage({ id: 'balance.yujifukuanjieshushijian' })],
allowClear: true,
}
},
submit: {
'x-component': 'Submit',
'x-component-props': {
children: intl.formatMessage({ id: 'balance.chaxun' }),
},
},
},
}
}
}}
components={{
Submit,
}}
/>
}
/>
</Drawer>
);
}
export default RequestFundsDrawer;
...@@ -3,7 +3,7 @@ import { Badge, Popconfirm, Button } from 'antd'; ...@@ -3,7 +3,7 @@ import { Badge, Popconfirm, Button } from 'antd';
import { getIntl, history, Link } from 'umi'; import { getIntl, history, Link } from 'umi';
import { CheckCircleOutlined } from '@ant-design/icons'; import { CheckCircleOutlined } from '@ant-design/icons';
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god'; import { StandardTable } from '@linkseeks/god';
import { GlobalConfig } from '@/global/config' import { GlobalConfig } from '@/global/config'
import { formatTimeString } from '@/utils' import { formatTimeString } from '@/utils'
......
...@@ -2,7 +2,7 @@ import React, { useRef, ReactNode } from 'react' ...@@ -2,7 +2,7 @@ import React, { useRef, ReactNode } from 'react'
import { history, useIntl } from 'umi' import { history, useIntl } from 'umi'
import { Button, Card } from 'antd' import { Button, Card } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout' import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { StandardTable } from 'god' import { StandardTable } from '@linkseeks/god'
import { ColumnType } from 'antd/lib/table/interface' import { ColumnType } from 'antd/lib/table/interface'
import moment from 'moment' import moment from 'moment'
import EyePreview from '@/components/EyePreview' import EyePreview from '@/components/EyePreview'
......
...@@ -2,7 +2,7 @@ import React, { ReactNode, useMemo, useRef } from 'react' ...@@ -2,7 +2,7 @@ import React, { ReactNode, useMemo, useRef } from 'react'
import { history, useIntl } from 'umi' import { history, useIntl } from 'umi'
import { Button, Card } from 'antd' import { Button, Card } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout' import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { StandardTable } from 'god' import { StandardTable } from '@linkseeks/god'
import { ColumnType } from 'antd/lib/table/interface' import { ColumnType } from 'antd/lib/table/interface'
import moment from 'moment' import moment from 'moment'
import EyePreview from '@/components/EyePreview' import EyePreview from '@/components/EyePreview'
......
...@@ -59,7 +59,7 @@ const ActiveItem: React.FC<Iprops> = (props: Iprops) => { ...@@ -59,7 +59,7 @@ const ActiveItem: React.FC<Iprops> = (props: Iprops) => {
<div className={styles.infoContainer}> <div className={styles.infoContainer}>
<div className={styles.info}> <div className={styles.info}>
<div className={styles.header}> <div className={styles.header}>
<Link to={`/memberCenter/marketingAbility/activityPage/management/view?id=${id}`}>{title}</Link></div> <Link to={`/memberCenter/marketingAbility/activityPages/management/view?id=${id}`}>{title}</Link></div>
<div className={styles.tags}> <div className={styles.tags}>
<Space> <Space>
<StatusTag type="default" title={templateName} /> <StatusTag type="default" title={templateName} />
......
...@@ -10,10 +10,11 @@ import styles from './index.less'; ...@@ -10,10 +10,11 @@ import styles from './index.less';
import SwapCoupon from './swapCoupon'; import SwapCoupon from './swapCoupon';
import SwapProduct from './swapProduct'; import SwapProduct from './swapProduct';
import { getIntl } from 'umi' import { getIntl } from 'umi'
import { GetMarketingAdornActivityGoodsAdornResponse } from '@/services/MarketingV2Api';
const intl = getIntl(); const intl = getIntl();
const { TabPane } = Tabs; const { TabPane } = Tabs;
interface Iprops { interface Iprops extends GetMarketingAdornActivityGoodsAdornResponse {
className: string, className: string,
children: React.ReactNode, children: React.ReactNode,
title: string, title: string,
...@@ -108,11 +109,16 @@ const CommodityItem: React.FC<Iprops> = (props: Iprops) => { ...@@ -108,11 +109,16 @@ const CommodityItem: React.FC<Iprops> = (props: Iprops) => {
const { const {
productName: name, productImgUrl: image, mode = "horizontal", productName: name, productImgUrl: image, mode = "horizontal",
price: originalPrice, price: originalPrice,
/** 折扣(如85折,输入85,9折输入90) */
discount, discount,
// 活动价格团购价格秒杀价格单位定金砍价底价
activityPrice, activityPrice,
activityList, activityList,
activityId, activityId,
/** 直降价格起始价格 */
plummetPrice, plummetPrice,
/** 定金抵扣单价 */
deductionPrice,
...otherRestProps ...otherRestProps
} = rest as any; } = rest as any;
const activityLabel = activityList?.find((_item) => _item.id === activityId); const activityLabel = activityList?.find((_item) => _item.id === activityId);
...@@ -123,14 +129,14 @@ const CommodityItem: React.FC<Iprops> = (props: Iprops) => { ...@@ -123,14 +129,14 @@ const CommodityItem: React.FC<Iprops> = (props: Iprops) => {
mode, mode,
...withLabel, ...withLabel,
originalPrice: originalPrice, originalPrice: originalPrice,
discountPrice: discount || activityPrice || plummetPrice discountPrice: activityPrice || plummetPrice || plummetPrice || deductionPrice
}; };
const verticalData = { const verticalData = {
name, name,
image, image,
mode, mode,
discountPrice: discount || activityPrice || plummetPrice, discountPrice: activityPrice || plummetPrice || plummetPrice || deductionPrice,
buyBtn: false, buyBtn: false,
...withLabel, ...withLabel,
sold: 0 sold: 0
......
...@@ -124,8 +124,8 @@ const ActivePage = () => { ...@@ -124,8 +124,8 @@ const ActivePage = () => {
templateName={_item.templateName} templateName={_item.templateName}
statusName={_item.statusName} statusName={_item.statusName}
shopName={_item.shopName} shopName={_item.shopName}
startTime={_item.startTime} startTime={_item.startTime as unknown as string}
endTime={_item.endTime} endTime={_item.endTime as unknown as string}
environment={_item.environment} environment={_item.environment}
status={_item.status} status={_item.status}
onRemove={handleRemove} onRemove={handleRemove}
......
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