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')
this.props.data.onCancel();
}
getUsers = () => {
getUsers = (dataid) => {
debugger
let json = initFilter(this.props.login.OrgId);
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');
this.state.loading = true;
this.props.dispatch({
@ -88,6 +90,12 @@ class SE061PaperPage extends React.Component {
message.warn("当前用户没有问卷");
}
}
} else {
this.setState({
SelUsrID: '',
papers: []
})
}
}
});
@ -142,10 +150,10 @@ class SE061PaperPage extends React.Component {
}
});
}
loadData = () => {
loadData = (dataid) => {
if (this.props.data.id == "")
return;
this.getUsers();
this.getUsers(dataid);
}
onSave = () => {
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}>
<h1 style={{ textAlign: 'center' }}>培训在线答题</h1>
<Spin spinning={this.state.loading}>
<table style={{ width: '100%', textAlign: 'center', borderTop: '1px solid #333', borderLeft: '1px solid #333' }} className={styles.PrintForm}>
<tbody>
<tr>
<td colSpan={4} rowSpan={1} className={styles.fontBold}>工号</td>
<td colSpan={4} rowSpan={1}>{SelUsr && SelUsr.CODE}</td>
<td colSpan={4} rowSpan={1} className={styles.fontBold}>答卷人</td>
<td colSpan={4} rowSpan={1}>{SelUsr && SelUsr.NAME}</td>
<td colSpan={4} rowSpan={1} className={styles.fontBold}>成绩</td>
<td colSpan={4} rowSpan={1}>{this.CalcScore()}</td>
</tr>
<tr>
<td colSpan={24} rowSpan={1} className={styles.fontBold}>问卷</td>
</tr>
{
papers.map((it, idx) => {
return (
<tr key={it.ID}>
<td colSpan={24} rowSpan={1}>
<table border={0} className={SEstyles.TestPaperItem}>
<tbody>
<tr>
<td colSpan={24} rowSpan={1} className={SEstyles.TestTiltle}>
<span>{idx + 1}.</span>
<span>{it.Nav_Test.NAME}</span>
<span>{this.getType(it.Nav_Test.TYPE)}</span>
</td>
</tr>
<tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 1) != 0) ? answer : null}>
<table style={{ width: '100%', textAlign: 'center', borderTop: '1px solid #333', borderLeft: '1px solid #333' }} className={styles.PrintForm}>
<tbody>
<tr>
<td colSpan={4} rowSpan={1} className={styles.fontBold}>工号</td>
<td colSpan={4} rowSpan={1}>{SelUsr && SelUsr.CODE}</td>
<td colSpan={4} rowSpan={1} className={styles.fontBold}>答卷人</td>
<td colSpan={4} rowSpan={1}>{SelUsr && SelUsr.NAME}</td>
<td colSpan={4} rowSpan={1} className={styles.fontBold}>成绩</td>
<td colSpan={4} rowSpan={1}>{this.CalcScore()}</td>
</tr>
<tr>
<td colSpan={24} rowSpan={1} className={styles.fontBold}>问卷</td>
</tr>
{
papers.map((it, idx) => {
return (
<tr key={it.ID}>
<td colSpan={24} rowSpan={1}>
<table border={0} className={SEstyles.TestPaperItem}>
<tbody>
<tr>
<td colSpan={24} rowSpan={1} className={SEstyles.TestTiltle}>
<span>{idx + 1}.</span>
<span>{it.Nav_Test.NAME}</span>
<span>{this.getType(it.Nav_Test.TYPE)}</span>
</td>
</tr>
<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 ?
<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 !== 0 &&
<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 & 4) != 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)} />
<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>{it.Nav_Test.OPTION_A}</span>
<span>C.</span>
<span>{it.Nav_Test.OPTION_C}</span>
</td>
</tr>
}
</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 !== 0 && it.Nav_Test.OPTION_D != "" && it.Nav_Test.OPTION_D != undefined &&
<tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 8) != 0) ? answer : null}>
<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 & 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>{it.Nav_Test.OPTION_B}</span>
<span>D.</span>
<span>{it.Nav_Test.OPTION_D}</span>
</td>
</tr>
}
</tr>
{
it.Nav_Test.TYPE !== 0 &&
<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 & 4) != 0) ? styles.answer : null}>
{
it.Nav_Test.TYPE === 1 ?
<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 & 4) != 0} onChange={evt => this.doOptionChange(it, idx, 4, evt)} />
}
<span>C.</span>
<span>{it.Nav_Test.OPTION_C}</span>
</td>
</tr>
}
{
it.Nav_Test.TYPE !== 0 && it.Nav_Test.OPTION_D != "" && it.Nav_Test.OPTION_D != undefined &&
<tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 8) != 0) ? answer : null}>
<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)} />
:
<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>
{
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>
</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 : '')
let DetailCheck = getSelectedRecords();
if (DetailCheck && DetailCheck.length > 1) {
let ListCheckUserFirst = DetailCheck[0].Nav_RecitifyUser;
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] };
iRow.Nav_RecitifyUser = ListCheckUserFirst;
saveRowRecord({ record: iRow, editCode: "T_SK_HIDDEN_DANGER_REPORT_DETAIL" })
//向下同步培训组织 单选
updateCheckUser: ({ stateData, saveRowRecord }) => {
var totalCount = stateData.Nav_ReportDetails.length
if (totalCount < 2) {
return
}
for (var x = 0; x < stateData.Nav_ReportDetails.length; x++) {
if (iRow.ID == stateData.Nav_ReportDetails[x].ID) {
stateData.Nav_ReportDetails[x].Nav_RecitifyUser = ListCheckUserFirst;
}
}
} 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 });
var user = {}
for (var i = 1; i < totalCount; i++) {
//本行数据 如果为空 取上一行的 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) {
user = {
ID: stateData.Nav_ReportDetails[i - 1].RECITIFY_USER_ID,
NAME: stateData.Nav_ReportDetails[i - 1].Nav_RecitifyUser.NAME
}
if (isNeedEmpty) {
emptyEditSelectedKeys()
if (user.ID != null && user.ID != undefined) {
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 }) => {
let DetailCheck = getSelectedRecords();
if(login.tempContents && login.tempContents.length>0)