表头的查询条件页面示意图,只重新写了重要的方法,其他都不变

1、主程序csp页面代码
<!DOCTYPE html>
<!--
需求质控列表
csp: csp/NTSC/NTSCReqQuaCont.csp
js: scripts/NTSC/NTSCReqQuaCont.js
-->
<html>
<!-- 验证session过期 -->
<csp:method name=OnPreHTTP arguments="" returntype=%Boolean>
d ##Class(websys.SessionEvents).SessionExpired() q $$$OK
</csp:method>
<head>
<!-- iMedical版本标题 -->
<title>
<TRAK:TRANSLATE id=title>##(%session.Get("TITLE"))##</TRAK:TRANSLATE>
</title>
<TRAK:HEAD></TRAK:HEAD>
<HISUI />
<PHALIBV1 />
<PHAPRINTCOM />
<style>
#btnSaveArea {
display: none;
}
.pha-rec-create-hide {
display: none;
padding: 0;
border: 0;
}
#qCondition a{
min-width:90px;
}
#winRetQuickModify .dialog-content {
border-radius: 6px !important;
}
#ImportWin .dialog-content {
border-radius: 6px !important;
}
#vbpFlag + label.checkbox {
padding-left: 16px;
}
</style>
</head>
<body>
<div class="hisui-layout" fit="true" id="lyMainView">
<div data-options="region:'center',border:false" class="pha-body">
<div class="hisui-layout" fit="true" id="layout-rec-create">
<div data-options="region:'north',height:155,split:true,border:false, title:'需求质控列表',collapsible:false,headerCls:'panel-header-gray',iconCls:'icon-panel-brand'" id="layout-rec-create-panel">
<table id="qCondition" class="pha-condition-table">
<tr>
<td class="pha-label">
<label for="startDate">#(..Get("创建开始日期:"))#</label>
</td>
<td class="pha-input">
<input type="text" id="startDate" data-pha="class:'hisui-datebox',query:true,clear:true">
</td>
<td class="pha-label">
<label for="operateType">#(..Get("质控类型:"))#</label>
</td>
<td class="pha-input">
<input type="text" id="operateType" data-pha="class:'hisui-combobox',clear:true,save:true,query:true">
</td>
<td class="pha-label">
<label for="stkCatGrp">#(..Get("交付中心:"))#</label>
</td>
<td class="pha-input">
<input type="text" id="stkCatGrp" data-pha="class:'hisui-combobox',clear:true,save:false,query:true">
</td>
<td class="pha-label">
<label for="no">#(..Get("需求序号:"))#</label>
</td>
<td class="pha-input">
<input type="text" id="no" data-pha="class:'hisui-validatebox',query:true,clear:true" >
</td>
<td class="pha-button">
<a class="hisui-linkbutton" id="btnFind-q">查询</a>
</td>
<td class="pha-button">
<a data-pha-btn class="hisui-linkbutton" id="btnSave">保存</a>
</td>
</tr>
<tr>
<td class="pha-label">
<label for="endDate">#(..Get("创建结束日期:"))#</label>
</td>
<td class="pha-input">
<input type="text" id="endDate" data-pha="class:'hisui-datebox',query:true,clear:true">
</td>
<td class="pha-label">
<label for="purchUser">#(..Get("质量分级:"))#</label>
</td>
<td class="pha-input">
<input type="text" id="purchUser" data-pha="class:'hisui-combobox',clear:true,query:true">
</td>
<td class="pha-label">
<label for="status">#(..Get("所属产品组:"))#</label>
</td>
<td class="pha-input">
<input type="text" id="status" data-pha="class:'hisui-combobox',query:true,clear:true">
</td>
<td class="pha-label">
<label for="filterField">#(..Get("需求标题:"))#</label>
</td>
<td class="pha-input">
<input type="text" id="filterField" data-pha="class:'hisui-validatebox',query:true,clear:true" >
</td>
<td class="pha-button">
<a class="hisui-linkbutton blue" id="btnClean">清屏</a>
</td>
<td class="pha-button">
<a class="hisui-linkbutton blue" id="btnImportWin" data-phabtn>导入</a>
</td>
</tr>
</table>
</div>
<div data-options="region:'center',headerCls:'panel-header-gray',bodyCls:'panel-body-gray'">
<table id="gridItm"></table>
</div>
</div>
</div>
</div>
<!-- 加载本页面js -->
<script type="text/javascript" src="../scripts/pha/in/v3/com/js/morecondition.js"></script>
<script type="text/javascript" src="../scripts/NTSC/ReqQuaCont/com.js"></script>
<script type="text/javascript" src="../scripts/NTSC/ReqQuaCont/compent.js"></script>
<script type="text/javascript" src="../scripts/NTSC/NTSCReqQuaCont.js"></script>
<script type="text/javascript" src="../scripts/pha/in/v3/com/js/import.js"></script>
<!-- 导入excel文件读取插件 -->
<script type="text/javascript" src="../scripts/pha/plugins/xlsx/xlsx.full.min.js"></script>
<!-- 查询 -->
<script type="text/javascript" src="../scripts/pha/in/v3/rec/query.js"></script>
<csp:include page="../NTSC/NTSCAntiAgentStat/NTSCAntiAgentStat.template.csp" >
<script type="text/javascript">
$('body').append('<div id="winQueryRec" class="js-pha-com-window-sign pha-dialog" style="background-color: transparent;border:false"></div>')
$('#winQueryRec').append($('#template-rec-query').html())
$.parser.parse($('#lyMainView-q').parent());;
</script>
</body>
</html>
2、主页面程序相关的js
/**
* 需求质控列表
* csp: csp/NTSC/NTSCReqQuaCont.csp
* js: scripts/NTSC/NTSCReqQuaCont.js
*
*/
var RECID = "" // 在弹框中使用全局变量取制单界面的主ID
$(function () {
/**
* 内部全局, 数据变化全部通过set给值
*/
var biz = {
data: {
recID: '',
status: 'SAVE',
handleStatus: '',
keepInputFields: ['stkCatGrp', 'stkCatGrpDesc'],
keepInputFlag: true,
defaultData: [
{
'startDate-q': PHA_UTIL.GetDate('t-60'),
'endDate-q': PHA_UTIL.GetDate('t'),
}
]
},
getData: function (key) {
return this.data[key];
},
setData: function (key, data) {
this.data[key] = data;
switch (key) {
case 'recID':
RECID = data;
Select(data);
break;
case 'status':
if (data === '') {
this.data[key] = 'SAVE';
}
ControlOperation();
break;
case 'operateType':
$('#operateType').combobox('setValue', data);
break;
default:
break;
}
}
};
/**
* 初始化
*/
var com = REC_COM;
var settings = com.GetSettings();
var components = REC_COMPONENTS();
COM_CONDITION.InitComponents(); // 更多条件 morecondition.js
components('No', 'no');
components('StkCatGrp', 'stkCatGrp');
components('PurchUser', 'purchUser');
components('Date', 'startDate');
components('Date', 'endDate');
components('FilterField', 'filterField');
components('OperateType', 'operateType', {}, function (rows) {
rows.forEach((element) => {
if (element.DefaultFlag === 'Y') {
biz.setData('operateType', element.RowId);
}
});
});
components('StatusDes', 'status');
components('ItmGrid', 'gridItm', {
toolbar: '#gridItmBar',
rownumber: true, // 可走前端参数设置, 这只是初步默认
pagination: false,
showFooter: true,
data: {
rows: [],
footer: [{ inciCode: '合计' }],
total: 0
},
onNextCell: function (index, field, value, isLastRow, isLastCol) {
if (isLastRow && isLastCol) {
$('#btnAddItm').trigger('click-i');
}
},
onClickCell: function (index, field, value) {
if (CanEdit() === false) {
return;
}
PHA_GridEditor.Edit({
gridID: $(this)[0].id,
index: index,
field: field,
forceEnd: true
});
var isHerb = $('#' + this.id).datagrid('getRow', index).isHerb;
var girdManf = $('#gridItm').datagrid('getEditor', { index: index, field: 'manf' });
if (girdManf !== null) {
let target = girdManf.target;
if (isHerb != 'Y') {
$(target).combobox('disable');
}
}
},
onLoadSuccess: function () {
$(this).datagrid('clearChecked');
com.SumGridFooter('#' + this.id, ['rpAmt', 'spAmt', 'invAmt']);
},
onAfterEdit: function (rowIndex, rowData, changes) {
// 如果是点击保存, 则不需要触发此处
if (biz.getData('Saving') === true) {
return;
}
if (PHA_GridEditor.IsRowChanged('#gridItm', rowIndex) === true) {
ValidateSave(rowData, rowIndex);
CheckDistinct();
com.SumGridFooter('#' + this.id);
}
}
});
PHA_EVENT.Bind('#btnFind-q', 'click', function () {
com.QueryMainGrid('gridItm', com.Condition('#qCondition', 'get'));
});
PHA_EVENT.Bind('#btnClean', 'click', function () {
com.Condition('#qCondition', 'clear');
com.Condition('#winRetQuickModify', 'clear');
biz.setData('recID', '');
biz.setData('status', 'SAVE');
COM_CONDITION.ClearFormData();
SetDefaults();
});
PHA_EVENT.Bind('#btnSave', 'click', function () {
biz.setData('handleStatus', 'Save');
biz.setData('Saving', true);
Save();
biz.setData('Saving', false);
});
InitImport();
/**
* 根据窗口的数据加载不同数据
* @param {*} winID 弹出窗口的ID
* @returns
*/
function HandleWindowData(winID) {
var retData = $.data($('#' + winID)[0], 'retData');
retData = retData || {};
var recID = retData.recID || '';
if (recID === '') {
return;
}
biz.setData('keepInputFlag', false);
var type = retData.type || '';
if (type === '') {
biz.setData('recID', recID);
return;
}
var loc = retData.loc || '';
if (loc !== ''){
$('#loc').combobox('setValue', loc);
}
if (type === 'copy' || type === 'mould') {
biz.setData('recID', '');
com.Copy({ recID: recID }, function (retData) {
com.SetKeyValue2Null(retData.main, biz.getData('keepInputFields'));
if (retData.main.recID !== '') {
// 后台直接复制到表
biz.setData('recID', recID);
return;
}
if (type === 'copy') {
retData.main.dataLinkFrom = recID;
}
PHA.SetVals([retData.main]);
var rows = retData.rows;
PHA_GridEditor.LoadChangedRows('#gridItm', { total: rows.length, rows: rows });
});
biz.setData('status', 'SAVE');
}
}
function Save() {
var apiMethod = com.Fmt2ApiMethod(biz.getData('handleStatus'));
if (apiMethod === '') {
return;
}
var mainObj = com.Condition('#qCondition', 'get', { dotype: 'save' });
if (mainObj === undefined) {
return;
}
mainObj.recID = biz.getData('recID');
mainObj.mainRowID = biz.getData('recID');
mainObj.statusCode = biz.getData('handleStatus');
var rows = [];
for (const it of com.GetChangedRows('gridItm')) {
var rowData = $.extend({}, it);
rows.push(rowData);
}
var data4save = {
main: mainObj,
rows: rows
};
PHA.Loading('Show');
com.Invoke(apiMethod, data4save, function (retData) {
PHA.Loading('Hide');
if (typeof retData === 'string') {
PHA.Alert('', retData, 'warning');
} else {
components('Pop', '处理成功', 'success');
biz.setData('recID', retData.data);
/* 保存之后自动打印 */
if (apiMethod === 'HandleSave'){
if (settings.App.AutoPrintAfterSave == 'Y'){
com.Print(biz.getData('recID'));
}
}
/* 完成之后自动审核 */
if (apiMethod === 'HandleFinish') {
var data4Audit = {
recID: biz.getData('recID')
}
com.Invoke("AutoAuditAfterFinish", data4Audit, function (retData) {
if (typeof retData === 'string') {
PHA.Alert('', retData, 'warning');
} else {
// components('Pop', '自动审核成功', 'success'); 不弹
}
});
}
}
});
}
function ValidateEditGrid() {
var val = true;
var msg = '';
try {
if ($('#gridItm').datagrid('getRows').length == 0) {
throw '没有需要操作的数据';
}
} catch (error) {
val = false;
msg = error;
} finally {
if (msg !== '' && typeof msg === 'string') {
components('Pop', msg);
}
return val;
}
}
function CheckDistinct() {
// 校验重复
var distinctFields = $('#gridItm').datagrid('options').distinctFields;
var distinctMsg = PHA_GridEditor.CheckDistinct({ gridID: 'gridItm', fields: distinctFields });
if (distinctMsg !== '') {
components('Pop', distinctMsg + ',药品、批号、发票号,不能完全相同');
return false;
}
return true;
}
function ValidateSave(rowData, rowIndex) {
var mainObj = com.Condition('#qCondition', 'get', { dotype: 'save' });
if (mainObj === undefined) {
return false;
}
mainObj.recID = biz.getData('recID');
mainObj.mainRowID = biz.getData('recID');
var rows = [];
if (rowData === undefined) {
var forRows = $('#gridItm').datagrid('getRows');
for (const it of forRows) {
var rowData = $.extend({}, it);
rows.push(rowData);
}
} else {
rowData.rowIndex = rowIndex;
if ((rowData.inciCode || '') === '') {
return true;
}
rows.push(rowData);
}
// 异步只是稍微好那么一点, 但是感受不出来
var valRet = com.InvokeSyn('ValidateSave', {
main: mainObj,
rows: rows
});
if (valRet.type !== '') {
PHA.Warn2Grid('#gridItm', { warnInfo: valRet });
if (rowIndex === undefined) {
// 点击保存的提醒
PHA.ShowWarn({ warnInfo: valRet });
if (valRet.type === 'terminate') {
return false;
}
}
}
return true;
}
function AddRow() {
if (CanAddRow() === false) {
return;
}
var rows = $('#gridItm').datagrid('getRows');
if (rows.length > 0) {
var inciCode = rows[rows.length - 1].inciCode || '';
// 最后一行无效, 直接定位编辑
if (inciCode === '') {
PHA_GridEditor.Edit({
gridID: 'gridItm',
index: rows.length - 1,
field: 'inci',
forceEnd: true
});
return;
}
}
PHA_GridEditor.End('gridItm');
var rowIndex = $('#gridItm').datagrid('getRows').indexOf($('#gridItm').datagrid('getSelected'));
if (rowIndex < 0) {
rowIndex = $('#gridItm').datagrid('getRows').length - 1;
}
var defaultRowData = GetDefaultRowData('#gridItm', rowIndex);
PHA_GridEditor.Add({
gridID: 'gridItm',
field: 'inci',
rowData: defaultRowData
});
}
function Select(recID) {
if (recID === '') {
$('#recBanner').phabanner('reset');
$('#gridItm').datagrid('clear');
return;
}
var data = com.GetMainData(recID);
if (typeof data === 'string') {
return;
}
if (biz.getData('keepInputFlag') === true) {
com.DeleteJsonKeys(data, biz.getData('keepInputFields'));
}else{
com.SetKeyValue2Null(data, biz.getData('keepInputFields'));
}
biz.setData('keepInputFlag', true);
data.loc = {
RowId: data.loc,
Description: data.locDesc,
Select: false
}
setTimeout(function(){PHA.SetVals([data]);}, 500);
components('Banner', 'recBanner', data);
biz.setData('status', data.status);
com.QueryItmGrid('gridItm', { recID: recID });
}
function CanEdit() {
if (biz.getData('status') !== 'SAVE') {
return false;
}
return true;
}
function CanAddRow() {
if (CanEdit() === false) {
return false;
}
var data = com.Condition('#qCondition', 'get', { doType: 'save' });
if (data === undefined) {
return false;
}
if (settings.App.StkCatRequire === 'Y' && $('#stkCatGrp').combobox('getValues').toString() === '') {
components('Pop', '类组,不能为空', 'alert');
return false;
}
if (settings.App.StkCatRequire === '' && settings.Com.StkCatSet === 'N' && $('#stkCatGrp').combobox('getValues').toString() === '') {
components('Pop', '类组,不能为空', 'alert');
return false;
}
return true;
}
function GetDefaultRowData(target, rowIndex) {
let retObj = {
checkPackFlag : 'Y'
};
const rows = $(target).datagrid('getRows');
if (rows.length === 0) {
return retObj;
}
rowIndex = isNaN(rowIndex) ? rows.length - 1 : rowIndex; // 上一行
const rowData = rows[rowIndex];
for (const iterator of $('#keyToolInput').keywords('getSelected')) {
if (iterator.id === 'SameInvData') {
retObj.invNo = rowData.invNo;
retObj.invDate = rowData.invDate;
retObj.invCode = rowData.invCode;
}
if (iterator.id === 'SameSxNo') {
retObj.sxNo = rowData.sxNo;
}
}
return retObj;
}
function SetDefaults() {
PHA.SetVals(biz.getData('defaultData'));
$('#operateType').combobox('reload');
$('#stkCatGrp').combobox('reload');
// $('#purchUser').combobox('reload');
}
function ControlOperation() {
com.ControlOperation({
'#btnDelete': {
disabled: biz.getData('recID') === '' || biz.getData('status') !== 'SAVE'
},
'#btnAddItm': {
disabled: biz.getData('status') !== 'SAVE'
},
'#btnModify': {
disabled: biz.getData('status') !== 'SAVE'
},
'#btnPrint': {
disabled: biz.getData('recID') === ''
},
'#btnDeleteItm': {
disabled: biz.getData('status') !== 'SAVE'
},
'#btnFinish': {
disabled: biz.getData('status') !== 'SAVE',
hide: biz.getData('status') !== 'SAVE'
},
'#btnFinishCancel': {
disabled: biz.getData('status') !== 'COMP',
hide: biz.getData('status') == 'SAVE'
},
'#btnExport': {
disabled: biz.getData('recID') === ''
},
'#btnSave': {
disabled: biz.getData('status') !== 'SAVE'
}
});
if (settings.App.AutoTransToReqLoc !== 'Y') {
$('#labelForReqLoc').hide();
$('#reqLoc').next(".combo").hide();
}
}
function LoadCopyGo() {
var topRetData = PHA_COM.TOP.Get('pha.in.v3.rec.create.csp_copy', true);
if (topRetData !== '') {
$('#btnClean').trigger('click-i');
// 必须等界面加载完成才能赋值,不然界面表单的初始化会覆盖复制过来的值
setTimeout(function () {
PHA.SetVals([topRetData.main]);
var rows = topRetData.rows;
PHA_GridEditor.LoadChangedRows('#gridItm', { total: rows.length, rows: rows });
}, 300);
}
}
/**检查导入数据*/
function ImportCheck() {
var rows = $('#gridItm').datagrid('getRows');
if (rows != 0){
PHA.Msg('info', '导入时请保持明细列表为空!' );
return false;
}
return true;
}
function InitImport() {
PHAIN_IMPORT.FileName = $g('需求导入模板') + '.xlsx';
PHAIN_IMPORT.Title = {
ReqNo: $g('需求序号'),
ReqTitle: $g('需求标题'),
ReqDesc: $g('需求描述'),
ReqAttach: $g('需求附件'),
QCType: $g('质控类型'),
CompType: $g('投诉类型'),
CompContent: $g('投诉内容'),
QGrade: $g('质量分级'),
QIssueType: $g('质量问题类型'),
QIssueDesc: $g('质量问题描述'),
QIStatus: $g('质检状态'),
CaseReq: $g('案例需求'),
ImpSugg: $g('改进意见'),
DelCenter: $g('交付中心'),
Partition: $g('所属分区'),
Initiator: $g('发起人'),
InitGroup: $g('发起组'),
Receiver: $g('接收人'),
RecGroup: $g('接收组'),
Assigner: $g('分配人'),
CurrHandler: $g('需求当前人'),
PubDeadline: $g('公示截止日期'),
ReleaseDate: $g('发布日期'),
QIPeriodNo: $g('质检期数'),
HighScore: $g('最高分'),
LowScore: $g('最低分'),
AvgScore: $g('平均分'),
ScoreDiff: $g('分差'),
ScoredPers: $g('已评分人员'),
CurrGroup: $g('当前组'),
Creator: $g('创建人'),
CurrPerson: $g('当前人'),
CreateDate: $g('创建日期'),
};
PHAIN_IMPORT.TmpData = [{
ReqNo: '355376',
ReqTitle: '住院工作月报台帐(1)',
ReqDesc: '【操作步骤】(已完成)住院工作月报台帐(1)【预期结果】【实际结果】【说明】',
ReqAttach: '无',
QCType: '质量检查-质检小组',
CompType: '投诉类型',
CompContent:'投诉内容',
QGrade: '低',
QIssueType: '需求内容不清晰',
QIssueDesc: '需求各项描述都一样',
QIStatus: '创建',
CaseReq: '1',
ImpSugg: '改进意见',
DelCenter: '湖北交付中心',
Partition: '湖北西北组',
Initiator: '时培超',
InitGroup: '湖北东风集团医院',
Receiver: '陈乙',
RecGroup: '综合查询',
Assigner: '分配人',
CurrHandler:'时培超',
PubDeadline:'公示截止日期',
ReleaseDate:'发布日期',
QIPeriodNo: '质检期数',
HighScore: '最高分',
LowScore: '最低分',
AvgScore: '平均分',
ScoreDiff: '分差',
ScoredPers: '已评分人员',
CurrGroup: '湖北东风集团医院',
Creator: '苑思琦',
CurrPerson: '当前人',
CreateDate: '2023-06-11',
}];
PHAIN_IMPORT.InitBox('导入入库信息', ImportCheck,
function(rows) {
if (rows.length === 0) {
components('Pop', '无明细数据!');
return;
}
var hasOnlyReqNoData = true;
var reqNoValues = [];
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var keys = Object.keys(row);
var hasValidReqNo = false;
var hasOtherValidColumns = false;
for (var j = 0; j < keys.length; j++) {
var key = keys[j];
var value = row[key];
var isValidValue = value !== undefined &&
value !== null &&
value.toString().trim() !== '';
if (key === 'ReqNo' || key === 'reqNo' || key === 'REQNO') {
if (isValidValue) {
hasValidReqNo = true;
reqNoValues.push(value.toString().trim());
}
} else if (isValidValue) {
hasOtherValidColumns = true;
}
}
if (!hasValidReqNo || hasOtherValidColumns) {
hasOnlyReqNoData = false;
break;
}
}
if (hasOnlyReqNoData && reqNoValues.length > 0) {
var uniqueReqNos = [...new Set(reqNoValues)];
var reqNoString = uniqueReqNos.join(',');
try {
components('No', reqNoString);
} catch(e) {
$('#no').val(reqNoString);
}
var queryParams = {};
queryParams.no = reqNoString;
try {
var mainObj = com.Condition('#qCondition', 'get', { dotype: 'save' });
if (mainObj) {
queryParams = Object.assign({}, mainObj, queryParams);
}
} catch(e) {
queryParams.startDate = "";
queryParams.endDate = "";
queryParams.operateType = "";
queryParams.stkCatGrp = "";
queryParams.purchUser = "";
queryParams.status = "";
queryParams.filterField = "";
}
PHA.Loading('Show');
com.Invoke('GetMainRows', queryParams, function(retData) {
PHA.Loading('Hide');
if (retData && Array.isArray(retData) && retData.length > 0) {
PHA_GridEditor.LoadChangedRows('#gridItm', {
total: retData.length,
rows: retData
});
components('Pop', '查询成功!共找到' + retData.length + '条数据。');
} else {
components('Pop', '未找到匹配的数据!');
PHA_GridEditor.LoadChangedRows('#gridItm', {
total: 0,
rows: []
});
}
$('#ImportWin').dialog('close');
}, function(error) {
PHA.Loading('Hide');
components('Pop', '查询失败:' + (error || '未知错误'));
$('#ImportWin').dialog('close');
});
return;
}
// 否则,按照原来的逻辑执行(多列数据的情况)
var mainObj = com.Condition('#qCondition', 'get', { dotype: 'save' });
if (mainObj === undefined) {
return;
}
var pJson = {
main: mainObj,
rows: rows
};
PHA.Loading('Show');
var retData = com.InvokeSyn('GenerateImport', pJson);
if (typeof retData === 'string') {
PHAIN_IMPORT.Clear(); // 如果这里不清空,在excel编辑之后直接点击导入时无法读取文件,只能重新选取
PHA.Loading('Hide');
return;
}
var rows = retData.rows;
PHA_GridEditor.LoadChangedRows('#gridItm', { total: rows.length, rows: rows });
$('#ImportWin').dialog('close');
PHA.Loading('Hide');
}
);
}
setTimeout(function () {
if (settings.Com.StkCatSet === 'Y') {
PHA.DataPha.Set('stkCatGrp', { required: false });
}
$.extend(biz.getData('defaultData')[0], settings.App.DefaultData);
SetDefaults();
ControlOperation();
$('body').on('click', function () {
$('.tooltip').hide();
});
var banEditFields = [];
if (settings.App.AllowInputRpAmt !== 'Y') {
banEditFields.push('rpAmt');
}
if (settings.Com.RpRule == '2') {
banEditFields.push('rp');
}
if (settings.Com.RpRule != '3') {
banEditFields.push('sp');
}
com.BanGridEditors('#gridItm', banEditFields);
if (settings.App.PurchaserNotNull !== 'Y') {
// 采购员必填
PHA.DataPha.Set('purchUser', { required: false });
}
PHA.SetRequired($('#qCondition [data-pha]'));
com.SetPage('NTSC/NTSCReqQuaCont.csp');
var topRecID = com.Top.Get('recID', true);
if (topRecID !== '') {
biz.setData('recID', topRecID);
}
// 由依据订单界面而来的数据, 嵌入界面的形式用此
if (top.PHAINPO_TO_PHAINREC) {
var topData = top.PHAINPO_TO_PHAINREC;
PHA.SetVals([topData.main]);
$('#gridItm').datagrid('loadData', {
total: topData.rows.length,
rows: topData.rows
});
$('#gridItm').parent().find('[datagrid-row-index] [field="qty"]').addClass('datagrid-value-changed');
delete top.PHAINPO_TO_PHAINREC;
}
REC_QUICKMODIFY('gridItm', components, com);
LoadCopyGo();
}, 0);
});3、主要的查询方法
/// Description: 需求质控列表查询
/// Debug: w ##class(PHA.IN.REC.Query).GetMainRows({"startDate": "","operateType": "质量检查-质检小组","stkCatGrp": "","no": "","endDate": "","purchUser": "高,中","status": "","filterField": ""}).%ToJSON()
/// w ##class(PHA.IN.REC.Query).GetMainRows({"startDate":"","operateType":"质量检查-质检小组","stkCatGrp":"甘青交付中心","no":"","endDate":"","purchUser":"","status":"体检","filterField":""})
ClassMethod GetMainRows(pJson As %DynamicObject)
{
s (preleth,rowData)=""
s pStartDate = $$$zdh(pJson.startDate)
s pEndDate = $$$zdh(pJson.endDate)
s operateType = pJson.operateType
s stkCatGrp = pJson.stkCatGrp
s no = pJson.no
s purchUser = pJson.purchUser
s status=pJson.status
s filterField = pJson.filterField
s sqlCode($i(sqlCode)) = " SELECT %ID ntscID"
s sqlCode($i(sqlCode)) = " FROM NTSC_ReqQua WHERE 1=1"
if (pStartDate'=""){
s sqlCode($i(sqlCode)) = " and NTSC_CreateDate BETWEEN " _ pStartDate _ " AND " _ pEndDate _""
}
// 处理质控类型 - 支持多选
if (operateType '= "") {
s wherePart = ""
s count = $l(operateType, ",")
for i=1:1:count {
s value = $p(operateType, ",", i)
s value = $zstrip(value, "<>W")
if (wherePart '= "") {
s wherePart = wherePart _ " OR "
}
s wherePart = wherePart _ "NTSC_QCType LIKE '%" _ value _ "%'"
}
if (wherePart '= "") {
s sqlCode($i(sqlCode)) = " AND (" _ wherePart _ ")"
}
}
// 处理交付中心 - 支持多选
if (stkCatGrp '= "") {
s wherePart = ""
s count = $l(stkCatGrp, ",")
for i=1:1:count {
s value = $p(stkCatGrp, ",", i)
s value = $zstrip(value, "<>W")
if (wherePart '= "") {
s wherePart = wherePart _ " OR "
}
s wherePart = wherePart _ "NTSC_DelCenter LIKE '%" _ value _ "%'"
}
if (wherePart '= "") {
s sqlCode($i(sqlCode)) = " AND (" _ wherePart _ ")"
}
}
// 处理需求序号 - 支持多选
if (no '= "") {
s wherePart = ""
s count = $l(no, ",")
for i=1:1:count {
s value = $p(no, ",", i)
s value = $zstrip(value, "<>W")
if (wherePart '= "") {
s wherePart = wherePart _ " OR "
}
s wherePart = wherePart _ "NTSC_ReqNo LIKE '%" _ value _ "%'"
}
if (wherePart '= "") {
s sqlCode($i(sqlCode)) = " AND (" _ wherePart _ ")"
}
}
// 处理质量分级 - 支持多选模糊查询
if (purchUser '= "") {
s wherePart = ""
s count = $l(purchUser, ",")
for i=1:1:count {
s value = $p(purchUser, ",", i)
s value = $zstrip(value, "<>W")
if (wherePart '= "") {
s wherePart = wherePart _ " OR "
}
s wherePart = wherePart _ "NTSC_QGrade LIKE '%" _ value _ "%'"
}
if (wherePart '= "") {
s sqlCode($i(sqlCode)) = " AND (" _ wherePart _ ")"
}
}
// 处理所属产品组 - 支持多选
if (status '= "") {
s wherePart = ""
s count = $l(status, ",")
for i=1:1:count {
s value = $p(status, ",", i)
s value = $zstrip(value, "<>W")
if (wherePart '= "") {
s wherePart = wherePart _ " OR "
}
s wherePart = wherePart _ "NTSC_RecGroup LIKE '%" _ value _ "%'"
}
if (wherePart '= "") {
s sqlCode($i(sqlCode)) = " AND (" _ wherePart _ ")"
}
}
// 处理需求标题 - 支持多选模糊查询
if (filterField '= "") {
s wherePart = ""
s count = $l(filterField, ",")
for i=1:1:count {
s value = $p(filterField, ",", i)
s value = $zstrip(value, "<>W")
if (wherePart '= "") {
s wherePart = wherePart _ " OR "
}
s wherePart = wherePart _ "NTSC_ReqTitle LIKE '%" _ value _ "%'"
}
if (wherePart '= "") {
s sqlCode($i(sqlCode)) = " AND (" _ wherePart _ ")"
}
}
#dim retArr as %DynamicArray = []
s sqlResult = ##class(%SQL.Statement).%ExecDirect(.sqlStatement, .sqlCode)
b ;1
for {
q:('sqlResult.%Next())
s ntscID = sqlResult.%Get("ntscID")
s recData = $g(^NTSCReqQua(ntscID))
b ;0
s rowData = ##class(NTSC.Pharmacy.ReqQuaCont.NTSCReqQuaCont).GetMainData(ntscID)
d retArr.%Push(rowData)
}
q retArr
}
评论