Commit cf32b0ef authored by 左玲玲's avatar 左玲玲 😬

1730

parent af888b94
...@@ -337,6 +337,12 @@ export default [ ...@@ -337,6 +337,12 @@ export default [
icon: '', icon: '',
component: './lease/contract', component: './lease/contract',
}, },
{
name: '租赁设备',
path: '/lease/leasedevice',
icon: '',
component: './lease/leasedevice',
},
], ],
}, },
]; ];
...@@ -115,7 +115,7 @@ let FormRender = memo(({ fields = [], name, curindex, formRef, action }) => { ...@@ -115,7 +115,7 @@ let FormRender = memo(({ fields = [], name, curindex, formRef, action }) => {
.filter((it) => it.hideInForm !== true) .filter((it) => it.hideInForm !== true)
.map((item, index) => { .map((item, index) => {
let key = item?.valueType ? upperCase(item?.valueType) : "Input"; let key = item?.valueType ? upperCase(item?.valueType) : "Input";
let { hideInForm, editable } = item; let { hideInForm, editable, hideInFormShowKey } = item;
if (hideInForm && Object.keys(hideInForm)) { if (hideInForm && Object.keys(hideInForm)) {
return ( return (
<ProFormDependency name={Object.keys(hideInForm)} key={index}> <ProFormDependency name={Object.keys(hideInForm)} key={index}>
...@@ -137,18 +137,29 @@ let FormRender = memo(({ fields = [], name, curindex, formRef, action }) => { ...@@ -137,18 +137,29 @@ let FormRender = memo(({ fields = [], name, curindex, formRef, action }) => {
return ( return (
<Col {...item.colProps} key={index}> <Col {...item.colProps} key={index}>
{curindex == 0 ? ( {curindex == 0 ? (
<p> <div>
<label htmlFor="">{item.title}</label> <label htmlFor="">{item.title}</label>
<p style={{ padding: "6px 0 0 0", margin: 0 }}> {
hideInFormShowKey ? <div style={{ padding: "6px 0 0 0", margin: 0 }}>{value[hideInFormShowKey]}</div>
:
<div style={{ padding: "6px 0 0 0", margin: 0 }}>
<b style={{ color: "red" }}>!</b>{" "} <b style={{ color: "red" }}>!</b>{" "}
需满足条件才可以填写{item.title} 需满足条件才可以填写{item.title}
</p> </div>
</p> }
</div>
) : ( ) : (
<p style={{ padding: "4px 0 0 0", margin: 0 }}> <div style={{ padding: "4px 0 0 0", margin: 0 }}>
{
hideInFormShowKey ? <>{value[hideInFormShowKey]}</>
:
<div style={{ padding: "6px 0 0 0", margin: 0 }}>
<b style={{ color: "red" }}>!</b>{" "} <b style={{ color: "red" }}>!</b>{" "}
需满足条件才可以填写{item.title} 需满足条件才可以填写{item.title}
</p> </div>
}
</div>
)} )}
</Col> </Col>
); );
...@@ -168,20 +179,20 @@ let FormRender = memo(({ fields = [], name, curindex, formRef, action }) => { ...@@ -168,20 +179,20 @@ let FormRender = memo(({ fields = [], name, curindex, formRef, action }) => {
} else if (editable === false) { } else if (editable === false) {
return curindex === 0 ? ( return curindex === 0 ? (
<Col {...item.colProps} style={{ height: 68 }} key={index}> <Col {...item.colProps} style={{ height: 68 }} key={index}>
<p> <div>
<label htmlFor="">{item.title}</label> <label htmlFor="">{item.title}</label>
<p style={{ padding: "6px 0 0 0", margin: 0 }}> <div style={{ padding: "6px 0 0 0", margin: 0 }}>
{value[item?.key ?? item?.dataIndex] ?? "-"} {value[item?.key ?? item?.dataIndex] ?? "-"}
</p> </div>
</p> </div>
</Col> </Col>
) : ( ) : (
<Col {...item.colProps} style={{ height: 68 }} key={index}> <Col {...item.colProps} style={{ height: 68 }} key={index}>
<p> <div>
<p style={{ padding: "6px 0 0 0", margin: 0 }}> <div style={{ padding: "6px 0 0 0", margin: 0 }}>
{value[item?.key ?? item?.dataIndex] ?? "-"} {value[item?.key ?? item?.dataIndex] ?? "-"}
</p> </div>
</p> </div>
</Col> </Col>
); );
} else { } else {
...@@ -1443,7 +1454,7 @@ function Expandable({ item, colProps }) { ...@@ -1443,7 +1454,7 @@ function Expandable({ item, colProps }) {
function FormList(props) { function FormList(props) {
let { item, colProps, formRef } = props; let { item, colProps, formRef } = props;
let col = item.colProps ?? colProps; let col = item.colProps ?? colProps;
let fields = item.columns ?? []; let fields = item.columns?.filter(it => !it.hideInTable) ?? [];
return ( return (
<Col {...col}> <Col {...col}>
<ProFormList <ProFormList
...@@ -1457,6 +1468,7 @@ function FormList(props) { ...@@ -1457,6 +1468,7 @@ function FormList(props) {
alwaysShowItemLabel={false} alwaysShowItemLabel={false}
copyIconProps={item?.copyIconProps ?? false} copyIconProps={item?.copyIconProps ?? false}
deleteIconProps={item?.deleteIconProps ?? true} deleteIconProps={item?.deleteIconProps ?? true}
creatorButtonProps={item?.creatorButtonProps ?? true}
> >
{(f, index, action) => { {(f, index, action) => {
return ( return (
......
...@@ -42,6 +42,8 @@ const getParentKey = (key, tree) => { ...@@ -42,6 +42,8 @@ const getParentKey = (key, tree) => {
} }
function TreeRender({ function TreeRender({
isSelectFirst = false,
dataSource,
url, url,
deleteurl, deleteurl,
saveurl, saveurl,
...@@ -58,10 +60,28 @@ function TreeRender({ ...@@ -58,10 +60,28 @@ function TreeRender({
visible: false, visible: false,
}); });
const [expandall, setexpandall] = useState(false); const [expandall, setexpandall] = useState(false);
const [expandedKeys, onExpand] = useState(); const [expandedKeys, onExpand] = useState(),
const { data, loading, refresh } = useRequest(() => { [selectedKeys, cselectedKeys] = useState([]),
[treeDataArr, cta] = useState([]);
const { loading, refresh, run } = useRequest(() => {
return doFetch({ url, params: params ?? {} }); return doFetch({ url, params: params ?? {} });
}, {
manual: true,
onSuccess: (res, params) => {
if (res.code == '0000') {
cta(res?.data?.dataList ?? []);
}
}
}); });
useEffect(() => {
if (dataSource) {
cta(dataSource);
} else if (url && !dataSource) {
run();
}
}, [url, dataSource]);
const [autoExpandParent, setAutoExpandParent] = useState(true); const [autoExpandParent, setAutoExpandParent] = useState(true);
const allkeys = useMemo(() => { const allkeys = useMemo(() => {
...@@ -72,9 +92,9 @@ function TreeRender({ ...@@ -72,9 +92,9 @@ function TreeRender({
el.children && el.children.length > 0 ? fn(el.children) : ''; // 子级递归 el.children && el.children.length > 0 ? fn(el.children) : ''; // 子级递归
}); });
}; };
fn(data?.data?.dataList ?? []); fn(treeDataArr);
return res.filter((it) => it.children).map((it) => it.key); return res.filter((it) => it.children).map((it) => it.key);
}, [data]); }, [treeDataArr]);
const alldata = useMemo(() => { const alldata = useMemo(() => {
let res = []; let res = [];
const fn = (source) => { const fn = (source) => {
...@@ -83,19 +103,23 @@ function TreeRender({ ...@@ -83,19 +103,23 @@ function TreeRender({
el.children && el.children.length > 0 ? fn(el.children) : ''; // 子级递归 el.children && el.children.length > 0 ? fn(el.children) : ''; // 子级递归
}); });
}; };
fn(data?.data?.dataList ?? []); fn(treeDataArr);
return res; return res;
}, [data]); }, [treeDataArr]);
const treeData = useMemo(() => { const treeData = useMemo(() => {
let res = data?.data?.dataList ?? []; let res = treeDataArr;
if (isSelectFirst) {
cselectedKeys(res?.[0]?.key ? [res?.[0]?.key] : []);
}
return [ return [
{ {
title: '全部类型', title: '全部',
key: '', key: '00000000',
children: res, children: res,
disabled: true
}, },
]; ];
}, [data]); }, [treeDataArr]);
const onChange = (e) => { const onChange = (e) => {
const { value } = e.target; const { value } = e.target;
const dataLists = getAllList(); const dataLists = getAllList();
...@@ -124,7 +148,7 @@ function TreeRender({ ...@@ -124,7 +148,7 @@ function TreeRender({
const afterStr = item.title.substr(index + search.length); const afterStr = item.title.substr(index + search.length);
let title = let title =
index > -1 ? ( index > -1 ? (
<Tooltip title={item.title} placement="bottom"> <span title={item.title} style={{ display: 'inherit' }}>
<span <span
style={{ style={{
display: 'inline-block', display: 'inline-block',
...@@ -139,9 +163,9 @@ function TreeRender({ ...@@ -139,9 +163,9 @@ function TreeRender({
<span style={{ color: '#f50' }}>{search}</span> <span style={{ color: '#f50' }}>{search}</span>
{afterStr} {afterStr}
</span> </span>
</Tooltip> </span>
) : ( ) : (
<Tooltip title={item.title} placement="bottom"> <span title={item.title} style={{ display: 'inherit' }}>
<span <span
style={{ style={{
display: 'inline-block', display: 'inline-block',
...@@ -154,7 +178,7 @@ function TreeRender({ ...@@ -154,7 +178,7 @@ function TreeRender({
> >
{item.title} {item.title}
</span> </span>
</Tooltip> </span>
); );
const actiontitle = ( const actiontitle = (
...@@ -225,7 +249,6 @@ function TreeRender({ ...@@ -225,7 +249,6 @@ function TreeRender({
okText="删除" okText="删除"
cancelText="取消" cancelText="取消"
onConfirm={(e) => { onConfirm={(e) => {
console.log(111);
doFetch({ url: deleteurl, params: { id: item.key } }).then((res) => { doFetch({ url: deleteurl, params: { id: item.key } }).then((res) => {
if (res.code == '0000') { if (res.code == '0000') {
message.success('操作成功'); message.success('操作成功');
...@@ -238,7 +261,6 @@ function TreeRender({ ...@@ -238,7 +261,6 @@ function TreeRender({
<Tooltip title="删除"> <Tooltip title="删除">
<MinusSquareOutlined <MinusSquareOutlined
onClick={(e) => { onClick={(e) => {
// console.log(e);
e.stopPropagation(); e.stopPropagation();
doFetch({ url: deleteurl, params: { id: item.key } }).then((res) => { doFetch({ url: deleteurl, params: { id: item.key } }).then((res) => {
if (res.code == '0000') { if (res.code == '0000') {
...@@ -287,7 +309,7 @@ function TreeRender({ ...@@ -287,7 +309,7 @@ function TreeRender({
setAutoExpandParent(!expandall); setAutoExpandParent(!expandall);
}} }}
> >
{expandall ? <ArrowDownOutlined /> : <ArrowRightOutlined />} {expandall ? <ArrowDownOutlined style={{ color: 'rgba(0,0,0,0.85)' }} /> : <ArrowRightOutlined style={{ color: 'rgba(0,0,0,0.85)' }} />}
</Tooltip> </Tooltip>
</div> </div>
); );
...@@ -300,6 +322,7 @@ function TreeRender({ ...@@ -300,6 +322,7 @@ function TreeRender({
children: loop(item.children), children: loop(item.children),
level: item.level, level: item.level,
type: item.type, type: item.type,
disabled: item.disabled
}; };
} }
return { return {
...@@ -307,6 +330,7 @@ function TreeRender({ ...@@ -307,6 +330,7 @@ function TreeRender({
key: item.key, key: item.key,
level: item.level, level: item.level,
type: item.type, type: item.type,
disabled: item.disabled
}; };
}); });
useEffect(() => { useEffect(() => {
...@@ -426,12 +450,13 @@ function TreeRender({ ...@@ -426,12 +450,13 @@ function TreeRender({
<Tree <Tree
onSelect={(selectedKeys, e) => { onSelect={(selectedKeys, e) => {
// //console.log(selectedKeys); cselectedKeys(selectedKeys);
onselected?.(selectedKeys, e, alldata); onselected?.(selectedKeys, e, alldata);
}} }}
autoExpandParent={autoExpandParent} autoExpandParent={autoExpandParent}
defaultExpandAll={true} defaultExpandAll={true}
expandedKeys={expandedKeys} expandedKeys={expandedKeys}
selectedKeys={selectedKeys}
onExpand={(expandedKeys, { expanded: bool, node }) => { onExpand={(expandedKeys, { expanded: bool, node }) => {
onExpand(expandedKeys); onExpand(expandedKeys);
setAutoExpandParent(false); setAutoExpandParent(false);
......
...@@ -50,6 +50,13 @@ ol { ...@@ -50,6 +50,13 @@ ol {
padding-bottom: 24px !important; padding-bottom: 24px !important;
} }
.statuspage {
.ant-pro-table-list-toolbar-container {
padding-top: 0 !important;
padding-bottom: 0 !important;
}
}
.ant-pro-table-list-toolbar-right { .ant-pro-table-list-toolbar-right {
flex: 1 !important; flex: 1 !important;
flex-direction: row !important; flex-direction: row !important;
......
import React, { useMemo } from 'react';
import { Tooltip, Tabs } from 'antd';
import Filedetail from "@/components/Filedetail";
import DetailPro from '@/components/DetailPro';
import AutoTable from '@/components/AutoTable/mtable';
const fields = [
{
title: '合同单号',
dataIndex: 'contractNo',
key: 'contractNo'
},
{
title: '合同金额(元)',
dataIndex: 'amount',
key: 'amount'
},
{
title: '客户编号',
dataIndex: 'customerNo',
key: 'customerNo'
},
{
title: '客户名称',
dataIndex: 'customerName',
key: 'customerName'
},
{
title: '合同租期(月)',
dataIndex: 'tenancy',
key: 'tenancy'
},
{
title: '营销区域',
dataIndex: 'marketRegion',
key: 'marketRegion'
},
{
title: '智享店',
dataIndex: 'zxstore',
key: 'zxstore'
},
{
title: '承接合同编号',
dataIndex: 'undertakingNo',
key: 'undertakingId'
},
{
title: '合同负责人',
dataIndex: 'head',
key: 'head'
},
{
title: '登记日期',
dataIndex: 'registrationDate',
key: 'registrationDate'
},
{
title: '状态',
dataIndex: 'statusName',
key: 'statusName'
},
{
title: '',
valueType: 'split'
},
{
title: '合同起租日',
dataIndex: 'startLeaseDate',
key: 'startLeaseDateList'
},
{
title: '合同终止日',
dataIndex: 'endLeaseDate',
key: 'endLeaseDate'
},
{
title: '回款设置(自然日)',
dataIndex: 'collectionSet',
key: 'collectionSet'
},
{
title: '预警设置(自然日)',
dataIndex: 'warnSet',
key: 'warnSet'
},
{
title: '',
valueType: 'split'
},
{
title: '去程运费(元)',
dataIndex: 'tripFreight',
key: 'tripFreight'
},
{
title: '去程运费承担方',
dataIndex: 'tripBearName',
key: 'tripBearName'
},
{
title: '返程运费(元)',
dataIndex: 'returnFreight',
key: 'returnFreight'
},
{
title: '返程运费承担方',
dataIndex: 'returnBearName',
key: 'returnBearName'
},
{
title: '',
valueType: 'split'
},
{
title: '退还押金(元)',
dataIndex: 'refund',
key: 'refund'
},
{
title: '处理人',
dataIndex: 'handleUserName',
key: 'handleUserName'
},
{
title: '处理时间',
dataIndex: 'handleTime',
key: 'handleTime'
},
{
title: '相关文件',
valueType: 'split'
},
{
title: '合同文件',
dataIndex: 'contractFileList',
key: 'contractFileList',
span: 3,
render: (_, row) => {
return <Filedetail files={row?.['contractFileList']} />
}
},
{
title: '起租单文件',
dataIndex: 'startLeaseFileList',
key: 'startLeaseFileList',
render: (_, row) => {
return <Filedetail files={row?.['startLeaseFileList']} />
}
},
{
title: '发用单文件',
dataIndex: 'hairuseFileList',
key: 'hairuseFileList',
render: (_, row) => {
return <Filedetail files={row?.['hairuseFileList']} />
}
},
{
title: '租赁物交付确认单文件',
dataIndex: 'leaseDeliverFileList',
key: 'leaseDeliverFileList',
render: (_, row) => {
return <Filedetail files={row?.['leaseDeliverFileList']} />
}
},
{
title: '租赁物归还确认单文件',
dataIndex: 'leaseReturnFileList',
key: 'leaseReturnFileList',
render: (_, row) => {
return <Filedetail files={row?.['leaseReturnFileList']} />
}
},
{
title: '押金归还确认单文件',
dataIndex: 'refundFileList',
key: 'refundFileList',
render: (_, row) => {
return <Filedetail files={row?.['refundFileList']} />
}
},
],
columns = [
{
title: '设备编号',
dataIndex: 'equipmentNo',
key: 'equipmentNo',
render: (_, row) => {
return (
<Tooltip title={row.equipmentNo}>
<a
className="table-cell"
onClick={() => {
}}
>
{row.equipmentNo}
</a>
</Tooltip>
);
}
},
{
title: '设备名称',
dataIndex: 'equipmentName',
key: 'equipmentName',
},
{
title: '智能单元',
dataIndex: 'intelligentUnitNo',
key: 'intelligentUnitNo',
},
{
title: '每期单价(元)',
dataIndex: 'unitPrice',
key: 'unitPrice',
hideInSearch: true
},
{
title: '智享价(元)',
dataIndex: 'zxPrice',
key: 'zxPrice',
hideInSearch: true
},
{
title: '返利金额(元)',
dataIndex: 'rebatePrice',
key: 'rebatePrice',
hideInSearch: true
},
{
title: '押金(元)',
dataIndex: 'deposit',
key: 'deposit',
hideInSearch: true
},
{
title: '实际结束时间',
dataIndex: 'realEndDate',
key: 'realEndDate',
hideInSearch: true
},
{
title: '违约金(元)',
dataIndex: 'violatePrice',
key: 'violatePrice',
hideInSearch: true
},
];
const Details = ({ drawer }) => {
const items = useMemo(() => {
return [
{
key: '1',
label: '基础信息',
children: <DetailPro
fields={fields}
detailpath="/lease/umContract/queryDetail"
params={{ id: drawer?.item?.id }}
/>,
},
{
key: '2',
label: '租赁设备',
children: <AutoTable
columns={columns}
path={'/lease/umContractEquipment/queryByContractId'}
resizeable={false}
pageextra="none"
bordered={false}
extraparams={{ contractId: drawer?.item?.id }}
pagination={'false'}
/>,
}
]
}, [drawer?.item?.id])
return <div>
<Tabs items={items} destroyInactiveTabPane />
</div>
}
export default Details;
\ No newline at end of file
...@@ -8,6 +8,24 @@ function getcolumns(setdrawer, drawer) { ...@@ -8,6 +8,24 @@ function getcolumns(setdrawer, drawer) {
key: 'contractNo', key: 'contractNo',
formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
colProps: { span: 8 }, colProps: { span: 8 },
render: (_, row) => {
return (
<a
className="table-cell"
onClick={() => {
setdrawer && setdrawer((s) => ({
...s,
open: true,
item: row,
val: 'only',
title: '合同详情'
}));
}}
>
{row.contractNo}
</a>
);
}
}, },
{ {
title: '客户', title: '客户',
...@@ -37,15 +55,15 @@ function getcolumns(setdrawer, drawer) { ...@@ -37,15 +55,15 @@ function getcolumns(setdrawer, drawer) {
}, },
{ {
title: '本期应收回款', title: '本期应收回款',
dataIndex: 'amount', dataIndex: 'thisCollection',
key: 'amount', key: 'thisCollection',
hideInSearch: true, hideInSearch: true,
hideInForm: true, hideInForm: true,
}, },
{ {
title: '设备台数', title: '设备台数',
dataIndex: 'amount', dataIndex: 'equipmentNum',
key: 'amount', key: 'equipmentNum',
hideInSearch: true, hideInSearch: true,
hideInForm: true, hideInForm: true,
render: (_, row) => { render: (_, row) => {
...@@ -62,7 +80,7 @@ function getcolumns(setdrawer, drawer) { ...@@ -62,7 +80,7 @@ function getcolumns(setdrawer, drawer) {
// })); // }));
}} }}
> >
{row.amount} {row.equipmentNum}
</a> </a>
); );
} }
...@@ -91,7 +109,7 @@ function getcolumns(setdrawer, drawer) { ...@@ -91,7 +109,7 @@ function getcolumns(setdrawer, drawer) {
hideInTable: true, hideInTable: true,
}, },
{ {
title: '回款设置', title: '回款设置(自然日)',
dataIndex: 'collectionSet', dataIndex: 'collectionSet',
key: 'collectionSet', key: 'collectionSet',
valueType: 'digit', valueType: 'digit',
...@@ -101,7 +119,7 @@ function getcolumns(setdrawer, drawer) { ...@@ -101,7 +119,7 @@ function getcolumns(setdrawer, drawer) {
hideInTable: true hideInTable: true
}, },
{ {
title: '预警设置', title: '预警设置(自然日)',
dataIndex: 'warnSet', dataIndex: 'warnSet',
key: 'warnSet', key: 'warnSet',
hideInSearch: true, hideInSearch: true,
...@@ -155,7 +173,7 @@ function getcolumns(setdrawer, drawer) { ...@@ -155,7 +173,7 @@ function getcolumns(setdrawer, drawer) {
}, },
options: { options: {
path: '/lease/umLeaseLedger/queryLedgerSelectbox', path: '/lease/umLeaseLedger/queryLedgerSelectbox',
params: {}, params: drawer?.val == 'add' ? {} : { contractId: drawer?.item?.id },
}, },
}, },
{ {
...@@ -277,12 +295,12 @@ function getcolumns(setdrawer, drawer) { ...@@ -277,12 +295,12 @@ function getcolumns(setdrawer, drawer) {
{ {
title: '承接合同编号', title: '承接合同编号',
dataIndex: 'undertakingNo', dataIndex: 'undertakingNo',
key: 'undertakingNo', key: 'undertakingId',
colProps: { span: 8 }, colProps: { span: 8 },
hideInSearch: true, hideInSearch: true,
hideInTable: true, hideInTable: true,
valueType: 'select', valueType: 'select',
options: { path: '/', params: {} }, options: { path: '/lease/umContract/querySelect', params: {} },
}, },
{ {
title: '合同负责人', title: '合同负责人',
...@@ -305,7 +323,7 @@ function getcolumns(setdrawer, drawer) { ...@@ -305,7 +323,7 @@ function getcolumns(setdrawer, drawer) {
}, },
colProps: { span: 24 }, colProps: { span: 24 },
render: (_, row) => { render: (_, row) => {
return <Filedetail files={drawer?.val == 'only' ? row?.['contractFileList'] : (row?.['contractFileList']?.[0] ?? [])} /> return <Filedetail files={drawer?.val == 'only' ? row?.['contractFileList'] : (row?.['contractFileList']?.[0] ? [row?.['contractFileList']?.[0]] : [])} />
} }
} }
]; ];
...@@ -346,7 +364,7 @@ function getcolumns(setdrawer, drawer) { ...@@ -346,7 +364,7 @@ function getcolumns(setdrawer, drawer) {
add: '/lease/umContract/save', add: '/lease/umContract/save',
edit: '/lease/umContract/save', edit: '/lease/umContract/save',
list: '/lease/umContract/queryIncomplete', list: '/lease/umContract/queryIncomplete',
delete: '/lease/umContract/deleteById', delete: '/lease/umContract/delete',
detail: '/lease/umContract/queryDetail', detail: '/lease/umContract/queryDetail',
}, },
}, },
......
...@@ -17,6 +17,7 @@ import { doFetch } from '@/utils/doFetch'; ...@@ -17,6 +17,7 @@ import { doFetch } from '@/utils/doFetch';
import Addform from '@/components/Addform'; import Addform from '@/components/Addform';
import Detail from '@/components/RepaireDetail/Detail'; import Detail from '@/components/RepaireDetail/Detail';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import Details from "./Details";
function Contract(props) { function Contract(props) {
let actionRef = useRef(), let actionRef = useRef(),
formRef = useRef(); formRef = useRef();
...@@ -24,9 +25,10 @@ function Contract(props) { ...@@ -24,9 +25,10 @@ function Contract(props) {
open: false, open: false,
}), }),
[activeTabKey, setactiveTabKey] = useState('1'), [activeTabKey, setactiveTabKey] = useState('1'),
[amount, camount] = useState(0); [amount, camount] = useState(0),
[intelligenceList, cil] = useState([]);
const { run, loading } = useRequest(doFetch, { const { run, loading, runAsync } = useRequest(doFetch, {
manual: true, manual: true,
onSuccess: (res, params) => { onSuccess: (res, params) => {
if (res?.code == '0000') { if (res?.code == '0000') {
...@@ -50,11 +52,13 @@ function Contract(props) { ...@@ -50,11 +52,13 @@ function Contract(props) {
key='start' key='start'
btn={{ btn={{
size: 'small', size: 'small',
onClick: () => { onClick: async () => {
let res = await doFetch({ url: '/lease/umContractEquipment/queryBeforeStart', params: { contractId: row.id } });
cil(res?.data?.dataList ?? []);
setdrawer((s) => ({ setdrawer((s) => ({
...s, ...s,
open: true, open: true,
item: row, item: { ...row, intelligenceList: res?.data?.dataList ?? [] },
val: 'start', val: 'start',
title: '开始', title: '开始',
fields: [ fields: [
...@@ -75,12 +79,12 @@ function Contract(props) { ...@@ -75,12 +79,12 @@ function Contract(props) {
disabled: true disabled: true
}, },
colProps: { span: 8 }, colProps: { span: 8 },
formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }
}, },
{ {
title: '第一期回款形式', title: '第一期回款形式',
dataIndex: 'tripBear', dataIndex: 'firstCollection',
key: 'tripBear', key: 'firstCollection',
valueType: 'select', valueType: 'select',
options: [ options: [
{ label: '现金', value: 1 }, { label: '现金', value: 1 },
...@@ -91,11 +95,100 @@ function Contract(props) { ...@@ -91,11 +95,100 @@ function Contract(props) {
}, },
{ {
title: '租赁设备', title: '租赁设备',
dataIndex: 'list', dataIndex: 'intelligenceList',
key: 'list', key: 'intelligenceList',
render: (_, row) => { valueType: 'formList',
return <div>11</div> initialValue: [
} {
state: 'all',
title: '标题',
},
],
colProps: {
xs: 24,
sm: 24,
},
columns: [
{
title: '设备ID',
dataIndex: 'equipmentId',
key: 'equipmentId',
colProps: {
sm: 6,
},
editable: false,
hideInTable: true
},
{
title: '是否绑定智能单元',
dataIndex: 'isBindUnit',
key: 'isBindUnit',
colProps: {
sm: 6,
},
editable: false,
hideInTable: true
},
{
title: '设备编号',
dataIndex: 'equipmentNo',
key: 'equipmentNo',
colProps: {
sm: 6,
},
editable: false
},
{
title: '设备名称',
dataIndex: 'equipmentName',
key: 'equipmentName',
colProps: {
sm: 6,
},
editable: false
},
{
title: '设备型号',
dataIndex: 'equipmentModelName',
key: 'equipmentModelName',
colProps: {
sm: 6,
},
editable: false
},
{
title: '关联智能单元',
dataIndex: 'ledgerEquipmentId',
key: 'ledgerEquipmentId',
valueType: 'select',
fieldProps: {
placeholder: '请选择',
},
formItemProps: {
rules: [
{
required: true,
message: '此项为必填项',
},
],
},
colProps: {
sm: 6,
},
options: {
path: '/lease/umLeaseLedger/intelligentUnitSelectbox',
linkParams: {
equipmentId: 'id',
},
},
hideInForm: {
isBindUnit: [1]
},
hideInFormShowKey: 'intelligentUnitNo'
},
],
creatorButtonProps: false,
deleteIconProps: false,
}, },
{ {
title: '起租单上传', title: '起租单上传',
...@@ -138,11 +231,15 @@ function Contract(props) { ...@@ -138,11 +231,15 @@ function Contract(props) {
key='edit' key='edit'
btn={{ btn={{
size: 'small', size: 'small',
onClick: () => { onClick: async () => {
let res1 = await doFetch({ url: pathconfig.detail, params: { id: row.id } }),
res2 = await doFetch({ url: "/lease/umContractEquipment/queryByContractId", params: { contractId: row.id } });
let details = { ...(res1?.data?.data ?? {}), contractEquipmentList: res2?.data?.dataList ?? [] }
camount(row.amount);
setdrawer((s) => ({ setdrawer((s) => ({
...s, ...s,
open: true, open: true,
item: row, item: details,
val: 'edit', val: 'edit',
title: '编辑' title: '编辑'
})); }));
...@@ -205,8 +302,8 @@ function Contract(props) { ...@@ -205,8 +302,8 @@ function Contract(props) {
} }
const columns = useMemo(() => { const columns = useMemo(() => {
let defcolumn = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.columns; let defcolumn = getcolumns(setdrawer, drawer).filter((it) => it.key == activeTabKey)[0]?.columns;
let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {}; let defpath = getcolumns(setdrawer, drawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {};
if (activeTabKey == 1) { if (activeTabKey == 1) {
return defcolumn.concat({ return defcolumn.concat({
title: '操作', title: '操作',
...@@ -217,7 +314,7 @@ function Contract(props) { ...@@ -217,7 +314,7 @@ function Contract(props) {
} else { } else {
return defcolumn; return defcolumn;
} }
}, [activeTabKey]); }, [activeTabKey, drawer]);
const pathconfig = useMemo(() => { const pathconfig = useMemo(() => {
let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {}; let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {};
...@@ -241,6 +338,10 @@ function Contract(props) { ...@@ -241,6 +338,10 @@ function Contract(props) {
}); });
return list; return list;
}; };
const getEndLeaseDate = (start) => {
let end = dayjs(start).add(drawer.item.tenancy, 'months').subtract(1, 'day');
return end;
};
return ( return (
<div style={{ position: 'relative' }}> <div style={{ position: 'relative' }}>
<AutoTable <AutoTable
...@@ -286,8 +387,9 @@ function Contract(props) { ...@@ -286,8 +387,9 @@ function Contract(props) {
}} }}
/> />
<DrawerPro <DrawerPro
{...drawer}
fields={(drawer.val != 'add' && drawer.val != 'edit') ? drawer.fields : columns} fields={(drawer.val != 'add' && drawer.val != 'edit') ? drawer.fields : columns}
detailpath={pathconfig?.detail || null} detailpath={drawer.val == 'only' ? pathconfig?.detail : null}
detailData={drawer?.item} detailData={drawer?.item}
defaultFormValue={drawer?.item} defaultFormValue={drawer?.item}
params={{ id: drawer?.item?.id }} params={{ id: drawer?.item?.id }}
...@@ -299,13 +401,15 @@ function Contract(props) { ...@@ -299,13 +401,15 @@ function Contract(props) {
open: false, open: false,
})); }));
}} }}
{...drawer}
onFinish={(vals) => { onFinish={(vals) => {
console.log(vals); let newVals = JSON.parse(JSON.stringify(vals));
if (drawer?.val == 'add') { if (drawer?.val == 'add') {
run({ url: pathconfig?.add, params: { ...vals, amount } }); run({ url: pathconfig?.add, params: { ...newVals, amount } });
} else if (drawer?.val == 'edit') { } else if (drawer?.val == 'edit') {
run({ url: pathconfig?.edit, params: { ...vals, id: drawer?.item?.id, amount } }); run({ url: pathconfig?.edit, params: { ...newVals, id: drawer?.item?.id, amount } });
} else if (drawer?.val == 'start') {
delete newVals.intelligenceList;
run({ url: '/lease/umContract/start', params: { ...newVals, id: drawer?.item?.id } });
} }
}} }}
onValuesChange={(changedValues, allValues) => { onValuesChange={(changedValues, allValues) => {
...@@ -323,6 +427,21 @@ function Contract(props) { ...@@ -323,6 +427,21 @@ function Contract(props) {
} }
}) })
} }
if (i == 'startLeaseDate') {
let end = getEndLeaseDate(changedValues[i]);
formRef?.current?.setFieldsValue({ ['endLeaseDate']: end });
setdrawer((s) => {
return {
...s,
item: { ...s.item, endLeaseDate: end }
}
})
}
if (i == 'intelligenceList') {
let params = changedValues[i], equipmentId = params.length > 0 ? intelligenceList[params.length - 1]?.equipmentId : "";
params = params.length > 0 ? params[params.length - 1] : {};
doFetch({ url: '/lease/umLeaseLedger/bound', params: { ...params, id: equipmentId } });
}
} }
}} }}
submitter={{ submitter={{
...@@ -344,7 +463,7 @@ function Contract(props) { ...@@ -344,7 +463,7 @@ function Contract(props) {
}} }}
> >
重置 重置
</PremButton>, </PremButton>
<PremButton <PremButton
key='submit' key='submit'
btn={{ btn={{
...@@ -355,7 +474,7 @@ function Contract(props) { ...@@ -355,7 +474,7 @@ function Contract(props) {
}} }}
> >
提交 提交
</PremButton>, </PremButton>
</div> </div>
</div> </div>
]; ];
...@@ -363,7 +482,7 @@ function Contract(props) { ...@@ -363,7 +482,7 @@ function Contract(props) {
}} }}
> >
{/* {selectType(drawer?.val)} */} <Details drawer={drawer} />
</DrawerPro> </DrawerPro>
</div> </div>
); );
......
...@@ -61,6 +61,7 @@ const Devicedata = () => { ...@@ -61,6 +61,7 @@ const Devicedata = () => {
extraparams={extraparams} extraparams={extraparams}
pagination={false} pagination={false}
toolBarRender={true} toolBarRender={true}
options={false}
/> />
}, },
{ {
......
import React, { useState, useRef } from 'react';
import AutoTable from '@/components/AutoTable/mtable';
import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch';
const columnsa = [
{
title: '客户名称',
dataIndex: 'ledgerCustomer',
key: 'ledgerCustomer'
},
{
title: '租赁数量',
dataIndex: 'deviceNum',
key: 'deviceNum',
search: false
},
{
title: '使用率',
dataIndex: 'rate',
key: 'rate',
search: false
},
],
columnsb = [
{
title: '合同单号',
dataIndex: 'contractNo',
key: 'contractNo'
},
{
title: '设备编号',
dataIndex: 'equipmentNo',
key: 'equipmentNo'
},
{
title: '设备名称',
dataIndex: 'equipmentName',
key: 'equipmentName'
},
{
title: '设备型号',
dataIndex: 'equipmentModelName',
key: 'equipmentModelId',
valueType: 'select',
options: { path: '/asset/equipmentModel/query/selection', params: {} }
},
{
title: '设备品牌',
dataIndex: 'brand',
key: 'brand'
},
{
title: '状态',
dataIndex: 'collectStatusName',
key: 'collectStatus',
valueType: 'select',
options: [
{
value: 1,
label: '工作'
},
{
value: 2,
label: '待机'
},
{
value: 3,
label: '关机'
},
{
value: 4,
label: '报警'
},
]
},
{
title: '工作',
dataIndex: 'runRate',
key: 'runRate',
search: false
},
{
title: '待机',
dataIndex: 'standbyRate',
key: 'standbyRate',
search: false
},
{
title: '报警',
dataIndex: 'alarmRate',
key: 'alarmRate',
search: false
},
{
title: '关机',
dataIndex: 'offRate',
key: 'offRate',
search: false
},
];
const Leasedevice = () => {
const [clickrow, cr] = useState({}),
[searchParams, csp] = useState({}),
formRef = useRef();
const ledgerCustomer = useRequest(async () => {
let res = await doFetch({ url: "/lease/umLeaseLedger/ledgerCustomerEquipmentUseRate", params: { ...searchParams } });
cr(res?.data?.dataList?.[0]);
return res?.data?.dataList ?? [];
}, {
refreshDeps: [searchParams]
})
return <div style={{ background: '#fff' }}>
<div className="ant-card-head" style={{ backgroundColor: 'white' }}>
<div className="ant-card-head-wrapper">
<div className="ant-card-head-title">
<h3 className="page-title">租赁设备</h3>
</div>
</div>
</div>
<div style={{ display: "flex", gap: 20, padding: 15 }}>
<div style={{ flex: 1 }}>
<AutoTable
columns={columnsa}
dataSource={ledgerCustomer?.data ?? []}
resizeable={false}
pageextra="none"
onRow={(record) => {
return {
onClick: (event) => {
console.log(event, record);
}
};
}}
pagination={'false'}
formRef={formRef}
dataSourceFieldsChange={(val) => {
csp({ ...val })
}}
toolBarRender={true}
options={false}
/>
</div>
<div style={{ flex: 2 }}>
<AutoTable
columns={columnsb}
path='/lease/umLeaseLedger/ledgerCustomerEquipmentUseDetail'
resizeable={false}
pageextra="none"
/>
</div>
</div>
</div>
}
export default Leasedevice;
\ No newline at end of file
import React, { useState, useMemo } from 'react';
import styles from "./index.less";
import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch';
import { DatePicker, Button } from "antd";
import dayjs from 'dayjs';
import AutoTable from '@/components/AutoTable/mtable';
import ReactEcharts from 'echarts-for-react';
import TreeRender from '@/components/TreeRender';
const { RangePicker } = DatePicker;
const statusColors = {
报警: '#fa4659',
工作: '#00fff5',
待机: '#80d6ff',
关机: '#194769'
},
format = 'YYYY-MM-DD HH:mm:ss';
const Devicestatus = ({ drawer }) => {
const [dateTimeRange, cdate] = useState([dayjs().subtract(24, 'hours').format(format), dayjs().format(format)]),
[deviceId, cdv] = useState('');
const device = useRequest(async () => {
let res = await doFetch({ url: "/lease/umLeaseLedger/querySelectbox", params: {} });
cdv(res?.data?.dataList?.[0]?.value ?? '');
return res?.data?.dataList?.map((it) => {
return {
title: it.label,
key: it.value,
children: []
}
}) ?? [];
}),
chartdata = useRequest(async () => {
if (deviceId) {
let res = await doFetch({ url: "/lease/umLeaseLedger/queryEquipmentStatus", params: { dateTimeRange, id: deviceId } });
return res?.data ?? {};
} else {
return {}
}
}, {
refreshDeps: [dateTimeRange, deviceId]
});
const onselecteTree = (selectedKeys, e, alldata) => {
cdv(e.node.key);
};
const options = useMemo(() => {
let data = chartdata?.data?.data?.datalist ?? [];
const xAxisData = [];
const seriesData = [];
data.forEach((item) => {
xAxisData.push(item.start);
xAxisData.push(item.end);
const statusColor = statusColors[item.status];
seriesData.push([item.start, item.status, statusColor]);
seriesData.push([item.end, item.status, statusColor]);
});
const option = {
tooltip: {
formatter: (params) => {
}
},
xAxis: {
type: 'category',
name: '小时',
boundaryGap: false,
data: chartdata?.data?.data?.timeList ?? []
},
yAxis: {
type: 'category',
data: ['报警', '工作', '待机', '关机']
},
series: [
{
type: 'line',
step: 'start',
lineStyle: {
width: 2,
type: 'dotted'
},
data: seriesData.map((item) => ({
value: [item[0], item[1]],
itemStyle: {
color: item[2],
borderType: 'solid'
},
symbol:
item[2] == '#fa4659'
? 'triangle'
: item[2] == '#00fff5'
? 'rect'
: '',
symbolSize: 12
}))
}
]
};
return option;
}, [chartdata?.data]);
return <div style={{ display: "flex", justifyContent: "space-between", position: "relative" }}>
<div style={{ width: 300, padding: '0 16px', flexShrink: 0 }}>
<TreeRender dataSource={device?.data} onselected={onselecteTree} noaction={true} isSelectFirst={true} maxWidth={240} />
</div>
<div style={{ padding: 16, flex: 1, borderLeft: '1px solid #f0f0f0' }}>
<div style={{ marginBottom: 30 }}>
<RangePicker
showTime={{
format: 'HH:mm:ss',
}}
format={format}
onChange={(val, dateString) => {
}}
value={dateTimeRange?.length > 0 ? [dayjs(dateTimeRange?.[0]), dayjs(dateTimeRange?.[1])] : []}
/>
<Button onClick={() => {
chartdata.run()
}} type="primary" style={{ marginLeft: 15 }}>查询</Button>
</div>
<div style={{ display: 'flex' }}>
<div className='statuspage' style={{ flex: 1, marginRight: 30 }}>
<AutoTable
columns={[
{
title: '采集时间',
dataIndex: 'start',
key: 'start',
search: false
},
{
title: '采集状态',
dataIndex: 'status',
key: 'status',
search: false
},
]}
dataSource={chartdata?.data?.data?.datalist?.map((it, i) => {
return {
...it,
id: i
}
}) ?? []}
resizeable={false}
pageextra="none"
options={false}
/>
</div>
<div style={{ flex: 2 }}>
<div style={{ display: "flex", flexWrap: "wrap", gap: 15 }}>
{
Object?.keys(statusColors)?.map(it => {
return <div key={it} style={{ width: '30%', display: 'flex', gap: 16, justifyContent: 'center' }} >
<div style={{ color: statusColors[it] }}>{it}时长</div>
<div>{chartdata?.data?.data?.rateList?.filter(item => item.name == it)?.[0]?.time ?? 0}小时</div>
<div>{chartdata?.data?.data?.rateList?.filter(item => item.name == it)?.[0]?.rate ?? 0}%</div>
</div>
})
}
<div style={{ width: '30%', display: 'flex', gap: 16, justifyContent: 'center' }} >
<div>总时长</div>
<div>{chartdata?.data?.data?.timeRange}小时</div>
</div>
</div>
<ReactEcharts
style={{ height: 600, width: '100%' }}
option={options}
/>
</div>
</div>
</div>
</div>
}
export default Devicestatus;
\ No newline at end of file
...@@ -30,7 +30,8 @@ function getcolumns(setdrawer) { ...@@ -30,7 +30,8 @@ function getcolumns(setdrawer) {
open: true, open: true,
item: row, item: row,
val: 'only', val: 'only',
title: '设备详情' title: '设备详情',
type: ''
})); }));
}} }}
> >
......
...@@ -12,6 +12,7 @@ import Leaseresume from "./Leaseresume"; ...@@ -12,6 +12,7 @@ import Leaseresume from "./Leaseresume";
import Operatinghistory from "./Operatinghistory"; import Operatinghistory from "./Operatinghistory";
import Resume from "./Resume"; import Resume from "./Resume";
import Basemsg from "./Basemsg"; import Basemsg from "./Basemsg";
import Devicestatus from "./Devicestatus";
import setAllCanvas from "@/utils/drawimage"//导出二维码 import setAllCanvas from "@/utils/drawimage"//导出二维码
const Ledger = () => { const Ledger = () => {
let actionRef = useRef(); let actionRef = useRef();
...@@ -244,7 +245,7 @@ const Ledger = () => { ...@@ -244,7 +245,7 @@ const Ledger = () => {
} }
const items = useMemo(() => { const items = useMemo(() => {
if (drawer.val == 'only') { if (drawer.val == 'only') {
if (drawer.item.equipmentType == 1) { if (drawer?.item?.equipmentType == 1) {
return [ return [
{ label: '基础信息', key: 'item-1', children: <Basemsg drawer={drawer} /> }, { label: '基础信息', key: 'item-1', children: <Basemsg drawer={drawer} /> },
{ label: '绑定履历', key: 'item-2', children: <Resume drawer={drawer} url='/lease/umLeaseLedgerEquipment/queryList' /> }, { label: '绑定履历', key: 'item-2', children: <Resume drawer={drawer} url='/lease/umLeaseLedgerEquipment/queryList' /> },
...@@ -312,7 +313,13 @@ const Ledger = () => { ...@@ -312,7 +313,13 @@ const Ledger = () => {
btn={{ btn={{
type: 'default', type: 'default',
onClick: () => { onClick: () => {
setdrawer((s) => ({
...s,
open: true,
val: 'only',
title: '状态查看',
type: "status"
}))
}, },
style: { marginLeft: 12 } style: { marginLeft: 12 }
}} }}
...@@ -382,8 +389,12 @@ const Ledger = () => { ...@@ -382,8 +389,12 @@ const Ledger = () => {
await runAsync({ url: "/lease/umLeaseLedger/bound", params: { ...newParams, id: drawer?.item?.id } }); await runAsync({ url: "/lease/umLeaseLedger/bound", params: { ...newParams, id: drawer?.item?.id } });
} }
}} }}
bodyStyle={drawer?.type == 'status' ? { padding: 0 } : {}}
> >
{
drawer.type == 'status' ? <Devicestatus /> :
<Tabs items={items} destroyInactiveTabPane /> <Tabs items={items} destroyInactiveTabPane />
}
</DrawerPro> </DrawerPro>
</div> </div>
} }
......
...@@ -6548,6 +6548,22 @@ ecc-jsbn@~0.1.1: ...@@ -6548,6 +6548,22 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0" jsbn "~0.1.0"
safer-buffer "^2.1.0" safer-buffer "^2.1.0"
echarts-for-react@^3.0.2:
version "3.0.2"
resolved "https://registry.npmmirror.com/echarts-for-react/-/echarts-for-react-3.0.2.tgz#ac5859157048a1066d4553e34b328abb24f2b7c1"
integrity sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA==
dependencies:
fast-deep-equal "^3.1.3"
size-sensor "^1.0.1"
echarts@^5.4.3:
version "5.4.3"
resolved "https://registry.npmmirror.com/echarts/-/echarts-5.4.3.tgz#f5522ef24419164903eedcfd2b506c6fc91fb20c"
integrity sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==
dependencies:
tslib "2.3.0"
zrender "5.4.4"
ee-first@1.1.1: ee-first@1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://mirrors.huaweicloud.com/repository/npm/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" resolved "https://mirrors.huaweicloud.com/repository/npm/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
...@@ -14001,6 +14017,11 @@ sisteransi@^1.0.5: ...@@ -14001,6 +14017,11 @@ sisteransi@^1.0.5:
resolved "https://mirrors.huaweicloud.com/repository/npm/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" resolved "https://mirrors.huaweicloud.com/repository/npm/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
size-sensor@^1.0.1:
version "1.0.2"
resolved "https://registry.npmmirror.com/size-sensor/-/size-sensor-1.0.2.tgz#b8f8da029683cf2b4e22f12bf8b8f0a1145e8471"
integrity sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw==
slash2@2.0.0: slash2@2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://mirrors.huaweicloud.com/repository/npm/slash2/-/slash2-2.0.0.tgz#f4e0a11708b8545b912695981cf7096f52c63487" resolved "https://mirrors.huaweicloud.com/repository/npm/slash2/-/slash2-2.0.0.tgz#f4e0a11708b8545b912695981cf7096f52c63487"
...@@ -14978,6 +14999,11 @@ tslib@2.0.1: ...@@ -14978,6 +14999,11 @@ tslib@2.0.1:
resolved "https://mirrors.huaweicloud.com/repository/npm/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" resolved "https://mirrors.huaweicloud.com/repository/npm/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e"
integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==
tslib@2.3.0:
version "2.3.0"
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
tslib@^1.8.1: tslib@^1.8.1:
version "1.14.1" version "1.14.1"
resolved "https://mirrors.huaweicloud.com/repository/npm/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" resolved "https://mirrors.huaweicloud.com/repository/npm/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
...@@ -15885,6 +15911,13 @@ yocto-queue@^0.1.0: ...@@ -15885,6 +15911,13 @@ yocto-queue@^0.1.0:
resolved "https://mirrors.huaweicloud.com/repository/npm/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" resolved "https://mirrors.huaweicloud.com/repository/npm/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
zrender@5.4.4:
version "5.4.4"
resolved "https://registry.npmmirror.com/zrender/-/zrender-5.4.4.tgz#8854f1d95ecc82cf8912f5a11f86657cb8c9e261"
integrity sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==
dependencies:
tslib "2.3.0"
zscroller@~0.4.0: zscroller@~0.4.0:
version "0.4.8" version "0.4.8"
resolved "https://mirrors.huaweicloud.com/repository/npm/zscroller/-/zscroller-0.4.8.tgz#69eed68690808eedf81f9714014356b36cdd20f4" resolved "https://mirrors.huaweicloud.com/repository/npm/zscroller/-/zscroller-0.4.8.tgz#69eed68690808eedf81f9714014356b36cdd20f4"
......
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