weaver_trunk_cli/pc4mobx/prj/stores/reportStore.js

1108 lines
49 KiB
JavaScript

import React from "react";
import _ from 'lodash';
import $ from 'jquery';
import * as API from '../apis/prjReportApi';
import {Row, Col, Progress, Tooltip, message, InputNumber, Popover, Button } from 'antd';
import {observable, action, toJS} from "mobx";
import {WeaDatePicker, WeaInput, WeaBrowser, WeaLocaleProvider, WeaInputNumber, WeaError} from "ecCom";
import {FeedBackInfoStore} from "./portal/feedBackInfoStore"
import {FeedBackSettingStore} from "./portal/feedBackSettingStore"
const getLabel = WeaLocaleProvider.getLabel;
export class ReportStore {
@observable prjid = "";
@observable modeInfo = {};wEAver2018
@observable projInfo = {};
@observable columns = [];
@observable tableDatas = [];
@observable tableForamtDatas = [];
@observable dialogVisible = false;
@observable dialogData = {};
@observable dialogSource = {};
@observable columnsWidth = true;
@observable submitHash = {};
@observable submitData = [];
@observable expandedRowKeys = [];
@observable nowVersionSelected = '0';
@observable monthOptions = [];
@observable canSave = true;
@observable submitLoading = false;
@observable submitTip = "正在生成流程视图数据,请稍后...";
@observable remind1 = new Array();
@observable remind2 = new Array();
@observable remind3 = new Array();
@observable remind4 = new Array();
@observable feedBackInfoStore = new FeedBackInfoStore();
@observable feedBackSettingStore = new FeedBackSettingStore();
@observable prjstatus = "";
@observable type = ""; //反馈周期
@observable activity = ""; //当前活动周期
@action
init = (prjid) => {
this.prjid = prjid;
this.onQueryData(true);
this.nowVersionSelected = '0';
}
@action
onQueryData = (isInit) => {
if (!this.prjid) return;
this.tableDatas = [];
this.tableForamtDatas = [];
this.remind1 = new Array();
this.remind2 = new Array();
this.remind3 = new Array();
this.remind4 = new Array();
API.getFeedBackData({prjid: this.prjid}).then(({columns, datas, projInfo, month, type, activity}) => {
// if (!msg) {
// let month = ["201908", "201909"];
// let columns = [{
// dataIndex: "name",
// width: 250,
// fixed: "left",
// title: "任务名称",
// key: "name"
// }, {
// dataIndex: "hrmids",
// width: 60,
// title: "小组经理",
// key: "hrmids"
// }, {
// dataIndex: "dateRange",
// width: 150,
// title: "时间段",
// key: "dateRange"
// }, {
// dataIndex: "islandmark",
// width: 50,
// title: "里程碑",
// key: "islandmark"
// }, {
// dataIndex:"progress",
// width: 45,
// title: "进度",
// key: "progress"
// }, {
// children: [{
// dataIndex: "planCtx_201908",
// width: 170,
// title: "计划内容",
// key: "planCtx_201908"
// }, {
// dataIndex: "finishTime_201908",
// width: 125,
// title: "完成时间",
// key: "finishTime_201908"
// }, {
// dataIndex: "assistUser_201908",
// width: 125,
// title: "配合人员",
// key: "assistUser_201908"
// }, {
// dataIndex: "progress_201908",
// width: 50,
// title: "进度",
// key: "progress_201908"
// }, {
// dataIndex: "finishCtx_201908",
// width: 180,
// title: "完成情况",
// key: "finishCtx_201908"
// }, {
// dataIndex: "unFinishReason_201908",
// width: 80,
// title: "未完成原因",
// key: "unFinishReason_201908"
// }],
// title: "2019年8月"
// }, {
// children: [{
// dataIndex: "planCtx_201909",
// width: 170,
// title: "计划内容",
// key: "planCtx_201909"
// }, {
// dataIndex: "finishTime_201909",
// width: 125,
// title: "完成时间",
// key: "finishTime_201909"
// }, {
// dataIndex: "assistUser_201909",
// width: 125,
// title: "配合人员",
// key: "assistUser_201909"
// }, {
// dataIndex: "progress_201909",
// width: 50,
// title: "进度",
// key: "progress_201909"
// }, {
// dataIndex: "finishCtx_201909",
// width: 180,
// title: "完成情况",
// key: "finishCtx_201909"
// }, {
// dataIndex: "unFinishReason_201909",
// width: 80,
// title: "未完成原因",
// key: "unFinishReason_201909"
// }, {
// dataIndex: "caozuo_201909",
// width: 80,
// title: "操作",
// key: "caozuo_201909"
// }],
// title: "2019年9月"
// }]
// let datas = [{
// islandmark: "否",
// hrmids: [{
// name: "杨文元-tw",
// id: "21"
// }],
// unFinishReason_201908: "111",
// finishTime_201909: "",
// dateRange: ["2019-08-26", "2019-08-26"],
// planCtx_201908: "",
// finishTime_201908: "",
// unFinishReason_201909: "",
// assistUser_201909: "",
// assistUser_201908: "",
// hbid_201908: "7",
// hbid_201909: "45",
// children: [{
// islandmark: "否",
// unFinishReason_201908: {
// viewAttr: 1,
// value: ""
// },
// finishTime_201909: {
// viewAttr: 1,
// value: "2019-09-30"
// },
// dateRange: ["2019-08-26", "2019-08-26"],
// planCtx_201908: {
// viewAttr: 1,
// value: "test"
// },
// finishTime_201908: {
// viewAttr: 1,
// value: "2019-08-26"
// },
// unFinishReason_201909: {
// viewAttr: 1,
// value: ""
// },
// assistUser_201909: {
// viewAttr: 1,
// value: []
// },
// assistUser_201908: {
// viewAttr: 1,
// value: []
// },
// hbid_201908: 11,
// hbid_201909: 47,
// caozuo_201909:"11",
// name: "test",
// finishCtx_201909: {
// viewAttr: 1,
// value: [{
// cjsj: "2019-09-11",
// attachids: "",
// ctx: "ddd",
// attach: [],
// wcnrid: "26"
// }]
// },
// progress: "-1%",
// planCtx_201909: {
// viewAttr: 1,
// value: "test"
// },
// finishCtx_201908: {
// viewAttr: 1,
// value: []
// },
// key: 502,
// progress_201909: {
// viewAttr: 1,
// value: 0.0
// },
// progress_201908: {
// viewAttr: 1,
// value: 0.0
// }
// }, {
// islandmark: "否",
// unFinishReason_201908: {
// viewAttr: 1,
// value: ""
// },
// finishTime_201909: {
// viewAttr: 1,
// value: "2019-09-30"
// },
// dateRange: ["2019-08-26", "2019-08-26"],
// planCtx_201908: {
// viewAttr: 1,
// value: "test2"
// },
// finishTime_201908: {
// viewAttr: 1,
// value: "2019-08-26"
// },
// unFinishReason_201909: {
// viewAttr: 1,
// value: ""
// },
// assistUser_201909: {
// viewAttr: 1,
// value: []
// },
// assistUser_201908: {
// viewAttr: 1,
// value: []
// },
// hbid_201908: 9,
// hbid_201909: 46,
// name: "test2",
// finishCtx_201909: {
// viewAttr: 1,
// value: [{
// cjsj: "2019-09-11",
// attachids: "",
// ctx: "tt",
// attach: [],
// wcnrid: "25"
// }]
// },
// progress: "-1%",
// planCtx_201909: {
// viewAttr: 1,
// value: "test2"
// },
// finishCtx_201908: {
// viewAttr: 1,
// value: []
// },
// key: 503,
// progress_201909: {
// viewAttr: 1,
// value: 0.0
// },
// progress_201908: {
// viewAttr: 1,
// value: 0.0
// }
// }],
// name: "工作包001",
// finishCtx_201909: "",
// progress: "15%",
// planCtx_201909: "",
// finishCtx_201908: "",
// key: 1,
// progress_201909: {
// viewAttr: 3,
// value: 15
// },
// progress_201908: {
// viewAttr: 1,
// value: 15
// }
// }, {
// islandmark: "否",
// hrmids: [{
// name: "杨文元-tw",
// id: "21"
// }],
// unFinishReason_201908: "",
// finishTime_201909: "",
// dateRange: ["2019-08-26", "2019-08-26"],
// planCtx_201908: "",
// finishTime_201908: "",
// unFinishReason_201909: "",
// assistUser_201909: "杨文元-tw",
// assistUser_201908: "",
// hbid_201908: "8",
// hbid_201909: "41",
// children: [{
// islandmark: "否",
// unFinishReason_201908: {
// viewAttr: 1,
// value: ""
// },
// finishTime_201909: {
// viewAttr: 1,
// value: "2019-09-30"
// },
// dateRange: ["2019-08-26", "2019-08-26"],
// planCtx_201908: {
// viewAttr: 1,
// value: "test3"
// },
// finishTime_201908: {
// viewAttr: 1,
// value: "2019-08-26"
// },
// unFinishReason_201909: {
// viewAttr: 1,
// value: ""
// },
// assistUser_201909: {
// viewAttr: 1,
// value: []
// },
// assistUser_201908: {
// viewAttr: 1,
// value: []
// },
// hbid_201908: 12,
// hbid_201909: 44,
// name: "test3",
// finishCtx_201909: {
// viewAttr: 1,
// value: [{
// cjsj: "2019-09-11",
// attachids: "",
// ctx: "test",
// attach: [],
// wcnrid: "24"
// }]
// },
// progress: "-1%",
// planCtx_201909: {
// viewAttr: 1,
// value: "test3"
// },
// finishCtx_201908: {
// viewAttr: 1,
// value: []
// },
// key: 504,
// progress_201909: {
// viewAttr: 1,
// value: 100.0
// },
// progress_201908: {
// viewAttr: 1,
// value: 0.0
// }
// }, {
// islandmark: "否",
// unFinishReason_201908: {
// viewAttr: 1,
// value: ""
// },
// finishTime_201909: {
// viewAttr: 1,
// value: "2019-09-30"
// },
// dateRange: ["2019-08-26", "2019-08-26"],
// planCtx_201908: {
// viewAttr: 1,
// value: "test4"
// },
// finishTime_201908: {
// viewAttr: 1,
// value: "2019-08-26"
// },
// unFinishReason_201909: {
// viewAttr: 1,
// value: ""
// },
// assistUser_201909: {
// viewAttr: 1,
// value: []
// },
// assistUser_201908: {
// viewAttr: 1,
// value: []
// },
// hbid_201908: 10,
// hbid_201909: 42,
// name: "test4",
// finishCtx_201909: {
// viewAttr: 1,
// value: [{
// cjsj: "2019-09-11",
// attachids: "",
// ctx: "test2",
// attach: [],
// wcnrid: "23"
// }, {
// cjsj: "2019-09-11",
// attachids: "",
// ctx: "test",
// attach: [],
// wcnrid: "22"
// }]
// },
// progress: "-1%",
// planCtx_201909: {
// viewAttr: 1,
// value: "test4"
// },
// finishCtx_201908: {
// viewAttr: 1,
// value: []
// },
// key: 505,
// progress_201909: {
// viewAttr: 1,
// value: 100.0
// },
// progress_201908: {
// viewAttr: 1,
// value: 0.0
// }
// }, {
// islandmark: "否",
// unFinishReason_201908: {
// viewAttr: 1,
// value: ""
// },
// finishTime_201909: {
// viewAttr: 1,
// value: "2019-09-30"
// },
// dateRange: ["2019-10-08", "2019-10-26"],
// planCtx_201908: {
// viewAttr: 1,
// value: "test5"
// },
// finishTime_201908: {
// viewAttr: 1,
// value: "2019-08-26"
// },
// unFinishReason_201909: {
// viewAttr: 1,
// value: ""
// },
// assistUser_201909: {
// viewAttr: 1,
// value: []
// },
// assistUser_201908: {
// viewAttr: 1,
// value: []
// },
// hbid_201908: 21,
// hbid_201909: 43,
// name: "test5",
// finishCtx_201909: {
// viewAttr: 1,
// value: [{
// cjsj: "2019-09-11",
// attachids: "",
// ctx: "test",
// attach: [],
// wcnrid: "21"
// }]
// },
// progress: "-1%",
// planCtx_201909: {
// viewAttr: 1,
// value: "test5"
// },
// finishCtx_201908: {
// viewAttr: 1,
// value: []
// },
// key: 1001,
// progress_201909: {
// viewAttr: 1,
// value: 100.0
// },
// progress_201908: {
// viewAttr: 1,
// value: 0.0
// }
// }],
// name: "工作包002",
// finishCtx_201909: "",
// progress: "11%",
// planCtx_201909: "",
// finishCtx_201908: "",
// key: 501,
// progress_201909: {
// viewAttr: 3,
// value: 100
// },
// progress_201908: {
// viewAttr: 1,
// value: 11
// }
// }];
// let projInfo = {
// prjstatus: 11,
// manager: "1",
// jindu: "",
// name: "测试项目001",
// statusname: "计划变更",
// id: 1,
// version: [{
// showname: "当前版本",
// key: "0",
// selected: true
// }]
// };
this.columns = columns;
if (this.columns && this.columns.length <= 1) {
this.columns = this.columns.map(col => {
col.fixed = "";
return col
});
$('.ant-table-content').css('padding-left', '0');
}
this.computeColumnsWidth(this.columns);
this.tableDatas = datas;
this.tableForamtDatas = this.compileByType(this.tableDatas);
if (isInit) {
this.expandedRowKeys = this.tableForamtDatas.map(f => f.key);
}
this.projInfo = projInfo;
month&&(this.monthOptions=[...month].map((mon) => {
return {
showname: mon,
key: mon
}
}));
projInfo&&(this.prjstatus=projInfo.prjstatus);
this.type = type;
this.activity = activity;
// } else {
// message.warning(res.msg)
// }
})
}
@action
onExpandedRowKeysChange = (Keys) => {
this.expandedRowKeys = Keys;
}
@action
onEditionChange = (key) => {
this.nowVersionSelected = key;
this.onQueryData(this.prjid, key);
}
// @action
// saveData = (key) => {
// let check = true;
// if (!this.submitData.length && key === '2') {
// message.error("无数据修改");
// return;
// }
// if (key === '1') {
// toJS(this.remind1).map(c => {
// if (c && !c.props.children.props.value && c.props.children.props.viewAttr == "3") {
// c.showError();
// check = false;
// }
// });
// toJS(this.remind2).map(c => {
// if (c && !c.props.children.props.value && c.props.children.props.viewAttr == "3") {
// c.showError();
// check = false;
// }
// });
// toJS(this.remind3).map(c => {
// if(c&&c.props.children.props.replaceDatas&&(c.props.children.props.replaceDatas[0]?!c.props.children.props.replaceDatas[0].id:!c.props.children.props.replaceDatas[0])&&c.props.children.props.viewAttr=="3"){
// c.showError();
// check = false;
// }
// });
// }
// if(!check){
// message.error("请检查必填项");
// return;
// }
// const jsondata = JSON.stringify(this.submitData)
// if (key === '2') {
// this.submitTip = "数据保存中,请稍后...";
// this.submitLoading = true;
// API.save({jsondata, projId: this.prjid}).then(res => { //保存
// this.submitLoading = false;
// if ('' + res.code === '200') {
// this.submitData = [];
// this.submitHash= [];
// message.success(res.msg)
// this.onQueryData(this.prjid,{});
// } else {
// message.warning(res.msg)
// }
// })
// } else if (key === '1') { //提交
// this.submitTip = "正在生成流程视图数据,请稍后...";
// this.submitLoading = true;
// API.submit({jsondata, projId: this.prjid}).then(res => {
// this.submitLoading = false;
// if ('' + res.code === '200') {
// this.submitData = [];
// this.submitHash= [];
// message.success(res.msg)
// window.open(res.datas.linkUrl, '_blank');
// } else {
// message.warning(res.msg)
// }
// })
// }
// }
@action
computeColumnsWidth = (columns) => {
this.columnsWidth = 0;
if (!(columns && columns.length)) return '0';
columns.forEach(col => {
if (col.children) {
col.children.forEach(child => {
if (child.width) {
this.columnsWidth += child.width
} else {
this.columnsWidth += 200
}
})
}
})
}
@action
compileByType = (datas, parentIndex = null) => {
let tempDatas = [];
_.forEach(datas, (item, index) => {
const tempObj = {};
_.forIn(item, (valueObj, key) => {
if (key == 'key') {
tempObj[key] = valueObj;
} else {
let value = valueObj.hasOwnProperty('value') ? valueObj['value'] : valueObj,
// viewAttr = valueObj.hasOwnProperty('viewAttr') ? valueObj['viewAttr'] : 1;
viewAttr = 1;
if (_.startsWith(key, 'progress') && value !== "") {
value = parseFloat(value)<0?0:parseFloat(value);
if (!_.startsWith(key, 'progress_')) {
tempObj[key] = (
<div className="percent-btn-group">
<Progress ecId={`${this && this.props && this.props.ecId || ''}_Progress@48f3o7`} type="circle" percent={value} status={value === 100 && 'success'}
width={32}/>
</div>
)
} else {
if ('' + viewAttr === '1') {
tempObj[key] = (
<div title={`${value}%`}>{value}%</div>
)
} else {
tempObj[key] = (
<div className="progress-input-number">
<InputNumber ecId={`${this && this.props && this.props.ecId || ''}_InputNumber@3x1g2s`}
defaultValue={value<(item["progress"] != "" ? parseInt(item["progress"]) : 0)?item["progress"] != "" ? parseInt(item["progress"]) : 0:value}
// viewAttr={viewAttr}
disabled={viewAttr==1?true:false}
min={item["progress"] != "" ? parseInt(item["progress"]) : 0}
max={100}
onChange={(val) => {
if (val === '' || val < 0) {
val = 0
}
this.changeData(val, index, key, parentIndex, item)
}}
/>
</div>
)
}
}
} else if (key === 'dateRange' && (value[0] || value[1])) {
const beginDate = value[0]?value[0]:'', endDate = value[1]?value[1]:'';
const renderDate = (date) => {
return date;
// const dateArr = date.split("-");
// return `${dateArr[0]}-${dateArr[1]}-${dateArr[2]}`
}
tempObj[key] = (<div>
<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@qdh4py`}>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@l18w2r`} span={11}>{renderDate(beginDate)}</Col>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@hcn2z4`} span={2}> - </Col>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@b9kfcy`} span={11}>{renderDate(endDate)}</Col>
</Row>
</div>)
} else if (key === 'hrmids') {
tempObj[key] = (<WeaBrowser ecId={`${this && this.props && this.props.ecId || ''}_WeaBrowser@tpal86`}
type={17}
title={getLabel('179', '人力资源')}
isSingle={false}
replaceDatas={JSON.parse(valueObj).datas}
viewAttr={1}
/>)
} else if (_.startsWith(key, 'assistUser_')) { //配合人员
tempObj[key] = (
<WeaBrowser ecId={`${this && this.props && this.props.ecId || ''}_WeaBrowser@n13qi1`}
// style={{width:"100%"}}
type={17}
title={getLabel('179', '人力资源')}
// isMultCheckbox
isSingle={false}
replaceDatas={JSON.parse(valueObj).datas}
viewAttr={1}
// onChange={(id, name, data) => {
// this.changeData(data, index, key, parentIndex, item)
// }}
/>)
}else if (_.startsWith(key, 'finishTime_')) { //完成时间
// tempObj[key] = (<WeaError
// ref={(ref) => {
// this.remind1.push(ref);
// }}
// error={getLabel(385869,"此项必填")}
// tipPosition="left"
// ><WeaDatePicker
// value={value}
// viewAttr={viewAttr}
// onChange={(val) => {
// this.changeData(val, index, key, parentIndex, item)
// }}
// /></WeaError>)
tempObj[key] = (<WeaDatePicker ecId={`${this && this.props && this.props.ecId || ''}_WeaDatePicker@cnepkp`}
value={value}
viewAttr={viewAttr}
onChange={(val) => {
this.changeData(val, index, key, parentIndex, item)
}}
/>)
} else if (_.startsWith(key, 'planCtx_')) { //计划内容
const tempArr = key.split("_");
const total = tempArr[0] + 'Total_' + tempArr[1];
tempObj[key] = (<Tooltip ecId={`${this && this.props && this.props.ecId || ''}_Tooltip@xs2870`} placement="bottom" title={value}><Row ecId={`${this && this.props && this.props.ecId || ''}_Row@sthcnf`} className="plan_input_wrapper">
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@051msv`} span={18} >
{/* <WeaError
ref={(ref) => {
this.remind1.push(ref);
}}
error={getLabel(385869,"此项必填")}
tipPosition="left"
>
<WeaInput
value={value}
viewAttr={viewAttr}
onChange={(val) => {
this.changeData(val, index, key, parentIndex, item)
}}
/>
</WeaError> */}
<WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@wof0nm`}
value={value}
viewAttr={viewAttr}
onChange={(val) => {
this.changeData(val, index, key, parentIndex, item)
}}
/>
</Col>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@43t0hs`} span={6}>
<div className="plan_input_add">
{item[total] && item[total] > 0 &&
<a className='plan_input_add_number'
onClick={() => {
this.onToggleDialog(true, value, {
type: 'plan',
index,
key,
parentIndex,
item,
modeInfo: this.modeInfo
})
}}
title={item[total]}>{item[total]}</a>}
{viewAttr > 1 &&
<i className="icon-coms-Add-to-o icon-select"
onClick={() => {
this.onToggleDialog(true, value, {
type: 'plan',
index,
key,
parentIndex,
item,
modeInfo: this.modeInfo
})
}}
/>}
</div>
</Col>
</Row>
</Tooltip>
)
} else if (_.startsWith(key, 'finishCtx_')) { //完成情况
const planCtx = `planCtx_${key.split("_")[1]}`;
const viewAttrCopy = item[planCtx] && item[planCtx]['viewAttr'] ? item[planCtx]['viewAttr'] : 1;
const len = value.length || 0;
value = _.isArray(toJS(value)) && value.length ? value : [];
const showData = len == 0 ? "" : value[len - 1]['ctx'];
let showDatas = "";
let content = [];
value.length > 0 && value.map((item,index)=>{
content.push(
<p style={{borderBottom:"1px solid gray",wordWrap:"break-word"}}>
{index+1}.{item.ctx && item.ctx}
<span style={{float:"right"}}>{item.cjsj && item.cjsj}</span>
</p>
)
})
value.map(item=>{
showDatas += (item.ctx+"\r\n")
});
tempObj[key] = (<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@oehu12`} className="plan_input_wrapper2">
{/* <Popover content={<div style={{width:"400px"}}>{content}</div>} placement="left" trigger="hover"> */}
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@sdqmyo`} span={18}>
{
viewAttr == 3 &&<WeaError ecId={`${this && this.props && this.props.ecId || ''}_WeaError@36zg9q`}
ref={(ref) => {
this.remind1.push(ref);
}}
error={getLabel(385869,"此项必填")}
tipPosition="left"
>
<WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@00puej`}
placeholder={getLabel('22069', '完成情况')}
value={showData}
viewAttr={viewAttr}
style={{border: "1px solid #ddd"}}
readOnly = {true}
className='finish-input-border'
onChange={(val) => {
value[len - 1] = {...value[len - 1], ctx: val}
this.changeData(value, index, key, parentIndex, item)
}}/>
</WeaError>
}
{
viewAttr == 1 && <span className="report-span2" >{showData}</span>
}
</Col>
{/* </Popover> */}
{/* */}
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@05f13f`} span={6}>
<div className="plan_input_add">
{len > 0 && item[key.replace('finishCtx','caozuo')] &&
<a className='plan_input_add_number'
onClick={() => {
// console.log(111,item[key.replace('finishCtx','caozuo')],item)
this.onToggleDialog(true, value, {
type: 'condition', index, key, parentIndex, item, mainid:item[key.replace('finishCtx','caozuo')]
})
}}
title={len}>{len}</a>
}
{viewAttrCopy > 1 &&
<i className="icon-coms-Add-to-o icon-select"
onClick={() => {
this.onToggleDialog(true, value, {
type: 'condition', index, key, parentIndex, item
})
}}
/>}
</div>
</Col>
</Row>)
} else if (_.startsWith(key, 'unFinishReason_')) { //未完成原因
let content=<span style={{borderBottom:"1px solid gray",wordWrap:"break-word",width:"400px"}}>{value}</span>
tempObj[key] = ( <Popover ecId={`${this && this.props && this.props.ecId || ''}_Popover@twcexo`} content={<div style={{width:"400px"}}>{content}</div>} placement="left" trigger="hover"><WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@6n32nm`}
value={value}
viewAttr={viewAttr}
onChange={(val) => {
this.changeData(val, index, key, parentIndex, item)
}}
/></Popover>)
} else if (_.startsWith(key, 'caozuo_')) { //操作项
let content=<span style={{borderBottom:"1px solid gray",wordWrap:"break-word",width:"400px"}}>{value}</span>
tempObj[key] = ( <Button ecId={`${this && this.props && this.props.ecId || ''}_Button@rb9f7d`} onClick={()=>{this.openDialog(value)}}>{getLabel(93, "编辑")}</Button> );
} else if (!item['children']) {
tempObj[key] = (<Tooltip ecId={`${this && this.props && this.props.ecId || ''}_Tooltip@0j6qr8`} title={value} placement="bottomLeft"><span className="report-span" >{value}</span></Tooltip>);
} else {
if (key === 'children' && value.length) { //递归解析树形结构
tempObj[key] = this.compileByType(item.children, index + '')
} else { //纯文本显示值
tempObj[key] = (<Tooltip ecId={`${this && this.props && this.props.ecId || ''}_Tooltip@rmeig2`} title={value} placement="bottomLeft"><span className="report-span" >{value}</span></Tooltip>);
}
}
}
})
tempDatas.push(tempObj)
})
// console.log(tempDatas);
return tempDatas;
}
@action
openDialog = (value) => {
this.feedBackInfoStore.handleFeedBackInfoDialog(true,{id:value});
}
@action
changeData = (value, index, key, parentIndex, item) => {
this.onDataChange(value, index, key, parentIndex, item)
}
@action
onDataChange = (value, index, key, parentIndex, item) => {
// console.log(value, index, key, parentIndex, item);
//处理数据显示
if (parentIndex) {
if (_.startsWith(key, 'planCtxTotal_')) {
const data = this.tableDatas[parentIndex].children[index][key];
const viewAttr = data.hasOwnProperty('viewAttr') ? data.viewAttr : ""; //获取数据原本的viewAttr
this.tableDatas[parentIndex].children[index][key] = viewAttr ? {value, viewAttr} : value;
} else if (_.startsWith(key, 'finishCtx_')){
// console.log(toJS(this.tableDatas[parentIndex].children[index][key]));
const data = this.tableDatas[parentIndex].children[index][key];
const viewAttr = data.hasOwnProperty('viewAttr') ? data.viewAttr : ""; //获取数据原本的viewAttr
let finshCtxs = [];
value.map(item=>{
let attachids = [];
let attachs = item.attach;
attachs.length > 0 && attachs.map(attach=>{
attachids.push(attach['fileid']);
})
let newitem = {
...item,
attachids : attachids
}
finshCtxs.push(newitem);
});
this.tableDatas[parentIndex].children[index][key] = viewAttr ? {value : finshCtxs, viewAttr} : finshCtxs;
}else {
const data = this.tableDatas[parentIndex].children[index][key];
const viewAttr = data.hasOwnProperty('viewAttr') ? data.viewAttr : ""; //获取数据原本的viewAttr
// if (viewAttr == '3' && !('' + value)) {
// return;
// }
this.tableDatas[parentIndex].children[index][key] = viewAttr ? {value, viewAttr} : {value};
}
} else {
this.tableDatas[index][key].value = value;
}
this.tableForamtDatas = this.compileByType(this.tableDatas)
//处理数据保存
const id = item['hbid_' + key.split('_')[1]];
const formatKey = key.split("_")[0];
//配合人员特殊处理
if (formatKey == "assistUser") {
let value_ = value;
let assistUserIds = [];
if (value_.length > 0) {
value_.map(item => {
assistUserIds.push(parseInt(item.id));
});
}
value = assistUserIds;
}
let finshCtxs = [];
let param = {
id,
key: item['key'],
[formatKey]: value,
};
//完成情况相关附件特殊处理
if (_.startsWith(key, 'finishCtx_')){
value.map(item=>{
let attachids = [];
let attachs = item.attach;
attachs.length > 0 && attachs.map(attach=>{
attachids.push(attach['fileid']);
})
let newitem = {
...item,
attachids : attachids
}
finshCtxs.push(newitem);
});
param = {
id,
key: item['key'],
[formatKey]: finshCtxs,
};
}
if (!this.submitHash[""+id]) {
this.submitData.push(param);
this.submitHash = {
...this.submitHash,
[id] : '' + (this.submitData.length - 1)
}
} else {
this.submitData[this.submitHash[""+id]] = Object.assign(this.submitData[this.submitHash[id]], param);
}
}
@action
onToggleDialog = (bool, data, dialogSource = {}) => {
this.dialogVisible = bool;
this.dialogData = data;
this.dialogSource = dialogSource;
}
@action getLineClass = () => {
this.lineindex ++ ;
if(this.lineindex % 2 == 1){
return "dark-row"
}else{
return "light-row"
}
}
@action
setDialogData = (v) => {
this.dialogData = v;
}
@action
saveMxDatas = () =>{
const mxParams = JSON.stringify({mxdatas:toJS(this.dialogData)});
const params = {mainid:this.dialogSource.mainid,mxdatas:mxParams}
API.saveMxDatas(params).then(data=>{
if(data.success){
message.success(getLabel(18758,"保存成功"));
this.onToggleDialog(false);
this.onQueryData(true);
}else{
message.error(getLabel('507580','出现错误!对不起,您暂时没有权限!!'));
}
})
}
}
export default new ReportStore();