From 580a6c52eca804f4315c900a384f8beb09fd89a1 Mon Sep 17 00:00:00 2001 From: mzr <1562242162@qq.com> Date: Thu, 17 Oct 2024 12:46:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=B0=E8=B4=A7=E6=A3=80=E9=AA=8C=E5=8D=95?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=9F=E6=88=90=E4=B8=8D=E5=90=88=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E5=8D=95=E7=9A=84=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pu/dhjyd/dhjydmaster/main/index.js | 641 ++++++++++++++----------- 1 file changed, 350 insertions(+), 291 deletions(-) diff --git a/src/pu/dhjyd/dhjydmaster/main/index.js b/src/pu/dhjyd/dhjydmaster/main/index.js index 2a07ad0..4eb2ebc 100644 --- a/src/pu/dhjyd/dhjydmaster/main/index.js +++ b/src/pu/dhjyd/dhjydmaster/main/index.js @@ -166,12 +166,12 @@ import ReactDOM from 'react-dom'; //=============导入高阶组件区============= //1导入高阶组件,公共部分 -import {createPage, base, ajax, high, toast, promptBox, deepClone, print, output} from 'nc-lightapp-front'; -const {PrintOutput, BillTrack} = high; -const {NCDiv, NCAffix, NCTabs, NCScrollElement, NCTooltip, NCToggleViewBtn} = base; +import { createPage, base, ajax, high, toast, promptBox, deepClone, print, output } from 'nc-lightapp-front'; +const { PrintOutput, BillTrack } = high; +const { NCDiv, NCAffix, NCTabs, NCScrollElement, NCTooltip, NCToggleViewBtn } = base; //2导入高阶组件, UIExtend的部分 -import {Utils} from './Utils'; -const EMPTY_FN = function(){}; //空函数 +import { Utils } from './Utils'; +const EMPTY_FN = function () { }; //空函数 import ExcelOutput from 'uap/common/components/ExcelOutput'; // 导出组件 import excelImportconfig from 'uap/common/components/excelImportconfig'; // 导入配置方法 @@ -187,14 +187,15 @@ import ApprovalTrans from 'uap/common/components/approvalTrans'; //指派组件 const URLS = { // 请求路径 printUrl: '/nccloud/pu/dhjyd/PrintDhjydMasterVOAction.do', - auditUrl: '/nccloud/pu/dhjyd/PFlowDhjydMasterVOAction.do',//审批流提交收回等请求路径 + auditUrl: '/nccloud/pu/dhjyd/PFlowDhjydMasterVOAction.do',//审批流提交收回等请求路径 saveUrl: '/nccloud/pu/dhjyd/SaveDhjydMasterVOAction.do', deleteUrl: '/nccloud/pu/dhjyd/DeleteDhjydMasterVOAction.do', listUrl: '/nccloud/pu/dhjyd/ListDhjydMasterVOAction.do', loadUrl: '/nccloud/pu/dhjyd/LoadDhjydMasterVOAction.do', addUrl: '/nccloud/pu/dhjyd/AddDhjydMasterVOAction.do', editUrl: '/nccloud/pu/dhjyd/EditDhjydMasterVOAction.do', - copyUrl: '/nccloud/pu/dhjyd/CopyDhjydMasterVOAction.do' + copyUrl: '/nccloud/pu/dhjyd/CopyDhjydMasterVOAction.do', + addUnPassUrl: '/nccloud/pu/dhjyd/ApproveDhjydMasterVOAction.do', // todo: 新增不合格审批单 }; const ACTIONS = { // 按钮编码 @@ -207,9 +208,9 @@ const ACTIONS = { // 按钮编码 UNCOMMIT: 'UnCommit', //收回 APPROVEDETAIL: 'ApproveDetail', //审批详情 BILLTRACK: 'BillTrack', //单据追溯 - ADDLINE : 'AddLine', //增行 - DELLINE : 'DelLine', //删行 - COPYLINE : 'CopyLine', //复制行 + ADDLINE: 'AddLine', //增行 + DELLINE: 'DelLine', //删行 + COPYLINE: 'CopyLine', //复制行 PASTENDLINE: 'PastEndLine', //粘贴到末行 COPYCANCELLINE: 'CopyCancelLine', //复制行取消 COPYLINE_OPR: 'CopyLineOpr', //操作列复制行 @@ -225,22 +226,23 @@ const ACTIONS = { // 按钮编码 SAVE: 'Save', //保存 SAVEADD: 'SaveAdd', // 保存新增 COPY: 'Copy', // 复制 + ADDUNPASS: 'addUnPass', // 生成不合格审批单 MORE: 'More' // 更多 } const FIELDS = { // 字段编码 - APPROVESTATUS : 'approvestatus', - BILLTYPE : 'billtype', + APPROVESTATUS: 'approvestatus', + BILLTYPE: 'billtype', TRANSTYPEPK: 'transtypepk', TRANSTYPE: 'transtype', - SRC_ROWNO:[ - 'srcrowno' + SRC_ROWNO: [ + 'srcrowno' ], - ROWNO:[ - 'rowno' + ROWNO: [ + 'rowno' ], - SRC_BILLTYPE:'srcbilltype', - SRC_BILLID:'srcbillid', + SRC_BILLTYPE: 'srcbilltype', + SRC_BILLID: 'srcbillid', BUSITYPE: 'busitype', CODE: 'code', PK_ORG: 'pk_org', @@ -264,7 +266,7 @@ const PRINTNODEKEY_CARD = '4004012H902'; // 卡片打印模板标识 const BILLTYPE = 'DHJY'; const FLOW_ACTION = { //审批流单据动作常量 - SAVE: 'SAVE',//提交 + SAVE: 'SAVE',//提交 UNSAVE: 'UNSAVE',//收回 SAVEBASE: 'SAVEBASE'//保存 } @@ -277,7 +279,7 @@ const FLOW_ACTION = { //审批流单据动作常量 * 目前的这种写法,采用的是MVVM的架构模式,把state看做是VM,所以我们需要把目光集中在state ****************************************************************************************************/ -export class ApplicationPage extends Component{ +export class ApplicationPage extends Component { /** * 构造方法,js要求的必须方法,构造整个页面对象, @@ -296,9 +298,9 @@ export class ApplicationPage extends Component{ * 配置的获取方式,优先取平台定义,其次取传入配置定义, 最后默认 */ this.config = { - pagecode: props.getSearchParam('p') || props.appcode || 'pagecode未定义', //页面编码定义 - appcode: props.getSearchParam('c') || props.appcode || 'appcode未定义', //应用编码定义 - title: this.props.getSearchParam('n') || props.title || 'Demo主从表', //表体定义 + pagecode: props.getSearchParam('p') || props.appcode || 'pagecode未定义', //页面编码定义 + appcode: props.getSearchParam('c') || props.appcode || 'appcode未定义', //应用编码定义 + title: this.props.getSearchParam('n') || props.title || 'Demo主从表', //表体定义 moduleId: '4004012H9', //多语资源目录id domainName: 'pu' //模块域名 } @@ -333,7 +335,7 @@ export class ApplicationPage extends Component{ ...this.config, //导入全局配置, callback: (data) => { - let {context, template, button, lang, refer = {}} = data; + let { context, template, button, lang, refer = {} } = data; /** * 初始化模板,修改模板相关配置 * 初始化按钮,修改按钮相关配置, @@ -346,13 +348,13 @@ export class ApplicationPage extends Component{ new Promise(resolve => this.props.meta.setMeta(template, () => resolve(true))), new Promise( resolve => this.props.button.setButtons(button, () => resolve(true))), - new Promise(resolve => this.setState({...this.state, context}, () => resolve(true))) + new Promise(resolve => this.setState({ ...this.state, context }, () => resolve(true))) ]).then(() => { - this.setState({isPageReady: true}, () => { //标记自己页面已经完成,并进行第一次的渲染 - let {moduleName, billType} = this.state.execlExport; //此处简化解构,一遍能够代码清晰 + this.setState({ isPageReady: true }, () => { //标记自己页面已经完成,并进行第一次的渲染 + let { moduleName, billType } = this.state.execlExport; //此处简化解构,一遍能够代码清晰 this.props.button.setUploadConfig('Import', excelImportconfig(this.props, moduleName, billType, true, '', this.config, () => { // 导入后回调 - let {showmode} = this.state; + let { showmode } = this.state; if (showmode != SHOWMODE_LIST) { // 不是列表态导入不进行刷新 return; } @@ -360,7 +362,7 @@ export class ApplicationPage extends Component{ this.listTableData({ callback: (data) => { // data为查询结果 // 执行列表查询后操作 - this.afterLoadList({data}); + this.afterLoadList({ data }); } }); })); @@ -378,10 +380,10 @@ export class ApplicationPage extends Component{ * 可以初始化一些初始的功能,比如查询下列表并显示数据等 */ pageReady = () => { - let {context} = this.state; - this.props.search.setSearchValByField('dhjydMasterQuery', FIELDS.PK_ORG, {display: context.org_Name, value: context.pk_org}); + let { context } = this.state; + this.props.search.setSearchValByField('dhjydMasterQuery', FIELDS.PK_ORG, { display: context.org_Name, value: context.pk_org }); // 交易类型发布小应用 - let {context: {paramMap} = {}} = this.state; + let { context: { paramMap } = {} } = this.state; if (paramMap && paramMap.pk_transtype) { let meta = this.props.meta.getMeta(); meta['dhjydMasterQuery'].items.find(item => { @@ -396,28 +398,28 @@ export class ApplicationPage extends Component{ return true; } }); - this.props.search.setSearchValByField('dhjydMasterQuery', FIELDS.TRANSTYPEPK, {display: paramMap.transtype_name, value: paramMap.pk_transtype}); + this.props.search.setSearchValByField('dhjydMasterQuery', FIELDS.TRANSTYPEPK, { display: paramMap.transtype_name, value: paramMap.pk_transtype }); this.props.meta.setMeta(meta); } this.updateBtnStatus(); // 更新按钮状态 } /** -  * 初始化平台定义的单据模板 -  * 触发时机:执行loadNCCResource,加载完模板、多语、等初始化信息之后触发 -  * 功能:对加载完的模板进行个性化调整 -  * 可实现举例功能: -  * 1.参照表单联动过滤, 参见[Demo1]  -  * 2.处理表格操作列,   参见[Demo2] -  */ + * 初始化平台定义的单据模板 + * 触发时机:执行loadNCCResource,加载完模板、多语、等初始化信息之后触发 + * 功能:对加载完的模板进行个性化调整 + * 可实现举例功能: + * 1.参照表单联动过滤, 参见[Demo1]  + * 2.处理表格操作列,   参见[Demo2] + */ initMeta = (meta) => { // 添加列表行操作列 meta['dhjydMasterList'].items.push({ attrcode: 'opr', // 列标识, 固定 - itemtype:'customer', // 列类型, 固定 + itemtype: 'customer', // 列类型, 固定 label: '操作', // 列名 width: 200, // 列宽度 - className : 'table-opr', // 样式 + className: 'table-opr', // 样式 fixed: 'right', // 悬浮方向 visible: true, // 是否可见 render: (text, record, index) => { // 渲染方法 @@ -433,21 +435,21 @@ export class ApplicationPage extends Component{ return this.props.button.createOprationButton(oprButtons, { area: 'tablebtn', // 按钮区域编码 buttonLimit: 3, // 允许的按钮最多显示数量 - onButtonClick: (props, btncode) => this.onBtnClickHead(props, btncode, {record, index}) // 点击按钮 + onButtonClick: (props, btncode) => this.onBtnClickHead(props, btncode, { record, index }) // 点击按钮 }); } }); // 添加卡片行操作列 meta['dhjydSlave0Sub'].items.push({ attrcode: 'opr', // 列标识, 固定 - itemtype:'customer', // 列类型, 固定 + itemtype: 'customer', // 列类型, 固定 label: '操作', // 列名 width: 200, // 列宽度 - className : 'table-opr', // 样式 + className: 'table-opr', // 样式 fixed: 'right', // 悬浮方向 visible: true, // 是否可见 render: (text, record, index) => { // 渲染方法 - let {showmode, editmode, card: {copiedArea, copiedRows}} = this.state; + let { showmode, editmode, card: { copiedArea, copiedRows } } = this.state; //获得符合条件按钮的key(编码)的集合 let oprButtons = []; if (copiedArea) { @@ -463,30 +465,30 @@ export class ApplicationPage extends Component{ return this.props.button.createOprationButton(oprButtons, { area: 'dhjydSlave0SubOpr', // 按钮区域编码 buttonLimit: 3, // 允许的按钮最多显示数量 - onButtonClick: (props, btncode) => this.onBtnClickFormlist(props, btncode, 'dhjydSlave0Sub', {data: record, index}) // 点击按钮 + onButtonClick: (props, btncode) => this.onBtnClickFormlist(props, btncode, 'dhjydSlave0Sub', { data: record, index }) // 点击按钮 }); } }); // 主组织权限过滤 : 加载的是当前登录人有权限的组织 // 卡片表单区主组织字段添加权限过滤 - meta['dhjydMasterForm'].items.find(item => { + meta['dhjydMasterForm'].items.find(item => { if (item.attrcode == FIELDS.PK_ORG) { item.queryCondition = () => { return { - AppCode : this.config.appcode, - TreeRefActionExt : 'nccloud.web.refer.sqlbuilder.PrimaryOrgSQLBuilder' + AppCode: this.config.appcode, + TreeRefActionExt: 'nccloud.web.refer.sqlbuilder.PrimaryOrgSQLBuilder' }; }; return true; } }); - // 列表查询区主组织字段添加权限过滤 - meta['dhjydMasterQuery'].items.find(item => { + // 列表查询区主组织字段添加权限过滤 + meta['dhjydMasterQuery'].items.find(item => { if (item.attrcode == FIELDS.PK_ORG) { item.queryCondition = () => { return { - AppCode : this.config.appcode, - TreeRefActionExt : 'nccloud.web.refer.sqlbuilder.PrimaryOrgSQLBuilder' + AppCode: this.config.appcode, + TreeRefActionExt: 'nccloud.web.refer.sqlbuilder.PrimaryOrgSQLBuilder' }; }; return true; @@ -594,7 +596,7 @@ export class ApplicationPage extends Component{ //  } //}) - //过滤出需要行按钮的数据 + //过滤出需要行按钮的数据 let tableOprBtn = [ACTIONS.EDIT, ACTIONS.DELETE, ACTIONS.COMMIT, ACTIONS.UNCOMMIT, ACTIONS.APPROVEDETAIL]; let allCommonBtn = (button || []).filter(btn => btn.area == 'common').map(btn => btn.children && btn.children.length > 0 ? @@ -606,7 +608,7 @@ export class ApplicationPage extends Component{ let cloneBtns = JSON.parse(JSON.stringify(mergebtn)) //修改表体按钮的区域和按钮名称 - cloneBtns = cloneBtns.map(btn => { + cloneBtns = cloneBtns.map(btn => { btn.area = "tablebtn" btn.children = [] // btn.key = "table_" + btn.key @@ -614,7 +616,7 @@ export class ApplicationPage extends Component{ }) //合并返回 - return [...button || [],...cloneBtns]; + return [...button || [], ...cloneBtns]; } /** @@ -790,13 +792,14 @@ export class ApplicationPage extends Component{ handlePageInfoChange: (props, config, pks, total) => { // 表格分页信息改变及点击翻页按钮 // 调用列表查询方法,通过回调处理查询结果 this.listTableData({ - callback: data => this.afterLoadList({data}) // 执行列表查询后逻辑,data为查询结果 + callback: data => this.afterLoadList({ data }) // 执行列表查询后逻辑,data为查询结果 }); }, selectedChange: this.onListSelectRowsChanged, // 选择框的选中行改变 onSelectedAll: this.onListSelectRowsChanged, // 点击全选框 onSelected: this.onListSelectRowsChanged // 点击选择框 - } }, + } + }, card: { // 卡片页面 form: { // 表单 area: 'dhjydMasterForm', // 区域编码 @@ -871,7 +874,7 @@ export class ApplicationPage extends Component{ } }); // 审批流 - Utils.apply(state, { + Utils.apply(state, { approveDetail: { // 审批详情 show: false, //是否显示 close: this.onCloseApproveDetail, // 关闭事件回调函数 @@ -913,20 +916,20 @@ export class ApplicationPage extends Component{ //4 渲染方法 render() { - let {isPageReady, showmode, head, headBtn, list, card} = this.state; + let { isPageReady, showmode, head, headBtn, list, card } = this.state; - if(!isPageReady) return ''; //页面资源加载完成后才能渲染页面 + if (!isPageReady) return ''; //页面资源加载完成后才能渲染页面 // 渲染列表 const renderList = () => { - let {search, table} = list; + let { search, table } = list; if (showmode != SHOWMODE_LIST) { return ''; } return (
- {this.state.head.affixed = affixed; this.setState(this.state)}}> - + { this.state.head.affixed = affixed; this.setState(this.state) }}> + {this.props.BillHeadInfo.createBillHeadInfo(head)} @@ -959,13 +962,13 @@ export class ApplicationPage extends Component{ *************************************************************************************************************************/ // 渲染卡片 const renderCard = () => { - let {form, formlist, cardPagniation} = card; + let { form, formlist, cardPagniation } = card; if (showmode != SHOWMODE_CARD) { return ''; } // cardtable存在bug,拷贝使用的是Object.assign(),会修改当前state let newFormlist = deepClone(formlist); - let {'dhjydSlave0Sub' : tableConfig, ...other} = newFormlist; + let { 'dhjydSlave0Sub': tableConfig, ...other } = newFormlist; return (
@@ -977,7 +980,7 @@ export class ApplicationPage extends Component{
{this.props.button.createButtonApp(headBtn)}
- + {this.props.cardPagination.createCardPagination(cardPagniation)} @@ -988,7 +991,7 @@ export class ApplicationPage extends Component{
- {this.props.cardTable.createCardTable(tableConfig.area, {...tableConfig, multiConfig: other})} + {this.props.cardTable.createCardTable(tableConfig.area, { ...tableConfig, multiConfig: other })}
@@ -997,7 +1000,7 @@ export class ApplicationPage extends Component{ // 导入导出组件 const renderExcelOutput = () => { - let {execlExport} = this.state; + let { execlExport } = this.state; if (showmode != SHOWMODE_LIST && showmode != SHOWMODE_CARD) { return ''; } @@ -1011,43 +1014,43 @@ export class ApplicationPage extends Component{ // 打印输出组件 const renderPrintOutput = () => { - let {printOutput} = this.state; + let { printOutput } = this.state; if (showmode != SHOWMODE_LIST && showmode != SHOWMODE_CARD) { return ''; } return ( - + ); } // 附件组件 const renderUploader = () => { - let {uploader} = this.state; + let { uploader } = this.state; if ((showmode != SHOWMODE_LIST && showmode != SHOWMODE_CARD) || !uploader.visible) { return ''; } return ( - + ); } - // 审批流渲染页面定义,审批详情&指派 - const renderApproveInfo = () => { - let {approveDetail, approvalTrans} = this.state; - if (showmode != SHOWMODE_LIST && showmode != SHOWMODE_CARD) { + // 审批流渲染页面定义,审批详情&指派 + const renderApproveInfo = () => { + let { approveDetail, approvalTrans } = this.state; + if (showmode != SHOWMODE_LIST && showmode != SHOWMODE_CARD) { return ''; } - return ( + return (
- - {approvalTrans.display && } + + {approvalTrans.display && }
); } //单据追溯的渲染方法 let renderBillTrack = () => { - let {billtrack} = this.state; + let { billtrack } = this.state; if ((showmode != SHOWMODE_LIST && showmode != SHOWMODE_CARD) || !billtrack.show) { return ''; } @@ -1074,8 +1077,8 @@ export class ApplicationPage extends Component{ // 修改按钮状态 // callback 回调,无参数 - updateBtnStatus = ({callback = EMPTY_FN} = {}) => { - let {showmode, editmode, list: {table: {allpks}}, card: {formlist, copiedArea, copiedRows}} = this.state; + updateBtnStatus = ({ callback = EMPTY_FN } = {}) => { + let { showmode, editmode, list: { table: { allpks } }, card: { formlist, copiedArea, copiedRows } } = this.state; let isBrowse = editmode == EDITMODE_BROWSE; let checkedDatas = this.getCheckedDatas(); @@ -1093,6 +1096,7 @@ export class ApplicationPage extends Component{ [ACTIONS.SAVEADD]: showmode == SHOWMODE_CARD && !isBrowse && !hasCheckedRow, [ACTIONS.CANCEL]: showmode == SHOWMODE_CARD && !isBrowse, [ACTIONS.COPY]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse, + [ACTIONS.ADDUNPASS]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse, [ACTIONS.MORE]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse // ,'ShowModal': (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse } @@ -1107,6 +1111,7 @@ export class ApplicationPage extends Component{ [ACTIONS.SAVEADD]: hasCopiedRows, [ACTIONS.CANCEL]: hasCopiedRows, [ACTIONS.COPY]: !hasCheckedRow, + [ACTIONS.ADDUNPASS]: !hasCheckedRow, [ACTIONS.MORE]: false // ,'ShowModal': false } @@ -1137,49 +1142,49 @@ export class ApplicationPage extends Component{ btnDisabled[btnAreaCode + '_PastNextLineOpr'] = false; }); - // 导入导出按钮控制 - Object.assign(btnVisible, { - [ACTIONS.IMPORT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse, - [ACTIONS.EXPORT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse - }); - Object.assign(btnDisabled, { - [ACTIONS.IMPORT]: false, - [ACTIONS.EXPORT]: false - }); - // 打印输出按钮控制 - Object.assign(btnVisible, { - [ACTIONS.PRINT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse, - [ACTIONS.OUTPUT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse - }); - Object.assign(btnDisabled, { + // 导入导出按钮控制 + Object.assign(btnVisible, { + [ACTIONS.IMPORT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse, + [ACTIONS.EXPORT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse + }); + Object.assign(btnDisabled, { + [ACTIONS.IMPORT]: false, + [ACTIONS.EXPORT]: false + }); + // 打印输出按钮控制 + Object.assign(btnVisible, { + [ACTIONS.PRINT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse, + [ACTIONS.OUTPUT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse + }); + Object.assign(btnDisabled, { [ACTIONS.PRINT]: !hasCheckedRow, [ACTIONS.OUTPUT]: !hasCheckedRow - }); - // 附件按钮控制 - Object.assign(btnVisible, { - [ACTIONS.ATTACHMENT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse - }); - Object.assign(btnDisabled, { + }); + // 附件按钮控制 + Object.assign(btnVisible, { + [ACTIONS.ATTACHMENT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse + }); + Object.assign(btnDisabled, { [ACTIONS.ATTACHMENT]: !isCheckedOne - }); - // 审批流按钮控制 - let isAllFree = hasCheckedRow && checkedDatas.filter(row => row.values[FIELDS.APPROVESTATUS].value !== '-1').length == 0; - let hasFree = hasCheckedRow && checkedDatas.filter(row => row.values[FIELDS.APPROVESTATUS].value == '-1').length > 0; - let hasNotFree = hasCheckedRow && checkedDatas.filter(row => row.values[FIELDS.APPROVESTATUS].value !== '-1').length > 0; - // let isCommit = hasCheckedRow && checkedDatas.filter(row => row.values[FIELDS.APPROVESTATUS].value !== '3').length == 0; - Object.assign(btnVisible, { - [ACTIONS.COMMIT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse, + }); + // 审批流按钮控制 + let isAllFree = hasCheckedRow && checkedDatas.filter(row => row.values[FIELDS.APPROVESTATUS].value !== '-1').length == 0; + let hasFree = hasCheckedRow && checkedDatas.filter(row => row.values[FIELDS.APPROVESTATUS].value == '-1').length > 0; + let hasNotFree = hasCheckedRow && checkedDatas.filter(row => row.values[FIELDS.APPROVESTATUS].value !== '-1').length > 0; + // let isCommit = hasCheckedRow && checkedDatas.filter(row => row.values[FIELDS.APPROVESTATUS].value !== '3').length == 0; + Object.assign(btnVisible, { + [ACTIONS.COMMIT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse, [ACTIONS.UNCOMMIT]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse, [ACTIONS.APPROVEDETAIL]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse - }); - Object.assign(btnDisabled, { - // 修改和删除按钮需要根据审批状态控制 + }); + Object.assign(btnDisabled, { + // 修改和删除按钮需要根据审批状态控制 [ACTIONS.EDIT]: !(hasCheckedRow && (!(checkedDatas[0].values[FIELDS.APPROVESTATUS]) || checkedDatas[0].values[FIELDS.APPROVESTATUS].value == '-1')), [ACTIONS.DELETE]: !(hasCheckedRow && (showmode == SHOWMODE_LIST || isAllFree)), [ACTIONS.COMMIT]: !hasFree, [ACTIONS.UNCOMMIT]: !hasNotFree, - [ACTIONS.APPROVEDETAIL]:!(isCheckedOne && hasNotFree) - }); + [ACTIONS.APPROVEDETAIL]: !(isCheckedOne && hasNotFree) + }); Object.assign(btnVisible, { [ACTIONS.BILLTRACK]: (showmode == SHOWMODE_LIST || showmode == SHOWMODE_CARD) && isBrowse }); @@ -1189,15 +1194,15 @@ export class ApplicationPage extends Component{ this.props.button.setButtonVisible(btnVisible); this.props.button.setButtonDisabled(btnDisabled); - // 设置卡片翻页器是否可见 + // 设置卡片翻页器是否可见 this.state.card.cardPagniation.visible = showmode == SHOWMODE_CARD && editmode == EDITMODE_BROWSE; this.setState(this.state, callback); } // 查询列表数据 // callback 回调, (data: 查询结果,格式参考后端Grid类) => {} - listTableData = ({callback = EMPTY_FN} = {}) => { - let {list: {search, table}} = this.state; + listTableData = ({ callback = EMPTY_FN } = {}) => { + let { list: { search, table } } = this.state; // 获取查询区参数 let queryInfo = this.props.search.getQueryInfo(search.area); // 获取表格分页信息 @@ -1206,7 +1211,7 @@ export class ApplicationPage extends Component{ appcode: this.config.appcode, // appcode pageCode: this.config.pagecode, // pagecode formId: table.area, // 表格区域编码 - queryTreeFormatVO: {...queryInfo, pageCode: this.config.pagecode}, // 查询条件 + queryTreeFormatVO: { ...queryInfo, pageCode: this.config.pagecode }, // 查询条件 pageInfo // 分页信息 }; // 判断是否获取到查询条件,当查询区有必填项未填写时获取查询区参数oid会是空 @@ -1217,7 +1222,7 @@ export class ApplicationPage extends Component{ url: URLS.listUrl, data: param, success: (res) => { - let {data: {data} = {}} = res; + let { data: { data } = {} } = res; callback(data); }, }); @@ -1226,10 +1231,10 @@ export class ApplicationPage extends Component{ // 填充列表数据 // data 列表数据,格式参考后端Grid类,为空则会清空 // callback 回调,无参数 - fillListData = ({data, callback = EMPTY_FN} = {}) => { - let {list: {table}} = this.state; + fillListData = ({ data, callback = EMPTY_FN } = {}) => { + let { list: { table } } = this.state; // 从data获取表格区域数据 - let tableData = data && data[table.area] ? data[table.area] : {rows: []}; + let tableData = data && data[table.area] ? data[table.area] : { rows: [] }; // 设置数据到表格组件 this.props.table.setAllTableData(table.area, tableData); setTimeout(callback); @@ -1242,7 +1247,7 @@ export class ApplicationPage extends Component{ // formId 表单区域编码 // tableId 子表表格区域编码数组 // callback 回调,(data: 查询结果,格式参考后端ExtBillCard类) => {} - loadCardData = ({billId, areaInfo, callback = EMPTY_FN} = {}) => { + loadCardData = ({ billId, areaInfo, callback = EMPTY_FN } = {}) => { // 查询请求 ajax({ url: URLS.loadUrl, @@ -1252,8 +1257,8 @@ export class ApplicationPage extends Component{ ...areaInfo // 区域编码 }, success: (res) => { - let {data: {data} = {}} = res; - callback({data}); + let { data: { data } = {} } = res; + callback({ data }); }, }); } @@ -1261,7 +1266,7 @@ export class ApplicationPage extends Component{ // 填充卡片数据 // data 卡片数据,格式参考后端ExtBillCard类 // callback 回调,无参数 - fillCardData = ({data, callback = EMPTY_FN} = {}) => { + fillCardData = ({ data, callback = EMPTY_FN } = {}) => { // 获取卡片区域编码 let area = this.getCardAreaCode(); // 设置主表单数据 @@ -1272,7 +1277,7 @@ export class ApplicationPage extends Component{ this.props.cardTable.setTableData(id, data.bodys[id], () => { }); } else { // 子表没值则清空 - this.props.cardTable.setTableData(id, {rows: []}); + this.props.cardTable.setTableData(id, { rows: [] }); } }); setTimeout(callback); @@ -1280,14 +1285,14 @@ export class ApplicationPage extends Component{ // 清空卡片数据 // callback 回调,无参数 - clearCardData = ({callback = EMPTY_FN} = {}) => { + clearCardData = ({ callback = EMPTY_FN } = {}) => { // 获取卡片区域编码 let area = this.getCardAreaCode(); // 清空主表单数据 this.props.form.EmptyAllFormValue(area.formId); // 清空子表表格数据 area.tableId.forEach(id => { - this.props.cardTable.setTableData(id, {rows: []}); + this.props.cardTable.setTableData(id, { rows: [] }); }); setTimeout(callback); } @@ -1313,8 +1318,8 @@ export class ApplicationPage extends Component{ // 编码规则处理 // billCodeContext 编码规则上下文 - handleCodeRule = ({billCodeContext} = {}) => { - let {card: {form}} = this.state; + handleCodeRule = ({ billCodeContext } = {}) => { + let { card: { form } } = this.state; // 根据编码规则进行的处理 if (!billCodeContext) { return; @@ -1322,7 +1327,7 @@ export class ApplicationPage extends Component{ // 编码字段编辑性,后编码则编码字段不可编辑,前编码则按照上下文设置编辑性 let isEditable = billCodeContext.isPrecode && billCodeContext.isEditable; // 设置编码字段编辑性 - this.props.form.setFormItemsDisabled(form.area, {[FIELDS.CODE]: !isEditable}); + this.props.form.setFormItemsDisabled(form.area, { [FIELDS.CODE]: !isEditable }); // 设置编码字段是否必输 // this.props.form.setFormItemsRequired(form.area, {[FIELDS.CODE]: false}); } @@ -1335,7 +1340,7 @@ export class ApplicationPage extends Component{ * @returns {*[]|*} 返回选中行数组[{values:{itemcode:{value:'', display:''}}}, {values:{itemcode:{value:'', display:''}}}] */ getCheckedDatas = () => { - let {showmode, list: {table}, card: {form}} = this.state; + let { showmode, list: { table }, card: { form } } = this.state; if (showmode == SHOWMODE_LIST) { // 当前显示为列表页面时 // 获取列表表格选中行 let checkedRows = this.props.table.getCheckedRows(table.area); @@ -1360,7 +1365,7 @@ export class ApplicationPage extends Component{ * @param queryInfo 查询方案 */ onSearch = (props, data, type, queryInfo) => { - let {list: {table}} = this.state; + let { list: { table } } = this.state; // 调用查询列表方法,通过回调处理查询结果 this.listTableData({ callback: (data) => { // data为查询结果 @@ -1389,13 +1394,13 @@ export class ApplicationPage extends Component{ * @param data grid格式数据 * @param callback 回调 */ - afterLoadList = ({data, callback = EMPTY_FN} = {}) => { - let {list: {table}} = this.state; + afterLoadList = ({ data, callback = EMPTY_FN } = {}) => { + let { list: { table } } = this.state; // 保存allpks this.state.list.table.allpks = data ? data[table.area].allpks : []; this.setState(this.state, () => { // 填充列表数据 - this.fillListData({data}); + this.fillListData({ data }); // 更新按钮状态 this.updateBtnStatus(); @@ -1434,13 +1439,13 @@ export class ApplicationPage extends Component{ this.loadCardData({ billId, areaInfo: area, - callback: ({data}) => { // data为查询结果 + callback: ({ data }) => { // data为查询结果 // 填充卡片数据或清空卡片数据 - data ? this.fillCardData({data}) : this.clearCardData(); + data ? this.fillCardData({ data }) : this.clearCardData(); // 根据列表数据初始化卡片翻页器 this.initCardPaginationWithAllpks(); // 设置翻页器当前的数据主键 - this.props.cardPagination.setCardPaginationId({id: billId, status: 1}); + this.props.cardPagination.setCardPaginationId({ id: billId, status: 1 }); // 更新按钮状态 this.updateBtnStatus(); } @@ -1470,9 +1475,9 @@ export class ApplicationPage extends Component{ this.loadCardData({ billId: nextId, areaInfo, - callback: ({data}) => { // data为查询结果 + callback: ({ data }) => { // data为查询结果 // 填充卡片数据或清空卡片数据 - data ? this.fillCardData({data}) : this.clearCardData(); + data ? this.fillCardData({ data }) : this.clearCardData(); // 更新按钮状态 this.updateBtnStatus(); } @@ -1494,7 +1499,7 @@ export class ApplicationPage extends Component{ this.listTableData({ callback: (data) => { // data为查询结果 // 执行查询列表后操作 - this.afterLoadList({data}); + this.afterLoadList({ data }); } }); }); @@ -1556,7 +1561,7 @@ export class ApplicationPage extends Component{ // 获取改变后交易类型编码 let transtypecode = value && value.values && value.values.pk_billtypecode || {}; // 修改交易类型编码到交易类型字段 - this.props.form.setFormItemsValue(moduleId, {[FIELDS.TRANSTYPE]: transtypecode}); + this.props.form.setFormItemsValue(moduleId, { [FIELDS.TRANSTYPE]: transtypecode }); } /** @@ -1574,7 +1579,7 @@ export class ApplicationPage extends Component{ * 初始化卡片翻页器,在列表切换到卡片时调用,初始化卡片翻页组件的allpks */ initCardPaginationWithAllpks = () => { - let {allpks} = this.state.list.table; + let { allpks } = this.state.list.table; // 设置卡片翻页器的allpks,当调用cardPagination组件的API新增、删除pk时,allpks会同步更新 this.props.cardPagination.setCardPaginationAllpks(allpks); } @@ -1622,6 +1627,9 @@ export class ApplicationPage extends Component{ case ACTIONS.COPY: // 点击复制 this.onCopy(); break; + case ACTIONS.ADDUNPASS: // 点击生成不合格审批单 + this.onAddUnPass(); + break; case ACTIONS.EXPORT: // 点击导出 this.onExport(); break; @@ -1634,28 +1642,28 @@ export class ApplicationPage extends Component{ case ACTIONS.ATTACHMENT: // 点击附件管理 this.onAttachment(); break; - case ACTIONS.APPROVEDETAIL: // 点击审批详情 + case ACTIONS.APPROVEDETAIL: // 点击审批详情 this.onApproveDetail(param); - break; - case ACTIONS.COMMIT: // 点击提交 + break; + case ACTIONS.COMMIT: // 点击提交 // 执行流程动作 this.onFlow({ ...param, actionName: FLOW_ACTION.SAVE, // 动作编码 callback: () => { // 提示 - toast({content: "提交成功!", color: 'success'}); + toast({ content: "提交成功!", color: 'success' }); } }); break; - case ACTIONS.UNCOMMIT: //点击收回 + case ACTIONS.UNCOMMIT: //点击收回 // 执行流程动作 this.onFlow({ ...param, actionName: FLOW_ACTION.UNSAVE, // 动作编码 callback: () => { // 提示 - toast({content: '收回成功!', color: 'success'}); + toast({ content: '收回成功!', color: 'success' }); } }); break; @@ -1674,13 +1682,13 @@ export class ApplicationPage extends Component{ * 聚焦首个可聚焦的表单项 * 注意!!!: 如果模板调整或者拆分或者代码中有对模板顺序等调整,需要自己再处理该方法 */ - setCardFormFocus = ()=>{ - let {head, headBtn, list, card, showmode, editmode, context} = this.state; - let {form} = card; + setCardFormFocus = () => { + let { head, headBtn, list, card, showmode, editmode, context } = this.state; + let { form } = card; //业务开发应该能明确哪个属性可以聚焦,所以这里应该不需要循环查询 //但是从低代码层面是无法确定的,所以只能循环查找 (this.props.meta.getMeta()[form.area].items || []).find(item => { - if(!item.disabled && item.visible){ + if (!item.disabled && item.visible) { this.props.form.setFormItemFocus(form.area, item.attrcode); return true; } @@ -1693,7 +1701,7 @@ export class ApplicationPage extends Component{ */ onAdd = () => { // 记录点击新增按钮前的页面模式 - let {showmode, context} = this.state; + let { showmode, context } = this.state; // 设置页面模式为卡片新增态 this.state.showmode = SHOWMODE_CARD; this.state.editmode = EDITMODE_ADD; @@ -1703,7 +1711,7 @@ export class ApplicationPage extends Component{ // 获取卡片区域编码 let areaInfo = this.getCardAreaCode(); // 修改卡片组件状态 - this.updateCardStatus({areaInfo, editmode: EDITMODE_ADD}); + this.updateCardStatus({ areaInfo, editmode: EDITMODE_ADD }); // 清空卡片数据 this.clearCardData(); // 获取模板默认值 @@ -1711,16 +1719,16 @@ export class ApplicationPage extends Component{ this.add({ billCard, areaInfo, - callback: ({data, billCodeContext}) => { + callback: ({ data, billCodeContext }) => { // 填充卡片数据 - data && this.fillCardData({data}); + data && this.fillCardData({ data }); // 处理编码规则 - this.handleCodeRule({billCodeContext}); + this.handleCodeRule({ billCodeContext }); // 如果存在组织属性,并且个性化设置-业务设置那设置了组织,则默认在新增时把组织字段在界面上 - context && context.pk_org && this.props.form.setFormItemsValue(areaInfo.formId, {[FIELDS.PK_ORG]: {display: context.org_Name, value: context.pk_org}}); + context && context.pk_org && this.props.form.setFormItemsValue(areaInfo.formId, { [FIELDS.PK_ORG]: { display: context.org_Name, value: context.pk_org } }); if (context && context && context.paramMap && context.paramMap.pk_transtype) { - this.props.form.setFormItemsValue(areaInfo.formId, {[FIELDS.TRANSTYPEPK]: {display: context.paramMap.transtype_name, value: context.paramMap.pk_transtype}}); - this.props.form.setFormItemsValue(areaInfo.formId, {[FIELDS.TRANSTYPE]: {display: context.paramMap.transtype, value: context.paramMap.transtype}}); + this.props.form.setFormItemsValue(areaInfo.formId, { [FIELDS.TRANSTYPEPK]: { display: context.paramMap.transtype_name, value: context.paramMap.pk_transtype } }); + this.props.form.setFormItemsValue(areaInfo.formId, { [FIELDS.TRANSTYPE]: { display: context.paramMap.transtype, value: context.paramMap.transtype } }); } // 更新按钮状态 this.updateBtnStatus(); @@ -1731,7 +1739,7 @@ export class ApplicationPage extends Component{ }); } - add = ({billCard, areaInfo, callback = EMPTY_FN} = {}) => { + add = ({ billCard, areaInfo, callback = EMPTY_FN } = {}) => { ajax({ url: URLS.addUrl, data: { @@ -1740,13 +1748,13 @@ export class ApplicationPage extends Component{ ...areaInfo // 卡片区域编码 }, success: (res) => { - let {data: {data, externalData: {billCodeContext} = {}} = {}} = res; - callback({data, billCodeContext}); + let { data: { data, externalData: { billCodeContext } = {} } = {} } = res; + callback({ data, billCodeContext }); } }); } - updateCardStatus = ({areaInfo, editmode, callback = EMPTY_FN} = {}) => { + updateCardStatus = ({ areaInfo, editmode, callback = EMPTY_FN } = {}) => { // 设置卡片主表单为编辑态 this.props.form.setFormStatus(areaInfo.formId, editmode); // 设置卡片子表表格为编辑态 @@ -1761,9 +1769,9 @@ export class ApplicationPage extends Component{ * 点击修改按钮 */ onEdit = (param = {}) => { - let {showmode} = this.state; + let { showmode } = this.state; // 列表操作列的参数 - let {record, index} = param; + let { record, index } = param; // 获取选中行 let checkedDatas = this.getCheckedDatas(); // 获取选中行主键,多行取第一条,适配列表操作列优先从record中取值 @@ -1777,17 +1785,17 @@ export class ApplicationPage extends Component{ // 获取卡片区域编码 let areaInfo = this.getCardAreaCode(); // 修改卡片组件状态 - this.updateCardStatus({areaInfo, editmode: EDITMODE_EDIT}); + this.updateCardStatus({ areaInfo, editmode: EDITMODE_EDIT }); // 清空卡片数据 this.clearCardData(); this.edit({ billId, areaInfo, - callback: ({data, billCodeContext}) => { + callback: ({ data, billCodeContext }) => { // 填充卡片数据或清空卡片数据 - data ? this.fillCardData({data}) : this.clearCardData(); + data ? this.fillCardData({ data }) : this.clearCardData(); // 处理编码规则 - this.handleCodeRule({billCodeContext}); + this.handleCodeRule({ billCodeContext }); // 根据列表数据初始化卡片翻页器 showmode == SHOWMODE_LIST && this.initCardPaginationWithAllpks(); // 更新按钮状态 @@ -1797,7 +1805,7 @@ export class ApplicationPage extends Component{ }); } - edit = ({billId, areaInfo, callback = EMPTY_FN}) => { + edit = ({ billId, areaInfo, callback = EMPTY_FN }) => { ajax({ url: URLS.editUrl, data: { @@ -1806,8 +1814,8 @@ export class ApplicationPage extends Component{ ...areaInfo // 卡片区域编码 }, success: (res) => { - let {data: {data, externalData: {billCodeContext} = {}} = {}} = res; - callback({data, billCodeContext}); + let { data: { data, externalData: { billCodeContext } = {} } = {} } = res; + callback({ data, billCodeContext }); } }); } @@ -1819,15 +1827,15 @@ export class ApplicationPage extends Component{ onDelete = (param = {}) => { let handleDelete = () => { - let {showmode} = this.state; + let { showmode } = this.state; // 列表操作列的参数 - let {record, index} = param; + let { record, index } = param; // 获取选中行 let checkedDatas = this.getCheckedDatas(); // 构建tsMap:{主键: ts},适配列表操作列优先从record中取值 let tsMap = {}; - record ? Object.assign(tsMap, {[record[FIELDS.PRIMARYKEY].value]: record.ts.value}) - : checkedDatas.forEach(row => Object.assign(tsMap, {[row.values[FIELDS.PRIMARYKEY].value]: row.values['ts'].value})); + record ? Object.assign(tsMap, { [record[FIELDS.PRIMARYKEY].value]: record.ts.value }) + : checkedDatas.forEach(row => Object.assign(tsMap, { [row.values[FIELDS.PRIMARYKEY].value]: row.values['ts'].value })); // 删除数据 this.delete({ tsMap, @@ -1841,7 +1849,7 @@ export class ApplicationPage extends Component{ data, callback: () => { // 提示 - toast({color: 'success', content: '删除成功'}); + toast({ color: 'success', content: '删除成功' }); } }); } @@ -1850,16 +1858,16 @@ export class ApplicationPage extends Component{ // 获取被删除数据的主键 let cardId = checkedDatas[0].values[FIELDS.PRIMARYKEY].value; // 通过卡片翻页器API获取删除成功后的下一条数据主键 - let nextId = this.props.cardPagination.getNextCardPaginationId({id: cardId, status: 3}); + let nextId = this.props.cardPagination.getNextCardPaginationId({ id: cardId, status: 3 }); // 卡片翻页器删除被删除数据的主键,status(1为修改,2为新增,3为删除) - this.props.cardPagination.setCardPaginationId({id: cardId, status: 3}); + this.props.cardPagination.setCardPaginationId({ id: cardId, status: 3 }); if (!nextId) { // 清空卡片数据 this.clearCardData(); // 更新按钮状态 this.updateBtnStatus(); // 提示 - toast({color: 'success', content: '删除成功'}); + toast({ color: 'success', content: '删除成功' }); return; } // 存在删除成功后下一条数据主键 @@ -1869,15 +1877,15 @@ export class ApplicationPage extends Component{ this.loadCardData({ billId: nextId, areaInfo, - callback: ({data}) => { // data为查询结果 + callback: ({ data }) => { // data为查询结果 // 填充卡片数据或清空卡片数据 - data ? this.fillCardData({data}) : this.clearCardData(); + data ? this.fillCardData({ data }) : this.clearCardData(); // 卡片翻页器设置当前为下一条主键,status(1为修改,2为新增,3为删除) - this.props.cardPagination.setCardPaginationId({id: nextId, status: 1}); + this.props.cardPagination.setCardPaginationId({ id: nextId, status: 1 }); // 更新按钮状态 this.updateBtnStatus(); // 提示 - toast({color: 'success', content: '删除成功'}); + toast({ color: 'success', content: '删除成功' }); } }); } @@ -1895,10 +1903,10 @@ export class ApplicationPage extends Component{ }); } - delete = ({tsMap, callback = EMPTY_FN} = {}) => { + delete = ({ tsMap, callback = EMPTY_FN } = {}) => { ajax({ url: URLS.deleteUrl, - data: {tsMap}, + data: { tsMap }, success: (res) => { callback(); } @@ -1910,7 +1918,7 @@ export class ApplicationPage extends Component{ * 点击刷新按钮 */ onRefresh = () => { - let {showmode} = this.state; + let { showmode } = this.state; if (showmode == SHOWMODE_LIST) { // 列表页面点击刷新时 // 调用列表查询方法,通过回调处理查询结果 this.listTableData({ @@ -1920,7 +1928,7 @@ export class ApplicationPage extends Component{ data, callback: () => { // 提示 - toast({color: 'success', content: '刷新成功'}); + toast({ color: 'success', content: '刷新成功' }); } }); } @@ -1936,13 +1944,13 @@ export class ApplicationPage extends Component{ this.loadCardData({ billId, areaInfo, - callback: ({data}) => { // data为查询结果 + callback: ({ data }) => { // data为查询结果 // 填充卡片数据或清空卡片数据 - data ? this.fillCardData({data}) : this.clearCardData(); + data ? this.fillCardData({ data }) : this.clearCardData(); // 更新按钮状态 this.updateBtnStatus(); // 提示 - toast({color: 'success', content: '刷新成功'}); + toast({ color: 'success', content: '刷新成功' }); } }); } @@ -1954,7 +1962,7 @@ export class ApplicationPage extends Component{ */ onSave = () => { - let {editmode} = this.state; + let { editmode } = this.state; // 获取卡片区域编码 let areaInfo = this.getCardAreaCode(); // 卡片主表单必输项校验 @@ -1969,37 +1977,37 @@ export class ApplicationPage extends Component{ let tableTypeObj = { [areaInfo.formId]: 'form' }; - areaInfo.tableId.forEach(areacode => {tableTypeObj[areacode] = 'editTable'}); + areaInfo.tableId.forEach(areacode => { tableTypeObj[areacode] = 'editTable' }); // 保存前执行校验公式 this.props.validateToSave(saveData, () => { // 保存请求 this.save({ cardData: saveData, areaInfo, - callback: ({data}) => { + callback: ({ data }) => { // 设置页面模式 this.state.editmode = EDITMODE_BROWSE; // 设置标题栏返回按钮 this.state.head.initShowBackBtn = true; this.setState(this.state, () => { - this.updateCardStatus({areaInfo, editmode: EDITMODE_BROWSE}); + this.updateCardStatus({ areaInfo, editmode: EDITMODE_BROWSE }); // 填充卡片数据或清空卡片数据 - data ? this.fillCardData({data}) : this.clearCardData(); + data ? this.fillCardData({ data }) : this.clearCardData(); // 更新按钮状态 this.updateBtnStatus(); // 获取保存后数据主键 let billId = data.head[areaInfo.formId].rows[0].values[FIELDS.PRIMARYKEY].value; // 设置卡片翻页器当前主键,status(1为修改,2为新增,3为删除) - this.props.cardPagination.setCardPaginationId({id: billId, status: isAdd ? 2 : 1}); + this.props.cardPagination.setCardPaginationId({ id: billId, status: isAdd ? 2 : 1 }); // 提示 - toast({color: 'success', content: '保存成功'}); + toast({ color: 'success', content: '保存成功' }); }); } }); }, tableTypeObj, 'extcard'); } - save = ({cardData, grandsonMap, areaInfo, callback = EMPTY_FN} = {}) => { + save = ({ cardData, grandsonMap, areaInfo, callback = EMPTY_FN } = {}) => { ajax({ url: URLS.saveUrl, data: { @@ -2008,8 +2016,8 @@ export class ApplicationPage extends Component{ ...areaInfo // 区域编码 }, success: (res) => { - let {data: {data} = {}} = res; - callback({data}) + let { data: { data } = {} } = res; + callback({ data }) } }); } @@ -2019,7 +2027,7 @@ export class ApplicationPage extends Component{ * 点击保存新增 */ onSaveAdd = () => { - let {editmode, context} = this.state; + let { editmode, context } = this.state; // 获取卡片区域编码 let areaInfo = this.getCardAreaCode(); // 卡片主表单必输项校验 @@ -2034,21 +2042,21 @@ export class ApplicationPage extends Component{ let tableTypeObj = { [areaInfo.formId]: 'form' }; - areaInfo.tableId.forEach(areacode => {tableTypeObj[areacode] = 'editTable'}); + areaInfo.tableId.forEach(areacode => { tableTypeObj[areacode] = 'editTable' }); // 保存前执行校验公式 this.props.validateToSave(saveData, () => { // 保存请求 this.save({ cardData: saveData, areaInfo, - callback: ({data}) => { + callback: ({ data }) => { this.setState(this.state, () => { // 获取保存后数据主键 let billId = data.head[areaInfo.formId].rows[0].values[FIELDS.PRIMARYKEY].value; // 设置卡片翻页器当前主键,status(1为修改,2为新增,3为删除) - this.props.cardPagination.setCardPaginationId({id: billId, status: isAdd ? 2 : 1}); + this.props.cardPagination.setCardPaginationId({ id: billId, status: isAdd ? 2 : 1 }); // 提示 - toast({color: 'success', content: '保存成功'}); + toast({ color: 'success', content: '保存成功' }); // 清空卡片数据 this.clearCardData(); // 获取模板默认值 @@ -2057,16 +2065,16 @@ export class ApplicationPage extends Component{ this.add({ billCard, areaInfo, - callback: ({data, billCodeContext}) => { + callback: ({ data, billCodeContext }) => { // 填充卡片数据 - data && this.fillCardData({data}); + data && this.fillCardData({ data }); // 处理编码规则 - this.handleCodeRule({billCodeContext}); + this.handleCodeRule({ billCodeContext }); // 如果存在组织属性,并且个性化设置-业务设置那设置了组织,则默认在新增时把组织字段在界面上 - context && context.pk_org && this.props.form.setFormItemsValue(areaInfo.formId, {[FIELDS.PK_ORG]: {display: context.org_Name, value: context.pk_org}}); + context && context.pk_org && this.props.form.setFormItemsValue(areaInfo.formId, { [FIELDS.PK_ORG]: { display: context.org_Name, value: context.pk_org } }); if (context && context && context.paramMap && context.paramMap.pk_transtype) { - this.props.form.setFormItemsValue(areaInfo.formId, {[FIELDS.TRANSTYPEPK]: {display: context.paramMap.transtype_name, value: context.paramMap.pk_transtype}}); - this.props.form.setFormItemsValue(areaInfo.formId, {[FIELDS.TRANSTYPE]: {display: context.paramMap.transtype, value: context.paramMap.transtype}}); + this.props.form.setFormItemsValue(areaInfo.formId, { [FIELDS.TRANSTYPEPK]: { display: context.paramMap.transtype_name, value: context.paramMap.pk_transtype } }); + this.props.form.setFormItemsValue(areaInfo.formId, { [FIELDS.TRANSTYPE]: { display: context.paramMap.transtype, value: context.paramMap.transtype } }); } // 更新按钮状态 this.updateBtnStatus(); @@ -2090,12 +2098,12 @@ export class ApplicationPage extends Component{ // 设置标题栏返回按钮 this.state.head.initShowBackBtn = true; this.setState(this.state, () => { - let {allpks} = this.state.list.table; + let { allpks } = this.state.list.table; let billId = undefined; // 获取卡片区域编码 let areaInfo = this.getCardAreaCode(); // 设置卡片主表单为浏览态 - this.updateCardStatus({areaInfo, editmode: EDITMODE_BROWSE}); + this.updateCardStatus({ areaInfo, editmode: EDITMODE_BROWSE }); // 先从卡片主表单获取主键,如果有代表是修改取消,重新加载当前单据 billId = this.props.form.getFormItemsValue(areaInfo.formId, FIELDS.PRIMARYKEY).value; if (!billId && allpks && allpks.length > 0) { // 如果是新增取消加载最后一条单据 @@ -2112,11 +2120,11 @@ export class ApplicationPage extends Component{ this.loadCardData({ billId, areaInfo, - callback: ({data}) => { // data为查询结果 + callback: ({ data }) => { // data为查询结果 // 填充卡片数据或清空卡片数据 - data ? this.fillCardData({data}) : this.clearCardData(); + data ? this.fillCardData({ data }) : this.clearCardData(); // 设置卡片翻页器当前主键,status(1为修改,2为新增,3为删除) - this.props.cardPagination.setCardPaginationId({id: billId, status: 1}); + this.props.cardPagination.setCardPaginationId({ id: billId, status: 1 }); // 更新按钮状态 this.updateBtnStatus(); } @@ -2124,12 +2132,12 @@ export class ApplicationPage extends Component{ }); } promptBox({ - color:'warning', // 弹框类型(success、info、warning、danger) + color: 'warning', // 弹框类型(success、info、warning、danger) title: '取消', // 标题 content: '是否确认要取消?', // 提示内容 beSureBtnName: '确定', // 确定按钮显示内容 cancelBtnName: '取消', // 取消按钮显示内容 - beSureBtnClick : handleCancel // 点击确定按钮 + beSureBtnClick: handleCancel // 点击确定按钮 }) } @@ -2138,7 +2146,7 @@ export class ApplicationPage extends Component{ * 点击复制按钮 */ onCopy = () => { - let {showmode: oldShowmode} = this.state; + let { showmode: oldShowmode } = this.state; // 获取选中行 let checkedDatas = this.getCheckedDatas(); // 获取选中行主键,多行取第一条,适配列表操作列优先从record中取值 @@ -2152,14 +2160,14 @@ export class ApplicationPage extends Component{ // 获取卡片区域编码 let areaInfo = this.getCardAreaCode(); // 设置卡片主表单为编辑态 - this.updateCardStatus({areaInfo, editmode: EDITMODE_ADD}); + this.updateCardStatus({ areaInfo, editmode: EDITMODE_ADD }); this.copy({ billId, areaInfo, - callback: ({data, billCodeContext}) => { - data ? this.fillCardData({data}) : this.clearCardData(); + callback: ({ data, billCodeContext }) => { + data ? this.fillCardData({ data }) : this.clearCardData(); // 处理编码规则 - this.handleCodeRule({billCodeContext}); + this.handleCodeRule({ billCodeContext }); // 更新按钮状态 this.updateBtnStatus(); // 根据列表数据初始化卡片翻页器 @@ -2169,7 +2177,7 @@ export class ApplicationPage extends Component{ }); } - copy = ({billId, areaInfo, callback = EMPTY_FN}) => { + copy = ({ billId, areaInfo, callback = EMPTY_FN }) => { ajax({ url: URLS.copyUrl, data: { @@ -2178,8 +2186,59 @@ export class ApplicationPage extends Component{ ...areaInfo // 区域编码 }, success: (res = {}) => { - let {data: {data, externalData: {billCodeContext} = {}} = {}} = res; - callback({data, billCodeContext}); + let { data: { data, externalData: { billCodeContext } = {} } = {} } = res; + callback({ data, billCodeContext }); + } + }); + } + + /** + * 方法功能: + * 点击不合格审批单按钮 + */ + onAddUnPass = () => { + let { showmode: oldShowmode } = this.state; + // 获取选中行 + let checkedDatas = this.getCheckedDatas(); + // 获取选中行主键,多行取第一条,适配列表操作列优先从record中取值 + let billId = checkedDatas[0].values[FIELDS.PRIMARYKEY].value; + // 设置页面模式为卡片编辑态 + this.state.showmode = SHOWMODE_CARD; + this.state.editmode = EDITMODE_ADD; + // 设置标题栏返回按钮 + this.state.head.initShowBackBtn = false; + this.setState(this.state, () => { + // 获取卡片区域编码 + let areaInfo = this.getCardAreaCode(); + // 设置卡片主表单为编辑态 + this.updateCardStatus({ areaInfo, editmode: EDITMODE_ADD }); + this.addUnPass({ + billId, + areaInfo, + callback: ({ data, billCodeContext }) => { + data ? this.fillCardData({ data }) : this.clearCardData(); + // 处理编码规则 + this.handleCodeRule({ billCodeContext }); + // 更新按钮状态 + this.updateBtnStatus(); + // 根据列表数据初始化卡片翻页器 + oldShowmode == SHOWMODE_LIST && this.initCardPaginationWithAllpks(); + } + }); + }); + } + + addUnPass = ({ billId, areaInfo, callback = EMPTY_FN }) => { + ajax({ + url: URLS.addUnPassUrl, + data: { + pk: billId, // 主键 + pageCode: this.config.pagecode, // pagecode + ...areaInfo // 区域编码 + }, + success: (res = {}) => { + let { data: { data, externalData: { billCodeContext } = {} } = {} } = res; + callback({ data, billCodeContext }); } }); } @@ -2207,7 +2266,7 @@ export class ApplicationPage extends Component{ * 打印 */ onPrint = () => { - let {showmode} = this.state; + let { showmode } = this.state; // 获取选中行 let checkedDatas = this.getCheckedDatas(); // 遍历得到选中行pk数组 @@ -2219,7 +2278,7 @@ export class ApplicationPage extends Component{ this.state.printOutput.data.nodekey = nodekey; this.state.printOutput.data.outputType = 'print'; // 打印 this.setState(this.state, () => { - let {printOutput} = this.state; + let { printOutput } = this.state; // 调用打印API print('pdf', printOutput.url, printOutput.data); }); @@ -2230,7 +2289,7 @@ export class ApplicationPage extends Component{ * 输出 */ onOutput = () => { - let {showmode} = this.state; + let { showmode } = this.state; // 获取选中行 let checkedDatas = this.getCheckedDatas(); // 遍历得到选中行pk数组 @@ -2242,7 +2301,7 @@ export class ApplicationPage extends Component{ this.state.printOutput.data.nodekey = nodekey; this.state.printOutput.data.outputType = 'output'; // 输出 this.setState(this.state, () => { - let {printOutput} = this.state; + let { printOutput } = this.state; // 显示输出组件 output(printOutput); }) @@ -2261,7 +2320,7 @@ export class ApplicationPage extends Component{ this.state.uploader.visible = true; // 设置附件管理组件的主键 this.state.uploader.billId = billId; - this.setState(this.state, () => {}); + this.setState(this.state, () => { }); } /** @@ -2277,7 +2336,7 @@ export class ApplicationPage extends Component{ * @param type 表格内为line,弹窗为modal * @param method 有blur有change */ - onAfterEditFormlist = (props, moduleId, key, value, changedrows, index, record,type, method) => { + onAfterEditFormlist = (props, moduleId, key, value, changedrows, index, record, type, method) => { /** * Demo[1] 联动赋值 * 场景:卡片子表上同时有物料、物料分类字段,物料受物料分类影响 @@ -2365,7 +2424,7 @@ export class ApplicationPage extends Component{ * @param modelCode */ onFormlistModelSave = (modelCode) => { - let {editmode} = this.state; + let { editmode } = this.state; // 获取卡片区域编码 let areaInfo = this.getCardAreaCode(); // 卡片主表单必输项校验 @@ -2380,32 +2439,32 @@ export class ApplicationPage extends Component{ let tableTypeObj = { [areaInfo.formId]: 'form' }; - areaInfo.tableId.forEach(areacode => {tableTypeObj[areacode] = 'editTable'}); + areaInfo.tableId.forEach(areacode => { tableTypeObj[areacode] = 'editTable' }); // 保存前执行校验公式 this.props.validateToSave(saveData, () => { // 保存请求 this.save({ cardData: saveData, areaInfo, - callback: ({data}) => { + callback: ({ data }) => { // 设置页面模式 this.state.editmode = EDITMODE_BROWSE; // 设置标题栏返回按钮 this.state.head.initShowBackBtn = true; this.setState(this.state, () => { - this.updateCardStatus({areaInfo, editmode: EDITMODE_BROWSE}); + this.updateCardStatus({ areaInfo, editmode: EDITMODE_BROWSE }); // 填充卡片数据或清空卡片数据 - data ? this.fillCardData({data}) : this.clearCardData(); + data ? this.fillCardData({ data }) : this.clearCardData(); // 更新按钮状态 this.updateBtnStatus(); // 获取保存后数据主键 let billId = data.head[areaInfo.formId].rows[0].values[FIELDS.PRIMARYKEY].value; // 设置卡片翻页器当前主键,status(1为修改,2为新增,3为删除) - this.props.cardPagination.setCardPaginationId({id: billId, status: isAdd ? 2 : 1}); + this.props.cardPagination.setCardPaginationId({ id: billId, status: isAdd ? 2 : 1 }); // 关闭侧拉 this.props.cardTable.closeModel(modelCode); // 提示 - toast({color: 'success', content: '保存成功'}); + toast({ color: 'success', content: '保存成功' }); }); } }); @@ -2476,9 +2535,9 @@ export class ApplicationPage extends Component{ } onCardTableExpandLine = (tableId, row) => { - let {editmode} = this.state; + let { editmode } = this.state; let status = editmode == EDITMODE_BROWSE ? EDITMODE_BROWSE : EDITMODE_EDIT; - this.props.cardTable.openModel(tableId, status, row.data, row.index, () => {}); + this.props.cardTable.openModel(tableId, status, row.data, row.index, () => { }); } onCardTableCopy = (tableId, row) => { @@ -2494,8 +2553,8 @@ export class ApplicationPage extends Component{ } onCardTablePast = (tableId, row) => { - let {card} = this.state; - let {copiedArea, copiedRows} = card; + let { card } = this.state; + let { copiedArea, copiedRows } = card; if (tableId != copiedArea) { return; } @@ -2510,9 +2569,9 @@ export class ApplicationPage extends Component{ beforePastCardTable = (tableId, row) => { switch (tableId) { case 'dhjydSlave0Sub': - row.values['pk_chekbill_b'] = {value: '', display: ''}; - row.values['rowno'] = {value: '', display: ''}; - row.values['srcrowno'] = {value: '', display: ''}; + row.values['pk_chekbill_b'] = { value: '', display: '' }; + row.values['rowno'] = { value: '', display: '' }; + row.values['srcrowno'] = { value: '', display: '' }; break; default: break; @@ -2539,15 +2598,15 @@ export class ApplicationPage extends Component{ onRowClickTable = (props, moduleId, record, index, e) => { } - - - /** + + + /** * 方法功能: * 提交/撤回/审批 等 流程操作 * @param param */ onFlow = (param = {}) => { - let {actionName, assign, callback, record, index} = param; + let { actionName, assign, callback, record, index } = param; // 获取选中行 let checkedDatas = this.getCheckedDatas(); checkedDatas = checkedDatas.filter(row => { @@ -2561,20 +2620,20 @@ export class ApplicationPage extends Component{ }); // 构建tsMap:{主键: ts},适配列表操作列优先从record中取值 let tsMap = {}; - record ? Object.assign(tsMap, {[record[FIELDS.PRIMARYKEY].value]: record.ts.value}) - : checkedDatas.forEach(row => Object.assign(tsMap, {[row.values[FIELDS.PRIMARYKEY].value]: row.values['ts'].value})); + record ? Object.assign(tsMap, { [record[FIELDS.PRIMARYKEY].value]: record.ts.value }) + : checkedDatas.forEach(row => Object.assign(tsMap, { [row.values[FIELDS.PRIMARYKEY].value]: row.values['ts'].value })); tsMap = assign ? this.state.approvalTrans.tsMap : tsMap; this.state.approvalTrans.tsMap = {}; // 获取主键数组 let pks = Object.keys(tsMap); if (!pks || !pks.length) { // 无选中行 - toast({content:'请先选择操作的记录',color:'warning'}); + toast({ content: '请先选择操作的记录', color: 'warning' }); return false; } let requestParam = { // 构建请求参数 tsMap: tsMap, // tsMap actionName, // 单据动作编码 - userJson:{assign} // 指派参数 + userJson: { assign } // 指派参数 }; // 执行请求 ajax({ @@ -2582,33 +2641,33 @@ export class ApplicationPage extends Component{ data: requestParam, url: URLS.auditUrl, success: (res) => { - if(res.success) { // 操作成功 - //获取需要指派的数据。 - let assignRes = pks.map((pk,index)=> res.data && {...res.data[pk],pk,index} ).filter(item=> - item && (item.workflow=="approveflow" || item.workflow=="workflow") + if (res.success) { // 操作成功 + //获取需要指派的数据。 + let assignRes = pks.map((pk, index) => res.data && { ...res.data[pk], pk, index }).filter(item => + item && (item.workflow == "approveflow" || item.workflow == "workflow") ); //无法批量指派,如果只有一个需要指派给出提示 - if(assignRes.length==1){ - this.state.approvalTrans.data=assignRes[0]; - this.state.approvalTrans.display=true; + if (assignRes.length == 1) { + this.state.approvalTrans.data = assignRes[0]; + this.state.approvalTrans.display = true; this.state.approvalTrans.tsMap = tsMap; this.setState(this.state); - return ; - }else if(assignRes.length>1){//如果多个需要指派,报错提示 - let title = "提交失败",content = "共处理"+pks.length+"条,失败"+assignRes.length+"条"; - let groupOperationMsg = assignRes.map(item=>"第"+index+"张单据处理失败:单据存在指派信息"); - toast({title,content,groupOperationMsg,color:'danger'}); - return ; + return; + } else if (assignRes.length > 1) {//如果多个需要指派,报错提示 + let title = "提交失败", content = "共处理" + pks.length + "条,失败" + assignRes.length + "条"; + let groupOperationMsg = assignRes.map(item => "第" + index + "张单据处理失败:单据存在指派信息"); + toast({ title, content, groupOperationMsg, color: 'danger' }); + return; } - - - let {showmode} = this.state; + + + let { showmode } = this.state; if (showmode == SHOWMODE_LIST) { // 列表页面操作时 // 调用列表查询方法,通过回调处理查询结果 this.listTableData({ callback: (data) => { // data为查询结果 // 执行列表查询后操作 - this.afterLoadList({data}); + this.afterLoadList({ data }); } }); } else if (showmode == SHOWMODE_CARD) { // 卡片页面操作时 @@ -2618,9 +2677,9 @@ export class ApplicationPage extends Component{ this.loadCardData({ billId: pks[0], areaInfo: area, - callback: ({data}) => { // data为查询结果 + callback: ({ data }) => { // data为查询结果 // 填充卡片数据或清空卡片数据 - data ? this.fillCardData({data}) : this.clearCardData(); + data ? this.fillCardData({ data }) : this.clearCardData(); // 更新按钮状态 this.updateBtnStatus(); } @@ -2630,7 +2689,7 @@ export class ApplicationPage extends Component{ } // 是否需要进行指派 - if(res.data && res.data.workflow && (res.data.workflow == "approveflow" || res.data.workflow == "workflow")){ + if (res.data && res.data.workflow && (res.data.workflow == "approveflow" || res.data.workflow == "workflow")) { // 设置指派组件数据并显示 this.setState({ compositeData: res.data, @@ -2652,7 +2711,7 @@ export class ApplicationPage extends Component{ assign: value, // 指派信息 callback: () => { // 提示 - toast({ content: '提交成功!', color: 'success'}); + toast({ content: '提交成功!', color: 'success' }); } }); // 关闭指派组件 @@ -2665,12 +2724,12 @@ export class ApplicationPage extends Component{ */ onCloseAssgin = () => { // 重置指派组件数据并设置不显示 - this.state.approvalTrans.data={}; - this.state.approvalTrans.display=false; + this.state.approvalTrans.data = {}; + this.state.approvalTrans.display = false; this.setState(this.state); }; - - /** + + /** * 方法功能: * 关闭审批详情 */ @@ -2688,7 +2747,7 @@ export class ApplicationPage extends Component{ * index 列表操作列参数,操作行下标 * callback 回调 */ - onApproveDetail = ({record, index, callback = EMPTY_FN} = {}) => { + onApproveDetail = ({ record, index, callback = EMPTY_FN } = {}) => { // 获取选中行 let checkedDatas = this.getCheckedDatas(); // 获取选中行的主键、交易类型、单据类型,默认是第一行 @@ -2713,7 +2772,7 @@ export class ApplicationPage extends Component{ // 获取选中行 let checkedDatas = this.getCheckedDatas(); if (!checkedDatas) { // 无选中行 - toast({color: 'warning', content: '请选择操作数据!'}); + toast({ color: 'warning', content: '请选择操作数据!' }); return; } // 设置单据追溯组件配置并显示 @@ -2726,7 +2785,7 @@ export class ApplicationPage extends Component{ ApplicationPage = createPage({ - initTemplate:{}, + initTemplate: {}, billinfo: { billtype: 'extcard', pagecode: '4004012H9_dhjydMaster',