This commit is contained in:
ccy 2025-11-30 10:45:04 +08:00
commit e85988ffb7
3 changed files with 198 additions and 156 deletions

View File

@ -54,10 +54,12 @@ class SE061PaperPage extends React.Component {
if (typeof this.props.data.onCancel != "undefined" && typeof this.props.data.onCancel == 'function') if (typeof this.props.data.onCancel != "undefined" && typeof this.props.data.onCancel == 'function')
this.props.data.onCancel(); this.props.data.onCancel();
} }
getUsers = () => { getUsers = (dataid) => {
debugger
let json = initFilter(this.props.login.OrgId); let json = initFilter(this.props.login.OrgId);
json.OrgType = 2; json.OrgType = 2;
extendRule(json, 'RECORD_ID', 1, this.props.data.id); // extendRule(json, 'RECORD_ID', 1, this.props.data.id);
extendRule(json, 'RECORD_ID', 1, dataid);
extendInclude(json, 'Nav_User'); extendInclude(json, 'Nav_User');
this.state.loading = true; this.state.loading = true;
this.props.dispatch({ this.props.dispatch({
@ -88,6 +90,12 @@ class SE061PaperPage extends React.Component {
message.warn("当前用户没有问卷"); message.warn("当前用户没有问卷");
} }
} }
} else {
this.setState({
SelUsrID: '',
papers: []
})
} }
} }
}); });
@ -142,10 +150,10 @@ class SE061PaperPage extends React.Component {
} }
}); });
} }
loadData = () => { loadData = (dataid) => {
if (this.props.data.id == "") if (this.props.data.id == "")
return; return;
this.getUsers(); this.getUsers(dataid);
} }
onSave = () => { onSave = () => {
if (this.state.readonly) { if (this.state.readonly) {
@ -355,127 +363,127 @@ class SE061PaperPage extends React.Component {
<div ref={el => (this.componentRef = el)} id={'tableId' + this.props.data.id}> <div ref={el => (this.componentRef = el)} id={'tableId' + this.props.data.id}>
<h1 style={{ textAlign: 'center' }}>培训在线答题</h1> <h1 style={{ textAlign: 'center' }}>培训在线答题</h1>
<Spin spinning={this.state.loading}> <Spin spinning={this.state.loading}>
<table style={{ width: '100%', textAlign: 'center', borderTop: '1px solid #333', borderLeft: '1px solid #333' }} className={styles.PrintForm}> <table style={{ width: '100%', textAlign: 'center', borderTop: '1px solid #333', borderLeft: '1px solid #333' }} className={styles.PrintForm}>
<tbody> <tbody>
<tr> <tr>
<td colSpan={4} rowSpan={1} className={styles.fontBold}>工号</td> <td colSpan={4} rowSpan={1} className={styles.fontBold}>工号</td>
<td colSpan={4} rowSpan={1}>{SelUsr && SelUsr.CODE}</td> <td colSpan={4} rowSpan={1}>{SelUsr && SelUsr.CODE}</td>
<td colSpan={4} rowSpan={1} className={styles.fontBold}>答卷人</td> <td colSpan={4} rowSpan={1} className={styles.fontBold}>答卷人</td>
<td colSpan={4} rowSpan={1}>{SelUsr && SelUsr.NAME}</td> <td colSpan={4} rowSpan={1}>{SelUsr && SelUsr.NAME}</td>
<td colSpan={4} rowSpan={1} className={styles.fontBold}>成绩</td> <td colSpan={4} rowSpan={1} className={styles.fontBold}>成绩</td>
<td colSpan={4} rowSpan={1}>{this.CalcScore()}</td> <td colSpan={4} rowSpan={1}>{this.CalcScore()}</td>
</tr> </tr>
<tr> <tr>
<td colSpan={24} rowSpan={1} className={styles.fontBold}>问卷</td> <td colSpan={24} rowSpan={1} className={styles.fontBold}>问卷</td>
</tr> </tr>
{ {
papers.map((it, idx) => { papers.map((it, idx) => {
return ( return (
<tr key={it.ID}> <tr key={it.ID}>
<td colSpan={24} rowSpan={1}> <td colSpan={24} rowSpan={1}>
<table border={0} className={SEstyles.TestPaperItem}> <table border={0} className={SEstyles.TestPaperItem}>
<tbody> <tbody>
<tr> <tr>
<td colSpan={24} rowSpan={1} className={SEstyles.TestTiltle}> <td colSpan={24} rowSpan={1} className={SEstyles.TestTiltle}>
<span>{idx + 1}.</span> <span>{idx + 1}.</span>
<span>{it.Nav_Test.NAME}</span> <span>{it.Nav_Test.NAME}</span>
<span>{this.getType(it.Nav_Test.TYPE)}</span> <span>{this.getType(it.Nav_Test.TYPE)}</span>
</td> </td>
</tr> </tr>
<tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 1) != 0) ? answer : null}> <tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 1) != 0) ? answer : null}>
{
it.Nav_Test.TYPE === 0 ?
<td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 1) != 0) ? styles.answer : null}>
<Radio disabled={this.state.readonly} checked={(it.ANSWER & 1) != 0} onChange={evt => this.doOptionChange(it, idx, 1, evt)} />
<span>正确</span>
</td>
:
<td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 1) != 0) ? styles.answer : null}>
{
it.Nav_Test.TYPE === 1 ?
<Radio disabled={this.state.readonly} checked={(it.ANSWER & 1) != 0} onChange={evt => this.doOptionChange(it, idx, 1, evt)} />
:
<Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 1) != 0} onChange={evt => this.doOptionChange(it, idx, 1, evt)} />
}
<span>A.</span>
<span>{it.Nav_Test.OPTION_A}</span>
</td>
}
</tr>
<tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 2) != 0) ? answer : null}>
{
it.Nav_Test.TYPE === 0 ?
<td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 2) != 0) ? styles.answer : null}>
<Radio disabled={this.state.readonly} checked={(it.ANSWER & 2) != 0} onChange={evt => this.doOptionChange(it, idx, 2, evt)} />
<span>错误</span>
</td>
:
<td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 2) != 0) ? styles.answer : null}>
{
it.Nav_Test.TYPE === 1 ?
<Radio disabled={this.state.readonly} checked={(it.ANSWER & 2) != 0} onChange={evt => this.doOptionChange(it, idx, 2, evt)} />
:
<Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 2) != 0} onChange={evt => this.doOptionChange(it, idx, 2, evt)} />
}
<span>B.</span>
<span>{it.Nav_Test.OPTION_B}</span>
</td>
}
</tr>
{ {
it.Nav_Test.TYPE === 0 ? it.Nav_Test.TYPE !== 0 &&
<td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 1) != 0) ? styles.answer : null}> <tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 4) != 0) ? answer : null}>
<Radio disabled={this.state.readonly} checked={(it.ANSWER & 1) != 0} onChange={evt => this.doOptionChange(it, idx, 1, evt)} /> <td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 4) != 0) ? styles.answer : null}>
<span>正确</span>
</td>
:
<td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 1) != 0) ? styles.answer : null}>
{ {
it.Nav_Test.TYPE === 1 ? it.Nav_Test.TYPE === 1 ?
<Radio disabled={this.state.readonly} checked={(it.ANSWER & 1) != 0} onChange={evt => this.doOptionChange(it, idx, 1, evt)} /> <Radio disabled={this.state.readonly} checked={(it.ANSWER & 4) != 0} onChange={evt => this.doOptionChange(it, idx, 4, evt)} />
: :
<Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 1) != 0} onChange={evt => this.doOptionChange(it, idx, 1, evt)} /> <Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 4) != 0} onChange={evt => this.doOptionChange(it, idx, 4, evt)} />
} }
<span>A.</span> <span>C.</span>
<span>{it.Nav_Test.OPTION_A}</span> <span>{it.Nav_Test.OPTION_C}</span>
</td> </td>
</tr>
} }
</tr>
<tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 2) != 0) ? answer : null}>
{ {
it.Nav_Test.TYPE === 0 ? it.Nav_Test.TYPE !== 0 && it.Nav_Test.OPTION_D != "" && it.Nav_Test.OPTION_D != undefined &&
<td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 2) != 0) ? styles.answer : null}> <tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 8) != 0) ? answer : null}>
<Radio disabled={this.state.readonly} checked={(it.ANSWER & 2) != 0} onChange={evt => this.doOptionChange(it, idx, 2, evt)} /> <td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 8) != 0) ? styles.answer : null}>
<span>错误</span>
</td>
:
<td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 2) != 0) ? styles.answer : null}>
{ {
it.Nav_Test.TYPE === 1 ? it.Nav_Test.TYPE === 1 ?
<Radio disabled={this.state.readonly} checked={(it.ANSWER & 2) != 0} onChange={evt => this.doOptionChange(it, idx, 2, evt)} /> <Radio disabled={this.state.readonly} checked={(it.ANSWER & 8) != 0} onChange={evt => this.doOptionChange(it, idx, 8, evt)} />
: :
<Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 2) != 0} onChange={evt => this.doOptionChange(it, idx, 2, evt)} /> <Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 8) != 0} onChange={evt => this.doOptionChange(it, idx, 8, evt)} />
} }
<span>B.</span> <span>D.</span>
<span>{it.Nav_Test.OPTION_B}</span> <span>{it.Nav_Test.OPTION_D}</span>
</td> </td>
</tr>
} }
</tr> {
{ it.Nav_Test.TYPE !== 0 && it.Nav_Test.OPTION_E != "" && it.Nav_Test.OPTION_E != undefined &&
it.Nav_Test.TYPE !== 0 && <tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 16) != 0) ? answer : null}>
<tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 4) != 0) ? answer : null}> <td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 16) != 0) ? styles.answer : null}>
<td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 4) != 0) ? styles.answer : null}> {
{ it.Nav_Test.TYPE === 1 ?
it.Nav_Test.TYPE === 1 ? <Radio disabled={this.state.readonly} checked={(it.ANSWER & 16) != 0} onChange={evt => this.doOptionChange(it, idx, 16, evt)} />
<Radio disabled={this.state.readonly} checked={(it.ANSWER & 4) != 0} onChange={evt => this.doOptionChange(it, idx, 4, evt)} /> :
: <Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 16) != 0} onChange={evt => this.doOptionChange(it, idx, 16, evt)} />
<Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 4) != 0} onChange={evt => this.doOptionChange(it, idx, 4, evt)} /> }
} <span>E.</span>
<span>C.</span> <span>{it.Nav_Test.OPTION_E}</span>
<span>{it.Nav_Test.OPTION_C}</span> </td>
</td> </tr>
</tr> }
} </tbody>
{ </table>
it.Nav_Test.TYPE !== 0 && it.Nav_Test.OPTION_D != "" && it.Nav_Test.OPTION_D != undefined && </td>
<tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 8) != 0) ? answer : null}> </tr>
<td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 8) != 0) ? styles.answer : null}> )
{ })
it.Nav_Test.TYPE === 1 ? }
<Radio disabled={this.state.readonly} checked={(it.ANSWER & 8) != 0} onChange={evt => this.doOptionChange(it, idx, 8, evt)} /> </tbody>
: </table>
<Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 8) != 0} onChange={evt => this.doOptionChange(it, idx, 8, evt)} />
}
<span>D.</span>
<span>{it.Nav_Test.OPTION_D}</span>
</td>
</tr>
}
{
it.Nav_Test.TYPE !== 0 && it.Nav_Test.OPTION_E != "" && it.Nav_Test.OPTION_E != undefined &&
<tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 16) != 0) ? answer : null}>
<td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 16) != 0) ? styles.answer : null}>
{
it.Nav_Test.TYPE === 1 ?
<Radio disabled={this.state.readonly} checked={(it.ANSWER & 16) != 0} onChange={evt => this.doOptionChange(it, idx, 16, evt)} />
:
<Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 16) != 0} onChange={evt => this.doOptionChange(it, idx, 16, evt)} />
}
<span>E.</span>
<span>{it.Nav_Test.OPTION_E}</span>
</td>
</tr>
}
</tbody>
</table>
</td>
</tr>
)
})
}
</tbody>
</table>
</Spin> </Spin>
</div> </div>
</div> </div>

