Merge branch 'master' of http://121.41.2.71:3000/wyw/mh_jy_safe_web
This commit is contained in:
commit
5d4c895caa
@ -217,9 +217,18 @@ class BI001HomeDetail extends React.Component {
|
|||||||
};
|
};
|
||||||
//矿山
|
//矿山
|
||||||
chart1 = (mineType) => {
|
chart1 = (mineType) => {
|
||||||
let json = initFilter(this.props.login.OrgId, mineType);
|
// let json = initFilter(this.props.login.OrgId, mineType);
|
||||||
// extendRule(json, 'DEPARTMENT_NAME', 1, "矿山部");
|
// extendRule(json, 'DEPARTMENT_NAME', 1, "矿山部");
|
||||||
// extendOrder(json, "MONTH", 0);
|
// extendOrder(json, "MONTH", 0);
|
||||||
|
// let json = initFilter(this.props.login.OrgId);
|
||||||
|
let json = initFilter(
|
||||||
|
this.props.login.OrgId,
|
||||||
|
"",
|
||||||
|
"NUM",
|
||||||
|
"asc",
|
||||||
|
"",
|
||||||
|
8
|
||||||
|
);
|
||||||
this.props.dispatch({
|
this.props.dispatch({
|
||||||
type: "app/getDataByPost",
|
type: "app/getDataByPost",
|
||||||
url: "BI/BIStatiscialAnalysisController/GetClassCompletionSort",
|
url: "BI/BIStatiscialAnalysisController/GetClassCompletionSort",
|
||||||
|
|||||||
@ -311,9 +311,18 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
|
|
||||||
//获取数据
|
//获取数据
|
||||||
getBaseInfoData = () => {
|
getBaseInfoData = () => {
|
||||||
let json = initFilter(this.props.login.OrgId, "", "DEPARTMENT_NAME", "asc");
|
|
||||||
let startTime = this.state.selectStartTime.format("YYYY-MM-DD 00:00:00");
|
let startTime = this.state.selectStartTime.format("YYYY-MM-DD 00:00:00");
|
||||||
let endTime = this.state.selectEndTime.format("YYYY-MM-DD 23:59:59");
|
let endTime = this.state.selectEndTime.format("YYYY-MM-DD 23:59:59");
|
||||||
|
let json = initFilter(
|
||||||
|
this.props.login.OrgId,
|
||||||
|
"",
|
||||||
|
"DEPARTMENT_NAME",
|
||||||
|
"asc",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
startTime,
|
||||||
|
endTime
|
||||||
|
);
|
||||||
// 使用
|
// 使用
|
||||||
let span = this.getDiffDay(startTime, endTime);
|
let span = this.getDiffDay(startTime, endTime);
|
||||||
if (span <= 7) {
|
if (span <= 7) {
|
||||||
@ -329,12 +338,13 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
} else {
|
} else {
|
||||||
extendRule(json, "FILTER_TIME", 1, 0);
|
extendRule(json, "FILTER_TIME", 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// extendRule(json, "DEPARTMENT_NAME", 2, "宁化行洛坑钨矿有限公司");
|
// extendRule(json, "DEPARTMENT_NAME", 2, "宁化行洛坑钨矿有限公司");
|
||||||
// extendRule(json, "DEPARTMENT_NAME", 2, "都昌金鼎钨钼矿业有限公司");
|
// extendRule(json, "DEPARTMENT_NAME", 2, "都昌金鼎钨钼矿业有限公司");
|
||||||
// extendRule(json, "DEPARTMENT_NAME", 2, "技术管理部");
|
// extendRule(json, "DEPARTMENT_NAME", 2, "技术管理部");
|
||||||
this.props.dispatch({
|
this.props.dispatch({
|
||||||
type: "app/getDataByPost",
|
type: "app/getDataByPost",
|
||||||
url: "BI/SafetaskFinish/OrderEntities",
|
url: "BI/BIStatiscialAnalysisController/GetSafeEntities",
|
||||||
payload: json,
|
payload: json,
|
||||||
onlyData: false,
|
onlyData: false,
|
||||||
onComplete: (ret) => {
|
onComplete: (ret) => {
|
||||||
@ -346,11 +356,18 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
};
|
};
|
||||||
getCount = () => {
|
getCount = () => {
|
||||||
var orgId = this.props.login ? this.props.login.OrgId : "";
|
var orgId = this.props.login ? this.props.login.OrgId : "";
|
||||||
const jsonTemp = initFilter(orgId);
|
|
||||||
let startTime = this.state.selectStartTime.format("YYYY-MM-DD 00:00:00");
|
let startTime = this.state.selectStartTime.format("YYYY-MM-DD 00:00:00");
|
||||||
let endTime = this.state.selectEndTime.format("YYYY-MM-DD 23:59:59");
|
let endTime = this.state.selectEndTime.format("YYYY-MM-DD 23:59:59");
|
||||||
extendRule(jsonTemp, "CREATE_TIME", 6, startTime);
|
const jsonTemp = initFilter(orgId ,"",
|
||||||
extendRule(jsonTemp, "CREATE_TIME", 4, endTime);
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
startTime,
|
||||||
|
endTime);
|
||||||
|
// extendRule(jsonTemp, "CREATE_TIME", 6, startTime);
|
||||||
|
// extendRule(jsonTemp, "CREATE_TIME", 4, endTime);
|
||||||
this.props.dispatch({
|
this.props.dispatch({
|
||||||
type: "app/getDataByPost",
|
type: "app/getDataByPost",
|
||||||
payload: jsonTemp,
|
payload: jsonTemp,
|
||||||
@ -404,7 +421,7 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
data: [
|
data: [
|
||||||
{
|
{
|
||||||
//上层圆环,显示数据
|
//上层圆环,显示数据
|
||||||
value: 95,
|
value: ret.shiftMeetingFinishRate,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: "#1598FF",
|
color: "#1598FF",
|
||||||
},
|
},
|
||||||
@ -467,7 +484,7 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
},
|
},
|
||||||
detail: {
|
detail: {
|
||||||
formatter: function (params) {
|
formatter: function (params) {
|
||||||
return 95 + "%";
|
return ret.shiftMeetingFinishRate + "%";
|
||||||
},
|
},
|
||||||
color: "#1598FF",
|
color: "#1598FF",
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
@ -478,7 +495,7 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
},
|
},
|
||||||
data: [
|
data: [
|
||||||
{
|
{
|
||||||
value: 95,
|
value: ret.shiftMeetingFinishRate,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -633,7 +650,7 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
data: [
|
data: [
|
||||||
{
|
{
|
||||||
//上层圆环,显示数据
|
//上层圆环,显示数据
|
||||||
value: 97,
|
value: ret.postFinishRate,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: "#f8a035",
|
color: "#f8a035",
|
||||||
},
|
},
|
||||||
@ -696,7 +713,7 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
},
|
},
|
||||||
detail: {
|
detail: {
|
||||||
formatter: function (params) {
|
formatter: function (params) {
|
||||||
return 97 + "%";
|
return ret.postFinishRate + "%";
|
||||||
},
|
},
|
||||||
color: "#f8a035",
|
color: "#f8a035",
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
@ -707,7 +724,7 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
},
|
},
|
||||||
data: [
|
data: [
|
||||||
{
|
{
|
||||||
value: 97,
|
value: ret.postFinishRate,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -862,7 +879,7 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
data: [
|
data: [
|
||||||
{
|
{
|
||||||
//上层圆环,显示数据
|
//上层圆环,显示数据
|
||||||
value: 99,
|
value: ret.postChangeFinishRate,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: "#f1516d",
|
color: "#f1516d",
|
||||||
},
|
},
|
||||||
@ -925,7 +942,7 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
},
|
},
|
||||||
detail: {
|
detail: {
|
||||||
formatter: function (params) {
|
formatter: function (params) {
|
||||||
return 99 + "%";
|
return ret.postChangeFinishRate + "%";
|
||||||
},
|
},
|
||||||
color: "#f1516d",
|
color: "#f1516d",
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
@ -936,7 +953,7 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
},
|
},
|
||||||
data: [
|
data: [
|
||||||
{
|
{
|
||||||
value: 99,
|
value: ret.postChangeFinishRate,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -1063,8 +1080,8 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
let json = initFilter(
|
let json = initFilter(
|
||||||
this.props.login.OrgId,
|
this.props.login.OrgId,
|
||||||
"10",
|
"10",
|
||||||
"NUM",
|
"",
|
||||||
"asc",
|
"",
|
||||||
"",
|
"",
|
||||||
8,
|
8,
|
||||||
startTime,
|
startTime,
|
||||||
@ -1226,8 +1243,8 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
let json = initFilter(
|
let json = initFilter(
|
||||||
this.props.login.OrgId,
|
this.props.login.OrgId,
|
||||||
"30",
|
"30",
|
||||||
"NUM",
|
"",
|
||||||
"asc",
|
"",
|
||||||
"",
|
"",
|
||||||
8,
|
8,
|
||||||
startTime,
|
startTime,
|
||||||
@ -1385,11 +1402,18 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
};
|
};
|
||||||
//关键许可工作票(饼图)
|
//关键许可工作票(饼图)
|
||||||
mainJobPie2 = () => {
|
mainJobPie2 = () => {
|
||||||
let json = initFilter(this.props.login.OrgId);
|
|
||||||
let startTime = this.state.selectStartTime.format("YYYY-MM-DD 00:00:00");
|
let startTime = this.state.selectStartTime.format("YYYY-MM-DD 00:00:00");
|
||||||
let endTime = this.state.selectEndTime.format("YYYY-MM-DD 23:59:59");
|
let endTime = this.state.selectEndTime.format("YYYY-MM-DD 23:59:59");
|
||||||
extendRule(json, "CREATE_TIME", 6, startTime);
|
// extendRule(json, "CREATE_TIME", 6, startTime);
|
||||||
extendRule(json, "CREATE_TIME", 4, endTime);
|
// extendRule(json, "CREATE_TIME", 4, endTime);
|
||||||
|
let json = initFilter(this.props.login.OrgId, "",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
startTime,
|
||||||
|
endTime);
|
||||||
this.props.dispatch({
|
this.props.dispatch({
|
||||||
type: "app/getDataByPost",
|
type: "app/getDataByPost",
|
||||||
url: "BI/BIStatiscialAnalysisController/GetLicenseJob",
|
url: "BI/BIStatiscialAnalysisController/GetLicenseJob",
|
||||||
@ -1399,7 +1423,7 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
if (data && data.IsSuccessful) {
|
if (data && data.IsSuccessful) {
|
||||||
let riskLevel = [];
|
let riskLevel = [];
|
||||||
let showData = [];
|
let showData = [];
|
||||||
let color = ["#C00000", "#FFC000", "#006600", "#00B0F0", "#00B0C0"];
|
let color = ["#C00000", "#FFC000", "#006600", "#00B0F0", "#00B0C0", "#8FBC8F", "#778899"];
|
||||||
let numAll = 0;
|
let numAll = 0;
|
||||||
data.Data.forEach((item) => {
|
data.Data.forEach((item) => {
|
||||||
riskLevel.push(item.RISK_LEVEL);
|
riskLevel.push(item.RISK_LEVEL);
|
||||||
@ -1489,9 +1513,9 @@ class BI009FormRunAnalysis extends React.Component {
|
|||||||
//图形样式
|
//图形样式
|
||||||
normal: {
|
normal: {
|
||||||
borderColor: "#ffffff",
|
borderColor: "#ffffff",
|
||||||
borderWidth: 4,
|
borderWidth: 0,//1
|
||||||
padding: "0 20px",
|
padding: "0 20px",
|
||||||
borderRadius: 50,
|
borderRadius: 0,//8
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
label: {
|
label: {
|
||||||
|
|||||||
@ -54,6 +54,7 @@ class BI012FormRunAnalysis extends React.Component {
|
|||||||
yearColor: "black",
|
yearColor: "black",
|
||||||
retData: [],
|
retData: [],
|
||||||
departData:[],
|
departData:[],
|
||||||
|
selectDeptName: this.props.login.user?.Nav_Department?.NAME || '',
|
||||||
DEPARTMENT_ID:null,
|
DEPARTMENT_ID:null,
|
||||||
displayHr: "none",
|
displayHr: "none",
|
||||||
displaydetail: "none",
|
displaydetail: "none",
|
||||||
@ -236,6 +237,7 @@ class BI012FormRunAnalysis extends React.Component {
|
|||||||
Nav_Department: { NAME: departData.record.NAME }
|
Nav_Department: { NAME: departData.record.NAME }
|
||||||
},
|
},
|
||||||
DEPARTMENT_ID: departData.data[0],
|
DEPARTMENT_ID: departData.data[0],
|
||||||
|
selectDeptName: departData.record.NAME
|
||||||
})
|
})
|
||||||
if(!this.state.inputText)
|
if(!this.state.inputText)
|
||||||
{
|
{
|
||||||
@ -250,6 +252,7 @@ class BI012FormRunAnalysis extends React.Component {
|
|||||||
Nav_Department: { NAME: null },
|
Nav_Department: { NAME: null },
|
||||||
},
|
},
|
||||||
DEPARTMENT_ID: null,
|
DEPARTMENT_ID: null,
|
||||||
|
selectDeptName: ""
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -573,7 +576,10 @@ class BI012FormRunAnalysis extends React.Component {
|
|||||||
>
|
>
|
||||||
<b>选择部门:</b>
|
<b>选择部门:</b>
|
||||||
<DropDownPagination inputDataApi={'FM/Department/OrderPaged'} fieldName={'Nav_Department.NAME'}
|
<DropDownPagination inputDataApi={'FM/Department/OrderPaged'} fieldName={'Nav_Department.NAME'}
|
||||||
data={this.state.departData} onSelect={this.onSelectDepartment} onFilter={({ params }) => {
|
data={this.state.departData} onSelect={this.onSelectDepartment} value = {this.state.selectDeptName}
|
||||||
|
allowClear={true} // 【关键】开启清除按钮
|
||||||
|
showSearch={true} // 可选:支持输入框编辑搜索
|
||||||
|
onFilter={({ params }) => {
|
||||||
params.OrderType = 1
|
params.OrderType = 1
|
||||||
params.OrgId = this.state.departData ? this.state.departData.ORG_ID : this.props.login.OrgId
|
params.OrgId = this.state.departData ? this.state.departData.ORG_ID : this.props.login.OrgId
|
||||||
// extendRule(params, 'DEPARTMENT_TYPE', 1, 0)
|
// extendRule(params, 'DEPARTMENT_TYPE', 1, 0)
|
||||||
@ -592,7 +598,7 @@ class BI012FormRunAnalysis extends React.Component {
|
|||||||
<Input
|
<Input
|
||||||
onChange={this.handleSearch}
|
onChange={this.handleSearch}
|
||||||
style={{ width: "150px" }}
|
style={{ width: "150px" }}
|
||||||
defaultValue={this.props.login.user.NAME}
|
defaultValue={this.props.login.user?.NAME}
|
||||||
></Input>
|
></Input>
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
@ -777,7 +783,7 @@ class BI012FormRunAnalysis extends React.Component {
|
|||||||
// scroll={{ y: 400 }}
|
// scroll={{ y: 400 }}
|
||||||
dataSource={this.state.retData}
|
dataSource={this.state.retData}
|
||||||
columns={this.state.detailcolumns}
|
columns={this.state.detailcolumns}
|
||||||
pagination={true}
|
pagination={false}
|
||||||
loading={false}
|
loading={false}
|
||||||
size="small"
|
size="small"
|
||||||
bordered
|
bordered
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import React from 'react'
|
import React from 'react';
|
||||||
import { connect } from 'dva'
|
import { connect } from 'dva';
|
||||||
import { initFilter, extendRule, extendInclude, getIsPC, openNotificationMobile } from "../../../utils/common"
|
import { initFilter, extendRule, extendInclude, getIsPC, openNotificationMobile } from '../../../utils/common';
|
||||||
import { ChartBarShow_Vertical, LineShow } from "../../../utils/commonEcharsShow"
|
import { ChartBarShow_Vertical, LineShow } from '../../../utils/commonEcharsShow';
|
||||||
import { notification, Button, Descriptions, Table, Row, Col } from 'antd';
|
import { notification, Button, Descriptions, Table, Row, Col } from 'antd';
|
||||||
import echarts from 'echarts';
|
import echarts from 'echarts';
|
||||||
import styles from '../HI/StepForm.css';
|
import styles from '../HI/StepForm.css';
|
||||||
@ -13,7 +13,6 @@ const formItemLayout = {
|
|||||||
|
|
||||||
// 安全检查次数统计明细(首页)
|
// 安全检查次数统计明细(首页)
|
||||||
class BI054HomeDetail extends React.Component {
|
class BI054HomeDetail extends React.Component {
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
this.state = {
|
this.state = {
|
||||||
@ -23,40 +22,46 @@ class BI054HomeDetail extends React.Component {
|
|||||||
ListSafeCheckCountDepartment: [],
|
ListSafeCheckCountDepartment: [],
|
||||||
countTypeTitle: [],
|
countTypeTitle: [],
|
||||||
columnsTb: [],
|
columnsTb: [],
|
||||||
|
tableData: [],
|
||||||
showLoading: false,
|
showLoading: false,
|
||||||
},
|
},
|
||||||
// listSafeCheckTypeYear: [],
|
|
||||||
// listCheckTypeYear: [],
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
componenthidMount() {
|
componenthidMount() {
|
||||||
if (!getIsPC()) {
|
if (!getIsPC()) {
|
||||||
openNotificationMobile('bottomRight', notification)
|
openNotificationMobile('bottomRight', notification);
|
||||||
this.state.displayStr = 'none';
|
this.state.displayStr = 'none';
|
||||||
this.state.displayNum = 24;
|
this.state.displayNum = 24;
|
||||||
//alert('手机');
|
|
||||||
} else {
|
} else {
|
||||||
this.state.displayStr = '';
|
this.state.displayStr = '';
|
||||||
this.state.displayNum = 16;
|
this.state.displayNum = 16;
|
||||||
//alert('PC');
|
|
||||||
}
|
}
|
||||||
this.loadData()
|
this.loadData();
|
||||||
//定时器功能,暂时不开启
|
}
|
||||||
// this.timerID = setInterval(() => this.getBaseInfoData(1, this.state.tableKey, 5), 120000);
|
|
||||||
};
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
this.loadData()
|
this.loadData();
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
// this.timerID && clearTimeout(this.timerID);
|
// this.timerID && clearTimeout(this.timerID);
|
||||||
}
|
}
|
||||||
|
|
||||||
//加载数据赋值
|
//加载数据赋值
|
||||||
loadData = () => {
|
loadData = () => {
|
||||||
this.state.showLoading = true;
|
this.setState((prevState) => ({
|
||||||
// let json = initFilter(this.props.login.OrgId, this.props.data.mineType, "NUM");
|
data: {
|
||||||
let json = initFilter(this.props.login.OrgId, (this.props.data?.mineType == null ? this.props.formParam?.mineType : this.props.data?.mineType), "NUM");
|
...prevState.data,
|
||||||
|
showLoading: true,
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
|
let json = initFilter(
|
||||||
|
this.props.login.OrgId,
|
||||||
|
this.props.data?.mineType == null ? this.props.formParam?.mineType : this.props.data?.mineType,
|
||||||
|
'NUM'
|
||||||
|
);
|
||||||
|
|
||||||
this.props.dispatch({
|
this.props.dispatch({
|
||||||
type: 'app/getDataByPost',
|
type: 'app/getDataByPost',
|
||||||
@ -64,130 +69,188 @@ class BI054HomeDetail extends React.Component {
|
|||||||
url: 'BI/BIHome/GetHomeDetailMonthCheckType',
|
url: 'BI/BIHome/GetHomeDetailMonthCheckType',
|
||||||
onComplete: (result) => {
|
onComplete: (result) => {
|
||||||
if (result) {
|
if (result) {
|
||||||
// let listName = []
|
|
||||||
if (result.ListSafeCheckCountDepartment != null && result.ListSafeCheckCountDepartment.length > 0) {
|
if (result.ListSafeCheckCountDepartment != null && result.ListSafeCheckCountDepartment.length > 0) {
|
||||||
// listName.push('车间名称')
|
const rawData = result.ListSafeCheckCountDepartment;
|
||||||
// result.ListSafeCheckCountDepartment[0].listName.forEach((e, i) => {
|
|
||||||
// listName.push(e)
|
|
||||||
// })
|
|
||||||
|
|
||||||
// listName.push('班组名称')
|
// 1. 提取 listName 作为列标题
|
||||||
// result.ListSafeCheckCountDepartment[0].listChild[0].listName.forEach(e => {
|
let countTypeTitle = rawData[0]?.listName || ['计划检查次数', '实际检查次数'];
|
||||||
// listName.push(e)
|
|
||||||
// })
|
|
||||||
|
|
||||||
var countTypeTitle = []
|
// 2. 构建层级数据:提取父级部门(去重)和对应的子级
|
||||||
var columnsTb = []
|
const parentMap = new Map();
|
||||||
if (result.ListSafeCheckCountDepartment != null && result.ListSafeCheckCountDepartment.length > 0) {
|
const childMap = new Map();
|
||||||
countTypeTitle = result.ListSafeCheckCountDepartment[0].listName
|
|
||||||
|
rawData.forEach((item) => {
|
||||||
|
if (item.Parent) {
|
||||||
|
// 有 Parent 的是子级
|
||||||
|
const parentKey = item.Parent.Department_ID;
|
||||||
|
if (!parentMap.has(parentKey)) {
|
||||||
|
parentMap.set(parentKey, {
|
||||||
|
DepartmentName: item.Parent.DepartmentName,
|
||||||
|
Department_ID: parentKey,
|
||||||
|
RowCount: item.Parent.RowCount || 1,
|
||||||
|
listCount: item.Parent.listCount || [],
|
||||||
|
children: [],
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
// 子级记录(去重)
|
||||||
if (countTypeTitle.length < 1) {
|
if (!childMap.has(item.Department_ID)) {
|
||||||
countTypeTitle.push('巡回检查')
|
childMap.set(item.Department_ID, {
|
||||||
countTypeTitle.push('例行检查')
|
DepartmentName: item.DepartmentName,
|
||||||
countTypeTitle.push('专业检查')
|
Department_ID: item.Department_ID,
|
||||||
countTypeTitle.push('综合检查')
|
listCount: item.listCount || [],
|
||||||
|
Parent: item.Parent,
|
||||||
|
});
|
||||||
|
parentMap.get(parentKey).children.push(childMap.get(item.Department_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
var typeName = ['部门名称', '车间/班组']
|
|
||||||
var RowCount = 0
|
|
||||||
|
|
||||||
for (let i = 0; i < 2; i++) {
|
|
||||||
for (let j = 0; j < countTypeTitle.length; j++) {
|
|
||||||
if (i == 0) {
|
|
||||||
if (j == 0) {
|
|
||||||
//头部
|
|
||||||
columnsTb.push({
|
|
||||||
title: typeName[i],
|
|
||||||
dataIndex: "NUM",
|
|
||||||
key: (i * 10 + j),
|
|
||||||
render: (value, record, index) => {
|
|
||||||
RowCount = record.Parent?record.Parent.RowCount:0
|
|
||||||
if (index > 0 && result.ListSafeCheckCountDepartment[index - 1].Parent?.DepartmentName == record.Parent?.DepartmentName) {
|
|
||||||
RowCount = 0
|
|
||||||
}
|
|
||||||
const obj = {
|
|
||||||
children: record.Parent?record.Parent.DepartmentName:record.DepartmentName,
|
|
||||||
props: {
|
|
||||||
'rowSpan': RowCount
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
//非头部
|
|
||||||
|
|
||||||
columnsTb.push({
|
|
||||||
title: countTypeTitle[j],
|
|
||||||
dataIndex: "NUM",
|
|
||||||
key: (i * 10 + j),
|
|
||||||
render: (value, record, index) => {
|
|
||||||
RowCount = record.Parent?record.Parent.RowCount:0
|
|
||||||
if (index > 0 && result.ListSafeCheckCountDepartment[index - 1].Parent?.DepartmentName == record.Parent?.DepartmentName) {
|
|
||||||
RowCount = 0
|
|
||||||
}
|
|
||||||
const obj = {
|
|
||||||
children: record.Parent?record.Parent.listCount[j]:record.DepartmentName,
|
|
||||||
props: {
|
|
||||||
'rowSpan': RowCount
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//班组
|
// 没有 Parent 的是顶级部门(去重)
|
||||||
if (j == 0) {
|
const parentKey = item.Department_ID;
|
||||||
columnsTb.push({
|
if (!parentMap.has(parentKey)) {
|
||||||
title: typeName[i],
|
parentMap.set(parentKey, {
|
||||||
key: (i * 10 + j),
|
DepartmentName: item.DepartmentName,
|
||||||
render: (value, record, index) => {
|
Department_ID: parentKey,
|
||||||
const obj = {
|
RowCount: item.RowCount || 1,
|
||||||
children: record.DepartmentName,
|
listCount: item.listCount || [],
|
||||||
};
|
children: item.listChild || [],
|
||||||
return obj;
|
});
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
columnsTb.push({
|
// 转换为数组
|
||||||
title: countTypeTitle[j],
|
const parentList = Array.from(parentMap.values());
|
||||||
key: (i * 10 + j),
|
|
||||||
render: (value, record, index) => {
|
|
||||||
const obj = {
|
|
||||||
children: record.listCount[j],
|
|
||||||
};
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
// 3. 构建表格数据源(扁平化结构,用于 Antd Table)
|
||||||
|
const tableData = [];
|
||||||
|
parentList.forEach((parent, parentIndex) => {
|
||||||
|
if (parent.children && parent.children.length > 0) {
|
||||||
|
// 有子级:为每个子级创建一行,父级信息通过 rowSpan 合并
|
||||||
|
parent.children.forEach((child, index) => {
|
||||||
|
tableData.push({
|
||||||
|
key: child.Department_ID || `${parent.Department_ID}-${index}`,
|
||||||
|
// 父级信息(用于 rowSpan 合并)
|
||||||
|
parentName: parent.DepartmentName,
|
||||||
|
parentCount: parent.listCount || [],
|
||||||
|
parentRowSpan: index === 0 ? parent.children.length : 0,
|
||||||
|
// 子级信息
|
||||||
|
childName: child.DepartmentName,
|
||||||
|
childCount: child.listCount || [],
|
||||||
|
// 标记是否为子级行
|
||||||
|
isChild: true,
|
||||||
|
// 原始父级引用
|
||||||
|
parentRef: parent,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// 无子级:单独一行,车间/班组列显示 --
|
||||||
|
tableData.push({
|
||||||
|
key: parent.Department_ID || `parent-${parentIndex}`,
|
||||||
|
parentName: parent.DepartmentName,
|
||||||
|
parentCount: parent.listCount || [],
|
||||||
|
parentRowSpan: 1,
|
||||||
|
childName: '--',
|
||||||
|
childCount: ['--', '--'],
|
||||||
|
isChild: false,
|
||||||
|
parentRef: parent,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
}
|
|
||||||
|
|
||||||
|
// 4. 构建 Antd Table 列
|
||||||
|
const columnsTb = [
|
||||||
|
{
|
||||||
|
title: '部门名称',
|
||||||
|
dataIndex: 'parentName',
|
||||||
|
key: 'department',
|
||||||
|
width: 120,
|
||||||
|
render: (text, record) => ({
|
||||||
|
children: text,
|
||||||
|
props: {
|
||||||
|
rowSpan: record.parentRowSpan || 0,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: countTypeTitle[0] || '计划检查次数',
|
||||||
|
dataIndex: 'parentCount',
|
||||||
|
key: 'parentCount1',
|
||||||
|
width: 100,
|
||||||
|
render: (counts, record) => ({
|
||||||
|
children: counts && counts.length > 0 ? counts[0] : '--',
|
||||||
|
props: {
|
||||||
|
rowSpan: record.parentRowSpan || 0,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: countTypeTitle[1] || '实际检查次数',
|
||||||
|
dataIndex: 'parentCount',
|
||||||
|
key: 'parentCount2',
|
||||||
|
width: 100,
|
||||||
|
render: (counts, record) => ({
|
||||||
|
children: counts && counts.length > 1 ? counts[1] : '--',
|
||||||
|
props: {
|
||||||
|
rowSpan: record.parentRowSpan || 0,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '车间/班组',
|
||||||
|
dataIndex: 'childName',
|
||||||
|
key: 'workshop',
|
||||||
|
width: 120,
|
||||||
|
render: (text) => text || '--',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: countTypeTitle[0] || '计划检查次数',
|
||||||
|
dataIndex: 'childCount',
|
||||||
|
key: 'childCount1',
|
||||||
|
width: 100,
|
||||||
|
render: (counts) => (counts && counts.length > 0 ? counts[0] : '--'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: countTypeTitle[1] || '实际检查次数',
|
||||||
|
dataIndex: 'childCount',
|
||||||
|
key: 'childCount2',
|
||||||
|
width: 100,
|
||||||
|
render: (counts) => (counts && counts.length > 1 ? counts[1] : '--'),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
// 5. 更新 state
|
||||||
this.setState({
|
this.setState({
|
||||||
data: {
|
data: {
|
||||||
|
...this.state.data,
|
||||||
countTypeTitle: countTypeTitle,
|
countTypeTitle: countTypeTitle,
|
||||||
columnsTb: columnsTb,
|
columnsTb: columnsTb,
|
||||||
// listName: listName,
|
tableData: tableData,
|
||||||
ListSafeCheckYearMonth: result.ListSafeCheckYearMonth,
|
ListSafeCheckYearMonth: result.ListSafeCheckYearMonth,
|
||||||
ListSafeCheckCountDepartment: result.ListSafeCheckCountDepartment,//车间 子集是 班组
|
ListSafeCheckCountDepartment: result.ListSafeCheckCountDepartment,
|
||||||
}
|
showLoading: false,
|
||||||
})
|
},
|
||||||
this.hiddenDangerTotal()
|
});
|
||||||
}
|
|
||||||
|
|
||||||
|
this.hiddenDangerTotal();
|
||||||
|
} else {
|
||||||
|
this.setState((prevState) => ({
|
||||||
|
data: {
|
||||||
|
...prevState.data,
|
||||||
|
showLoading: false,
|
||||||
|
tableData: [],
|
||||||
|
},
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
this.setState((prevState) => ({
|
||||||
|
data: {
|
||||||
|
...prevState.data,
|
||||||
|
showLoading: false,
|
||||||
|
},
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
})
|
},
|
||||||
|
});
|
||||||
this.state.showLoading = false;
|
};
|
||||||
}
|
|
||||||
|
|
||||||
hiddenDangerTotal = () => {
|
hiddenDangerTotal = () => {
|
||||||
if (this.state.data.ListSafeCheckYearMonth) {
|
if (this.state.data.ListSafeCheckYearMonth) {
|
||||||
@ -221,47 +284,46 @@ class BI054HomeDetail extends React.Component {
|
|||||||
for (let i = 0; i < data3.length; i++) {
|
for (let i = 0; i < data3.length; i++) {
|
||||||
series.push({
|
series.push({
|
||||||
name: seriesName[i],
|
name: seriesName[i],
|
||||||
type: "bar",
|
type: 'bar',
|
||||||
stack: "总量",
|
stack: '总量',
|
||||||
data: data3[i],
|
data: data3[i],
|
||||||
barWidth: "40%",
|
barWidth: '40%',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//图标2
|
//图标2
|
||||||
let dangerTotals = document.getElementById("dangerTotal2");
|
let dangerTotals = document.getElementById('dangerTotal2');
|
||||||
|
|
||||||
if (dangerTotals) {
|
if (dangerTotals) {
|
||||||
let myChart = echarts.init(dangerTotals);
|
let myChart = echarts.init(dangerTotals);
|
||||||
myChart.setOption({
|
myChart.setOption({
|
||||||
color: ["#4285F4", "#72b85b", "#c92a2a", "#ffa94d"],
|
color: ['#4285F4', '#72b85b', '#c92a2a', '#ffa94d'],
|
||||||
tooltip: {
|
tooltip: {
|
||||||
trigger: "axis",
|
trigger: 'axis',
|
||||||
axisPointer: {
|
axisPointer: {
|
||||||
// 坐标轴指示器,坐标轴触发有效
|
type: 'shadow',
|
||||||
type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
|
|
||||||
},
|
},
|
||||||
transitionDuration: 0,
|
transitionDuration: 0,
|
||||||
},
|
},
|
||||||
grid: {
|
grid: {
|
||||||
left: "5%",
|
left: '5%',
|
||||||
right: "5%",
|
right: '5%',
|
||||||
bottom: "15%",
|
bottom: '15%',
|
||||||
top: "5%",
|
top: '5%',
|
||||||
containLabel: true,
|
containLabel: true,
|
||||||
z: 22,
|
z: 22,
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
type: "category",
|
type: 'category',
|
||||||
data: xData,
|
data: xData,
|
||||||
axisLine: {
|
axisLine: {
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: "#0c3b71",
|
color: '#0c3b71',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
show: true,
|
show: true,
|
||||||
color: "rgb(170,170,170)",
|
color: 'rgb(170,170,170)',
|
||||||
interval: 0,
|
interval: 0,
|
||||||
textStyle: {
|
textStyle: {
|
||||||
lineHeight: 14,
|
lineHeight: 14,
|
||||||
@ -270,32 +332,31 @@ class BI054HomeDetail extends React.Component {
|
|||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
data: seriesName,
|
data: seriesName,
|
||||||
left: "center",
|
left: 'center',
|
||||||
align: "left",
|
align: 'left',
|
||||||
bottom: "2%",
|
bottom: '2%',
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: "#000",
|
color: '#000',
|
||||||
},
|
},
|
||||||
itemWidth: 10,
|
itemWidth: 10,
|
||||||
itemHeight: 10,
|
itemHeight: 10,
|
||||||
// itemGap: 15,
|
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
type: "value",
|
type: 'value',
|
||||||
splitLine: {
|
splitLine: {
|
||||||
show: true,
|
show: true,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: ["#f2f2f2"],
|
color: ['#f2f2f2'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
axisLine: {
|
axisLine: {
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: "#0c3b71",
|
color: '#0c3b71',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: "rgb(170,170,170)",
|
color: 'rgb(170,170,170)',
|
||||||
formatter: "{value} ",
|
formatter: '{value} ',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
series: series,
|
series: series,
|
||||||
@ -306,92 +367,51 @@ class BI054HomeDetail extends React.Component {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { data } = this.state;
|
const { data } = this.state;
|
||||||
return <div style={{
|
return (
|
||||||
backgroundColor: "white", width: "1200px", top: "0", bottom: "0", left: "0", right: "0", margin: "auto", borderStyle: "solid", borderColor: "#ccc", borderWidth: "1px"
|
<div
|
||||||
}} >
|
style={{
|
||||||
<Row gutter={10} style={{ marginTop: "44px" }}>
|
backgroundColor: 'white',
|
||||||
|
width: '1200px',
|
||||||
|
top: '0',
|
||||||
|
bottom: '0',
|
||||||
|
left: '0',
|
||||||
|
right: '0',
|
||||||
|
margin: 'auto',
|
||||||
|
borderStyle: 'solid',
|
||||||
|
borderColor: '#ccc',
|
||||||
|
borderWidth: '1px',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Row gutter={10} style={{ marginTop: '44px' }}>
|
||||||
<Col span={1}> </Col>
|
<Col span={1}> </Col>
|
||||||
<Col span={22}>
|
<Col span={22}>
|
||||||
<div style={{ border: "1px solid rgb(232,232,232)" }} >
|
<div style={{ border: '1px solid rgb(232,232,232)' }}>
|
||||||
<div id="dangerTotal2" style={{ width: "100%", height: "350px" }}></div>
|
<div id="dangerTotal2" style={{ width: '100%', height: '350px' }}></div>
|
||||||
</div>
|
</div>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={1}></Col>
|
<Col span={1}></Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
|
||||||
<Row gutter={10} style={{ marginTop: "14px" }}>
|
<Row gutter={10} style={{ marginTop: '14px' }}>
|
||||||
<Col span={1}></Col>
|
<Col span={1}></Col>
|
||||||
<Col span={22} style={{ height: "100%" }}>
|
<Col span={22} style={{ height: '100%' }}>
|
||||||
|
|
||||||
<div className="bi001-table">
|
<div className="bi001-table">
|
||||||
<Table dataSource={this.state.data.ListSafeCheckCountDepartment} columns={this.state.data.columnsTb} pagination={false} bordered loading={this.state.data.showLoading} size="small" rowKey="1" />
|
<Table
|
||||||
|
dataSource={data.tableData || []}
|
||||||
|
columns={data.columnsTb}
|
||||||
|
pagination={false}
|
||||||
|
bordered
|
||||||
|
loading={data.showLoading}
|
||||||
|
size="small"
|
||||||
|
rowKey="key"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* <div style={{ display: "flex", alignItems: "center", justifyContent: "center" }} >
|
|
||||||
<table className={styles.tableRow} style={{ width: '100%', marginLeft: '0px' }}>
|
|
||||||
<tbody>
|
|
||||||
{
|
|
||||||
data.listName ? (
|
|
||||||
<tr>
|
|
||||||
{
|
|
||||||
data.listName.map(e => {
|
|
||||||
return <th>{e}</th>
|
|
||||||
})
|
|
||||||
}
|
|
||||||
</tr>)
|
|
||||||
: (<tr> <th>车间名称</th><th>巡回检查</th><th>例行检查</th> <th>专业检查</th><th>综合检查</th><th>班组名称</th><th>巡回检查</th><th>例行检查</th><th>专业检查</th><th>综合检查</th></tr>)
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
data.ListSafeCheckCountDepartment ?
|
|
||||||
data.ListSafeCheckCountDepartment.map((e) => {
|
|
||||||
return e.listChild?.map((c, i) => {
|
|
||||||
if (i == 0) {
|
|
||||||
return (
|
|
||||||
<tr>
|
|
||||||
<td rowspan={e.RowCount} >{e.DepartmentName}</td>
|
|
||||||
{
|
|
||||||
e.listCount?.map(c => {
|
|
||||||
return <td rowspan={e.RowCount}>{c}</td>
|
|
||||||
})
|
|
||||||
}
|
|
||||||
<td>{c.DepartmentName}</td>
|
|
||||||
{
|
|
||||||
c.listCount?.map(k => {
|
|
||||||
return <td>{k}</td>
|
|
||||||
})
|
|
||||||
}
|
|
||||||
</tr>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return (
|
|
||||||
<tr>
|
|
||||||
<td>{c.DepartmentName}</td>
|
|
||||||
{
|
|
||||||
c.listCount?.map(k => {
|
|
||||||
return <td>{k}</td>
|
|
||||||
})
|
|
||||||
}
|
|
||||||
</tr>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}) : (
|
|
||||||
<tr>
|
|
||||||
<td colSpan={10}>暂无数据</td>
|
|
||||||
</tr>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div> */}
|
|
||||||
|
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={1}></Col>
|
<Col span={1}></Col>
|
||||||
</Row>
|
</Row>
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export default connect(({ login, app }) => ({ login, app }))(BI054HomeDetail)
|
export default connect(({ login, app }) => ({ login, app }))(BI054HomeDetail);
|
||||||
|
|||||||
@ -127,6 +127,8 @@ getEndDate=()=>{
|
|||||||
this.getBaseData();
|
this.getBaseData();
|
||||||
};
|
};
|
||||||
handleSearch = ({ data, record }) => {
|
handleSearch = ({ data, record }) => {
|
||||||
|
if(record)
|
||||||
|
{
|
||||||
this.setState({
|
this.setState({
|
||||||
depart: {
|
depart: {
|
||||||
...this.state.depart,
|
...this.state.depart,
|
||||||
@ -135,6 +137,18 @@ getEndDate=()=>{
|
|||||||
},
|
},
|
||||||
inputText: record ? record?.NAME : this.state.inputText,
|
inputText: record ? record?.NAME : this.state.inputText,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.setState({
|
||||||
|
depart: {
|
||||||
|
...this.state.depart,
|
||||||
|
ID: null,
|
||||||
|
NAME: "",
|
||||||
|
},
|
||||||
|
inputText:"",
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
handleSearch2 = (value) => {
|
handleSearch2 = (value) => {
|
||||||
let temps = ['安全风险辨识与评估计划','安全风险辨识表', '安全风险辨识结果表', '安全风险辨识结果汇总表', '安全风险评估表',
|
let temps = ['安全风险辨识与评估计划','安全风险辨识表', '安全风险辨识结果表', '安全风险辨识结果汇总表', '安全风险评估表',
|
||||||
@ -612,7 +626,10 @@ getEndDate=()=>{
|
|||||||
inputDataApi={'FM/Organization/OrderPaged'}
|
inputDataApi={'FM/Organization/OrderPaged'}
|
||||||
fieldName={'NAME'}
|
fieldName={'NAME'}
|
||||||
data={this.state.depart}
|
data={this.state.depart}
|
||||||
|
value = {this.state.inputText}
|
||||||
onSelect={this.handleSearch}
|
onSelect={this.handleSearch}
|
||||||
|
allowClear={true} // 【关键】开启清除按钮
|
||||||
|
showSearch={true} // 可选:支持输入框编辑搜索
|
||||||
onFilter={({ params }) => {
|
onFilter={({ params }) => {
|
||||||
params.OrderType = 1;
|
params.OrderType = 1;
|
||||||
params.OrgId = this.props.login.OrgId;
|
params.OrgId = this.props.login.OrgId;
|
||||||
|
|||||||
@ -1348,7 +1348,7 @@ class Home extends React.Component {
|
|||||||
} else if (formCode == 'BI055_HOMEDETAIL') {
|
} else if (formCode == 'BI055_HOMEDETAIL') {
|
||||||
titleTemp += '月度隐患整改情况(近12月)';
|
titleTemp += '月度隐患整改情况(近12月)';
|
||||||
} else if (formCode == 'BI001_HOMEDETAIL') {
|
} else if (formCode == 'BI001_HOMEDETAIL') {
|
||||||
titleTemp += '班组活动任务完成详情(近12月)';
|
titleTemp += '班组活动任务完成详情(近半年)';
|
||||||
} else if (formCode == 'BI002_HOMEDETAIL') {
|
} else if (formCode == 'BI002_HOMEDETAIL') {
|
||||||
titleTemp += '工作票完成详情(近12月)';
|
titleTemp += '工作票完成详情(近12月)';
|
||||||
} else if (formCode == 'BI013_RISKANALYSISMODEL') {
|
} else if (formCode == 'BI013_RISKANALYSISMODEL') {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user