From a884e58203601b51c6abeb5ffed880107cd1aef5 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Wed, 8 May 2024 16:31:15 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=B2=E7=9F=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/drawer/index.jsx | 49 +++++++++++++++++++++----------- src/components/drawer/index.less | 8 ++++++ 2 files changed, 40 insertions(+), 17 deletions(-) diff --git a/src/components/drawer/index.jsx b/src/components/drawer/index.jsx index bea0e32..84ed0b6 100644 --- a/src/components/drawer/index.jsx +++ b/src/components/drawer/index.jsx @@ -31,14 +31,21 @@ export default class DrawerComponents extends React.Component { dataSource: [], columns: [], spinning: true, - showJob: true, + showJob: false, }; } componentDidMount() {} // 点击节点 - onNodeClick(node) {} + onNodeClick(node) { + if (node.ftype == '4') { + window.open( + `/spa/hrm/index_mobx.html#/main/hrm/card/cardInfo/${node.id}`, + '_blank', + ); + } + } onButtonClick(event, d) { if (d.children) { @@ -63,7 +70,7 @@ export default class DrawerComponents extends React.Component { //获取数据 getDeatilDatas(params, type = 'chart', showJob = '1') { - this.setState({ spinning: true }); + this.setState({ spinning: true, data: [], dataSource: [] }); d3.json( '/api/bs/hrmorganization/orgchart/getDepartmentDetail?' + qs.stringify({ detauleType: type, ...params, showJob }), @@ -72,7 +79,11 @@ export default class DrawerComponents extends React.Component { if (type == 'chart') { this.setState({ data: data.data, spinning: false }); } else { - this.setState({ dataSource: data.dataSource, columns: data.columns }); + this.setState({ + dataSource: data.dataSource, + columns: data.columns, + spinning: false, + }); } }); } @@ -299,13 +310,12 @@ export default class DrawerComponents extends React.Component { }; showDrawer = (params) => { - const showJob = params.fclass == '0' ? '1' : '0'; - this.getDeatilDatas(params, 'chart', showJob); + this.getDeatilDatas(params, 'chart', '0'); this.setState({ open: true, params: params }); }; onClose = () => { - this.setState({ open: false, detailType: 'chart', showJob: true }); + this.setState({ open: false, detailType: 'chart', showJob: false }); }; changeDetail = () => { @@ -372,17 +382,21 @@ export default class DrawerComponents extends React.Component { 导出 - + + 切换 + } > {detailType == 'chart' ? ( - data.length > 0 && ( - + + + {data.length > 0 && ( (orgChart = chart)} setClick={(click) => (addNodeChildFunc = click)} @@ -394,14 +408,15 @@ export default class DrawerComponents extends React.Component { nodeHeight={this.nodeHeightRender} nodeContent={this.nodeContentRender} /> - - ) + )} + ) : ( Date: Wed, 5 Jun 2024 16:01:37 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=9E=B6=E6=9E=84?= =?UTF-8?q?=E5=9B=BE=E5=A4=9A=E8=AF=AD=E8=A8=80=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/dialog/copyDialog.jsx | 179 +++++++++++---------- src/components/dialog/mergeDialog.jsx | 199 +++++++++++------------ src/components/drawer/index.jsx | 85 +++++----- src/components/topBar/index.jsx | 64 ++++---- src/pages/company.jsx | 53 +++--- src/pages/dragTree.jsx | 221 ++++++++++++++------------ src/pages/statisticsTable.jsx | 130 ++++++++------- src/pages/user.jsx | 2 +- src/util/i18n.js | 15 ++ 9 files changed, 512 insertions(+), 436 deletions(-) create mode 100644 src/util/i18n.js diff --git a/src/components/dialog/copyDialog.jsx b/src/components/dialog/copyDialog.jsx index ac89253..de9f8c7 100644 --- a/src/components/dialog/copyDialog.jsx +++ b/src/components/dialog/copyDialog.jsx @@ -10,103 +10,106 @@ import * as d3 from 'd3'; import './index.less'; import { HomeOutlined } from '@ant-design/icons'; import './index.less'; +import { getLabel } from '../../util/i18n.js'; const layout = { labelCol: { span: 8 }, wrapperCol: { span: 14 }, }; -const CopyDialog = forwardRef(({ open, onCreate, onCancel }, ref) => { - const [treeData, setData] = useState([]); - const [form] = Form.useForm(); - const formRef = useRef(null); +const CopyDialog = forwardRef( + ({ open, onCreate, onCancel, labelData }, ref) => { + const [treeData, setData] = useState([]); + const [form] = Form.useForm(); + const formRef = useRef(null); - useImperativeHandle(ref, () => ({ - getTreeData() { - form.resetFields(); - d3.json('/api/bs/hrmorganization/orgchart/getSubCompanyTree').then( - (data) => { - data.companyTree.map((item, index) => { - item.icon = ; - }); - setData(data.companyTree); - }, - ); - }, - })); + useImperativeHandle(ref, () => ({ + getTreeData() { + form.resetFields(); + d3.json('/api/bs/hrmorganization/orgchart/getSubCompanyTree').then( + (data) => { + data.companyTree.map((item, index) => { + item.icon = ; + }); + setData(data.companyTree); + }, + ); + }, + })); - /** - * 根节点树异步加载 - * @param {} parentId - * @returns - */ - const onRootLoadData = (treeNode) => - new Promise((resolve) => { - const { id } = treeNode.props; - setTimeout(() => { - d3.json( - `/api/bs/hrmorganization/orgchart/getSubCompanyTree?subcompany=${id}`, - ).then((data) => { - data.companyTree.map((item, index) => { - item.icon = ; + /** + * 根节点树异步加载 + * @param {} parentId + * @returns + */ + const onRootLoadData = (treeNode) => + new Promise((resolve) => { + const { id } = treeNode.props; + setTimeout(() => { + d3.json( + `/api/bs/hrmorganization/orgchart/getSubCompanyTree?subcompany=${id}`, + ).then((data) => { + data.companyTree.map((item, index) => { + item.icon = ; + }); + let arr = [...treeData, ...data.companyTree]; + setData(arr); }); - let arr = [...treeData, ...data.companyTree]; - setData(arr); - }); - resolve(undefined); - }, 200); - }); + resolve(undefined); + }, 200); + }); - return ( - { - form - .validateFields() - .then((values) => { - onCreate(values); - }) - .catch((info) => { - console.log('Validate Failed:', info); - }); - }} - > - - - - + return ( + { + form + .validateFields() + .then((values) => { + onCreate(values); + }) + .catch((info) => { + console.log('Validate Failed:', info); + }); + }} + > + + + + - - - - - - ); -}); + + + + + + ); + }, +); export default CopyDialog; diff --git a/src/components/dialog/mergeDialog.jsx b/src/components/dialog/mergeDialog.jsx index 1cb38e3..438a0b4 100644 --- a/src/components/dialog/mergeDialog.jsx +++ b/src/components/dialog/mergeDialog.jsx @@ -10,114 +10,117 @@ import * as d3 from 'd3'; import './index.less'; import { HomeOutlined, FolderOutlined } from '@ant-design/icons'; import './index.less'; +import { getLabel } from '../../util/i18n.js'; const layout = { labelCol: { span: 6 }, wrapperCol: { span: 14 }, }; -const MergeDialog = forwardRef(({ open, onCreate, onCancel }, ref) => { - const [treeData, setData] = useState([]); - const [form] = Form.useForm(); - const formRef = useRef(null); +const MergeDialog = forwardRef( + ({ open, onCreate, onCancel, labelData }, ref) => { + const [treeData, setData] = useState([]); + const [form] = Form.useForm(); + const formRef = useRef(null); - const [treeLine, setTreeLine] = useState(true); + const [treeLine, setTreeLine] = useState(true); - useImperativeHandle(ref, () => ({ - getTreeData() { - form.resetFields(); - d3.json('/api/bs/hrmorganization/orgchart/getDepartmentTree').then( - (data) => { - data.departmentTree.map((item, index) => { - item.icon = ; - }); - setData(data.departmentTree); - }, - ); - }, - })); - - /** - * 根节点树异步加载 - * @param {} parentId - * @returns - */ - const onRootLoadData = (treeNode) => - new Promise((resolve) => { - const { id } = treeNode.props; - setTimeout(() => { - d3.json( - `/api/bs/hrmorganization/orgchart/getDepartmentTree?subcompany=${id}`, - ).then((data) => { - data.departmentTree.map((item, index) => { - if (item.key.indexOf('d') > -1) { - item.icon = ; - } else { + useImperativeHandle(ref, () => ({ + getTreeData() { + form.resetFields(); + d3.json('/api/bs/hrmorganization/orgchart/getDepartmentTree').then( + (data) => { + data.departmentTree.map((item, index) => { item.icon = ; - } - }); - let arr = [...treeData, ...data.departmentTree]; - setData(arr); - }); - resolve(undefined); - }, 200); - }); + }); + setData(data.departmentTree); + }, + ); + }, + })); - return ( - { - form - .validateFields() - .then((values) => { - onCreate(values); - }) - .catch((info) => { - console.log('Validate Failed:', info); + /** + * 根节点树异步加载 + * @param {} parentId + * @returns + */ + const onRootLoadData = (treeNode) => + new Promise((resolve) => { + const { id } = treeNode.props; + setTimeout(() => { + d3.json( + `/api/bs/hrmorganization/orgchart/getDepartmentTree?subcompany=${id}`, + ).then((data) => { + data.departmentTree.map((item, index) => { + if (item.key.indexOf('d') > -1) { + item.icon = ; + } else { + item.icon = ; + } + }); + let arr = [...treeData, ...data.departmentTree]; + setData(arr); }); - }} - > - - - - + resolve(undefined); + }, 200); + }); + + return ( + { + form + .validateFields() + .then((values) => { + onCreate(values); + }) + .catch((info) => { + console.log('Validate Failed:', info); + }); + }} + > + + + + - - - - - - ); -}); + + + + + + ); + }, +); export default MergeDialog; diff --git a/src/components/drawer/index.jsx b/src/components/drawer/index.jsx index 84ed0b6..def832f 100644 --- a/src/components/drawer/index.jsx +++ b/src/components/drawer/index.jsx @@ -16,6 +16,7 @@ import { message } from 'antd'; import jsPDF from 'jspdf'; import ExportJsonExcel from 'js-export-excel'; import './index.less'; +import { getLabel } from '../../util/i18n.js'; let addNodeChildFunc = null; let orgChart = null; @@ -175,6 +176,7 @@ export default class DrawerComponents extends React.Component { }; handleExport = (e) => { + const { labelData } = this.props; let type = e.key == '1' ? 'png' : e.key == '1' ? 'pdf' : 'excel'; if (type == 'png') { orgChart && orgChart.exportImg({ full: true }); @@ -201,30 +203,30 @@ export default class DrawerComponents extends React.Component { } } } - option.fileName = '组织信息'; + option.fileName = `${getLabel(547468, labelData)}`; option.datas = [ { sheetData: dataTable, sheetName: 'sheet', sheetFilter: [ - '序号', - '工号', - '姓名', - '性别', - '部门', - '分部', - '岗位', - '手机号', + `${getLabel(547327, labelData)}`, + `${getLabel(547328, labelData)}`, + `${getLabel(547329, labelData)}`, + `${getLabel(547330, labelData)}`, + `${getLabel(547331, labelData)}`, + `${getLabel(547332, labelData)}`, + `${getLabel(547333, labelData)}`, + `${getLabel(547334, labelData)}`, ], sheetHeader: [ - '序号', - '工号', - '姓名', - '性别', - '部门', - '分部', - '岗位', - '手机号', + `${getLabel(547327, labelData)}`, + `${getLabel(547328, labelData)}`, + `${getLabel(547329, labelData)}`, + `${getLabel(547330, labelData)}`, + `${getLabel(547331, labelData)}`, + `${getLabel(547332, labelData)}`, + `${getLabel(547333, labelData)}`, + `${getLabel(547334, labelData)}`, ], }, ]; @@ -237,6 +239,8 @@ export default class DrawerComponents extends React.Component { * 节点渲染 */ nodeContentRender = (d, i, arr, state) => { + const { labelData } = this.props; + if (d.data.ftype == 2) { return ` @@ -254,11 +258,13 @@ export default class DrawerComponents extends React.Component { ${d.data.fname} - 负责人:${d.data.fleader} + ${getLabel(547322, labelData)}:${d.data.fleader} - 在岗: ${d.data.fonjob} 人 + ${getLabel(547323, labelData)}: ${ + d.data.fonjob + } ${getLabel(547525, labelData)} @@ -273,9 +279,13 @@ export default class DrawerComponents extends React.Component { - ${d.data.fname} + ${ + d.data.fname + } - 在岗: ${d.data.fonjob} 人 + ${getLabel(547323, labelData)}: ${ + d.data.fonjob + } ${getLabel(547525, labelData)} @@ -295,13 +305,15 @@ export default class DrawerComponents extends React.Component { }" style="width: 58px; height: 58px; border-radius: 50%; margin-top: 16px;margin-left: -6px;z-index:999" /> - + ${ d.data.fname } - 司龄: ${d.data.companyWorkYear} 年 + ${getLabel(547324, labelData)}: ${ + d.data.companyWorkYear + } ${getLabel(547526, labelData)} @@ -340,8 +352,11 @@ export default class DrawerComponents extends React.Component { showJob, } = this.state; let arr = []; + + const { labelData } = this.props; + if (detailType == 'chart') { - arr.push({ label: '导出图片', key: '1' }); + arr.push({ label: `${getLabel(547315, labelData)}`, key: '1' }); //arr.push({ label: '导出PDF', key: '2' }); } else { arr.push({ label: '导出表格', key: '3' }); @@ -351,7 +366,7 @@ export default class DrawerComponents extends React.Component { return ( - 是否显示岗位 + {getLabel(547447, labelData)} )} - 导出 + {getLabel(547314, labelData)} - 切换 + {getLabel(547326, labelData)} } @@ -393,7 +408,7 @@ export default class DrawerComponents extends React.Component { {data.length > 0 && ( @@ -418,13 +433,11 @@ export default class DrawerComponents extends React.Component { scroll={{ y: 600 }} loading={spinning} pagination={{ - locale: { - // 翻页文本替换 - items_per_page: '条/页', - jump_to: '跳至', - page: '页', - }, - showTotal: (total) => `共 ${dataSource.length} 条`, + showSizeChanger: false, + showTotal: (total) => + `${getLabel(547523, labelData)} ${ + dataSource.length + } ${getLabel(547524, labelData)}`, }} /> diff --git a/src/components/topBar/index.jsx b/src/components/topBar/index.jsx index fa3b8d7..baec137 100644 --- a/src/components/topBar/index.jsx +++ b/src/components/topBar/index.jsx @@ -15,6 +15,7 @@ import { Modal, Input, message, + notification, } from 'antd'; const { Option } = Select; const { TextArea } = Input; @@ -23,6 +24,8 @@ import 'moment/locale/zh-cn'; import locale from 'antd/lib/date-picker/locale/zh_CN'; import { HomeOutlined } from '@ant-design/icons'; moment.locale('zh-cn'); +import { getLabel } from '../../util/i18n.js'; +import { SmileOutlined } from '@ant-design/icons'; export class TopBar extends React.Component { constructor(props) { @@ -63,8 +66,9 @@ export class TopBar extends React.Component { */ handleOk = () => { const { description, requestData } = this.state; + const { labelData } = this.props; if (description.length == 0) { - return message.error('请填写描述信息'); + return message.error(`${getLabel(547512, labelData)}`); } this.setState({ confirmLoading: true }); let api = @@ -80,9 +84,9 @@ export class TopBar extends React.Component { open: false, confirmLoading: false, }); - message.success('版本记录成功,请重新刷新页面', 2, 3); + message.success(`${getLabel(547513, labelData)}`, 2, 3); } else { - message.error('版本记录失败,请联系相关人员处理数据', 2, 3); + message.error(`${getLabel(547514, labelData)}`, 2, 3); } }); }; @@ -175,7 +179,7 @@ export class TopBar extends React.Component { onClick={this.handleExportMenuClick.bind(this)} items={[ { - label: '导出图片', + label: `${getLabel(547315, this.props.labelData)}`, key: '1', }, // { @@ -187,14 +191,14 @@ export class TopBar extends React.Component { ); render() { - const { disabled, type } = this.props; + const { disabled, type, labelData } = this.props; const { rootTreeData, open, confirmLoading, treeExpandedKeys } = this.state; return ( - 维度: + {getLabel(547293, labelData)}: - 根节点: + {getLabel(547294, labelData)}: - 隐藏部门 + {getLabel(547296, labelData)} @@ -263,17 +267,17 @@ export class TopBar extends React.Component { - 部门层级: + {getLabel(547299, labelData)}: this.handleFormChange({ level: value })} > - 全部 - 一级 - 二级 - 三级 + {getLabel(547301, labelData)} + {getLabel(547463, labelData)} + {getLabel(547464, labelData)} + {getLabel(547465, labelData)} @@ -288,10 +292,10 @@ export class TopBar extends React.Component { }) } > - 显示虚拟组织 + {getLabel(547302, labelData)} @@ -309,7 +313,7 @@ export class TopBar extends React.Component { this.setState({ open: true }); }} > - 版本记录 + {getLabel(547305, labelData)} - 查询 + {getLabel(547307, labelData)} - 组织调整 + {getLabel(547310, labelData)} - 人数统计 + {getLabel(547313, labelData)} - 导出 + {getLabel(547314, labelData)} this.setState({ open: false })} > - - 提示:版本记录耗时较长,请谨慎操作(仅记录当前维度的数据版本) - - 主题: + {getLabel(547316, labelData)} + {getLabel(547317, labelData)}: { - notification.open({ - message: '提示', - description: - '组织架构图中编制数和在编数显示初始化需参考文档配置定时任务并执行!!!(编制数默认取本年度最新编制信息,人数统计展示仅限于行政维度)', - icon: , - }); - }, []); + const [labelData, setLabelData] = useState({}); + const [lebelCompleted, setLabelCompleted] = useState(false); + useEffect(() => { infoRef.current = timelineId; }, [timelineId]); + const [spinning, setSpinning] = useState(false); // 点击节点 @@ -106,15 +103,30 @@ export default function companyPage() { return fisvitual == '0' ? `./img/back/level1.png` : `./img/back/level5.png`; } - // 获取数据 + // 多语言获取 useEffect(() => { - d3.json( - '/api/bs/hrmorganization/orgchart/companyData?fclass=0&fisvitual=0&hidedept=0&root=0&level=2&id=0', - ).then((data) => { - setData(data.data); - setHasRight(data?.hasRight); + d3.json('/api/bs/hrmorganization/orgchart/i18n').then((res) => { + setLabelData(res.data); + setLabelCompleted(true); + notification.open({ + message: `${getLabel(547283, res.data)}`, + description: `${getLabel(547292, res.data)}`, + icon: , + }); }); - }, [true]); + }, []); + + // 获取数据 + useEffect(() => { + if (lebelCompleted) { + d3.json( + '/api/bs/hrmorganization/orgchart/companyData?fclass=0&fisvitual=0&hidedept=0&root=0&level=2&id=0', + ).then((data) => { + setData(data.data); + setHasRight(data?.hasRight); + }); + } + }, [lebelCompleted]); // ButtonContent渲染 const buttonContentRender = ({ node, state }) => { @@ -381,7 +393,7 @@ export default function companyPage() { if (data.data) { if (!data.data.length) { setData([{}]); - message.warning('暂无数据'); + message.warning(`${getLabel(547516, labelData)}`); } else { setData(data?.data); } @@ -428,13 +440,14 @@ export default function companyPage() { style={{ display: 'block', margin: '0 auto' }} src="./img/permission.png" /> - 对不起,您暂时没有权限! + {getLabel(547515, labelData)} ); } return ( - hasRight && ( + hasRight && + Object.keys(labelData).length != 0 && ( (topbar = r)} @@ -449,6 +462,7 @@ export default function companyPage() { }} type="company" url="/api/bs/hrmorganization/orgchart/getCondition?fclass=0&type=company&id=0" + labelData={labelData} /> handleTopLayoutClick(progressBtn)} @@ -485,11 +499,12 @@ export default function companyPage() { nodeContent={nodeContentRender} /> - (drawerCom = r)} /> + (drawerCom = r)} labelData={labelData} /> (operateCom = r)} addFolderNode={addFolderNode} deleteNode={deleteNode} + labelData={labelData} /> ) diff --git a/src/pages/dragTree.jsx b/src/pages/dragTree.jsx index ba718fb..af36d02 100644 --- a/src/pages/dragTree.jsx +++ b/src/pages/dragTree.jsx @@ -5,6 +5,7 @@ import qs from 'qs'; import MergeDialog from '../components/dialog/mergeDialog'; import CopyDialog from '../components/dialog/copyDialog'; import inset from '../../public/img/back/inset.png'; +import { getLabel } from '../util/i18n.js'; import { HomeOutlined, @@ -21,7 +22,7 @@ const DragTree = () => { const [expandedKeys, setExpandedKeys] = useState([undefined]); const childRef = useRef(null); const copyChildRef = useRef(null); - const [tip, setTip] = useState('正在加载,请稍候...'); + const [tip, setTip] = useState(''); const [loading, setLoading] = useState(false); const [showCanceled, setShowCanceled] = useState(0); const [drawerOpen, setDrawerOpen] = useState(false); @@ -31,8 +32,13 @@ const DragTree = () => { const [mergeId, setMergeId] = useState(null); const [copyopen, setCopyOpen] = useState(false); const [copyId, setCopyId] = useState(null); + const [labelData, setLabelData] = useState({}); useEffect(() => { + d3.json('/api/bs/hrmorganization/orgchart/i18n').then((res) => { + setLabelData(res.data); + setTip(`${getLabel(547473, res.data)}`); + }); getMoveTree(0); }, [true]); @@ -72,19 +78,24 @@ const DragTree = () => { info.dropPosition - Number(dropPos[dropPos.length - 1]); if (dropPosition == -1) { - return message.error('不支持该操作!!!', 2); + return message.error(`${getLabel(547475, labelData)}`, 2); } - let pos = dropPosition == 0 ? '内部' : '下方'; + let pos = + dropPosition == 0 + ? `${getLabel(547476, labelData)}` + : `${getLabel(547477, labelData)}`; - let title = `确定将【${info.dragNode.title}】移到 【${info.node.title}】${pos}`; + let title = `${getLabel(547478, labelData)}【${ + info.dragNode.title + } ${getLabel(547479, labelData)} 【${info.node.title}】${pos}`; Modal.confirm({ - title: '转移操作', + title: `${getLabel(547480, labelData)}`, content: title, - okText: '确认', - cancelText: '取消', + okText: `${getLabel(547319, labelData)}`, + cancelText: `${getLabel(547318, labelData)}`, onOk() { setLoading(true); - setTip('正在转移,请稍候...'); + setTip(`${getLabel(547481, labelData)}`); fetch('/api/bs/hrmorganization/dept/dragDepartment', { method: 'POST', @@ -142,14 +153,14 @@ const DragTree = () => { } } setGData(data); - message.success('转移成功', 2); + message.success(`${getLabel(547482, labelData)}`, 2); } else { message.warning(res.msg, 2); } setLoading(false); }) .catch((error) => { - message.error('接口异常,请联系管理员'); + message.error(`${getLabel(547483, labelData)}`); }); }, onCancel() {}, @@ -178,14 +189,14 @@ const DragTree = () => { arr.splice(index, 1); }); setGData(data); - message.success('删除成功', 2); + message.success(`${getLabel(547484, labelData)}`, 2); } else { message.warning(res.data.message, 2); } } }) .catch((error) => { - message.error('接口异常,请联系管理员'); + message.error(`${getLabel(547483, labelData)}`); }); }; @@ -211,7 +222,7 @@ const DragTree = () => { if (res.code == 200) { const data = [...gData]; if (nodeData.canceled != '0') { - message.success('恢复成功', 2); + message.success(`${getLabel(547485, labelData)}`, 2); loop(data, nodeData.key, (item, index, arr) => { arr[index].canceled = '0'; }); @@ -219,7 +230,7 @@ const DragTree = () => { loop(data, nodeData.key, (item, index, arr) => { arr.splice(index, 1); }); - message.success('封存成功', 2); + message.success(`${getLabel(547486, labelData)}`, 2); } setGData(data); } else { @@ -227,7 +238,7 @@ const DragTree = () => { } }) .catch((error) => { - message.error('接口异常,请联系管理员'); + message.error(`${getLabel(547483, labelData)}`); }); }; @@ -260,14 +271,14 @@ const DragTree = () => { .then((res) => { if (res.code == 200) { getMoveTree(0, values.department); - message.success('合并成功', 2); + message.success(`${getLabel(547487, labelData)}`, 2); } else { message.warning(res.msg, 2); } setOpen(false); }) .catch((error) => { - message.error('接口异常,请联系管理员'); + message.error(`${getLabel(547483, labelData)}`); }); }; @@ -301,13 +312,13 @@ const DragTree = () => { if (res.code == 200) { setCopyOpen(false); getMoveTree(0, values.company); - message.success('复制成功', 2); + message.success(`${getLabel(547488, labelData)}`, 2); } else { message.warning(res.msg, 2); } }) .catch((error) => { - message.error('接口异常,请联系管理员'); + message.error(`${getLabel(547483, labelData)}`); }); }; @@ -333,7 +344,7 @@ const DragTree = () => { {nodeData.title} {nodeData.canceled == '1' ? ( - (已封存) + ({getLabel(547489, labelData)}) ) : ( '' @@ -352,24 +363,28 @@ const DragTree = () => { ); }} > - 查看 + {getLabel(547490, labelData)} onDelete(nodeData)} - okText="确认" - cancelText="取消" + okText={getLabel(547319, labelData)} + cancelText={getLabel(547318, labelData)} > - 删除 + + {getLabel(547492, labelData)} + onCancel(nodeData)} - okText="确认" - cancelText="取消" + okText={getLabel(547319, labelData)} + cancelText={getLabel(547318, labelData)} > - {nodeData.canceled == '0' ? '封存' : '恢复'} + {nodeData.canceled == '0' + ? `${getLabel(547494, labelData)}` + : `${getLabel(547495, labelData)}`} { className="drag-button" onClick={() => onMerge(nodeData)} > - 合并 + {getLabel(547194, labelData)} onCopy(nodeData)} > - 复制 + {getLabel(547196, labelData)} > @@ -398,82 +413,84 @@ const DragTree = () => { }; return ( - - - - - - 组织快速调整 - - - { - const value = showCanceled == 0 ? 1 : 0; - setTip('正在加载,请稍候...'); - setShowCanceled(value); - getMoveTree(value); - }} - /> - - - setDrawerOpen(false)} - open={drawerOpen} - > - - + Object.keys(labelData).length != 0 && ( + + + + + + {getLabel(547282, labelData)} + + + { + const value = showCanceled == 0 ? 1 : 0; + setTip(`${getLabel(547473, labelData)}`); + setShowCanceled(value); + getMoveTree(value); + }} + /> + + + setDrawerOpen(false)} + open={drawerOpen} + > + + - - - - 小提示 - - - 1.鼠标拖拽Tree节点到任一分部部门下可快速完成组织转移; - 2.点击【查看】侧滑打开组织详细信息,可快速编辑; - - 3.鼠标悬停树节点 一键开启【删除】【封存】【合并】【复制】等功能; + + + + {getLabel(547283, labelData)} + + + 1.{getLabel(547284, labelData)} + 2.{getLabel(547285, labelData)} + 3.{getLabel(547286, labelData)} + 4.{getLabel(547287, labelData)} - 4.顶部小图标点击可显示已封存的组织架构。 - - + - { - setOpen(false); - }} - /> - { - setCopyOpen(false); - }} - /> - + { + setOpen(false); + }} + labelData={labelData} + /> + { + setCopyOpen(false); + }} + labelData={labelData} + /> + + ) ); }; export default DragTree; diff --git a/src/pages/statisticsTable.jsx b/src/pages/statisticsTable.jsx index 5c90376..e5f8cd7 100644 --- a/src/pages/statisticsTable.jsx +++ b/src/pages/statisticsTable.jsx @@ -10,73 +10,82 @@ import React, { useEffect, useState, useRef } from 'react'; import * as d3 from 'd3'; import qs from 'qs'; import { Table } from 'antd'; +import { getLabel } from '../util/i18n.js'; const StatisticsTable = () => { const [loading, setLoading] = useState(true); const [dataSource, setDataSource] = useState([]); const [columns, setColumns] = useState([]); + const [labelData, setLabelData] = useState({}); useEffect(() => { - const columns = [ - { - title: '序号', - dataIndex: 'key', - key: 'key', - }, - { - title: '名称', - dataIndex: 'dataIdName', - key: 'dataIdName', - }, - { - title: '上级', - dataIndex: 'superIdName', - key: 'superIdName', - }, - { - title: '类型', - dataIndex: 'type', - key: 'type', - render(value, row, index) { - if (value == 1) { - return '分部'; - } else { - return '部门'; - } + d3.json('/api/bs/hrmorganization/orgchart/i18n').then((res) => { + setLabelData(res.data); + const columns = [ + { + title: `${getLabel(547327, res.data)}`, + dataIndex: 'key', + key: 'key', }, - }, - { - title: '在编数', - dataIndex: 'onJobNum', - key: 'onJobNum', - }, - { - title: '编制数', - dataIndex: 'staffNum', - key: 'staffNum', - }, - { - title: '创建人', - dataIndex: 'creator', - key: 'creator', - }, - { - title: '创建时间', - dataIndex: 'createTime', - key: 'createTime', - }, - { - title: '更新时间', - dataIndex: 'updateTime', - key: 'updateTime', - }, - ]; - setColumns(columns); + { + title: `${getLabel(547517, res.data)}`, + dataIndex: 'dataIdName', + key: 'dataIdName', + }, + { + title: `${getLabel(547518, res.data)}`, + dataIndex: 'superIdName', + key: 'superIdName', + }, + { + title: `${getLabel(547519, res.data)}`, + dataIndex: 'type', + key: 'type', + render(value, row, index) { + if (value == 1) { + return `${getLabel(547332, res.data)}`; + } else { + return `${getLabel(547331, res.data)}`; + } + }, + }, + { + title: `${getLabel(547346, res.data)}`, + dataIndex: 'onJobNum', + key: 'onJobNum', + }, + { + title: `${getLabel(547345, res.data)}`, + dataIndex: 'staffNum', + key: 'staffNum', + }, + { + title: `${getLabel(547520, res.data)}`, + dataIndex: 'creator', + key: 'creator', + }, + { + title: `${getLabel(547521, res.data)}`, + dataIndex: 'createTime', + key: 'createTime', + }, + { + title: `${getLabel(547522, res.data)}`, + dataIndex: 'updateTime', + key: 'updateTime', + }, + ]; + setColumns(columns); + selectData(); + }); + }, []); + + const selectData = () => { d3.json(`/api/bs/hrmorganization/orgchart/selectStatistics`).then((res) => { setDataSource(res.data.result); setLoading(false); }); - }, [true]); + }; return ( <> @@ -86,12 +95,11 @@ const StatisticsTable = () => { columns={columns} loading={loading} pagination={{ - locale: { - items_per_page: '条/页', - jump_to: '跳至', - page: '页', - }, - showTotal: (total) => `共 ${dataSource.length} 条`, + showTotal: (total) => + `${getLabel(547523, labelData)} ${dataSource.length} ${getLabel( + 547524, + labelData, + )}`, }} /> ; diff --git a/src/pages/user.jsx b/src/pages/user.jsx index a92b7ea..f1a220f 100644 --- a/src/pages/user.jsx +++ b/src/pages/user.jsx @@ -99,7 +99,7 @@ export default function userPage() { // 获取数据 useEffect(() => { document.cookie = - 'ecology_JSessionid=aaahTt6JHXEIM-HoSW-Xy; JSESSIONID=aaahTt6JHXEIM-HoSW-Xy; Systemlanguid=7; languageidweaver=7; loginuuids=2773; __randcode__=a8294fa0-56d7-430f-a35b-139d73474682; loginidweaver=zhangxy16'; + 'ecology_JSessionid=aaayUiSEKCD-Z-Y9A1i-y; JSESSIONID=aaayUiSEKCD-Z-Y9A1i-y; loginuuids=1; Systemlanguid=7; loginidweaver=sysadmin; languageidweaver=8; __randcode__=4ba2aadd-0de6-4ebc-b9d4-584ba46c0969'; d3.json( '/api/bs/hrmorganization/orgchart/userData?fclass=0&fisvitual=0&root=0&level=3&id=0', ).then((data) => { diff --git a/src/util/i18n.js b/src/util/i18n.js new file mode 100644 index 0000000..d9b1ade --- /dev/null +++ b/src/util/i18n.js @@ -0,0 +1,15 @@ +let languageIdWeaver = document.cookie + .split('; ') + .find((row) => row.startsWith('languageidweaver=')) + ?.split('=')[1]; +if (languageIdWeaver == undefined) { + languageIdWeaver = 7; +} + +export const getLabel = (key, labelData) => { + if (labelData[key]) { + return labelData[key].labelName; + } else { + return languageIdWeaver == 7 ? '标签不存在' : 'Label does not exist'; + } +}; From b2757dfa11edd246233e62d84c0c9240edc51f4b Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Mon, 17 Jun 2024 09:10:34 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/drawer/index.jsx | 2 +- src/pages/user.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/drawer/index.jsx b/src/components/drawer/index.jsx index def832f..2ad6e07 100644 --- a/src/components/drawer/index.jsx +++ b/src/components/drawer/index.jsx @@ -258,7 +258,7 @@ export default class DrawerComponents extends React.Component { ${d.data.fname} - ${getLabel(547322, labelData)}:${d.data.fleader} + ${getLabel(547190, labelData)}:${d.data.fleader} diff --git a/src/pages/user.jsx b/src/pages/user.jsx index f1a220f..e94c554 100644 --- a/src/pages/user.jsx +++ b/src/pages/user.jsx @@ -99,7 +99,7 @@ export default function userPage() { // 获取数据 useEffect(() => { document.cookie = - 'ecology_JSessionid=aaayUiSEKCD-Z-Y9A1i-y; JSESSIONID=aaayUiSEKCD-Z-Y9A1i-y; loginuuids=1; Systemlanguid=7; loginidweaver=sysadmin; languageidweaver=8; __randcode__=4ba2aadd-0de6-4ebc-b9d4-584ba46c0969'; + 'ecology_JSessionid=aaaZqe3BtezwSd-qOVlaz; JSESSIONID=aaaZqe3BtezwSd-qOVlaz; Systemlanguid=8; languageidweaver=8; loginidweaver=sysadmin; loginuuids=1; __randcode__=b79816fa-7088-4433-a17f-162b62453f2f'; d3.json( '/api/bs/hrmorganization/orgchart/userData?fclass=0&fisvitual=0&root=0&level=3&id=0', ).then((data) => { From a99d911db12eaec906d818912a945d2137b5c515 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Mon, 17 Jun 2024 14:26:43 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/drawer/index.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/drawer/index.jsx b/src/components/drawer/index.jsx index 2ad6e07..d84c968 100644 --- a/src/components/drawer/index.jsx +++ b/src/components/drawer/index.jsx @@ -430,7 +430,6 @@ export default class DrawerComponents extends React.Component { Date: Wed, 19 Jun 2024 09:58:04 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/drawer/index.jsx | 2 +- src/pages/company.jsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/drawer/index.jsx b/src/components/drawer/index.jsx index d84c968..0c29197 100644 --- a/src/components/drawer/index.jsx +++ b/src/components/drawer/index.jsx @@ -257,7 +257,7 @@ export default class DrawerComponents extends React.Component { ${d.data.fname} - + ${getLabel(547190, labelData)}:${d.data.fleader} diff --git a/src/pages/company.jsx b/src/pages/company.jsx index 6b0703c..caa8dc2 100644 --- a/src/pages/company.jsx +++ b/src/pages/company.jsx @@ -164,8 +164,8 @@ export default function companyPage() { let fclass = topbar.state.requestData.fclass; let statisticsStyle = fclass == 0 ? 'block' : 'none'; if (d.data.ftype == 0) { - return ` - + return ` + - + - ${ - d.data.fname - } + + ${d.data.fname} + (${d.data.accountType}) + - + ${getLabel(547324, labelData)}: ${ d.data.companyWorkYear } ${getLabel(547526, labelData)} + `; @@ -322,22 +329,76 @@ export default class DrawerComponents extends React.Component { }; showDrawer = (params) => { + const { defaultStatusValue, defaultTypeValue } = this.state; + params = { + ...params, + typeValue: defaultTypeValue.join(','), + statusValue: defaultStatusValue.join(','), + }; this.getDeatilDatas(params, 'chart', '0'); this.setState({ open: true, params: params }); }; onClose = () => { - this.setState({ open: false, detailType: 'chart', showJob: false }); + this.setState({ + open: false, + detailType: 'chart', + showJob: false, + defaultStatusValue: [0, 1, 2, 3], + defaultTypeValue: ['isBelongTo'], + disabled: false, + }); }; changeDetail = () => { - const { detailType, params } = this.state; + const { detailType, params, defaultTypeValue, defaultStatusValue } = + this.state; + const newParam = { + ...params, + typeValue: defaultTypeValue.join(','), + statusValue: defaultStatusValue.join(','), + }; let type = detailType == 'chart' ? 'table' : 'chart'; const showJob = this.state.showJob ? '1' : '0'; this.setState({ detailType: type, }); - this.getDeatilDatas(params, type, showJob); + this.getDeatilDatas(newParam, type, showJob); + }; + + onStatusChange = (checkedValues) => { + if (checkedValues.length === 0) { + return message.error('至少选择一种人员性质', 2); + } + this.setState({ + defaultStatusValue: checkedValues, + }); + const { defaultTypeValue, params, detailType } = this.state; + const showJob = this.state.showJob ? '1' : '0'; + const nParam = { + ...params, + statusValue: checkedValues.join(','), + typeValue: defaultTypeValue.join(','), + }; + this.getDeatilDatas(nParam, detailType, showJob); + }; + + onTypeChange = (checkedValues) => { + if (this.state.showJob) { + return message.error('已勾选岗位模式显示', 2); + } + this.setState({ + defaultTypeValue: checkedValues, + disabled: checkedValues.includes('isManager') ? true : false, + }); + const { defaultStatusValue, params, detailType } = this.state; + const showJob = this.state.showJob ? '1' : '0'; + const nParam = { + ...params, + statusValue: defaultStatusValue.join(','), + typeValue: checkedValues.join(','), + }; + this.getDeatilDatas(nParam, detailType, showJob); }; render() { @@ -350,11 +411,30 @@ export default class DrawerComponents extends React.Component { columns, spinning, showJob, + defaultStatusValue, + defaultTypeValue, + disabled, } = this.state; let arr = []; const { labelData } = this.props; + const optionsType = [ + { label: '显示人员上下级', value: 'isManager' }, + { label: '显示次账号', value: 'isBelongTo' }, + ]; + + const optionsStatus = [ + { label: '试用', value: 0 }, + { label: '正式', value: 1 }, + { label: '临时', value: 2 }, + { label: '试用延期', value: 3 }, + { label: '解聘', value: 4 }, + { label: '离职', value: 5 }, + { label: '退休', value: 6 }, + { label: '无效', value: 7 }, + ]; + if (detailType == 'chart') { arr.push({ label: `${getLabel(547315, labelData)}`, key: '1' }); //arr.push({ label: '导出PDF', key: '2' }); @@ -367,7 +447,7 @@ export default class DrawerComponents extends React.Component { return ( { this.setState({ showJob: e.target.checked, }); - + const newParam = { + ...params, + statusValue: defaultStatusValue.join(','), + typeValue: defaultTypeValue.join(','), + }; this.getDeatilDatas( - params, + newParam, detailType, e.target.checked ? '1' : '0', ); @@ -403,44 +488,68 @@ export default class DrawerComponents extends React.Component { } > - {detailType == 'chart' ? ( - - - {data.length > 0 && ( - (orgChart = chart)} - setClick={(click) => (addNodeChildFunc = click)} - onNodeClick={this.onNodeClick} - onButtonClick={this.onButtonClick} - data={data} - buttonContent={this.buttonContentRender} - nodeWidth={this.nodeWidthRender} - nodeHeight={this.nodeHeightRender} - nodeContent={this.nodeContentRender} + <> + {detailType == 'chart' && ( + + 显示模式: + + + + + )} + + 人员性质: + + - )} - - ) : ( - - - `${getLabel(547523, labelData)} ${ - dataSource.length - } ${getLabel(547524, labelData)}`, - }} - /> - - )} + + + {detailType == 'chart' ? ( + + + {data.length > 0 && ( + (orgChart = chart)} + setClick={(click) => (addNodeChildFunc = click)} + onNodeClick={this.onNodeClick} + onButtonClick={this.onButtonClick} + data={data} + buttonContent={this.buttonContentRender} + nodeWidth={this.nodeWidthRender} + nodeHeight={this.nodeHeightRender} + nodeContent={this.nodeContentRender} + /> + )} + + ) : ( + + + `${getLabel(547523, labelData)} ${ + dataSource.length + } ${getLabel(547524, labelData)}`, + }} + /> + + )} + > ); } diff --git a/src/pages/company.jsx b/src/pages/company.jsx index caa8dc2..100a459 100644 --- a/src/pages/company.jsx +++ b/src/pages/company.jsx @@ -185,10 +185,11 @@ export default function companyPage() { - ${d.data.fname} + + ${d.data.fname} + ${d.data.fname} + + ${d.data.staffNum} / ${d.data.onJobNum} @@ -206,8 +207,11 @@ export default function companyPage() { - ${d.data.fname} + + ${d.data.fname} + ${d.data.fname} + + ${d.data.staffNum} / ${d.data.onJobNum} diff --git a/src/pages/index.less b/src/pages/index.less index bd93022..618795f 100644 --- a/src/pages/index.less +++ b/src/pages/index.less @@ -114,6 +114,44 @@ } .ant-drawer-body { - padding: 0px; + padding: 0; overflow: hidden; } + +.tooltip { + position: relative; + display: inline-block; + cursor: pointer; + width: 110px; + margin: 0 auto; + line-height: 18px; + word-break: break-all; +} + +.tooltip .tooltitle { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.tooltip .tooltiptext { + visibility: hidden; + width: 144px; + background-color: #555; + color: #fff; + text-align: center; + border-radius: 6px; + padding: 5px 0; + position: absolute; + z-index: 1; + bottom: 125%; + left: 39%; + margin-left: -60px; + opacity: 0; + transition: opacity 0.3s; +} + +.tooltip:hover .tooltiptext { + visibility: visible; + opacity: 1; +} From 483c34fc05cec7cc9e90d84c4938e4c3061f7eb1 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Fri, 21 Jun 2024 14:27:40 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/drawer/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/drawer/index.jsx b/src/components/drawer/index.jsx index da2b727..1ba0031 100644 --- a/src/components/drawer/index.jsx +++ b/src/components/drawer/index.jsx @@ -439,7 +439,7 @@ export default class DrawerComponents extends React.Component { arr.push({ label: `${getLabel(547315, labelData)}`, key: '1' }); //arr.push({ label: '导出PDF', key: '2' }); } else { - arr.push({ label: '导出表格', key: '3' }); + arr.push({ label: `${getLabel(547448, labelData)}`, key: '3' }); } const menu = ; From d2e0da72978af139ae7c65c1e81e404ba4683f2b Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Fri, 21 Jun 2024 17:02:21 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80=E6=96=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/drawer/index.jsx | 30 +++++++++++++++--------------- src/pages/user.jsx | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/components/drawer/index.jsx b/src/components/drawer/index.jsx index 1ba0031..fe287ce 100644 --- a/src/components/drawer/index.jsx +++ b/src/components/drawer/index.jsx @@ -311,7 +311,7 @@ export default class DrawerComponents extends React.Component { - + ${d.data.fname} (${d.data.accountType}) @@ -368,7 +368,7 @@ export default class DrawerComponents extends React.Component { onStatusChange = (checkedValues) => { if (checkedValues.length === 0) { - return message.error('至少选择一种人员性质', 2); + return message.error(`${getLabel(547728, labelData)}`, 2); } this.setState({ defaultStatusValue: checkedValues, @@ -385,7 +385,7 @@ export default class DrawerComponents extends React.Component { onTypeChange = (checkedValues) => { if (this.state.showJob) { - return message.error('已勾选岗位模式显示', 2); + return message.error(`${getLabel(547729, labelData)}`, 2); } this.setState({ defaultTypeValue: checkedValues, @@ -420,19 +420,19 @@ export default class DrawerComponents extends React.Component { const { labelData } = this.props; const optionsType = [ - { label: '显示人员上下级', value: 'isManager' }, - { label: '显示次账号', value: 'isBelongTo' }, + { label: `${getLabel(547715, labelData)}`, value: 'isManager' }, + { label: `${getLabel(547716, labelData)}`, value: 'isBelongTo' }, ]; const optionsStatus = [ - { label: '试用', value: 0 }, - { label: '正式', value: 1 }, - { label: '临时', value: 2 }, - { label: '试用延期', value: 3 }, - { label: '解聘', value: 4 }, - { label: '离职', value: 5 }, - { label: '退休', value: 6 }, - { label: '无效', value: 7 }, + { label: `${getLabel(547718, labelData)}`, value: 0 }, + { label: `${getLabel(547719, labelData)}`, value: 1 }, + { label: `${getLabel(547720, labelData)}`, value: 2 }, + { label: `${getLabel(547721, labelData)}`, value: 3 }, + { label: `${getLabel(547722, labelData)}`, value: 4 }, + { label: `${getLabel(547723, labelData)}`, value: 5 }, + { label: `${getLabel(547724, labelData)}`, value: 6 }, + { label: `${getLabel(547725, labelData)}`, value: 7 }, ]; if (detailType == 'chart') { @@ -491,7 +491,7 @@ export default class DrawerComponents extends React.Component { <> {detailType == 'chart' && ( - 显示模式: + {getLabel(547714, labelData)}: )} - 人员性质: + {getLabel(547717, labelData)}: { document.cookie = - 'ecology_JSessionid=aaaZqe3BtezwSd-qOVlaz; JSESSIONID=aaaZqe3BtezwSd-qOVlaz; Systemlanguid=8; languageidweaver=8; loginidweaver=sysadmin; loginuuids=1; __randcode__=b79816fa-7088-4433-a17f-162b62453f2f'; + 'ecology_JSessionid=aaaIt6Y2NuzAQ98Ci0Jaz; Systemlanguid=7; JSESSIONID=aaaIt6Y2NuzAQ98Ci0Jaz; loginidweaver=sysadmin; loginuuids=1; languageidweaver=8; __randcode__=486bc6ba-9c04-47fc-a977-f7c55bab42e9'; d3.json( '/api/bs/hrmorganization/orgchart/userData?fclass=0&fisvitual=0&root=0&level=3&id=0', ).then((data) => { From 6bf43c81507a7fe6f5b857b3aafbd6bfd6e92cc0 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Wed, 3 Jul 2024 16:07:24 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E4=BC=A0=E5=8F=82=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist.zip | Bin 0 -> 2105104 bytes src/pages/company.jsx | 5 +++-- src/pages/user.jsx | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 dist.zip diff --git a/dist.zip b/dist.zip new file mode 100644 index 0000000000000000000000000000000000000000..656f68c5c6f50a56945f3882dd7fc14895d24213 GIT binary patch literal 2105104 zcmZs?18^o$yDc1Jf;XAinAo-^=ESxqwvCA~v2EMN8{0PD*iP z^{l6Q_3GZecdxA=0||u=_Mauye_!LjD*vy51|tSDv2b!`R8>I&gC&OfV@CaN{m<6L z9RUm+>H!=K?7u=4{tE&Q4DSC2ar^Hy;J+a(Y)wqv8Gbw4SpN^$e}MiMFjK`kwE-r? zjW>+)V-Do|S#{zmA;XY>KeKfhMqw8M+EORm`xF;HdQDCXI}#3zUY9057{hSAQjviVFrh(!!Ku>Qm>Kdt12%SHV>|Tf zVH4;f9F}@r336?8b=un7@s+75|AkwG6Vedo1XYO49B+pG#vvc!UbR}uVNBy7NyK#j zCIg(S%F$a~J2%ztNtGx;D^ZMzfU&!YAcr-8<~4z#`(MZzq+*ieDIz?$g^Ms)U6HNr~a>EEI~vlFevA$Vtb}kSY$|+nw|{ z*xNhb<}k^eDwhX_qlsS0FzBzlxn0Ptcj$rpqw^$x%LN1bGotjJLb%RbM3@m70sie; zt9W2?cdKDFeIvzS3hqi5!uq%H=K0W7jN?YsXR*)!Ey|1JZg`lSH&l1xKZ$gKY=q6{h=eQ>PN0kVQNN zt#teH`0)bbc$uZ(fG4l^D&qKY^VA6;U&`ppk3PPDC!hN14A&UYU$f>*ddm9b1*-DQ}bSGG8~fTJ;4d`#<{*hBHQ+kl1jnM8TZdOG;}+m; zZ+dlnnmbE={PxbZftSrQJtZf(!I9V(Rhq9lVspUJhqv=iGE-lE`ZBmOb6|be=vNb^^$~!i_TL6lY+hKGa-I$^L%VN&j~ACrSGt^$96yB$e08iO z0TstaLtrwTBOWR*A5%OQw^cq$XbO+z7T2%yyD0VADM9zn?9>nA@Al4b_5y+sAKQH8 zW6-RnDQ}jnZ_oPj86ssvK6WenNYhwn1$l*sd8Nq>DQ};jwd<8cl|w7U#{Ady=33TA z!pwp?4VrFWgO+?YvFnq*)a`caYL!HSNke>&>>p)C@4EyIjsoN=kV{7cuaDg;DV<;? zuGS_vnXzeXjF}wjoBrdEO86N!-0j^s^(3G*x{qxO>a*+3RITM@Yprwj+W zn_IpP{h!hm-kud>SH2ZL9a}rjr!Ok=&<`1hw-Jfz16vk4TTFz<##9H@k>P=i@t1dT z{>yQ#T=e)^5?cLfnmnUz)+e=EZsX5^*&N6rYvkX9x^}5eYS!`8$BYe=o#%d?IZrJe z@p6L|RkK}|=6juepJhg zAsFs!^l72Gb>@|jW`_t?6imeT=o)+k9E_2N1M^c2n}?v?la(1u?i}@^OuBb)b*tLz-g!mg!NK(WKw3$Y-rb zIzO^IWxbvT#@XRx+4ue){MOG{BtRuvxlsqB-64Rn!Du{^pv8L4h(V}y=RE?T^&*OV zfM8FWQ~L{DO(Ak3^jTLV!DY3xv#O#eb?$+49g+x1n>yzEKsaPN^(=PFQo<120qbuT z_6&Z{>`D)9Cq=vlY%(TmB|N8njFRL2Lf??AJk^6H+B@j2+P1b5d_yF5vpt15u zHf|ULZ^C7VdYI#_ZxJpbmxgHUK}YPMUv3j8?xWnDP@~7w_ZJ%Q+>LAuJlXT<#lgdX znII=V{ltG#HUkz_+Ms(h;=4u*Cl8v>l%&I@a=EIw2#4mn3qT|-y}FLQmk>Aa&SpFe>^H8jodM_ z!V)hrVnyD@hpWlU>3ADsc(8N1lFF!~c7eb+JlE6cua#?KyCI zEKm)-=`!gF`UYV`fZ!Nf+>n~&616|wVavwBMRYS$!7vs`!C}z$m`bEsy;5uR!_A|o zGC7p7Jl2Xs4UYnzaTMC1aHThGJABol!OwM^?>vIhYsswa;NyC7Rx7;>tLvi#c16ns zzJ(~*q7-x+8c?K~(GOeX!lFP>{>^fCIFOz;LWO)#;Yz!w&0C9qd@oFuVC9Ax=zL#s z7^5j^*LZcK1gvh+VNAB-z!pWDAekOFbAEV$oE?`CvtshI%m?1x=yCQ**a6#%k#Pv4 zu`(IW6s>bNZ6hg{g2as{bTpZ~aMzlMFRy|qlw1#-d~Kw0GOHq0M<=g2D<`g&m=HQj z9?~sVlcryiia&a?k;!g4hNxf;DThw=@F-Tj@QzYeu8odLEbi)t_XdFT?Z~`V3B)|G zW!HDHhbh3A@Y*Zt5ByNUMVoGX4p7Q0f7_ zP8mJw^$3fqjM^8xt%{!k@UuReMN`J$OR6;5dmhQnHVS+?`!c1W&*$ZbHgUHgk>1mE z&G5(Ftg4^0xEqz+Nxh#y=KZuCc2{J$ltuST=c6X3yu3wRet_~?Aqm#=Op6RX>wQ#n zhM)1_UX?NefFGe{VNN_qcPlF^a5K}Q%v1q)|nL;X2Q*Ov~&9$40Qn z{BVz6_5VdE{U@U6zan_+&<<~O1qF(#mgqC*G~{M?O1j%{9fJTCtgmQ{*miXx-+Dt) zqnp^)!nUratal0J>$Q0k7q_A$8a&15eD}gbdb*C&N*Z_{%2(m`rA~Nhbzo=#knCM6 zYxbU05{CKMyo&W;_>1#Y{WJR80Iidg8V?@JV(r8t9RlDt$l3)&-Nd40^?3Yk${D5V z_~&{U_Hz!`MDC@*?vlpKcw4W2>lPR@e7=hQs^1y z>SAR~#b4aH5nuKeig)oyL;DH1x74h%*}t!qdo#1h65f~$tY$4J)S-6;3Q!d3i6S@SXEcW+b@9u65)rI^;)6)$>*wSB83LEADD;CNzetvAy7iXWHJlFs=PY z^so4PVs|xNGmm*7*Q5wC(ve6Z#xwLp!9tx7u@=Jl89}Ol_5>wNuS@N#tHExd#1v=S z7(pCBT%6mPoBOuR*YRRiyy?H%`#S=KC@mTC2#h*jc%EC@fu`Rx0L`CTrNCt$UP)eC z(3XSN>N^JD*MT_n1=@?e2+EV&xUuC+roKbYLr$e^qT9kPch6ko9Y4vUm;cq7Nx`tn zxvTmu8lLU?ZChW^fKz^`iB1&7x!)xjqnyBH3ZVP_eV3X(bzZOt!zwS=yqlfYBS50@ z@Wb&1#coB~dPlJ~Et!MxxoMbdA(NZ@rd-2E71^T2BH4jMc_K zw1s(te1eIvNK5{%K&x@G~7H$Ip~ zZlp5M^%P@bfw<^Z8ggLPkk+~DNv$r>oV1Fxm@VfdvSi3`KWR*5TY2M+y7g=ZH|T1X z4HF(knBVg4Xv(faa>t~Xsn#m%h973Xw%TBix-zf%oj;d>&SN*7NW7?G(FoMUW;!uf zdKp=cJ&c5Z5m559b@mvMqq+j*H}3MTM#I~@u733a|Fz4$u^VPyUXyD!y}N?QgAa(- z#L*!~K$hpUVl9Lq_OndQG6tkwvMwvOT-+d-6r}A-;?d}k_2aFRcvN;qOjN9Bjb|6% z{YdDpZi5G|d(U3ybyihD+?)q16%NXEJT1o1<@ZA*F9EZ_`|7NAktLfL;fV73qIJPZ zvvUcT=#Wl)Q=V)&@jtrF8yC+_7QaS;Ml3mW=kYm_1OU2^dNF1qx%2w*2cv>-k5%fE zv+%J|on=6(it%T+MTd19o1&^^=G+sHf#NjBJX<>$=PAv1!G+*wLv&uS)orF7Dkm zjOXC-8magn7Gtt!Q*7E+jN4Qe$fkC`Y=YMbo?Xg1UIj9>A2XiXTedOJ6mW{1WEw=y z;`^=2G^%HSjufH*-GB#|sh>-Q1(%h0@`J7TuS&>fiy_=U@<>8mcGPe>K>KEQaUVcC zGpLxm=flI!BOE_|Zap3OL9oBew#Bm zI@i3*ZQ$w0Zq~>GR}mK%AJudM$j?{$(zt+$`0FpeMeZ0t^91k-*v0<`K}H4 z;sEv1{#YY{c*m5+aO>jFbm;h{8!@s4J8EdwVT-zgDih$>5t*|;H(A^ZGHVZS$XlX* z)(B*mAo&=*810NHuo;aQOm~4x>w!!+KcT;8r~K3^12?9A4IIYMv1_slZC{jZwtrt~L7m=y62uMm3!Z7(GGgA+Q-VO^#TurQ@gH?9h z`Dh^ev+RKs_YkDj_PVG$KOG3ne90Zlm7`vV)`oWI`WSiH?aq)IjW>I(=Gr;~kFJYB z9|6%6n4*NX(2Q8&t>H`Qp6t%D8MB?jMR zuSh*yb2Lfw{Jxt7X~WKD;^9HB$XNA&ol=1a>NB4U6nS3vctsx;I!2B}yuKav51D5% z+76m%4;QKRmuv10;F$X(+2=t)H9UKcwncqRb@qCk=xv=dmeYxm($cmdULHAiwVSC> zp*Y-{%%4{G*lM}&D3Gl-oA!RVEw=XryBMdL#5XyyL0q&e51nS^`(RTBRAcNMf;BOP zngpt|T$l?4+G5@9=5Vfi>Pcx%HKjyQZ2mFmL8pf@*|!q#W|vF@W0Cq>Fs zJBQnfMtd1(RX)J|QQU!AQ)1oq=tYxD@T@JkRD#|AxxmH|)cS4&E4}R$<&LJsw{I>liu%+Jf9@!eI=SKiSi%bJzSv|k4rdWEgHOQ!QM&2MHoVdeS zYF}!kMNWS`5cxHa(N$w|BB&K>mVeplI^Vc)1p8|PGro1U06OAZ_+DFfzwqxD&>X;H zHrTPTqrY69IxUk~1vYQv74;em*WX6H)%n<-ngJZ^{3W;hjD9}R+YQm|Lto#K#%f|~ zS^V&k89Cw*!D*Y%PFH3A{*22{;`g>-ydIv4*pN|WNiev>T@t_AaPK4h^n6=)6t+7< z^zt??(FA@T?CteWZc{Xw`pKE`W$Q9t>VpD99zSnFOSaQptE>6uI0nq(LT?`})Vq%J zo*W;)PTY+esI|TC%v`@zKj7GZh!M%RMS{_==kq69b0LHr z_k6s)!<`oamo6q#a&~N)>Y0@-zD>47QVftR3L7VR>!p6Z`HjRDhx9elABEF(>5I zVB6$)y~#CYHaMsxIx%wF3}$#+5&$faxcS)RpJFqnAC~b3Q*mtoUxvQk7S0#gFTfe* z+p{N0>zW}-TfSPLVMAG} zd*;1e=vM>8W5&*v)=JKvCC9nMTJb8nHe*;M0bVg&n}ux*Gk}B}krcI*E&cox=oN9KfX&je|kUl zd>!_6f$XKDi@R?*#@T%NE?cn{o9K2NJ@l?^O7pzodU`kL`Euouw4c#D+)D+<~^DSet= zT`=|DSR|sK`W3K#o=fQPiDj71;_X~gXXf`M?dLj8ZW&?FjqW7B(4yWHN$Msw?0D(K zF*PYpPBz-2@tja{q|C9r37R-+cy(S@hg4C*+mEgsv`x5F+vF!pHraC?!f-1(iu(R~ zU)U5>sZugQaWtQhZ69QA@8&f|*&k9<*2QT-7gZZ88jkC*9quRq2kk2KQ8m{6guR~C z5ud~6tYY!KS{+=1NDBf$3dKdrpNp)HCGt7ka=f)Nc(%Y7#z=gFYh&m9M%M${i%f^s%juj%o6O@bjsfBRq#@*Mf z@7rxeo09*eHw>emqE1K1gdv5Ruc(ov!hopM&KW++Yrqpl?pINhtouZ`Xllro$94a7I z6{S33+&ty~;YELDGC#BrXS8kf?T;Rp68n0m0qtL zws@vzVcJSYEx<`C_$;glxnB5KPH55mI4Lepk1*50^UB1IO@*4^3G&?){mbb4r;`A7 z1w~bFXmqY&=Xj_gf>#$e9Iaa}33|d8Qa84T6v$6f9L>sSse8Q7VO?P9<)0oEUZtxy znqW@1vX?6(Q&(peES9A&J=^UM`=!doYgHVTlGWBF1f2n}%Jla5cYB5(K&R%6>F+A$ zNw3#P0woQBL7<<$5?)5xer6;x ztEr{lKnmXg1T$YqXic1Ul3I|T4e}DRkGo>JHr@2zzcW>l(frp9Kb}c8i2l&KqZ_Fr%h3?=!*~UJ9j9**I^{OSI3&!IX z&)=Z=#6RFHzzFqRtwwPXVsY{Vmgj3Pbi8#TvWt9!}7umEv$$j+j)W5`t|pz0+mXEdt9uO>=7UO$ej8 z_BJ*-G3+10uSpAQx*Vg#DWwIR4v?LuBk(KJ{8&4kFqLx|pFb#Hu|}HF61QRr7*_^w zFx$iJqfwQ$J0qdUiHE!ky@E|5Y0^2A=J1XGehK}lRVFjx{s245B1|x}+Q;?4yU{&J z@+BZ|g_Pqvn_vfFq695X7Fp2r6Qj=66fRxr6#QgRl(5^w^%$SIw-bCS_B&=bNV?E9 zPV7QER<@CRXBSXaXhxCo! z5Fw|#ciWY3SV7sB08!IJ1XG)02tyXmxxmH)aEI<#(-ujCLlQ|XKz=1P4Hjd%N$y%* zT_X6^iSVbV3eRPgWRpe@+pR$~Yi0NG(UyzK9po&V(cf)hVGbITf!Z|o>fR1}tfL150a1L@wc8})PTyNI=&?5j;xrOE87|zTVh)+WNU61 zTG7*6^Z<2Rc?u}K%P9wZ-dR>_fZx>E{s1e zL~79$gfqW8(w6)&Xj2HmM;e^Oq8F((0TYe?^-J)1@VLz*Xp*vWkUnW9I?339HQ!C9 z$Tk^(C|Y|l}GpFwo<@hA#q z^wukN_YcXZcPPp;WJw=gK|fyYOS5+`rtybf?3x4EjL<%LVYyI27i}htQam)CsG4!M z!m}73_EeX{!_RA#;pmFAi@{jXeBOJu_YDrsXTqoT;>P>h4@c^s1HtbMdGF`5FF^G7 zutj&fiJY0ItVAkHNdhFEp{_|(b@aE!1twEm(_fZfr+Kj{t7TBi3}$jtIN$@*yZw1@Ln6&4`*3+2@nrxvwCk|28AP;h84Ao)8Ox2|j) zJ`dT0n6_uSxXyixt6a&UT^wP7)eF{O0d%X$-^Lk)n>6XGDG&CVd>;EN>UsSy=B?~D zH($t0HQRG|-vT(OqT}if@ zz+o__3KuL5A`?~tkHc=Um%__*$d^JIfA6J~=e(%)8iHRQWLfi}oqDdETG15ug_ifK zyz_e;d4d=%H5)}l=laoh-)EtJ*me!JV`pLFjwyba@9!xRiRhKu+Le$yiH3V>YaU26r3sQ)(>{ z#di4Lz)!*$jr+9fbv@e1*Y2g*UiGL_!ijXCq2WA*%LBalgUu+EnKFe#@M`8# z#*#bUEOg8dZ9^!Gmg)jae|TJxLPZWg!_L){LK817i2u9Q-|~_rlXg6C3&~)$SIeJt zQNKnOHt~=japh5+@<1wz@+L zuJR>sbaaTBF}-+5i`2yvPp2kkl%#e)zg0r zAz1cBFC0ySkqJvuqZ z1GA5sIiH?sa zrZ{Lhi~vE0c{;0<*#~&wrw29DJ5TQz62a~B{ZuVDjnI2^DPr45e=AddO&E8H$nT^T zodmfU{yYm$RVb~2f4>e{&E#BtrEk92Z8qo0Ur{|b0Rc=n_e&+v8|v#YrTvsS_LDZ- z?>=NmWG`dh$!gI~MDnQAqgbgPX@P30iu6N%mT~4?kr=O4$VLEw>;g$WHS|H=x8h>W!sSL~Ye5SG}MSV?zfH27Et@ncDZqtl++glHycK9k4i~GeKraxT(?tM3cM}hKDFk(XQhyKJl z%B>+?v^e5>%WCmHkT<1jzPBt7v>jdh|JrnDW4U;8^rDN;Q5#Y}c4btTq}UZb6#toY zbh%ejLLsf({oXEnK|N>7UmGN7<4AAvlk}5}Ao1E==h7qGeI=T*z}^dEG?%y3F`jU9 z7j1QMk$gj+lofj}{1>NqP~UV1MC&y?)xuq+3$f>vLRWj)R88ra40AMI%V6yJZp5}d z3<|b&^I>{!f5p}%N9dkHH<2#j_;4Uir05sl6ZkrC`#k3|`a8{V)pC3J^QXg|hr+pQ z#`L3;ny(rQF6?FX8;*P^?c#Q!JEemJsFbzchGx5r`FxUmlY>^ zNI6LCEUk&zO1{0ralDviNdGS3gAC7!TLdNXk!BH`1b|%11e0dpbAmiqG?-t~_ z_9kXG_Gzyg>sb(a7kM_ixOfN*J2m0zZUsdTAE)eBjGo*c9f6K+&3Fi(e7ErcU73<4T?_Kr4k34{ygVCI`wKoh1z4J>=!j2TZbuKLLz$Gu zQp{Z5tI3xHy^tn8gT+_c1WiA&GVHREy`lFnJ^{dy?gI`c2O9(LC87v*9oeV5uH|>~ zo)+&3wYV;;l1qEgW3=A&qRjoktwIv0+txOC4`ktF3Vr=7x)<3S^x6Q##)3)v=oH zHv77Zudk5z)Thx4XOk6#bmq7f#BZNu-LzSeywIP^aHm3$1#Oagscg!)GtD@b)D(CO zU;?7G+(lR||G|lf_c|MM$wfF*32Z0SzRyh2WLk1FwohH)Ag=MKaf5oG|1CNT5KEx? z`=md-8Y(g%&CQl*RDKA~r?Zk=qdH~+nq{dNGjbcJ5`4XbXAV@!-f!rX+v?cZ7K<9; zZO8yh7Y6>ZIUg_2BpCBhz*n8?5*y9992*BNl5*FXTqcPw*0&W@WMGM*smysGsK%Pk z(Hw6g72}8B=#~U0W{I{Rf|5y5ih4Mp4Af8x3BZshR4{FsrD&`y+%HBItf8;;SRqp{ zRn}>>DljPG3g`H~WAhTPpquZ`I}*-j)$h!%#8~o45yam9(y8tK8>T(ah?wV#e=CTs z&mWj`>!HoW!xs-%Pap+*JxYUXF-oc`O9#h;K~~Mqi_X^V9t1V(+THci1TWxLk^c?q zoKJ&)tTqVteP~NsnAi&Vfpqnnz+z9(7KFE93ufhWJ)S$O-Nl4oZ(4@B8KECdoB=Bv zeg+XJ$9^Cp{iCu1;Wkcu`2=FK*Z1uQIP*qf~_cBSyvn%!8#*hbc4bdt-REQZoY& z<&~X-^H#8=(Tq*lBH?o_Bta7y;gZ5Q45*6qVK$?$T_dTba>y-nMZdX6y8v^@OsvLj zp+RVUYf8_}St`1zP!136$AN2z_rfoN7Zs7QkrLUp$)38s;6pe|YxZrn9f5O$g@2HQ zF7$YCQSDz3&bc93>#g1kQ)9PfA(eDFjx%F?a!8jsse$Zk!k@IBBk-hy53tP80J^c= z6rn&<0;S3>I!0fm*mGy@9Q4DlpGthXxlVHQ`_~E3(faJy`64rGGL+e!zV%y-$58;b zHA8oB>d<}6l}1Zp$=&-detsFnx(|(5`>Fu>{*;0&D~2(?>3kUewz%th5Sp5p+>N1y zFAiL~1*_0=Itr=Im7;go^ic6NPH4OeM^UbT);Fq&J9;}g6ogvYRK@GJGH75cUqagt zNDfy}(F$r3xYJg43jXpLE(L)^ay;1Rn0X3Nw4Wo zI}+-0k~A+BMjCaT__=Y*%%Zne8~k&AxQSOEN8{?cR`TF>^wIn!MV={|>ye}7t6R68 z))watm=-(nXclNN5DfnHbB4WgQ@g$NY}+{F@3Jp9*Y+%_G?`tfz)y~gUgHDSi1~aF zFsAfvq;opf`bJa5yo)TLH@K+))1i_!#2PI^*!&M)^l52m@v3}{QHYil#w0OJ{$gIcEesrp6D&=Lqmly>mkI; zn2RSZ8gkp}w)R)P3BPz|Anpv*;%srlx^+6^0@7fU!i2GgrzNuby|1Hw;y0Q>t4EF` zLKIv<^9QC@FY5H9^<4=xD%eign#R)5PzTu&NBNUeVy^TSIn7(&&3ixh;br!@5R{NJ z#}L=){cXMw(=Bmm?5RVOG3%Hw7v?M$NYFYA7S+cdI}%kxcDa6ZiEqKz*30koDZxN5 zF9)9pJp2^|-`=_mChmriO)r*J>V7R}+^{7fY1lP)`2w3oxtQ;s(6!s%{QP$jt3M%2 z71YA`lrWq)vF!J8+3ZeLw|BZz1ry_pG}uYWlzwM}SxO-O(WU@7Zdsx5ekZB6O+2N3 z50uD$x%n_I6X4dDPkd;YG1-M;IS8JE+PKZ+mwXkW@)wWvtV7lKj?XldD`JqS7l;IK z+lf(`fo0TKviltr7CRP(vXUVL@>txFVkq~QFe)&<~E z!pMK}s*Gh5AZ<(^DpW$|z)so7(^1@jsIe}r2dRqCLgZn zP>DeMC8M9GvB2a@$MqoUU$7dFzPzb4OZ_6{99Pt1?!Ql>7SE=e1F~pu=kdZ`OZ63; z3fF>!%%cnvG}6^g1ZeUFs7%Ds4y%zhm`|n(oV(x36O*7ZB>^6qBO@w`cTD2eRk>tH znOB1Rg(D;5L;Z88*ly~Xu5cDvHe3w} zj3?!6*`g+&L#qBdw`_N*8f_Gqp9cjvDrtsvTa6$<;u54(rer;f{oojeEsmQsr)QXO2*jm-6@A;fpDwE%~N zEOY6&uIYB-(Pfx#{cQva4kH-YOVQBA`(qH5LEgfUIp4)g+ZqUQ^m?5JXA(|RAt5K7 z7E;LSmsRUF$CU|7#b?Rva`l2CzCg50>D<=n(C#9yOUHRYVAz2Cp>MW#K`;$Je9YLBf=Z zr$yKSd4HLG5;`)b7%>Jo-cNOdA)E+0V_{*ZMC-zvyc=F|uF>p^GU=gn5rQYjyHt0> z>%q>&0`X+UmG3_l{0UUc>dTYYKOE&B@au-*XnBA7C|Ww$wF(fe-I4OG0Q+QoP|!9~ zLWg{0`R%`jm139gc^e(!qM*fc*FG>EeP{k7YAe-Z^}D17gb3(Rlly}w6-GJ{cYsV! zthi%qds^XfYxW(4G6aOG#k?}Ee)jL%xAYUQl_un8G;z;WY=phN?G8rBe=O4G&Mx@k zPeo1ivRAP${+t=n z)NwYBsf{jEZ?Ud@zN8b8c$*x@sOMOvEFK5qfF#ScS$gc8bI^P!;rXhH%?Tl^Z%9%WLgj(ca=HP|bJ&*2YAB5+l3$^9~+ zcKeLV+?QzLri%uhtCYLBH*b^-RS7p=}^Azv}Pho3d1s5Rmc&cu7L4oSG z`Fj%u)zfklMuBHd(uB_Q(P=M?b6=EFtN?;9fW40NS<_-&bG|)tK?y-ZNjwfLQPKzx=^-j`6CT?XG%Nj9uSqamk$@%~c`BSFf^lgPx>O5LHjmWFC?{l9XE(Y?}|AH%a zJ(PdoYSi>YZ#>W_jkRA42!?*U5wAesC2LaxYldESL=CoRkr#zS;0fl6Gp-QN0~8Db zbhT!SoeC5%k!hfD9rUQaK|2I^q0iQ0QXgkp2uXueVvXd+wcccOCc`aD|BjCXPG~<_ z5Qry#Lv6&!R$xhHy2?9otP}0SQxGvV4#(s8tF_^XA+!*9&m)YkjU(aWZO)eEdzD#z z@;p^mu6LDLzq%bhxaeu_{JjH?-eK+UbhrXJ#QTB3+-3+qJ~hAAGXZsIs9M`Nks z_b^K~uc&d_bTJXFP-GghS_p@nXjMU90Hzm`aRy#xc*plX3^FaERuX8$SY`<3Ja#os z?4>rhnqkb?aLCO$6^iuoUsna873prujaG|YjI`yaxF|ojcnW&jzmws`0YQV_0U!M3 z8Z($GeJfO)6aFm$2|`J~(seYv%xK`f3CbG6kh)O3;QnCyYO}1;xS!c}Fe?AF`Opl_ z2#Cungdg%%l*TN6ygE%67X#EAb*mC>H)qP|R^X^(C_~hrM$XEoj7HF=m7^N7|t$ zZ0P2nQR#OPjUWxzpCKjf(Ly4Zt{kt(HR?o=xG?3ch1L&`17lmg`-jsZqPz=6KB|!l zoTg(KwLdKz8;0R9`gwAk?M%&o|4oaq%xZ*z)NXZ1icgodM%?U{ja*P<;lTI%9dwiB zv~7XNlVjfL9QTRtfR&uORq40KZiXsa@MT)5fTXX-~WREI1pTU7Y!8p>fC-rS}HVrw2uXH@z8CN4hoinskpj&El$ zL|~}yiTvF`dUEU5IMEqQ?a0cVf5EV9D!ts=0Xe&_>2Wes%zmm_uJMB%YNxH*+po|CxzFg z2Yc^kEV$7nAqq>Z1wm<6p7M{0@Mc8kWAu08vSCM*cUeXry$QTsKb<0bl+x~b-s_|L zno)iQzcfB!VF_N;eNA7^VEM{@F2A|?ooxP_g=jmJaAU&NhNCNIYwNi``f_dN?Bm1S zi34C{sHraL(!Vc02VBJ}+BrM;I`Fr(w|8PQMV<`f`l3p;r?y^=1zN#(~tTMuE zJU^{b;oRmd-=%7ft$Xs1)muTe?G#}Q?bX0a6Z$#%s;=9&J1d58Ka_} z2~7BD4dW@iqMeU&c>9_xbb*3Ji;-02wr0)&680*woHy8tUZE<{aKXw}A89i`ekaIU z6e=2ZhDJpulazDNA(*5GiLSq&d5yD4U=`XJ(Qu8~-Jn=Du~a9zD0NY;!KY%CTXO$^ zUZR8#DNdmaPeQpdIe~XWH_e3GCpja94lBdAOWUA=l}fglPRIH&$A$_$lbmLjDmn~( z93t7Ds!5JTYuy)3&Ch7~5Kam-| z+72@{@fA!DK9gYDL-Slwse@5Mzq7x9qwr>FUzAXb-AW(1Z^S7+Rq}+2fb%u_%5{DUsIP|Qp$^DpTHukhH$QIh12HZG8QHhqQ8u*P$bLtsC| zQFU~%82dLxLLv>XhTY(&GJW_;c=^@KJUIyYYk2;%R>xa0`O38&8>0!MO-xQ^57;W_ ze~_pfX7(rIa(uv?gWvP8s>QbG{}A?;VQ~c8)-djF!6mr6yIZi}mJr-waCdii4KffU zNPwUT?(XjH9{g?YJ?B2p_v`z|Ozm2=Yu8?TRS(_O5-8He$}dw@UG8!}Smjb5ORBr@ zICmg6%(R9d+88D=soeynetkkgH&^~U-*r>k^e^pKEj52qAa?~HzDkaRP$crUbe^t8 zec6HaGWdn^=Q6q3sdg%Pt2$ZT+&NElZ->xD6VKEf17%~GP9mW(dmjGC7o(B2PvbvX zkKR6&j`p)$f8f5>NmSs{MutpJ>@v{lA~&-sWGPnt5TD-9II+XKtHp9hs2_f%$+6?i&`j?p*pXpHl{fEZ@_qk zS;JW(@fOQ(k~v|gcX%l!_7CF z>g2x(7puLG`n4zzYh}awNefB6q58G3g&GODUx^q$NA6`I_mwYLn|eDJ+cKxP98q?c z$E$)x0!=CqN%dn1!T%Xa!y7o4qhjS>K0+x}sVO>DX;jZyu`ETl^aGW%+pDr^M>T zi;*%D(ryZ%cOfBb?0fGk&bgixQ*YbiG7Q;AyKcMfXgfX+!p+WP1MltHWW6Bu!sL1^ z+K;q{wW#5-kH?AFJh1^a<)DeRil}KjKKNjoWr|ian4eRa*~7Ljp71}XmL4Hgs|2`Yi(@enam9?&tYKo-bL4hUgN2H! zk9~z-)r2?r)sHjoCuRdRXRw=O*ql#(RS*{BiB!lkpjeEZiK*T!!36dxarR||9a)vi zd-rBG_M?y8z)pAws~DX~aL1SoUF-yKGSE`z^dk0r=jSxZk-!~=o}GdD#AYi9n{!S- z(Y8y@-ccBp<*XX$mCc4w*4D{_hPOgqJFq62*m=OaFTo zwXrcW;16BO9z81|ik>OlnPO5=+dTXF0WI1}KT zHhW`Zl$ug=o|^UeYaeVPlNbtjH*9Q^0B+Pdt7q6wFWVS)xO6|sj{^`k_%4fxhXSIT1gvlv4El0Qltc;xlo+{T1d7Pt zF{=TQDKS)ea)WY`Q78l^s?q?sPLJ70Cmwwyxkn-vj1)e>Gd4NpC{GCImaRK9_vfGl zOG;`?R6Y)==uToQ0*VF9^je~w#H2(RGI|25=R^t<6d3togu;Y{Wdrgg9HhRF^4~D{ zlJJ70sOa|~Rk6J1QCZ}XBqWlHg}4Odqj8~CKTkp8Q{Pn+WhAAWxq<)G!fJ7ah=New3qu>`keHV1jA%Ohu$v z!FFWtt^w|7=JA@vfYU)Zx%rW(SV}d1F>Vw~7 zV>GVa%#*d7&`rq~zi_Wf0ryu5L8bH~`sV;6p&(?8Uy)~M zx*|b1i3Y}g%OxlvQDyro_PZeB^jq$aKvRShjAIluW=Xc6k^>mEDwWsf5JU*XO5ka^ zxk)ObF?L9WX?n$o$%O!F_$>21Uc@=E%xl)Lrc3c;`D=I@goeZ$36P7^Hh8Edu{xC4^I<@ozsIDT>D`DNfQ`@?Eo?*_9h9A+3s~TCEjl*GR;W}mFlCKm*5!nE#MP1Zfp!^NVIq# zKpbF{WlRp`ApoE_2GTSqjU9;qYzmVIGUy`)#zc_lqZb!5&FK^kjG4BT9N-&s;{^Z^ zB4gCCCI|Q=f8hgNFeUmx1g+wI^aS!imqZ!htf@Zo?O!n%9C5=L(J|_uJAp1}K{1>= zq`N(5jS z$V3oOlsJ^@Q7N{8q6AEz9GJem6fk|DDE(*pCjhu96#y;+fDhpR2mFrb0|9MlP$K9v zJ`4dk6mTWV6M~?B%{4eCIS7afJ$h`+v~e#0=>owK2XLE!wuBO}79b=5mjJ;6xD5m= z9k8ww1FWGUVy1Jj2l#r~0%Al(*zcJVMe4`2^17A@{)arN)Sn@Z9 zSpa?9fJ6ew3FNbnB9N*S@Iayr036}?1vC<10gbmXKqH8hLzz7bU<>g+`8LX&{>SZ^ zEjqw9O_qOv&m?dL3+N^XFk>${0R%VS3?zX)8iz6{H#mkf!{I%90f&H+0;F(Q8n7yo zNF2(Sc|iVqC`atS1NI+W%8`;1+ra*VYYfUyGT;i%H3Zi?rwM6cfv9{YB_ss*MgfqA5S9Rm01yRPiETiyxs(CDj#Zz6 z1cJo^Pe^MPSOEGAgFy)9r!4?QeS;tb>IHOc^2dY;K6+%-*l7vC6QExF2fKt4z!m_o zOQQdaosJxveDxQwMu3W)#sa$a3P8keSFEBHfUL_E#kOZ8(u4X4hF93Qlv$m8Es5`| zNB~3=>H^SE)#nMm?((og&{D}G;7+wVuyz=gw9=9lz~U$*sY`CB;EQ`Hlp-X_Pw<&B z0<6w8H>y#8b7*$@(JSaVh^{ zKO>}%o(%4ia6wVZU0?H_R(E6K#a~z8{ zVp@5XX)aX2ii#1Vt_7SWJkH1m3>G?LMqRKqIRTXZpg^$XFviF+28Wa_^>G`)UpOFO zhg?anT!UfGpTxFZhOmsec#H-E`!XMtf^I_!sF4Z5oMXRGI)%6>Bqa`#;9{qi2E{Ge&5|w^6E{3qet<#FjZ*0`PR|Nz#EwN zYVi@M77=*=sTP151D2HU;hF-*?EAk`1VllB0UszZ;=r_tsQ`vS03JfD0*T89e3F-z z+(y|nE_hdC!hYZq0f-V6&_xCS2QCr*w-m9M06~_A0URSI=Nj9{59qUM1d517D=>Ym z5McU|mcaD&{%`v4;4uI=aEb7~)Aa{HGH5G-mEh** zF$88$4}}<;TsHv}J`KPVdHDZg3jo+9MF4io|6v2`LywLUn;ZnJ4>KeXv`V1Fb}XGj z5Q5WMV1R^jp|{Mb9YK}czWF#G-UnJ=g5*->*8)acVStV0%&`UnYWM>ka7Q4tPad(; z>oeCcYXqS7@^b_A6SEj>8bzK7Bw`~}4aS0%7EOqwir6+vcUN=Ff|-^iz7a)Df29o1 zps!`y_KNHYYlSC{5oBmz`C;k~QN9Z(PTn%->Kn$-z;?6UCCfBPwD=7nV+-9-dcKL%>&%TI(;BFgFXTue!wMB z)TCB&@&Tl6L!*%F(W)EEhO`9&ma9yuE1PV~*AD~=%tRq$0-Xl1EOVVoM+HHzt^g#k z{RyZIlGq$nAuLuCeC>#094fY`8wSZhJ+%iC36u*kJHz2URd;|yK>?fwq!(CUNhmJm z+B}F@PQJ0=K6)8vponh+$emt_Kz$w^WPqW~af3!?zD ztAQSH*Z;$8pc}AZ08)73o%V7-P^1!_$z@;qtq!S_7~KRP?{r+6#QZReWqR2V4yZxQe&UNy6;u6V~zP{T&;y2KMei4VYYb-@Drady6i>+VI;ux!&C|c_$ZuB!d7rz6*Gv!N#K;8EmwT z!Y^l=g9q_nYd*kQUK+68H2$yk`!qR{fB^t^fL+0Vr`JKy#EJyw`J0L6^~ zu5`Yu@$z-II`aJqN;w9Q&^4M(=w5AM6rJ09ydS zE&&|;U+h#M)>nT4YlNV8JzoIyJm7!yyyjicjo$UV>wol|=UvZj-}M|oG@-6}*YkyU zJ+FP&bHJS+`nD^an&C@&)Yl`yK%&BW*u4vghQLEh&u z&elc!25jbm?fW9tec@%CGg)nC<(^sqEDjO4R6EJRXR4QIKc z6m%U?Wrk}E@d-#QhAVPdgg(mO5bO(lxO?JI6OBm$v7E*dL8~>nJ4V|YZA$e-QC)}~ zlx``rE$~Jk0jGv3J_l@kMEpPwWSdq&0>pxSonFRNPSLPtkeM~BE*OIR9(zG?E)#MI z680K41UU-$P);Zp_V-KO*v15KXteDj5Nk@JRJTcty}*}S7lI#) zs^e4xGWSb15~i>m?CLv=;RG)5(Uk@gFj|VgZQsy93<}k92RJJMtKG^E1lkpiXUwRB z8c5RwU`aUur%?#>07jr70*zi!JYySt=tN-rQDCX!oNGXE$IP`LYfuVcJ6uF;n^P-h z4P-tC)i)q{e~)$c5sWnTyz6)kAmM;5g`^_DBnns}u!joJDAd&7 zXV?O)nU7zN z2a__KO|-Dj*L7+{DQJGL=Xt(C$(6&1Fx3 z8BP`q3mfP%ZkOQV1wxfPyx}11oXTW0$NB^=ftYj|U+p|}nF{U!j+%f&E#u@QV2==B zrb8$P22clcYEYFa?|-+{$jx+%3Y@hP7dKdSW~ouOK%g+q9fJ*;5a2wOH9F=xC;tr$ z?2`3l3Y&Ea@EiwlP@(cEe4tk*+Nl3lnNZ*gfob^2ezJL3(2d zXRve()G9qD#muTR&51G+%+^^kG24Z5y$Z!S&OFA=Su^KJZb~p5aGM>}fgrOk&a-kP z!sdCNAoPYjrWH&c4m(8W^hcR*7by`K2EjT@K!Z@;RTmDq%7YPBqJ_r>f?VF+9|)TBW*gNtPEEDJ zaBZ}$s}w$3_&s4+>=~zC45jWp`c}x_2&b-$&Jt7w6P{s-n=ySSE*0NU*)W$5w2E?Z z$ob%b{kN@i1wWn z2zAY1_r)O-FS88ay;4LX)*4mUzZ*E1LD2^0Ku%@o2b_LgIgwruyp-{cKg?+=k%_Q- z>c*yp4=C(QT@NYv^d2I;zDNb*MgrKAV2{zD8~W0EHea}VJ8@rY`P9%O_2?f=I{CGg z*3rl6#>J3NIB!-1BEgromib$J$je~-aj1KO=O*cUdiJ^vUxgSZpL_}#{eXNdO2kd@ zf=bXo0$W<+XQ{*0y?Q#~uV+Jx-(&Xc;&)HBU-ljbUdc| zR?*HIdws^%QO|XzvsX{gHak2-Pp(Dx=cnsid&4kIZinAbK{j}MEMH*OC29)adM#&g z3%;GU_Sa^f-`%LKBoO(ZXPzeWW`%vq6%t`88Ci$6E`Bk>e>(X8Jo046`((x}uZtVL z3%)w5SzODDA5LBETHWsleo|h<<5YgRu3lKP%R_7Xw7PI&)nsvH%R78qxU#4~zyusX z-F<4z>AmEC+@YJ^+VK*Dy`I*(+&>C-nnzCSA128rEz^8Sp1d7(taa4E7EQTcHtt*y zVQ|IypJNfrX4xxatvtY&neLz2pZA|=s9Sx{YW0Rae_H+UWM9C&-kpAR8xgpfcKXxy zRcp9AeYt}n+`q9N^_vYSioR7By z{&U+u1WwL=8=$w2PJ6KkIu>eJA9?w8zd^LjwSUE3_VsLKZR)Mw@NHq7tIMy5vhqZa zl*$Uxi(%*OF^I*9N1gm(+moI5HI`=EhKH*mgNdb#ObN$7N0UAZ&r#Lp=R=9w_YLpb z#VULEY-sGA7gGUNvN5kGUA5Hna0_9zf-MKQm`;(m;}iStKBn{bLfU)F^=#o)R*T@L ztA4X)?{WMy^fB6WTZWdi{I7Yp*+1Hfd8+el42@liB*F4woN8#{qYC;x@s(?BK6~oO zLO)Ijq@y9xjVzywge~2*`(N0QZn_7K!)uq(i$HHaQ=(++H?oz2V^EK@T#h&JiNf4! z>Xg%1^W)D8H$7g?_-uZ>`NRC5IT|dOXg+E4nOCchyB-^BW^r=2|A=5C*b=X_pRn;; z({;RJ#t-98=goFAB}XUCMm*u1eI0l9>YK39I0&KrB=T?)>nzXLmODnO^k75liQd=Vc`Ceyh^nLv|efn^%C{Txn>_2HPm#w&qHm zd@jAI<3j4LzXcSzEFAs7I1+iuOca?9It&TF%hnM#0c_3GA1Aj$C5Mbn$~B@u6qre+ zH>5=bgSNM^PZODlK8>EIOt9SaA$wW=rzg@xqdTVDV%DA1Xu1^@q+`QD36+V=U~}0k zed}Cqt67((MVzG6oDn4XiSfE$NPb&&tQy!r@NN4u@jpMUnwpi-1i^BEIT)QK-TZG_ zX!Ca67D*yp^h)7P&%QDp2M^1c1wb`OEEb5lb}bz+VRFoRTjg>&NSVhk@jl#|rFL<+ z?t3p=i|GsdGYUU=3@Fn+a#e-7(l_sJfDeU2d0VMMuVE=NMvl4BCd3}1(VY^yAbrIKI*?TQh8}x*%2!pZIgTvrC(g4 z^S9^u;7OoO09(`>Hkx3Zb>PZEHaY#u2?Wb5X1Trb(#55E@=U%^L{<6-xpIg|v!IJz zrS$W7Z#RQ4|2zubydB-o{@~UVVFxj!m>7)@5yewkcz)u2XY8g>@c{s2N~PA(_swi^t3-TRY#O7Tqd z@w@h(WhCAEb^K*p;Sm}YKEzjUFC0g+MuRxhm12Fy2!tI9LVPLXD+n2*YhwzDFV~#2 z)<${pN@T@T=?TYbEg{;sxdSB&S;aTirAa1RXvmoI2&5_1=&{Sjtawv4;@PSrcxR$4 zy*G_EWiyyC*=>Fyd1o)-XV5Vvozq^P1zOK0j=5RYfiL^i*dJCVF+?;RQ4eL8tD=@Z zqAU!W|A|v5iRtJa;FU1+BOIwdm=6#fKu`|%8LwO+Nwb}up_AAPty?@f1)j&KAF?5d zMU-H^-k_J5HFV(7&%DY^kKQVW;sDp(tXs^QqoX*4U^~YfIdbk~!@$tamSXVZ75)>0 z`l8Jc-5XFrRO8ToD-px#E=p5cwfqE}N)6ZbQ?1>K_G3*TsjRDnG24`&mlDVUIl;gk z+Ta^|AC+z19tmtj5QKnA1`+wiFdi5~$XxU4Ke^_vIj-~SZT^XpzA))b+dgUfWamMV(~h1fkISMVO1Cd& zb1#j^EVZq7t$4})di(>0|F2+uzi}6>H-mZOB6ok&uC@0+sFhTcwB1&SXI{Ppg+nt2 zgK+qGaLGKV^EX!ZZ?pPclML6fZ_uM^Ue#%B;mMg!DOcrO*5~Yz@=lS$zY`RXAZ5LJ zN{nAT`&L}wrMEr5K=DYLBW19)S$Cos-*0;3^1nLHOeg7JqI>5cugr?riy*&2#UN6q z+|t@DmCLA&y8Np3!*!}q^FdYE;~`u-C=VzAe{`mO$dHz5v&VzIqvGQuQySJBBCLv| zi+TyP9*Ye%B`)CIFiYoCiN)wytqi|fAT*QbSQihmhASg+H14l&;jZnxYPt_ro7Om0 zHO1&Qq2+x--T5s%Z!tm0q}?m&In%8Yo~IOFW+zbOOdZ@mYqRAH^or_v%x3B z24R#e-06bKAG>Z}Nj-n4i%UtZsqe~H*S0Kg{XK`StiaoSxwZX-M=~#+?>76C?>J58 z_QraT=VM=IJM`1@+m*XCUM`pPe!Y{WS-q&ZF!K6E!PeXuZ`h>eBBoDEyVoBV4av%N7oMUY2`mg3}%# zbDeSt-gEjxl&qAxzxH%0$F@2)ML=M!N4Sxu|wZ_pCtMNTXyzUv!5dxvqM}9t1H2h3r)9=GJEao&^ zr5R&Oc1&}*T~LNw32_9-1OJpu2oEd&`JFqt$v(!#Wi{F^JEu9dwk~d?>8ad*D!G@u zP2e|e^Ju!Jx!Ny_)91qR`5so7NRY=wsWKAcDaZ;zxPd%k-QT@-S_of-|t$2qT&EOcEa{WH7n$Jf?R&7#SIz#^G5NN_VP?Yl2z+bLA84l{Y3yf*TBiGjwP$RSR!uaflPg ztuVXYbyKx{cwKlM&SRzU8(et)7jAr)`|p;w(%@~?eYd;x7HSvE-_GJs%+3XQFguRV7uRC~SDhyP?~&KU&b7BZW`1gC`!lUu zWxWQUcT}G7&bEeS=^~5yPB!II9n6l1II9*u+Usj+b2FeDOj3fBd3kyBqKhV1AXyGj z%7uiiZRvjaN*zcYtgp?dyGb!Df7z9`SX%ic#l??1m_UC^rTTPKaD<~h#`+2Zjnd4llPR;~5k8a8>{GmtxGI!=11%q3-YbBiXO7LJKaY<0# zDb%IyhbmdnO#yT~TqmYT2d*<6n#z;-;8TysSxMhNUcFBdg@0olMU8bh+s9sfWDQvD=Ic5F1I_Dnw zcr37w)Hgi%%U@*2-;gbxSHOl67GicwB#4b z0B|lLf}j}5K(T1nr$?bEc{lRE=92dFe?Rb>IpF1m4gY1v%jGsD!u)uAcoFy4R*^Ke z3aohCVc)E`vww)B^^GR~S_%2S@cO9&!PA>j*EVm=<7sx|_0W+G>pX>xDqq0yhIIu2 zRnrpY;{r4)KmM)ET3BXt1t$SoAu>yX@UQ%zLl1Qa?fXxK@s%A5&C9q?UeGru5zf>7 zUvD#}2!!nwpCM8~->^UCW)6sj{&Ht2l7<0Ycp4Ycag<3F1GkGotkI4xls*4wq%QhA zc|f8(YF~k}+Q-8rPTU@v8;MESB42`8lS?E(Lm?2c(ov~KswSBH-O_P-GCVedwy;XV z5OoRGRIfF&X|U+TRT2pj7#-i&384gqu|8BKq%+^}1?rp9hO$<)URtskv@}`+#k<5vkYo3&x;8S` zAG%{g<#2>JMK}lSKyPSCXw$+Ke9TNtF1$Fc4GU&27M#d6Bc4P{ln7?Z5QX^SPhoob`>`n7^&ylke7b4(U7>3)1X#<6G39-n;~I za^ex}jBHVkI%8x}ei-={L4cOp%gGyukGedpD*}%X1=A~`z0^g1^cS4BxFwil6It!8 z9zd%Hdc0cymUal6sxQAv@7Ozz-a?GXb9?N0u?@nBUyH4o5X`X0`CRiUHW*xxelvt= zBe?=oF?ng(>^0)i`CV74s%pFXZ{2Upq{+maZW$0iF;pDZ?;`&EXws_B&w4@;dTXe^ zFiH{}4|6Fi^EH2URBniGRD>6?;~2=vlH_UZ`jIt{S{2t6;rJQeD2#L>6bnB+`{KZb@&2#mSqtM`O~pvwaq}E(9HR~H#DL@sgbU~ zKy#J?6y*iatJ+X{z`1JqLR0I%yv9{5*xTw{=Bo(uQv4X1k4Gk;o|5g2-sC$}|9mE} zJ=;8Z5UnkEaPE>Ta?h$qfa8-N{(DH!1-Dfsg7a71QrBIPqmft`>7e~Fc+B0moKCVN@2?*YCL6-K!evi>EaTv* zYe`+BvO7OmLqynADXonOnBtF&)(d$hPbls6WT(PTI)ix}*|7WjyPLJ03T{0a$u4%A zQ(~xHu|#dbl1F#Iff<9BU|$iq$8OG)J@}Wdh5Q6MVH7$dNo9UPr#}>8!S|uWmlj?^ z8*pnzPD%FTcE*E-g9w@J8kFtN`jsQzb)Q`FRYu`K4>ynnAD*d?O0mA4kLa*6z9N_= zYKM~fSpCqAjX9OEK0E!09gZFy^$9DJT53$mzdGg(qN4=k6NK%EbYR@Ti_Lz0qy2K& zxx@o9^zSypTi{<#wuT66m7#|`e-X2)rL@W2+5YvW%7+}ZG^+dOA(2EMaM8fK2$Re+ zuaM1Qb_=GOqVw?K*Y?$>SPyifjSA`QKO%07n7v5!i&{Kdy-{hr{4D+sU#miiw{s$Z zgRb|SyHi|0-fX2XdV@b@;e1i!EO{7WpHm)@JPpQ*WlOV{3K`wSkxi!9LyW$hISP60 ziRkQ7tHZDKt3c`S^G3Gkpsj1N5Nhl3!*=bs>WNg$;fM{=NXXnA4eMpRPUg4sN3E1a zkDb>#v}r|DIKTlH27Nj2gWqrWUk&`A_xsm~H|dhPv%R~e%0$~VMI51*G|13UOf`s8 z%P17=r2b-IH4xozWnd6nwji4@Q0bb?98k$j44+yl?-=J4t{+< z(ERu~eyVZ#h4(l=xQHx-oGi_YiCJp1-B}t?Ws)65VpN|C?_n0)Z*h&+uljpGQno zH^o{nc(yx8+4CIkIWx3)JGr?2gODqBi(5j4>c5W|-Y}FP>!^+2>poLT;hjfp@B|^( zb!i_LQOt$oWQ~4~Dr@Z}VsH1RI(gZ{$GRzXFMzC^h9EC~Q7dYrEPpja58%Z6Dssk@ zz+1vmTjb$DW2F7vEQyMU+Wh)M@lXS|H%IMkDuiP(T@x5@pJLdW23?okGN>Xo%*Y4l84(g#am!pKIT+Q2*!0AIa6g5aZ$Eea;%Tr~S61xk#LRES2|FZv; zB*UY|2!oetzejY@G9XB)3%#;|KZGrXuv_p34W9d0Hg^o$H~m;>E6W0Lf;%vqCOM;G z5O9pEXY5!G6HduaVr=KShn>8CpN~d#`JDmXOyBy(m3oZkli+qwYL;kK;g8Xe1geh6 zSp`}3v?~Q7^|Vq3`TSIpk0W5jV@~fMJmuWF1!=&WCnCIM1&%C4*(YZWrl`%5@fLJ1 zHEK=OS~ca8#%A|PS3=$6f>vHng3OCtlzvo=y}%%Bp|o+Auj8H_w}B!@KOXGPT6G2q zU;9S4^L5>qa*u_{Ar#IrQmNZe3!QS+}@93|Dm-nYN8FK(Be zX5`eCxe}~*PvbGsfkMelXy;w?G266%AvfUV@P+s6$ogMjFU<5`Kczfw9{8>T2WPB;PKOV==#?lNM*Q?R)PMhtozM;UtuG^Wq_b+*7n!Tp!ByIh`-_Y z5D;@o*=)U=HQu7EXwphoC~pdwLvS~9ZJ90Kro*gI`%FGD-txQsBmXz?OdcoUQ~0&7 zv*UIqK=-C9nH&8gbmUI(K+oh)<8LVZRz*QD`*#v2Y6OFv)&4Kux@>Plw)a~$e{vu> z;V!M&je|chhjU9ZpR^5!^_tY3vM?3A_<3?|M^)kJ!4ixw6~>wC^DNdeb|8hRw`}03 zBKgBSNnczGVivzl3k2;q z`cKn1S;xGl@*x=sMiV}tz+Z;oUP^nBNiRr;)`0>me+w#5SEN&ejuw%ulwd)EYQUYh_Jn$-elCg;J@wr87oxy$7Eir?7>wbL^ zJ2z!C9M|S)apNR?|21S^=UaNZb7N04tJ_;E%hUazH{Zs8SNpR3qVeH#hnlWaWib!-05)9oK3eY|JW-~REDY?p9J?5&&rOj<_{;b!$$!`)fJ#J>0Y zZ-j%;M=L&rrS=8MKa!CBlf~J3T&eL6`Lv%OSff|Zb$<8r|A>nJQ#ZaUhnPyS@I(|+M*DuYeY<%42fl6;5B44Z0-B~>uj(@t;D@xd-sgjrG!hX}5~VK) z$Nu$18=dnJD=>3E@KHP2i!6jBNnS_Uodj^|A^Z9_I=q}jxK37fOi0z>kIrYRWH)Wr z0*=sEVilmKFKsy(h@oyJgTw-TURFw>{mh9AwAaM~@J~|6bZ6DoS4}>aHdQZAV#krj ze0Z*`@V-ZLDG3(&>cBte)tYy{JGVCoXY=64M)LY={0(Y1ah>TVoX^6}(N%=lS|_wE zBzoM>c>OJpxn5)~>JR)g8j`hEl5{!MX=#m-Q0Q%Q7ME-#f= zRCky@xAX4I5wH4N7y2m&;-)Q=rfvs#EG|`8te!_1bLEq?E$3#T(y4e1nDP?;leyUe znptD))e?sEaaaVYuTpGtsYVTwe`W(COI`o{AWd6D=0r?!roQO07PVOaK-r7H1U{zN zbpbiP&it`}WjkBo9I|txAAKTha8c-$dh>Gkv?_{;Um3QN=&v%2V`@^Duv9kTOe_Q% z&hI=vUVE$w7zUwL10e|<=*21^Zi_pOS346oerNu)3*Pl2nnKb1YNygUT~Gg7TU}U; zbjqqs`}R_y2Ex!ZnuQ@4tFG4$fj>0oODh5#749Ea8cN{C*6ku5LGA&15@JhXpW_M; zqoW~8V1BLue<%FP< zY0f&TOFY4yRSp;FOB!-iG^Lx6>9SW1 zJTEyGWtKAmJf4M1VU_% ziX5+T82#-uV%tldd46hmPB9(i2^kSNo)NCN%OPND(5up_m|Z;*@m-JO)>LyG?=buD z%+N2Aw6k`#jJ1aaTpL3B5!@_X!5{sLU0@7ri*^wM4VCDwe!3l8Ywb0_y1=uPr|pySZY3xykr&iU~t*` zF#dFFZO*i&r9kblYv1weWt2x|ZawzzPr8=Hm!pxGKf8<@>zNYv5U+)iuD7_)st5aw z?S7;G^jl1y)kOD5TgJn82L3%cw}Nr9Z9C{iOfxaxzQ_Grshsts*CM?JWAYlrlL|Di zY-j&I>bPhJ!+rHrRH-)rPa0~#XC6uVYtZj9IQiR#~lj);4+-YM{PwhTJXrCubNJo&Srx zvUZi^_G`lY?@uhe!(oI|^8s`HW+TS45sBTY^Xi`Dwst}$<- z1De;T%=12D!racy;YDoBnma4?k4Y7OIIG<1a=a7gqfZJQp8X##J=F#^Gkngh3On+$ zLd{*XiBh~D;(X|cty6OzeYg&inMm@IA9OtjXYsbXDu+^>tq285! zs1YK`9{&9H!2O3wPRa9@Dwd%?J<8FeynP%kfCR?;8UN>pZ6yj3J*tw;&l_v^i+U;@ zU(e8s)TzH@iYT8qs5A50>?xGEQ05w{z?QEMU-tH|(2bupueP|;MXl<7**#B{XKwZV zJbc7?U53c(}72tk5fLSaLWlEv1xN(H)y1VrvYn*#Y)om?oPiPm8HdlElPrXFyKb4 z6Kq6E*DHd9bubi~r@AxBtF+o`)t8>0%!+gu2!HK89=Ft5{5U_71kRp+kU!<)^5IrZ~Ft4MaznZ$W9oNSrsT-8}E3DF7era6P+5 z;l47WAZhpIN8@$F-HCL>zTV4F5zkmW8JwrCz{u{1Pa_?7f4xE^m{XHh&)dK=m)(@s^-|UNUdR#rH7`T*Y{YuoyYPQWyrgu2%b(Lm0 z>fC%PQS~3HJ~Pxc(>CfF{)q1%y#^)wTRbY24mk0fT^FmWZj{KYFq`32oBFUY zX$kE*cz*O-W}4z>vkZ;LtKVOYw@W>mi22Q?I zJE;@n7p9e;w3@e(WHZI{o4?9U^M7gBx8Q9J8{dHp7}4NZ>qm+?5-cPy%ZkZ*F2zJy z?uNGV^DihA-RHy$SM3Vaysvdf_P>1wGc#d8U2NZ@K)>=H^%Prc_)*XIiFD|F{q> zR@Y=6=AtfJ+3FPX;)bKIPAYO{>Iv0)s+sim77H#_edRgyvf#FAukDoq6ZtPQ-Y+it zy=V~&i;f6x*>)rVuiSBc<@?&9@kJKB!R&2;QPbPRO!ZT4+)`c7P`it!TzZ^=Uki!S zj%|yfAAOwqamgKd2ip9zlaTpUZ0hPo@O&mvh$2DdP~t(9o{;wNXbXo<8$es7>3>R+#HO5a4w~|w~Tf4&+>J1bII!o zne`LubD=4ga+=9b&*|T}w#Zw^dhc;}&qs|84GZuR<0=mRKLBk&lE1-yv9@?mjitC99gnhBY)iw*QENPuWwBiy zt!u5tQEJ7X$6QAg*2|s#z%YEf_FkK9`RDh6R$Fb~-d5e!!%iBE(!>4BKJzx{DX+u# za!cKEaz^TL>tW_}==Ive5wAVXdktkMbobpJn>s$R%DYyr8-@1Tmn)eyBd^#FmlkW%dnTRJw#(h&A>CeagXuuYE_v?#$k!h8l?nT% zGsbG3CXfBvWO+R7>$^p=-7ap%t@R1Fn$b3MMpj}O^npVQ(Dvs)hbPyKN%n`R!FOk*-gt{!Vi zfm0a%DuW*^yQL@TcB`%k0ys=7rn_lPM(+`c= z^Hf^LANLzEUePnzz5EhqSE=E2HqET|+jM-p&%WKu_sRb1RNj~C`Ccx6Xg(^r5tn~Z zAKr7^w)l8x4fD^P$CqaBB|q9eR1b%Exl^eXn(XkAe{PR5xqfE87Y6T*@$hsKnb-bv z;fd+?=KEBwc38Ia>0W7&dU!v)O-ql$e!W*}squ*`RNiK<+^Mq5XV(wIML*tWI?pZj zw2{-B&giv0c`P&8(|b>=zYgP^lzrPjG&X~iP|xZcef7i*Q^(Dy{Ing!PorI>klbi; zUaCx!uhWNqY1M2$UB1=F!qd8=tX|)=U4N`D)YfR;$(Hw<=NDCZIO^&7bK|MH zTy@26_U&y_=hDL=HCA$xqQJ+;}2CJjr&g|>LhFl_JjWh7~}`{8)9(Cfq2Sa~|V zb!O~Z(V80jUf`drlg3cqYKsHEkffo0n(x~4jK&LvhA_TwjLN-Jx&89+rk9_0om{fl zF2vPmem;6A>&ab7&bG>0r{R2DB13)yUJ|JLU*b?7Pgz`baGn~lfv$)-&XFs(?(YqO*D~T zZ1~fT*ILFNN^z-emR;U!%qA-?9=l9sWN1aqC^O)d2R5s>bb(R(>rHl$e$i`&bZFMt zLA$T_GAB-Z*`L(5_?BI5CR3KLcK4jVNlS6AH4<6velp?r??tsXDYy4hT4-GvWJ|nO&pz%M{yrsci`{W{nq*JH zWW_JD>5Q@Q4H7-+%y?JmrLxmGm)$Y_$wAw-Uyc(=%_g<`Q=HrLoBX}nNUh?`y;fEZ z5Bx0tP|OW#_r+fG-q5g@kE?yEbDyn0CMQpi@1<$C!VKQt2Jy+`F*7Q@ZnBwWyS|7& zthSqR`#rOcclTK##n&|{EiUnZBITsoh$8*B&dG@pNAk zgvRt?dH>AUIiBC|>hTnxk+P4%LcK2)-uCw_@_C39tHqx2uy>V5z-zv;H z^A7HLm4}x~XTccvHB~Wm*&I;&<5T1QQz@>E3jhmlfT^YNM{xr#i2af9G(C2}Un_%F z=QZCo?s@5#&QU(TIg^jMf7Mkm7p<7}elI?kW-ca-L zS*|`RrQS`mBo7Qsn9Cao|_A`uk{XXWqYh|m&xUJypSH&?P|Jp>`Cpyq1`CI z2^ls$dViLLI8)S^SyStdG~s2N8?B!T54D^$E_PlD^_)H~Ek@({`>N5%J#jCRabMcW zy$#!ww|%)4~j;_vz=>~ zlkHhuS#~FRHN{kN#gRUH+~r;+Mm2QK8OM(#DW5AO*IH4N<)YL*)dvOcW!W6$w>e?d zGVs%yvx%Oo$2a#)QR~Vtd2QY7sO$N*Hec-~I-8l_bBFihqE?Myghr)ygZAY+;llFc3zwL=}YTjsMUst{8n$3)=v)=(Kv3UCv~c1-gfut zT0Fl?D%mJ2#rtN;&_n8v zab1>Yf02&3G+RYSCNkp2_9f+@=7pU_P3F!eGnqd zDV8xp?}R?zEk_@CY&kJPJ(C_w(#T(A+5rkiG$76Z6ltaZkrXD<>~_9Y%n$e zmb5?a(wW;kHfj7%FsP8a@yKcZ0gA_ap+umlygVisV#f**n-EsgR+lDD-VlEzJ+mEi5gGn&td;ZL>)%y31eB*LLR|-54td;h;b)VqUX}s?(l0IME885&3(9y=V}y z;sK*Tlf$3PnY`jYIb`iDHozkg5etY1z(a8W51Tz~ALpV^&nxwX0{WgvUkJmZ671AC z2he#FWzRs;t&N6H)GN_;CJ^6Dy}F@MAf36UD3-t}DjIuTBfW<4YebzIp}s-@REC8a^8bkR$97i zAuUnB*po@$u?I`-Y}nIR^tGM$Snr=uJmuCn9wp<5GY)t6$AoI|nXwUp>lVmSmwNmU zab@UP7HTWKWguNs_fm}A#w>*^Ca-3h;b{qKcznrh-w+QuNpHu&wsQ`)db) zi^41k^AZEGOJZf<;_=L@0hNTJ@jDUAM3ON9+IUVh@c69dRnP-V=gBM~vRNEL`IZ66@`Cc+R-1Y(>x z17$)$AgpXUp<4C>52nen8=@(!k~zgn~n*nNnp;&yx^Ea7yyjEV43~r0w5Kf*AV%gR-nEccEQNT!8(}Cb-}yIL?NcTru{KHxPw=yzESX&5@mpK%1(nRgpjfBF7-x z0_qE_Ii}QrDz=d}!CG8Nig5unl^L+hMdN-4YEs;ypG@W;elhNvd&&Cp0WGaXW)gTO zuO$IK@sl-x_30zzzz4buWjIPJbYM!O&!G@JwyWMUSDeWQX6U5NDQY_$EQ%|(TvHw6 zq`;;KX9czlcari5?_Bfp1Cl$IB>=o&b9 zn0&NLpG2dy-8d2}x>aB<;6@awuvI{?irDyKw)`Z$$cq%2H$P37^Vtk0*ynl&qTpv! zipkdd8uQ<#1G0Lv?tM%LMYFuWC9JRnq6MGaGzR@*-NSApw${NV@Tac*)F+X<0P}>| zWgfW;xYGtU)&bfP@bKErKitbDuuEmmppXn)Q3>5xl$lqY&PyH;6^?W?IBOzJ5}JBQ zn8tC>Va?fAwy3bob%1|x5@M?>(E`!P&;8umJYCCWrNl}23Ya2(+2tzCQ z^9yvB-#xBF^4~EoMFaW|4E;N)P1&HoV`#EU^!rEto#ZA9tlu#*MM?S(4E;OlO%dUd zhW>q8lc%x5E&OJTue#%X>8P}u&zBBLy%GeEioC>$L63TV>oR}karRrrzHG_AQp`mg zJ0$+vDpiXWgeMCJ=;_cW83^Er>}4l!BLrYQK1e) zx?fmvmEu;vJ*O9REAepO%UgM*NS6&C!@r_A&(B7S1`n$#gcF`jW$Khru?8HZwi7cN z+_2TNV8Oig%P)@+)+5UYWOw=`BW#lQb9S_s5567j8!_w+4*V3v>usk0ki@M-LHOSW zdgf7J9Srur{`HOhW*iQLYR^Oqg$wMY?!h3QrVj~tmphB9L>ZSiQ91K5u<^u%enU_j~;tpfV&G4S{wY3yI@Kbun`yfYv%^*j1lJf z1qgWm`XV}?ImJ&-0!#2kTvb%kSugD9e1;#Efb@7$dEz-l9L*NKlEr~=ey!9rjTf&b zzKV?m-JKLN#$-HAy0x&aqrkG{5DrS`EjouQ!@nl-o&W)T9cn zHnA2Bd1bzTG=KE|>4-8@dQrL%p8T3xuBoHWG}+o|GvgOfx&Zn+8Qjl5@#nC33sXh> zc-w7td3tiRxbN0OM-XC0>17@GzJ7i^0P16&zvQ8$)x>u`L*g{hN#1#8%aeK@6?l ze)Vc4N25M`MS{%FfbXl+fUe zA0%l-AK}8>T$H2;WCa)*5vg#UbT3=~7)`-{kVOR1WnCSc3fG|O3Njhl@v{Lb75p@$ z!#0kW)h+ewZVg9@v#6Bz1Gr=Cb09g~)u+ylZNSL4D*`YtWk z`U$g|TedmqrACaj#vHoF99reh-dC<%e^K>V87#)P00a$Il_dCyh)GH&tcNXhjK7(G ztkeno6Zj{dGss_M%V80pVi0ja<2EOa7ho;Szetl13~s-E2t z`ngl!?dsI#+s{Eoavm+t=Wbr8Tpv`SGH4iUtz8bVmpBegfB~!&(CY)K*_R2P>quX1 z&p4W0*^#!ku+Pr#<4Jinmo!=b5i$M%H3{2GiW~eKCo1(pmEBJO3}}0qv>2khT5r>@!Xv&HcV8tjp+fS~1UrdHJ!16llslX%+6j`e1o(zz#Rmh6yV5_bKBgxP zF5EyL7)>!8(eUKCe+d444+F9qZl7Xl$V-)mZ!14gxr*r6X==m(J*)&$n0@Jzvq_ds zr;_QLpj~jyRM!DZftt5&0~#Vcon*u;suJPN(c2S~O-&}*@b*CnKpFIcFhnfu1~&nz zX#OK`bS!Gp*MRB`g%|@Kj9wiAxQ7!4%TsJPl!1Xb1$=0oJUmF(2Tn#FtCbQmLlX?| zMPRyc(q4XXgk$YwzgaWYbfBoQLtG{Z}wuJReUr>_kC-BJSmJ%{f{KW~X>IBuM!M@Nvh%`hfZ&C>H zRp(jDfjiRX7PFQ(J)ap8w&5CrBG;)Pp=%u6m_3NvKImZ%-YNnW;MpVY0y+^ASEB+s zL>8YFxm93j5#$5$>JH)a`U>1_tl(l2VKe>k2eT*E?zI(*x&n?nhih(#0n@YsPM-$s z`s47zU}mmeCg$c^K}@))RC0&+#VUqv?+861ZvSE&&5nG;661hRk5VK^f%say(y z+A0
- 提示:版本记录耗时较长,请谨慎操作(仅记录当前维度的数据版本) -
主题:
{getLabel(547316, labelData)}
{getLabel(547317, labelData)}:
对不起,您暂时没有权限!
{getLabel(547515, labelData)}
- - 小提示 -
+ + {getLabel(547283, labelData)} +
?sa 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