59
src/files/edit/HM041.js Normal file
View File

@ -0,0 +1,59 @@
import { message } from "antd/lib/index";
import { getPropertyData, extendInclude, extendRule, getDataFieldValue, setDataFieldValue, initFilter, empty,extendOrder, guid } from "../../utils/common";
import { connect } from 'dva';
/**
* @return {string}
*/
// 编辑
export default {
onChange: ({ colInfo, getFieldValue, setFieldValueByBatch, dispatch,login,updateSubTableData }) => {
if (!(colInfo.FIELD_NAME == 'Nav_OperationStep.NAME'))
return;
let code = getFieldValue('OPERATION_STEP_ID')
if(code && code!==null && code!==undefined)
{
let json = initFilter(login.OrgId);
extendRule(json, 'ID', 1, code);
extendInclude(json, 'Nav_SafeConfirms');
extendInclude(json, 'Nav_SafeMeasures');
extendInclude(json, 'Nav_DealMeasures');
dispatch({
type: 'app/getDataByPost',
url: 'HM/OperationStep/Get',
payload: json,
onlyData: false,
onComplete: (re) => {
if (re && re.IsSuccessful && re.Data) {
let temps = [];
let detailConfirms=re.Data.Nav_SafeConfirms?.map((item,i)=>{
item['ROW_NO'] = item.NUM;
item['NUM'] = item.NUM;
item['NAME']=item.NAME;
return item;
});
let detailMeasures=re.Data.Nav_SafeMeasures?.map((item,i)=>{
item['ROW_NO'] = item.NUM;
item['NUM'] = item.NUM;
item['NAME']=item.NAME;
return item;
});
let detailDeal=re.Data.Nav_DealMeasures?.map((item,i)=>{
item['ROW_NO'] = item.NUM;
item['NUM'] = item.NUM;
item['NAME']=item.NAME;
return item;
});
temps.push({ field: 'Nav_SafeConfirms', value: detailConfirms.sort((x, y) => (parseInt(x.NUM) > parseInt(y.NUM)) ? 1 : -1) })
temps.push({ field: 'Nav_SafeMeasures', value: detailMeasures.sort((x, y) => (parseInt(x.NUM) > parseInt(y.NUM)) ? 1 : -1) })
temps.push({ field: 'Nav_DealMeasures', value: detailDeal.sort((x, y) => (parseInt(x.NUM) > parseInt(y.NUM)) ? 1 : -1) })
// temps.push({ field: 'SafeMeasuresStr', value: re.Data.SafeMeasuresStr})
setFieldValueByBatch(temps);
//updateSubTableData(params.pageCode,detail,true)
}
}
})
}
},
}

View File

@ -30,55 +30,30 @@ export default {
} }
}, },
updateCheckUser: ({ row, pageCode, record, colInfo, resetFields, stateData, saveHeadRecord, saveRowRecord, getSelectedRecords, setState, emptyEditSelectedKeys }) => { //向下同步培训组织 单选
//,state const temps = state['editTableSelectedKeysT_BS_SAFE_CHECK_DETAIL'];// + editCode + (parentId ? parentId : '') updateCheckUser: ({ stateData, saveRowRecord }) => {
let DetailCheck = getSelectedRecords(); var totalCount = stateData.Nav_ReportDetails.length
if (DetailCheck && DetailCheck.length > 1) { if (totalCount < 2) {
let ListCheckUserFirst = DetailCheck[0].Nav_RecitifyUser; return
if (ListCheckUserFirst == null || ListCheckUserFirst.length < 1) { }
message.error("请选择需要同步的检查人员!")
return
}
var isNeedEmpty = false;
//更新行数据
for (let i = 1; i < DetailCheck.length; i++) {
//组装数据
if (ListCheckUserFirst != undefined && ListCheckUserFirst) {
let iRow = { ...DetailCheck[i] }; var user = {}
iRow.Nav_RecitifyUser = ListCheckUserFirst; for (var i = 1; i < totalCount; i++) {
saveRowRecord({ record: iRow, editCode: "T_SK_HIDDEN_DANGER_REPORT_DETAIL" }) //本行数据 如果为空 取上一行的 RECITIFY_USER_ID Nav_RecitifyUser
if ((stateData.Nav_ReportDetails[i].RECITIFY_USER_ID == null || stateData.Nav_ReportDetails[i].RECITIFY_USER_ID == undefined) && stateData.Nav_ReportDetails[i - 1].RECITIFY_USER_ID) {
for (var x = 0; x < stateData.Nav_ReportDetails.length; x++) { user = {
if (iRow.ID == stateData.Nav_ReportDetails[x].ID) { ID: stateData.Nav_ReportDetails[i - 1].RECITIFY_USER_ID,
stateData.Nav_ReportDetails[x].Nav_RecitifyUser = ListCheckUserFirst; NAME: stateData.Nav_ReportDetails[i - 1].Nav_RecitifyUser.NAME
}
}
} else {
//人员删除
let iRow = { ...DetailCheck[i] };
iRow.Nav_RecitifyUser.IS_DELETED = true
saveRowRecord({ record: iRow, editCode: "T_SK_HIDDEN_DANGER_REPORT_DETAIL" })
}
isNeedEmpty = true
//更新选中人员
for (var x = 0; x < stateData.Nav_ReportDetails.length; x++) {
let users = stateData.Nav_ReportDetails[x].Nav_RecitifyUser
if (users && !users.IS_DELETED) {
stateData.CheckUsers = users
}
}
setState({ data: stateData });
} }
if (isNeedEmpty) { if (user.ID != null && user.ID != undefined) {
emptyEditSelectedKeys() let iRow = { ...stateData.Nav_ReportDetails[i] };
iRow.RECITIFY_USER_ID = user.ID
iRow.Nav_RecitifyUser = user
saveRowRecord({ record: iRow, editCode: "T_SK_HIDDEN_DANGER_REPORT_DETAIL" })
} }
}else
{
message.error("请选择需要同步的整改责任人!")
return
} }
}, }
},
btnSubAdd: ({row, srcRecord,getSelectedRecords,record,saveRowRecord,colInfo,parentRecord,pageCode, stateData,setState, close, loadData, login, btn, dispatch,props }) => { btnSubAdd: ({row, srcRecord,getSelectedRecords,record,saveRowRecord,colInfo,parentRecord,pageCode, stateData,setState, close, loadData, login, btn, dispatch,props }) => {
let DetailCheck = getSelectedRecords(); let DetailCheck = getSelectedRecords();
if(login.tempContents && login.tempContents.length>0) if(login.tempContents && login.tempContents.length>0)