diff --git a/.umirc.ts b/.umirc.ts
index 16c950f..29536d4 100644
--- a/.umirc.ts
+++ b/.umirc.ts
@@ -18,6 +18,15 @@ export default defineConfig({
component: "@/routes/indexPage",
routes: [{ path: "*" }],
},
+ {
+ path: "/loginMobile",
+ component: "@/routes/mobile/login/LoginMobile",
+ },
+ {
+ path: '/indexMobile',
+ component:'@/routes/mobile/IndexMobile',
+ routes: [{ path: "*" }],
+ },
],
npmClient: "pnpm",
diff --git a/package.json b/package.json
index 02f2536..987c900 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,8 @@
"@js-preview/excel": "^1.7.14",
"@js-preview/pdf": "^2.0.10",
"antd": "^5.24.3",
- "antd-mobile": "2.3.4",
+ "antd-mobile": "5.37.1",
+ "antd-mobile-v2": "2.3.4",
"antd-v4": "npm:antd@4.24.16",
"braft-editor": "^2.3.9",
"classnames": "^2.5.1",
diff --git a/src/components/Common/CommonListSelectProductMaterial.js b/src/components/Common/CommonListSelectProductMaterial.js
index c1ad920..90812ba 100644
--- a/src/components/Common/CommonListSelectProductMaterial.js
+++ b/src/components/Common/CommonListSelectProductMaterial.js
@@ -15,7 +15,7 @@ import StaticEditTable from './CommonTable';/* 可编辑表格 */
import CommonBase from './CommonBase';/* 获取配置及数据 */
import * as commonBusiness from './commonBusiness';/* 单据业务功能 */
import SearchComponent from './SearchComponent';/* 搜索组件 */
-// import * as commonConfig from '../../utils/config';
+// import commonConfig from '../../utils/config';
import config from '../../utils/config';
import * as commonUtils from '../../utils/utils';
import Eject from '../../assets/eject.svg';
diff --git a/src/components/Common/PrintPdf/PreviewPdf.js b/src/components/Common/PrintPdf/PreviewPdf.js
index a8ded52..2117a2f 100644
--- a/src/components/Common/PrintPdf/PreviewPdf.js
+++ b/src/components/Common/PrintPdf/PreviewPdf.js
@@ -3,7 +3,7 @@
import React from 'react';
import { InputItem, Icon } from 'antd-mobile';
import { Document, Page, pdfjs } from 'react-pdf';
-import 'antd-mobile/dist/antd-mobile.css';
+import 'antd-mobile-v2/dist/antd-mobile.css';
import pdfstyles from './printpdf.less';
import * as commonUtils from '../../../utils/utils';
diff --git a/src/components/PrintPdf/PreviewPdf.js b/src/components/PrintPdf/PreviewPdf.js
index 40d14ab..8f8e745 100644
--- a/src/components/PrintPdf/PreviewPdf.js
+++ b/src/components/PrintPdf/PreviewPdf.js
@@ -3,7 +3,7 @@
import React from 'react';
import { InputItem, Icon } from 'antd-mobile';
import { Document, Page, pdfjs } from 'react-pdf';
-import 'antd-mobile/dist/antd-mobile.css';
+import 'antd-mobile-v2/dist/antd-mobile.css';
import * as commonUtils from '@/utils/utils';
import pdfstyles from './printpdf.less';
diff --git a/src/components/productionSchedule/productionPlanChangeMacheInfo.js b/src/components/productionSchedule/productionPlanChangeMacheInfo.js
index 37a85e0..0dac436 100644
--- a/src/components/productionSchedule/productionPlanChangeMacheInfo.js
+++ b/src/components/productionSchedule/productionPlanChangeMacheInfo.js
@@ -9,7 +9,7 @@ import StaticEditTable from './CommonTable';/* 可编辑表格 */
import CommonBase from './CommonBase';/* 获取配置及数据 */
import * as commonBusiness from './commonBusiness';/* 单据业务功能 */
import SearchComponent from './SearchComponent';/* 搜索组件 */
-import * as commonConfig from '../../utils/config';
+import commonConfig from '../../utils/config';
const { Content } = Layout;
diff --git a/src/components/productionScheduleTree/productionPlanChangeMacheInfo.js b/src/components/productionScheduleTree/productionPlanChangeMacheInfo.js
index 37a85e0..0dac436 100644
--- a/src/components/productionScheduleTree/productionPlanChangeMacheInfo.js
+++ b/src/components/productionScheduleTree/productionPlanChangeMacheInfo.js
@@ -9,7 +9,7 @@ import StaticEditTable from './CommonTable';/* 可编辑表格 */
import CommonBase from './CommonBase';/* 获取配置及数据 */
import * as commonBusiness from './commonBusiness';/* 单据业务功能 */
import SearchComponent from './SearchComponent';/* 搜索组件 */
-import * as commonConfig from '../../utils/config';
+import commonConfig from '../../utils/config';
const { Content } = Layout;
diff --git a/src/components/productionScheduleTree/productionScheduleTreeBack.js b/src/components/productionScheduleTree/productionScheduleTreeBack.js
index 02a4070..edd49c0 100644
--- a/src/components/productionScheduleTree/productionScheduleTreeBack.js
+++ b/src/components/productionScheduleTree/productionScheduleTreeBack.js
@@ -34,7 +34,7 @@ import Reset from '@/assets/reset.svg';
import DisableReset from '@/assets/disablereset.svg';
import * as commonUtils from '@/utils/utils';
import ShowType from '@/components/Common/CommonComponent';
-import * as commonConfig from '@/utils/config';
+import commonConfig from '@/utils/config';
import AntdDraggableModal from '@/components/Common/AntdDraggableModal';
import Gantt from '@/components/Charts/Gantt';
import * as commonServices from '@/services/services';
diff --git a/src/mobile/common/BarCodeUtil.js b/src/mobile/common/BarCodeUtil.js
new file mode 100644
index 0000000..8693e85
--- /dev/null
+++ b/src/mobile/common/BarCodeUtil.js
@@ -0,0 +1,159 @@
+
+
+class BarCodeUtil {
+ static barcode = null;
+
+ /**
+ * @private
+ */
+ static hasLight = false;
+
+
+ /**
+ * 停止扫码
+ */
+ static stopScan() {
+ if (this.barcode !== null) {
+ this.barcode.close();
+ }
+ }
+
+ /**
+ * 切换闪光灯
+ * @return {boolean} 切换后闪光灯是否开启
+ */
+ static switchLight() {
+ if (this.barcode !== null) {
+ this.hasLight = !this.hasLight;
+ this.barcode.setFlash(this.hasLight);
+ }
+ return this.hasLight;
+ }
+
+ static typeToString(type) {
+ const { plus } = window;
+ // eslint-disable-next-line guard-for-in
+ for (const key in plus.barcode) {
+ const value = plus.barcode[key];
+ if (type === value) {
+ return key;
+ }
+ }
+ return '未知';
+ }
+
+ /**
+ * 开始扫码
+ * @param { (type, code)=>void } successHandler 扫码成功的处理方法
+ */
+ static startScan(successHandler) {
+ this.stopScan();
+ let view = null;
+ const { plus } = window;
+ const height = plus.screen.resolutionHeight - plus.navigator.getStatusbarHeight();
+ this.barcode = plus.barcode.create(
+ 'barcode',
+ [
+ plus.barcode.QR,
+ plus.barcode.EAN13,
+ plus.barcode.EAN8,
+ plus.barcode.AZTEC,
+ plus.barcode.DATAMATRIX,
+ plus.barcode.UPCA,
+ plus.barcode.UPCE,
+ plus.barcode.CODABAR,
+ plus.barcode.CODE39,
+ plus.barcode.CODE93,
+ plus.barcode.CODE128,
+ plus.barcode.ITF,
+ plus.barcode.MAXICODE,
+ plus.barcode.PDF417,
+ plus.barcode.RSS14,
+ plus.barcode.RSSEXPANDED,
+ ],
+ {
+ top: '0',
+ left: '0px',
+ width: '100%',
+ buttom: '0',
+ position: 'absolute',
+ zIndex: '1',
+ },
+ );
+ this.barcode.onmarked = (type, result) => {
+ this.stopScan();
+ newBaseView.close();
+ successHandler(type, result);
+ };
+
+ view = new plus.nativeObj.View(
+ 'test',
+ {
+ top: '20px', left: '20px', height: '30px', width: '80px',
+ },
+ [
+ {
+ tag: 'font',
+ id: 'font',
+ text: '关闭',
+ textStyles: { size: '18px', color: '#fff' },
+ position: {
+ top: '0px',
+ left: '0px',
+ width: '100%',
+ height: '30px',
+ },
+ },
+ ],
+ );
+
+ // view.interceptTouchEvent(true);
+ // plus.webview.currentWebview().append(view);
+
+ const id = Date.now().toString();
+ const newBaseView = plus.webview.create('', id, { top: '0px', bottom: '0px', height });
+ newBaseView.append(this.barcode);
+ newBaseView.append(view);
+ newBaseView.show();
+ this.barcode.start();
+ view.addEventListener('click', () => {
+ newBaseView.close();
+ this.barcode.close();
+ }, false);
+ }
+
+ /* 调用手机摄像头并拍照 */
+ static getImage() {
+ const { plus } = window;
+ const cmr = plus.camera.getCamera();
+ cmr.captureImage((p) => {
+ plus.io.resolveLocalFileSystemURL(p, (entry) => {
+ this.uploadImage(entry.toLocalURL(), entry.name); // 上传拍照的图片
+ }, (e) => {
+ plus.nativeUI.toast(`读取拍照文件错误:${e.message}`);
+ });
+ }, (e) => {
+ plus.nativeUI.toast(`调用摄像头错误:${e.message}`);
+ }, {
+ filter: 'image',
+ });
+ }
+
+ /* 相册选择图片 */
+ static getPhoto() {
+ const { plus } = window;
+ plus.gallery.pick((path) => {
+ const name = path.substring(path.lastIndexOf('/') + 1);
+ this.uploadImage(path, name);// 上传选择的图片
+ }, (e) => {
+ plus.nativeUI.toast(`选取图片错误:${e.message}`);
+ }, { filter: 'image' });
+ }
+
+ /* 图片上传入库 */
+ static uploadImage(url, filename) {
+ console.log('uploadImage:', url, filename);
+ }
+}
+
+export default BarCodeUtil;
diff --git a/src/mobile/common/CommobileBase.js b/src/mobile/common/CommobileBase.js
new file mode 100644
index 0000000..c2450ad
--- /dev/null
+++ b/src/mobile/common/CommobileBase.js
@@ -0,0 +1,742 @@
+/* eslint-disable prefer-destructuring */
+/**
+ * Created by mar105 on 2019-02-15.
+ */
+
+import React, { Component } from 'react';
+import moment from 'moment';
+import { Modal, Toast } from 'antd-mobile';
+import { addResult } from '@/utils/common/calcuate';
+import commonConfig from '../../utils/config';
+import * as commonUtils from '../../utils/utils';
+import * as commonServices from '../../services/services';
+import * as commonFunc from '../../components/Common/commonFunc';
+import * as commonBusiness from '../../components/Common/commonBusiness';
+// import * as commonFunc from './commonFunc'; /* 通用单据方法 */
+
+export default (ChildComponent) => {
+ return class extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ pageLoading: true,
+ token: props.app.token,
+ sModelsId: props.sModelsId, /* 获取配置数据用的modelId */
+ formRoute: props.formRoute, /* 组件名: 路由名称 */
+ sModelsType: props.sModelsType, /* 组件名: 路由名称 */
+ formData: [], /* 所有配置 */
+ gdsformconst: [], /* 获取配置常量 */
+ gdsjurisdiction: [], /* 获取配置权限 */
+ currentId: props.checkedId, /* 当前数据的Id */
+ selectedRowKeys: [], /* 已选择的数据行(数据格式:数组) */
+ clearArray: [], /* table清除数组 */
+ };
+ this.sDateFormat = 'YYYY-MM-DD';
+ }
+
+ async componentWillMount() {
+ /* 获取配置 */
+ this.mounted = true;
+ const { token, sModelsId } = this.state;
+ const config = await commonUtils.getStoreDropDownData(sModelsId, '', '');
+ if (commonUtils.isEmpty(config)) {
+ const configUrl = `${commonConfig.server_host}business/getModelBysId/${sModelsId}?sModelsId=${sModelsId}`;
+ const configReturn = (await commonServices.getService(token, configUrl)).data;
+ if (configReturn.code === 1) {
+ const [configData] = configReturn.dataset.rows;
+ // const { formData, gdsformconst, gdsjurisdiction, report, billnosetting } = configData;
+ if (this.mounted) {
+ // commonUtils.setStoreDropDownData(sModelsId, '', '', configData);
+ this.setState({ ...configData });
+ }
+ } else {
+ this.getServiceError(configReturn);
+ }
+ } else {
+ this.setState({ ...config });
+ }
+ }
+
+ shouldComponentUpdate(nextProps, nextState) {
+ const { formData } = nextState;
+ return (formData.length > 0);
+ }
+
+ componentWillUnmount() {
+ const {
+ currentId,
+ } = this.state;
+ const { copyTo } = this.props;
+ const { userinfo } = this.props.app;
+ if (commonUtils.isNotEmptyObject(copyTo)) {
+ const { slaveData } = copyTo;
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const sIdArray = [];
+ slaveData.forEach((item) => {
+ const redisKey = item.sSlaveId;
+ sIdArray.push(redisKey);
+ });
+ const sId = sIdArray.toString();
+ this.handleSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null);
+ }
+ }
+ this.handleSendSocketMessage('release', 'noAction', currentId, userinfo.sId, null, null);
+ }
+
+ /** sql条件 */
+ getSqlCondition = (showConfig, name, record) => {
+ const conditonValues = {};
+ if (commonUtils.isNotEmptyStr(showConfig.sSqlCondition)) {
+ const conditon = showConfig.sSqlCondition.split(',');
+ conditon.forEach((item) => {
+ if (item.indexOf('.') > -1) {
+ const tableName = item.split('.')[0];
+ let fieldName = item.split('.')[1];
+ let fieldNameFilter = item.split('.').length > 2 ? item.split('.')[2] : fieldName;
+ // master.sId 作为参数 master.sId.sId 作为filterDropdown过滤参数
+ if (showConfig.sDropDownType === 'picArr') {
+ fieldNameFilter = item.split('.').length > 2 ? item.split('.')[2] : fieldName;
+ if (fieldName.indexOf('&Search') > -1) {
+ // 参数为&Search时认为是查找数据集中取数据
+ const data = this.state[`${tableName}Data`];
+ if (typeof data === 'object' && data.constructor === Object) {
+ Object.keys(data).forEach((dataItem) => {
+ if (`&Search${data[dataItem]}` === fieldName) {
+ let sTmpName = dataItem;
+ sTmpName = sTmpName.replace('First', 'Third');
+ if (data[dataItem].substring(0, 1) === 't') {
+ fieldName = `p${sTmpName.substring(1, dataItem.length)}`;
+ } else {
+ fieldName = data[dataItem].substring(0, 1) + sTmpName.substring(1, sTmpName.length);
+ }
+ }
+ });
+ }
+ } else if (fieldName.indexOf('&') > -1) {
+ fieldNameFilter = item.split('.').length > 2 ? item.split('.')[2] : fieldName;
+ conditonValues[fieldNameFilter] = fieldName.replace('&', '');
+ return;
+ }
+ }
+ if (fieldName !== '') {
+ if (name === tableName && !commonUtils.isEmpty(record)) {
+ const data = record;
+ conditonValues[fieldNameFilter] = data[fieldName];
+ } else {
+ const data = this.state[`${tableName}Data`];
+ const selectedRowKeys = this.state[`${tableName}SelectedRowKeys`];
+ if (typeof data === 'object' && data.constructor === Object) {
+ conditonValues[fieldNameFilter] = data[fieldName];
+ } else if (commonUtils.isNotEmptyArr(selectedRowKeys)) {
+ let iIndex = data.findIndex(itemData => itemData.sId === selectedRowKeys[0]);
+ iIndex = iIndex > -1 ? iIndex : data.findIndex(itemData => itemData.sSlaveId === selectedRowKeys[0]);
+ if (iIndex > -1) {
+ conditonValues[fieldNameFilter] = data[iIndex][fieldName];
+ }
+ } else if (commonUtils.isNotEmptyArr(data)) {
+ conditonValues[fieldNameFilter] = data[0][fieldName];
+ }
+ }
+ }
+ }
+ });
+ }
+ return conditonValues;
+ };
+
+ /** 获取sql下拉数据 */
+ getSqlDropDownData = async (formId, name, showConfig, record, platform) => {
+ /* 地址 */
+ if (commonUtils.isEmpty(showConfig.sFieldToContent)) {
+ const url = `${commonConfig.server_host}business/getSelectDataBysControlId/${showConfig.sId}?sModelsId=${this.state.sModelsId}`;
+ /* 参数 */
+ const conditonValues = this.getSqlCondition(showConfig, name, record);
+ const body = {
+ sKeyUpFilterName: '', /* 边输入边过滤,暂时没用1 */
+ sSqlCondition: commonUtils.isEmptyObject(conditonValues) ? '' : conditonValues, /* 查询条件 */
+ };
+ /* 获取数据 */
+ const json = await commonServices.postValueService(this.props.app.token, body, url);
+ /* code为1代表获取数据成功 */
+ if (json && commonUtils.isNotEmptyArr(json.data.dataset) && json.data.code === 1) {
+ /* 获取数据集 */
+ const { rows } = json.data.dataset;
+ return rows;
+ } else {
+ if (['pda'].includes(platform)) {
+ // Modal.alert('温馨提示', json?.data?.msg || '出错了', [
+ // { text: '确认' },
+ // ]);
+ const msg = json?.data?.msg || '出错了';
+ Toast.fail(msg, 1);
+ throw new Error();
+ }
+ return [];
+ }
+ } else {
+ const returnData = [];
+ if (showConfig.sFieldToContent === '1') {
+ if (name === 'master') {
+ const { [`${name}Data`]: data } = this.state;
+ const sName = `sParamDropDown${showConfig.sName.replace('sParamValue', '')}`;
+ returnData.push(...commonUtils.objectToArr(data[sName]));
+ } else {
+ const { [`${name}Data`]: data, [`${name}SelectedRowKeys`]: selectedRowKeys } = this.state;
+ const sName = `sParamDropDown${showConfig.sName.replace('sParamValue', '')}`;
+ if (commonUtils.isNotEmptyObject(record)) {
+ returnData.push(...commonUtils.objectToArr(record[sName]));
+ } else if (commonUtils.isNotEmptyArr(data) && commonUtils.isNotEmptyArr(selectedRowKeys)) {
+ const iIndex = data.findIndex(item => item.sId === selectedRowKeys.toString());
+ if (iIndex > -1) {
+ returnData.push(...commonUtils.objectToArr(data[iIndex][sName]));
+ }
+ }
+ }
+ } else {
+ const unionCondition = showConfig.sFieldToContent.split('&&');
+ unionCondition.forEach((unionItem) => {
+ const conditon = unionItem.split(',');
+ const tableNameContent = conditon[0].split('.')[0];
+ let data = this.state[`${tableNameContent}Data`];
+ if (commonUtils.isNotEmptyArr(data)) {
+ if (showConfig.sSqlCondition !== '') {
+ const sSqlCondition = showConfig.sSqlCondition;
+ const sqlConditon = sSqlCondition.split(',');
+ sqlConditon.forEach((item) => {
+ const tableName = item.split('.')[0];
+ const fieldName = item.split('.')[1];
+ const fieldNameFilter = item.split('.').length > 2 ? item.split('.')[2] : fieldName;
+ const dataCondition = this.state[`${tableName}Data`];
+ const selectedRowKeys = this.state[`${tableName}SelectedRowKeys`];
+ if (typeof dataCondition === 'object' && dataCondition.constructor === Object) {
+ data = data.filter(item => commonUtils.isNull(item[fieldNameFilter], '') === commonUtils.isNull(dataCondition[fieldName], ''));
+ } else if (commonUtils.isNotEmptyArr(selectedRowKeys)) {
+ let iIndex = dataCondition.findIndex(itemData => itemData.sId === selectedRowKeys[0]);
+ iIndex = iIndex > -1 ? iIndex : dataCondition.findIndex(itemData => itemData.sSlaveId === selectedRowKeys[0]);
+ if (iIndex > -1) {
+ data = data.filter(item => commonUtils.isNull(item[fieldNameFilter], '') === commonUtils.isNull(dataCondition[iIndex][fieldName], ''));
+ }
+ } else if (commonUtils.isNotEmptyArr(data)) {
+ data = data.filter(item => commonUtils.isNull(item[fieldNameFilter], '') === commonUtils.isNull(dataCondition[0][fieldName], ''));
+ }
+ });
+ }
+ data.forEach((itemDataRow) => {
+ const dataRow = {};
+ conditon.forEach((item) => {
+ const fieldName = item.split('.')[1];
+ const fieldNameFilter = item.split('.').length > 2 ? item.split('.')[2] : fieldName;
+ if (fieldName.indexOf('-') >= 0) {
+ fieldName.split('-').forEach((itemField) => {
+ const sFieldValue = commonUtils.isEmpty(itemDataRow[itemField]) ? '' : itemDataRow[itemField].toString();
+ dataRow[fieldNameFilter] = commonUtils.isEmpty(dataRow[fieldNameFilter]) ? sFieldValue : `${dataRow[fieldNameFilter]}-${sFieldValue}`;
+ });
+ } else {
+ dataRow[fieldNameFilter] = commonUtils.isEmpty(itemDataRow[fieldName]) ? '' : itemDataRow[fieldName].toString();
+ }
+ });
+
+ returnData.push(dataRow);
+ });
+ }
+ });
+ }
+ return returnData;
+ }
+ };
+ /* 获取数字格式化规范 */
+ getFloatNum = (sName) => {
+ if (sName.toLowerCase().endsWith('price')) { /* 价格 */
+ return this.props.app.decimals.dNetPrice;
+ } else if (sName.toLowerCase().endsWith('money')) { /* 金额 */
+ return this.props.app.decimals.dNetMoney;
+ } else { /* 其它 */
+ return 6;
+ }
+ };
+
+ /** 获取sql下拉数据 */
+ getServiceError = async (returnData) => {
+ this.props.dispatch({ type: 'app/throwErrorMobile', payload: returnData });
+ };
+
+ /* 获取数字格式化规范 */
+ getDateFormat = () => {
+ return this.props.app.dateFormat;
+ };
+
+ /* 获取配置数据用的sTabId,formId,formRoute */
+ handleConfigValue = (value) => {
+ const { secondppopupPane, ppopupPane, currentPane } = this.props.app;
+ return commonUtils.isNotEmptyObject(secondppopupPane)
+ ? secondppopupPane[value]
+ : commonUtils.isNotEmptyObject(ppopupPane)
+ ? ppopupPane[value] : currentPane[value];
+ };
+
+ /* 获取后台数据(单条) */
+ handleGetDataOne = async (params) => {
+ const { token, sModelsId } = this.state;
+ const {
+ name, configData, condition, isWait,
+ } = params;
+
+ const lockUrl = `${commonConfig.server_host}business/addSysLocking?sModelsId=${sModelsId}`;
+
+ const configDataId = configData.sId;
+ const dataUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${configDataId}?sModelsId=${sModelsId}`;
+ const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data;
+ if (dataReturn.code === 1) {
+ const [returnData] = dataReturn.dataset.rows[0].dataSet;
+ const addState = {};
+ const value = {
+ tableName: configData.sTbName,
+ sId: [returnData.sId],
+ };
+ const { data } = await commonServices.postValueService(token, value, lockUrl);
+ if (data.code === 1) { /* 失败 */
+ addState.sUseInfo = '';
+ } else { /* 失败 */
+ addState.sUseInfo = data.msg;
+ }
+ addState[`${name}Data`] = returnData;
+ if (isWait) {
+ return addState;
+ } else if (this.mounted) {
+ this.setState({ ...addState });
+ }
+ } else {
+ this.getServiceError(dataReturn);
+ }
+ };
+
+ /* 获取后台数据(数据集) */
+ handleGetDataSet = async (params) => {
+ const {
+ name, configData, condition, isWait,
+ } = params;
+ const {
+ token, sModelsId, [`${name}SelectedRowKeys`]: tableSelectedRowKeys,
+ } = this.state;
+ const configDataId = configData.sId;
+ const dataUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${configDataId}?sModelsId=${sModelsId}`;
+ const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data;
+ if (dataReturn.code === 1) {
+ const returnData = dataReturn.dataset.rows[0].dataSet;
+ const returnPagination = {
+ total: dataReturn.dataset.totalCount,
+ current: dataReturn.dataset.currentPageNo,
+ };
+ const { sumSet } = dataReturn.dataset.rows[0];
+ const totalData = sumSet !== undefined ? sumSet : [];
+ const filterCondition = commonUtils.isNotEmptyObject(condition) ? condition.bFilter : '';
+ const orderBy = commonUtils.isNotEmptyObject(condition) ? condition.sFilterOrderBy : '';
+ let addState = {
+ [`${name}Data`]: returnData, [`${name}Pagination`]: returnPagination, [`${name}FilterCondition`]: filterCondition, [`${name}OrderBy`]: orderBy, [`${name}SelectedRowKeys`]: tableSelectedRowKeys,
+ };
+ if (dataReturn.dataset.currentPageNo === 1) {
+ addState = { ...addState, [`${name}Total`]: totalData };
+ }
+ if (isWait) {
+ return addState;
+ } else if (this.mounted) {
+ this.setState(addState);
+ }
+ } else if (dataReturn.code === -8) {
+ Modal.alert('温馨提示', dataReturn.msg || '出错了', [
+ { text: '确认' },
+ ]);
+ } else {
+ this.getServiceError(dataReturn);
+ }
+ };
+
+ /* 数据保存到state */
+ handleSaveState = (values) => {
+ if (this.mounted) {
+ this.setState(values);
+ }
+ };
+
+ /** 修改主表数据 */
+ handleMasterChange = (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => {
+ const { masterData: masterDataOld } = this.state;
+ const { sModelsId, masterConfig } = this.state;
+ let masterData = masterDataNew === undefined ? masterDataOld === undefined ? {} : masterDataOld : masterDataNew;
+ let { handleType } = masterData;
+ handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ if (sFieldName.substring(0, 1).toLowerCase() === 'c') {
+ const sAllField = sFieldName.substring(1, sFieldName.length);
+ const allField = sAllField.split('_');
+ const value = changeValue[sFieldName];
+ allField.forEach((item, iArr) => {
+ if (value.length > iArr) {
+ changeValue[item] = value[iArr];
+ }
+ });
+ }
+ if (!commonUtils.isEmpty(masterConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave) && !commonUtils.isEmpty(sFieldName)) {
+ masterConfig.gdsconfigformslave.filter(item => !commonUtils.isEmpty(item.sSqlCondition) && !commonUtils.isEmpty(item.sChineseDropDown) &&
+ (item.sChineseDropDown.includes(`#${sFieldName}`) || item.sChineseDropDown.includes(`*${sFieldName}`)) &&
+ (item.sSqlCondition.includes(sFieldName) || item.sSqlCondition.includes(sFieldName.replace('Name', 'Id')))).forEach((item) => {
+ commonUtils.setStoreDropDownData(sModelsId, name, item.sName, []);
+ });
+ }
+ masterData = { ...masterData, ...changeValue, handleType };
+ if (isWait) {
+ return { masterData, sUseInfo: '' };
+ } else if (this.mounted) {
+ this.setState({ masterData, sUseInfo: '' });
+ return { masterData };
+ }
+ };
+
+ /** 添加表格空行 */
+ handleTableAdd = (name, isWait) => {
+ /* 外置处理业务 */
+ const {
+ [`${name}Config`]: tableConfig, masterData, slaveData, slaveSelectedRowKeys,
+ } = this.state;
+ let { [`${name}Data`]: tableData } = this.state;
+ tableData = commonUtils.isEmptyObject(tableData) ? [] : tableData;
+ const allTableData = {};
+ allTableData.master = masterData;
+ if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
+ const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys.toString());
+ allTableData.slave = slaveData[iSlaveIndex];
+ } else {
+ allTableData.slave = slaveData[0];
+ }
+ const iOrderArr = [];
+ tableData.forEach((item) => {
+ const iOrder = commonUtils.isNotEmptyNumber(item.iOrder) ? item.iOrder : 0; /* 获取tableData中iOrder最大值 */
+ iOrderArr.push(iOrder);
+ });
+ const iOrderMax = Math.max(...iOrderArr);
+ const tableDataRow = commonFunc.getDefaultData(tableConfig, allTableData);
+ tableDataRow.handleType = 'add';
+ tableDataRow.sId = commonUtils.createSid();
+ tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null;
+ tableDataRow.key = tableDataRow.sId;
+ tableDataRow.bDefault = false;
+ tableDataRow.iOrder = commonUtils.isNotEmptyArr(tableData) ? iOrderMax + 1 : 0;
+
+ const iIndex = this.props.app.systemData.findIndex(item => item.sName === 'CbxMaterialsDefine');
+ if (iIndex > -1) {
+ const sCbxMaterialsDefine = this.props.app.systemData[iIndex].sValue;
+ if (sCbxMaterialsDefine === 'datenum') {
+ tableDataRow.sDefineNo = moment(new Date()).format('YYYYMMDD');
+ } else if (sCbxMaterialsDefine === 'datetimenum') {
+ tableDataRow.sDefineNo = moment(new Date()).format('YYYYMMDDHHmm');
+ } else if (sCbxMaterialsDefine === 'yearnum') {
+ tableDataRow.sDefineNo = moment(new Date()).format('YYYY');
+ } else if (sCbxMaterialsDefine === 'yearmonthnum') {
+ tableDataRow.sDefineNo = moment(new Date()).format('YYYYMM');
+ } else if (sCbxMaterialsDefine === 'worknum') {
+ tableDataRow.sDefineNo = tableDataRow.sWorkOrderNo;
+ } else if (sCbxMaterialsDefine === 'manuualno') {
+ tableDataRow.sDefineNo = tableDataRow.sManualNo;
+ } else if (sCbxMaterialsDefine === 'createnownum') { /* 批号根据生产日期+当前日期 */
+ tableDataRow.sDefineNo = moment(tableDataRow.tProductionDate).format('YYYYMMDDHHmm') + moment(new Date()).format('YYYYMMDDHHmm');
+ }
+ }
+
+ if (isWait) {
+ return tableDataRow;
+ } else {
+ // tableData.splice(index, 1, tableDataRow); /* 该处会导致新增时删除首行 */
+ tableData.push(tableDataRow);
+ if (this.mounted) {
+ this.setState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] });
+ }
+ }
+ };
+
+ /** 表格数据更改 */
+ // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData)
+ handleTableChange = (name, sFieldName, changeValue, sId, dropDownData, isWait) => {
+ const {
+ [`${name}Data`]: tableData, [`${name}Config`]: tableConfig, sModelsId, masterData, slaveData, controlData,
+ } = this.state;
+ const iIndex = tableData.findIndex(item => item.sId === sId);
+ let { handleType } = tableData[iIndex];
+ handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ if (sFieldName.substring(0, 1).toLowerCase() === 'c') {
+ const sAllField = sFieldName.substring(1, sFieldName.length);
+ const allField = sAllField.split('_');
+ const value = changeValue[sFieldName];
+ allField.forEach((item, iArr) => {
+ if (value.length > iArr) {
+ changeValue[item] = value[iArr];
+ }
+ });
+ }
+ if (!commonUtils.isEmpty(tableConfig.gdsconfigformslave) && commonUtils.isNotEmptyArr(tableConfig.gdsconfigformslave) && !commonUtils.isEmpty(sFieldName)) {
+ tableConfig.gdsconfigformslave.filter(item => !commonUtils.isEmpty(item.sSqlCondition) && item.sSqlCondition.includes(sFieldName)).forEach((item) => {
+ commonUtils.setStoreDropDownData(sModelsId, name, item.sName, []);
+ });
+ }
+ const tableAllData = {
+ master: masterData,
+ slave: slaveData,
+ control: controlData,
+ };
+ const tableDataRowNew = { ...tableData[iIndex], ...changeValue, handleType };
+ const tableDataAfter = commonBusiness.getKeyUpEvent(name, sFieldName, tableConfig, tableDataRowNew, tableDataRowNew, true, tableAllData);
+ console.log('tableDataAfter::', tableDataAfter);
+ if (commonUtils.isNotEmptyObject(tableDataAfter)) {
+ changeValue = { ...tableDataAfter };
+ }
+ if (isWait) {
+ return { ...tableData[iIndex], ...changeValue, handleType };
+ } else {
+ tableData[iIndex] = { ...tableData[iIndex], ...changeValue, handleType };
+ if (this.mounted) {
+ this.setState({ [`${name}Data`]: tableData, sUseInfo: '' });
+ }
+ }
+ };
+
+ handleSendSocketMessage = (flag, showType, sId, sendTo, msgInfo, param) => {
+ const { token } = this.props.app;
+ const sendws = this.handleSendWebSocketMsg;
+ const { dispatch } = this.props;
+ if (commonUtils.isNotEmptyObject(token)) {
+ if (this.props.app.webSocket !== null && this.props.app.webSocket.readyState === WebSocket.OPEN) {
+ sendws(flag, showType, msgInfo, sId, sendTo, param);
+ } else {
+ this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } });
+ setTimeout(() => {
+ console.log('====== reStart ======');
+ sendws(flag, showType, msgInfo, sId, sendTo, param);
+ }, 30000);
+ }
+ }
+ };
+
+ handleSendWebSocketMsg = (flag, showType, msgInfo, sId, sendTo, param) => {
+ const { app } = this.props;
+ const { webSocket, userinfo, currentPane } = app;
+ const { key } = currentPane;
+ commonFunc.sendWebSocketMessage(webSocket, key, flag, showType, userinfo.sId, msgInfo, sId, sendTo, param);
+ }
+
+ handleFilterDropDownData = (dropDownData, showConfig, name, record) => {
+ if (!commonUtils.isEmptyArr(dropDownData)) {
+ const conditon = showConfig.sSqlCondition.split(',');
+ let orTableName;
+ let orFieldName;
+ let orFieldNameFilter;
+ let orValue;
+ conditon.forEach((item) => {
+ if (item.indexOf('.') > -1) {
+ const tableName = item.split('.')[0];
+ const fieldName = item.split('.')[1];
+ const fieldNameFilter = item.split('.')[2];
+ if (tableName.indexOf('|') > -1) {
+ orTableName = tableName.replace('|', '');
+ orFieldName = fieldName;
+ orFieldNameFilter = fieldNameFilter;
+ if (orFieldName.indexOf('&') > -1) {
+ orValue = orFieldName.replace('&', '');
+ } else if (!commonUtils.isEmpty(orFieldNameFilter)) {
+ if (name === orTableName && !commonUtils.isEmpty(record)) {
+ const data = record;
+ orValue = data[orFieldName];
+ } else {
+ const data = this.state[`${orTableName}Data`];
+ const selectedRowKeys = this.state[`${orTableName}SelectedRowKeys`];
+ if (typeof data === 'object' && data.constructor === Object) {
+ orValue = data[orFieldName];
+ } else if (commonUtils.isNotEmptyArr(selectedRowKeys)) {
+ const iIndex = data.findIndex(itemData => itemData.sId === selectedRowKeys[0]);
+ if (iIndex > -1) {
+ orValue = data[iIndex][orFieldName];
+ }
+ } else if (commonUtils.isNotEmptyArr(data)) {
+ orValue = data[0][orFieldName];
+ }
+ }
+ }
+ orValue = orValue.toString();
+ } else if (!commonUtils.isEmpty(orFieldName)) {
+ // master.sId 作为参数 control.sId.sControlId 作为filterDropdown过滤参数
+ if (!commonUtils.isEmpty(fieldNameFilter)) {
+ if (name === tableName && !commonUtils.isEmpty(record)) {
+ const data = record;
+ dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[fieldName] || itemDrop[orFieldNameFilter] === orValue);
+ } else {
+ const data = this.state[`${tableName}Data`];
+ const selectedRowKeys = this.state[`${tableName}SelectedRowKeys`];
+ if (typeof data === 'object' && data.constructor === Object) {
+ dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[fieldName] || itemDrop[orFieldNameFilter] === orValue);
+ } else if (commonUtils.isNotEmptyArr(selectedRowKeys)) {
+ const iIndex = data.findIndex(itemData => itemData.sId === selectedRowKeys[0]);
+ if (iIndex > -1) {
+ dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[iIndex][fieldName] || itemDrop[orFieldNameFilter] === orValue);
+ }
+ } else if (commonUtils.isNotEmptyArr(data)) {
+ dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[0][fieldName] || itemDrop[orFieldNameFilter] === orValue);
+ }
+ }
+ }
+ } else if (!commonUtils.isEmpty(fieldNameFilter)) {
+ if (name === tableName && !commonUtils.isEmpty(record)) {
+ const data = record;
+ dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[fieldName]);
+ } else {
+ const data = this.state[`${tableName}Data`];
+ const selectedRowKeys = this.state[`${tableName}SelectedRowKeys`];
+ if (typeof data === 'object' && data.constructor === Object) {
+ dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[fieldName]);
+ } else if (commonUtils.isNotEmptyArr(selectedRowKeys)) {
+ const iIndex = data.findIndex(itemData => itemData.sId === selectedRowKeys[0]);
+ if (iIndex > -1) {
+ dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[iIndex][fieldName]);
+ }
+ } else if (commonUtils.isNotEmptyArr(data)) {
+ dropDownData = dropDownData.filter(itemDrop => itemDrop[fieldNameFilter] === data[0][fieldName]);
+ }
+ }
+ }
+ }
+ });
+ }
+
+ // let dropDownData = dropDownDataOld;
+ // const data = this.state[`${tableName}Data`];
+ // const selectedRowKeys = this.state[`${tableName}SelectedRowKeys`];
+ // if (commonUtils.isNotEmptyArr(selectedRowKeys)) {
+ // const SelectedData = data.filter(item => item.sId === selectedRowKeys[0]);
+ // if (SelectedData.length > 0 && commonUtils.isNotEmptyStr(SelectedData[0][fieldName])) {
+ // if (commonUtils.isNotEmptyArr(dropDownData)) {
+ // dropDownData = dropDownData.filter(item => item[fieldName] === SelectedData[0][fieldName]);
+ // }
+ // }
+ // }
+ return dropDownData;
+ };
+
+ /* 增加通用的tmpInfobySql功能 */
+ handleTmpInfoBySql = async (copyToConfig, sRowData, copyTo) => {
+ const returnObj = commonUtils.isNotEmptyObject(copyTo) ? copyTo : {};
+ const { token, sModelsId } = this.state;
+ const sControlName = copyToConfig[0].sControlName;
+ if (commonUtils.isNotEmptyObject(sControlName) && sControlName.toLowerCase().includes('tmpinfobysql')) { /* 根据配置下拉sql获取数据源 */
+ const dataUrl = `${commonConfig.server_host}salesorder/getTmpInfoBySql/?sModelsId=${sModelsId}`;
+ const sConfigformId = commonUtils.isEmpty(copyToConfig) ? '' : copyToConfig[0].sParentId;
+ const sControlName = commonUtils.isNotEmptyObject(sControlName) ? sControlName : 'BtnCopyTo.tmpInfoBySql';
+ const values = { sConfigformId, sControlName, sRowData };
+ const dataReturn = (await commonServices.postValueService(token, values, dataUrl)).data;
+ if (dataReturn.code === 1) {
+ const returnData = dataReturn.dataset.rows[0];
+ if (commonUtils.isNotEmptyObject(returnData)) {
+ for (const key of Object.keys(returnData)) {
+ const sName = `${key}Data`;
+ const masterName = sControlName.replace('BtnCopyTo.', '').trim();
+ if (key === masterName) {
+ returnObj.masterData = returnData[key][0];
+ } else {
+ returnObj[sName] = returnData[key];
+ }
+ }
+ if (commonUtils.isNotEmptyArr(returnObj.masterData) && Array.isArray(returnObj.masterData)) {
+ returnObj.masterData = returnObj.masterData[0];
+ }
+ }
+ } else {
+ this.getServiceError(dataReturn);
+ }
+ }
+ return returnObj;
+ }
+
+ /**
+ * 增加,删除, pda, copyto, onChange
+ * @param {*} data
+ * @param {*} isOutsourcedProcesses
+ * @param {*} tabPage
+ * @param {*} masterData
+ * @returns
+ */
+ handleMasterDefaultData = (data, isOutsourcedProcesses, tabPage, masterData, {
+ masterConfig, slaveChildConfig, slave0Config, slaveConfig,
+ } = {}) => {
+ let iTypeConfig = this.state.slaveChildConfig || slaveChildConfig;
+ const config = this.state.masterConfig || masterConfig;
+ if (config) {
+ const value = config.gdsconfigformslave?.find(i => i &&
+ ((['sDefaultQty'].includes(i.sName) && !isOutsourcedProcesses) ||
+ (isOutsourcedProcesses && ['sDefaultSlaveChild', 'sDefaultSlave0'].includes(i.sName))));
+ if (!value) return masterData;
+ } else {
+ return masterData;
+ }
+
+ let sDefaultQty = 'sDefaultQty';
+ let sSlaveLength = 'sSlaveLength';
+ // 外发区分配置
+ if (isOutsourcedProcesses) {
+ iTypeConfig = ({
+ 1: slave0Config || this.state.slave0Config,
+ }[tabPage]) || slaveConfig || this.state.slaveConfig;
+
+ sDefaultQty = {
+ 0: 'sDefaultSlaveChild',
+ 1: 'sDefaultSlave0',
+ }[tabPage] || 'sDefaultSlave';
+ sSlaveLength = {
+ 0: 'sSlaveLengthSlaveChild',
+ 1: 'sSlaveLengthSlave0',
+ }[tabPage] || 'sSlaveLengthSlave';
+ } else if (typeof tabPage === 'undefined') {
+ if (!commonUtils.isNotEmptyObject(this.state.slaveChildConfig || slaveChildConfig)) {
+ iTypeConfig = slaveConfig;
+ }
+ }
+
+ const hasiType = iTypeConfig?.gdsconfigformslave?.find(item => ['itype', 'iType'].includes(item?.sName));
+ const iType = hasiType?.sDefault;
+ const type = iType !== undefined ? iType : 11;
+ let name = 'dAuxiliaryQty';
+ if (['10', '12'].includes(type)) {
+ name = 'dProductQty';
+ }
+
+ const result = data.reduce((a, b) => {
+ return addResult(a, (Number(b?.[name]) || 0));
+ }, 0);
+
+ return {
+ ...masterData || {},
+ [sSlaveLength]: data.length,
+ [sDefaultQty]: result,
+ };
+ }
+
+ render() {
+ return (
+
+ );
+ }
+ };
+};
diff --git a/src/mobile/common/CommobileBill.js b/src/mobile/common/CommobileBill.js
new file mode 100644
index 0000000..7dbe1bd
--- /dev/null
+++ b/src/mobile/common/CommobileBill.js
@@ -0,0 +1,1282 @@
+/* eslint-disable */
+import React from 'react';
+import weixin from 'weixin-js-sdk';
+import { Flex, Button, ListView, Toast } from 'antd-mobile';
+import { createForm } from 'rc-form';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import CommobileBase from './CommobileBase';
+import CommobileBillEvent from './CommobileBillEvent';
+import CommobileViewMaster from './CommobileViewMaster';
+import commonConfig from '../../utils/config';
+import * as commonUtils from '../../utils/utils';
+import ShowType from './CommobileComponent';
+import CommobileToolBar from './CommobileToolBar';
+import styles from '../mobile.less';
+import add from '../../assets/mobile/add-select.svg';
+import scan from '../../assets/mobile/scanning.svg';
+import close from '../../assets/mobile/close.svg';
+import * as commonFunc from '../../components/Common/commonFunc';
+import BarCodeUtil from './BarCodeUtil';
+import preView from '../components/preView';
+import * as commonServices from "../../services/services";
+
+const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+});
+
+class CommobileBill extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ };
+ }
+
+ // eslint-disable-next-line react/sort-comp
+ handleClick = async (name, type, sId) => {
+ if (name === 'BtnSave') {
+ this.props.onSubmit();
+ } else if (name === 'BtnUpd') {
+ this.props.onEdit(name);
+ } else if (type === 'add') {
+ this.props.onDataRowAdd(name);
+ } else if (type === 'del') {
+ const { app, [`${name}Data`]: tableData } = this.props;
+ let { [`${name}DelData`]: tableDelData } = this.props;
+ tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData;
+ if (sId !== '') {
+ const tableDataIndex = tableData.findIndex(item => item.sId === sId);
+ if (tableDataIndex > -1) {
+ const slaveDataFilter = tableData[tableDataIndex];
+ tableData.splice(tableDataIndex, 1);
+ slaveDataFilter.handleType = 'del';
+ tableDelData.push(slaveDataFilter);
+ }
+ this.props.onSaveState({
+ [`${name}Data`]: tableData,
+ [`${name}DelData`]: tableDelData,
+ [`${name}SelectedRowKeys`]: [],
+ });
+ } else {
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据
+ }
+ } else if (type === 'scan' || name === 'BtnScan') {
+ BarCodeUtil.startScan(async (type, code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveData, sModelsType, masterConfig,
+ } = this.props;
+ /* 规则定义
+ 材料
+ sDefineNo: codeArr[0], --唯一码
+ sMaterialsName: codeArr[1], --材料名称
+ sMaterialsStyle: codeArr[2], --材料规格
+ dAuxiliaryQty: codeArr[3], --数量
+ sWareHouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sMaterialsId: codeArr[8], --材料ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10], --sLocationId
+ 成品
+ sDefineNo: codeArr[0], --唯一码
+ sProductName: codeArr[1], --产品名称
+ sProductStyle: codeArr[2], --产品规格
+ dProductQty: codeArr[3], --产品数量
+ sWarehouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --仓库名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sProductId: codeArr[8], --产品ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10],
+ sCustomerName: codeArr[11], --客户名称
+ sCustomerShort: codeArr[12],
+ sOrderNo: codeArr[13], --订单号
+ sWorkOrderNo: codeArr[14], --工单号
+ sCustomerOrderNo: codeArr[15], --客户编号
+ sCustomerProductNo: codeArr[16], --客户产品编号
+ */
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ let masterDataObjAdd = {};
+ if (commonUtils.isEmptyObject(code)) {
+ Toast.fail('二维码扫码失败!', 1);
+ return;
+ }
+ const codeArr = code.split('|');
+ let models = '';
+ if (codeArr.length === 12) { /* 材料 */
+ models = 'Materials';
+ } else if (codeArr.length === 17) { /* 成品 */
+ models = 'Product';
+ } else {
+ models = 'Single'; /* 单一的 */
+ }
+ if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */
+ /* 取第一条码 */
+ const sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ const sDefineNoName = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sActiveKey : 'sDefineNo';
+
+ masterdataObj = {
+ ...masterData, [sDefineNoName] : sDefineNo
+ };
+ /* 唯一码调接口 */
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+ slaveDataObj.sParentId = masterdataObj.sId;
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1][sDefineNoName];
+ const { handleType } = slaveData[len - 1];
+ /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ if (commonUtils.isEmptyObject(sDefineNoNew)) {
+ slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ // slaveData[len - 1] = slaveDataObj;
+ slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj};
+ } else {
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.handleType = 'add';
+ slaveData.unshift(slaveDataObj);
+ }
+ } else {
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.handleType = 'add';
+ slaveData.unshift(slaveDataObj);
+ }
+ if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ }
+ } else if (models === 'Materials') { /* sModelsType === 'materialsStock/productionmaterials' */
+ /* 取第一条码 */
+ const sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1;
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined;
+ // const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sDefineNo: codeArr.length > 0 ? codeArr[0] : '',
+ sMaterialsName: codeArr.length > 1 ? codeArr[1] : '',
+ sMaterialsStyle: codeArr.length > 2 ? codeArr[2] : '',
+ dAuxiliaryQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0) : '',
+ sDefineNo2: codeArr.length > 6 ? codeArr[6] : '',
+ sMaterialsId: codeArr.length > 8 ? codeArr[8] : '',
+ sWareHouseId: codeArr.length > 9 ? codeArr[9] : '',
+ sLocationId: codeArr.length > 10 ? codeArr[10] : '',
+ dMaterialsQty: codeArr.length > 11 ? commonUtils.isNull(Number(codeArr[11]), 0) : '',
+ tInStoreDate: dateStr,
+ };
+ masterdataObj = {
+ ...masterData, ...slaveDataObjAdd,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1);
+ // if(commonUtils.isEmptyArr(btnScanConfigs)) {
+ // Toast.fail('请配置扫码按钮!!!', 1);
+ // return;
+ // }
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] };
+ }
+ }
+ slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+
+ // slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.iOrder = 1;
+ console.log('slaveDataObj1111', slaveDataObj);
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId');
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId');
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : '';
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+
+ let materialsNameDropDownData = [];
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') {
+ materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ // }
+ let materialsNameDataOne;
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ if (!commonUtils.isEmpty(materialsNameDropDownData)) {
+ if (codeArr.length > 1) {
+ materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[1]);
+ }
+ }
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ if (codeArr.length > 4) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]);
+ }
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ if (codeArr.length > 5) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]);
+ }
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterdataObj;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let materialsDataDetiale = {};
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) };
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...slaveDataObj,
+ ...onDataRowAdd,
+ ...materialsDataDetiale,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = { ...masterdataObj, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale };
+ } else if (sModelsType === 'Product') { // 扫码待发货 sales/salesSgoods
+ /* 取第一条码 */
+ const sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1;
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined;
+ slaveDataObjAdd = {
+ sCustomerShort: codeArr.length > 12 ? codeArr[12] : '',
+ sOrderNo: codeArr.length > 13 ? codeArr[13] : '',
+ sWorkOrderNo: codeArr.length > 14 ? codeArr[14] : '',
+ sCustomerOrderNo: codeArr.length > 15 ? codeArr[15] : '',
+ sCustomerProductNo: codeArr.length > 13 ? codeArr[16] : '',
+ sDefineNo: codeArr.length > 0 ? codeArr[0] : '',
+ sDefineNo2: codeArr.length > 6 ? codeArr[6] : '',
+ dProductQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0): '',
+ tInStoreDate: dateStr,
+ };
+ masterdataObj = {
+ ...masterData, ...slaveDataObjAdd,
+ };
+ // masterDataObjAdd = {
+ // sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', sDefineNo: sDefineNo,
+ // };
+ /* 读取多条扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] };
+ }
+ }
+ /* 唯一码调接口 */
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+ // slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.iOrder = 1;
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位
+ const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称
+
+
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+ const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : '';
+
+
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ let sProductNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') {
+ sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData);
+ }
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ let sProductNameDataOne;
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ if (codeArr.length > 4) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]);
+ }
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ if (codeArr.length > 5) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]);
+ }
+ }
+ if (!commonUtils.isEmpty(sProductNamedropDownData)) {
+ if (codeArr.length > 1) {
+ sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[1]);
+ }
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ let sProductNameDataDetiale = {};
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...slaveDataObj,
+ ...onDataRowAdd,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sProductNameDataDetiale,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = {
+ ...masterData,
+ ...sLocationNameDataDetiale,
+ ...masterDataObjAdd,
+ ...sWareHouseNameDataDetiale,
+ };
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (models !== 'Single') {
+ slaveData.unshift(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveData, masterData: masterdataObj });
+ });
+ } else if (type === 'scan1') {
+ BarCodeUtil.startScan(async (type, code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveData, sModelsType,
+ } = this.props;
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ let masterDataObjAdd = {};
+ const codeArr = code.split('|');
+ if (sModelsType === 'materialsStock/productionmaterials') {
+ const dataStr = codeArr[10].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sMaterialsStyle: codeArr[1],
+ sDefineNo: codeArr[4],
+ sDefineNo2: codeArr[5],
+ dAuxiliaryQty: codeArr[7],
+ tInStoreDate: date,
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId');
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId');
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : '';
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+
+ let materialsNameDropDownData = [];
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') {
+ materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ // }
+ let materialsNameDataOne;
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ if (!commonUtils.isEmpty(materialsNameDropDownData)) {
+ materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]);
+ }
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let materialsDataDetiale = {};
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) };
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...materialsDataDetiale,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale };
+ } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货
+ const dataStr = codeArr[12].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sOrderNo: codeArr[9],
+ sWorkOrderNo: codeArr[8],
+ sCustomerOrderNo: codeArr[10],
+ sCustomerProductNo: codeArr[11],
+ sDefineNo: codeArr[3],
+ sDefineNo2: codeArr[4],
+ dProductQty: codeArr[6],
+ tInStoreDate: date,
+ };
+ masterDataObjAdd = {
+ sCustomerShort: codeArr[7],
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位
+ const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称
+
+
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+ const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : '';
+
+
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ let sProductNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') {
+ sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData);
+ }
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ let sProductNameDataOne;
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sProductNamedropDownData)) {
+ sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ let sProductNameDataDetiale = {};
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sProductNameDataDetiale,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = {
+ ...masterData,
+ ...sLocationNameDataDetiale,
+ ...masterDataObjAdd,
+ ...sWareHouseNameDataDetiale,
+ };
+ } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */
+ const { masterConfig } = this.props;
+ /* 取第一条码 */
+ const sDefineNo = codeArr[0];
+ /* 如果条码已存在,提示 */
+ const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ if (iIndex > -1) {
+ Toast.fail('条码已存在!!!', 1);
+ return;
+ }
+ masterdataObj = {
+ ...masterData,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] };
+ }
+ }
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ const { handleType } = slaveData[len - 1];
+ /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ slaveData[len - 1] = slaveDataObj;
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.unshift(slaveDataObj);
+ }
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.unshift(slaveDataObj);
+ }
+ if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ }
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') {
+ slaveData.unshift(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveData, masterData: masterdataObj });
+ });
+ } else if (commonUtils.isNotEmptyObject(name) && name.includes('BtnScan')) { /* 主表 扫流转码 */
+ BarCodeUtil.startScan(async (type, code) => {
+ const { masterConfig } = this.props;
+ let { masterData } = this.props;
+ let masterdataObj = {};
+ const codeArr = code.split('|');
+ if (commonUtils.isNotEmptyObject(codeArr)) { /* 扫流转码功能 */
+ /* 取第一条码 */
+ const sDefineNo = codeArr[0];
+ /* 如果条码已存在,提示 */
+ masterData.sDefineNo = sDefineNo;
+ masterdataObj = {
+ ...masterData,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ masterData = { ...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType;
+ // this.handleClick('slave', 'scan'); /* 连续扫码 */
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ this.props.onSaveState({ masterData });
+ });
+ } else if (name === 'BtnCamera') { /* 手机调动摄像头拍照 */
+ this.handleCamera();
+ } else if (name === 'BtnPhoto') { /* 手机相册选择图片 */
+ this.handleGetPhoto();
+ } else if (name === 'BtnCancel') {
+ window.history.back(-1);
+ } else if (name === 'BtnExamine') {
+ this.props.onAudit(1);
+ } else if (name === 'BtnCancelExamine') {
+ /* 销审 */
+ this.props.onAudit(0);
+ } else if (name && name.includes('BtnCalc')) { /* 实现通用计算功能 */
+ const { masterConfig, masterData, sModelsId, } = this.props;
+ const btnConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name))) ?
+ masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name))[0] : {};// sButtonEnabled sButtonParam
+ if(commonUtils.isNotEmptyObject(btnConfig)) {
+ /* 组装allTableData */
+ const allTableMap ={};
+ const allReturnMap ={};
+ const slaveNameList = [];
+ /* 从props找到 所有的Config */
+ if(commonUtils.isNotEmptyArr(this.props)) {
+ for (const key of Object.keys(this.props)) {
+ if(key.includes('Config') && !key.includes('onGet') && !key.includes('report')) {
+ const tablename = key.replace('Config', '').trim();
+ slaveNameList.push(tablename);
+ }
+ }
+ }
+
+ if (commonUtils.isNotEmptyArr(slaveNameList)) {
+ slaveNameList.forEach((name, index) => {
+ const tableConfig = this.props[name +'Config']; /* 动态配置 */
+ const tableData = this.props[name +'Data']; /* 动态配置 */
+ const tableSelectedRowKeys = this.props[name + 'SelectedRowKeys']; /* 选中Key */
+ if(commonUtils.isNotEmptyObject(tableConfig)) {
+ allTableMap[name +'.'+ tableConfig.sTbName] = tableData
+ }
+
+ })
+ const masterTbName = masterConfig.sTbName;
+ allTableMap['master.'+ masterTbName] = masterData;
+ }
+ const sButtonParam = btnConfig.sButtonParam;
+ const btn = commonUtils.isJSON(sButtonParam) ? JSON.parse(sButtonParam) : '';
+ const sProName = btn.sproName;
+ const url = `${commonConfig.server_host}calcprocedure/calc?sModelsId=${sModelsId}`;
+ const value = {
+ sProName,
+ sButtonParam,
+ allTableMap
+ };
+ const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data;
+ if (dataReturn.code === 1) {
+ /* 数据操作 数据回传页面 */
+ message.success('操作成功!');
+ const returnData = dataReturn.dataset.rows[0];
+ if (commonUtils.isNotEmptyArr(slaveNameList) && commonUtils.isNotEmptyObject(returnData)) {
+ slaveNameList.forEach((name, index) => {
+ const tableConfig = this.props[name +'Config']; /* 动态配置 */
+ let tableDelData = this.props[name +'DelData'];
+ if(commonUtils.isEmptyArr(tableDelData)) {
+ tableDelData = [];
+ }
+ let tableDelDataNew = []
+ let tableData = [];
+ if(commonUtils.isNotEmptyObject(tableConfig)) {
+ tableData = returnData[name +'.'+ tableConfig.sTbName]; /* 动态配置 */
+ if(commonUtils.isNotEmptyArr(tableData) && Array.isArray(tableData)) {
+ tableDelDataNew = tableData.filter(item => item.handleType === 'del');
+ tableData = tableData.filter(item => item.handleType !== 'del');
+ tableDelData = tableDelData.concat(tableDelDataNew);
+ }
+
+ }
+ allReturnMap[name +'Data'] = tableData;
+ allReturnMap[name +'DelData'] = tableDelData;
+ });
+ const masterTbName = masterConfig.sTbName;
+ allReturnMap.masterData = returnData['master.'+ masterTbName];
+ allReturnMap.masterData.enabled = true;
+ }
+ this.props.onSaveState({ ...allReturnMap });
+ }else if (dataReturn.code === -8 || dataReturn.code === 2) {
+ Modal.info({
+ title: '温馨提示:',
+ content: (
+
+ {this.handleGetMsg(dataReturn.msg)}
+
+ ),
+ okText: '确认',
+ onOk() {},
+ });
+ } else { /* 失败 */
+ this.props.getServiceError(dataReturn);
+ }
+
+ }
+ }
+ }
+ handleCamera = () => {
+ BarCodeUtil.getImage();
+ }
+ handleGetPhoto = () => {
+ BarCodeUtil.getPhoto();
+ }
+
+ handleGetWxCode = async (successHandler) => {
+ let scanResult = '';
+ const { app } = this.props;
+ // eslint-disable-next-line prefer-destructuring,no-unused-vars
+ const userinfo = app.userinfo;
+ const myUrl = location.href;
+ const configUrl = `${commonConfig.server_host}wechat/getWxToken`;
+ const values = {
+ url: myUrl,
+ sBrandsId: userinfo.sBrandsId,
+ sSubsidiaryId: userinfo.sSubsidiaryId,
+ };
+ // const values = {
+ // url: myUrl,
+ // sBrandsId: '1111111111',
+ // sSubsidiaryId: '1111111111',
+ // };
+ const configReturn = (await commonServices.postValueService(null, values, configUrl)).data;
+ console.log('configReturn::', configReturn, values);
+ if (configReturn.code === 1) {
+ const { rows } = configReturn.dataset;/* 获取费用分摊单据配置 */
+ if (commonUtils.isNotEmptyArr(rows)) {
+ const appId = rows[0].appId.toString();
+ const nonceStr = rows[0].nonceStr.toString();
+ const signature = rows[0].signature.toString();
+ const timestamp = rows[0].timestamp.toString();
+ weixin.config({
+ beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
+ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+ appId, // 必填,公众号的唯一标识
+ timestamp, // 必填,生成签名的时间戳 <%= Html.Encode(ViewData["timestamp" ]) %>
+ nonceStr, // 必填,生成签名的随机串
+ signature, // 必填,签名
+ jsApiList: ['checkJsApi', 'scanQRCode'], // 必填,需要使用的JS接口列表, 这里只需要调用扫一扫
+ });
+ weixin.ready(() => {
+ weixin.checkJsApi({ // 判断当前客户端版本是否支持指定JS接口
+ jsApiList: ['scanQRCode'],
+ success(res) { // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"}
+ console.log(res);
+ if (res.checkResult.scanQRCode !== true) {
+ Toast.fail(`URL不对,当前URL:${myUrl}请使用正式地址!`);
+ }
+ },
+ // eslint-disable-next-line no-unused-vars
+ fail(res) { // 检测getNetworkType该功能失败时处理
+ Toast.fail('checkJsApi error');
+ },
+
+
+ }); // wx.ready结束
+ weixin.scanQRCode({
+ desc: 'scanQRCode desc',
+ needResult: 0, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
+ scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
+ success(res) {
+ // console.log("调用扫描成功",res);
+ scanResult = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
+ if (commonUtils.isNotEmptyObject(scanResult)) {
+ const codeResult = scanResult.split(',');
+ if (codeResult.length > 1) {
+ scanResult = codeResult[1];
+ }
+ }
+ successHandler(scanResult);
+ // console.log('微信扫码结果:', scanResult);
+ },
+ error(res) {
+ // console.log(res);
+ if (res.errMsg.indexOf('function_not_exist') > 0) {
+ Toast.fail('版本过低请升级');
+ }
+ },
+ });
+ });
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ return scanResult;
+ }
+
+ handleWxScan = async () => {
+ this.handleGetWxCode((code) => {
+ if (!commonUtils.isEmpty(code)) {
+ this.handleWxBusiness(code);
+ }
+ });
+ }
+
+ handleWxBusiness = async (code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveData, sModelsType,
+ } = this.props;
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ let masterDataObjAdd = {};
+ const codeArr = code.split('|');
+ if (sModelsType === 'materialsStock/productionmaterials') {
+ const dataStr = codeArr[10].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sMaterialsStyle: codeArr[1],
+ sDefineNo: codeArr[4],
+ sDefineNo2: codeArr[5],
+ dAuxiliaryQty: codeArr[7],
+ tInStoreDate: date,
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId');
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId');
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : '';
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+
+ let materialsNameDropDownData = [];
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') {
+ materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ // }
+ let materialsNameDataOne;
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ if (!commonUtils.isEmpty(materialsNameDropDownData)) {
+ materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]);
+ }
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let materialsDataDetiale = {};
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) };
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...materialsDataDetiale,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale };
+ } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货
+ const dataStr = codeArr[12].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sOrderNo: codeArr[9],
+ sWorkOrderNo: codeArr[8],
+ sCustomerOrderNo: codeArr[10],
+ sCustomerProductNo: codeArr[11],
+ sDefineNo: codeArr[3],
+ sDefineNo2: codeArr[4],
+ dProductQty: codeArr[6],
+ tInStoreDate: date,
+ };
+ masterDataObjAdd = {
+ sCustomerShort: codeArr[7],
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位
+ const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称
+
+
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+ const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : '';
+
+
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ let sProductNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') {
+ sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData);
+ }
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ let sProductNameDataOne;
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sProductNamedropDownData)) {
+ sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ let sProductNameDataDetiale = {};
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sProductNameDataDetiale,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = {
+ ...masterData,
+ ...sLocationNameDataDetiale,
+ ...masterDataObjAdd,
+ ...sWareHouseNameDataDetiale,
+ };
+ } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */
+ const { masterConfig } = this.props;
+ /* 取第一条码 */
+ const sDefineNo = codeArr[0];
+ /* 如果条码已存在,提示 */
+ const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ if (iIndex > -1) {
+ Toast.fail('条码已存在!!!', 1);
+ return;
+ }
+ masterdataObj = {
+ ...masterData,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ const { handleType } = slaveData[len - 1];
+ /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ slaveData[len - 1] = slaveDataObj;
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') {
+ slaveData.push(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveData, masterData: masterdataObj });
+ }
+
+ getViewValue = (showConfig, record) => {
+ let sValue = record === undefined ? undefined : record[showConfig.sName];
+ if (showConfig.sDropDownType === 'const') {
+ let showDropDown = [];
+ if (typeof showConfig.showDropDown === 'object') {
+ // eslint-disable-next-line prefer-destructuring
+ showDropDown = showConfig.showDropDown;
+ } else {
+ showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(showConfig.showDropDown));
+ }
+ let iIndex = commonUtils.isEmpty(record[showConfig.sName]) ? -1 : showDropDown.findIndex(item => item.sId === record[showConfig.sName].toString());
+ if (iIndex === -1 && record[showConfig.sName] === '') {
+ iIndex = showDropDown.findIndex(item => item.sId === '');
+ }
+ sValue = iIndex > -1 ? showDropDown[iIndex].value : record[showConfig.sName];
+ }
+ return sValue;
+ };
+
+ render() {
+ const {
+ slaveConfig, slaveData: slaveDataOld, sModelsId, enabled, app, sUseInfo, onReturnForm, masterData, masterConfig,
+ } = this.props;
+ onReturnForm(this.props.form);
+ const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+ const f1 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[0];
+ const f2 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[1];
+ const f3 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[2];
+ const f4 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[3];
+ const f5 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[4];
+ const f6 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[5];
+ const f7 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[6];
+ const f8 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[7];
+ const f9 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[8];
+ const f10 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[9];
+
+ const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */
+ const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */
+ const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } };
+ const style = {
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+ const btnStyle = {
+ fontSize: '15px',
+ backgroundColor: '#f0f0f0',
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+ const BtnStyle = {
+ type: 'default',
+ color: 'red',
+ border: 'none',
+ backgroundColor: '#f0f0f0',
+ fontSize: '15px',
+ };
+ const divStyle = {
+ display: 'flex',
+ justifyContent: 'space-between',
+ background: ' #f0f0f0',
+ };
+ const row = (rowData, sectionID, rowID) => {
+ return (
+
+
+ {/* eslint-disable-next-line react/jsx-no-duplicate-props */}
+ {
+ slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ?
+
+
+ : ''
+ }
+
+ {commonUtils.isEmptyObject(slaveConfig) ? '' : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const showTypeProps = {
+ app,
+ masterData,
+ record: rowData,
+ sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */
+ name: 'slave',
+ form: this.props.form,
+ formId: sModelsId,
+ getSqlDropDownData: this.props.getSqlDropDownData,
+ getSqlCondition: this.props.getSqlCondition,
+ handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord,
+ getFloatNum: this.props.getFloatNum,
+ getDateFormat: this.props.getDateFormat,
+ onChange: this.props.onDataChange,
+ showConfig: child,
+ formItemLayout: sMemo ? formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: rowData[child.sName],
+ bTable: true,
+ onFilterDropDownData: this.props.onFilterDropDownData,
+ onSaveState: this.props.onSaveState,
+ };
+ return (
+
+ );
+ })}
+ {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => {
+ if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) {
+ const { token } = app;
+ let imgBox = '';
+ const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : '';
+ const previewImageArr = [];
+ if (commonUtils.isNotEmptyArr(picAddr)) {
+ picAddr.forEach((item) => {
+ const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */
+ previewImageArr.push(dataPreviewUrl);
+ });
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ imgBox =

0} onClick={e => preView(previewImageArr, e)} />
;
+ }
+ return imgBox;
+ } else {
+ return '';
+ }
+ })}
+
+ );
+ };
+ return (
+
+
+
+ {
+ f1 ? {f1.showName} : {this.getViewValue(f1, masterData)} : ''
+ }
+ {
+ f2 ? {f2.showName} : {this.getViewValue(f2, masterData)} : ''
+ }
+
+
+ {
+ f3 ? {f3.showName} : {this.getViewValue(f3, masterData)} : ''
+ }
+
+
+ {
+ f4 ? {f4.showName} : {this.getViewValue(f4, masterData)} : ''
+ }
+
+
+ {
+ f5 ? {f5.showName} : {this.getViewValue(f5, masterData)} : ''
+ }
+ {
+ f6 ? {f6.showName} : {this.getViewValue(f6, masterData)} : ''
+ }
+
+
+ {
+ f7 ? {f7.showName} : {this.getViewValue(f7, masterData)} : ''
+ }
+ {
+ f8 ? {f8.showName} : {this.getViewValue(f8, masterData)} : ''
+ }
+
+
+ {
+ f9 ? {f9.showName} : {this.getViewValue(f9, masterData)} : ''
+ }
+ {
+ f10 ? {f10.showName} : {this.getViewValue(f10, masterData)} : ''
+ }
+
+
+
+
+ );
+ }
+}
+
+const CommobileBillComponent = createForm()(CommobileBill);
+
+export default CommobileBase(CommobileBillEvent(CommobileBillComponent));
+
diff --git a/src/mobile/common/CommobileBillEvent.js b/src/mobile/common/CommobileBillEvent.js
new file mode 100644
index 0000000..996d1cc
--- /dev/null
+++ b/src/mobile/common/CommobileBillEvent.js
@@ -0,0 +1,1764 @@
+/* eslint-disable */
+/* eslint-disable prefer-destructuring,no-await-in-loop,radix,,no-loop-func */
+/**
+ * Created by mar105 on 2019-01-08.
+ */
+import React, { Component } from 'react';
+import { Toast } from 'antd-mobile';
+import * as commonUtils from '../../utils/utils';
+import * as commonFunc from '../../components/Common/commonFunc';
+import * as commonBusiness from '../../components/Common/commonBusiness';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import BarCodeUtil from './BarCodeUtil';
+
+
+export default (ChildComponent) => {
+ return class extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {};
+ }
+
+ async componentWillReceiveProps(nextProps) {
+ const {
+ formData, currentId, masterConfig: masterConfigOld, sModelsId,
+ } = nextProps;
+ if (commonUtils.isEmptyObject(masterConfigOld) && formData.length > 0) {
+ const sId = currentId !== undefined ? currentId : '';
+ /* 数据Id */
+ const masterConfig = formData.filter(item => !item.bGrd)[0];
+ const slaveConfig = formData.filter(item => item.bGrd)[0];
+ /* 判断是否有汇总表 */
+ const slaveSumConfig = commonUtils.isNotEmptyArr(formData.filter(item => item.bGrd && item.sGrd && item.sGrd.includes('sumTable') )) ? formData.filter(item => item.bGrd && item.sGrd && item.sGrd.includes('sumTable') )[0] : {};
+ let addStateMaster = {};
+ let userEntrustData = []; /* 委托人 */
+ let addState = {};
+ let addStateSum = {};
+ if (sId === '') {
+ const config = {};
+ config.masterConfig = masterConfig;
+ config.slaveConfig = slaveConfig;
+ config.slaveSumConfig = slaveSumConfig;
+ addState = await this.handleAdd(config, nextProps.copyTo, true);
+ } else {
+ addStateMaster = await this.props.handleGetDataOne({
+ name: 'master',
+ configData: masterConfig,
+ condition: { sId, pageSize: '', pageNum: '' },
+ isWait: true,
+ });
+ if (location.pathname === '/indexMobile/examine') {
+ const masterDataNew = addStateMaster.masterData;
+ const sParamsArr = commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterDataNew.sTableParams) ? JSON.parse(masterDataNew.sTableParams) : '';
+ const sParamsValueArr = commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterDataNew.sTableParamsValue) ? JSON.parse(masterDataNew.sTableParamsValue) : '';
+ /* 塞入配置 */
+ if (commonUtils.isNotEmptyObject(sParamsArr) && commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterConfig) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave)) {
+ /* 移除最后一位元素 */
+ for (const key of Object.keys(sParamsArr)) {
+ const newConfig = {
+ iOrder: 300, sId: commonUtils.createSid(), bVisible: true, sParamsArr: key, showName: sParamsArr[key], sName: key,
+ };
+ const len = masterConfig.gdsconfigformslave.length;
+ masterConfig.gdsconfigformslave.splice(len - 1, 0, newConfig);
+ if (commonUtils.isNotEmptyArr(sParamsValueArr)) {
+ masterDataNew[key] = sParamsValueArr[key];
+ }
+ }
+ }
+ /* 拉委托人员的下拉数据源 */
+ const iUserIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName && item.sControlName.includes('BtnEntrust'));
+ if (iUserIndex > -1) {
+ userEntrustData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[iUserIndex], masterDataNew);
+ }
+ }
+ addState = await this.props.handleGetDataSet({
+ name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true,
+ });
+ if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) {
+ addStateSum = await this.props.handleGetDataSet({
+ name: 'slaveSum', configData: slaveSumConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true,
+ });
+ }
+ if (commonUtils.isNotEmptyArr(addState.slaveData)) {
+ if (commonUtils.isNotEmptyObject(addState.slaveData[0].sReportParam)) {
+ addState.slaveData[0] = { ...addState.slaveData[0], ...commonUtils.convertStrToObj(addState.slaveData[0].sReportParam) };
+ // eslint-disable-next-line no-plusplus
+ for (let i = 1; i < 7; i++) {
+ const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`);
+ if (iIndex > -1 && !commonUtils.isEmpty(addState.slaveData[0][`sParam${i.toString()}`])) {
+ slaveConfig.gdsconfigformslave[iIndex].showName = addState.slaveData[0][`sParam${i.toString()}`];
+ slaveConfig.gdsconfigformslave[iIndex].bVisible = !addState.slaveData[0][`sParam${i.toString()}`].includes('参数值');
+ } else if (iIndex > -1) {
+ slaveConfig.gdsconfigformslave[iIndex].bVisible = false;
+ }
+ }
+ } else {
+ // eslint-disable-next-line no-plusplus
+ for (let i = 1; i < 7; i++) {
+ const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`);
+ if (iIndex > -1) {
+ slaveConfig.gdsconfigformslave[iIndex].bVisible = false;
+ }
+ }
+ }
+ }
+ }
+ this.props.onSaveState({
+ masterConfig, slaveConfig, sId, pageLoading: false, ...addState, ...addStateMaster, userEntrustData, slaveSumConfig, ...addStateSum,
+ });
+ }
+ }
+
+ shouldComponentUpdate(nextProps) {
+ const { masterConfig } = nextProps;
+ return commonUtils.isNotEmptyObject(masterConfig);
+ }
+
+ /** 点击新增按钮 */
+ handleAdd = async (config, copyTo, isWait) => {
+ /* 外置处理业务 */
+ const {
+ sModelsId, token, sModelsType, formRoute, peopleInfosId, peopleInfoData, app,
+ } = this.props;
+ let masterConfig = commonUtils.isEmptyObject(config) ? {} : config.masterConfig;
+ if (!isWait) {
+ masterConfig = this.props.masterConfig;
+ }
+ let configNew = {};
+ if (commonUtils.isEmptyObject(config)) {
+ const { slaveConfig } = this.props;
+ configNew.slaveConfig = slaveConfig;
+ } else {
+ configNew = config;
+ }
+ let masterData;
+ if (commonUtils.isNotEmptyObject(masterConfig)) {
+ masterData = commonFunc.getDefaultData(masterConfig);
+ }
+ masterData.handleType = 'add';
+ masterData.sId = commonUtils.createSid();
+ masterData.sFormId = sModelsId;
+ masterData.maxBillNo = 'sBillNo';
+ if (formRoute === '/contactsInfo') {
+ if (commonUtils.isNotEmptyArr(peopleInfoData) && peopleInfosId !== '') {
+ const peopleInfo = peopleInfoData.filter(item => item.sId === peopleInfosId);
+ masterData = { ...masterData, ...peopleInfo[0] };
+ }
+ }
+ let slaveData = [];
+ const slaveSumData = [];
+ const employeeData = [];
+
+ // const slaveTotal = [];
+ // const tableDataTotal = {};
+ let slaveAssignField = '';
+ if (commonUtils.isNotEmptyObject(copyTo)) {
+ const copyToMasterConfig = copyTo.config.filter(item => item.sControlName === copyTo.name);
+ const masterAssignField = commonUtils.isNotEmptyArr(copyToMasterConfig) ? copyToMasterConfig[0].sAssignField : '';
+ const newCopyTo = {};
+ newCopyTo.master = copyTo.masterData;
+ newCopyTo.slave = commonUtils.isEmpty(copyTo.slaveData) ? [] : copyTo.slaveData[0];
+ masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterAssignField, copyTo.masterData, newCopyTo) };
+
+ const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase());
+ slaveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : '';
+ if (sModelsType === 'production/productionReport') {
+ copyTo.slaveData = commonUtils.isEmptyArr(copyTo.slaveData) ? [] : [copyTo.slaveData[0]];
+ }
+ if (slaveAssignField !== '') {
+ for (const slaveItem of copyTo.slaveData) {
+ const newCopyTo = {};
+ newCopyTo.master = copyTo.masterData;
+ newCopyTo.slave = slaveItem;
+
+ let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo); // 取默认值
+ slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(slaveAssignField, slaveItem, newCopyTo) }; // 取赋值字段
+ slaveRow.handleType = 'add';
+ slaveRow.sId = commonUtils.createSid();
+ slaveRow.sParentId = masterData.sId;
+
+ if (sModelsType === 'production/productionReport') {
+ if (!commonUtils.isEmpty(slaveRow.sWageId)) {
+ slaveRow.dWageMoney = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow: slaveRow, sComputeId: slaveRow.sWageId,
+ });
+ }
+ if (!commonUtils.isEmpty(slaveRow.sConversionFormulaId)) {
+ slaveRow.dConversionQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow: slaveRow, sComputeId: slaveRow.sConversionFormulaId,
+ });
+ }
+ if (commonUtils.isNotEmptyObject(slaveRow.sReportParam)) {
+ slaveRow = { ...slaveRow, ...commonUtils.convertStrToObj(slaveRow.sReportParam) };
+ // eslint-disable-next-line no-plusplus
+ for (let i = 1; i < 7; i++) {
+ const iIndex = configNew.slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`);
+ if (iIndex > -1 && !commonUtils.isEmpty(slaveRow[`sParam${i.toString()}`])) {
+ configNew.slaveConfig.gdsconfigformslave[iIndex].showName = slaveRow[`sParam${i.toString()}`];
+ configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = !slaveRow[`sParam${i.toString()}`].includes('参数值');
+ } else if (iIndex > -1) {
+ configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = false;
+ }
+ }
+ } else {
+ // eslint-disable-next-line no-plusplus
+ for (let i = 1; i < 7; i++) {
+ const iIndex = configNew.slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`);
+ if (iIndex > -1) {
+ configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = false;
+ }
+ }
+ }
+ const sMachineId = app.sMachineId;
+ if (sMachineId) {
+ const sSessionTeamId = localStorage.getItem(`${commonConfig.prefix}mobile_${sMachineId}`);
+ if (sSessionTeamId) {
+ slaveRow.sTeamId = sSessionTeamId;
+ }
+ }
+ let returnData = JSON.parse(localStorage.getItem(`${commonConfig.prefix}employeeData`));
+ if (!commonUtils.isEmpty(slaveRow.sTeamId)) {
+ if (commonUtils.isEmptyArr(returnData)) {
+ const url = `${commonConfig.server_host}eleteamemployee/getEleteamemployee?sModelsId=${sModelsId}&sTeamId=${slaveRow.sTeamId}&sSlaveId=${slaveRow.sId}&sParentId=${slaveRow.sParentId}`;
+ const dataReturn = (await commonServices.getService(token, url)).data;
+ if (dataReturn.code === 1) {
+ returnData = dataReturn.dataset.rows;
+ } else { /* 失败 */
+ this.props.getServiceError(dataReturn);
+ }
+ }
+ returnData.forEach((child) => {
+ employeeData.push({
+ sId: commonUtils.createSid(),
+ sParentId: masterData.sId,
+ sSlaveId: slaveRow.sId,
+ sEmployeeId: child.sEmployeeId,
+ sEmployeeName: child.sEmployeeName,
+ dProportion: child.dProportion !== 0 ? child.dProportion : commonUtils.convertFixNum(1 / returnData.length, 6),
+ handleType: 'add',
+ });
+ });
+ /* 班组变化时,算每个工作人员计件工资 */
+ const dWageMoneyTotal = slaveRow.dWageMoney;
+ if (commonUtils.isNotEmptyNumber(dWageMoneyTotal)) {
+ let dProportionTotal = 0;
+ employeeData.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) {
+ item.dProportion = parseFloat(item.dProportion);
+ dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6);
+ dProportionTotal = commonUtils.convertFixNum(dProportionTotal, 6);
+ }
+ });
+ employeeData.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion)) {
+ const index1 = employeeData.findIndex(item1 => item1.sId === item.sId);
+ employeeData[index1] = {
+ ...item,
+ dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * dWageMoneyTotal, 6),
+ handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType,
+ };
+ }
+ });
+ }
+
+
+ const dWageMoney = commonUtils.isNotEmptyNumber(slaveRow.dWageMoney) ? commonUtils.convertFixNum(slaveRow.dWageMoney, 6) : 0;
+ const dTimeMoney = commonUtils.isNotEmptyNumber(slaveRow.dTimeMoney) ? commonUtils.convertFixNum(slaveRow.dTimeMoney, 6) : 0;
+ const dLossMoney = commonUtils.isNotEmptyNumber(slaveRow.dLossMoney) ? commonUtils.convertFixNum(slaveRow.dLossMoney, 6) : 0;
+ slaveRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6);
+ }
+ }
+ slaveData.push(slaveRow);
+ }
+ }
+
+ if (!commonUtils.isEmpty(masterData.sTestStandardId)) {
+ const dataUrl = `${commonConfig.server_host}eleteamemployee/getObtainInspectionStandards?sModelsId=${sModelsId}&sParentId=${masterData.sTestStandardId}`;
+ const dataReturn = (await commonServices.getService(this.props.app.token, dataUrl)).data;
+ const slaveDelData = [];
+ if (dataReturn.code === 1) {
+ const returnSlaveData = dataReturn.dataset.rows;
+ slaveData.forEach((item) => {
+ item.handleType = 'del';
+ slaveDelData.push(item);
+ });
+ slaveData = [];
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ const iConfigIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'sTestStandardName');
+ const slaveConfig = commonUtils.isEmptyObject(config) ? {} : config.slaveConfig;
+ if (!isWait) {
+ masterConfig = this.props.slaveConfig;
+ }
+ const iSqlIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sActValue');
+ returnSlaveData.forEach((item, iIndex) => {
+ let tableDataRow = commonFunc.getDefaultData(config.slaveConfig, {});
+ tableDataRow.handleType = 'add';
+ tableDataRow.sId = commonUtils.createSid();
+ tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null;
+ tableDataRow.key = tableDataRow.sId;
+ tableDataRow.iOrder = iIndex;
+ if (iConfigIndex > -1) {
+ tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(masterConfig.gdsconfigformslave[iConfigIndex].sAssignField, item, newCopyTo) }; // 取赋值字段
+ // tableDataRow.sTestReference = '15S|20S';
+ const sTestReference = tableDataRow.sTestReference;
+ const sParamObj = {};
+ if (commonUtils.isNotEmptyObject(sTestReference)) { /* 若数据有值 渲染下拉框 */
+ if (sTestReference.indexOf('|') >= 0) {
+ sTestReference.split('|').forEach((itemField) => {
+ sParamObj[itemField] = itemField;
+ });
+ tableDataRow.sParamDropDownsActValue = sParamObj;
+ if (iSqlIndex > -1) {
+ slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = 'sql';
+ } else {
+ slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = '';
+ }
+ }
+ } else { /* 若数据没有值 则渲染文本框 */
+ tableDataRow.isText = true;
+ }
+ }
+ slaveData.push(tableDataRow);
+ });
+ }
+ }
+ }
+
+ /* 剔除订单到收款单新增空行(2022.7.8朱总要求)) */
+ if (slaveData.length === 0 && commonUtils.isNotEmptyObject(slaveAssignField)) {
+ const allTableData = {};
+ allTableData.master = masterData;
+ allTableData.slave = slaveData;
+ let tableDataRowAdd = {};
+ if (commonUtils.isNotEmptyObject(configNew.slaveConfig)) {
+ tableDataRowAdd = commonFunc.getDefaultData(configNew.slaveConfig, allTableData);
+ tableDataRowAdd.handleType = 'add';
+ tableDataRowAdd.sId = commonUtils.createSid();
+ tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null;
+ tableDataRowAdd.key = tableDataRowAdd.sId;
+ tableDataRowAdd.bDefault = false;
+ tableDataRowAdd.iOrder = 0;
+ slaveData.push(tableDataRowAdd);
+ }
+ }
+
+ const state = {
+ masterData,
+ slaveData,
+ slaveSumData,
+ employeeData,
+ slaveTotal: [],
+ slaveSelectedRowKeys: [],
+ searchUpDownData: {},
+ enabled: true,
+ };
+ state.sUseInfo = '';
+ if (isWait) {
+ return state;
+ } else {
+ this.props.onSaveState(state);
+ return true;
+ }
+ };
+
+ /** toolbar保存 */
+ handleSaveData = async (params) => {
+ const {
+ token, sModelsId, currentId, masterData, masterConfig, slaveConfig, employeeConfig, billnosetting, app, sModelsType, copyTo, dispatch,
+ } = this.props;
+ const { userinfo } = app;
+ const onSendSocketMessage = this.props.handleSendSocketMessage;
+ const BtnSave = commonFunc.showMessage(app.commonConst, 'BtnSave');/* 保存 */
+ params.optName = BtnSave;
+ const returnData = await commonBusiness.saveData({ token, value: params, sModelsId });
+ if (commonUtils.isNotEmptyObject(returnData)) {
+ if (commonUtils.isNotEmptyObject(copyTo)) {
+ const { slaveData } = copyTo;
+ const sIdArray = [];
+ slaveData.forEach((item) => {
+ const redisKey = item.sSlaveId;
+ sIdArray.push(redisKey);
+ });
+ const sId = sIdArray.toString();
+ onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null);
+ }
+ onSendSocketMessage('release', 'noAction', currentId, userinfo.sId, null, null);
+ this.props.onSaveState({
+ enabled: false, currentId: masterData.sId,
+ });
+ let btnSaveConfigArr = [];
+ const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName && item.sControlName.includes('BtnExamine'));
+ if (iIndex > -1) {
+ btnSaveConfigArr = masterConfig.gdsconfigformslave[iIndex];
+ }
+ console.log('btnSaveConfigArr', btnSaveConfigArr);
+ const interfaceArr = commonUtils.isNotEmptyObject(btnSaveConfigArr) ? btnSaveConfigArr.interface :[];
+ let bSucess = true;
+ if (billnosetting.bAutoCheck) {
+ /* 根据接口返回是之前调用还是之后调用 */
+ if (false && commonUtils.isNotEmptyArr(interfaceArr)) {
+ const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === '1');
+ const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === '2');
+
+ if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */
+ let flag = 0;
+ const asyncFunc = async () => {
+ for (let i = 0; i < beforeInterfaceArr.length; i ++) {
+ const data = await this.handleInterfaceCall(beforeInterfaceArr[i]);
+ if (!data) {
+ flag += 1;
+ }
+ }
+ }
+ if (flag == 0) {
+ await this.handleAudit(1);
+ } else {
+ this.props.onSaveState({
+ loading: false,
+ });
+ }
+ }
+
+ if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */
+ const result = await this.handleAudit(1);
+ if(result) { /* 只有审核成功 才能调用接口 -5代表审核失败 */
+ const asyncFunc = async () => {
+ for (let i = 0; i < afterInterfaceArr.length; i++) {
+ await this.handleInterfaceCall(afterInterfaceArr[i]);
+ }
+ }
+ await asyncFunc();
+ }
+ }
+ } else {
+ await this.handleAudit(1);
+ }
+ } else {
+ await this.handleGetData(masterConfig, slaveConfig);
+ if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) {
+ await this.handleGetMemoData(employeeConfig);
+ }
+ if (this.props.refresh !== undefined) {
+ this.props.refresh();
+ }
+ /* 通过onRouterMobile路由跳转 */
+ if (sModelsType === 'production/productionReport' && commonUtils.isNotEmptyObject(copyTo) && commonUtils.isNotEmptyObject(copyTo.listModelsId) && copyTo.listUrl && copyTo.listUrl.includes('commobileList')) {
+ const sModelsId = copyTo.listModelsId;
+ const sModelsType = copyTo.listModelsType;
+ const url = '/indexMobile/commobileList';
+ const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sModelsId}?sModelsId=${sModelsId}`;
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ url, /* 接口地址 */
+ urlKey: sNameUrl,
+ sModelsId,
+ sModelsType,
+ copyTo,
+ listFilterCondition: copyTo.listFilterCondition,
+ },
+ });
+ } else {
+ window.history.back(-1);
+ }
+ }
+ this.props.onSaveState({
+ loading: false,
+ });
+ return true;
+ } else {
+ this.props.onSaveState({
+ loading: false,
+ });
+ return false;
+ }
+ };
+
+ /** toolbar校验保存 */
+ handleValidateSave = async () => {
+ const {
+ masterConfig, masterData, slaveConfig, slaveData, slaveDelData, sModelsType, employeeConfig, employeeData, employeeDelData, token, sModelsId, app,
+ slaveSumConfig, slaveSumData, slaveSumDelData,
+ } = this.props;
+ if (!commonBusiness.validateMaster(masterConfig, masterData, this.props) || !commonBusiness.validateTable(slaveConfig, slaveData, this.props)) {
+ this.props.onSaveState({
+ loading: false,
+ });
+ return;
+ }
+ if (slaveConfig && slaveConfig.bNotCanEmpty && commonUtils.isEmptyArr(slaveData)) {
+ Toast.info(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 从表不能为空!
+ this.props.onSaveState({
+ loading: false,
+ });
+ return;
+ }
+
+ const data = [];
+ data.push(commonBusiness.mergeData('master', masterConfig.sTbName, [masterData]));
+
+ if (sModelsType === 'production/productionReport') {
+ for (const tableDataRow of slaveData) {
+ const sWageId = tableDataRow.sWageId;
+ tableDataRow.dWageMoney = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sWageId,
+ });
+ const dWageMoneyTotal = tableDataRow.dWageMoney;
+ let dProportionTotal = 0;
+ const employeeSlaveData = employeeData.filter(item => item.sSlaveId === tableDataRow.sId);
+ employeeSlaveData.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) {
+ dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6);
+ }
+ });
+ employeeSlaveData.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion)) {
+ const index1 = employeeData.findIndex(item1 => item1.sId === item.sId);
+ employeeData[index1] = {
+ ...item,
+ dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dWageMoney, 0), 6),
+ dTimeMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dTimeMoney, 0), 6),
+ dLossMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dLossMoney, 0), 6),
+ dOtherMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dOtherMoney, 0), 6),
+ dJobMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dJobMoney, 0), 6),
+ handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType,
+ };
+ }
+ });
+ /* 选择计件方案后 算总金额 */
+ const dWageMoney = commonUtils.isNotEmptyNumber(dWageMoneyTotal) ? commonUtils.convertFixNum(dWageMoneyTotal, 6) : 0;
+ const dTimeMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTimeMoney) ? commonUtils.convertFixNum(tableDataRow.dTimeMoney, 6) : 0;
+ const dLossMoney = commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney) ? commonUtils.convertFixNum(tableDataRow.dLossMoney, 6) : 0;
+ tableDataRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6);
+ tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType;
+ }
+ }
+ data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, slaveData, slaveDelData));
+
+ if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) {
+ data.push(commonBusiness.mergeData('employee', employeeConfig.sTbName, employeeData, employeeDelData));
+ localStorage.setItem(`${commonConfig.prefix}sTeamId`, slaveData[0].sTeamId);
+ localStorage.setItem(`${commonConfig.prefix}employeeData`, JSON.stringify(employeeData));
+ /* 手机端报产选了机台后,进去报产,选了班组,确认之后,在返回去报第二个的时候,默认班组 */
+ if (commonUtils.isNotEmptyObject(slaveData[0])) {
+ const sMachineId = slaveData[0].sMachineId;
+ const sTeamId = slaveData[0].sTeamId;
+ if (sMachineId && sTeamId) {
+ localStorage.setItem(`${commonConfig.prefix}mobile_${sMachineId}`, sTeamId);
+ }
+ }
+ }
+ if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) {
+ data.push(commonBusiness.mergeData('slaveSum', slaveSumConfig.sTbName, slaveSumData, slaveSumDelData));
+ }
+ this.handleSaveData({ data, sClientType: '1', sSysLogSrcId: masterData.sId });
+ };
+
+ /** toolbar审核(消审) */
+ handleAudit = async (flag) => {
+ /* 待用数据声明 */
+ const { masterData, gdsformconst } = this.props;
+ let bResult = true;
+ /* 作废订单不能审核 */
+ if (masterData.bInvalid) {
+ Toast.info(gdsformconst.filter(item => (item.sName === 'sToVoid'))[0].showName);
+ return '';
+ }
+ /** 数据审核 */
+ bResult = await this.dataAudit(flag);
+ return bResult;
+ };
+
+ /** 数据审核 */
+ dataAudit = async (flag, tmpCheck, isWait) => {
+ /* 待用数据声明 */
+ const {
+ sModelsId, masterData, app, masterConfig, slaveConfig, token, sModelsType, slaveData, employeeConfig, copyTo, dispatch,
+ } = this.props;
+ const sSlaveIdArray = [];
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ slaveData.forEach((item) => {
+ sSlaveIdArray.push(commonUtils.isNotEmptyObject(item.sId) ? item.sId : item.sSlaveId);
+ });
+ }
+ const slaveId = sSlaveIdArray.toString();
+ /* 数据参数 */
+ const value = {
+ sClientType: '1',
+ paramsMap: {
+ iFlag: flag,
+ iTmpCheck: commonUtils.isEmptyNumber(tmpCheck) ? 0 : tmpCheck,
+ sFormGuid: sModelsId,
+ sGuid: masterData.sId,
+ sSlaveId: slaveId,
+ sBillNo: commonUtils.isNotEmptyObject(masterData.sBillNo) ? masterData.sBillNo : '',
+ },
+ };
+ /* 数据审核 */
+ const url = `${commonConfig.server_host}business/doExamine?sModelsId=${sModelsId}`;
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ if (isWait) {
+ return returnData;
+ } else {
+ /* 接收返回值 */
+ await this.handleGetData(masterConfig, slaveConfig);
+ const check = commonFunc.showMessage(app.commonConst, 'BtnExamine');/* 审核 */
+ const BtnCancelExamine = commonFunc.showMessage(app.commonConst, 'BtnCancelExamine');/* 销审 */
+ if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) {
+ await this.handleGetMemoData(employeeConfig);
+ }
+ if (this.props.refresh !== undefined) {
+ this.props.refresh();
+ }
+ if (returnData.code === 1) { /* 成功 */
+ this.props.onSaveState({
+ loading: false,
+ });
+ if (flag === 1) {
+ /* 审核 */
+ const { outData } = returnData.dataset.rows[0].dataSet;
+ if (commonUtils.isNotEmptyStr(outData[0].sReturn)) {
+ const sReturnArray = outData[0].sReturn.split('|');
+ if (outData[0].sReturn.split('-').length < 2) {
+ // 正常业务提示,非审核模板
+ // if (this.props.app.currentPane.refresh !== undefined) {
+ // this.props.app.currentPane.refresh();
+ // }
+ Toast.fail(check + outData[0].sReturn);
+ return;
+ }
+ const checkConditions = [];
+ let checkPersonData = {};
+ sReturnArray.forEach((item) => {
+ const checkCondition = item.split('-')[2];
+ checkConditions.push({
+ key: commonUtils.createSid(),
+ condition: checkCondition,
+ });
+ });
+ const sCheckModelId = sReturnArray[0].split('-')[1];
+ if (commonUtils.isNotEmptyStr(sCheckModelId)) {
+ const urlCheck = `${commonConfig.server_host}checkModel/getUserListByModelId/${sCheckModelId}?sModelsId=${sModelsId}`;
+ const dataReturn = (await commonServices.getService(token, urlCheck)).data;
+ if (dataReturn.code === 1) {
+ checkPersonData = dataReturn.dataset.rows;
+ checkPersonData.forEach((item) => {
+ item.key = commonUtils.createSid();
+ });
+ this.props.onSaveState({
+ checkConditions, checkPersonData, sCheckModelId, visible: true,
+ });
+ } else { /* 失败 */
+ this.props.getServiceError({ msg: check + dataReturn });
+ return false;
+ }
+ }
+ } else {
+ Toast.success(check + returnData.msg);
+ if (sModelsType === 'production/productionReport' && commonUtils.isNotEmptyObject(copyTo) && commonUtils.isNotEmptyObject(copyTo.listModelsId) && copyTo.listUrl && copyTo.listUrl.includes('commobileList')) {
+ const sModelsId = copyTo.listModelsId;
+ const sModelsType = copyTo.listModelsType;
+ const url = '/indexMobile/commobileList';
+ const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sModelsId}?sModelsId=${sModelsId}`;
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ url, /* 接口地址 */
+ urlKey: sNameUrl,
+ sModelsId,
+ sModelsType,
+ copyTo,
+ returnFilterCondition: copyTo.listFilterCondition,
+ },
+ });
+ } else {
+ window.history.back(-1);
+ }
+ }
+ } else {
+ /* 消审 */
+ const { outData } = returnData.dataset.rows[0].dataSet;
+ if (commonUtils.isNotEmptyStr(outData[0].sReturn)) {
+ Toast.fail(outData[0].sReturn);
+ return false;
+ } else {
+ // if (this.props.app.currentPane.refresh !== undefined) {
+ // this.props.app.currentPane.refresh();
+ // }
+ Toast.success(BtnCancelExamine + returnData.msg);
+ window.history.back(-1);
+ }
+ }
+ } else { /* 失败 */
+ this.props.getServiceError(returnData);
+ this.props.onSaveState({
+ loading: false,
+ });
+ return false;
+ }
+ return true;
+ }
+ };
+
+ /* 调用后台配置的接口 */
+ handleThirdInterfaceCall = async (obj, showTip, key, sListSlaveId) => {
+ let bResult = false;
+ const {
+ app, sModelsId, masterData, slaveSelectedRowKeys,
+ } = this.props;
+ const sInterfaceName = obj.sInterfaceName;
+ const value = { sId: commonUtils.isNotEmptyObject(sListSlaveId) ? sListSlaveId : masterData.sId, userInfo: app.userinfo };
+ const url = `${commonConfig.interface_host}interfaceDefine/callthirdparty/${sInterfaceName}?sModelsId=${sModelsId}`;
+ const returnData = (await commonServices.postValueService(app.token, value, url, app)).data;
+ if (returnData.code === 1) {
+ bResult = true;
+ } else if (returnData.code === -8) {
+ Modal.info({
+ title: '温馨提示:',
+ width: 200,
+ content: (
+
+ {this.handleGetMsg(returnData.msg)}
+
+ ),
+ okText: '确认',
+ onOk() {},
+ });
+ bResult = true;
+ } else {
+ bResult = false;
+ this.props.getServiceError(returnData);
+ }
+ return bResult;
+ }
+
+ handleForm = (form) => {
+ this.form = form;
+ };
+ /** 点击修改按钮操作 */
+ handleEdit = () => {
+ const {
+ slaveConfig, masterConfig, app, dispatch, currentId,
+ } = this.props;
+ const { userinfo } = app;
+
+ let timValue = 0;
+ if (this.props.app.webSocket === null || this.props.app.webSocket.readyState !== WebSocket.OPEN) {
+ this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } });
+ timValue = 3000;
+ }
+ setTimeout(() => {
+ this.props.app.webSocket.onmessage = (msg) => {
+ const rtmsg = JSON.parse(msg.data);
+ if (rtmsg.action === 'showMsg') {
+ Toast.info(rtmsg.msg);
+ this.props.onSaveState({ loading: false });
+ } else if (rtmsg.action === 'loginOut') {
+ if (location.pathname.indexOf('/indexOee') > -1) {
+ dispatch({ type: 'app/throwErrorOee', payload: { code: -2, msg: rtmsg.msg } });
+ } else if (location.pathname.indexOf('/indexMobile') > -1) {
+ dispatch({ type: 'app/throwErrorMobile', payload: { code: -2, msg: rtmsg.msg } });
+ } else {
+ dispatch({ type: 'app/throwError', payload: { code: -2, msg: rtmsg.msg } });
+ }
+ } else if (rtmsg.action === 'update') {
+ this.handleGetData(masterConfig, slaveConfig);
+ this.props.onSaveState({ enabled: true, loading: false });
+ } else if (this.props.app.webSocket.homeAction) {
+ this.props.app.webSocket.homeAction(msg);
+ }
+ };
+ this.props.handleSendSocketMessage('update', 'showMsg', currentId, userinfo.sId, null, null);
+ }, timValue);
+ };
+
+ /** 获取主表、从表、审核表数据 */
+ handleGetData = async (masterConfig, slaveConfig) => {
+ const { currentId } = this.props; /* 当前页签数据 */
+ const sId = currentId !== undefined ? currentId : '';
+ await this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' } });
+ if (!commonUtils.isEmptyObject(slaveConfig)) {
+ this.props.handleGetDataSet({
+ name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } },
+ });
+ }
+ };
+
+ handleGetMemoData = async (employeeConfig) => {
+ const { currentId } = this.props; /* 当前页签数据 */
+ const sId = currentId !== undefined ? currentId : ''; /* 数据Id */
+ this.props.handleGetDataSet({
+ name: 'employee', configData: employeeConfig, condition: { sSqlCondition: { sParentId: sId } },
+ });
+ };
+
+ handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => {
+ // this.handleCustomerChange(name, changeValue);
+ const {
+ sModelsId, sModelsType: sModelsTypeOld, masterData: masterDataOld, slaveData, app, masterConfig, slaveConfig, token,
+ } = this.props;
+ const addState = {};
+ const sModelsType = commonUtils.isEmpty(sModelsTypeOld) ? '' : sModelsTypeOld;
+ const masterData = masterDataNew === undefined ? masterDataOld === undefined ? {} : masterDataOld : masterDataNew;
+ let bNewSlaveData = false;
+ if (sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName') {
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ // 从表有数据,请删除后修改客户!不能去掉
+ if (slaveData.length === 1 && commonUtils.isEmpty(slaveData[0].sProductId)) {
+ bNewSlaveData = true;
+ } else {
+ Toast.info(commonFunc.showMessage(app.commonConst, 'slaveHasDataPleaseDel'));
+ return;
+ }
+ }
+ changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue });
+ // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductId', []);
+ // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductNo', []);
+ // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductName', []);
+ //
+ // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductId', []);
+ // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductNo', []);
+ // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductName', []);
+ } else if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName') {
+ changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue });
+ } else if (sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') {
+ commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsId', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsNo', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsName', []);
+ if (sModelsType === 'materialsStock/materialsCheck' || sModelsType === 'productStock/productCheck') {
+ let value = {};
+ if (sModelsType === 'materialsStock/materialsCheck') {
+ value = {
+ sProName: 'Sp_System_AccountSquareCheck',
+ paramsMap: {
+ iType2: 1,
+ sWareHouseGuid: commonUtils.isNotEmptyObject(changeValue.sWareHouseId) ? changeValue.sWareHouseId : '',
+ },
+ };
+ } else if (sModelsType === 'productStock/productCheck') {
+ value = {
+ sProName: 'Sp_System_AccountSquareCheck',
+ paramsMap: {
+ iType2: 2,
+ sWareHouseGuid: commonUtils.isNotEmptyObject(changeValue.sWareHouseId) ? changeValue.sWareHouseId : '',
+ },
+ };
+ }
+ const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`;
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ if (returnData.code === 1) {
+ const outData = returnData.dataset.rows[0].dataSet.outData[0];
+ if (outData.sCode === -1) {
+ Toast.fail(outData.sReturn);
+ return;
+ }
+ } else {
+ this.props.getServiceError(returnData);
+ return;
+ }
+ }
+ } else if (sModelsType.includes('cashier/') && sFieldName === 'sBillType') {
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerId', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerNo', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerName', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyId', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyNo', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyName', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyId', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyNo', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyName', []);
+ changeValue.sCustomerId = '';
+ const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sCustomerId');
+ if (iIndex > -1) {
+ masterConfig.gdsconfigformslave[iIndex].bReGetDropDown = true;
+ }
+ changeValue.sSupplyId = '';
+ const iSupplyIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sSupplyId');
+ if (iSupplyIndex > -1) {
+ masterConfig.gdsconfigformslave[iSupplyIndex].bReGetDropDown = true;
+ }
+ /* 财务调整中切换调整类型后,对象名称清空 */
+ const sBillTypeIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sFamilyName');
+ if (sBillTypeIndex > -1) {
+ masterData.sFamilyName = '';
+ }
+ this.props.onSaveState({ masterConfig });
+ } else if (sFieldName === 'sGetPayId') {
+ changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue });
+ } else if (sFieldName === 'sSettlementId') {
+ if (changeValue.sSettlementId === 'cash') {
+ const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount');
+ if (sBankAccountIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 1;
+ masterData.sBankAccount = '';
+ }
+ const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo');
+ if (sInvoiceNoIndex > -1) {
+ masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 1;
+ masterData.sInvoiceNo = '';
+ }
+ const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId' || item.sName === 'sBankName');
+ if (sBankIdIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 1;
+ masterData.sBankId = '';
+ masterData.sBankName = '';
+ }
+ const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate');
+ if (tDueDateIndex > -1) {
+ masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 1;
+ delete masterData.tDueDate;
+ }
+ }
+ if (changeValue.sSettlementId === 'bank') {
+ const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo');
+ if (sInvoiceNoIndex > -1) {
+ masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 1;
+ masterData.sInvoiceNo = '';
+ }
+ const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount');
+ if (sBankAccountIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 0;
+ }
+ const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId' || item.sName === 'sBankName');
+ if (sBankIdIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 0;
+ }
+ const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate');
+ if (tDueDateIndex > -1) {
+ masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 1;
+ delete masterData.tDueDate;
+ }
+ }
+ if (changeValue.sSettlementId === 'bill') {
+ const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount');
+ if (sBankAccountIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 1;
+ masterData.sBankAccount = '';
+ }
+ const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo');
+ if (sInvoiceNoIndex > -1) {
+ masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 0;
+ }
+ const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId');
+ if (sBankIdIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 0;
+ }
+ const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate');
+ if (tDueDateIndex > -1) {
+ masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 0;
+ }
+ }
+ }
+ let returnData = this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, true, masterData);
+ const masterDataAfter = commonBusiness.getKeyUpEvent(name, sFieldName, masterConfig, returnData.masterData, {}, true);
+ if (commonUtils.isNotEmptyObject(masterDataAfter)) {
+ returnData.masterData = masterDataAfter;
+ }
+ if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName' || sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' ||
+ sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' ||
+ sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName' || sFieldName === 'tDeliverDate') {
+ const slaveDataNew = [];
+ for (const item of slaveData) {
+ let tableDataRow = ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' ||
+ sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' ||
+ sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') && (sModelsType.includes('materialsStock/productionmaterialsadjust'))) ?
+ { ...item } : { ...item, [sFieldName]: changeValue[sFieldName] };
+ if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName') {
+ tableDataRow.sTaxId = changeValue.sTaxId;
+ tableDataRow.sTaxNo = changeValue.sTaxNo;
+ tableDataRow.sTaxName = changeValue.sTaxName;
+ tableDataRow.dTaxRate = changeValue.dTaxRate;
+ tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType;
+ const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials';
+
+ tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'sTaxId', masterData, tableDataRow);
+ let dMaterialsMoney = '';
+ if (sModelsType.includes('outside/')) { /* 工序发外 */
+ let sComputeId = '';
+ const sSupplyId = changeValue.sSupplyId;
+ const sProcessId = tableDataRow.sProcessId;
+ /* 根据客户id,工序id获取公式ID */
+ if (commonUtils.isNotEmptyObject(sSupplyId) && commonUtils.isNotEmptyObject(sProcessId)) {
+ sComputeId = await commonBusiness.getOutSideProcessFormula({
+ token, sModelsId, sSupplyId, sProcessId,
+ });
+ if (commonUtils.isNotEmptyObject(sComputeId)) {
+ dMaterialsMoney = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId,
+ });
+ tableDataRow.dMaterialsMoney = dMaterialsMoney;
+ tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, 'Materials');
+ }
+ }
+ }
+ }
+ if ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' ||
+ sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' ||
+ sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') && (!sModelsType.includes('materialsStock/productionmaterialsadjust'))) {
+ if (sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') {
+ tableDataRow.sWareHouseId = changeValue.sWareHouseId;
+ tableDataRow.sWarehouseId = changeValue.sWareHouseId;
+ tableDataRow.sWareHouseNo = changeValue.sWareHouseNo;
+ tableDataRow.sWareHouseName = changeValue.sWareHouseName;
+ } else if (sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName') {
+ tableDataRow.sLocationId = changeValue.sLocationId;
+ tableDataRow.sLocationNo = changeValue.sLocationNo;
+ tableDataRow.sLocationName = changeValue.sLocationName;
+ } else if (sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') {
+ tableDataRow.sWareHouseLocationId = changeValue.sWareHouseLocationId;
+ tableDataRow.sWareHouseLocationNo = changeValue.sWareHouseLocationNo;
+ tableDataRow.sWareHouseLocationName = changeValue.sWareHouseLocationName;
+ }
+ tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType;
+ }
+ slaveDataNew.push(tableDataRow);
+ }
+ addState.slaveData = slaveDataNew;
+ // this.props.onSaveState({ slaveData: slaveDataNew });
+ } else if ((sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName')) {
+ if (bNewSlaveData) {
+ const slaveDataNew = [];
+ const allTableData = {};
+ allTableData.master = returnData.masterData;
+ const tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData);
+ tableDataRowAdd.handleType = 'add';
+ tableDataRowAdd.sId = commonUtils.createSid();
+ tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null;
+ tableDataRowAdd.key = tableDataRowAdd.sId;
+ tableDataRowAdd.bDefault = false;
+ tableDataRowAdd.iOrder = 1;
+ slaveDataNew.push(tableDataRowAdd);
+ addState.slaveData = slaveDataNew;
+ // this.props.onSaveState({ slaveData: slaveDataNew });
+ } else if (sModelsType.includes('sales/') || sModelsType.includes('cashier/') || sModelsType.includes('manufacture/')) { // 获取应收款
+ if (commonUtils.isNotEmptyObject(masterData)) {
+ this.getCustomerReceipt({ masterData: returnData.masterData });
+ }
+ }
+ } else if (sFieldName === 'sTestStandardId' || sFieldName === 'sTestStandardName') {
+ const { slaveDelData: slaveDelDataOld, slaveConfig, masterConfig } = this.props;
+ const dataUrl = `${commonConfig.server_host}eleteamemployee/getObtainInspectionStandards?sModelsId=${sModelsId}&sParentId=${returnData.masterData.sTestStandardId}`;
+ const dataReturn = (await commonServices.getService(this.props.app.token, dataUrl)).data;
+ const slaveDelData = commonUtils.isEmptyArr(slaveDelDataOld) ? [] : slaveDelDataOld;
+ if (dataReturn.code === 1) {
+ const returnSlaveData = dataReturn.dataset.rows;
+ slaveData.forEach((item) => {
+ item.handleType = 'del';
+ slaveDelData.push(item);
+ });
+ const slaveDataNew = [];
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ const iConfigIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'sTestStandardName');
+ const iSqlIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sActValue');
+ returnSlaveData.forEach((item, iIndex) => {
+ let tableDataRow = commonFunc.getDefaultData(slaveConfig, {});
+ tableDataRow.handleType = 'add';
+ tableDataRow.sId = commonUtils.createSid();
+ tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null;
+ tableDataRow.key = tableDataRow.sId;
+ tableDataRow.iOrder = iIndex;
+ if (iConfigIndex > -1) {
+ tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(masterConfig.gdsconfigformslave[iConfigIndex].sAssignField, item, newCopyTo) }; // 取赋值字段
+ // tableDataRow.sTestReference = '15S|20S';
+ const sTestReference = tableDataRow.sTestReference;
+ const sParamObj = {};
+ if (commonUtils.isNotEmptyObject(sTestReference)) {
+ if (sTestReference.indexOf('|') >= 0) {
+ sTestReference.split('|').forEach((itemField) => {
+ sParamObj[itemField] = itemField;
+ });
+ tableDataRow.sParamDropDownsActValue = sParamObj;
+ if (iSqlIndex > -1) {
+ slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = 'sql';
+ } else {
+ slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = '';
+ }
+ }
+ } else { /* 若数据没有值 则渲染文本框 */
+ tableDataRow.isText = true;
+ }
+ }
+ slaveDataNew.push(tableDataRow);
+ });
+ addState.slaveData = slaveDataNew;
+ } else {
+ Toast.fail(dataReturn.msg);
+ }
+ }
+ const models = name === 'materials' ? 'Materials' :
+ sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('print/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials';
+ if (sModelsType.includes('purchase/') || sModelsType.includes('print/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/') || sModelsType.includes('quality/')) {
+ let masterData = await this.handleMaterialsChange(returnData.masterData, sModelsId, masterData, changeValue, sFieldName, app, token, models);
+ masterData = commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, masterData);
+ if (sFieldName !== 'dPackQty') {
+ if (changeValue.dPackQty !== this.state.dPackQtyChange && changeValue.dPackQty !== undefined) {
+ masterData = commonBusiness.getCalculateAllMoney(app, models, 'dPackQty', masterData, masterData);
+ this.setState({ dPackQtyChange: changeValue.dPackQty });
+ }
+ }
+ returnData = { ...returnData, masterData };
+ }
+ if (isWait) {
+ return { ...returnData, ...addState, enabled: true };
+ } else {
+ this.props.onSaveState({ ...returnData, ...addState, enabled: true });
+ return returnData;
+ }
+ }
+
+ /** 表格数据更改 */
+ // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData)
+ handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait) => {
+ /* 从CommonBase获取默认参数 */
+ const {
+ [`${name}Data`]: tableData, sModelsType, sModelsId, token, app,
+ } = this.props;
+ if (name === 'control' && sModelsType === 'sales/salesOrder') {
+ const { [`${name}Data`]: tableData, materialsData: materialsDataOld, processData: processDataOld } = this.props;
+ let tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true);
+ if (tableDataRow === undefined) return;
+ if (sFieldName === 'dSinglePQty' || sFieldName === 'dSumPQty' || sFieldName === 'iPrintModePo' || sFieldName === 'iPrintMode' || sFieldName === 'iPrintModePo' || sFieldName === 'iPositiveColor' ||
+ sFieldName === 'iPositiveSpecialColor' || sFieldName === 'iOppositeColor' || sFieldName === 'iOppositeSpecialColor') {
+ if (sFieldName === 'iPrintModePo') {
+ if (tableDataRow.iPrintModePo === 0) {
+ tableDataRow.iPrintMode = 3;
+ if (tableDataRow.iPositiveColor === 0) {
+ tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeColor = 0;
+ tableDataRow.iOppositeSpecialColor = 0;
+ } else {
+ tableDataRow.iOppositeColor = 0;
+ tableDataRow.iOppositeSpecialColor = 0;
+ }
+ } else if (tableDataRow.iPrintModePo === 1) {
+ tableDataRow.iPrintMode = 3;
+ if (tableDataRow.iPositiveColor === 0) {
+ tableDataRow.iPositiveColor = 0;
+ tableDataRow.iPositiveSpecialColor = 0;
+ tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? 4 : tableDataRow.iOppositeColor;
+ } else {
+ tableDataRow.iPositiveColor = 0;
+ tableDataRow.iPositiveSpecialColor = 0;
+ }
+ } else {
+ tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? tableDataRow.iPositiveColor : tableDataRow.iOppositeColor;
+ }
+ } else if (sFieldName === 'iPrintMode') {
+ if (tableDataRow.iPrintMode === 0 || tableDataRow.iPrintMode === 1) {
+ tableDataRow.iPositiveColor = commonUtils.isEmpty(tableDataRow.iPositiveColor) || tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeColor = tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeSpecialColor = tableDataRow.iPositiveSpecialColor;
+ } else if (tableDataRow.iPrintMode === 2) {
+ tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? tableDataRow.iPositiveColor : tableDataRow.iOppositeColor;
+ } else if (tableDataRow.iPrintMode === 3) {
+ tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeColor = 0;
+ tableDataRow.iOppositeSpecialColor = 0;
+ } else if (tableDataRow.iPrintMode === 4) {
+ tableDataRow.iPositiveColor = 0;
+ tableDataRow.iPositiveSpecialColor = 0;
+ tableDataRow.iOppositeColor = 0;
+ tableDataRow.iOppositeSpecialColor = 0;
+ }
+ } else if (sFieldName === 'iPositiveColor' || sFieldName === 'iPositiveSpecialColor') {
+ if (tableDataRow.iPrintMode === 0 || tableDataRow.iPrintMode === 1) {
+ tableDataRow.iOppositeColor = tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeSpecialColor = tableDataRow.iPositiveSpecialColor;
+ }
+ }
+ tableDataRow = this.singlePQtyChange(tableDataRow);
+ }
+ const materialsData = [];
+ const processData = [];
+ materialsDataOld.forEach((item) => {
+ const itemNew = { ...item };
+ if (itemNew.sControlId === sId) {
+ itemNew.sPartsName = tableDataRow.sPartsName;
+ }
+ materialsData.push(itemNew);
+ });
+ processDataOld.forEach((item) => {
+ const itemNew = { ...item };
+ if (itemNew.sControlId === sId) {
+ itemNew.sPartsName = tableDataRow.sPartsName;
+ }
+ processData.push(itemNew);
+ });
+ const materialsDataNew = this.sortData(tableData, materialsData);
+ const processDataNew = this.sortData(tableData, processData);
+
+ const iIndex = tableData.findIndex(item => item.sId === sId);
+ tableData[iIndex] = tableDataRow;
+ this.props.onSaveState({ [`${name}Data`]: tableData, materialsData: materialsDataNew, processData: processDataNew });
+ } else {
+ let { masterData } = this.props;
+ const iIndex = tableData.findIndex(item => item.sId === sId);
+ // if (sFieldName.substring(0, 1) === 'd' && commonUtils.convertToNum(tableData[iIndex][sFieldName]) === commonUtils.convertToNum(changeValue[sFieldName])) {
+ // if (!(tableData[iIndex][sFieldName] === undefined && commonUtils.convertToNum(changeValue[sFieldName]) === 0)) return;
+ // }
+ if (sFieldName === 'sProductName' && name === 'slave' && (sModelsType.includes('sales/salesOrder') || sModelsType.includes('manufacture/workOrder') || sModelsType.includes('quotation/quotation'))) {
+ if (commonUtils.isNotEmptyObject(changeValue) && Object.keys(changeValue).length === 1 && Object.keys(changeValue)[0] === sFieldName) {
+ changeValue.sProductId = changeValue.sProductName;
+ }
+ }
+ let tableDataRow = this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true);
+ if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductStyle' || sFieldName === 'sProductUnit' || sFieldName === 'sProductNo'
+ || sFieldName === 'sCustomerProductNo' || sFieldName === 'sProductClassifyId' || sFieldName === 'sProductClassifyName') && !commonUtils.isEmpty(tableDataRow.sProductId)) {
+ const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', sFieldName);
+ const iProductIdIndex = commonUtils.isEmptyArr(productIdDropDown) ? -1 : productIdDropDown.findIndex(item => item.sId === tableDataRow.sProductId);
+ if (iProductIdIndex === -1) {
+ tableDataRow.sProductInfo = JSON.stringify({
+ sProductId: tableDataRow.sProductName,
+ sProductName: tableDataRow.sProductName,
+ sProductStyle: tableDataRow.sProductStyle,
+ sProductUnit: tableDataRow.sProductUnit,
+ sProductNo: tableDataRow.sProductNo,
+ sCustomerProductNo: tableDataRow.sCustomerProductNo,
+ sProductClassifyId: tableDataRow.sProductClassifyId,
+ sProductClassifyName: tableDataRow.sProductClassifyName,
+ });
+ } else {
+ tableDataRow.sProductInfo = '';
+ }
+ if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductNo') && !commonUtils.isEmpty(changeValue.sProductId)) {
+ const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`;
+ const value = {
+ sProName: 'Sp_Cashier_GetProductPrice',
+ paramsMap: {
+ sProductGuid: changeValue.sProductId,
+ },
+ };
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ if (returnData.code === 1) {
+ tableDataRow.dProductPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice;
+ }
+ const models = name === 'materials' ? 'Materials' :
+ sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials';
+ if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) {
+ tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, 'dProductQty', app, token, models);
+ }
+ tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dProductQty', masterData, tableDataRow);
+ // else {
+ // this.props.getServiceError(returnData);
+ // }
+ }
+ } else if (sModelsType === 'sales/salesOrder' && (sFieldName === 'sProductClassifyId' || sFieldName === 'sProductClassifyName') && name === 'slave') {
+ const { controlData } = this.props;
+ if (controlData !== undefined && !commonUtils.isEmpty(tableData.sProductInfo)) {
+ const controlDataFilter = controlData.filter(item => item.sSlaveId === tableData[iIndex].sId);
+ const tableSelectedRowKeys = [];
+ controlDataFilter.forEach((item) => {
+ tableSelectedRowKeys.push(item.sId);
+ });
+ const materialsReturnData = this.otherTableDel('materials', tableSelectedRowKeys);
+ const processReturnData = this.otherTableDel('process', tableSelectedRowKeys);
+ const controlReturnData = this.props.onDataRowDel('control', true, tableSelectedRowKeys);
+ this.props.onSaveState({
+ ...materialsReturnData,
+ ...processReturnData,
+ ...controlReturnData,
+ });
+ }
+ } else if (sModelsType.includes('cashier/') && sFieldName === 'dTotalMoney') { /* 付款单、收款单,从表付款/收款金额改变,会自动汇总到主表付款金额中 */
+ const addStata = {};
+ addStata.dTotalMoney = 0;
+ if (iIndex > -1) { /* 选中行 */
+ let dMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTotalMoney) ? tableDataRow.dTotalMoney : 0;
+ dMoney = commonUtils.convertStrToNumber(dMoney);
+ addStata.dTotalMoney = dMoney + commonUtils.convertStrToNumber(addStata.dTotalMoney);
+ }
+ tableData.forEach((item, index) => { /* 非选中行 */
+ if (index !== iIndex) {
+ const dMoney = commonUtils.isNotEmptyNumber(item.dTotalMoney) ? item.dTotalMoney : 0;
+ addStata.dTotalMoney = commonUtils.convertFixNum(dMoney, 6) + commonUtils.convertFixNum(addStata.dTotalMoney, 6);
+ }
+ });
+ masterData = { ...masterData, ...addStata };
+ this.props.onSaveState({ masterData });
+ }
+ // 取工艺卡数据
+ if (sModelsType === 'sales/salesOrder' && (sFieldName === 'sProductId' || sFieldName === 'sProductNo' || sFieldName === 'sProductName') && name === 'slave') {
+ const {
+ controlConfig, materialsConfig, processConfig,
+ } = this.props;
+ let { controlData, materialsData, processData } = this.props;
+ const sId = tableData[iIndex].sId;
+ const bCkxCopyFromTechnology = '1'; // app.systemData.filter(item => item.sName === 'CkxCopyFromTechnology')[0].sValue;
+ if (bCkxCopyFromTechnology === '1' && tableDataRow.sProductId !== tableDataRow.sProductName) {
+ const controlSelectedData = controlData.filter(item => item.sSlaveId === sId);
+ if (commonUtils.isNotEmptyObject(controlSelectedData)) {
+ const materialsReturnData = this.otherTableDel('materials', controlSelectedData);
+ const processReturnData = this.otherTableDel('process', controlSelectedData);
+ const controlReturnData = this.props.onDataRowDel('control', true, controlSelectedData);
+ controlData = controlReturnData.controlData;
+ materialsData = materialsReturnData.materialsData;
+ processData = processReturnData.processData;
+ this.props.onSaveState({
+ ...materialsReturnData,
+ ...processReturnData,
+ ...controlReturnData,
+ });
+ }
+ const sCustomerId = masterData.sCustomerId;
+ const sProductId = changeValue.sProductId;
+ const sProductIdArray = [];
+ sProductIdArray.push(sProductId);
+ const sProductIds = sProductIdArray.toString();
+ const condition = { sCustomerId, sProductIds };
+ const dataUrl = `${commonConfig.server_host}salesorder/getProcessCardDataByCustomIdProductId/?sModelsId=${sModelsId}`;
+ const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data;
+ const config = this.props.masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes('BtnCopyFrom.ActProcessCard'));
+ if (dataReturn.code === 1) {
+ const returnData = dataReturn.dataset.rows[0];
+ const copyToControlConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Control'.toLowerCase());
+ const copyToMaterialsConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Materials'.toLowerCase());
+ const copyToProcessConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Process'.toLowerCase());
+ const controlAssignField = commonUtils.isNotEmptyArr(copyToControlConfig) ? copyToControlConfig[0].sAssignField : '';
+ const materialsAssignField = commonUtils.isNotEmptyArr(copyToMaterialsConfig) ? copyToMaterialsConfig[0].sAssignField : '';
+ const processAssignField = commonUtils.isNotEmptyArr(copyToProcessConfig) ? copyToProcessConfig[0].sAssignField : '';
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmptyArr(tableData) ? {} : tableData;
+ if (commonUtils.isNotEmptyArr(returnData.controlData)) {
+ // eslint-disable-next-line no-loop-func
+ returnData.controlData.forEach((controlItem) => {
+ newCopyTo.control = controlItem;
+ let controlRow = commonFunc.getDefaultData(controlConfig, newCopyTo); // 取默认值
+ controlRow = { ...controlRow, ...commonFunc.getAssignFieldValue(controlAssignField, controlItem, newCopyTo) }; // 取赋值字段
+ controlRow.handleType = 'add';
+ controlRow.sId = commonUtils.createSid();
+ controlRow.sSlaveId = tableDataRow.sId;
+ controlRow.sParentId = masterData.sId;
+ controlData.push(controlRow);
+
+ if (commonUtils.isNotEmptyArr(returnData.materialsData)) {
+ returnData.materialsData.filter(item => item.sControlId === controlItem.sId).forEach((materialsItem) => {
+ newCopyTo.materials = materialsItem;
+ let materialsRow = commonFunc.getDefaultData(materialsConfig, newCopyTo); // 取默认值
+ materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段
+ materialsRow.handleType = 'add';
+ materialsRow.sId = commonUtils.createSid();
+ materialsRow.sSlaveId = tableDataRow.sId;
+ materialsRow.sParentId = masterData.sId;
+ materialsRow.sControlId = controlRow.sId;
+ materialsRow.sPartsName = controlRow.sPartsName;
+
+ materialsData.push(materialsRow);
+ });
+ }
+
+ if (commonUtils.isNotEmptyArr(returnData.processData)) {
+ returnData.processData.filter(item => item.sControlId === controlItem.sId).forEach((processItem) => {
+ newCopyTo.process = processItem;
+ let processRow = commonFunc.getDefaultData(processConfig, newCopyTo); // 取默认值
+ processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段
+ processRow.handleType = 'add';
+ processRow.sId = commonUtils.createSid();
+ processRow.sSlaveId = tableDataRow.sId;
+ processRow.sParentId = masterData.sId;
+ processRow.sControlId = controlRow.sId;
+ processRow.sPartsName = controlRow.sPartsName;
+ processData.push(processRow);
+ });
+ }
+ });
+ }
+ if (commonUtils.isNotEmptyArr(returnData.materialsData)) {
+ // eslint-disable-next-line no-loop-func
+ returnData.materialsData.filter(item => item.sType === '2').forEach((materialsItem) => {
+ newCopyTo.materials = materialsItem;
+ let materialsRow = commonFunc.getDefaultData(materialsConfig, newCopyTo); // 取默认值
+ materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段
+ materialsRow.handleType = 'add';
+ materialsRow.sId = commonUtils.createSid();
+ materialsRow.sSlaveId = tableDataRow.sId;
+ materialsRow.sParentId = masterData.sId;
+ materialsData.push(materialsRow);
+ });
+ }
+
+ if (commonUtils.isNotEmptyArr(returnData.processData)) {
+ // eslint-disable-next-line no-loop-func
+ returnData.processData.filter(item => item.sType === '3').forEach((processItem) => {
+ newCopyTo.process = processItem;
+ let processRow = commonFunc.getDefaultData(processConfig, newCopyTo); // 取默认值
+ processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段
+ processRow.handleType = 'add';
+ processRow.sId = commonUtils.createSid();
+ processRow.sSlaveId = tableDataRow.sId;
+ processRow.sParentId = masterData.sId;
+ processData.push(processRow);
+ });
+ }
+ this.props.onSaveState({ controlData, materialsData, processData });
+ }
+ }
+ } else if (sModelsType === 'sales/salesOrder' && (sFieldName === 'dProductQty' || sFieldName === 'dGiveQty' || sFieldName === 'dStockupQty') && name === 'slave') {
+ const {
+ controlData, slaveSelectedRowKeys,
+ } = this.props;
+ const controlSelectedData = controlData.filter(item => item.sSlaveId === slaveSelectedRowKeys[0]);
+ for (const one of controlSelectedData) {
+ one.handleType = commonUtils.isEmpty(one.handleType) ? 'update' : one.handleType;
+ one.dPartsQty = commonUtils.isNull(tableDataRow.dProductQty, 0) + commonUtils.isNull(tableDataRow.dGiveQty, 0);
+ }
+ this.props.onSaveState({ controlData });
+ } else if (sModelsType.includes('purchase/') && (sFieldName === 'sMaterialsId' || sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName') && name === 'slave') {
+ const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`;
+ const value = {
+ sProName: 'Sp_Cashier_GetMaterialsPrice',
+ paramsMap: {
+ sMaterialsGuid: changeValue.sMaterialsId,
+ sSupplyGuid: masterData.sSupplyId,
+ },
+ };
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ if (returnData.code === 1) {
+ tableDataRow.dMaterialsPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice;
+ }
+ const models = name === 'materials' ? 'Materials' :
+ sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials';
+ if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) {
+ tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, 'dAuxiliaryQty', app, token, models);
+ }
+ tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dAuxiliaryQty', masterData, tableDataRow);
+
+ if (Object.keys(changeValue).length > 0 && Object.keys(changeValue).findIndex(item => item === 'dMaterialsStockAuxiliaryQty') > -1) {
+ const urlMaterialsStock = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`;
+ const valueMaterialsStock = {
+ sProName: 'Sp_Inventory_MaterialsInventoryV56',
+ paramsMap: {
+ sMaterialsGuid: tableDataRow.sMaterialsId,
+ sMaterialsStyle: tableDataRow.sMaterialsStyle,
+ sWarehouseGuid: tableDataRow.sWarehouseId,
+ sLocationalGuid: tableDataRow.sLocationId,
+ sWarehouseLocationGuid: tableDataRow.sWarehouseLocationId,
+ sDefine_no: tableDataRow.sDefineNo,
+ sDefine_no2: tableDataRow.sDefineNo2,
+ iGetQty: 1,
+ iHasZero: 1,
+ },
+ };
+ const returnDataMaterialsStock = (await commonServices.postValueService(app.token, valueMaterialsStock, urlMaterialsStock)).data;
+ if (returnDataMaterialsStock.code === 1) {
+ tableDataRow.dMaterialsStockAuxiliaryQty = returnDataMaterialsStock.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty;
+ }
+ }
+ if (Object.keys(changeValue).length > 0 && Object.keys(changeValue).findIndex(item => item === 'dMaterialsStockAvailableQty') > -1) {
+ const urlMaterialsAvailableQty = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`;
+ const valueMaterialsAvailableQty = {
+ sProName: 'Sp_Inventory_MaterialsInventoryV56',
+ paramsMap: {
+ sMaterialsGuid: tableDataRow.sMaterialsId,
+ sMaterialsStyle: tableDataRow.sMaterialsStyle,
+ sWarehouseGuid: tableDataRow.sWarehouseId,
+ sLocationalGuid: tableDataRow.sLocationId,
+ sWarehouseLocationGuid: tableDataRow.sWarehouseLocationId,
+ sDefine_no: tableDataRow.sDefineNo,
+ sDefine_no2: tableDataRow.sDefineNo2,
+ iGetQty: 2,
+ iHasZero: 1,
+ },
+ };
+ const returnDataMaterialsAvailableQty = (await commonServices.postValueService(app.token, valueMaterialsAvailableQty, urlMaterialsAvailableQty)).data;
+ if (returnDataMaterialsAvailableQty.code === 1) {
+ tableDataRow.dMaterialsStockAvailableQty = returnDataMaterialsAvailableQty.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty;
+ }
+ }
+ // else {
+ // this.props.getServiceError(returnData);
+ // }
+ } else if (sModelsType === 'sales/salesCheck' && sFieldName === 'dLossMoney' && name === 'slave') {
+ if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcMoney) && commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney)) {
+ const dPprice = this.props.getFloatNum('dProductPrice'); /* 获取系统设定小数位 */
+ tableDataRow.dProductMoney = commonUtils.convertFixNum(tableDataRow.dSrcMoney - tableDataRow.dLossMoney, dPprice);
+ } else if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcMoney) && commonUtils.isEmptyNumber(tableDataRow.dLossMoney)) {
+ tableDataRow.dProductMoney = tableDataRow.dSrcMoney;
+ tableDataRow.dLossMoney = 0;
+ }
+ }
+ /* 各种金额,税额,价格计算 */
+ const models = name === 'materials' ? 'Materials' :
+ sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials';
+ if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) {
+ tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models);
+ }
+ tableDataRow = commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, tableDataRow);
+ let dMaterialsMoney = '';
+ if (sModelsType.includes('outside/')) { /* 工序发外 && (sFieldName === 'sSupplyName' || sFieldName === 'sProcessName' || sFieldName === 'dAuxiliaryQty') */
+ let sComputeId = {};
+ const sSupplyId = masterData.sSupplyId;
+ const sProcessId = tableDataRow.sProcessId;
+ /* 根据客户id,工序id获取公式ID */
+ sComputeId = await commonBusiness.getOutSideProcessFormula({
+ token, sModelsId, sSupplyId, sProcessId,
+ });
+ if (!commonUtils.isEmpty(sComputeId)) {
+ dMaterialsMoney = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId,
+ });
+ tableDataRow.dMaterialsMoney = dMaterialsMoney;
+ tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, 'Materials');
+ }
+ }
+ if (isWait) {
+ return tableDataRow;
+ } else {
+ tableData[iIndex] = tableDataRow;
+ this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true });
+ }
+ }
+ };
+
+ handleMaterialsChange = async (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => {
+ const { sComputeId, sConversionComputeId, sReConversionComputeId } = tableDataRow;
+ if (sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName' || sFieldName === 'dAuxiliaryQty' || sFieldName === 'dReelAuxiliaryQty' || sFieldName === 'dConversionQty' || sFieldName === 'sMaterialsStyle') {
+ if (sFieldName === 'dReelAuxiliaryQty') {
+ if (tableDataRow.sMaterialsUnit === '吨' && tableDataRow.bReel && tableDataRow.dGramWeight > 0) {
+ tableDataRow = commonBusiness.getMaterialsQty(app, { ...tableDataRow, sMaterialsStyle: tableDataRow.sReelMaterialsStyle }, 'dReelAuxiliaryQty', 'dMaterialsQty');
+ tableDataRow.dAuxiliaryQty = tableDataRow.dMaterialsQty;
+ tableDataRow.sMaterialsStyle = tableDataRow.sMaterialsStyle !== undefined && tableDataRow.sMaterialsStyle.split('*').length > 1 ? tableDataRow.sMaterialsStyle.split('*')[0] : tableDataRow.sMaterialsStyle;
+ tableDataRow.sAuxiliaryUnit = tableDataRow.sMaterialsUnit;
+ } else if (tableDataRow.sMaterialsUnit.toUpper() === 'M2' && tableDataRow.bReel) {
+ tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dReelAuxiliaryQty', 'dMaterialsQty');
+ tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty;
+ } else {
+ tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty;
+ }
+ }
+ if (commonUtils.isEmpty(sComputeId) && sFieldName !== 'dConversionQty') {
+ tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dAuxiliaryQty', 'dMaterialsQty');
+ } else if (!commonUtils.isEmpty(sComputeId)) {
+ tableDataRow.dMaterialsQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId,
+ });
+ }
+ if (sFieldName !== 'dConversionQty' && !commonUtils.isEmpty(sConversionComputeId)) {
+ tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sConversionComputeId,
+ });
+ }
+ } else if (sFieldName === 'dMaterialsQty') {
+ const { sReComputeId } = tableDataRow;
+ if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) {
+ tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, 'dAuxiliaryQty');
+ } else if (tableDataRow.bInverse) {
+ tableDataRow.dAuxiliaryQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sReComputeId,
+ });
+ }
+ if (!commonUtils.isEmpty(sReConversionComputeId)) {
+ tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sReConversionComputeId,
+ });
+ }
+ } else if (sFieldName === 'dAuxiliaryLossQty') {
+ if (commonUtils.isEmpty(sComputeId)) {
+ tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, sFieldName, 'dLossQty');
+ } else {
+ tableDataRow.dLossQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId,
+ });
+ }
+ if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) {
+ tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty;
+ tableDataRow.dMaterialsQty = commonUtils.convertFixNum(tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty, 6);
+ }
+ } else if (sFieldName === 'dLossQty') {
+ const { sReComputeId } = tableDataRow;
+ if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) {
+ tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, 'dAuxiliaryLossQty');
+ } else if (tableDataRow.bInverse) {
+ tableDataRow.dAuxiliaryLossQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sReComputeId,
+ });
+ }
+ if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) {
+ tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty;
+ tableDataRow.dMaterialsQty = tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty;
+ }
+ } else if (sFieldName === 'sProcessId' || sFieldName === 'sProcessNo' || sFieldName === 'sProcessName') {
+ const sProcessId = changeValue.sProcessId;
+ const url = `${commonConfig.server_host}process/outsideprocess?sModelsId=${sModelsId}&sProcessId=${sProcessId}`;
+ const dataReturn = (await commonServices.getService(token, url)).data;
+ if (dataReturn.code === 1) {
+ if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) {
+ tableDataRow.dMaterialsPrice = dataReturn.dataset.rows[0].dMaterialsPrice;
+ }
+ tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dMaterialsPrice', masterData, tableDataRow);
+ }
+ }
+ return tableDataRow;
+ }
+
+ handleCustomerChange = (name, changeValue) => {
+ if (commonUtils.isNotEmptyObject(changeValue)) {
+ if (changeValue.sCustomerId !== this.state.changleCustomerId) {
+ const sCustomerId = [];
+ sCustomerId.push(changeValue.sCustomerId);
+ this.handleTableSelectRowChange(name, sCustomerId, changeValue);
+ }
+ }
+ this.setState({ changleCustomerId: changeValue.sCustomerId });
+ }
+ handleMobileScan = (fieldConfig, tbName, record) => {
+ if (commonUtils.isNotEmptyObject(fieldConfig)) {
+ const sFieldName = fieldConfig.sName;
+ const newTableName = 'master';
+ BarCodeUtil.startScan(async (type, code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveData, sModelsType, masterConfig,
+ } = this.props;
+ /* 规则定义
+ 材料
+ sDefineNo: codeArr[0], --唯一码
+ sMaterialsName: codeArr[1], --材料名称
+ sMaterialsStyle: codeArr[2], --材料规格
+ dAuxiliaryQty: codeArr[3], --数量
+ sWareHouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sMaterialsId: codeArr[8], --材料ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10], --sLocationId
+ 成品
+ sDefineNo: codeArr[0], --唯一码
+ sProductName: codeArr[1], --产品名称
+ sProductStyle: codeArr[2], --产品规格
+ dProductQty: codeArr[3], --产品数量
+ sWarehouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --仓库名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sProductId: codeArr[8], --产品ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10],
+ sCustomerName: codeArr[11], --客户名称
+ sCustomerShort: codeArr[12],
+ sOrderNo: codeArr[13], --订单号
+ sWorkOrderNo: codeArr[14], --工单号
+ sCustomerOrderNo: codeArr[15], --客户编号
+ sCustomerProductNo: codeArr[16], --客户产品编号
+ */
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ const masterDataObjAdd = {};
+ if (commonUtils.isEmptyObject(code)) {
+ Toast.fail('二维码扫码失败!', 1);
+ return;
+ }
+ const codeArr = code.split('|');
+ let models = '';
+ if (codeArr.length === 12) { /* 材料 */
+ models = 'Materials';
+ } else if (codeArr.length === 17) { /* 成品 */
+ models = 'Product';
+ } else {
+ models = 'Single'; /* 单一的 */
+ }
+ if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */
+ /* 取第一条码 */
+ const sCode = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ if (tbName === 'master') {
+ masterData[sFieldName] = sCode;
+ }
+ if (tbName === 'master') {
+ masterdataObj = {
+ ...masterData, [sFieldName]: sCode,
+ };
+ } else if(tbName === 'slave') {
+ if(commonUtils.isNotEmptyArr(slaveData)) {
+ /* 如果是从表的字段配置了扫码 那么则将值赋值到字段上 */
+ const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => item.sId === record.sId) : -1;
+ if (iIndex > -1) {
+ const newType = commonUtils.isEmpty(slaveData[iIndex].handleType) ? 'update' : slaveData[iIndex].handleType;
+ slaveData[iIndex] = { ...slaveData[iIndex], [sFieldName]: sCode, handleType :newType };
+ }
+ }
+ }
+
+
+
+ /* 读取扫码配置 */
+ // const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1);
+ // const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ // /* 唯一码调接口 */
+ // let sqlDataRow ={};
+ // if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ // if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ // sqlDataRow = sqlDropDownData[0];
+ // }
+ // }
+ // slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段
+ // if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ // slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ // }
+ // slaveDataObj.sParentId = masterdataObj.sId;
+ // if (commonUtils.isNotEmptyArr(slaveData)) {
+ // const len = slaveData.length;
+ // const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ // const { handleType } = slaveData[len - 1];
+ // /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ // if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ // slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ // // slaveData[len - 1] = slaveDataObj;
+ // slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj};
+ // } else {
+ // slaveDataObj.sId = commonUtils.createSid();
+ // slaveDataObj.handleType = 'add';
+ // slaveData.push(slaveDataObj);
+ // }
+ // } else {
+ // slaveDataObj.sId = commonUtils.createSid();
+ // slaveDataObj.handleType = 'add';
+ // slaveData.push(slaveDataObj);
+ // }
+ if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ }
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (models !== 'Single') {
+ slaveData.push(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveData, masterData: masterdataObj });
+ });
+ }
+ }
+
+ render() {
+ return (
+
+ );
+ }
+ };
+};
diff --git a/src/mobile/common/CommobileChar.js b/src/mobile/common/CommobileChar.js
new file mode 100644
index 0000000..03ad6f0
--- /dev/null
+++ b/src/mobile/common/CommobileChar.js
@@ -0,0 +1,161 @@
+/* eslint-disable object-curly-newline */
+import React, { Component } from 'react';
+import { Radio } from 'antd';
+import baseChar from '../../components/Common/baseChar'; /* 获取图表配置及数据 */
+// import { Bar, Columnar, ColumnarGroup, BrokenLine, WaterWave, Gauge, ColumnarStack, PieGroup, Pie, TimeLineGroup } from '../../components/Charts';
+import Bar from '../../components/Charts/Bar';
+import Columnar from '../../components/Charts/Columnar';
+import ColumnarGroup from '../../components/Charts/ColumnarGroup';
+import BrokenLine from '../../components/Charts/BrokenLine';
+import WaterWave from '../../components/Charts/WaterWave';
+import Gauge from '../../components/Charts/Gauge';
+import ColumnarStack from '../../components/Charts/ColumnarStack';
+import PieGroup from '../../components/Charts/PieGroup';
+import Pie from '../../components/Charts/Pie';
+import TimeLineGroup from '../../components/Charts/TimeLineGroup';
+
+import styles from '../../components/Charts/index.less';
+import * as utils from '../../utils/utils';
+
+class CommobileChar extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ ...props,
+ commonChar: styles.commonChar,
+ childChar: styles.childChar,
+ };
+ }
+
+
+ componentWillReceiveProps(nextProps) {
+ this.setState({ ...nextProps });
+ }
+
+
+ handleChar = (props) => {
+ const { sCharType, child } = props;
+ let content = '';
+ if (utils.isNotEmptyObject(child)) {
+ child.height = props.iHeight;
+ if (sCharType === 'sBar') {
+ /* 横向条形图 */
+ content = ;
+ } else if (sCharType === 'sColumnar') {
+ /* 纵向条形图 */
+ content = ;
+ } else if (sCharType === 'sColumnarGroup') {
+ /* 纵向条形图 */
+ content = ;
+ } else if (sCharType === 'sBrokenLine') {
+ content = ;
+ } else if (sCharType === 'sWaterWave') {
+ content = ;
+ } else if (sCharType === 'sGauge') {
+ content = ;
+ } else if (sCharType === 'sColumnarStack') {
+ content = ;
+ } else if (sCharType === 'sPieGroup') {
+ content = ;
+ } else if (sCharType === 'sPie') {
+ content = ;
+ } else if (sCharType === 'TimeLineGroup') {
+ content = ;
+ }
+ }
+ return content;
+ };
+
+ handleExtra = (menuTypeId) => {
+ const { charMenu } = this.state;
+ let content = '';
+ const index = charMenu.findIndex(item => item.sId === menuTypeId);
+ if (index > -1) {
+ const { childConfig, radioType } = charMenu[index];
+ const props = { ...this.state, index };
+ content = (
+ this.handleChangeType(e, props)}>
+ {
+ childConfig.map((item) => {
+ const { sTypeValue, showName, sId } = item;
+ return (
+ {showName}
+ );
+ })
+ }
+ );
+ }
+ return content;
+ };
+
+ handleChangeType = (e, props) => {
+ const { charMenu, charConfigAndData, index } = props;
+ const { childConfig } = charMenu[index];
+ const radioType = e.target.value; /* 更改后的菜单 */
+ charMenu[index].radioType = radioType;
+ this.setState({ charMenu });
+ const each = charConfigAndData[index]; /* 当前图表的配置 */
+ const child = childConfig.filter(item => item.sType === 'searchType' && item.sTypeValue === radioType);
+ if (utils.isNotEmptyArr(child)) {
+ const { sName } = child[0];
+ each.sSqlCondition = {
+ [sName]: radioType,
+ };
+ }
+ this.props.onEachChar(each);
+ };
+
+ render() {
+ const { charConfigAndData, childChar, sModelsId } = this.props;
+ if (utils.isNotEmptyArr(charConfigAndData) && sModelsId !== null && sModelsId !== undefined && sModelsId.toString() === '101251240115015915037520030') {
+ return (
+
+ {
+
+ {
+ charConfigAndData.map((itemChar, index) => {
+ const { showName } = itemChar;
+ return (
+ // eslint-disable-next-line react/no-array-index-key
+
+
+
{showName}
+ {this.handleChar(itemChar)}
+
+
+ );
+ })
+ }
+
+ }
+
+ );
+ } else {
+ return (
+
+ {
+
+ {
+ charConfigAndData.map((itemChar, index) => {
+ const { showName } = itemChar;
+ return (
+ // eslint-disable-next-line react/no-array-index-key
+
+
+
{showName}
+ {this.handleChar(itemChar)}
+
+
+ );
+ })
+ }
+
+ }
+
+
+ );
+ }
+ }
+}
+
+export default baseChar(CommobileChar);
diff --git a/src/mobile/common/CommobileClassifyEvent.js b/src/mobile/common/CommobileClassifyEvent.js
new file mode 100644
index 0000000..859ef65
--- /dev/null
+++ b/src/mobile/common/CommobileClassifyEvent.js
@@ -0,0 +1,536 @@
+/* eslint-disable array-callback-return,no-undef,prefer-destructuring */
+import React, { Component } from 'react';
+import { Modal } from 'antd-mobile';
+import * as commonUtils from '../../utils/utils'; /* 通用方法 */
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import * as commonBusiness from '../../components/Common/commonBusiness';
+
+const alert = Modal.alert;
+
+export default (ChildComponent) => {
+ return class extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ };
+ }
+ componentWillReceiveProps(nextProps) {
+ const {
+ formData, sModelsId, searchSolution, masterData,
+ } = nextProps;
+ const { slaveConfig: slaveConfigOld } = nextProps;
+ if (commonUtils.isEmptyObject(slaveConfigOld) && formData.length > 0) {
+ const sId = sModelsId !== undefined ? sModelsId : '';
+ /* 数据Id */
+ const slaveConfig = formData[0];
+ // console.log('form', formData);
+ let filterCondition = [];
+ if (commonUtils.isNotEmptyObject(masterData) && !commonUtils.isEmpty(masterData.sSearchSolutionId) && commonUtils.isNotEmptyArr(searchSolution)) {
+ const iIndex = searchSolution.findIndex(item => item.sId === masterData.sSearchSolutionId);
+ if (iIndex > -1 && !commonUtils.isEmpty(searchSolution[iIndex].sCondition)) {
+ filterCondition = JSON.parse(searchSolution[iIndex].sCondition);
+ }
+ }
+ this.handleGetData(slaveConfig, filterCondition, 1);
+ slaveConfig.gdsconfigformslave.push({
+ sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnFirst', sControlName: 'BtnFirst',
+ });
+ slaveConfig.gdsconfigformslave.push({
+ sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnPrior', sControlName: 'BtnPrior',
+ });
+ slaveConfig.gdsconfigformslave.push({
+ sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnNext', sControlName: 'BtnNext',
+ });
+ slaveConfig.gdsconfigformslave.push({
+ sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnLast', sControlName: 'BtnLast',
+ });
+ slaveConfig.gdsconfigformslave.push({
+ sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnExamine', sControlName: 'BtnExamine',
+ });
+ slaveConfig.gdsconfigformslave.push({
+ sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnCancelExamine', sControlName: 'BtnCancelExamine',
+ });
+
+ slaveConfig.gdsconfigformslave.push({
+ sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnUpCheck', sControlName: 'BtnUpCheck',
+ });
+ slaveConfig.gdsconfigformslave.push({
+ sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnDownCheck', sControlName: 'BtnDownCheck',
+ });
+ slaveConfig.gdsconfigformslave.push({
+ sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnCopyTo', sControlName: 'BtnCopyTo',
+ });
+ slaveConfig.gdsconfigformslave.push({
+ sId: commonUtils.createSid(), bVisible: false, sName: '', showName: 'BtnCopyFrom', sControlName: 'BtnCopyFrom',
+ });
+ this.props.onSaveState({
+ masterConfig: slaveConfig, slaveConfig, sId, pageLoading: false,
+ });
+ }
+ if (commonUtils.isEmptyStr(this.props.sClomunType) && commonUtils.isNotEmptyObject(this.props.masterConfig)) {
+ const { sTbName } = this.props.masterConfig;
+ if (sTbName === 'cahsupplyinit' || sTbName === 'cahcustomerinit' || sTbName === 'cahcashierinit') {
+ this.handleGetPeriod();
+ }
+ }
+ }
+
+ shouldComponentUpdate(nextProps) {
+ const { masterConfig } = nextProps;
+ return commonUtils.isNotEmptyArr(masterConfig);
+ }
+ componentDidUpdate() {
+ const { app, slaveData } = this.props;
+ const { currentPane } = app;
+ if (currentPane.classifyOption === 'add' && slaveData !== undefined) {
+ currentPane.classifyOption = '';
+ this.handleAdd();
+ this.props.onSaveState({ currentPane });
+ }
+ }
+
+ componentWillUnmount() {
+ const { sModelsId } = this.props;
+ const { userinfo } = this.props.app;
+ this.props.handleSendSocketMessage('release', 'noAction', sModelsId, userinfo.sId, null, null);
+ }
+
+ /** 获取表数据 */
+ handleGetData = (slaveConfig, slaveFilterCondition, page, slaveOrderBy) => {
+ const { app } = this.props;
+ const conditonValues = app.currentPane.conditonValues;
+ const pageNum = commonUtils.isEmpty(page) ? 1 : page;
+ // console.log('slaveConfig', slaveConfig);
+ // console.log('pageNum', pageNum);
+ // console.log('slaveFilterCondition', slaveFilterCondition);
+ this.props.handleGetDataSet({
+ name: 'slave',
+ configData: slaveConfig,
+ condition: {
+ pageNum, bFilter: slaveFilterCondition, sFilterOrderBy: slaveOrderBy, sSqlCondition: conditonValues,
+ },
+ });
+ };
+
+ handlePaginationChange = (page) => {
+ const { slaveConfig, slaveFilterCondition } = this.props;
+ this.props.handleGetDataSet({
+ name: 'slave', configData: slaveConfig, condition: { pageNum: page, bFilter: slaveFilterCondition },
+ });
+ };
+ /* 取消操作 */
+ handleCancel = () => {
+ /* 待用数据声明 */
+ const {
+ sModelsId, slaveConfig, slaveFilterCondition, slavePagination, slaveOrderBy, app,
+ } = this.props;
+ const { userinfo } = app;
+ const onSendSocketMessage = this.props.handleSendSocketMessage;
+ const onGetDataOk = this.handleGetData;
+ const onSaveStateOk = this.props.onSaveState;
+ alert('Warn', '确定要取消', [
+ {
+ text: 'Ok',
+ onPress: () => {
+ onGetDataOk(slaveConfig, slaveFilterCondition, slavePagination.current, slaveOrderBy);
+ onSaveStateOk({ enabled: false });
+ onSendSocketMessage('release', 'noAction', sModelsId, userinfo.sId, null, null);
+ },
+ },
+ { text: 'Cancel' },
+ ]);
+ };
+ /** 点击修改按钮操作 */
+ handleEdit = () => {
+ const {
+ sModelsId, slaveConfig, slaveFilterCondition, slavePagination, slaveOrderBy, app,
+ } = this.props;
+ const { userinfo } = app;
+ this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slaveOrderBy);
+ let timValue = 0;
+ if (this.props.app.webSocket === null || this.props.app.webSocket.readyState !== WebSocket.OPEN) {
+ this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } });
+ timValue = 3000;
+ }
+ setTimeout(() => {
+ this.props.app.webSocket.onmessage = (msg) => {
+ const rtmsg = JSON.parse(msg.data);
+ if (rtmsg.action === 'showMsg') {
+ message.warning(rtmsg.msg);
+ this.props.onSaveState({ loading: false });
+ } else if (rtmsg.action === 'loginOut') {
+ if (location.pathname.indexOf('/indexOee') > -1) {
+ dispatch({ type: 'app/throwErrorOee', payload: { code: -2, msg: rtmsg.msg } });
+ } else if (location.pathname.indexOf('/indexMobile') > -1) {
+ dispatch({ type: 'app/throwErrorMobile', payload: { code: -2, msg: rtmsg.msg } });
+ } else {
+ dispatch({ type: 'app/throwError', payload: { code: -2, msg: rtmsg.msg } });
+ }
+ } else {
+ if (this.props.app.webSocket.homeAction) {
+ this.props.app.webSocket.homeAction(msg);
+ }
+ this.props.onSaveState({ enabled: true, loading: false });
+ }
+ };
+ this.props.handleSendSocketMessage('update', 'showMsg', sModelsId, userinfo.sId, null, null); // 分类型不能以Id来,涉及到多条修改
+ }, timValue);
+ };
+ /** 点击新增按钮操作 */
+ handleAdd = () => {
+ const { sModelsType } = this.props;
+ let { slaveSelectedRowKeys } = this.props;
+ let { slaveData } = this.props;
+ if (slaveData === undefined) {
+ slaveData = [];
+ }
+ const newData = this.props.onDataRowAdd('slave', true);/* 调用父级新增 */
+ // const newData = {
+ // handleType: 'add',
+ // sId: commonUtils.createSid(),
+ // iOrder: slaveData.length,
+ // };
+ if (sModelsType === 'commonClassfiy/sisPosition') {
+ newData.maxBillNo = 'sNo';
+ }
+ if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { /* 通用分类新增,默认新增行为选中行 */
+ slaveSelectedRowKeys = [];
+ slaveSelectedRowKeys.push(newData.sId);
+ }
+ this.props.onSaveState({
+ slaveData: [newData, ...slaveData],
+ slaveSelectedRowKeys,
+ enabled: true,
+ });
+ };
+ /* 删除 */
+ handleDel = () => {
+ const onOkDel = this.handleOkDel;
+ alert('Warn', '确定要删除', [
+ {
+ text: 'Ok',
+ onPress: () => {
+ onOkDel();
+ },
+ },
+ { text: 'Cancel' },
+ ]);
+ };
+ handleOkDel = async () => {
+ const returnData = await this.handleTableDel('slave');
+ if (returnData) {
+ this.handleValidateSave();
+ }
+ };
+ handleTableDel = (name, isWait) => {
+ const { app } = this.props;
+ const { [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: tableSelectedRowKeys } = this.props;
+ let { [`${name}DelData`]: tableDelData } = this.props;
+ tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData;
+ if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) {
+ for (const sId of tableSelectedRowKeys) {
+ /* 看看删除集合和从表中是否都存在该条数据 */
+ const tableDataIndex = tableData.findIndex(item => item.sId === sId);
+ if (tableDataIndex > -1) {
+ /* 删除从表中的数据并存入删除集合中 */
+ const slaveDataFilter = tableData[tableDataIndex];
+ slaveDataFilter.handleType = 'del';
+ tableDelData.push(slaveDataFilter);
+ }
+ }
+ if (isWait) {
+ return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] };
+ } else {
+ this.props.onSaveState({
+ [`${name}Data`]: tableData,
+ [`${name}DelData`]: tableDelData,
+ [`${name}SelectedRowKeys`]: [],
+ });
+ return true;
+ }
+ } else {
+ message.warn(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据
+ return false;
+ }
+ };
+ /** toolbar校验保存 */
+ handleValidateSave = async () => {
+ const {
+ slaveData, slaveConfig, slaveDelData,
+ } = this.props;
+ const data = [];
+ if (!commonBusiness.validateTable(slaveConfig, slaveData, this.props)) {
+ this.props.onSaveState({
+ loading: false,
+ });
+ return;
+ }
+ data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, slaveData, slaveDelData));
+ // console.log('slaveData', slaveData);
+ // console.log('slaveDelData', slaveDelData);
+ // console.log('data', data);
+ this.handleSaveData({ data, sClientType: '1' });
+ };
+ /** toolbar保存 */
+ handleSaveData = async (params) => {
+ const {
+ token, sModelsId, slaveFilterCondition, slaveConfig, slavePagination, slaveOrderBy, app, slaveData,
+ } = this.props;
+ const { userinfo } = app;
+ const onSendSocketMessage = this.props.handleSendSocketMessage;
+ const returnData = await commonBusiness.saveData({ token, value: params, sModelsId });
+ if (commonUtils.isNotEmptyObject(returnData)) {
+ commonUtils.clearStoreDropDownData();
+ /* 新记录时,关闭后能自动带值 */
+ const callBackRecord = this.props.app.currentPane.newRecordMethod;
+ if (callBackRecord !== undefined && commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) {
+ const filterData = slaveData.filter(item => (item.handleType === 'add'));
+ const sId = commonUtils.isNotEmptyArr(filterData) && filterData.length > 0 ? filterData[0].sId : null;
+ /* 回调 传[新增的数据sId] */
+ if (this.props.app.currentPane.newRecordMethod !== undefined) {
+ this.props.app.currentPane.newRecordMethod(sId);
+ }
+ }
+ /* END */
+ onSendSocketMessage('release', 'noAction', sModelsId, userinfo.sId, null, null);
+ this.props.onSaveState({
+ enabled: false, slaveDelData: [], loading: false,
+ });
+ this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slaveOrderBy);
+ return true;
+ } else {
+ this.props.onSaveState({
+ slaveDelData: [],
+ loading: false,
+ });
+ return false;
+ }
+ };
+ /** 表单回带 */
+ handleForm = (form) => {
+ this.form = form;
+ };
+ /* 作废、取消作废的公用函数 */
+ handleInvalid = (obj) => {
+ const props = { ...this.props, ...this.state, ...obj };
+ const onOkInvaild = this.handleOkChangeInvaild;
+ alert('Warn', obj.title, [
+ {
+ text: 'Ok',
+ onPress: () => {
+ onOkInvaild(props);
+ },
+ },
+ { text: 'Cancel' },
+ ]);
+ };
+ /* 切换作废状态 */
+ handleOkChangeInvaild = async (props) => {
+ props = this.handleOkInvalid(props);
+ this.setState({ ...props });
+ };
+ /** 作废,取消作废 */
+ handleOkInvalid = async (props) => {
+ const {
+ sModelsId, slaveData, slaveConfig, handleType, slaveSelectedRowKeys, app, slavePagination,
+ } = props;
+ if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
+ const { token } = props.app;
+ const { sTbName } = slaveConfig;
+ const value = {
+ sClientType: '1',
+ sId: slaveSelectedRowKeys,
+ sTableName: sTbName,
+ handleType,
+ sBooleanCheck: false,
+ };
+ const url = `${commonConfig.server_host}checkModel/updatebInvalid?sModelsId=${sModelsId}`;
+ const { data } = await commonServices.postValueService(token, value, url);
+ if (data.code === 1) {
+ message.success(data.msg);
+ for (const key of slaveSelectedRowKeys) {
+ const selectData = slaveData.filter(item => item.sId === key);
+ selectData.bInvalid = handleType === 'toVoid';
+ }
+ /* 作废(取消作废)后刷新页面 */
+ this.handlePaginationChange(slavePagination.current);
+ } else {
+ this.props.getServiceError(data);
+ }
+ return props;
+ } else {
+ message.warn(commonFunc.showMessage(app.commonConst, 'sChoosebInvalid'));/* 请选择作废数据 */
+ }
+ };
+ /** 按钮操作事件 */
+ handleButtonClick = (name) => {
+ if (name === 'BtnOut') {
+ this.handleOut();
+ } else if (name === 'BtnRefresh') {
+ const { slavePagination } = this.props;
+ this.handlePaginationChange(slavePagination.current);
+ } else if (name === 'BtnSetPeriod') {
+ this.handleBtnSetPeriod();
+ } else if (name === 'BtnRelievePeriod') {
+ this.handleBtnRelievePeriod();
+ }
+ };
+ /* 导出Excel */
+ handleOut = () => {
+ const {
+ slaveConfig, slaveFilterCondition, sFilterOrderBy, sGroupByList,
+ } = this.props;
+ let url = `${commonConfig.server_host}excel/export/${slaveConfig.sId}?sModelsId=${slaveConfig.sParentId}&token=${this.props.app.token}`;
+ if (commonUtils.isNotEmptyArr(slaveFilterCondition)) {
+ url = `${url}&bFilter=${encodeURIComponent(JSON.stringify(slaveFilterCondition))}`;
+ }
+ if (sFilterOrderBy !== undefined && sFilterOrderBy !== '' && Object.keys(sFilterOrderBy).length > 0) {
+ url = `${url}&sFilterOrderBy=${encodeURIComponent(JSON.stringify(sFilterOrderBy))}`;
+ }
+ if (commonUtils.isNotEmptyArr(sGroupByList)) {
+ url = `${url}&sGroupList=${encodeURIComponent(JSON.stringify(sGroupByList))}`;
+ }
+ window.open(url);
+ };
+ /* 获取期初 */
+ handleGetPeriod = async () => {
+ const { sTbName } = this.props.masterConfig;
+ let sClomunType = '';
+ if (sTbName === 'cahsupplyinit') {
+ sClomunType = 'bAP';
+ } else if (sTbName === 'cahcustomerinit') {
+ sClomunType = 'bAR';
+ } else if (sTbName === 'cahcashierinit') {
+ sClomunType = 'bCashier';
+ }
+ const { sModelsId } = this.props;
+ const { token } = this.props.app;
+ const url = `${commonConfig.server_host}sysAccountPeriod/getSysAccountPeriod?sModelsId=${sModelsId}`;
+ const value = { sClientType: '1', sClomunType };
+ const { data } = await commonServices.postValueService(token, value, url);
+ if (data.code === 1) {
+ const [{ isSysAccountPeriod }] = data.dataset.rows;
+ this.props.onSaveState({
+ adDisabled: isSysAccountPeriod,
+ sClomunType,
+ });
+ } else {
+ this.props.getServiceError(data);
+ }
+ };
+ /* 设置期初 */
+ handleBtnSetPeriod = async () => {
+ const { sTbName } = this.props.masterConfig;
+ let sClomunType = '';
+ if (sTbName === 'cahsupplyinit') {
+ sClomunType = 'bAP';
+ } else if (sTbName === 'cahcustomerinit') {
+ sClomunType = 'bAR';
+ } else if (sTbName === 'cahcashierinit') {
+ sClomunType = 'bCashier';
+ }
+ const { sModelsId } = this.props;
+ const { token } = this.props.app;
+ const url = `${commonConfig.server_host}sysAccountPeriod/updateSysAccountPeriod?sModelsId=${sModelsId}`;
+ const value = { sClientType: '1', handleType: 'add', sClomunType };
+ const { data } = await commonServices.postValueService(token, value, url);
+ if (data.code === 1) {
+ message.success(data.msg);
+ this.props.onSaveState({ adDisabled: true, enabled: false });
+ } else {
+ this.props.getServiceError(data);
+ }
+ };
+ /* 解除锁定 */
+ handleBtnRelievePeriod = async () => {
+ const { sModelsId } = this.props;
+ const { token } = this.props.app;
+ const { sTbName } = this.props.masterConfig;
+ let sClomunType = '';
+ if (sTbName === 'cahsupplyinit') {
+ sClomunType = 'bAP';
+ } else if (sTbName === 'cahcustomerinit') {
+ sClomunType = 'bAR';
+ } else if (sTbName === 'cahcashierinit') {
+ sClomunType = 'bCashier';
+ }
+ const url = `${commonConfig.server_host}sysAccountPeriod/updateSysAccountPeriod?sModelsId=${sModelsId}`;
+ const value = { sClientType: '1', handleType: 'reset', sClomunType };
+ const { data } = await commonServices.postValueService(token, value, url);
+ if (data.code === 1) {
+ message.success(data.msg);
+ this.props.onSaveState({ adDisabled: false });
+ } else {
+ this.props.getServiceError(data);
+ }
+ };
+
+ handleTitleChange = (slavePagination, filters, sorter) => {
+ const { slaveConfig, slaveFilterCondition } = this.props;
+ const sort = sorter.order === 'ascend' ? 'asc' : 'desc';
+ const slaveOrderBy = Object.keys(sorter).length > 0 ? { [sorter.columnKey]: sort } : ''; // 后端未支持空对象, 先用空表示
+ this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slaveOrderBy);
+ };
+ handleTitleChangeEnabled = (slavePagination) => {
+ this.props.onSaveState({ slavePagination });
+ };
+ handleTableSelectRowChange = async (name, selectedRowKeys) => {
+ const {
+ [`${name}Data`]: tableData, sModelsType, sModelsId, token, masterConfig, enabled,
+ } = this.props;
+ if (commonUtils.isNotEmptyArr(selectedRowKeys)) {
+ if (sModelsType === 'commonClassfiy/salesMan') {
+ const addState = this.props.onTableSelectRowChange(name, selectedRowKeys, true);
+ const { [`${name}SelectedRowKeys`]: rowKeys } = addState;
+ for (const sId of rowKeys) {
+ const tableDataIndex = tableData.findIndex(item => item.sId === sId);
+ const sNameIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sName');/* 判断配置中是否有员工编号字段 */
+ if (tableDataIndex > -1 && sNameIndex > -1) {
+ const tableDataRow = JSON.parse(JSON.stringify(tableData[tableDataIndex]));
+ masterConfig.gdsconfigformslave[sNameIndex].iTag = 0; /* 默认是0 */
+ if (enabled && tableDataRow.handleType !== 'add') { /* 判断销售人员是否已被占用 */
+ const value = {
+ tableName: masterConfig.sTbName,
+ sId: [sId],
+ };
+ const url = `${commonConfig.server_host}business/addSysLocking?sModelsId=${sModelsId}`;
+ /* 接收返回值 */
+ const { data } = await commonServices.postValueService(token, value, url);
+ if (data.code === 1) {
+ const sNameIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sName');
+ masterConfig.gdsconfigformslave[sNameIndex].iTag = 1; /* ,已占用销售人员,员工不能修改 即下拉不可选 */
+ } else { /* 失败 */
+ this.props.getServiceError(data);
+ }
+ }
+ }
+ }
+ }
+ }
+ this.props.onTableSelectRowChange(name, selectedRowKeys);
+ }
+
+ render() {
+ return (
+
+ );
+ }
+ };
+};
diff --git a/src/mobile/common/CommobileComponent.js b/src/mobile/common/CommobileComponent.js
new file mode 100644
index 0000000..ccc2247
--- /dev/null
+++ b/src/mobile/common/CommobileComponent.js
@@ -0,0 +1,477 @@
+/* eslint-disable */
+import { List, InputItem, Picker, TextareaItem, DatePicker, Checkbox, Toast } from 'antd-mobile';
+import moment from 'moment';
+import React, { Component } from 'react';
+import { debounce } from 'lodash';
+import commonConfig from '../../utils/config';
+import * as commonUtils from '../../utils/utils';
+import styles from '../mobile.less';
+import iconSetting from '../../assets/mobile/setting.png';
+import scan from '../../assets/mobile/scanning.svg';
+
+
+// eslint-disable-next-line prefer-destructuring
+const CheckboxItem = Checkbox.CheckboxItem;
+const isIPhone = new RegExp('\\biPhone\\b|\\biPod\\b', 'i').test(window.navigator.userAgent);
+let moneyKeyboardWrapProps;
+if (isIPhone) {
+ moneyKeyboardWrapProps = {
+ onTouchStart: e => e.preventDefault(),
+ };
+}
+
+export default class CommonComponent extends Component {
+ /** 构造函数 */
+ constructor(props) {
+ super(props);
+ this.state = {
+ dataValue: props.dataValue, /* 本showType数据 */
+ enabled: props.enabled, /* 是否是查看状态(数据格式:布尔) */
+ dropDownData: [],
+ // eslint-disable-next-line react/no-unused-state
+ bReGetDropDown: false,
+ bOpenKeyboard : props.bOpenKeyboard,
+
+ };
+ this.firstDataIndex = props.showConfig.sName.substring(0, 1); /* 控件首字母(数据格式:字符串) */
+ this.max = commonUtils.convertStrToNumber(props.showConfig.sMaxValue); /* 最大值(数据格式:数字) */
+ this.min = commonUtils.convertStrToNumber(props.showConfig.sMinValue); /* 最小值(数据格式:数字) */
+ this.getFieldProps = props.form.getFieldProps;
+ }
+
+ /** 渲染前只执行一次 */
+ componentWillMount() {
+ this.mounted = true;
+ /* 如果是下拉控件,则要获取数据 */
+ if ((this.props.showConfig.sDropDownType === 'sql' || this.props.showConfig.sDropDownType === 'const')
+ && (this.firstDataIndex === 'i' || this.firstDataIndex === 'd' || this.firstDataIndex === 's')) {
+ this.getDropDownData(this.props);
+ }
+ }
+
+ /** props改变的时候触发 */
+ componentWillReceiveProps(nextProps) {
+ const {
+ dataValue, enabled, sFieldName, bNotEmpty, masterData, dropDownData,
+ } = this.state;
+ if ((nextProps.showConfig.sDropDownType === 'sql') && (this.firstDataIndex === 'i' || this.firstDataIndex === 'd' || this.firstDataIndex === 's')) {
+ let newDropDownData = commonUtils.getStoreDropDownData(this.props.formId, this.props.name, this.props.showConfig.sName);
+ if (nextProps.onFilterDropDownData && !commonUtils.isEmptyStr(nextProps.showConfig.sSqlCondition)) {
+ if (!commonUtils.isEmpty(nextProps.showConfig.sChineseDropDown)) {
+ const conditon = nextProps.showConfig.sSqlCondition.split(',');
+ const fieldName = conditon[0].indexOf('.') > -1 ? conditon[0].split('.')[1] : '';
+ // #参数# SQL where条件过滤数据 *参数* 去除单引号 用于like处理
+ if (!nextProps.showConfig.sChineseDropDown.includes(`#${fieldName}`) && !nextProps.showConfig.sChineseDropDown.includes(`*${fieldName}`)) {
+ newDropDownData = nextProps.onFilterDropDownData(newDropDownData, nextProps.showConfig, nextProps.name, nextProps.record);
+ }
+ }
+ }
+ if (this.mounted && !nextProps.showConfig.bReGetDropDown && nextProps.showConfig.dropDownData !== undefined && JSON.stringify(newDropDownData) !== JSON.stringify(nextProps.showConfig.dropDownData)) {
+ let newData = nextProps.showConfig.dropDownData;
+ if (nextProps.onFilterDropDownData && !commonUtils.isEmptyStr(nextProps.showConfig.sSqlCondition)) {
+ if (!commonUtils.isEmpty(nextProps.showConfig.sChineseDropDown)) {
+ const conditon = nextProps.showConfig.sSqlCondition.split(',');
+ const fieldName = conditon[0].indexOf('.') > -1 ? conditon[0].split('.')[1] : '';
+ if (!nextProps.showConfig.sChineseDropDown.includes(`#${fieldName}`) && !nextProps.showConfig.sChineseDropDown.includes(`*${fieldName}`)) {
+ newData = newDropDownData;
+ }
+ }
+ }
+ this.setState({
+ dropDownData: newData,
+ });
+ } else if (JSON.stringify(newDropDownData) !== JSON.stringify(dropDownData) || this.props.showConfig.sId !== nextProps.showConfig.sId || nextProps.showConfig.bReGetDropDown || nextProps.showConfig.sSqlCondition !== '') {
+ if (commonUtils.isEmptyArr(newDropDownData) || this.props.showConfig.sId !== nextProps.showConfig.sId) {
+ } else if (this.mounted) {
+ this.setState({
+ dropDownData: newDropDownData,
+ });
+ }
+ }
+ } else if ((nextProps.showConfig.sDropDownType === 'const') && (this.firstDataIndex === 'i' || this.firstDataIndex === 'd' || this.firstDataIndex === 's')) {
+ if (nextProps.showConfig.dropDownData !== undefined && JSON.stringify(this.state.dropDownData) !== JSON.stringify(nextProps.showConfig.dropDownData)) {
+ if (this.mounted) {
+ this.setState({
+ dropDownData: nextProps.showConfig.dropDownData,
+ });
+ }
+ }
+ }
+
+ if (dataValue !== nextProps.dataValue || enabled !== nextProps.enabled || bNotEmpty !== nextProps.showConfig.bNotEmpty || sFieldName !== nextProps.showConfig.sName ||
+ JSON.stringify(masterData) !== JSON.stringify(nextProps.masterData)) {
+ this.firstDataIndex = nextProps.showConfig.sName.substring(0, 1); /* 控件首字母(数据格式:字符串) */
+ if (this.mounted) {
+ this.setState({
+ dataValue: nextProps.dataValue,
+ enabled: nextProps.enabled,
+ sFieldName: nextProps.showConfig.sName,
+ bNotEmpty: nextProps.showConfig.bNotEmpty,
+ masterData: nextProps.masterData,
+ bOpenKeyboard: nextProps.bOpenKeyboard,
+ });
+ }
+ }
+ }
+
+ shouldComponentUpdate(nextProps, nextState) {
+ const {
+ dataValue, enabled, dropDownData, sFieldName, bNotEmpty, masterData,
+ } = this.state;
+ // console.log('bOpenKeyboard:', nextProps.bOpenKeyboard);
+ if(nextProps.bOpenKeyboard !==undefined) {
+ return true;
+ }
+ return nextProps.showConfig !== undefined && (dataValue !== nextState.dataValue || enabled !== nextState.enabled ||
+ sFieldName !== nextState.sFieldName || bNotEmpty !== nextState.bNotEmpty || JSON.stringify(dropDownData) !== JSON.stringify(nextState.dropDownData) ||
+ JSON.stringify(masterData) !== JSON.stringify(nextState.masterData));
+ }
+
+ componentWillUnmount() {
+ this.mounted = false;
+ }
+
+ /** 获取下拉值 */
+ getDropDownData = async (props, bReGetDropDown) => {
+ /** 下拉类型区分
+ 1、判断是否直接传下拉,如果传了就直接用,并存储到store中去
+ 2、没有传看 getStoreDropDownData有没有存储,存储后直接取用
+ 3、 没有存储时直接调用后台SQL语句去下拉 */
+ if (props.showConfig.sDropDownType === 'sql') { /* 数据下拉 */
+ let { dropDownData } = props.showConfig;
+ if (commonUtils.isEmptyArr(dropDownData)) {
+ dropDownData = commonUtils.getStoreDropDownData(props.formId, props.name, props.showConfig.sName);
+ if (commonUtils.isEmptyArr(dropDownData) || bReGetDropDown) {
+ dropDownData = await props.getSqlDropDownData(props.formId, props.name, props.showConfig, props.record);
+ }
+ } else {
+ commonUtils.setStoreDropDownData(props.formId, props.name, props.showConfig.sName, dropDownData);
+ }
+ if (this.mounted) {
+ const { sSqlCondition } = props.showConfig;
+ if (props.onFilterDropDownData && !commonUtils.isEmptyStr(sSqlCondition)) {
+ if (!commonUtils.isEmpty(props.showConfig.sChineseDropDown)) {
+ const conditon = props.showConfig.sSqlCondition.split(',');
+ const fieldName = conditon[0].indexOf('.') > -1 ? conditon[0].split('.')[1] : '';
+ if (!props.showConfig.sChineseDropDown.includes(`#${fieldName}`) && !props.showConfig.sChineseDropDown.includes(`*${fieldName}`)) {
+ dropDownData = await props.onFilterDropDownData(dropDownData, props.showConfig, props.name, props.record);
+ }
+ }
+ }
+ this.setState({
+ dropDownData,
+ // eslint-disable-next-line react/no-unused-state
+ isDropDownLoadFinish: true,
+ // eslint-disable-next-line react/no-unused-state
+ bReGetDropDown: false,
+ });
+ }
+ } else if (props.showConfig.sDropDownType === 'const') { /* 常量下拉 */
+ /* 常量下拉其实只取一次数据就可以啦,去过数据的会给state中的dropDownData赋值,所以dropDownData有值的情况就不需要再获取了 */
+ if (commonUtils.isEmptyArr(this.state.dropDownData) || JSON.stringify(this.state.dropDownData) !== JSON.stringify(props.showConfig.showDropDown)) {
+ /* 把常量下拉对象转换成数组格式来适配(最终state中dropDownData的值都是数组对象的形式) */
+ let showDropDown;
+ if (typeof props.showConfig.showDropDown === 'object') {
+ // eslint-disable-next-line prefer-destructuring
+ showDropDown = props.showConfig.showDropDown;
+ } else {
+ showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(props.showConfig.showDropDown));
+ }
+ /* 给state赋值 */
+ if (this.mounted) {
+ this.setState({
+ dropDownData: showDropDown,
+ // eslint-disable-next-line react/no-unused-state
+ isDropDownLoadFinish: true,
+ });
+ }
+ }
+ }
+ };
+
+ /** 获取selectOption对象 */
+ getSelectOption = () => {
+ /* 返回值声明 */
+ const options = [];
+ /* 执行条件 */
+ if (commonUtils.isNotEmptyArr(this.state.dropDownData)) {
+ /* 遍历下拉数据 */
+ for (const each of this.state.dropDownData) {
+ if (commonUtils.isNotEmptyObject(each)) {
+ /* 拼接optoin对象 */
+ let keyValue = !commonUtils.isEmpty(each.sSlaveId) ? each.sSlaveId : each.sId;
+ if (this.firstDataIndex === 'i') {
+ // eslint-disable-next-line radix
+ keyValue = parseInt(keyValue);
+ } else if (this.firstDataIndex === 'd') {
+ keyValue = parseFloat(keyValue);
+ }
+ /* 返回值赋值 */
+ options.push({ label: this.getOptionValues(each), value: keyValue });
+ }
+ }
+ }
+
+ /* 下拉空处理 */
+ if (this.props.showConfig.bFirstEmpty) {
+ options.push({ label: ' ', value: '=+@' });/* 解决销售订单-产品名称,五笔输入法输入不支持直接输入中文 */
+ }
+ /* 下拉新增处理 */
+ if (this.props.showConfig.bNewRecord) {
+ options.unshift({ label: 'NEW RECORD', value: '000' });
+ }
+ /* 返回值 */
+ return options;
+ };
+
+ /** 获取optionValue对象 */
+ getOptionValues = (data) => {
+ /* 返回值声明 */
+ let res = '';
+ /* 计数器 */
+ let count = 1;
+ /* 遍历每一条数据 */
+ const iVisCount = commonUtils.isEmpty(this.props.showConfig.iVisCount) || this.props.showConfig.iVisCount === 0 ? 1 : this.props.showConfig.iVisCount;
+ if (commonUtils.isNotEmptyStr(this.props.showConfig.sVisColumnName)) {
+ res = data[this.props.showConfig.sVisColumnName];
+ } else {
+ for (const key of Object.keys(data)) {
+ /* 这里主要是为了实现配置中控制下拉的展现列数 */
+ if (count <= iVisCount && key !== 'sId') {
+ if (res === '') {
+ res = data[key];
+ } else {
+ res = res.concat('-').concat(data[key]);
+ }
+ count += 1;
+ }
+ }
+ }
+ /* 返回值 */
+ return res;
+ };
+
+ /** 处理下拉选择事件 */
+ handleSelectOptionEvent = (newValue) => {
+ /* 下拉新增单独处理 */
+ let value = newValue;
+ this.isDropdownFilter = true;
+ if (this.props.showConfig.sDropDownType === 'sql' && value === '000') {
+ this.props.handleSqlDropDownNewRecord(this.props.showConfig, this.props.name);
+ if (this.mounted) {
+ // eslint-disable-next-line react/no-unused-state
+ this.setState({ bReGetDropDown: true, dataValue: '' });
+ }
+ return;
+ }
+ if (this.props.showConfig.sDropDownType === 'sql' && value === '=+@') { /* 如果是选择空值,则将特殊字符过滤为空值 */
+ value = '';
+ }
+ if (this.props.showConfig.sDropDownType === 'const' && value !== undefined && Array.isArray(value)) { /* const下拉 默认value [value]形式,需手动去掉[] */
+ [value] = newValue;
+ }
+ if (this.props.showConfig.sDropDownType === 'sql' && value !== undefined && Array.isArray(value) && commonUtils.isNotEmptyObject(this.props.showConfig.sName) && (this.props.showConfig.sName.includes('sParamValue') || this.props.showConfig.sName.includes('sActValue'))) { /* Picker组件 默认[value]形式,需手动去掉[] */
+ [value] = newValue;
+ }
+ /* 回带值声明 */
+ const returnValue = {};
+ /* 回带值赋值(sName:value) */
+ returnValue[this.props.showConfig.sName] =
+ // eslint-disable-next-line radix
+ this.firstDataIndex === 'i' ? commonUtils.isEmpty(value) ? undefined : parseInt(value) :
+ this.firstDataIndex === 'd' ? commonUtils.isEmpty(value) ? '' : this.floatNumberCheck(value) :
+ this.firstDataIndex === 't' ? commonUtils.isEmpty(value) ? null : value :
+ this.firstDataIndex === 'b' ? value.target.checked : value === null ? undefined : value;
+ const { sAssignField } = this.props.showConfig;
+ const [changeData] = this.state.dropDownData.filter(item => (!commonUtils.isEmpty(item.sSlaveId) ? item.sSlaveId : item.sId) === value.toString());
+ if (!commonUtils.isEmpty(sAssignField)) {
+ /* 赋值数组 */
+ const sAssignFieldObj = sAssignField.split(',');
+ if (commonUtils.isNotEmptyObject(changeData)) {
+ for (const child of sAssignFieldObj) {
+ if (child.indexOf(':') > -1) {
+ const sFieldName = child.split(':')[0].trim();
+ const sValueName = child.split(':')[1].trim();
+ returnValue[sFieldName] = changeData[sValueName];
+ }
+ }
+ } else if (!this.props.showConfig.bCanInput) {
+ // 下拉选择空时,需要, bCanInput一定要为false不然印件名称输入时也被置空了
+ for (const child of sAssignFieldObj) {
+ if (child.indexOf(':') > -1) {
+ const sFieldName = child.split(':')[0].trim();
+ returnValue[sFieldName] = '';
+ }
+ }
+ }
+ }
+ /* 调用父组件的回带函数 */
+ this.props.onChange(this.props.name, this.props.showConfig.sName, returnValue, this.props.sId, this.state.dropDownData);
+ };
+
+ handleFocus = () => {
+ if(this.props.onFocus) {
+ this.props.onFocus(this.props.showConfig);
+ }
+ }
+
+ handleBlur = () => {
+ if(this.props.onBlur) {
+ this.props.onBlur(this.props.showConfig);
+ }
+ }
+
+ /**
+ * 小数校验
+ */
+ floatNumberCheck = (num) => {
+ const checkRule = /^(-?\d+)(\.?)(\d{1,6})?$/;
+ if (!checkRule.test(num) && num && num !== '-' && num !== '.') {
+ Toast.fail('最多输入6位小数!');
+ return undefined;
+ } else {
+ return num;
+ }
+ }
+
+ // noinspection JSAnnotator
+ // limitDecimals = (value) => {
+ // return commonUtils.filterDisNumberN(value, this.floatNum);
+ // };
+ // noinspection JSAnnotator
+ /** 小数位控制 noinspection JSAnnotator控制 string | number */
+ limitDecimals = (values) => {
+ let reg = '';
+ if (this.floatNum > 0) {
+ reg = `^(\\d+).(${this.floatPrice})*$`;
+ } else {
+ reg = '^(\\d+).(\\d\\d\\d\\d\\d\\d)*$';
+ }
+ if (typeof values === 'string') {
+ if (values !== undefined && values.indexOf('.') <= -1) {
+ reg = '^(\\d+)*$';
+ return !isNaN(Number(values)) ? values.replace(new RegExp(reg), '$1') : '';
+ } else {
+ return !isNaN(Number(values)) ? values.replace(new RegExp(reg), '$1.$2') : '';
+ }
+ } else if (typeof values === 'number') {
+ if (values !== undefined && String(values).indexOf('.') <= -1) {
+ reg = '^(\\d+)*$';
+ return !isNaN(values) ? String(values).replace(new RegExp(reg), '$1') : '';
+ } else {
+ return !isNaN(values) ? String(values).replace(new RegExp(reg), '$1.$2') : '';
+ }
+ } else {
+ return '';
+ }
+ };
+
+ cancelValue = () => {
+ const bClear = this.props.showConfig.sName!=='sLocationId' && this.props.showConfig.sName!=='sLocationNo' && this.props.showConfig.sName!=='sLocationName';
+ if(bClear) {
+ if (this.inputRef) this.inputRef.clearInput();
+ }
+ }
+
+ handleFieldScan = (newValue) => {
+ if (!newValue.trim()) return;
+ this.props.onFieldScan(this.props.showConfig, this.props.name, this.props.record, newValue, this.cancelValue);
+ }
+
+
+ handleMobileScan = () => {
+ this.props.onMobileScan(this.props.showConfig, this.props.name, this.props.record);
+ }
+
+ /** 渲染 */
+ render() {
+ const { sDateFormat: sDateFormatOld, sFieldValidation, bNotEmpty, bOpenKeyboard } = this.props.showConfig;
+ let newValue = this.props.dataValue;
+ if(commonUtils.isNotEmptyObject(sFieldValidation)) {
+ const [length1, length2] = commonUtils.isNotEmptyObject(sFieldValidation) ? sFieldValidation.split(',') :[];
+ if (length2 !== undefined) {
+ newValue = commonUtils.convertFixNum(this.props.dataValue, Number(length2));
+ }
+ }
+ let sTitle = this.props.showConfig.showName;
+ if (bNotEmpty) { /* 必填加星号 */
+ sTitle = * {this.props.showConfig.showName}
;
+ }else {
+ sTitle = {this.props.showConfig.showName}
;
+ }
+ const outFormItemProps = {
+ ...this.getFieldProps(this.props.showConfig.sName),
+ placeholder: this.props.showConfig.placeholder || '请输入',
+ value: newValue,
+ onChange: this.handleSelectOptionEvent, /* 数据改变回带到父组件 */
+ disabled: !this.state.enabled,
+ };
+ if (this.props.showConfig.bNotSearch && !bOpenKeyboard) {
+ outFormItemProps.virtualkeyboardpolicy = 'manual';
+ outFormItemProps.inputmode = commonConfig.sMode === 1 ? 'none' : commonConfig.sMode === 2 ? 'numeric' : commonConfig.sMode === 3 ? 'search' : 'text';
+ }
+ let input = '';
+ const isText = commonUtils.isNotEmptyObject(this.props.record) ? this.props.record.isText : false; /* 下拉框情况下 若record的isText为true则不渲染下拉框 */
+ if ((this.props.showConfig.sDropDownType === 'sql' || this.props.showConfig.sDropDownType === 'const')
+ && (this.firstDataIndex === 'i' || this.firstDataIndex === 'd' || this.firstDataIndex === 's') && !isText) { /* 下拉选择框(数字和文本选择框才会下拉) */
+ outFormItemProps.value = commonUtils.isEmpty(this.props.dataValue) ? [''] : [this.props.dataValue]; /* i、d也须是[this.props.dataValue],否则会选择不上去 */
+ outFormItemProps.onVisibleChange = (visible) => {
+ if (!visible) return;
+ Toast.loading('加载中 ....', 0);
+ this.getDropDownData(this.props, false).finally( () => {
+ Toast.hide();
+ });
+ }
+ input = (
+
+
+ {this.props.iconSettingShow ?
+ // eslint-disable-next-line jsx-a11y/alt-text
+
: ''}
+ {sTitle}
+
+
+ );
+ } else if (this.firstDataIndex === 's') {
+ if (this.props.textArea) { /* 大文本输入框 */
+ input = ();
+ } else {
+ const pdaPro = {
+ disabled: !this.state.enabled,
+ placeholder: this.props.showConfig.placeholder || '请输入或扫码',
+ onFocus:this.handleFocus,
+ virtualkeyboardpolicy: 'manual',
+ inputmode: 'none',
+ };
+ // if(commonUtils.isNotEmptyObject(this.props.showConfig.sControlName) && this.props.showConfig.sControlName?.includes('Self')) {
+ // pdaPro.value = newValue;
+ // }
+ // console.log('bOpenKeyboard',this.props.showConfig.sName, bOpenKeyboard);
+ const is_Pda = this.props.showConfig.sControlName && this.props.showConfig.sControlName.includes('_pda');
+ const pdaInput = { this.inputRef = el; }} clear onChange={debounce(this.handleFieldScan, 1000)} >{sTitle};
+ const is_Scan = this.props.showConfig.sControlName && this.props.showConfig.sControlName.includes('_scan');
+ if (is_Pda) {
+ input = pdaInput;
+ } else if (is_Scan) {
+ input = {sTitle}
;
+ } else {
+ input = ({sTitle});
+ }
+ }
+ } else if (this.firstDataIndex === 'd') {
+ outFormItemProps.moneyKeyboardAlign = 'left';
+ outFormItemProps.moneyKeyboardWrapProps = moneyKeyboardWrapProps;
+ input = ({sTitle});
+ } else if (this.firstDataIndex === 't') {
+ outFormItemProps.value = new Date(moment(this.state.dataValue).year(), moment(this.state.dataValue).month(), moment(this.state.dataValue).date());
+ input = ({sTitle});
+ } else if (this.firstDataIndex === 'b') {
+ input = ({this.props.showConfig.showName});
+ }
+ return (
+
+ {input}
+
+ );
+ }
+}
diff --git a/src/mobile/common/CommobileList.js b/src/mobile/common/CommobileList.js
new file mode 100644
index 0000000..76406c0
--- /dev/null
+++ b/src/mobile/common/CommobileList.js
@@ -0,0 +1,410 @@
+/* eslint-disable */
+/* eslint-disable prefer-destructuring */
+/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */
+import React from 'react';
+import { ListView, Checkbox, Modal, Toast, Flex } from 'antd-mobile';
+import { createForm } from 'rc-form';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import commonConfig from '../../utils/config';
+import * as commonUtils from '../../utils/utils';
+import CommobileBase from '../../mobile/common/CommobileBase';
+import CommobileListEvent from './CommobileListEvent';
+import CommobileSearchComponent from './CommobileSearchComponent';
+import CommobileToolBar from './CommobileToolBar';
+import CommonbileStep from './CommobileStep';
+import styles from '../mobile.less';
+import preView from '../components/preView';
+
+const CheckboxItem = Checkbox.CheckboxItem;
+const AgreeItem = Checkbox.AgreeItem;
+
+const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+});
+
+class CommobileList extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ isLoading: false,
+ partNameStatusVisible: false, /* 查看进度 */
+ sSlaveId: '',
+ };
+ }
+
+ onEndReached = async () => {
+ if ((this.props.slavePagination.current + 1) <= Math.ceil(this.props.slavePagination.total / commonConfig.pageSize)) {
+ const { slaveFilterCondition } = this.props;
+ const addState = await this.props.onGetData(this.props.slaveConfig, slaveFilterCondition, this.props.slavePagination.current + 1, true);
+ addState.slaveData = this.props.slaveData.concat(addState.slaveData);
+ this.props.onSaveState({ ...addState });
+ }
+ }
+ onClose = key => () => {
+ this.setState({
+ [key]: false,
+ });
+ }
+ onModalShow = key => () => {
+ this.setState({
+ [key]: true,
+ });
+ }
+ handlePartNameStatusLook=(sSlaveId) => {
+ if (commonUtils.isNotEmptyObject(sSlaveId)) {
+ this.setState({
+ partNameStatusVisible: true,
+ sSlaveId,
+ });
+ } else {
+ Toast.fail('请选择要查看的工单', 1);
+ }
+ }
+ /* 列表弹出详情 */
+ handleDoubleClick=(rowData) => {
+ this.props.onDoubleClick(rowData);
+ }
+
+ padTitles = (titles) =>{
+ return titles.padEnd(4, ' ') + ':';
+ }
+ // topHeight = (value) => {
+ // let subHeight = 0;
+ // if ( value % 2 === 0 ) {
+ // subHeight = ( value / 2 ) * 22;
+ // } else {
+ // subHeight = (Math.floor(value / 2) + 1) * 22;
+ // }
+ // return subHeight;
+ // }
+
+ render() {
+ const {
+ slaveConfig, slaveData: slaveDataOld, slaveTotal, slaveSelectedRowKeys: slaveSelectedRowKeysOld, onReturnForm,
+ } = this.props;
+ onReturnForm(this.props.form);
+ const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+ const slaveSelectedRowKeys = slaveSelectedRowKeysOld === undefined ? [] : slaveSelectedRowKeysOld;
+ const f1 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '')[0];
+ const f2 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '')[1];
+ const f3 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '')[2];
+ const f4 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '')[3];
+ const f5 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '')[4];
+ const f6 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'printPdf')[0];
+ const f7 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName === 'sPartNameStatus')[0]; /* 查看进度 */
+ const separator = (sectionID, rowID) => (
+
+ );
+ const row = (rowData, sectionID, rowID) => {
+ const obj = JSON.parse(JSON.stringify(rowData)); // 深拷贝
+ if (commonUtils.isNotEmptyObject(f7)) {
+ // eslint-disable-next-line jsx-a11y/anchor-is-valid
+ obj[f7.sName] = (查看工单状态);
+ }
+ const f1View = f1 ?
+ (
+
+ {f1.showName}:{obj[f1.sName]}
+ {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}
+ {obj[f2.sName]}
+
+ ) : '';
+
+ return (
+
+
+ {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ onClick={() => this.props.onCopyToClick(rowData)} */}
+ {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}
+
this.handleDoubleClick(rowData)} >
+ {
+ true ?
+
+
item === rowData.sSlaveId) > -1}
+ onChange={e => this.props.onCheckboxChange(e, rowData.sSlaveId)}
+ style={{
+ width: f6 ? '76%' : '100%',
+ marginRight: 0,
+ lineHeight: '30px',
+ color: '#888',
+ fontSize: 16,
+ fontWeight: 'bold',
+ borderBottom: '1px solid #F6F6F6',
+ }}
+ >
+
+ {f1 ? `${f1.showName}:` : ''}{obj[f1.sName]}
+ { f6 ? '' : f2 ? {obj[f2.sName]} : ''}
+
+ {
+ // eslint-disable-next-line jsx-a11y/anchor-is-valid
+ f6 ?
+
: ''
+ }
+
: f1View
+ }
+ {f3 ?
+
+
+
+ {/* { f6 ? f2 ? */}
+ {/* '' : '' : ''} */}
+ {/*
{f3.showName}:{obj[f3.sName]}
*/}
+ {/*
*/}
+ {/* {f4 ? */}
+ {/*
*/}
+ {/*
{f4.showName}:
*/}
+ {/*
{obj[f4.sName]}
*/}
+ {/*
: '' */}
+ {/* } */}
+ {/* {f5 ? */}
+ {/*
*/}
+ {/* { */}
+ {/* f6 ? */}
+ {/* {obj[f5.sName]} : */}
+ {/* {obj[f5.sName]} */}
+ {/* } */}
+ {/*
: '' */}
+ {/* } */}
+ {/*
*/}
+ {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((item, iIndex) => {
+ if (iIndex > 1) {
+ /**
+ * 修改日期:2021-04-06
+ * 修改人:吕杰
+ * 区域:以下 - 行
+ * BUG:1144
+ * 说明:现实缩略图,点击展示预览弹窗
+ * 原代码:
+ */
+ const bNotViewTitle = item.bNotViewTitle; /* 不显示标题 */
+ const sMemo = item.sName.toLowerCase().endsWith('memo');
+ const iRowNum = item.iColValue === 1 ? 24 : 1; /* 每个字段占的网格个数 ,网格总个数是24 */
+ const iColValue = sMemo ? 24 : item.iColValue * iRowNum; /* 跨度 */
+ const iRowValue = commonUtils.isEmptyNumber(item.iRowValue) || item.iRowValue === 0 ? 1 : item.iRowValue ; /* 行高 */
+ const height = iRowValue * 18 ; /* 行高 */
+ const { token } = this.props.app;
+ const dataUrl = []; /* 缩略图 */
+ if ((item.showName === '缩略图' || item.sName === 'spicture') && obj[item.sName]) {
+ obj[item.sName].split(',').forEach(url => dataUrl.push(`${commonConfig.file_host}file/download?savePathStr=${url}&sModelsId=100&token=${token}`));
+ }
+ if (dataUrl.length) {
+ // eslint-disable-next-line
+ return (
{item.showName}:
preView(dataUrl, e)} src={dataUrl[0]} alt="img" style={{ width: '30px', height: '20px' }} />);
+ }
+ const targetConfig = slaveConfig.gdsconfigformslave.filter(item2 => item2.sName === item.sName)[0];
+ const customColor = targetConfig.sColorTerms ? targetConfig.sColorTerms : '#000';
+ return (
+
+
+ {
+ bNotViewTitle ?
+ <> {obj[item.sName]}>
+ :
+ <>{item.showName}
:
{obj[item.sName]}>
+ }
+
+
+ );
+ } else {
+ return ('');
+ }
+ })}
+
+
+
: ''
+ }
+
+
+ );
+ };
+ const BtnStyle = {
+ type: 'default',
+ color: 'red',
+ border: 'none',
+ backgroundColor: '#fff',
+ fontSize: '15px',
+ };
+ const divStyle = {
+ display: 'flex',
+ justifyContent: 'flex-end',
+ background: '#fff',
+ };
+ const stepProps = {
+ ...this.props,
+ sSlaveId: this.state.sSlaveId,
+ };
+ return (
+
+
+
+ {commonUtils.isEmptyArr(slaveTotal) ? '' : Object.keys(slaveTotal[0]).map((key) => {
+ const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === key);
+ if (iIndex > -1) {
+ return (
+
+ {`${slaveConfig.gdsconfigformslave[iIndex].showName}:${commonUtils.convertFixNum(commonUtils.convertStrToNumber(slaveTotal[0][key]), this.props.getFloatNum(key))}`}
+
+ );
+ } else {
+ return ('');
+ }
+ })}
+
+
+
+
+
+
+
(
+
+ {this.state.isLoading ? '加载中...' : '加载完毕'}
+
)}
+ renderRow={row}
+ renderSeparator={separator}
+ style={{
+ position: 'absolute',
+ width: '100%',
+ bottom: commonUtils.isEmptyObject(slaveConfig) ? 88 : 135,
+ top: 0,
+ overflow: 'auto',
+ }}
+ pageSize={commonConfig.pageSize}
+ onScroll={() => {}}
+ scrollRenderAheadDistance={500}
+ onEndReached={this.onEndReached}
+ onEndReachedThreshold={10}
+ />
+
+
+ {
+ commonUtils.isEmptyObject(slaveConfig) ? '' :
+ true ?
+
+ {/*
this.props.onSelectAllClick(e)}*/}
+ {/* style={{*/}
+ {/* background: '#fff',*/}
+ {/* zIndex: '99999',*/}
+ {/* width: '25%',*/}
+ {/* display: 'flex',*/}
+ {/* justifyContent: 'flex-start',*/}
+ {/* alignItems: 'cneter',*/}
+ {/* }}*/}
+ {/*>*/}
+ {/* 全选*/}
+ {/**/}
+
+
+
+
: ''
+ }{ f7 && commonUtils.isNotEmptyObject(this.state.sSlaveId) ?
+
{ }}
+ >
+
+ {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}
+
<
+ 工单状态
+
+
+ : ''
+ }
+
+ );
+ }
+}
+
+const CommobileListComponent = createForm()(CommobileList);
+
+export default CommobileBase(CommobileListEvent(CommobileListComponent));
diff --git a/src/mobile/common/CommobileListEvent.js b/src/mobile/common/CommobileListEvent.js
new file mode 100644
index 0000000..5756b82
--- /dev/null
+++ b/src/mobile/common/CommobileListEvent.js
@@ -0,0 +1,626 @@
+/* eslint-disable prefer-destructuring */
+/**
+ * Created by mar105 on 2019-03-27.
+ */
+import React, { Component } from 'react';
+import { Toast, Modal, TextareaItem, List } from 'antd-mobile';
+import { history } from 'umi';
+import * as commonUtils from '../../utils/utils'; /* 通用方法 */
+import commonConfig from '../../utils/config';
+import * as commonFunc from '../../components/Common/commonFunc';
+import * as commonServices from '../../services/services';
+
+const alert = Modal.alert;
+
+export default (ChildComponent) => {
+ return class extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ textAreaContent: '',
+ };
+ }
+
+ async componentWillReceiveProps(nextProps) {
+ const {
+ formData, formRoute,
+ } = nextProps;
+ const {
+ slaveConfig: slaveConfigOld, searchSolution, returnFilterCondition, returnFilterName, sModelsType,
+ } = nextProps;
+ if (commonUtils.isEmptyObject(slaveConfigOld) && formData.length > 0 && (searchSolution !== undefined || nextProps.bNotSearch
+ )) {
+ /* 数据Id */
+ const slaveConfig = formData[0];
+ let filterCondition = [];
+ let iIndex = searchSolution?.findIndex(item => item.bDefault) || -1;
+ iIndex = iIndex > -1 ? iIndex : commonUtils.isEmptyArr(searchSolution) ? -1 : 0;
+ if (iIndex > -1 && !commonUtils.isEmpty(searchSolution[iIndex].sCondition)) {
+ filterCondition = JSON.parse(searchSolution[iIndex].sCondition);
+ }
+ if (commonUtils.isNotEmptyArr(returnFilterCondition)) {
+ filterCondition = returnFilterCondition;
+ }
+ let addState = await this.handleGetData(slaveConfig, filterCondition, 1, true);
+ /* 如果是内部报工单据回刷过来的数据,则需要判断结果集是否有值;若没值 则清空搜索框的内容 查询全部数据 */
+ if (commonUtils.isNotEmptyArr(returnFilterCondition) && sModelsType === 'mobile/productionReport') {
+ if (commonUtils.isNotEmptyObject(addState)) {
+ const slaveData = addState.slaveData;
+ if (commonUtils.isEmptyArr(slaveData)) {
+ const iRemoveIndex = filterCondition.findIndex(item => item.bFilterName === returnFilterName);
+ if (iRemoveIndex > -1) {
+ filterCondition[iRemoveIndex].bFilterValue = '';
+ returnFilterCondition[iRemoveIndex].bFilterValue = '';
+ addState = await this.handleGetData(slaveConfig, filterCondition, 1, true); /* 若结果集查出来没有数据 则查询全部数据 */
+ addState.clearSearchValue = true; /* 清除搜索框数字 */
+ }
+ } else {
+ addState.clearSearchValue = false; /* 清除搜索框数字 */
+ }
+ }
+ }
+
+ this.props.onSaveState({
+ masterConfig: slaveConfig,
+ slaveConfig,
+ pageLoading: false,
+ masterData: { bCheck: true },
+ ...addState,
+ });
+ }
+ if (formRoute === '/myself') {
+ if (commonUtils.isEmptyObject(slaveConfigOld) && formData.length > 0) {
+ const slaveConfig = formData[0];
+ const isWait = true;
+ const addState = (await this.props.handleGetDataSet({
+ name: 'slave',
+ configData: slaveConfig,
+ condition: {},
+ isWait,
+ }));
+ addState.slaveConfig = slaveConfig;
+ this.props.onSaveState({ ...addState });
+ }
+ }
+ }
+
+
+ shouldComponentUpdate(nextProps) {
+ const { slaveConfig } = nextProps;
+ return commonUtils.isNotEmptyObject(slaveConfig);
+ }
+
+ /** 获取表数据 */
+ handleGetData = async (slaveConfig, slaveFilterCondition, page, isWait) => {
+ const { conditonValues } = this.props;
+ const pageNum = commonUtils.isEmpty(page) ? 1 : page;
+ const bFilter = [];
+ if (commonUtils.isEmptyArr(slaveFilterCondition)) {
+ const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.bFind);
+ if (iIndex > -1) {
+ bFilter.push({ bFilterName: slaveConfig.gdsconfigformslave[iIndex].sName, bFilterCondition: 'like', bFilterValue: '' });
+ }
+ } else {
+ bFilter.push(...slaveFilterCondition);
+ }
+ if (this.props.sModelsId === '101251240115015881530120160' && !commonUtils.isEmpty(this.props.app.sMachineId)) { // 待产量上报
+ bFilter.push({
+ bFilterName: 'sMachineId_s_pro',
+ bFilterCondition: '=',
+ bFilterValue: this.props.app.sMachineId,
+ });
+ }
+ const condition = { pageNum, pageSize: commonConfig.pageSize, bFilter };
+ if (commonUtils.isNotEmptyObject(conditonValues)) {
+ condition.sSqlCondition = conditonValues;
+ }
+ const addState = (await this.props.handleGetDataSet({
+ name: 'slave',
+ configData: slaveConfig,
+ condition,
+ isWait,
+ }));
+ return addState;
+ };
+
+ handleCopyToClick = async (name) => {
+ const {
+ slaveConfig, dispatch, slaveFilterCondition, slavePagination, slaveOrderBy, app, slaveData, slaveSelectedRowKeys, token, sModelsId, formRoute, sModelsType,
+ } = this.props;
+ const copyToConfig = slaveConfig.gdsconfigformslave.filter(item => (item.sControlName.includes(name)));
+ const getData = this.handleGetData;
+
+ let listFilterName = '';
+ const showName = [];
+ /* 找到搜索框呈现的字段 然后赋值在搜索框里 */
+ if (commonUtils.isNotEmptyArr(slaveFilterCondition)) {
+ slaveFilterCondition.forEach((item) => {
+ const iIndex = slaveConfig.gdsconfigformslave.findIndex(i => i.sName === item.bFilterName);
+ if (iIndex > -1) {
+ showName.push(slaveConfig.gdsconfigformslave[iIndex].sName);
+ }
+ });
+ if (commonUtils.isNotEmptyArr(showName)) {
+ listFilterName = showName[0];
+ }
+ }
+ const sendSocketMessage = this.props.handleSendSocketMessage;
+ if (copyToConfig.length > 0) {
+ const { sActiveId } = copyToConfig[0];
+ const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`;
+ let copyTo = {};
+ copyTo.name = copyToConfig[0].sControlName;
+ copyTo.config = copyToConfig;
+ copyTo.listFilterCondition = slaveFilterCondition; /* 列表的搜索条件 如搜索001 点击了复制到 则把001搜索条件同步传到单据 当回刷列表时 在带回来 */
+ copyTo.listModelsId = sModelsId; /* 列表sModelsId */
+ copyTo.listModelsType = sModelsType; /* 列表sModelsType */
+ copyTo.listUrl = formRoute; /* 列表路由 */
+ copyTo.listFilterName = listFilterName;
+ const copyToData = [];
+ if (!slaveConfig.bMutiSelect && false) { // 是否多选
+ copyTo.masterData = name;
+ copyTo.slaveData = [name];
+
+ if (commonUtils.isNotEmptyObject(copyTo.name) && copyTo.name.toLowerCase().includes('tmpinfobysql')) { /* 根据配置下拉sql获取数据源 */
+ copyTo = await this.props.onTmpInfoBySql(copyToConfig, copyTo.slaveData, copyTo);
+ }
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ urlKey: sNameUrl,
+ sModelsId: sActiveId,
+ name,
+ copyTo,
+ refresh: getData.bind(this, slaveConfig, slaveFilterCondition, commonUtils.isEmpty(slavePagination) ? 0 : slavePagination.current, slaveOrderBy), /* 刷新方法 */
+ },
+ });
+ sendSocketMessage('copy', 'execute', name.sSlaveId, app.userinfo.sId, null, null);
+ } else if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
+ slaveData.filter(item => slaveSelectedRowKeys.toString().includes(item.sSlaveId)).forEach((item) => {
+ copyToData.push(item);
+ });
+ copyTo.masterData = copyToData[0];
+ copyTo.slaveData = copyToData;
+
+ if (commonUtils.isNotEmptyObject(copyTo.name) && copyTo.name.toLowerCase().includes('tmpinfobysql')) { /* 根据配置下拉sql获取数据源 */
+ copyTo = await this.props.onTmpInfoBySql(copyToConfig, copyTo.slaveData, copyTo);
+ }
+
+ // 不重复字段处理 例如 复制到时只能同一客户复制到
+ const iIndex = copyToConfig.findIndex(item => item.sControlName === name);
+ if (iIndex > -1 && !commonUtils.isEmpty(copyToConfig[iIndex].sNotRepeatColumn)) {
+ const sNotRepeatColumn = copyToConfig[iIndex].sNotRepeatColumn.trim();
+ const sNotRepeatValue = copyToData[0][sNotRepeatColumn];
+ const iCount = copyToData.filter(item => item[sNotRepeatColumn] === sNotRepeatValue).length;
+ if (iCount !== copyToData.length) {
+ const iConfigIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === sNotRepeatColumn);
+ const sNotRepeatShowName = iConfigIndex > -1 ? slaveConfig.gdsconfigformslave[iConfigIndex].showName : '';
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseSame') + sNotRepeatShowName); // 请选择相同
+ return;
+ }
+ }
+ let timValue = 0;
+ if (this.props.app.webSocket === null || this.props.app.webSocket.readyState !== WebSocket.OPEN) {
+ this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } });
+ timValue = 3000;
+ }
+ setTimeout(async () => {
+ this.props.app.webSocket.onmessage = (msg) => {
+ const rtmsg = JSON.parse(msg.data);
+ if (rtmsg.action === 'execute') {
+ if (rtmsg.msg === 'continue') {
+ if (commonUtils.isNotEmptyArr(copyToData)) {
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ urlKey: sNameUrl,
+ sModelsId: sActiveId,
+ copyToData,
+ copyTo,
+ refresh: getData.bind(this, slaveConfig, slaveFilterCondition, commonUtils.isEmpty(slavePagination) ? 0 : slavePagination.current, slaveOrderBy), /* 刷新方法 */
+ },
+ });
+ } else {
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择相同
+ }
+ } else {
+ Toast.fail(rtmsg.handlers + commonFunc.showMessage(app.commonConst, 'InOperation')); /* 在操作,请稍后再操作! */
+ }
+ } else if (rtmsg.action === 'loginOut') {
+ if (location.pathname.indexOf('/indexOee') > -1) {
+ dispatch({ type: 'app/throwErrorOee', payload: { code: -2, msg: rtmsg.msg } });
+ } else if (location.pathname.indexOf('/indexMobile') > -1) {
+ dispatch({ type: 'app/throwErrorMobile', payload: { code: -2, msg: rtmsg.msg } });
+ } else {
+ dispatch({ type: 'app/throwError', payload: { code: -2, msg: rtmsg.msg } });
+ }
+ } else if (this.props.app.webSocket.homeAction) {
+ this.props.app.webSocket.homeAction(msg);
+ }
+ };
+ const tbSuffix = '';
+ const dataUrl = `${commonConfig.server_host}bill/billCopyToCheck/?sModelsId=${sModelsId}&sActiveId=${sActiveId}&tbSuffix=${tbSuffix}`;
+ const values = { sSlaveId: slaveSelectedRowKeys.toString() };
+ const dataReturn = (await commonServices.postValueService(token, values, dataUrl)).data;
+ if (dataReturn.code === 1) {
+ if (dataReturn.dataset.rows.length > 0) {
+ alert('Warn', commonFunc.showMessage(app.commonConst, 'beUsedToNew'), [
+ {
+ text: 'Ok',
+ onPress: () => {
+ sendSocketMessage('copy', 'execute', slaveSelectedRowKeys.toString(), app.userinfo.sId, null, null);
+ },
+ },
+ { text: 'Cancel' },
+ ]);
+ } else {
+ sendSocketMessage('copy', 'execute', slaveSelectedRowKeys.toString(), app.userinfo.sId, null, null);
+ }
+ }
+ }, timValue);
+ } else {
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择数据
+ }
+ }
+ };
+
+ handleDoubleClick = async (record) => {
+ const {
+ slaveConfig,
+ dispatch,
+ slaveFilterCondition,
+ slavePagination,
+ slaveOrderBy,
+ sModelsType,
+ treeFilterCondition,
+ app,
+ } = this.props;
+ const picArr = slaveConfig.gdsconfigformslave.filter(item => (item.sName === 'picArr'));
+ const getData = this.handleGetData;
+ if (picArr.length > 0) {
+ let sActiveId = '';
+ if (picArr[0].sName === 'picArr' && picArr[0].sDropDownType === 'picArr' && sModelsType !== 'commonList/msg') {
+ [{ sActiveId }] = picArr;
+ } else if (picArr[0].sName === 'picArr' && picArr[0].sDropDownType === 'picArr' && sModelsType === 'commonList/msg' && (record.sType === '消息' || record.sType === '1')) {
+ [{ sActiveId }] = picArr;
+ } else if (sModelsType === 'commonList/msg' && (record.sType !== '消息' || record.sType !== '1')) {
+ sActiveId = '19211681019715633459786050';
+ }
+ /* 消息列表双击打开时 调用获取websocket消息 */
+ if (sModelsType === 'commonList/msg') {
+ const { webSocket, userinfo } = app;
+ const timValue = 2000;
+ if (this.props.app.webSocket === null || this.props.app.webSocket.readyState !== WebSocket.OPEN) {
+ this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } });
+ }
+ setTimeout(() => {
+ webSocket.onmessage = async (msg) => {
+ const rtmsg = JSON.parse(msg.data);
+ if (rtmsg.action === 'showImg') {
+ const msgData = JSON.parse(msg.data);
+ dispatch({ type: 'app/saveMsgCount', payload: { msgCount: msgData.msg } });
+ } else if (this.props.app.webSocket.homeAction) {
+ this.props.app.webSocket.homeAction(msg);
+ }
+ };
+ this.props.handleSendSocketMessage('reflush', 'showImg', record.sId, userinfo.sId, '您有消息待审核', null);
+ }, timValue);
+ if (this.props.app.currentPane.refresh !== undefined) {
+ this.props.app.currentPane.refresh();
+ }
+ }
+ const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sActiveId}?sModelsId=${sActiveId}`;
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ refresh: getData.bind(this, slaveConfig, slaveFilterCondition, commonUtils.isEmpty(slavePagination) ? 0 : slavePagination.current, slavePagination.pageSize, slaveOrderBy, undefined, undefined, undefined, treeFilterCondition), /* 刷新方法 */
+ urlKey: sNameUrl,
+ sModelsId: sActiveId,
+ name: record,
+ checkedId: record.sId,
+ },
+ });
+ }
+ };
+ /** 表单回带 */
+ handleForm = (form) => {
+ this.form = form;
+ };
+
+ handleCheckboxChange = (e, selectedKey) => {
+ const { slaveSelectedRowKeys: slaveSelectedRowKeysOld, slaveConfig } = this.props;
+ let slaveSelectedRowKeys;
+ if (commonUtils.isEmptyArr(slaveSelectedRowKeysOld)) {
+ slaveSelectedRowKeys = [];
+ } else {
+ slaveSelectedRowKeys = [...slaveSelectedRowKeysOld];
+ }
+ if (slaveConfig.bMutiSelect) { /* 多选 */
+ if (e.target.checked) {
+ slaveSelectedRowKeys.push(selectedKey);
+ } else {
+ const iIndex = slaveSelectedRowKeys.findIndex(item => item === selectedKey);
+ slaveSelectedRowKeys.splice(iIndex, 1);
+ }
+ } else { /* 单选:选择唯一 */
+ // eslint-disable-next-line no-lonely-if
+ if (e.target.checked) {
+ slaveSelectedRowKeys = [];
+ slaveSelectedRowKeys.push(selectedKey);
+ } else {
+ const iIndex = slaveSelectedRowKeys.findIndex(item => item === selectedKey);
+ slaveSelectedRowKeys.splice(iIndex, 1);
+ }
+ }
+ this.props.onSaveState({
+ slaveSelectedRowKeys,
+ });
+ };
+ /* 工单打印预览功能 */
+ handlePrintView = (e, rowData, showConfig) => {
+ const printPdf = showConfig.sControlName; /* 工单号配置调到打印界面,跳转打印页面 */
+ const sActiveKey = showConfig.sActiveKey;/* 弹出界面对应数据主字段 */
+ if (commonUtils.isNotEmptyObject(printPdf) && printPdf === 'printPdf' && commonUtils.isNotEmptyObject(sActiveKey)) {
+ const token = this.props.app.token;
+ const sActiveId = showConfig.sActiveId === '1' ? commonUtils.isEmpty(rowData.sFormId) ? rowData.sSrcFormId : rowData.sFormId : showConfig.sActiveId;
+ const printsId = rowData[sActiveKey];
+ const urlPrint = `${commonConfig.file_host_ebc}printReport/printPdfByFromDataId/${printsId}.pdf?sModelsId=${sActiveId}&sId=${printsId}&token=${encodeURIComponent(token)}`;
+ const param = { urlPrint };
+ // this.props.dispatch(history.push({ pathname: '/indexMobile/printPdf', state: { sParam: commonUtils.convertObjToStr(param) } }));
+ this.props.dispatch(history.push('/indexMobile/printPdf', commonUtils.convertObjToStr(param)));
+ }
+ }
+ /** 按钮操作事件 */
+ handleButtonClick = (name) => {
+ if (name.indexOf('BtnCopyTo') > -1) { /* 复制到 */ // && commonUtils.isNotEmptyStr(e.item.props.sActiveId)
+ this.handleCopyToClick(name);
+ } else if (name.includes('BtnForceComplete')) {
+ this.handleForceComplete();
+ } else if (name === 'BtnRefresh') {
+ const {
+ slaveConfig, slavePagination, slaveFilterCondition, sModelsType, slaveSelectedRowKeys, slaveSelectedData,
+ } = this.props;
+ /* 手机端工序报工,点开工之后,在再点完工,刷新不去除勾选 */
+ if (sModelsType === 'mobile/productionReport') {
+ this.props.onSaveState({
+ slaveSelectedRowKeys, slaveSelectedData, loading: false,
+ });
+ } else {
+ this.props.onSaveState({
+ clearArray: [], searchText: '', slaveSelectedRowKeys: [], slaveSelectedData: [], slaveInfoSelectedRowKeys: [], slaveInfoSelectedData: [], treeSelectedKeys: [], treeFilterCondition: [], loading: false,
+ });
+ }
+ if (slavePagination === undefined) return;
+ this.handleGetData(slaveConfig, slaveFilterCondition); /* 刷新方法 */
+ /* 判断是否要加载过滤树数据 */
+ const filterTreeConfigArr = slaveConfig.gdsconfigformslave.filter(item => item.bTree);
+ if (commonUtils.isNotEmptyArr(filterTreeConfigArr)) {
+ const filterTreeConfig = filterTreeConfigArr[0];
+ this.handleGetFilterTreeData(filterTreeConfig, slaveFilterCondition, 1);
+ }
+ const { clearArray } = this.props;
+ if (!commonUtils.isEmpty(clearArray)) {
+ for (const item of clearArray) {
+ const { confirm, clearFilters } = item;
+ confirm();
+ clearFilters();
+ }
+ }
+ } else if (name === 'BtnBatchExamine') {
+ /* 批量审核 */
+ this.handleBatchExamine();
+ } else if (name === 'BtnBatchCancelExamine') {
+ /* 批量销审 */
+ this.handleBatchCancelExamine();
+ }
+ };
+ handleForceComplete = () => {
+ const { slaveSelectedRowKeys, app } = this.props;
+ if (commonUtils.isEmptyObject(slaveSelectedRowKeys)) {
+ Toast.info(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择记录
+ } else {
+ const { getFieldProps } = this.form;
+ alert(
+ '详细',
+
+
+
,
+ [
+ { text: '关闭', onPress: () => console.log('cancel') },
+ { text: '确定', onPress: () => this.handleToForceComplete(this.state.textAreaContent) },
+ ],
+ );
+ }
+ }
+ /* 批量审核 */
+ handleBatchExamine = () => {
+ this.handleAudit(1);
+ };
+
+ /* 批量消审 */
+ handleBatchCancelExamine = () => {
+ this.handleAudit(0);
+ };
+ handleChangeTextarea = (e) => {
+ this.setState({
+ textAreaContent: e,
+ });
+ }
+ /** toolbar批量审核(消审) */
+ handleAudit = async (flag) => {
+ /* 待用数据声明 */
+ const {
+ slaveSelectedRowKeys, app, slaveConfig, slavePagination, slaveFilterCondition, slaveOrderBy, slaveData,
+ } = this.props;
+ /* 作废订单不能审核 */
+ const slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sSlaveId));
+ const check = commonFunc.showMessage(app.commonConst, 'BtnExamine');/* 审核 */
+ const checkChancel = commonFunc.showMessage(app.commonConst, 'BtnCancelExamine');/* 销审 */
+ const msgShow = flag ? check : checkChancel;
+ if (commonUtils.isNotEmptyArr(slaveSelectedData)) {
+ // const slaveSelectedDataNew = this.deteleObject(slaveSelectedData); // 删除sid重复的数据
+ let allMsg = '';
+ let allErrorMsg = '';
+ for (const child of slaveSelectedData) {
+ if (child.bInvalid) {
+ Toast.fail(`已作废的单据${child.sBillNo}不能审核!`);
+ return '';
+ }
+ /** 数据审核 */
+ const strMsgs = await this.dataAudit(flag, `${child.sId}_${child.sFormId}`, child.sBillNo);
+ if (commonUtils.isNotEmptyStr(strMsgs.strMsg)) {
+ allMsg += `${strMsgs.strMsg} \n `;
+ } else {
+ allMsg += '';
+ }
+ if (commonUtils.isNotEmptyStr(strMsgs.strErrorMsg)) {
+ allErrorMsg += `${strMsgs.strErrorMsg} \n `;
+ } else {
+ allErrorMsg += '';
+ }
+ }
+ if (commonUtils.isNotEmptyStr(allMsg)) {
+ Toast.fail(msgShow + allMsg);
+ }
+ if (allErrorMsg !== undefined && commonUtils.isNotEmptyStr(allErrorMsg)) {
+ Toast.fail(allErrorMsg);
+ }
+ this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slavePagination.pageSize, slaveOrderBy, true); /* 刷新方法 */
+ } else {
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseData'));/* 请选择一条数据 */
+ }
+ };
+
+ /** 数据审核 */
+ dataAudit = async (flag, sId_sFormId, sBillNo, tmpCheck, isWait) => {
+ const [sId, sFormId] = sId_sFormId.split('_');
+ /* 待用数据声明 */
+ const {
+ sModelsId, app, slaveConfig, formRoute,
+ } = this.props;
+ /* 数据参数 */
+ const picArr = slaveConfig.gdsconfigformslave.filter(item => (item.sName === 'picArr'));
+ const value = {
+ sClientType: '1',
+ paramsMap: {
+ iFlag: flag,
+ iTmpCheck: commonUtils.isEmptyNumber(tmpCheck) ? 0 : tmpCheck,
+ sFormGuid: commonUtils.isEmptyArr(picArr) ? sFormId : picArr[0].sActiveId,
+ sGuid: sId,
+ },
+ };
+ /* 数据审核 */
+ const url = `${commonConfig.server_host}business/doExamine?sModelsId=${sModelsId}&sName=${formRoute}`;
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ const msgs = {};
+ if (isWait) {
+ return returnData;
+ } else {
+ /* 接收返回值 */
+ if (returnData.code === 1) { /* 成功 */
+ if (flag === 1) {
+ /* 审核 */
+ const { outData } = returnData.dataset.rows[0].dataSet;
+ if (commonUtils.isNotEmptyStr(outData[0].sReturn)) {
+ msgs.strMsg = commonUtils.isNotEmptyObject(sBillNo) ? `${sBillNo}${outData[0].sReturn}` : `${outData[0].sReturn}`;
+ // if (outData[0].sReturn.split('-').length < 2) {
+ // // 正常业务提示,非审核模板
+ // if (this.props.app.currentPane.refresh !== undefined) {
+ // this.props.app.currentPane.refresh();
+ // }
+ // msgs.strMsg = `${sBillNo}审核${outData[0].sReturn}`;
+ // return msgs;
+ // }
+ // const sReturnArray = outData[0].sReturn.split('|');
+ // const sCheckModelId = sReturnArray[0].split('-')[1];
+ // if (commonUtils.isNotEmptyStr(sCheckModelId)) {
+ // msgs.strMsg = `${sBillNo}审核失败`;
+ // }
+ } else {
+ // this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slavePagination.pageSize, slaveOrderBy, true); /* 刷新方法 */
+ // message.destroy();
+ msgs.strMsg = commonUtils.isNotEmptyObject(sBillNo) ? `${sBillNo}${returnData.msg}` : `${returnData.msg}`;
+ }
+ } else {
+ /* 消审 */
+ const { outData } = returnData.dataset.rows[0].dataSet;
+ if (commonUtils.isNotEmptyStr(outData[0].sReturn)) {
+ msgs.strMsg = commonUtils.isNotEmptyObject(sBillNo) ? `${sBillNo}${outData[0].sReturn}` : `$${outData[0].sReturn}`;
+ } else {
+ // this.handleGetData(slaveConfig, slaveFilterCondition, slavePagination.current, slavePagination.pageSize, slaveOrderBy, true); /* 刷新方法 */
+ msgs.strMsg = commonUtils.isNotEmptyObject(sBillNo) ? `${sBillNo}${returnData.msg}` : `${returnData.msg}`;
+ }
+ }
+ } else { /* 失败 */
+ msgs.strErrorMsg = returnData.msg;
+ // this.props.getServiceError(returnData);
+ }
+ return msgs;
+ }
+ };
+ handleToForceComplete = async (sValue) => {
+ const {
+ app, slaveSelectedRowKeys, slaveConfig, sModelsId, slaveInfoSelectedRowKeys, formRoute, slaveFilterCondition,
+ } = this.props;
+
+ const { token } = app;
+ const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnForceComplete' || item.sControlName === 'BtnNoPurchase');
+ const btnConfig = slaveConfig.gdsconfigformslave[iIndex];
+ // debugger
+ const sRelation = btnConfig.sRelation;
+
+ let selectedRowKeys = '';
+ if (formRoute === '/indexPage/materialRequirementsPlanning') {
+ selectedRowKeys = slaveInfoSelectedRowKeys.toString();
+ } else {
+ selectedRowKeys = slaveSelectedRowKeys.toString();
+ }
+ const value = {};
+ value.textareaValue = sValue;
+ const url = `${commonConfig.server_host}bill/billForceComplete?sModelsId=${sModelsId}&sName=${formRoute}`;
+ const values = { sqlParam: sRelation, sId: selectedRowKeys, sReason: value };
+
+ const masterReturn = (await commonServices.postValueService(token, values, url)).data;
+ if (masterReturn.code === 1) {
+ Toast.success(masterReturn.msg);
+ this.handleGetData(slaveConfig, slaveFilterCondition);
+ } else {
+ this.props.getServiceError(masterReturn);
+ }
+ }
+
+ handleSelectAllClick = (e) => {
+ const { slaveData } = this.props;
+ const slaveSelectedRowKeys = [];
+ if (e.target.checked) {
+ slaveData.forEach((item) => {
+ slaveSelectedRowKeys.push(item.sSlaveId);
+ });
+ }
+ this.props.onSaveState({
+ slaveSelectedRowKeys,
+ });
+ };
+ render() {
+ return (
+
+ );
+ }
+ };
+};
diff --git a/src/mobile/common/CommobileModalList.jsx b/src/mobile/common/CommobileModalList.jsx
new file mode 100644
index 0000000..9d06679
--- /dev/null
+++ b/src/mobile/common/CommobileModalList.jsx
@@ -0,0 +1,113 @@
+/*eslint-disable*/
+import React, { PureComponent } from 'react';
+import { createForm } from 'rc-form';
+import CommobileBase from '../../mobile/common/CommobileBase';
+import CommobileListEvent from './CommobileListEvent';
+import { Checkbox, ListView, TextareaItem } from 'antd-mobile';
+import * as commonUtils from '../../utils/utils';
+
+
+const CheckboxItem = Checkbox.CheckboxItem;
+const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+});
+class listContent extends PureComponent {
+
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ const {
+ slaveConfig, slaveData: slaveDataOld, slaveSelectedRowKeys: slaveSelectedRowKeysOld,
+ needCheck, setSelectedRowkeys, filterSlaveData,
+ } = this.props;
+ let slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ typeof filterSlaveData === 'function' && (slaveDataOld2 = filterSlaveData(slaveDataOld2));
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+ const slaveSelectedRowKeys = slaveSelectedRowKeysOld === undefined ? [] : slaveSelectedRowKeysOld;
+ typeof setSelectedRowkeys === 'function' && setSelectedRowkeys(slaveDataOld2?.filter(i => i && slaveSelectedRowKeys.includes(i.sId)));
+
+ const separator = (sectionID, rowID) => (
+
+ );
+
+ const row = (rowData, sectionID, rowID) => {
+ if (commonUtils.isEmptyObject(slaveConfig) || !Array.isArray(slaveConfig.gdsconfigformslave)) return <>>;
+ const obj = JSON.parse(JSON.stringify(rowData)); // 深拷贝
+ const allkey = slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '')
+ const topInfo = needCheck && item === rowData.sId) > -1}
+ onChange={e => this.props.onCheckboxChange(e, rowData.sId)}
+ style={{
+ width: '100%',
+ marginRight: 0,
+ lineHeight: '30px',
+ color: '#888',
+ fontSize: 16,
+ fontWeight: 'bold',
+ borderBottom: '1px solid #F6F6F6',
+ }}
+ >
+ { this.props.topTitle || '标签信息' }
+
+ const content = allkey.map(
+ i => {
+ if (typeof obj?.[i?.sName] === 'string' || typeof obj?.[i?.sName] === 'number') {
+ return {i?.showName || ''}}
+ value={(obj?.[i?.sName]).toString()}
+ disabled
+ ref={el => this.autoFocusInst = el}
+ autoHeight
+ />
+ }
+ return;
+ }
+ )
+ return <>
+
+ {topInfo}
+ {content}
+
+ >
+ };
+
+ return <>
+ {Array.isArray(slaveDataOld2) && slaveDataOld2.length ?
+ :
+
+ 暂无数据
+
+ }
+ >
+ }
+}
+
+const ListComponent = createForm()(listContent);
+
+export default CommobileBase(CommobileListEvent(ListComponent));
diff --git a/src/mobile/common/CommobilePrintPdf.js b/src/mobile/common/CommobilePrintPdf.js
new file mode 100644
index 0000000..f912ab0
--- /dev/null
+++ b/src/mobile/common/CommobilePrintPdf.js
@@ -0,0 +1,83 @@
+/* eslint-disable prefer-destructuring */
+/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */
+import React from 'react';
+import { InputItem, Icon } from 'antd-mobile';
+import { Document, Page, pdfjs } from 'react-pdf';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import * as commonUtils from '../../utils/utils';
+import pdfstyles from '../printpdf.less';
+
+pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.min.js`;
+
+class CommobilePrintPdf extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ pageNumber: 1,
+ numPages: 1,
+ };
+ }
+
+ onDocumentLoadSuccess = ({ numPages }) => {
+ this.setState({ numPages });
+ };
+
+ onPageNumberChange = (e) => {
+ let value = commonUtils.convertStrToNumber(e);
+ value = value <= 0 ? 1 : value;
+ value = value >= this.state.numPages ? this.state.numPages : value;
+ this.setState({ pageNumber: value });
+ };
+ lastPage = () => {
+ if (this.state.pageNumber === 1) {
+ return;
+ }
+ const page = this.state.pageNumber - 1;
+ this.setState({ pageNumber: page });
+ }
+ nextPage = () => {
+ if (this.state.pageNumber === this.state.numPages) {
+ return;
+ }
+ const page = this.state.pageNumber + 1;
+ this.setState({ pageNumber: page });
+ }
+ render() {
+ const {
+ pageNumber, numPages,
+ } = this.state;
+ const { urlPrint } = this.props;
+ const pageWidth = commonUtils.isNotEmptyNumber(document.body.clientWidth) ? document.body.clientWidth : 360;
+ return (
+
+
+
+
+
+
+
this.onPageNumberChange(e)}
+ type="number"
+ /> / {numPages}
+
+
+
+
+ {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}
+
window.history.back(-1)} >
+
+ );
+ }
+}
+
+export default CommobilePrintPdf;
diff --git a/src/mobile/common/CommobileSearchComponent.js b/src/mobile/common/CommobileSearchComponent.js
new file mode 100644
index 0000000..f71488b
--- /dev/null
+++ b/src/mobile/common/CommobileSearchComponent.js
@@ -0,0 +1,629 @@
+/* eslint-disable prefer-destructuring */
+/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */
+import React from 'react';
+import weixin from 'weixin-js-sdk';
+import { Tabs, Badge, SearchBar, Modal, Button, Menu, ActivityIndicator, Flex, WhiteSpace, Toast, List } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import styles from '.././mobile.less';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import * as commonUtils from '../../utils/utils';
+import scan from '../../assets/mobile/scanning.svg';
+// eslint-disable-next-line import/first
+import BarCodeUtil from './BarCodeUtil';
+// eslint-disable-next-line import/first,no-unused-vars
+import moment from 'moment';
+import ShowType from './CommobileComponent';
+// eslint-disable-next-line import/first
+import { createForm } from 'rc-form';
+
+
+// const data = [
+// {
+// value: '1',
+// label: '全部数据',
+// },
+// ];
+
+class CommobileSearchComponent extends React.Component {
+ constructor(props) {
+ super(props);
+ const returnFilterCondition = props.returnFilterCondition;
+ const returnFilterName = props.returnFilterName; /* 未清搜索框字段 */
+ let returnValue = '';
+ if (commonUtils.isNotEmptyArr(returnFilterCondition)) {
+ const returnData = returnFilterCondition.filter(item => item.bFilterName === returnFilterName);
+ if (commonUtils.isNotEmptyArr(returnData)) {
+ returnValue = returnData[0];
+ }
+ }
+ this.state = {
+ scanValue: commonUtils.isNotEmptyObject(returnValue) ? returnValue.bFilterValue : '',
+ };
+ this.bFilterCondition = true;
+ this.textInput = null;
+ }
+
+ async componentWillMount() {
+ const { token, sModelsId } = this.props;
+ const dataUrl = `${commonConfig.server_host}syssearch/getSyssearchData/${sModelsId}?sModelsId=${sModelsId}`; /* 获取快捷查找方案 */
+ const dataReturn = (await commonServices.getService(token, dataUrl)).data;
+ if (dataReturn.code === 1) {
+ const returnData = dataReturn.dataset.rows;
+ const addState = {};
+ if (commonUtils.isNotEmptyArr(returnData)) {
+ addState.searchOperation = [];
+ returnData.forEach((item) => {
+ addState.searchOperation.push({ text: item.sName });
+ });
+ let iIndex = returnData.findIndex(item => item.bDefault);
+ iIndex = iIndex > -1 ? iIndex : commonUtils.isEmptyArr(returnData) ? -1 : 0;
+ addState.label = returnData[iIndex].sName;
+ }
+ if (sModelsId === '12710101117217437977130') {
+ if (this.inputSearch) this.inputSearch.focus();
+ }
+ this.props.onSaveState({ searchSolution: returnData, ...addState });
+ } else {
+ this.props.getServiceError(dataReturn);
+ }
+ }
+
+ componentWillReceiveProps(nextProps) {
+ const {
+ returnFilterCondition, returnFilterName, clearSearchValue, sModelsType, sModelsId,
+ } = nextProps;
+ if (sModelsId === '12710101117217437977130') {
+ if (this.inputSearch) this.inputSearch.focus();
+ }
+ if (commonUtils.isNotEmptyArr(returnFilterCondition) && clearSearchValue && sModelsType === 'mobile/productionReport') {
+ const returnData = returnFilterCondition.filter(item => item.bFilterName === returnFilterName);
+ let returnValue = '';
+ if (commonUtils.isNotEmptyArr(returnData)) {
+ returnValue = returnData[0];
+ }
+ this.setState({
+ scanValue: commonUtils.isNotEmptyObject(returnValue) ? returnValue.bFilterValue : '',
+ });
+ }
+ }
+
+
+ onClose = key => () => {
+ this.setState({
+ [key]: false,
+ });
+ }
+
+ onChange = async (value) => {
+ let label = '';
+ const { initData } = this.props;
+ initData.forEach((dataItem) => {
+ if (dataItem.value === value[0]) {
+ label = dataItem.label;
+ if (dataItem.children && value[1]) {
+ dataItem.children.forEach((cItem) => {
+ if (cItem.value === value[1]) {
+ label += ` ${cItem.label}`;
+ }
+ });
+ }
+ }
+ });
+
+ const { searchSolution, slaveConfig } = this.props;
+ const iIndex = searchSolution.findIndex(item => item.sName === label);
+
+ const addState = await this.props.onGetData(slaveConfig, JSON.parse(searchSolution[iIndex].sCondition), 1, true);
+ // const slaveFilterConditionOld = addState.slaveFilterCondition;
+ this.props.onSaveState({
+ show: !this.props.show,
+ label,
+ ...addState,
+ // slaveFilterConditionOld,
+ });
+ }
+
+ onMaskClick = () => {
+ this.props.onSaveState({
+ show: false,
+ });
+ }
+ // eslint-disable-next-line react/sort-comp
+ handleClick = () => {
+ // e.preventDefault(); // Fix event propagation on Android
+ this.props.onSaveState({
+ show: !this.props.show,
+ });
+ // mock for async data loading
+ if (!this.props.initData) {
+ const data = [];
+ const { searchOperation: searchOperationOld } = this.props;
+ const childrenData = commonUtils.isEmptyArr(searchOperationOld) ? [] : searchOperationOld;
+ if (commonUtils.isNotEmptyArr(childrenData)) {
+ for (let i = 0; i < childrenData.length; i += 1) {
+ const addStata = {};
+ addStata.value = i;
+ addStata.label = childrenData[i].text;
+ data.push(addStata);
+ }
+ } else {
+ this.props.onSaveState({
+ show: false,
+ });
+ }
+ if (!this.props.initData && commonUtils.isNotEmptyArr(data)) {
+ setTimeout(() => {
+ this.props.onSaveState({
+ initData: data,
+ });
+ }, 500);
+ }
+ }
+ }
+
+ handleSearch = async (value, type) => {
+ const { slaveConfig, sModelsId } = this.props;
+ let { slaveFilterCondition } = this.props;
+ if (commonUtils.isNotEmptyArr(slaveFilterCondition)) {
+ slaveFilterCondition[0].bFilterValue = value;
+ } else {
+ const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.bFind);
+ if (iIndex > -1) {
+ slaveFilterCondition = [{ bFilterName: slaveConfig.gdsconfigformslave[iIndex].sName, bFilterCondition: 'like', bFilterValue: value }];
+ }
+ }
+ if (type === 'searchScan') {
+ /* 打钩 扫码出来的数据行 */
+ const addState = await this.props.onGetData(this.props.slaveConfig, slaveFilterCondition, undefined, true);
+ const slaveSelectedRowKeys = [];
+ if (commonUtils.isNotEmptyObject(addState) && commonUtils.isNotEmptyArr(addState.slaveData)) {
+ const slaveData = addState.slaveData;
+ slaveData.forEach((item) => {
+ slaveSelectedRowKeys.push(item.sSlaveId);
+ });
+ addState.slaveSelectedRowKeys = slaveSelectedRowKeys;
+
+ /* 扫码后只查询到一条数据则自动调用copyTo */
+ if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys) && slaveSelectedRowKeys.length === 1) {
+ /* 查找复制到按钮名称 */
+ const filterData = slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName === '' && commonUtils.isNotEmptyObject(item.sControlName) && item.sControlName.indexOf('BtnCopyTo') > -1);
+ if (commonUtils.isNotEmptyArr(filterData) && filterData.length === 1) {
+ // const BtnCopyToName = filterData[0].sControlName;
+ setTimeout(() => {
+ this.props.onCopyToClick(slaveData[0]);
+ }, 500);
+ }
+ }
+ }
+ this.props.onSaveState({ ...addState });
+ if (this.inputSearch) this.inputSearch.focus();
+ return;
+ }
+ const addState = await this.props.onGetData(slaveConfig, slaveFilterCondition, undefined, true);
+ if (commonUtils.isNotEmptyObject(addState)) {
+ if (sModelsId === '12710101117217437977130' && commonUtils.isNotEmptyArr(addState.slaveData) && addState.slaveData.length === 1) { /* 一条时 默认选中 */
+ const slaveSelectedRowKeys = [];
+ const slaveData = addState.slaveData;
+ const key = commonUtils.isNotEmptyObject(slaveData[0].sSlaveId) ? slaveData[0].sSlaveId : slaveData[0].sId;
+ slaveSelectedRowKeys.push(key);
+ addState.slaveSelectedRowKeys = slaveSelectedRowKeys;
+ }
+ addState.clearSearchValue = false;
+ this.props.onSaveState({ ...addState });
+ if (this.inputSearch) this.inputSearch.focus();
+ }
+ }
+ onChangeScan = async (event) => {
+ const file = event.target.files[0];
+ if (file) {
+ this.parseQrCode(file)
+ .then((data) => {
+ Toast.info(data);
+ })
+ .catch((error) => {
+ Toast.fail(error.message);
+ });
+ }
+ // this.parseLineCode(file);
+ }
+
+ // /**
+ // * 解析条形码(识别率太低,暂用不了)
+ // * @param {Blob} file 文件流
+ // */
+ // async parseLineCode(file) {
+ // const src = URL.createObjectURL(file);
+ // Quagga.decodeSingle({
+ // src,
+ // decoder: {
+ // readers: ['code_128_reader'],
+ // },
+ // locate: true,
+ // }, (result) => {
+ // console.log('linecode', result);
+ // if (result.codeResult) {
+ // console.log('result', result.codeResult.code);
+ // } else {
+ // console.log('not detected');
+ // }
+ // });
+ // }
+
+ /**
+ * 解析qrcode
+ * @param {Blob} file 文件流
+ */
+ // async parseQrCode(file) {
+ // const imgData = await this.readImage(file);
+ // try {
+ // const result = jsQR(
+ // imgData.data,
+ // imgData.width,
+ // imgData.height,
+ // );
+ // return Promise.resolve(result.data);
+ // } catch (error) {
+ // return Promise.reject(new Error(`识别失败:${error.message}`));
+ // }
+ // }
+
+ /**
+ * 文件解析为imageData
+ * @param {Blob} file 文件流
+ */
+ // readImage = (file) => {
+ // return new Promise((resolve, reject) => {
+ // const reader = new FileReader();
+ // reader.onloadend = () => {
+ // // 读取文件
+ // const imageElement = document.createElement('img');
+ // imageElement.style.width = '100px';
+ // imageElement.src = reader.result;
+ // imageElement.onload = () => {
+ // // 把图片绘制到canvas,并获取imageData
+ // const canvas = document.createElement('canvas');
+ // const width = 300;
+ // // eslint-disable-next-line no-mixed-operators
+ // const height = (imageElement.height * width / imageElement.width);
+ // canvas.width = width;
+ // canvas.height = height;
+ // const g = canvas.getContext('2d');
+ // g.drawImage(imageElement, 0, 0, width, height);
+ // const imageData = g.getImageData(0, 0, width, height);
+ // resolve(imageData);
+ // };
+ // imageElement.onerror = () => {
+ // reject(new Error('图片加载失败'));
+ // };
+ // };
+ // reader.onerror = () => {
+ // reject(new Error('文件读取失败'));
+ // };
+ // reader.readAsDataURL(file);
+ // });
+ // }
+ handleScan = () => {
+ BarCodeUtil.startScan((type, code) => {
+ if (!commonUtils.isEmpty(code)) {
+ this.handleSearch(code, 'searchScan');
+ this.setState({
+ scanValue: code,
+ });
+ }
+ });
+ // if (this.textInput) {
+ // this.textInput.click();
+ // }
+ }
+
+ handleGetWxCode = async (successHandler) => {
+ let scanResult = '';
+ const { app } = this.props;
+ // eslint-disable-next-line prefer-destructuring,no-unused-vars
+ const userinfo = app.userinfo;
+ const myUrl = location.href;
+ const configUrl = `${commonConfig.server_host}wechat/getWxToken`;
+ const values = {
+ url: myUrl,
+ sBrandsId: userinfo.sBrandsId,
+ sSubsidiaryId: userinfo.sSubsidiaryId,
+ };
+ // const values = {
+ // url: myUrl,
+ // sBrandsId: '1111111111',
+ // sSubsidiaryId: '1111111111',
+ // };
+ const configReturn = (await commonServices.postValueService(null, values, configUrl)).data;
+ console.log('configReturn::', configReturn, values);
+ if (configReturn.code === 1) {
+ const { rows } = configReturn.dataset;/* 获取费用分摊单据配置 */
+ if (commonUtils.isNotEmptyArr(rows)) {
+ const appId = rows[0].appId.toString();
+ const nonceStr = rows[0].nonceStr.toString();
+ const signature = rows[0].signature.toString();
+ const timestamp = rows[0].timestamp.toString();
+ weixin.config({
+ beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
+ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+ appId, // 必填,公众号的唯一标识
+ timestamp, // 必填,生成签名的时间戳 <%= Html.Encode(ViewData["timestamp" ]) %>
+ nonceStr, // 必填,生成签名的随机串
+ signature, // 必填,签名
+ jsApiList: ['checkJsApi', 'scanQRCode'], // 必填,需要使用的JS接口列表, 这里只需要调用扫一扫
+ });
+ weixin.ready(() => {
+ weixin.checkJsApi({ // 判断当前客户端版本是否支持指定JS接口
+ jsApiList: ['scanQRCode'],
+ success(res) { // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"}
+ console.log(res);
+ if (res.checkResult.scanQRCode !== true) {
+ Toast.fail(`URL不对,当前URL:${myUrl}请使用正式地址!`);
+ }
+ },
+ // eslint-disable-next-line no-unused-vars
+ fail(res) { // 检测getNetworkType该功能失败时处理
+ Toast.fail('checkJsApi error');
+ },
+
+
+ }); // wx.ready结束
+ weixin.scanQRCode({
+ desc: 'scanQRCode desc',
+ needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
+ scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
+ success(res) {
+ // console.log("调用扫描成功",res);
+ scanResult = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
+ if (commonUtils.isNotEmptyObject(scanResult)) {
+ const codeResult = scanResult.split(',');
+ if (codeResult.length > 1) {
+ scanResult = codeResult[1];
+ }
+ }
+ successHandler(scanResult);
+ // return scanResult;
+ // console.log('微信扫码结果:', scanResult);
+ },
+ error(res) {
+ // console.log(res);
+ if (res.errMsg.indexOf('function_not_exist') > 0) {
+ Toast.fail('版本过低请升级');
+ }
+ },
+ });
+ });
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ return scanResult;
+ }
+
+ handleWxScan = async () => {
+ this.handleGetWxCode((code) => {
+ if (!commonUtils.isEmpty(code)) {
+ this.handleSearch(code, 'searchScan');
+ this.setState({
+ scanValue: code,
+ });
+ }
+ });
+ }
+
+ handleChangleInput = (value) => {
+ this.setState({ scanValue: value });
+ }
+ // setTextInputRef = (element) => {
+ // this.textInput = element;
+ // };
+
+ handleCancel = () => {
+ this.setState({ scanValue: '' });
+ this.handleSearch('');
+ }
+
+ /** 修改主表数据 */
+ handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData) => {
+ this.props.onChange('master', sFieldName, changeValue, sId, dropDownData);
+ };
+ handleFilterSearch = (value) => {
+ const { masterData, slaveFilterCondition: slaveFilterConditionOld, slaveConfig } = this.props;
+ if (commonUtils.isNotEmptyArr(masterData) && commonUtils.isNotEmptyArr(slaveFilterConditionOld)) {
+ // eslint-disable-next-line array-callback-return
+ slaveFilterConditionOld.map(async (item) => {
+ let filterOne = {};
+ if (commonUtils.isNotEmptyArr(value)) {
+ filterOne = value.filter(e => item.bFilterName === e.sName);
+ }
+ if (commonUtils.isNotEmptyArr(filterOne) && filterOne[0].sDropDownType === 'sql') {
+ item.bFilterValue = masterData[item.bFilterName][0] ? masterData[item.bFilterName][0] : item.bFilterValue;
+ } else {
+ item.bFilterValue = masterData[item.bFilterName] ? masterData[item.bFilterName] : item.bFilterValue;
+ }
+ });
+ }
+ this.props.onGetData(slaveConfig, slaveFilterConditionOld);
+ this.setState({ modal1: false });
+ }
+ handleFilterSearchCancle = () => {
+ let { slaveFilterCondition: slaveFilterConditionOld } = this.props;
+ const { slaveConfig, masterData } = this.props;
+ if (commonUtils.isNotEmptyArr(slaveFilterConditionOld)) {
+ // eslint-disable-next-line array-callback-return
+ slaveFilterConditionOld.map((item) => {
+ masterData[item.bFilterName] = '';
+ });
+ this.props.onSaveState({
+ masterData,
+ label: '',
+ });
+ slaveFilterConditionOld = [];
+ this.props.onGetData(slaveConfig, slaveFilterConditionOld);
+ }
+ this.setState({ modal1: false });
+ }
+ render() {
+ const {
+ label, initData, show, slavePagination, token, slaveFilterCondition, slaveConfig, showScan, app, sModelsId, masterData,
+ } = this.props;
+ const showName = [];
+ const solutionData = [];
+ if (commonUtils.isNotEmptyArr(slaveFilterCondition) && commonUtils.isNotEmptyArr(slaveConfig)) {
+ const slaveConfigData = slaveConfig.gdsconfigformslave;
+ // eslint-disable-next-line array-callback-return,no-unused-vars
+ slaveFilterCondition.map((item, index) => {
+ const iIndex = slaveConfigData.findIndex(i => i.sName === item.bFilterName);
+ if (iIndex > -1) {
+ solutionData.push(slaveConfigData[iIndex]);
+ showName.push(slaveConfigData[iIndex].showName);
+ }
+ });
+ }
+ const total = commonUtils.isEmptyObject(slavePagination) ? 0 : slavePagination.total;
+ const showlabel = commonUtils.isEmptyObject(label) ? '全部数据' : label;
+ const downUrl = `${commonConfig.file_host}file/download?savePathStr=/home/monkey/xlyerp/modlePath/Down.png&sModelsId=100&token=${token}`;
+ const upUrl = `${commonConfig.file_host}file/download?savePathStr=/home/monkey/xlyerp/modlePath/Up.png&sModelsId=100&token=${token}`;
+ const imgUrl = show ? upUrl : downUrl;
+ const tabs = [
+ { title: 筛选
},
+ {
+ title:
+ {showlabel}
+
+ ,
+ },
+ ];
+ const menuEl = (
+
+ );
+ const loadingEl = (
+
+ );
+
+ return (
+
+
+
+
{ this.inputSearch = el; }}
+ />
+
+
{ console.log('onChange', index, tab); }}
+ onTabClick={(tab, index) => {
+ if (index === 1) {
+ this.handleClick();
+ } else {
+ this.setState({
+ modal1: true,
+ });
+ this.props.onSaveState({
+ show: false,
+ });
+ }
+ }}
+ >
+
+
+
+
+
+
+ {show ? initData ? menuEl : loadingEl : null}
+ {show ?
: null}
+
+
+
{ alert('afterClose'); }}
+ >
+
+ `${showlabel}`}>
+ {
+ solutionData.map((item, index) => {
+ const showTypeProps = {
+ app,
+ record: {},
+ sId: item.sId, /* 修改当前编号(数据格式:字符串) */
+ name: 'slave',
+ form: this.props.form,
+ formId: sModelsId,
+ getSqlDropDownData: this.props.getSqlDropDownData,
+ getSqlCondition: this.props.getSqlCondition,
+ handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord,
+ getFloatNum: this.props.getFloatNum,
+ getDateFormat: this.props.getDateFormat,
+ onChange: this.handleMasterChange,
+ showConfig: item,
+ formItemLayout: {},
+ textArea: false,
+ enabled: true,
+ dataValue: commonUtils.isNotEmptyObject(masterData) ? masterData[item.sName] : '',
+ bTable: true,
+ onFilterDropDownData: this.props.onFilterDropDownData,
+ onSaveState: this.props.onSaveState,
+ };
+ return (
+
+ {/* eslint-disable-next-line react/no-array-index-key */}
+
+
+
+
+
+ );
+ })
+ }
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+const CommobileSearchComponentMobile = createForm()(CommobileSearchComponent);
+export default CommobileSearchComponentMobile;
+
diff --git a/src/mobile/common/CommobileStep.js b/src/mobile/common/CommobileStep.js
new file mode 100644
index 0000000..665b9e6
--- /dev/null
+++ b/src/mobile/common/CommobileStep.js
@@ -0,0 +1,195 @@
+/* eslint-disable prefer-destructuring */
+/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */
+import React from 'react';
+import { Steps } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import CommobileBase from '../../mobile/common/CommobileBase';
+import CommobileListEvent from './CommobileListEvent';
+import * as commonUtils from '../../utils/utils';
+
+const Step = Steps.Step;
+const warningIcon = () => (
+
+);
+const finishIcon = () => (
+
+);
+const errorIcon = () => (
+
+);
+
+
+// eslint-disable-next-line react/require-render-return
+class CommobileStep extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ // isLoading: false,
+ };
+ }
+ onClose = key => () => {
+ this.setState({
+ [key]: false,
+ });
+ }
+
+
+ render() {
+ const { sSlaveId, slaveData } = this.props; /* 工单号 */
+ const iIndex = slaveData.findIndex(item => item.sSlaveId === sSlaveId);
+ let slaveDataRow = {};
+ if (iIndex > -1) {
+ slaveDataRow = slaveData[iIndex];
+ const sPartNameStatus = slaveDataRow.sPartNameStatus; /* 工单状态 */
+ const sPartItem = commonUtils.isNotEmptyObject(sPartNameStatus) ? sPartNameStatus.split('->') : '';
+ return (
+
+
+ {
+ commonUtils.isNotEmptyObject(sPartNameStatus) ?
+
+ {
+ // eslint-disable-next-line array-callback-return
+ sPartItem.map((t) => {
+ // const sPartItemLength = sPartItem.length;
+ const ArrItemStr = t.split('#')[0];
+ const ArrItemNum = t.split('#')[1];
+ const ArrItemName = t.split('#')[2];
+ const ArrItemBanZhu = t.split('#')[3];
+ const ArrItemTime = t.split('#')[4];
+ const ArrItemPCNum = t.split('#')[5];
+ const ArrItemSBNum = t.split('#')[6];
+ let ArrItemNumChange = '';
+ let icon = null;
+ let status = 'wait';
+ // eslint-disable-next-line no-unused-vars
+ // eslint-disable-next-line default-case
+ switch (Number(ArrItemNum)) {
+ case 0:
+ ArrItemNumChange = '未排程';
+ status = 'error';
+ // eslint-disable-next-line react/jsx-no-undef
+ icon = warningIcon();
+ break;
+ case 1:
+ ArrItemNumChange = '未完成';
+ // icon = ;
+ status = 'error';
+ icon = errorIcon();
+ break;
+ case 2:
+ ArrItemNumChange = '生产中';
+ status = 'process';
+ // icon = ;
+ break;
+ case 3:
+ ArrItemNumChange = '暂停';
+ status = 'wait';
+ // icon = ;
+ break;
+ case 4:
+ ArrItemNumChange = '取消';
+ status = 'wait';
+ break;
+ case 5:
+ // eslint-disable-next-line no-const-assign
+ ArrItemNumChange = '完成';
+ status = 'finish';
+ icon = finishIcon();
+ break;
+ }
+ const title = (
+
+ {ArrItemStr}
+ {ArrItemNumChange}
+
+ );
+ const content = (
+
+
+
机台名称:{ArrItemName}
+
班组名称:{ArrItemBanZhu}
+
+
+
排单时间:{ArrItemTime}
+
排程数量:{ArrItemPCNum}
+
+
+
上报时间:
+
上报数量:{ArrItemSBNum}
+
+
+ );
+
+ return (
+
+ );
+ })
+ }
+ : ''
+ }
+
+
+ );
+ }
+ }
+}
+
+export default CommobileBase(CommobileListEvent(CommobileStep));
diff --git a/src/mobile/common/CommobileSubBill.js b/src/mobile/common/CommobileSubBill.js
new file mode 100644
index 0000000..51250b2
--- /dev/null
+++ b/src/mobile/common/CommobileSubBill.js
@@ -0,0 +1,2867 @@
+/* eslint-disable */
+import React from 'react';
+import weixin from 'weixin-js-sdk';
+import { Flex, Button, ListView, Toast, Tabs, Badge, Modal} from 'antd-mobile';
+import { createForm } from 'rc-form';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import CommobileBase from './CommobileBase';
+import CommobileBillEvent from './CommobileSubBillEvent';
+import CommobileViewMaster from './CommobileViewMaster';
+import commonConfig from '../../utils/config';
+import * as commonUtils from '../../utils/utils';
+import ShowType from './CommobileComponent';
+import CommobileToolBar from './CommobileToolBar';
+import styles from '../mobile.less';
+import add from '../../assets/mobile/add-select.svg';
+import scan from '../../assets/mobile/scanning.svg';
+import close from '../../assets/mobile/close.svg';
+import * as commonFunc from '../../components/Common/commonFunc';
+import BarCodeUtil from './BarCodeUtil';
+import preView from '../components/preView';
+import * as commonServices from "../../services/services";
+import indexStyles from '../../routes/mobile/IndexMobile.less';
+import ModalList from '../components/modal';
+import CommonMobileList from './CommobileModalList';
+
+const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+});
+let _this = {};
+class CommobileBill extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ tabPage: 0,
+ visible: false,
+ baseMasterConfig: {} // 发外masterConfig配置
+ };
+ _this = this;
+ }
+
+ componentDidUpdate(){
+ if (this.props.masterConfig) {
+ if (!this.hasUpdate) {
+ this.hasUpdate = true;
+ const config = this.handleMasterShowInfoConfig(this.state.tabPage);
+ this.setState({ baseMasterConfig: config });
+ }
+ }
+ }
+
+ /* 解析消息 */
+ handleGetMsg = (str) => {
+ const msgArr = commonUtils.isNotEmptyObject(str) ? str.split('xpm'): '';
+ const divStr = [];
+ if(commonUtils.isNotEmptyArr(msgArr)) {
+ for (let i = 0; i < msgArr.length; i ++) {
+ divStr.push({msgArr[i]}
);
+ }
+ }
+ return divStr;
+ }
+
+ handleOutsourcedProcesses = ({sqlDataRow, name, masterdataObj, AssignField}) => {
+ let addRow = {};
+ const data = this.props[`${name}Data`] || [];
+ addRow = commonFunc.getAssignFieldValue(AssignField, masterdataObj);// 取主表赋值字段
+ if (commonUtils.isNotEmptyObject(sqlDataRow)) {
+ addRow = { ...addRow, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+ addRow.sParentId = masterdataObj.sId;
+ addRow.sId = commonUtils.createSid();
+ addRow.handleType = 'add';
+ this.props.onSaveState({ [`${name}Data`]: [...data, addRow] });
+ }
+
+ // eslint-disable-next-line react/sort-comp
+ handleClick = async (name, type, sId) => {
+ if (name === 'BtnSave') {
+ this.props.onSubmit();
+ } else if (name === 'BtnUpd') {
+ this.props.onEdit(name);
+ } else if (type === 'add') {
+ const dataRow = await this.props.onDataRowAdd(name, true);
+ const tableData = [dataRow, ...this.props[`${name}Data`] || []];
+ const tabPage = this.props.handleNameToIndex(name);
+ const masterData = this.props.handleMasterDefaultData(tableData, this.props.isOutsourcedProcesses, tabPage, this.props.masterData);
+ this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [dataRow.sId], masterData });
+ } else if (type === 'del') {
+ const { app, [`${name}Data`]: tableData } = this.props;
+ let { [`${name}DelData`]: tableDelData } = this.props;
+ tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData;
+ if (sId !== '') {
+ const tableDataIndex = tableData.findIndex(item => item.sId === sId);
+ const otherData = {};
+ const { sModelsId, slaveData } = this.props;
+ if (this.props.isOutsourcedProcesses && name === 'slaveChild') {
+ if (!isNaN(Number(slaveData?.[0]?.dAuxiliaryQty)) && !isNaN(Number(tableData[tableDataIndex]?.dAuxiliaryQty))) {
+ const value = (Number(slaveData?.[0]?.dAuxiliaryQty) - Number(tableData[tableDataIndex]?.dAuxiliaryQty)).toFixed(2);
+ otherData.slaveData = [{...slaveData?.[0] || {}, dAuxiliaryQty: value.toString() }];
+ }
+ }
+ if (tableDataIndex > -1) {
+ const slaveDataFilter = tableData[tableDataIndex];
+ tableData.splice(tableDataIndex, 1);
+ slaveDataFilter.handleType = 'del';
+ tableDelData.push(slaveDataFilter);
+ }
+ const tabPage = this.props.handleNameToIndex(name);
+ const masterData = this.props.handleMasterDefaultData(tableData, this.props.isOutsourcedProcesses, tabPage, this.props.masterData);
+ this.props.onSaveState({
+ masterData,
+ [`${name}Data`]: tableData,
+ [`${name}DelData`]: tableDelData,
+ [`${name}SelectedRowKeys`]: [],
+ ...otherData,
+ });
+ } else {
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据
+ }
+ } else if (name === 'BtnScan') {
+ BarCodeUtil.startScan(async (type, code) => {
+ const {
+ slaveConfig, sModelsId, masterData, sModelsType, masterConfig, slaveChildConfig, slaveChildData,
+ } = this.props;
+ let { slaveData } = this.props;
+ if(commonUtils.isNotEmptyObject(slaveChildConfig)) {
+ slaveData = slaveChildData;
+ }
+ const addState = {};
+ /* 规则定义
+ 材料
+ sDefineNo: codeArr[0], --唯一码
+ sMaterialsName: codeArr[1], --材料名称
+ sMaterialsStyle: codeArr[2], --材料规格
+ dAuxiliaryQty: codeArr[3], --数量
+ sWareHouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sMaterialsId: codeArr[8], --材料ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10], --sLocationId
+ 成品
+ sDefineNo: codeArr[0], --唯一码
+ sProductName: codeArr[1], --产品名称
+ sProductStyle: codeArr[2], --产品规格
+ dProductQty: codeArr[3], --产品数量
+ sWarehouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --仓库名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sProductId: codeArr[8], --产品ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10],
+ sCustomerName: codeArr[11], --客户名称
+ sCustomerShort: codeArr[12],
+ sOrderNo: codeArr[13], --订单号
+ sWorkOrderNo: codeArr[14], --工单号
+ sCustomerOrderNo: codeArr[15], --客户编号
+ sCustomerProductNo: codeArr[16], --客户产品编号
+ */
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ let masterDataObjAdd = {};
+ if (commonUtils.isEmptyObject(code)) {
+ Toast.fail('二维码扫码失败!', 1);
+ return;
+ }
+ const codeArr = code.split('|');
+ let models = '';
+ if (codeArr.length === 12) { /* 材料 */
+ models = 'Materials';
+ } else if (codeArr.length === 17) { /* 成品 */
+ models = 'Product';
+ } else {
+ models = 'Single'; /* 单一的 */
+ }
+ if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */
+ /* 取第一条码 */
+ const sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ const sDefineNoName = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sActiveKey : 'sDefineNo';
+
+ masterdataObj = {
+ ...masterData, [sDefineNoName] : code
+ };
+ /* 唯一码调接口 */
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+ slaveDataObj.sParentId = masterdataObj.sId;
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1][sDefineNoName];
+ const { handleType } = slaveData[len - 1];
+ /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ if (commonUtils.isEmptyObject(sDefineNoNew)) {
+ slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ // slaveData[len - 1] = slaveDataObj;
+ slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj};
+ } else {
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ } else {
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ }
+ } else if (models === 'Materials') { /* sModelsType === 'materialsStock/productionmaterials' */
+ /* 取第一条码 */
+ const sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1;
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined;
+ // const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sDefineNo: codeArr.length > 0 ? codeArr[0] : '',
+ sMaterialsName: codeArr.length > 1 ? codeArr[1] : '',
+ sMaterialsStyle: codeArr.length > 2 ? codeArr[2] : '',
+ dAuxiliaryQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0) : '',
+ sDefineNo2: codeArr.length > 6 ? codeArr[6] : '',
+ sMaterialsId: codeArr.length > 8 ? codeArr[8] : '',
+ sWareHouseId: codeArr.length > 9 ? codeArr[9] : '',
+ sLocationId: codeArr.length > 10 ? codeArr[10] : '',
+ dMaterialsQty: codeArr.length > 11 ? commonUtils.isNull(Number(codeArr[11]), 0) : '',
+ tInStoreDate: dateStr,
+ };
+ masterdataObj = {
+ ...masterData, ...slaveDataObjAdd,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1);
+ // if(commonUtils.isEmptyArr(btnScanConfigs)) {
+ // Toast.fail('请配置扫码按钮!!!', 1);
+ // return;
+ // }
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] };
+ }
+ }
+ slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+
+ // slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.iOrder = 1;
+ console.log('slaveDataObj1111', slaveDataObj);
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId');
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId');
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : '';
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+
+ let materialsNameDropDownData = [];
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') {
+ materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ // }
+ let materialsNameDataOne;
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ if (!commonUtils.isEmpty(materialsNameDropDownData)) {
+ if (codeArr.length > 1) {
+ materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[1]);
+ }
+ }
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ if (codeArr.length > 4) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]);
+ }
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ if (codeArr.length > 5) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]);
+ }
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterdataObj;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let materialsDataDetiale = {};
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) };
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...slaveDataObj,
+ ...onDataRowAdd,
+ ...materialsDataDetiale,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = { ...masterdataObj, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale };
+ } else if (sModelsType === 'Product') { // 扫码待发货 sales/salesSgoods
+ /* 取第一条码 */
+ const sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1;
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined;
+ slaveDataObjAdd = {
+ sCustomerShort: codeArr.length > 12 ? codeArr[12] : '',
+ sOrderNo: codeArr.length > 13 ? codeArr[13] : '',
+ sWorkOrderNo: codeArr.length > 14 ? codeArr[14] : '',
+ sCustomerOrderNo: codeArr.length > 15 ? codeArr[15] : '',
+ sCustomerProductNo: codeArr.length > 13 ? codeArr[16] : '',
+ sDefineNo: codeArr.length > 0 ? codeArr[0] : '',
+ sDefineNo2: codeArr.length > 6 ? codeArr[6] : '',
+ dProductQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0): '',
+ tInStoreDate: dateStr,
+ };
+ masterdataObj = {
+ ...masterData, ...slaveDataObjAdd,
+ };
+ // masterDataObjAdd = {
+ // sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', sDefineNo: sDefineNo,
+ // };
+ /* 读取多条扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] };
+ }
+ }
+ /* 唯一码调接口 */
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+ // slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.iOrder = 1;
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位
+ const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称
+
+
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+ const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : '';
+
+
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ let sProductNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') {
+ sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData);
+ }
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ let sProductNameDataOne;
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ if (codeArr.length > 4) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]);
+ }
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ if (codeArr.length > 5) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]);
+ }
+ }
+ if (!commonUtils.isEmpty(sProductNamedropDownData)) {
+ if (codeArr.length > 1) {
+ sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[1]);
+ }
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ let sProductNameDataDetiale = {};
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...slaveDataObj,
+ ...onDataRowAdd,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sProductNameDataDetiale,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = {
+ ...masterData,
+ ...sLocationNameDataDetiale,
+ ...masterDataObjAdd,
+ ...sWareHouseNameDataDetiale,
+ };
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (models !== 'Single') {
+ slaveData.push(slaveDataObj);
+ }
+ if(commonUtils.isNotEmptyObject(slaveChildConfig)) {
+ addState.slaveChildData = slaveData;
+ }else {
+ addState.slaveData = slaveData;
+ }
+
+ this.props.onSaveState({ masterData: masterdataObj, ...addState});
+ });
+ } else if (type === 'scan' || name === 'BtnScan' || name === 'BtnScanPda') {
+ console.log('dddd', name);
+ BarCodeUtil.startScan(async (type, code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveChildData:slaveData, sModelsType, masterConfig, slaveChildConfig,
+ } = this.props;
+ /* 规则定义
+ 材料
+ sDefineNo: codeArr[0], --唯一码
+ sMaterialsName: codeArr[1], --材料名称
+ sMaterialsStyle: codeArr[2], --材料规格
+ dAuxiliaryQty: codeArr[3], --数量
+ sWareHouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sMaterialsId: codeArr[8], --材料ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10], --sLocationId
+ 成品
+ sDefineNo: codeArr[0], --唯一码
+ sProductName: codeArr[1], --产品名称
+ sProductStyle: codeArr[2], --产品规格
+ dProductQty: codeArr[3], --产品数量
+ sWarehouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --仓库名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sProductId: codeArr[8], --产品ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10],
+ sCustomerName: codeArr[11], --客户名称
+ sCustomerShort: codeArr[12],
+ sOrderNo: codeArr[13], --订单号
+ sWorkOrderNo: codeArr[14], --工单号
+ sCustomerOrderNo: codeArr[15], --客户编号
+ sCustomerProductNo: codeArr[16], --客户产品编号
+ */
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ let masterDataObjAdd = {};
+ if (commonUtils.isEmptyObject(code)) {
+ Toast.fail('二维码扫码失败!', 1);
+ return;
+ }
+ const codeArr = code.split('|');
+ let models = '';
+ if (codeArr.length === 12) { /* 材料 */
+ models = 'Materials';
+ } else if (codeArr.length === 17) { /* 成品 */
+ models = 'Product';
+ } else {
+ models = 'Single'; /* 单一的 */
+ }
+ if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */
+ /* 取第一条码 */
+ let sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ /* 读取扫码配置 */
+ let btnScanConfigs;
+ if ( name === 'BtnScan' || name === 'BtnScanPda') {
+ btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sControlName.indexOf('_pda') > -1);
+ if(name === 'BtnScan' && commonUtils.isEmptyArr(btnScanConfigs)) {
+ btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1);
+ }
+ } else {
+ if (this.props.isOutsourcedProcesses) {
+ const config = this.props[`${name}Config`] || {};
+ btnScanConfigs = config.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1);
+ } else {
+ btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1);
+ }
+ }
+
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ const sDefineNoName = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sActiveKey : 'sDefineNo';
+
+ masterdataObj = {
+ ...masterData, [sDefineNoName] : code
+ };
+ /* 唯一码调接口 */
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+
+ if( name === 'BtnScanPda' || name ==='BtnScan') {
+ if (commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ this.handleSqlDropDownData({
+ sqlDropDownData,
+ fieldConfig: {...btnScanConfigs?.[0] || [], sName: sDefineNoName},
+ masterdataObj,
+ slaveDataNew: slaveData,
+ sFieldName: sDefineNoName,
+ })
+ return;
+ }
+ }
+
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ if (this.props.isOutsourcedProcesses) {
+ this.handleOutsourcedProcesses({sqlDataRow, name, masterdataObj, AssignField});
+ return;
+ }
+ const allTableData = {};
+ allTableData.master = masterData;
+ allTableData.slave = commonUtils.isNotEmptyArr(this.props.slaveData) ? this.props.slaveData[0] : {};
+ slaveDataObj = commonFunc.getDefaultData(slaveChildConfig, allTableData);
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+ slaveDataObj.sParentId = masterdataObj.sId;
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1][sDefineNoName];
+ const { handleType } = slaveData[len - 1];
+ /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ if (commonUtils.isEmptyObject(sDefineNoNew)) {
+ slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ // slaveData[len - 1] = slaveDataObj;
+ slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj};
+ } else {
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.handleType = 'add';
+ slaveData.unshift(slaveDataObj);
+ }
+ } else {
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.handleType = 'add';
+ slaveData.unshift(slaveDataObj);
+ }
+ if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ }
+ } else if (models === 'Materials') { /* sModelsType === 'materialsStock/productionmaterials' */
+ /* 取第一条码 */
+ const sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1;
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined;
+ // const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sDefineNo: codeArr.length > 0 ? codeArr[0] : '',
+ sMaterialsName: codeArr.length > 1 ? codeArr[1] : '',
+ sMaterialsStyle: codeArr.length > 2 ? codeArr[2] : '',
+ dAuxiliaryQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0) : '',
+ sDefineNo2: codeArr.length > 6 ? codeArr[6] : '',
+ sMaterialsId: codeArr.length > 8 ? codeArr[8] : '',
+ sWareHouseId: codeArr.length > 9 ? codeArr[9] : '',
+ sLocationId: codeArr.length > 10 ? codeArr[10] : '',
+ dMaterialsQty: codeArr.length > 11 ? commonUtils.isNull(Number(codeArr[11]), 0) : '',
+ tInStoreDate: dateStr,
+ };
+ masterdataObj = {
+ ...masterData, ...slaveDataObjAdd,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1);
+ // if(commonUtils.isEmptyArr(btnScanConfigs)) {
+ // Toast.fail('请配置扫码按钮!!!', 1);
+ // return;
+ // }
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] };
+ }
+ }
+ slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+
+ // slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.iOrder = 1;
+ console.log('slaveDataObj1111', slaveDataObj);
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId');
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId');
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : '';
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+
+ let materialsNameDropDownData = [];
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') {
+ materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ // }
+ let materialsNameDataOne;
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ if (!commonUtils.isEmpty(materialsNameDropDownData)) {
+ if (codeArr.length > 1) {
+ materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[1]);
+ }
+ }
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ if (codeArr.length > 4) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]);
+ }
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ if (codeArr.length > 5) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]);
+ }
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterdataObj;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let materialsDataDetiale = {};
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) };
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...slaveDataObj,
+ ...onDataRowAdd,
+ ...materialsDataDetiale,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = { ...masterdataObj, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale };
+ } else if (sModelsType === 'Product') { // 扫码待发货 sales/salesSgoods
+ /* 取第一条码 */
+ const sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1;
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined;
+ slaveDataObjAdd = {
+ sCustomerShort: codeArr.length > 12 ? codeArr[12] : '',
+ sOrderNo: codeArr.length > 13 ? codeArr[13] : '',
+ sWorkOrderNo: codeArr.length > 14 ? codeArr[14] : '',
+ sCustomerOrderNo: codeArr.length > 15 ? codeArr[15] : '',
+ sCustomerProductNo: codeArr.length > 13 ? codeArr[16] : '',
+ sDefineNo: codeArr.length > 0 ? codeArr[0] : '',
+ sDefineNo2: codeArr.length > 6 ? codeArr[6] : '',
+ dProductQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0): '',
+ tInStoreDate: dateStr,
+ };
+ masterdataObj = {
+ ...masterData, ...slaveDataObjAdd,
+ };
+ // masterDataObjAdd = {
+ // sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', sDefineNo: sDefineNo,
+ // };
+ /* 读取多条扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] };
+ }
+ }
+ /* 唯一码调接口 */
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+ // slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.iOrder = 1;
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位
+ const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称
+
+
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+ const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : '';
+
+
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ let sProductNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') {
+ sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData);
+ }
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ let sProductNameDataOne;
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ if (codeArr.length > 4) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]);
+ }
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ if (codeArr.length > 5) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]);
+ }
+ }
+ if (!commonUtils.isEmpty(sProductNamedropDownData)) {
+ if (codeArr.length > 1) {
+ sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[1]);
+ }
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ let sProductNameDataDetiale = {};
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...slaveDataObj,
+ ...onDataRowAdd,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sProductNameDataDetiale,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = {
+ ...masterData,
+ ...sLocationNameDataDetiale,
+ ...masterDataObjAdd,
+ ...sWareHouseNameDataDetiale,
+ };
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (models !== 'Single') {
+ slaveData.push(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveChildData:slaveData, masterData: masterdataObj });
+ });
+ } else if (type === 'scan1') {
+ BarCodeUtil.startScan(async (type, code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveData, sModelsType,
+ } = this.props;
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ let masterDataObjAdd = {};
+ const codeArr = code.split('|');
+ if (sModelsType === 'materialsStock/productionmaterials') {
+ const dataStr = codeArr[10].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sMaterialsStyle: codeArr[1],
+ sDefineNo: codeArr[4],
+ sDefineNo2: codeArr[5],
+ dAuxiliaryQty: codeArr[7],
+ tInStoreDate: date,
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId');
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId');
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : '';
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+
+ let materialsNameDropDownData = [];
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') {
+ materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ // }
+ let materialsNameDataOne;
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ if (!commonUtils.isEmpty(materialsNameDropDownData)) {
+ materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]);
+ }
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let materialsDataDetiale = {};
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) };
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...materialsDataDetiale,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale };
+ } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货
+ const dataStr = codeArr[12].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sOrderNo: codeArr[9],
+ sWorkOrderNo: codeArr[8],
+ sCustomerOrderNo: codeArr[10],
+ sCustomerProductNo: codeArr[11],
+ sDefineNo: codeArr[3],
+ sDefineNo2: codeArr[4],
+ dProductQty: codeArr[6],
+ tInStoreDate: date,
+ };
+ masterDataObjAdd = {
+ sCustomerShort: codeArr[7],
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位
+ const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称
+
+
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+ const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : '';
+
+
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ let sProductNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') {
+ sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData);
+ }
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ let sProductNameDataOne;
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sProductNamedropDownData)) {
+ sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ let sProductNameDataDetiale = {};
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sProductNameDataDetiale,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = {
+ ...masterData,
+ ...sLocationNameDataDetiale,
+ ...masterDataObjAdd,
+ ...sWareHouseNameDataDetiale,
+ };
+ } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */
+ const { masterConfig } = this.props;
+ /* 取第一条码 */
+ const sDefineNo = codeArr[0];
+ /* 如果条码已存在,提示 */
+ const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ if (iIndex > -1) {
+ Toast.fail('条码已存在!!!', 1);
+ return;
+ }
+ masterdataObj = {
+ ...masterData,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] };
+ }
+ }
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ const { handleType } = slaveData[len - 1];
+ /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ slaveData[len - 1] = slaveDataObj;
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ }
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') {
+ slaveData.push(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveData, masterData: masterdataObj });
+ });
+ } else if (commonUtils.isNotEmptyObject(name) && name.includes('BtnScan')) { /* 主表 扫流转码 */
+ BarCodeUtil.startScan(async (type, code) => {
+ const { masterConfig } = this.props;
+ let { masterData } = this.props;
+ let masterdataObj = {};
+ const codeArr = code.split('|');
+ if (commonUtils.isNotEmptyObject(codeArr)) { /* 扫流转码功能 */
+ /* 取第一条码 */
+ const sDefineNo = codeArr[0];
+ /* 如果条码已存在,提示 */
+ masterData.sDefineNo = sDefineNo;
+ masterdataObj = {
+ ...masterData,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ masterData = { ...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType;
+ // this.handleClick('slave', 'scan'); /* 连续扫码 */
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ this.props.onSaveState({ masterData });
+ });
+ } else if (name === 'BtnCamera') { /* 手机调动摄像头拍照 */
+ this.handleCamera();
+ } else if (name === 'BtnPhoto') { /* 手机相册选择图片 */
+ this.handleGetPhoto();
+ } else if (name === 'BtnCancel') {
+ window.history.back(-1);
+ } else if (name === 'BtnExamine') {
+ this.props.onAudit(1);
+ } else if (name === 'BtnCancelExamine') {
+ /* 销审 */
+ this.props.onAudit(0);
+ } else if (name && name.includes('BtnCalc')) { /* 实现通用计算功能 */
+ const { masterConfig, masterData, sModelsId, } = this.props;
+ const btnConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name))) ?
+ masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name))[0] : {};// sButtonEnabled sButtonParam
+ if(commonUtils.isNotEmptyObject(btnConfig)) {
+ /* 组装allTableData */
+ const allTableMap ={};
+ const allReturnMap ={};
+ const slaveNameList = [];
+ /* 从props找到 所有的Config */
+ if(commonUtils.isNotEmptyArr(this.props)) {
+ for (const key of Object.keys(this.props)) {
+ if(key.includes('Config') && !key.includes('onGet') && !key.includes('report')) {
+ const tablename = key.replace('Config', '').trim();
+ slaveNameList.push(tablename);
+ }
+ }
+ }
+
+ if (commonUtils.isNotEmptyArr(slaveNameList)) {
+ slaveNameList.forEach((name, index) => {
+ const tableConfig = this.props[name +'Config']; /* 动态配置 */
+ const tableData = this.props[name +'Data']; /* 动态配置 */
+ const tableSelectedRowKeys = this.props[name + 'SelectedRowKeys']; /* 选中Key1 */
+ if(commonUtils.isNotEmptyObject(tableConfig) && name !=='slaveSum') {
+ allTableMap[name +'.'+ tableConfig.sTbName] = tableData
+ }
+
+ })
+ const masterTbName = masterConfig.sTbName;
+ allTableMap['master.'+ masterTbName] = masterData;
+ }
+ const sButtonParam = btnConfig.sButtonParam;
+ const btn = commonUtils.isJSON(sButtonParam) ? JSON.parse(sButtonParam) : '';
+ const sProName = btn.sproName;
+ const url = `${commonConfig.server_host}calcprocedure/calc?sModelsId=${sModelsId}`;
+ const value = {
+ sProName,
+ sButtonParam,
+ allTableMap
+ };
+ const dataReturn = (await commonServices.postValueService(this.props.app.token, value, url)).data;
+ if (dataReturn.code === 1) {
+ /* 数据操作 数据回传页面 */
+ // Tos.success('操作成功!');
+ const returnData = dataReturn.dataset.rows[0];
+ console.log('返回数据:', returnData);
+ if (commonUtils.isNotEmptyArr(slaveNameList) && commonUtils.isNotEmptyObject(returnData)) {
+ slaveNameList.forEach((name, index) => {
+ const tableConfig = this.props[name +'Config']; /* 动态配置 */
+ let tableDelData = this.props[name +'DelData'];
+ if(commonUtils.isEmptyArr(tableDelData)) {
+ tableDelData = [];
+ }
+ let tableDelDataNew = []
+ let tableData = [];
+ if(commonUtils.isNotEmptyObject(tableConfig)) {
+ tableData = returnData[name +'.'+ tableConfig.sTbName]; /* 动态配置 */
+ if(commonUtils.isNotEmptyArr(tableData) && Array.isArray(tableData)) {
+ tableDelDataNew = tableData.filter(item => item.handleType === 'del');
+ tableData = tableData.filter(item => item.handleType !== 'del');
+ tableDelData = tableDelData.concat(tableDelDataNew);
+ }
+
+ }
+ allReturnMap[name +'Data'] = tableData;
+ allReturnMap[name +'DelData'] = tableDelData;
+ });
+ const masterTbName = masterConfig.sTbName;
+ allReturnMap.masterData = returnData['master.'+ masterTbName];
+ allReturnMap.masterData.enabled = true;
+ }
+ this.props.onSaveState({ ...allReturnMap });
+ }else if (dataReturn.code === -8 || dataReturn.code === 2) {
+ Toast.info(dataReturn.msg);
+ // Modal.info({
+ // title: '温馨提示:',
+ // content: (
+ //
+ // {this.handleGetMsg(dataReturn.msg)}
+ //
+ // ),
+ // okText: '确认',
+ // onOk() {},
+ // });
+ } else { /* 失败 */
+ this.props.getServiceError(dataReturn);
+ }
+
+ }
+ } else if(name ==='BtnInput') { /* 弹出虚拟键盘 */
+ const { currentConfig, masterConfig } = this.props;
+ plus?.key?.showSoftKeybord();
+ const allReturnMap = {};
+ if(commonUtils.isNotEmptyObject(currentConfig)) {
+ const field = document.getElementById(currentConfig.sName);
+ if(field) {
+ field.focus();
+ const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === currentConfig.sName);
+ if(iIndex > -1) {
+ masterConfig.gdsconfigformslave[iIndex] ={
+ ...masterConfig.gdsconfigformslave[iIndex], bNotSearch:false };
+ }
+
+ }
+ }
+ allReturnMap.masterConfig = masterConfig;
+ this.props.onSaveState({ bOpenKeyboard: true, ...allReturnMap})
+ } else if (name === 'BtnRefresh') {
+ this.props.onButtonClick('BtnRefresh');
+ }
+ }
+ handleCamera = () => {
+ BarCodeUtil.getImage();
+ }
+ handleGetPhoto = () => {
+ BarCodeUtil.getPhoto();
+ }
+
+ /**pda扫码数据 */
+ fieldConfig = React.createRef();
+ masterdataObj = React.createRef();
+ ModalList = React.createRef();
+ selectedRowkeys = React.createRef();
+ cancelValue = React.createRef();
+
+ modalProps = {
+ title: 请选择
,
+ cancelAction: () => this.cancelAction(),
+ submitAction: () => {
+ this.handleAddPdaValue(this.selectedRowkeys.current);
+ this.setState({ visible: false });
+ },
+ };
+
+ setSelectedRowkeys = (v) => {
+ this.selectedRowkeys.current = v;
+ }
+ /**打开弹窗 */
+ openModalList = () => {
+ this.setState({ visible: true });
+ }
+
+ handleMasterFieldScan = (fieldConfig, tbName, record, newValue, cancelValue) => {
+ this.cancelValue.current = cancelValue;
+ this.handlePdaFieldScan(fieldConfig, tbName, record, newValue); /* PDA扫码逻辑 */
+ }
+
+ clearCache = () => {
+ this.fieldConfig.current = null;
+ this.masterdataObj.current = null;
+ }
+
+ /**
+ * 关闭弹框
+ */
+ cancelAction = () => {
+ this.setSelectedRowkeys(null);
+ this.cancelValue.current && this.cancelValue.current();
+ this.clearCache();
+ this.setState({ visible: false });
+ }
+
+ filterSlaveData = (v) => {
+ if (!this.fieldConfig.current) return [];
+ const sFieldName = this.fieldConfig.current.sName;
+ const dataName = this.handlePdaDataName();
+ const { [dataName]: data } = this.props;
+ return v.filter(i => i && !data?.find(j => j && j[sFieldName] === i[sFieldName]));
+ }
+
+ handlePdaDataName = () => {
+ if (this.props.isOutsourcedProcesses) {
+ return {
+ 0: 'slaveChildData',
+ 1: 'slave0Data',
+ 2 : 'slaveData',
+ }[this.state.tabPage]
+ } else {
+ return 'slaveChildData';
+ }
+ }
+
+ /**
+ * pda 扫描
+ * @returns
+ */
+ handlePdaFieldScan = async (fieldConfig, tbName, record, newValue) => {
+ const {
+ sModelsId, masterData,
+ } = this.props;
+ const dataName = this.handlePdaDataName();
+ const { [dataName]: slaveDataNew } = this.props;
+ const code = newValue;
+ if (commonUtils.isEmptyObject(code) || typeof code !== 'string') {
+ return;
+ }
+ if (commonUtils.isEmptyObject(fieldConfig)) {
+ Toast.fail('未配置PDA!');
+ return;
+ }
+ const sFieldName = fieldConfig.sName;
+ let masterdataObj = masterData;
+ masterdataObj = {
+ ...masterData, [sFieldName]: code,
+ };
+ let sqlDropDownData;
+ try {
+ sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', fieldConfig, masterdataObj, 'pda');
+ } catch (error) {
+ return;
+ }
+ this.handleSqlDropDownData({ sqlDropDownData, fieldConfig, masterdataObj, slaveDataNew, sFieldName });
+ }
+
+ handleSqlDropDownData = (v) => {
+ const { sqlDropDownData, fieldConfig, slaveDataNew, sFieldName } = v;
+ let { masterdataObj } = v;
+ if (!Array.isArray(sqlDropDownData) || commonUtils.isEmptyArr(sqlDropDownData)) {
+ Toast.fail('暂无数据', 1);
+ this.clearCache();
+ return;
+ }
+ this.fieldConfig.current = fieldConfig;
+ this.masterdataObj.current = masterdataObj;
+ if(sFieldName.includes('sLocation') || sFieldName.includes('sSupply') || fieldConfig?.sControlName.includes('Self')) {
+ this.handleAddPdaMaster(sqlDropDownData);
+ return;
+ }
+ if (sqlDropDownData.length === 1) {
+ /* 如果条码已存在,提示 */
+ const iFIndex = commonUtils.isNotEmptyArr(slaveDataNew) ? slaveDataNew.findIndex(item => commonUtils.isNotEmptyObject(item[sFieldName]) && item[sFieldName] === sqlDropDownData[0][sFieldName]) : -1;
+ if (iFIndex > -1) {
+ this.cancelValue.current && this.cancelValue.current();
+ this.cancelValue.current = null;
+ Toast.fail('条码已存在!', 1);
+ this.clearCache();
+ return;
+ }
+ this.setSelectedRowkeys(sqlDropDownData);
+ this.handleAddPdaValue(sqlDropDownData);
+ }else if(sqlDropDownData.length > 1) {
+ /* 数据赋值到主表 */
+ const AssignField = commonUtils.isNotEmptyArr(this.fieldConfig.current) ? this.fieldConfig.current?.sAssignField : '';
+ masterdataObj = {...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDropDownData[0]) };
+ this.masterdataObj.current = masterdataObj;
+ }
+ if(sqlDropDownData.length > 1 ) {
+ this.openModalList();
+ }
+ return;
+ }
+
+ /**
+ * pda扫描添加数据
+ * @returns
+ */
+ handleAddPdaValue = (value) => {
+ const dataName = this.handlePdaDataName();
+ let { [dataName]: slaveDataNew, slaveData: slaveTotalData } = this.props;
+ this.cancelValue.current && this.cancelValue.current();
+ this.cancelValue.current = null;
+ if (!this.fieldConfig.current ||
+ !this.masterdataObj.current ||
+ !Array.isArray(value) || !value.length) {
+ this.clearCache();
+ this.setSelectedRowkeys(null);
+ return
+ };
+ let masterdataObj = this.masterdataObj.current;
+ const sFieldName = this.fieldConfig.current.sName;
+ const AssignField = commonUtils.isNotEmptyArr(this.fieldConfig.current) ? this.fieldConfig.current?.sAssignField : '';
+ if (commonUtils.isEmptyArr(slaveDataNew)) {
+ slaveDataNew = [];
+ }
+ value.forEach((sqlDataRow) => {
+ let slaveDataObj = {};
+ masterdataObj = {...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) };
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段
+ if (commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.handleType = 'add';
+ slaveDataObj.sParentId = masterdataObj.sId;
+ slaveDataObj.sSqlConditionId = commonUtils.isNotEmptyArr(slaveTotalData) ? slaveTotalData[0].sSqlConditionId : '';
+ slaveDataObj.iType = commonUtils.isNull(slaveDataObj.iType, 1);
+ slaveDataNew.unshift(slaveDataObj);
+ });
+ if (commonUtils.isNotEmptyObject(masterdataObj)) {
+ const handleType = commonUtils.isEmpty(masterdataObj.handleType) ? 'update' : masterdataObj.handleType;
+ masterdataObj = { ...masterdataObj, [sFieldName]: '', handleType };
+ }
+ this.clearCache();
+ this.setSelectedRowkeys(null);
+ const masterData = this.props.handleMasterDefaultData(slaveDataNew, this.props.isOutsourcedProcesses, this.state.tabPage, masterdataObj);
+ this.props.onSaveState({ [dataName]: slaveDataNew, masterData });
+ }
+
+ /* PDA扫码库位只将数据赋值到主表,不新增从表 */
+ handleAddPdaMaster = (value) => {
+ let masterdataObj = this.masterdataObj.current;
+ const sFieldName = this.fieldConfig.current.sName;
+ const AssignField = commonUtils.isNotEmptyArr(this.fieldConfig.current) ? this.fieldConfig.current?.sAssignField : '';
+ value.forEach((sqlDataRow) => {
+ masterdataObj = {...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) };
+ });
+ if (commonUtils.isNotEmptyObject(masterdataObj) ) {
+ const handleType = commonUtils.isEmpty(masterdataObj.handleType) ? 'update' : masterdataObj.handleType;
+ if(sFieldName.includes('sLocation') || this.fieldConfig.current?.sControlName.includes('Self')) {
+ masterdataObj = { ...masterdataObj, handleType };
+ } else {
+ masterdataObj = { ...masterdataObj, [sFieldName]: '', handleType };
+ }
+ }
+ this.clearCache();
+ this.setSelectedRowkeys(null);
+ if (sFieldName?.endsWith('_cancel')) {
+ this.cancelValue.current && this.cancelValue.current();
+ }
+ this.props.onSaveState({ masterData: masterdataObj });
+ }
+
+ handleGetWxCode = async (successHandler) => {
+ let scanResult = '';
+ const { app } = this.props;
+ // eslint-disable-next-line prefer-destructuring,no-unused-vars
+ const userinfo = app.userinfo;
+ const myUrl = location.href;
+ const configUrl = `${commonConfig.server_host}wechat/getWxToken`;
+ const values = {
+ url: myUrl,
+ sBrandsId: userinfo.sBrandsId,
+ sSubsidiaryId: userinfo.sSubsidiaryId,
+ };
+ // const values = {
+ // url: myUrl,
+ // sBrandsId: '1111111111',
+ // sSubsidiaryId: '1111111111',
+ // };
+ const configReturn = (await commonServices.postValueService(null, values, configUrl)).data;
+ console.log('configReturn::', configReturn, values);
+ if (configReturn.code === 1) {
+ const { rows } = configReturn.dataset;/* 获取费用分摊单据配置 */
+ if (commonUtils.isNotEmptyArr(rows)) {
+ const appId = rows[0].appId.toString();
+ const nonceStr = rows[0].nonceStr.toString();
+ const signature = rows[0].signature.toString();
+ const timestamp = rows[0].timestamp.toString();
+ weixin.config({
+ beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
+ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+ appId, // 必填,公众号的唯一标识
+ timestamp, // 必填,生成签名的时间戳 <%= Html.Encode(ViewData["timestamp" ]) %>
+ nonceStr, // 必填,生成签名的随机串
+ signature, // 必填,签名
+ jsApiList: ['checkJsApi', 'scanQRCode'], // 必填,需要使用的JS接口列表, 这里只需要调用扫一扫
+ });
+ weixin.ready(() => {
+ weixin.checkJsApi({ // 判断当前客户端版本是否支持指定JS接口
+ jsApiList: ['scanQRCode'],
+ success(res) { // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"}
+ console.log(res);
+ if (res.checkResult.scanQRCode !== true) {
+ Toast.fail(`URL不对,当前URL:${myUrl}请使用正式地址!`);
+ }
+ },
+ // eslint-disable-next-line no-unused-vars
+ fail(res) { // 检测getNetworkType该功能失败时处理
+ Toast.fail('checkJsApi error');
+ },
+
+
+ }); // wx.ready结束
+ weixin.scanQRCode({
+ desc: 'scanQRCode desc',
+ needResult: 0, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
+ scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
+ success(res) {
+ // console.log("调用扫描成功",res);
+ scanResult = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
+ if (commonUtils.isNotEmptyObject(scanResult)) {
+ const codeResult = scanResult.split(',');
+ if (codeResult.length > 1) {
+ scanResult = codeResult[1];
+ }
+ }
+ successHandler(scanResult);
+ // console.log('微信扫码结果:', scanResult);
+ },
+ error(res) {
+ // console.log(res);
+ if (res.errMsg.indexOf('function_not_exist') > 0) {
+ Toast.fail('版本过低请升级');
+ }
+ },
+ });
+ });
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ return scanResult;
+ }
+
+ handleWxScan = async () => {
+ this.handleGetWxCode((code) => {
+ if (!commonUtils.isEmpty(code)) {
+ this.handleWxBusiness(code);
+ }
+ });
+ }
+
+ handleWxBusiness = async (code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveData, sModelsType,
+ } = this.props;
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ let masterDataObjAdd = {};
+ const codeArr = code.split('|');
+ if (sModelsType === 'materialsStock/productionmaterials') {
+ const dataStr = codeArr[10].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sMaterialsStyle: codeArr[1],
+ sDefineNo: codeArr[4],
+ sDefineNo2: codeArr[5],
+ dAuxiliaryQty: codeArr[7],
+ tInStoreDate: date,
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId');
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId');
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : '';
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+
+ let materialsNameDropDownData = [];
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') {
+ materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ // }
+ let materialsNameDataOne;
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ if (!commonUtils.isEmpty(materialsNameDropDownData)) {
+ materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]);
+ }
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let materialsDataDetiale = {};
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) };
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...materialsDataDetiale,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale };
+ } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货
+ const dataStr = codeArr[12].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sOrderNo: codeArr[9],
+ sWorkOrderNo: codeArr[8],
+ sCustomerOrderNo: codeArr[10],
+ sCustomerProductNo: codeArr[11],
+ sDefineNo: codeArr[3],
+ sDefineNo2: codeArr[4],
+ dProductQty: codeArr[6],
+ tInStoreDate: date,
+ };
+ masterDataObjAdd = {
+ sCustomerShort: codeArr[7],
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位
+ const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称
+
+
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+ const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : '';
+
+
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ let sProductNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') {
+ sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData);
+ }
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ let sProductNameDataOne;
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sProductNamedropDownData)) {
+ sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ let sProductNameDataDetiale = {};
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sProductNameDataDetiale,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = {
+ ...masterData,
+ ...sLocationNameDataDetiale,
+ ...masterDataObjAdd,
+ ...sWareHouseNameDataDetiale,
+ };
+ } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */
+ const { masterConfig } = this.props;
+ /* 取第一条码 */
+ const sDefineNo = codeArr[0];
+ /* 如果条码已存在,提示 */
+ const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ if (iIndex > -1) {
+ Toast.fail('条码已存在!!!', 1);
+ return;
+ }
+ masterdataObj = {
+ ...masterData,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ const { handleType } = slaveData[len - 1];
+ /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ slaveData[len - 1] = slaveDataObj;
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.unshift(slaveDataObj);
+ }
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.unshift(slaveDataObj);
+ }
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') {
+ slaveData.push(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveData, masterData: masterdataObj });
+ }
+
+ /* 页签切换 */
+ // eslint-disable-next-line no-unused-vars
+ handleTabClick1 =(index, tab) => {
+ const { slaveChildData:slaveData, slaveSumConfig, masterData, sModelsType } = this.props;
+ let { slaveSumData }= this.props;
+
+ /* 盘点走单独的逻辑体 */
+ console.log('slaveSumData', slaveSumData);
+ if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) {
+ if(commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyArr(slaveSumData)) {
+ const groupedData = commonUtils.groupBy(slaveData, item => item.sMaterialsId + '-' + commonUtils.isNull(item.sMaterialsStyle, '') + commonUtils.isNull(item.sDefineNo, '') + '-'
+ + commonUtils.isNull(item.sLocationId, '') + commonUtils.isNull(item.sWareHouseId, ''));
+ console.log('分组::', groupedData);
+ /* 对分组内的数据进行数据汇总 */
+ if (commonUtils.isNotEmptyObject(groupedData)) {
+ for (const key of Object.keys(groupedData)) {
+ const eachData = groupedData[key];
+ if (commonUtils.isNotEmptyArr(eachData)) {
+ console.log('eachData:', eachData);
+ let dAuxiliarySumQty = 0; /* 采购数量 */
+ let dMaterialsSumQty = 0; /* 采购计价数量 */
+ eachData.forEach((item) => {
+ /* 采购 */
+ dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2);
+ dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2);
+ });
+
+ /* 从汇总表数据集中 找到相同批次规格的汇总表 然后更新数据 */
+ const eachRow = eachData[0];
+ const iIndex = slaveSumData.findIndex(obj => obj.sMaterialsId ===eachRow.sMaterialsId && obj.sMaterialsStyle ===eachRow.sMaterialsStyle &&
+ obj.sDefineNo === eachRow.sDefineNo && obj.sLocationId === eachRow.sLocationId && obj.sWareHouseId === eachRow.sWareHouseId);
+ console.log('iIndex:', iIndex);
+ if(iIndex > -1) {
+ const sumRow = slaveSumData[iIndex];
+ const addState = {};
+ const minus = dAuxiliarySumQty - commonUtils.isNull(sumRow.dOriginalAuxiliaryQty, 0);
+ addState.dProfitLossAuxiliaryQty = commonUtils.convertFixNum(minus, 2); /* 盘盈数 */
+ addState.dAuxiliaryQty = dAuxiliarySumQty; /* 数量 */
+ addState.handleType = commonUtils.isEmpty(sumRow.handleType) ? 'update' : sumRow.handleType;
+ console.log('盘盈数字:', minus);
+ slaveSumData[iIndex] = { ...slaveSumData[iIndex], ...addState};
+ }
+
+ }
+ }
+ }
+ }
+
+
+ }else {
+
+ /* 汇总明细 */
+
+ console.log('sModelsType:', sModelsType);
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ slaveSumData = [];
+ let slaveSumRow = {};
+ let dProductTotalQty = 0; /* 总到货数 */
+ let dMaterialsTotalQty = 0; /* 总计价数 */
+ slaveData.forEach((slaveItem, index) => {
+ if (index === 0) {
+ slaveSumRow = JSON.parse(JSON.stringify(slaveItem));
+ }
+ if (sModelsType && sModelsType.includes('purchase/')) {
+ dProductTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dAuxiliaryQty, 0));
+ dMaterialsTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dMaterialsQty, 0));
+ } else {
+ dProductTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dProductQty, 0));
+ }
+ });
+ /* 根据sSqlConditionId汇总 */
+ if (sModelsType && sModelsType.includes('purchase/')) {
+ const groupedData = commonUtils.groupBy(slaveData, item => item.sSqlConditionId);
+ console.log('分组::', groupedData);
+ /* 对分组内的数据进行数据汇总 */
+ if (commonUtils.isNotEmptyObject(groupedData)) {
+ for (const key of Object.keys(groupedData)) {
+ const eachData = groupedData[key];
+ if (commonUtils.isNotEmptyArr(eachData)) {
+ console.log('eachData:', eachData);
+ let dAuxiliarySumQty = 0; /* 采购数量 */
+ let dMaterialsSumQty = 0; /* 采购计价数量 */
+ let dEscrowAuxiliarySumQty = 0; /* 代管数量 */
+ let dEscrowSumQty = 0; /* 代管计价数 */
+ let dGiveAuxiliarySumQty = 0; /* 赠送数 */
+ let dGiveSumQty = 0; /* 赠送计价数 */
+ eachData.forEach((item) => {
+ /* 采购 */
+ console.log('类型:', item.iType);
+ if ((commonUtils.isNull(item.iType), 0) === 0) {
+ dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2);
+ dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2);
+ }
+
+ if (item.iType === 1) {
+ dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2);
+ dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2);
+ }
+ /* 代管 */
+ else if (item.iType === 2) {
+ dEscrowAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2);
+ dEscrowSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2);
+ }
+
+ /* 赠送 */
+ else if (item.iType === 3) {
+ dGiveAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2);
+ dGiveSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2);
+ }
+ });
+ const newSum = JSON.parse(JSON.stringify(eachData[0]));
+
+ newSum.dAuxiliaryQty = dAuxiliarySumQty;
+ newSum.dMaterialsQty = dMaterialsSumQty;
+
+ newSum.dEscrowAuxiliaryQty = dEscrowAuxiliarySumQty;
+ newSum.dEscrowQty = dEscrowSumQty;
+
+ newSum.dGiveAuxiliaryQty = dGiveAuxiliarySumQty;
+ newSum.dGiveQty = dGiveSumQty;
+
+ newSum.dPurchaseArrivalQty = dProductTotalQty; /* 到货总数 */
+ newSum.dPurchaseQty = dMaterialsTotalQty; /* 总计价数量 */
+ newSum.dSrcQty = masterData.dSrcAuxiliaryQty; /* 源单数量 */
+
+ slaveSumRow.handleType = 'add';
+ slaveSumData.push(newSum);
+
+
+ }
+ }
+ }
+ } else {
+ const groupedData = commonUtils.groupBy(slaveData, item => item.sSqlConditionId);
+ console.log('产品分组::', groupedData);
+ /* 对分组内的数据进行数据汇总 */
+ if (commonUtils.isNotEmptyObject(groupedData)) {
+ for (const key of Object.keys(groupedData)) {
+ const eachData = groupedData[key];
+ let dProductSumQty = 0; /* 产品数量 */
+ if (commonUtils.isNotEmptyArr(eachData)) {
+ eachData.forEach((item) => {
+ dProductSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dProductQty, 0), 2);
+ });
+ const newSum = JSON.parse(JSON.stringify(eachData[0]));
+ newSum.dProductQty = dProductSumQty;
+ slaveSumRow.handleType = 'add';
+ slaveSumData.push(newSum);
+ }
+
+ }
+ }
+ // slaveSumRow.sProductName = commonUtils.isNotEmptyObject(masterData) ? masterData.sProductName : '';
+ // slaveSumRow.dProductQty = dProductTotalQty;
+ // slaveSumRow.handleType = 'add';
+ // slaveSumData.push(slaveSumRow);
+ }
+
+ }
+ }
+ console.log('汇总表数据', slaveSumData);
+ console.log('主表数据', masterData);
+ this.setState({ tabPage: index });
+ this.props.onSaveState({ slaveData:slaveSumData })
+
+ }
+
+ handleTabClick = async (index, tab) => {
+ const { slaveChildData } = this.props;
+ const tableDataRow = commonUtils.isNotEmptyArr(slaveChildData) ? slaveChildData[0]: {};
+ const params = {
+ sFieldName: 'dAuxiliaryQty',
+ tableDataRow,
+ }
+ await this.handleWriteBack(params);
+
+ const extraInfo = {};
+ const config = this.handleMasterShowInfoConfig(index);
+ extraInfo.baseMasterConfig = config;
+ this.setState({ tabPage: index, ...extraInfo });
+ }
+ handleWriteBack = async (params) => {
+ const {
+ sFieldName,
+ tableDataRow,
+ } = params;
+ const {
+ slaveSelectedRowKeys,
+ slaveData,
+ slaveChildConfig,
+ slaveChildData,
+ } = this.props;
+ if (commonUtils.isEmptyArr(slaveData) || commonUtils.isEmptyArr(slaveChildData)) {
+ return;
+ }
+ const sId = slaveSelectedRowKeys[0] || slaveData[0].sId;
+ const iSlaveIndex = slaveData.findIndex(item => item.sId === sId);
+ const slaveDataRow = slaveData[iSlaveIndex];
+ const slaveChildFilter = slaveChildData.filter(item => item.sSqlConditionId === slaveDataRow.sSqlConditionId);
+
+ // 需要汇总的字段
+ const writeBackFields = ['dAuxiliaryQty', 'dProductQty', 'dArrivalQty', 'sBarcode', 'sDefineNo'];
+
+ const bHasiType = slaveChildConfig.gdsconfigformslave.find(item => ['itype', 'iType'].includes(item.sName));
+
+ if (bHasiType && ['dAuxiliaryQty', 'itype', 'iType', 'dProductQty'].includes(sFieldName)) {
+ // 需要汇总到从表的字段 1:dAuxiliaryQty,2:dEscrowQty,3:dGiveAuxiliaryQty
+ let dAuxiliaryQty = 0;
+ let dEscrowAuxiliaryQty = 0;
+ let dGiveAuxiliaryQty = 0;
+ let dProductQty = 0;
+ slaveChildFilter.forEach(item => {
+ const dataRow = item.sId === params.tableDataRow.sId ? params.tableDataRow : item;
+ const { itype, iType } = dataRow;
+ const type = itype !== undefined ? itype : iType !== undefined ? iType : 11;
+ console.log('s', dataRow.sId, type);
+ if (type === 1) {
+ dAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2);
+ } else if (type === 2) {
+ dEscrowAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2);
+ } else if (type === 3) {
+ dGiveAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2);
+ } else if (type === 10) {
+ dAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dProductQty, 0), 2);
+ } else if (type === 11) {
+ dProductQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2);
+ } else if (type === 12) {
+ dProductQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dProductQty, 0), 2);
+ }
+ });
+
+ const iIndex = slaveData.findIndex(item => item.sId === sId);
+ let tableDataRow = {};
+ tableDataRow = await this.props.onDataChange('slave', 'dEscrowAuxiliaryQty', { dEscrowAuxiliaryQty }, sId, [], true);
+ slaveData[iIndex] = tableDataRow;
+ window.tmpSlaveData = slaveData;
+ tableDataRow = await this.props.onDataChange('slave', 'dGiveAuxiliaryQty', { dGiveAuxiliaryQty }, sId, [], true);
+ slaveData[iIndex] = tableDataRow;
+ window.tmpSlaveData = slaveData;
+ tableDataRow = await this.props.onDataChange('slave', 'dAuxiliaryQty', { dAuxiliaryQty }, sId, [], true);
+ slaveData[iIndex] = tableDataRow;
+ if (slaveChildFilter.some(item => item.itype === 11 || item.iType === 11 || item.itype === 12 || item.iType === 12)) {
+ window.tmpSlaveData = slaveData;
+ tableDataRow = await this.props.onDataChange('slave', 'dProductQty', { dProductQty }, sId, [], true);
+ slaveData[iIndex] = tableDataRow;
+ }
+ window.tmpSlaveData = null;
+ this.props.onSaveState({ slaveData });
+ } else if (bHasiType && writeBackFields.includes(sFieldName)) {
+ let dQty = 0;
+ slaveChildFilter.forEach(item => {
+ const dataRow = item.sId === tableDataRow.sId ? tableDataRow : item;
+ dQty += commonUtils.isNull(dataRow[sFieldName], 0);
+ });
+ this.props.onDataChange('slave', sFieldName, { [sFieldName]: dQty }, sId, [], false);
+ }
+ }
+
+ getViewValue = (showConfig, record) => {
+ let sValue = record === undefined ? undefined : record[showConfig.sName];
+ if (showConfig.sDropDownType === 'const') {
+ let showDropDown = [];
+ if (typeof showConfig.showDropDown === 'object') {
+ // eslint-disable-next-line prefer-destructuring
+ showDropDown = showConfig.showDropDown;
+ } else {
+ showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(showConfig.showDropDown));
+ }
+ let iIndex = commonUtils.isEmpty(record[showConfig.sName]) ? -1 : showDropDown.findIndex(item => item.sId === record[showConfig.sName].toString());
+ if (iIndex === -1 && record[showConfig.sName] === '') {
+ iIndex = showDropDown.findIndex(item => item.sId === '');
+ }
+ sValue = iIndex > -1 ? showDropDown[iIndex].value : record[showConfig.sName];
+ }
+ return sValue;
+ };
+
+ /**
+ * masterData 增加仅展示数据
+ * @returns
+ */
+ masterShowInfo = ({tabPage}) => {
+ let temp;
+ const isSlave0 = this.props.isOutsourcedProcesses && tabPage === 1;
+ if (isSlave0) {
+ temp = 'slave0';
+ }
+
+ return {
+ temp,
+ masterShowInfoConfig: this.state.baseMasterConfig,
+ }
+ }
+
+ /**
+ * masterConfig
+ * @param tabPage
+ * @returns
+ */
+ handleMasterShowInfoConfig = (tabPage) => {
+ if (this.props.isOutsourcedProcesses) {
+ const nameSGrd = {
+ 0: 'slaveChild',
+ 1: 'slave0',
+ 2: 'slave',
+ }[tabPage];
+ const gdsconfigformslave = this.props?.masterConfig?.gdsconfigformslave?.filter(i => i && (i.sControlName?.includes(nameSGrd))) || [];
+ return { ...this.props.masterConfig || {}, gdsconfigformslave };
+ } else {
+ return this.props.masterConfig
+ }
+ }
+
+ /**
+ * tab展示内容
+ * @returns
+ */
+ tabShowInfo = (params) => {
+ const { slaveChildConfig, slave0Config, slaveConfig } = this.props;
+ const { ModalListProps, otherProps, TabComponentSum, temp, tabPage } = params;
+ let tabs = [
+ { title: 明细 },
+ { title: 汇总 },
+ ];
+
+ let contentTab = <>
+ {tabPage === 0 ?
: ''}
+ {tabPage === 1 ?
: ''}
+ >
+
+ if (this.props.isOutsourcedProcesses) {
+ tabs = [
+ { title: {slaveChildConfig?.showName || ''} },
+ { title: {slave0Config?.showName || ''} },
+ { title: {slaveConfig?.showName || ''} },
+ ];
+ contentTab = <>
+ {tabPage === 0 ?
: ''}
+ {tabPage === 1 ?
: ''}
+ {tabPage === 2 ?
: ''}
+ >
+ }
+ return {
+ tabs,
+ contentTab,
+ }
+ }
+
+ render() {
+ const {
+ slaveConfig, slaveData: slaveDataOld, sModelsId, enabled, app, sUseInfo, onReturnForm, masterData, masterConfig, slaveConfig:slaveSumConfig, slaveSumData: slaveSumDataOld,
+ sModelsType, content, dispatch, slaveChildConfig,
+ } = this.props;
+ const commonListProps = {
+ app,
+ content,
+ sModelsId: this.fieldConfig.current?.sActiveId || sModelsId,
+ sModelsType: sModelsType,
+ formRoute: '/indexMobile/commobileBill',
+ dispatch,
+ bNotSearch: true,
+ };
+ const { tabPage } = this.state;
+ onReturnForm(this.props.form);
+
+
+ const slaveSumDataOld2 = slaveSumDataOld === undefined ? [] : slaveSumDataOld;
+ const slaveSumData = dataSource.cloneWithRows(slaveSumDataOld2);
+
+ const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+
+
+ const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */
+ const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */
+ const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } };
+ const style = {
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+ const btnStyle = {
+ fontSize: '15px',
+ backgroundColor: '#f0f0f0',
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+
+ const rowSum = (rowData, sectionID, rowID) => {
+ return (
+
+ {commonUtils.isEmptyObject(slaveConfig) ? '' : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const showTypeProps = {
+ app,
+ masterData,
+ record: rowData,
+ sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */
+ name: 'slave',
+ form: this.props.form,
+ formId: sModelsId,
+ getSqlDropDownData: this.props.getSqlDropDownData,
+ getSqlCondition: this.props.getSqlCondition,
+ handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord,
+ getFloatNum: this.props.getFloatNum,
+ getDateFormat: this.props.getDateFormat,
+ onChange: this.props.onDataChange,
+ showConfig: child,
+ formItemLayout: sMemo ? formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: rowData[child.sName],
+ bTable: true,
+ onFilterDropDownData: this.props.onFilterDropDownData,
+ onSaveState: this.props.onSaveState,
+ };
+ return (
+
+ );
+ })}
+ {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => {
+ if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) {
+ const { token } = app;
+ let imgBox = '';
+ const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : '';
+ const previewImageArr = [];
+ if (commonUtils.isNotEmptyArr(picAddr)) {
+ picAddr.forEach((item) => {
+ const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */
+ previewImageArr.push(dataPreviewUrl);
+ });
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ imgBox =

0} onClick={e => preView(previewImageArr, e)} />
;
+ }
+ return imgBox;
+ } else {
+ return '';
+ }
+ })}
+
+ );
+ };
+
+ /* 汇总页签 */
+ const TabComponentSum = props => {
+ return (
+
+ );
+ }
+
+ const conditionValue = this.fieldConfig.current && this.masterdataObj.current ?
+ this.props.getSqlCondition(this.fieldConfig.current, 'master', this.masterdataObj.current) : null;
+ /**
+ * pda扫描弹窗
+ */
+ const ModalListProps = {
+ ...this.modalProps,
+ visible: this.state.visible,
+ content:
+ }
+
+ const { temp, masterShowInfoConfig } = this.masterShowInfo({slaveSumConfig, slaveChildConfig, tabPage});
+
+ const otherProps = {
+ handleMasterFieldScan: this.handleMasterFieldScan,
+ formItemLayout,
+ formProps: {
+ onSubmit: (e) => { e.preventDefault(); }
+ },
+ masterConfig: masterShowInfoConfig,
+ originMasterConfig: masterConfig, //原masterConfig, 发外CommobileToolBar使用原配置
+ }
+
+ const { tabs, contentTab } = this.tabShowInfo({ModalListProps, otherProps, TabComponentSum, temp, tabPage});
+
+ return (
+
+ {
+ commonUtils.isNotEmptyObject(slaveSumConfig) && commonUtils.isNotEmptyObject(slaveChildConfig) ?
+
this.handleTabClick(index, tab)}
+ onTabClick={(tab, index) => { console.log('onTabClick', index, tab); }}
+ >
+ {contentTab}
+ :
+
+ }
+
+
+ );
+ }
+}
+
+const CommobileBillComponent = createForm()(CommobileBill);
+
+const TabComponentSlave = (props) => {
+
+ const { masterConfig, masterData, slaveData: slaveDataOld, slaveConfig, sModelsId, enabled, app, sUseInfo } = props;
+
+ const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+
+ const style = {
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+
+ const btnStyle = {
+ fontSize: '15px',
+ backgroundColor: '#f0f0f0',
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+
+ const BtnStyle = {
+ type: 'default',
+ color: 'red',
+ border: 'none',
+ backgroundColor: '#f0f0f0',
+ fontSize: '15px',
+ };
+ const divStyle = {
+ display: 'flex',
+ justifyContent: 'space-between',
+ background: ' #f0f0f0',
+ };
+
+ const row = (rowData, sectionID, rowID) => {
+ return (
+
+
+ {/* eslint-disable-next-line react/jsx-no-duplicate-props */}
+ {
+ slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ?
+
+
+ : ''
+ }
+
+ {commonUtils.isEmptyObject(slaveConfig) ? '' : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const showTypeProps = {
+ app,
+ masterData,
+ record: rowData,
+ sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */
+ name: 'slave',
+ form: props.form,
+ formId: sModelsId,
+ getSqlDropDownData: props.getSqlDropDownData,
+ getSqlCondition: props.getSqlCondition,
+ handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord,
+ getFloatNum: props.getFloatNum,
+ getDateFormat: props.getDateFormat,
+ onChange: props.onDataChange,
+ showConfig: child,
+ formItemLayout: sMemo ? props.formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: rowData[child.sName],
+ bTable: true,
+ onFilterDropDownData: props.onFilterDropDownData,
+ onSaveState: props.onSaveState,
+ };
+ return (
+
+ );
+ })}
+ {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => {
+ if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) {
+ const { token } = app;
+ let imgBox = '';
+ const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : '';
+ const previewImageArr = [];
+ if (commonUtils.isNotEmptyArr(picAddr)) {
+ picAddr.forEach((item) => {
+ const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */
+ previewImageArr.push(dataPreviewUrl);
+ });
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ imgBox =

0} onClick={e => preView(previewImageArr, e)} />
;
+ }
+ return imgBox;
+ } else {
+ return '';
+ }
+ })}
+
+ );
+ };
+
+ return (
+
+ );
+}
+
+
+const TabComponentSlaveChild = (props) => {
+
+ const { masterConfig, masterData, slaveData: slaveDataOld, slaveChildData: slaveChildDataOld, slaveChildConfig, slaveConfig, sModelsId, enabled, app, sUseInfo } = props;
+ const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+
+ const slaveChildDataOld2 = slaveChildDataOld === undefined ? [] : slaveChildDataOld;
+ const slaveChildData = dataSource.cloneWithRows(slaveChildDataOld2);
+ const style = {
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+
+ const btnStyle = {
+ fontSize: '15px',
+ backgroundColor: '#f0f0f0',
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+
+ const BtnStyle = {
+ type: 'default',
+ color: 'red',
+ border: 'none',
+ backgroundColor: '#f0f0f0',
+ fontSize: '15px',
+ };
+ const divStyle = {
+ display: 'flex',
+ justifyContent: 'space-between',
+ background: ' #f0f0f0',
+ };
+ const row = (rowData, sectionID, rowID) => {
+ return (
+
+
+ {/* eslint-disable-next-line react/jsx-no-duplicate-props */}
+ {
+ slaveChildConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ slaveChildConfig && slaveChildConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ slaveChildConfig && slaveChildConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ?
+
+
+ : ''
+ }
+
+ {commonUtils.isEmptyObject(slaveChildConfig) ? '' : slaveChildConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const showTypeProps = {
+ app,
+ masterData,
+ record: rowData,
+ sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */
+ name: 'slaveChild',
+ form: props.form,
+ formId: sModelsId,
+ getSqlDropDownData: props.getSqlDropDownData,
+ getSqlCondition: props.getSqlCondition,
+ handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord,
+ getFloatNum: props.getFloatNum,
+ getDateFormat: props.getDateFormat,
+ onChange: props.onDataChange,
+ showConfig: child,
+ formItemLayout: sMemo ? props.formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: rowData[child.sName],
+ bTable: true,
+ onFilterDropDownData: props.onFilterDropDownData,
+ onFieldScan: props.handleMasterFieldScan,
+ onFocus: props.onFocus,
+ onSaveState: props.onSaveState,
+ };
+ return (
+
+ );
+ })}
+ {slaveChildConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => {
+ if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) {
+ const { token } = app;
+ let imgBox = '';
+ const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : '';
+ const previewImageArr = [];
+ if (commonUtils.isNotEmptyArr(picAddr)) {
+ picAddr.forEach((item) => {
+ const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */
+ previewImageArr.push(dataPreviewUrl);
+ });
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ imgBox =

0} onClick={e => preView(previewImageArr, e)} />
;
+ }
+ return imgBox;
+ } else {
+ return '';
+ }
+ })}
+
+ );
+ };
+
+ const f1 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[0];
+ const f2 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[1];
+ const f3 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[2];
+ const f4 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[3];
+ const f5 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[4];
+ const f6 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[5];
+ const f7 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[6];
+ const f8 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[7];
+ const f9 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[8];
+ const f10 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[9];
+
+ return (
+
+ {/*
*/}
+ {/*
*/}
+ {/* {*/}
+ {/* f1 ? {f1.showName} : {_this.getViewValue(f1, masterData)} : ''*/}
+ {/* }*/}
+ {/* {*/}
+ {/* f2 ? {f2.showName} : {_this.getViewValue(f2, masterData)} : ''*/}
+ {/* }*/}
+ {/**/}
+ {/*
*/}
+ {/* {*/}
+ {/* f3 ? {f3.showName} : {_this.getViewValue(f3, masterData)} : ''*/}
+ {/* }*/}
+ {/**/}
+ {/*
*/}
+ {/* {*/}
+ {/* f4 ? <>{f4.showName} :
{_this.getViewValue(f4, masterData)}> : ''*/}
+ {/* }*/}
+ {/**/}
+ {/*
*/}
+ {/* {*/}
+ {/* f5 ? {f5.showName} : {_this.getViewValue(f5, masterData)} : ''*/}
+ {/* }*/}
+ {/* {*/}
+ {/* f6 ? {f6.showName} : {_this.getViewValue(f6, masterData)} : ''*/}
+ {/* }*/}
+ {/**/}
+ {/*
*/}
+ {/* {*/}
+ {/* f7 ? {f7.showName} : {_this.getViewValue(f7, masterData)} : ''*/}
+ {/* }*/}
+ {/* {*/}
+ {/* f8 ? {f8.showName} : {_this.getViewValue(f8, masterData)} : ''*/}
+ {/* }*/}
+ {/**/}
+ {/*
*/}
+ {/* {*/}
+ {/* f9 ? {f9.showName} : {_this.getViewValue(f9, masterData)} : ''*/}
+ {/* }*/}
+ {/* {*/}
+ {/* f10 ? {f10.showName} : {_this.getViewValue(f10, masterData)} : ''*/}
+ {/* }*/}
+ {/**/}
+ {/*
*/}
+
+
+
+ );
+}
+
+const TabComponentTemp = (props) => {
+
+ const { masterData, sModelsId, enabled, app, sUseInfo, temp } = props;
+
+ if (!temp) return <>>;
+
+ const tempData = Array.isArray(props[`${temp}Data`]) ? props[`${temp}Data`] : [];
+ const tempDataRow = dataSource.cloneWithRows(tempData);
+
+ const style = {
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+
+ const btnStyle = {
+ fontSize: '15px',
+ backgroundColor: '#f0f0f0',
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+
+ const BtnStyle = {
+ type: 'default',
+ color: 'red',
+ border: 'none',
+ backgroundColor: '#f0f0f0',
+ fontSize: '15px',
+ };
+ const divStyle = {
+ display: 'flex',
+ justifyContent: 'space-between',
+ background: ' #f0f0f0',
+ };
+ const row = (rowData, sectionID, rowID) => {
+ return (
+
+
+ {/* eslint-disable-next-line react/jsx-no-duplicate-props */}
+ {
+ props[`${temp}Config`]?.gdsconfigformslave?.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ props[`${temp}Config`] && props[`${temp}Config`]?.gdsconfigformslave?.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ props[`${temp}Config`] && props[`${temp}Config`]?.gdsconfigformslave?.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ?
+
+
+ : ''
+ }
+
+ {commonUtils.isEmptyObject(props[`${temp}Config`]) ? '' : props[`${temp}Config`]?.gdsconfigformslave?.filter(item => item.bVisible && item.sName !== '').map((child) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const showTypeProps = {
+ app,
+ masterData,
+ record: rowData,
+ sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */
+ name: temp,
+ form: props.form,
+ formId: sModelsId,
+ getSqlDropDownData: props.getSqlDropDownData,
+ getSqlCondition: props.getSqlCondition,
+ handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord,
+ getFloatNum: props.getFloatNum,
+ getDateFormat: props.getDateFormat,
+ onChange: props.onDataChange,
+ showConfig: child,
+ formItemLayout: sMemo ? props.formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: rowData[child.sName],
+ bTable: true,
+ onFilterDropDownData: props.onFilterDropDownData,
+ onSaveState: props.onSaveState,
+ };
+ return (
+
+ );
+ })}
+ {props[`${temp}Config`]?.gdsconfigformslave?.filter(item => item.bVisible && item.sName.includes('spicture'))?.map((item) => {
+ if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) {
+ const { token } = app;
+ let imgBox = '';
+ const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : '';
+ const previewImageArr = [];
+ if (commonUtils.isNotEmptyArr(picAddr)) {
+ picAddr.forEach((item) => {
+ const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */
+ previewImageArr.push(dataPreviewUrl);
+ });
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ imgBox =

0} onClick={e => preView(previewImageArr, e)} />
;
+ }
+ return imgBox;
+ } else {
+ return '';
+ }
+ })}
+
+ );
+ };
+
+ return (
+
+ );
+}
+
+export default CommobileBase(CommobileBillEvent(CommobileBillComponent));
+
diff --git a/src/mobile/common/CommobileSubBillEvent.js b/src/mobile/common/CommobileSubBillEvent.js
new file mode 100644
index 0000000..f504653
--- /dev/null
+++ b/src/mobile/common/CommobileSubBillEvent.js
@@ -0,0 +1,2020 @@
+/* eslint-disable */
+/* eslint-disable prefer-destructuring,no-await-in-loop,radix,,no-loop-func */
+/**
+ * Created by mar105 on 2019-01-08.
+ */
+import React, { Component } from 'react';
+import { Toast,Modal } from 'antd-mobile';
+import * as commonUtils from '../../utils/utils';
+import * as commonFunc from '../../components/Common/commonFunc';
+import * as commonBusiness from '../../components/Common/commonBusiness';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import BarCodeUtil from './BarCodeUtil';
+
+export default (ChildComponent) => {
+ return class extends Component {
+ constructor(props) {
+ super(props);
+ this.state = {};
+ this.isOutsourcedProcesses = this.props.sModelsType?.includes('utside/outsideinstorePDA');
+ }
+
+ async componentWillReceiveProps(nextProps) {
+ const {
+ formData, currentId, masterConfig: masterConfigOld, sModelsId,
+ } = nextProps;
+ if (commonUtils.isEmptyObject(masterConfigOld) && formData.length > 0) {
+ const sId = currentId !== undefined ? currentId : '';
+ /* 数据Id */
+ const masterConfig = formData.filter(item => !item.bGrd)[0];
+ const slaveConfig = formData.filter(item => item.bGrd)[0];
+ /* 判断是否有汇总表 */
+ const slaveSumConfig = commonUtils.isNotEmptyArr(formData.filter(item => item.bGrd && item.sGrd && item.sGrd.includes('sumTable') )) ? formData.filter(item => item.bGrd && item.sGrd && item.sGrd.includes('sumTable') )[0] : {};
+ /* 加载子从表 */
+ const filterData = formData.filter(item => item.bGrd && item.sTbName !== 'sysbillcheckresult' && item.bGrdVisible);
+ let slaveChildConfig = {};
+ if (commonUtils.isNotEmptyArr(filterData) && filterData.length > 1) {
+ slaveChildConfig = filterData[1];
+ }
+ const otherConfig = {};
+ if (this.isOutsourcedProcesses) {
+ otherConfig.slave0Config = formData.filter(item => item.bGrd && item.sGrd && item.sGrd.includes('slave0'))[0] || {};
+ }
+ let addStateMaster = {};
+ let userEntrustData = []; /* 委托人 */
+ let addState = {};
+ let addStateSum = {};
+ if (sId === '') {
+ const config = {};
+ config.masterConfig = masterConfig;
+ config.slaveConfig = slaveConfig;
+ config.slaveSumConfig = slaveSumConfig;
+ config.slaveChildConfig = slaveChildConfig;
+ config.slave0Config = otherConfig.slave0Config || {};
+ addState = await this.handleAdd(config, nextProps.copyTo, true);
+ } else {
+ addStateMaster = await this.props.handleGetDataOne({
+ name: 'master',
+ configData: masterConfig,
+ condition: { sId, pageSize: '', pageNum: '' },
+ isWait: true,
+ });
+ if (location.pathname === '/indexMobile/examine') {
+ const masterDataNew = addStateMaster.masterData;
+ const sParamsArr = commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterDataNew.sTableParams) ? JSON.parse(masterDataNew.sTableParams) : '';
+ const sParamsValueArr = commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterDataNew.sTableParamsValue) ? JSON.parse(masterDataNew.sTableParamsValue) : '';
+ /* 塞入配置 */
+ if (commonUtils.isNotEmptyObject(sParamsArr) && commonUtils.isNotEmptyObject(masterDataNew) && commonUtils.isNotEmptyObject(masterConfig) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave)) {
+ /* 移除最后一位元素 */
+ for (const key of Object.keys(sParamsArr)) {
+ const newConfig = {
+ iOrder: 300, sId: commonUtils.createSid(), bVisible: true, sParamsArr: key, showName: sParamsArr[key], sName: key,
+ };
+ const len = masterConfig.gdsconfigformslave.length;
+ masterConfig.gdsconfigformslave.splice(len - 1, 0, newConfig);
+ if (commonUtils.isNotEmptyArr(sParamsValueArr)) {
+ masterDataNew[key] = sParamsValueArr[key];
+ }
+ }
+ }
+ /* 拉委托人员的下拉数据源 */
+ const iUserIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName && item.sControlName.includes('BtnEntrust'));
+ if (iUserIndex > -1) {
+ userEntrustData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[iUserIndex], masterDataNew);
+ }
+ }
+ addState = await this.props.handleGetDataSet({
+ name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true,
+ });
+ if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) {
+ addStateSum = await this.props.handleGetDataSet({
+ name: 'slaveSum', configData: slaveSumConfig, condition: { sSqlCondition: { sParentId: sId } }, isWait: true,
+ });
+ }
+ if (commonUtils.isNotEmptyArr(addState.slaveData)) {
+ if (commonUtils.isNotEmptyObject(addState.slaveData[0].sReportParam)) {
+ addState.slaveData[0] = { ...addState.slaveData[0], ...commonUtils.convertStrToObj(addState.slaveData[0].sReportParam) };
+ // eslint-disable-next-line no-plusplus
+ for (let i = 1; i < 7; i++) {
+ const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`);
+ if (iIndex > -1 && !commonUtils.isEmpty(addState.slaveData[0][`sParam${i.toString()}`])) {
+ slaveConfig.gdsconfigformslave[iIndex].showName = addState.slaveData[0][`sParam${i.toString()}`];
+ slaveConfig.gdsconfigformslave[iIndex].bVisible = !addState.slaveData[0][`sParam${i.toString()}`].includes('参数值');
+ } else if (iIndex > -1) {
+ slaveConfig.gdsconfigformslave[iIndex].bVisible = false;
+ }
+ }
+ } else {
+ // eslint-disable-next-line no-plusplus
+ for (let i = 1; i < 7; i++) {
+ const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`);
+ if (iIndex > -1) {
+ slaveConfig.gdsconfigformslave[iIndex].bVisible = false;
+ }
+ }
+ }
+ }
+ }
+ this.props.onSaveState({
+ masterConfig, slaveConfig, sId, pageLoading: false, ...addState, ...addStateMaster, userEntrustData, slaveSumConfig, ...addStateSum, slaveChildConfig,
+ ...otherConfig,
+ });
+ }
+ }
+
+ shouldComponentUpdate(nextProps) {
+ const { masterConfig } = nextProps;
+ return commonUtils.isNotEmptyObject(masterConfig);
+ }
+
+ /** 点击新增按钮 */
+ handleAdd = async (config, copyTo, isWait) => {
+ /* 外置处理业务 */
+ const {
+ sModelsId, token, sModelsType, formRoute, peopleInfosId, peopleInfoData, app,
+ } = this.props;
+ let masterConfig = commonUtils.isEmptyObject(config) ? {} : config.masterConfig;
+ if (!isWait) {
+ masterConfig = this.props.masterConfig;
+ }
+ let configNew = {};
+ if (commonUtils.isEmptyObject(config)) {
+ const { slaveConfig } = this.props;
+ configNew.slaveConfig = slaveConfig;
+ } else {
+ configNew = config;
+ }
+ let masterData;
+ if (commonUtils.isNotEmptyObject(masterConfig)) {
+ masterData = commonFunc.getDefaultData(masterConfig);
+ }
+ masterData.handleType = 'add';
+ masterData.sId = commonUtils.createSid();
+ masterData.sFormId = sModelsId;
+ masterData.maxBillNo = 'sBillNo';
+ if (formRoute === '/contactsInfo') {
+ if (commonUtils.isNotEmptyArr(peopleInfoData) && peopleInfosId !== '') {
+ const peopleInfo = peopleInfoData.filter(item => item.sId === peopleInfosId);
+ masterData = { ...masterData, ...peopleInfo[0] };
+ }
+ }
+ let slaveData = [];
+ const slaveSumData = [];
+ let slaveChildData = [];
+ const employeeData = [];
+ let slave0Data = []; // 外发发货登记
+
+ // const slaveTotal = [];
+ // const tableDataTotal = {};
+ let slaveAssignField = '';
+ let slaveChildAssignField = '';
+ console.log('copyTo', copyTo);
+ if (commonUtils.isNotEmptyObject(copyTo)) {
+ const copyToMasterConfig = copyTo.config.filter(item => item.sControlName === copyTo.name);
+ const masterAssignField = commonUtils.isNotEmptyArr(copyToMasterConfig) ? copyToMasterConfig[0].sAssignField : '';
+ const newCopyTo = {};
+ newCopyTo.master = copyTo.masterData;
+ newCopyTo.slave = commonUtils.isEmpty(copyTo.slaveData) ? [] : copyTo.slaveData[0];
+ masterData = { ...masterData, ...commonFunc.getAssignFieldValue(masterAssignField, copyTo.masterData, newCopyTo) };
+
+ const copyToSlaveConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave`.toLowerCase());
+ slaveAssignField = commonUtils.isNotEmptyArr(copyToSlaveConfig) ? copyToSlaveConfig[0].sAssignField : '';
+ if (sModelsType === 'production/productionReport') {
+ copyTo.slaveData = commonUtils.isEmptyArr(copyTo.slaveData) ? [] : [copyTo.slaveData[0]];
+ }
+ if (slaveAssignField !== '') {
+ for (const slaveItem of copyTo.slaveData) {
+ const newCopyTo = {};
+ newCopyTo.master = copyTo.masterData;
+ newCopyTo.slave = slaveItem;
+ const newSid = commonUtils.createSid();
+ let slaveRow = commonFunc.getDefaultData(config.slaveConfig, newCopyTo, { newSid }); // 取默认值
+ slaveRow = { ...slaveRow, ...commonFunc.getAssignFieldValue(slaveAssignField, slaveItem, newCopyTo) }; // 取赋值字段
+ slaveRow.handleType = 'add';
+ slaveRow.sId = newSid;
+ slaveRow.sParentId = masterData.sId;
+ slaveRow.sSqlConditionId = slaveRow.sId;
+
+ if (sModelsType === 'production/productionReport') {
+ if (!commonUtils.isEmpty(slaveRow.sWageId)) {
+ slaveRow.dWageMoney = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow: slaveRow, sComputeId: slaveRow.sWageId,
+ });
+ }
+ if (!commonUtils.isEmpty(slaveRow.sConversionFormulaId)) {
+ slaveRow.dConversionQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow: slaveRow, sComputeId: slaveRow.sConversionFormulaId,
+ });
+ }
+ if (commonUtils.isNotEmptyObject(slaveRow.sReportParam)) {
+ slaveRow = { ...slaveRow, ...commonUtils.convertStrToObj(slaveRow.sReportParam) };
+ // eslint-disable-next-line no-plusplus
+ for (let i = 1; i < 7; i++) {
+ const iIndex = configNew.slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`);
+ if (iIndex > -1 && !commonUtils.isEmpty(slaveRow[`sParam${i.toString()}`])) {
+ configNew.slaveConfig.gdsconfigformslave[iIndex].showName = slaveRow[`sParam${i.toString()}`];
+ configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = !slaveRow[`sParam${i.toString()}`].includes('参数值');
+ } else if (iIndex > -1) {
+ configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = false;
+ }
+ }
+ } else {
+ // eslint-disable-next-line no-plusplus
+ for (let i = 1; i < 7; i++) {
+ const iIndex = configNew.slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`);
+ if (iIndex > -1) {
+ configNew.slaveConfig.gdsconfigformslave[iIndex].bVisible = false;
+ }
+ }
+ }
+ const sMachineId = app.sMachineId;
+ if (sMachineId) {
+ const sSessionTeamId = localStorage.getItem(`${commonConfig.prefix}mobile_${sMachineId}`);
+ if (sSessionTeamId) {
+ slaveRow.sTeamId = sSessionTeamId;
+ }
+ }
+ let returnData = JSON.parse(localStorage.getItem(`${commonConfig.prefix}employeeData`));
+ if (!commonUtils.isEmpty(slaveRow.sTeamId)) {
+ if (commonUtils.isEmptyArr(returnData)) {
+ const url = `${commonConfig.server_host}eleteamemployee/getEleteamemployee?sModelsId=${sModelsId}&sTeamId=${slaveRow.sTeamId}&sSlaveId=${slaveRow.sId}&sParentId=${slaveRow.sParentId}`;
+ const dataReturn = (await commonServices.getService(token, url)).data;
+ if (dataReturn.code === 1) {
+ returnData = dataReturn.dataset.rows;
+ } else { /* 失败 */
+ this.props.getServiceError(dataReturn);
+ }
+ }
+ returnData.forEach((child) => {
+ employeeData.push({
+ sId: commonUtils.createSid(),
+ sParentId: masterData.sId,
+ sSlaveId: slaveRow.sId,
+ sEmployeeId: child.sEmployeeId,
+ sEmployeeName: child.sEmployeeName,
+ dProportion: child.dProportion !== 0 ? child.dProportion : commonUtils.convertFixNum(1 / returnData.length, 6),
+ handleType: 'add',
+ });
+ });
+ /* 班组变化时,算每个工作人员计件工资 */
+ const dWageMoneyTotal = slaveRow.dWageMoney;
+ if (commonUtils.isNotEmptyNumber(dWageMoneyTotal)) {
+ let dProportionTotal = 0;
+ employeeData.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) {
+ item.dProportion = parseFloat(item.dProportion);
+ dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6);
+ dProportionTotal = commonUtils.convertFixNum(dProportionTotal, 6);
+ }
+ });
+ employeeData.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion)) {
+ const index1 = employeeData.findIndex(item1 => item1.sId === item.sId);
+ employeeData[index1] = {
+ ...item,
+ dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * dWageMoneyTotal, 6),
+ handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType,
+ };
+ }
+ });
+ }
+
+
+ const dWageMoney = commonUtils.isNotEmptyNumber(slaveRow.dWageMoney) ? commonUtils.convertFixNum(slaveRow.dWageMoney, 6) : 0;
+ const dTimeMoney = commonUtils.isNotEmptyNumber(slaveRow.dTimeMoney) ? commonUtils.convertFixNum(slaveRow.dTimeMoney, 6) : 0;
+ const dLossMoney = commonUtils.isNotEmptyNumber(slaveRow.dLossMoney) ? commonUtils.convertFixNum(slaveRow.dLossMoney, 6) : 0;
+ slaveRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6);
+ }
+ }
+ slaveData.push(slaveRow);
+ }
+ }
+
+ const copyToSlaveChildConfig = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slaveChild`.toLowerCase());
+ slaveChildAssignField = commonUtils.isNotEmptyArr(copyToSlaveChildConfig) ? copyToSlaveChildConfig[0].sAssignField : '';
+
+ if (slaveChildAssignField !== '' && commonUtils.isNotEmptyArr(copyTo.slaveChildData)) {
+ for (const slaveChildItem of copyTo.slaveChildData) {
+ const newCopyTo = {};
+ newCopyTo.master = copyTo.masterData;
+ newCopyTo.slaveChild = slaveChildItem;
+
+ let slaveChildRow = commonFunc.getDefaultData(config.slaveChildConfig, newCopyTo); // 取默认值
+ slaveChildRow = {...slaveChildRow, ...commonFunc.getAssignFieldValue(slaveChildAssignField, slaveChildItem, newCopyTo)}; // 取赋值字段
+ slaveChildRow.handleType = 'add';
+ slaveChildRow.sId = commonUtils.createSid();
+ slaveChildRow.sParentId = masterData.sId;
+ slaveChildRow.sSqlConditionId = commonUtils.isNotEmptyArr(slaveData) ? slaveData[0].sId :'';
+ slaveChildData.push(slaveChildRow);
+ }
+ masterData = this.props.handleMasterDefaultData(slaveChildData, this.isOutsourcedProcesses, 0, masterData, config);
+ }
+
+ /**
+ * 外发工序处理
+ */
+ if (this.isOutsourcedProcesses) {
+ let slave0AssignField = '';
+ const copyToSlave0Config = copyTo.config.filter(item => item.sControlName.toLowerCase() === `${copyTo.name}.slave0`.toLowerCase());
+ slave0AssignField = commonUtils.isNotEmptyArr(copyToSlave0Config) ? copyToSlave0Config[0].sAssignField : '';
+ if (slave0AssignField !== '' && commonUtils.isNotEmptyArr(copyTo.slave0Data)) {
+ for (const slave0Item of copyTo.slave0Data) {
+ const newCopyTo = {};
+ newCopyTo.master = copyTo.masterData;
+ newCopyTo.slave0 = slave0Item;
+
+ let slave0Row = commonFunc.getDefaultData(config.slave0Config, newCopyTo); // 取默认值
+ slave0Row = {...slave0Row, ...commonFunc.getAssignFieldValue(slave0AssignField, slave0Item, newCopyTo)}; // 取赋值字段
+ slave0Row.handleType = 'add';
+ slave0Row.sId = commonUtils.createSid();
+ slave0Row.sParentId = masterData.sId;
+ slave0Data.push(slave0Row);
+ }
+ masterData = this.props.handleMasterDefaultData(slave0Data, this.isOutsourcedProcesses, 1, masterData, config);
+ }
+ }
+
+ if (!commonUtils.isEmpty(masterData.sTestStandardId)) {
+ const dataUrl = `${commonConfig.server_host}eleteamemployee/getObtainInspectionStandards?sModelsId=${sModelsId}&sParentId=${masterData.sTestStandardId}`;
+ const dataReturn = (await commonServices.getService(this.props.app.token, dataUrl)).data;
+ const slaveDelData = [];
+ if (dataReturn.code === 1) {
+ const returnSlaveData = dataReturn.dataset.rows;
+ slaveData.forEach((item) => {
+ item.handleType = 'del';
+ slaveDelData.push(item);
+ });
+ slaveData = [];
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ const iConfigIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'sTestStandardName');
+ const slaveConfig = commonUtils.isEmptyObject(config) ? {} : config.slaveConfig;
+ if (!isWait) {
+ masterConfig = this.props.slaveConfig;
+ }
+ const iSqlIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sActValue');
+ returnSlaveData.forEach((item, iIndex) => {
+ let tableDataRow = commonFunc.getDefaultData(config.slaveConfig, {});
+ tableDataRow.handleType = 'add';
+ tableDataRow.sId = commonUtils.createSid();
+ tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null;
+ tableDataRow.key = tableDataRow.sId;
+ tableDataRow.iOrder = iIndex;
+ if (iConfigIndex > -1) {
+ tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(masterConfig.gdsconfigformslave[iConfigIndex].sAssignField, item, newCopyTo) }; // 取赋值字段
+ // tableDataRow.sTestReference = '15S|20S';
+ const sTestReference = tableDataRow.sTestReference;
+ const sParamObj = {};
+ if (commonUtils.isNotEmptyObject(sTestReference)) { /* 若数据有值 渲染下拉框 */
+ if (sTestReference.indexOf('|') >= 0) {
+ sTestReference.split('|').forEach((itemField) => {
+ sParamObj[itemField] = itemField;
+ });
+ tableDataRow.sParamDropDownsActValue = sParamObj;
+ if (iSqlIndex > -1) {
+ slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = 'sql';
+ } else {
+ slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = '';
+ }
+ }
+ } else { /* 若数据没有值 则渲染文本框 */
+ tableDataRow.isText = true;
+ }
+ }
+ slaveData.push(tableDataRow);
+ });
+ }
+ }
+ }
+
+ const iUserIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName && item.sControlName.includes('sTeamMachine'));
+ if (iUserIndex > -1) {
+ const sTeamMachineData = await this.props.getSqlDropDownData(sModelsId, 'master', masterConfig.gdsconfigformslave[iUserIndex], masterData);
+ if(commonUtils.isNotEmptyArr(sTeamMachineData)) {
+ masterData.sTeamId = sTeamMachineData[0].sTeamId;
+ masterData.sTeamName = sTeamMachineData[0].sTeamName;
+ masterData.sMachineId = sTeamMachineData[0].sMachineId;
+ masterData.sMachineName = sTeamMachineData[0].sMachineName;
+ }
+ }
+
+ /* 剔除订单到收款单新增空行(2022.7.8朱总要求)) */
+ if (slaveData.length === 0 && commonUtils.isNotEmptyObject(slaveAssignField)) {
+ const allTableData = {};
+ allTableData.master = masterData;
+ allTableData.slave = slaveData;
+ let tableDataRowAdd = {};
+ if (commonUtils.isNotEmptyObject(configNew.slaveConfig)) {
+ tableDataRowAdd = commonFunc.getDefaultData(configNew.slaveConfig, allTableData);
+ tableDataRowAdd.handleType = 'add';
+ tableDataRowAdd.sId = commonUtils.createSid();
+ tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null;
+ tableDataRowAdd.key = tableDataRowAdd.sId;
+ tableDataRowAdd.bDefault = false;
+ tableDataRowAdd.iOrder = 0;
+ slaveData.push(tableDataRowAdd);
+ }
+ }
+ if (!commonUtils.isNotEmptyObject(config.slaveChildConfig)) {
+ if (Array.isArray(slaveData)) {
+ masterData = this.props.handleMasterDefaultData(slaveData, this.isOutsourcedProcesses, undefined, masterData, config);
+ }
+ }
+
+ const state = {
+ masterData,
+ slaveData,
+ slave0Data, // 外发工序
+ slaveSumData:slaveData,
+ slaveChildData,
+ employeeData,
+ slaveTotal: [],
+ slaveSelectedRowKeys: [],
+ searchUpDownData: {},
+ enabled: true,
+ };
+ state.sUseInfo = '';
+ if (isWait) {
+ return state;
+ } else {
+ this.props.onSaveState(state);
+ return true;
+ }
+ };
+
+ baseSuccessFn = async() => {
+ const {
+ currentId, masterData, billnosetting, app, sModelsType, copyTo, dispatch,
+ } = this.props;
+ const { userinfo } = app;
+ const onSendSocketMessage = this.props.handleSendSocketMessage;
+ Toast.hide();
+
+ if (commonUtils.isNotEmptyObject(copyTo)) {
+ const { slaveData } = copyTo;
+ const sIdArray = [];
+ slaveData.forEach((item) => {
+ const redisKey = item.sSlaveId;
+ sIdArray.push(redisKey);
+ });
+ const sId = sIdArray.toString();
+ onSendSocketMessage('copyfinish', 'noAction', sId, userinfo.sId, null, null);
+ }
+ onSendSocketMessage('release', 'noAction', currentId, userinfo.sId, null, null);
+ this.props.onSaveState({
+ enabled: false, currentId: masterData.sId,
+ });
+
+ let bSucess = true;
+ if (billnosetting.bAutoCheck && bSucess) {
+ Toast.loading('正在审核单据,如果长期未响应,请到EBC中操作 ...', 5);
+ await this.handleAudit(1);
+ } else {
+ /* 通过onRouterMobile路由跳转 */
+ if (sModelsType === 'production/productionReport' && commonUtils.isNotEmptyObject(copyTo) && commonUtils.isNotEmptyObject(copyTo.listModelsId) && copyTo.listUrl && copyTo.listUrl.includes('commobileList')) {
+ const sModelsId = copyTo.listModelsId;
+ const sModelsType = copyTo.listModelsType;
+ const url = '/indexMobile/commobileList';
+ const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sModelsId}?sModelsId=${sModelsId}`;
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ url, /* 接口地址 */
+ urlKey: sNameUrl,
+ sModelsId,
+ sModelsType,
+ copyTo,
+ listFilterCondition: copyTo.listFilterCondition,
+ },
+ });
+ } else {
+ window.history.back(-1);
+ }
+ }
+ this.props.onSaveState({
+ loading: false,
+ });
+ }
+
+ /** toolbar保存 */
+ handleSaveData = async (params) => {
+ const {
+ token, sModelsId, app,
+ } = this.props;
+ const BtnSave = commonFunc.showMessage(app.commonConst, 'BtnSave');/* 保存 */
+ params.optName = BtnSave;
+ const returnData = await commonBusiness.saveData({ token, value: params, sModelsId, baseSuccessFn: this.baseSuccessFn });
+ if (commonUtils.isNotEmptyObject(returnData)) {
+ if (returnData.code !== 2) {
+ await this.baseSuccessFn();
+ }
+ return true;
+ } else {
+ this.props.onSaveState({
+ loading: false,
+ });
+ return false;
+ }
+ };
+
+ /** toolbar校验保存 */
+ handleValidateSave = async () => {
+ const {
+ masterConfig, masterData, slaveConfig, slaveDelData, sModelsType, employeeConfig, employeeData, employeeDelData, token, sModelsId, app,
+ slaveSumConfig, slaveSumData, slaveSumDelData, slaveChildConfig, slaveChildData, slaveChildDelData, slave0Config, slave0Data,
+ } = this.props;
+ let { slaveData } = this.props;
+ if (!commonBusiness.validateMaster(masterConfig, masterData, this.props) || !commonBusiness.validateTable(slaveConfig, slaveData, this.props)) {
+ this.props.onSaveState({
+ loading: false,
+ });
+ return;
+ }
+ if(commonUtils.isNotEmptyObject(slave0Config)) {
+ if (!commonBusiness.validateTable(slave0Config, slave0Data, this.props)) {
+ this.props.onSaveState({
+ loading: false,
+ });
+ return;
+ }
+ }
+ if(commonUtils.isNotEmptyObject(slaveChildConfig)) {
+ if (!commonBusiness.validateTable(slaveChildConfig, slaveChildData, this.props)) {
+ this.props.onSaveState({
+ loading: false,
+ });
+ return;
+ }
+ }
+ if (slaveConfig && slaveConfig.bNotCanEmpty && commonUtils.isEmptyArr(slaveData)) {
+ Toast.info(commonFunc.showMessage(app.commonConst, 'slaveNotNull')); // 从表不能为空!
+ this.props.onSaveState({
+ loading: false,
+ });
+ return;
+ }
+ const params = {
+ sFieldName: 'dAuxiliaryQty',
+ tableDataRow: commonUtils.isNotEmptyArr(slaveChildData) ? slaveChildData[0] : {},
+ }
+ // 汇总到从表方法
+ const slaveNewData = await this.handleWriteBack(params, true);
+ if(commonUtils.isNotEmptyArr(slaveNewData)) {
+ slaveData = await this.handleWriteBack(params, true);
+ console.log('汇总从表:', slaveData);
+ }
+ const data = [];
+ data.push(commonBusiness.mergeData('master', masterConfig.sTbName, [masterData]));
+
+ if (sModelsType === 'production/productionReport') {
+ for (const tableDataRow of slaveData) {
+ const sWageId = tableDataRow.sWageId;
+ tableDataRow.dWageMoney = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sWageId,
+ });
+ const dWageMoneyTotal = tableDataRow.dWageMoney;
+ let dProportionTotal = 0;
+ const employeeSlaveData = employeeData.filter(item => item.sSlaveId === tableDataRow.sId);
+ employeeSlaveData.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) {
+ dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6);
+ }
+ });
+ employeeSlaveData.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion)) {
+ const index1 = employeeData.findIndex(item1 => item1.sId === item.sId);
+ employeeData[index1] = {
+ ...item,
+ dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dWageMoney, 0), 6),
+ dTimeMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dTimeMoney, 0), 6),
+ dLossMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dLossMoney, 0), 6),
+ dOtherMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dOtherMoney, 0), 6),
+ dJobMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * commonUtils.isNull(tableDataRow.dJobMoney, 0), 6),
+ handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType,
+ };
+ }
+ });
+ /* 选择计件方案后 算总金额 */
+ const dWageMoney = commonUtils.isNotEmptyNumber(dWageMoneyTotal) ? commonUtils.convertFixNum(dWageMoneyTotal, 6) : 0;
+ const dTimeMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTimeMoney) ? commonUtils.convertFixNum(tableDataRow.dTimeMoney, 6) : 0;
+ const dLossMoney = commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney) ? commonUtils.convertFixNum(tableDataRow.dLossMoney, 6) : 0;
+ tableDataRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6);
+ tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType;
+ }
+ }
+ data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, slaveData, slaveDelData));
+
+ if(commonUtils.isNotEmptyObject(slaveChildConfig)) {
+ data.push(commonBusiness.mergeData('slaveChild', slaveChildConfig.sTbName, slaveChildData, slaveChildDelData));
+ }
+ // 外发工序
+ if(commonUtils.isNotEmptyObject(this.props.slave0Config) && this.isOutsourcedProcesses) {
+ data.push(commonBusiness.mergeData('slave0', this.props.slave0Config.sTbName, this.props.slave0Data, this.props.slave0DelData));
+ }
+
+ if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) {
+ data.push(commonBusiness.mergeData('employee', employeeConfig.sTbName, employeeData, employeeDelData));
+ localStorage.setItem(`${commonConfig.prefix}sTeamId`, slaveData[0].sTeamId);
+ localStorage.setItem(`${commonConfig.prefix}employeeData`, JSON.stringify(employeeData));
+ /* 手机端报产选了机台后,进去报产,选了班组,确认之后,在返回去报第二个的时候,默认班组 */
+ if (commonUtils.isNotEmptyObject(slaveData[0])) {
+ const sMachineId = slaveData[0].sMachineId;
+ const sTeamId = slaveData[0].sTeamId;
+ if (sMachineId && sTeamId) {
+ localStorage.setItem(`${commonConfig.prefix}mobile_${sMachineId}`, sTeamId);
+ }
+ }
+ }
+ if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) {
+ data.push(commonBusiness.mergeData('slaveSum', slaveSumConfig.sTbName, slaveSumData, slaveSumDelData));
+ }
+ console.log('data', data);
+ Toast.loading('正在保存数据,请稍后 ...', 0);
+ this.handleSaveData({ data, sClientType: '1', sSysLogSrcId: masterData.sId }).finally(() => {
+ Toast.hide();
+ });
+ };
+
+ /** toolbar审核(消审) */
+ handleAudit = async (flag) => {
+ /* 待用数据声明 */
+ const { masterData, gdsformconst } = this.props;
+ /* 作废订单不能审核 */
+ if (masterData.bInvalid) {
+ Toast.info(gdsformconst.filter(item => (item.sName === 'sToVoid'))[0].showName);
+ return '';
+ }
+ /** 数据审核 */
+ await this.dataAudit(flag);
+ };
+
+ /** 数据审核 */
+ dataAudit = async (flag, tmpCheck, isWait) => {
+ /* 待用数据声明 */
+ const {
+ sModelsId, masterData, app, masterConfig, slaveConfig, token, sModelsType, slaveData, employeeConfig, copyTo, dispatch, slave0Config,
+ slaveChildConfig,
+ } = this.props;
+ const sSlaveIdArray = [];
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ slaveData.forEach((item) => {
+ sSlaveIdArray.push(commonUtils.isNotEmptyObject(item.sId) ? item.sId : item.sSlaveId);
+ });
+ }
+ const slaveId = sSlaveIdArray.toString();
+ /* 数据参数 */
+ const value = {
+ sClientType: '1',
+ paramsMap: {
+ iFlag: flag,
+ iTmpCheck: commonUtils.isEmptyNumber(tmpCheck) ? 0 : tmpCheck,
+ sFormGuid: sModelsId,
+ sGuid: masterData.sId,
+ sSlaveId: slaveId,
+ sBillNo: commonUtils.isNotEmptyObject(masterData.sBillNo) ? masterData.sBillNo : '',
+ },
+ };
+ /* 数据审核 */
+ const url = `${commonConfig.server_host}business/doExamine?sModelsId=${sModelsId}`;
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ if (isWait) {
+ return returnData;
+ } else {
+ /* 接收返回值 */
+ await this.handleGetData(masterConfig, slaveConfig);
+ const check = commonFunc.showMessage(app.commonConst, 'BtnExamine');/* 审核 */
+ const BtnCancelExamine = commonFunc.showMessage(app.commonConst, 'BtnCancelExamine');/* 销审 */
+ if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) {
+ await this.handleGetMemoData(employeeConfig);
+ }
+ if(commonUtils.isNotEmptyObject(slave0Config) && this.isOutsourcedProcesses) {
+ await this.handleGetMemoData(slave0Config);
+ }
+ if(commonUtils.isNotEmptyObject(slaveChildConfig) ) {
+ await this.handleGetMemoData(slave0Config);
+ }
+ if (this.props.refresh !== undefined) {
+ this.props.refresh();
+ }
+ if (returnData.code === 1) { /* 成功 */
+ this.props.onSaveState({
+ loading: false,
+ });
+ if (flag === 1) {
+ /* 审核 */
+ const { outData } = returnData.dataset.rows[0].dataSet;
+ if (commonUtils.isNotEmptyStr(outData[0].sReturn)) {
+ const sReturnArray = outData[0].sReturn.split('|');
+ if (outData[0].sReturn.split('-').length < 2) {
+ // 正常业务提示,非审核模板
+ // if (this.props.app.currentPane.refresh !== undefined) {
+ // this.props.app.currentPane.refresh();
+ // }
+ Toast.fail(check + outData[0].sReturn);
+ return;
+ }
+ const checkConditions = [];
+ let checkPersonData = {};
+ sReturnArray.forEach((item) => {
+ const checkCondition = item.split('-')[2];
+ checkConditions.push({
+ key: commonUtils.createSid(),
+ condition: checkCondition,
+ });
+ });
+ const sCheckModelId = sReturnArray[0].split('-')[1];
+ if (commonUtils.isNotEmptyStr(sCheckModelId)) {
+ const urlCheck = `${commonConfig.server_host}checkModel/getUserListByModelId/${sCheckModelId}?sModelsId=${sModelsId}`;
+ const dataReturn = (await commonServices.getService(token, urlCheck)).data;
+ if (dataReturn.code === 1) {
+ checkPersonData = dataReturn.dataset.rows;
+ checkPersonData.forEach((item) => {
+ item.key = commonUtils.createSid();
+ });
+ this.props.onSaveState({
+ checkConditions, checkPersonData, sCheckModelId, visible: true,
+ });
+ } else { /* 失败 */
+ this.props.getServiceError({ msg: check + dataReturn });
+ }
+ }
+ } else {
+ Toast.success(check + returnData.msg);
+ if (sModelsType === 'production/productionReport' && commonUtils.isNotEmptyObject(copyTo) && commonUtils.isNotEmptyObject(copyTo.listModelsId) && copyTo.listUrl && copyTo.listUrl.includes('commobileList')) {
+ const sModelsId = copyTo.listModelsId;
+ const sModelsType = copyTo.listModelsType;
+ const url = '/indexMobile/commobileList';
+ const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sModelsId}?sModelsId=${sModelsId}`;
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ url, /* 接口地址 */
+ urlKey: sNameUrl,
+ sModelsId,
+ sModelsType,
+ copyTo,
+ returnFilterCondition: copyTo.listFilterCondition,
+ },
+ });
+ } else {
+ window.history.back(-1);
+ }
+ }
+ } else {
+ /* 消审 */
+ const { outData } = returnData.dataset.rows[0].dataSet;
+ if (commonUtils.isNotEmptyStr(outData[0].sReturn)) {
+ Toast.fail(outData[0].sReturn);
+ } else {
+ // if (this.props.app.currentPane.refresh !== undefined) {
+ // this.props.app.currentPane.refresh();
+ // }
+ Toast.success(BtnCancelExamine + returnData.msg);
+ window.history.back(-1);
+ }
+ }
+ } else { /* 失败 */
+ this.props.getServiceError(returnData);
+ this.props.onSaveState({
+ loading: false,
+ });
+ }
+ return true;
+ }
+ };
+ handleGetMsg = (str) => {
+ const msgArr = commonUtils.isNotEmptyObject(str) ? str.split('xpm'): '';
+ const divStr = [];
+ if(commonUtils.isNotEmptyArr(msgArr)) {
+ for (let i = 0; i < msgArr.length; i ++) {
+ divStr.push({msgArr[i]}
);
+ }
+ }
+ return divStr;
+ }
+ /* 调用后台配置的接口 */
+ handleThirdInterfaceCall = async (obj, showTip, key, sListSlaveId) => {
+ let bResult = false;
+ const {
+ app, sModelsId, masterData, slaveSelectedRowKeys,
+ } = this.props;
+ const sInterfaceName = obj.sInterfaceName;
+ const value = { sId: commonUtils.isNotEmptyObject(sListSlaveId) ? sListSlaveId : masterData.sId, userInfo: app.userinfo };
+ const url = `${commonConfig.interface_host}interfaceDefine/callthirdparty/${sInterfaceName}?sModelsId=${sModelsId}`;
+ const returnData = (await commonServices.postValueService(app.token, value, url, app)).data;
+ if (returnData.code === 1) {
+ bResult = true;
+ } else if (returnData.code === -8) {
+ Modal.info({
+ title: '温馨提示:',
+ width: 200,
+ content: (
+
+ {this.handleGetMsg(returnData.msg)}
+
+ ),
+ okText: '确认',
+ onOk() {},
+ });
+ bResult = true;
+ } else {
+ bResult = false;
+ this.props.getServiceError(returnData);
+ }
+ return bResult;
+ }
+
+ handleWriteBack = async (params, isWait) => {
+ const {
+ sFieldName,
+ tableDataRow,
+ } = params;
+ const {
+ slaveSelectedRowKeys,
+ slaveData,
+ slaveChildConfig,
+ slaveChildData,
+ } = this.props;
+ if (commonUtils.isEmptyArr(slaveData) || commonUtils.isEmptyArr(slaveChildData)) {
+ return;
+ }
+ const sId = slaveSelectedRowKeys[0] || slaveData[0].sId;
+ const iSlaveIndex = slaveData.findIndex(item => item.sId === sId);
+ const slaveDataRow = slaveData[iSlaveIndex];
+ const slaveChildFilter = slaveChildData.filter(item => item.sSqlConditionId === slaveDataRow.sSqlConditionId);
+
+ // 需要汇总的字段
+ const writeBackFields = ['dAuxiliaryQty', 'dProductQty', 'dArrivalQty', 'sBarcode', 'sDefineNo'];
+
+ const bHasiType = slaveChildConfig.gdsconfigformslave.find(item => ['itype', 'iType'].includes(item.sName));
+
+ if (bHasiType && ['dAuxiliaryQty', 'itype', 'iType', 'dProductQty'].includes(sFieldName)) {
+ // 需要汇总到从表的字段 1:dAuxiliaryQty,2:dEscrowQty,3:dGiveAuxiliaryQty
+ let dAuxiliaryQty = 0;
+ let dEscrowAuxiliaryQty = 0;
+ let dGiveAuxiliaryQty = 0;
+ let dProductQty = 0;
+ slaveChildFilter.forEach(item => {
+ const dataRow = item.sId === params.tableDataRow.sId ? params.tableDataRow : item;
+ const { itype, iType } = dataRow;
+ const type = itype !== undefined ? itype : iType !== undefined ? iType : 11;
+ console.log('s', dataRow.sId, type);
+ if (type === 1) {
+ dAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2);
+ } else if (type === 2) {
+ dEscrowAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2);
+ } else if (type === 3) {
+ dGiveAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2);
+ } else if (type === 10) {
+ dAuxiliaryQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dProductQty, 0), 2);
+ } else if (type === 11) {
+ dProductQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dAuxiliaryQty, 0), 2);
+ } else if (type === 12) {
+ dProductQty += commonUtils.convertToNum(commonUtils.isNull(dataRow.dProductQty, 0), 2);
+ }
+ });
+
+ const iIndex = slaveData.findIndex(item => item.sId === sId);
+ let tableDataRow = {};
+ tableDataRow = await this.handleTableChange('slave', 'dEscrowAuxiliaryQty', { dEscrowAuxiliaryQty }, sId, [], true);
+ slaveData[iIndex] = tableDataRow;
+ window.tmpSlaveData = slaveData;
+ tableDataRow = await this.handleTableChange('slave', 'dGiveAuxiliaryQty', { dGiveAuxiliaryQty }, sId, [], true);
+ slaveData[iIndex] = tableDataRow;
+ window.tmpSlaveData = slaveData;
+ tableDataRow = await this.handleTableChange('slave', 'dAuxiliaryQty', { dAuxiliaryQty }, sId, [], true);
+ slaveData[iIndex] = tableDataRow;
+ if (slaveChildFilter.some(item => item.itype === 11 || item.iType === 11 || item.itype === 12 || item.iType === 12)) {
+ window.tmpSlaveData = slaveData;
+ tableDataRow = await this.handleTableChange('slave', 'dProductQty', { dProductQty }, sId, [], true);
+ slaveData[iIndex] = tableDataRow;
+ }
+ window.tmpSlaveData = null;
+ console.log('切换从表:', slaveData);
+ if(isWait) {
+ return slaveData;
+ } else {
+ this.props.onSaveState({ slaveData });
+ }
+ } else if (bHasiType && writeBackFields.includes(sFieldName)) {
+ let dQty = 0;
+ slaveChildFilter.forEach(item => {
+ const dataRow = item.sId === tableDataRow.sId ? tableDataRow : item;
+ dQty += commonUtils.isNull(dataRow[sFieldName], 0);
+ });
+ this.props.onDataChange('slave', sFieldName, { [sFieldName]: dQty }, sId, [], false);
+ }
+ }
+
+ handleForm = (form) => {
+ this.form = form;
+ };
+ /** 点击修改按钮操作 */
+ handleEdit = () => {
+ const {
+ slaveConfig, masterConfig, app, dispatch, currentId, slaveChildConfig, slave0Config,
+ } = this.props;
+ const { userinfo } = app;
+
+ let timValue = 0;
+ if (this.props.app.webSocket === null || this.props.app.webSocket.readyState !== WebSocket.OPEN) {
+ this.props.dispatch({ type: 'app/createWebSocket', payload: { reStart: true, dispatch } });
+ timValue = 3000;
+ }
+ setTimeout(() => {
+ this.props.app.webSocket.onmessage = (msg) => {
+ const rtmsg = JSON.parse(msg.data);
+ if (rtmsg.action === 'showMsg') {
+ Toast.info(rtmsg.msg);
+ this.props.onSaveState({ loading: false });
+ } else if (rtmsg.action === 'loginOut') {
+ if (location.pathname.indexOf('/indexOee') > -1) {
+ dispatch({ type: 'app/throwErrorOee', payload: { code: -2, msg: rtmsg.msg } });
+ } else if (location.pathname.indexOf('/indexMobile') > -1) {
+ dispatch({ type: 'app/throwErrorMobile', payload: { code: -2, msg: rtmsg.msg } });
+ } else {
+ dispatch({ type: 'app/throwError', payload: { code: -2, msg: rtmsg.msg } });
+ }
+ } else if (rtmsg.action === 'update') {
+ this.handleGetData(masterConfig, slaveConfig);
+ if(commonUtils.isNotEmptyObject(slave0Config) && this.isOutsourcedProcesses) {
+ this.handleGetMemoData(slave0Config);
+ }
+ if(commonUtils.isNotEmptyObject(slaveChildConfig) ) {
+ this.handleGetMemoData(slaveChildConfig);
+ }
+ //
+ this.props.onSaveState({ enabled: true, loading: false });
+ } else if (this.props.app.webSocket.homeAction) {
+ this.props.app.webSocket.homeAction(msg);
+ }
+ };
+ this.props.handleSendSocketMessage('update', 'showMsg', currentId, userinfo.sId, null, null);
+ }, timValue);
+ };
+
+ /** 获取主表、从表、审核表数据 */
+ handleGetData = async (masterConfig, slaveConfig) => {
+ const { currentId, masterData } = this.props; /* 当前页签数据 */
+ const sId = currentId !== undefined ? currentId : masterData?.sId;
+ await this.props.handleGetDataOne({ name: 'master', configData: masterConfig, condition: { sId, pageSize: '', pageNum: '' } });
+ if (!commonUtils.isEmptyObject(slaveConfig) && slaveConfig.sSqlStr !== "noQuery") {
+ this.props.handleGetDataSet({
+ name: 'slave', configData: slaveConfig, condition: { sSqlCondition: { sParentId: sId } },
+ });
+ }
+ };
+
+ handleGetMemoData = async (tableConfig,sTableName) => {
+ const { currentId,masterData } = this.props; /* 当前页签数据 */
+ const sId = currentId !== undefined ? currentId : masterData?.sId;
+ this.props.handleGetDataSet({
+ name: sTableName, configData: tableConfig, condition: { sSqlCondition: { sParentId: sId } },
+ });
+ };
+
+ handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => {
+ // this.handleCustomerChange(name, changeValue);
+ const {
+ sModelsId, sModelsType: sModelsTypeOld, masterData: masterDataOld, slaveData, app, masterConfig, slaveConfig, token,
+ } = this.props;
+ const addState = {};
+ const sModelsType = commonUtils.isEmpty(sModelsTypeOld) ? '' : sModelsTypeOld;
+ const masterData = masterDataNew === undefined ? masterDataOld === undefined ? {} : masterDataOld : masterDataNew;
+ let bNewSlaveData = false;
+ if (sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName') {
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ // 从表有数据,请删除后修改客户!不能去掉
+ if (slaveData.length === 1 && commonUtils.isEmpty(slaveData[0].sProductId)) {
+ bNewSlaveData = true;
+ } else {
+ Toast.info(commonFunc.showMessage(app.commonConst, 'slaveHasDataPleaseDel'));
+ return;
+ }
+ }
+ changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue });
+ // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductId', []);
+ // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductNo', []);
+ // commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sProductName', []);
+ //
+ // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductId', []);
+ // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductNo', []);
+ // commonUtils.setStoreDropDownData(sModelsId, 'master', 'sProductName', []);
+ } else if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName') {
+ changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue });
+ } else if (sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') {
+ commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsId', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsNo', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'slave', 'sMaterialsName', []);
+ if (sModelsType === 'materialsStock/materialsCheck' || sModelsType === 'productStock/productCheck') {
+ let value = {};
+ if (sModelsType === 'materialsStock/materialsCheck') {
+ value = {
+ sProName: 'Sp_System_AccountSquareCheck',
+ paramsMap: {
+ iType2: 1,
+ sWareHouseGuid: commonUtils.isNotEmptyObject(changeValue.sWareHouseId) ? changeValue.sWareHouseId : '',
+ },
+ };
+ } else if (sModelsType === 'productStock/productCheck') {
+ value = {
+ sProName: 'Sp_System_AccountSquareCheck',
+ paramsMap: {
+ iType2: 2,
+ sWareHouseGuid: commonUtils.isNotEmptyObject(changeValue.sWareHouseId) ? changeValue.sWareHouseId : '',
+ },
+ };
+ }
+ const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`;
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ if (returnData.code === 1) {
+ const outData = returnData.dataset.rows[0].dataSet.outData[0];
+ if (outData.sCode === -1) {
+ Toast.fail(outData.sReturn);
+ return;
+ }
+ } else {
+ this.props.getServiceError(returnData);
+ return;
+ }
+ }
+ } else if (sModelsType.includes('cashier/') && sFieldName === 'sBillType') {
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerId', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerNo', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sCustomerName', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyId', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyNo', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sSupplyName', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyId', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyNo', []);
+ commonUtils.setStoreDropDownData(sModelsId, 'master', 'sFamilyName', []);
+ changeValue.sCustomerId = '';
+ const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sCustomerId');
+ if (iIndex > -1) {
+ masterConfig.gdsconfigformslave[iIndex].bReGetDropDown = true;
+ }
+ changeValue.sSupplyId = '';
+ const iSupplyIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sSupplyId');
+ if (iSupplyIndex > -1) {
+ masterConfig.gdsconfigformslave[iSupplyIndex].bReGetDropDown = true;
+ }
+ /* 财务调整中切换调整类型后,对象名称清空 */
+ const sBillTypeIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sFamilyName');
+ if (sBillTypeIndex > -1) {
+ masterData.sFamilyName = '';
+ }
+ this.props.onSaveState({ masterConfig });
+ } else if (sFieldName === 'sGetPayId') {
+ changeValue.tGetPayDate = commonBusiness.getGeyPayDate({ ...masterData, ...changeValue });
+ } else if (sFieldName === 'sSettlementId') {
+ if (changeValue.sSettlementId === 'cash') {
+ const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount');
+ if (sBankAccountIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 1;
+ masterData.sBankAccount = '';
+ }
+ const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo');
+ if (sInvoiceNoIndex > -1) {
+ masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 1;
+ masterData.sInvoiceNo = '';
+ }
+ const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId' || item.sName === 'sBankName');
+ if (sBankIdIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 1;
+ masterData.sBankId = '';
+ masterData.sBankName = '';
+ }
+ const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate');
+ if (tDueDateIndex > -1) {
+ masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 1;
+ delete masterData.tDueDate;
+ }
+ }
+ if (changeValue.sSettlementId === 'bank') {
+ const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo');
+ if (sInvoiceNoIndex > -1) {
+ masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 1;
+ masterData.sInvoiceNo = '';
+ }
+ const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount');
+ if (sBankAccountIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 0;
+ }
+ const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId' || item.sName === 'sBankName');
+ if (sBankIdIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 0;
+ }
+ const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate');
+ if (tDueDateIndex > -1) {
+ masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 1;
+ delete masterData.tDueDate;
+ }
+ }
+ if (changeValue.sSettlementId === 'bill') {
+ const sBankAccountIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankAccount');
+ if (sBankAccountIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankAccountIndex].iTag = 1;
+ masterData.sBankAccount = '';
+ }
+ const sInvoiceNoIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sInvoiceNo');
+ if (sInvoiceNoIndex > -1) {
+ masterConfig.gdsconfigformslave[sInvoiceNoIndex].iTag = 0;
+ }
+ const sBankIdIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'sBankId');
+ if (sBankIdIndex > -1) {
+ masterConfig.gdsconfigformslave[sBankIdIndex].iTag = 0;
+ }
+ const tDueDateIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sName === 'tDueDate');
+ if (tDueDateIndex > -1) {
+ masterConfig.gdsconfigformslave[tDueDateIndex].iTag = 0;
+ }
+ }
+ }
+ let returnData = this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, true, masterData);
+ const masterDataAfter = commonBusiness.getKeyUpEvent(name, sFieldName, masterConfig, returnData.masterData, {}, true);
+ if (commonUtils.isNotEmptyObject(masterDataAfter)) {
+ returnData.masterData = masterDataAfter;
+ }
+ if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName' || sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' ||
+ sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' ||
+ sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName' || sFieldName === 'tDeliverDate') {
+ const slaveDataNew = [];
+ for (const item of slaveData) {
+ let tableDataRow = ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' ||
+ sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' ||
+ sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') && (sModelsType.includes('materialsStock/productionmaterialsadjust'))) ?
+ { ...item } : { ...item, [sFieldName]: changeValue[sFieldName] };
+ if (sFieldName === 'sSupplyId' || sFieldName === 'sSupplyNo' || sFieldName === 'sSupplyName') {
+ tableDataRow.sTaxId = changeValue.sTaxId;
+ tableDataRow.sTaxNo = changeValue.sTaxNo;
+ tableDataRow.sTaxName = changeValue.sTaxName;
+ tableDataRow.dTaxRate = changeValue.dTaxRate;
+ tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType;
+ const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials';
+
+ tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'sTaxId', masterData, tableDataRow);
+ let dMaterialsMoney = '';
+ if (sModelsType.includes('outside/')) { /* 工序发外 */
+ let sComputeId = '';
+ const sSupplyId = changeValue.sSupplyId;
+ const sProcessId = tableDataRow.sProcessId;
+ /* 根据客户id,工序id获取公式ID */
+ if (commonUtils.isNotEmptyObject(sSupplyId) && commonUtils.isNotEmptyObject(sProcessId)) {
+ sComputeId = await commonBusiness.getOutSideProcessFormula({
+ token, sModelsId, sSupplyId, sProcessId,
+ });
+ if (commonUtils.isNotEmptyObject(sComputeId)) {
+ dMaterialsMoney = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId,
+ });
+ tableDataRow.dMaterialsMoney = dMaterialsMoney;
+ tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, 'Materials');
+ }
+ }
+ }
+ }
+ if ((sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName' ||
+ sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName' ||
+ sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') && (!sModelsType.includes('materialsStock/productionmaterialsadjust'))) {
+ if (sFieldName === 'sWareHouseId' || sFieldName === 'sWareHouseNo' || sFieldName === 'sWareHouseName') {
+ tableDataRow.sWareHouseId = changeValue.sWareHouseId;
+ tableDataRow.sWarehouseId = changeValue.sWareHouseId;
+ tableDataRow.sWareHouseNo = changeValue.sWareHouseNo;
+ tableDataRow.sWareHouseName = changeValue.sWareHouseName;
+ } else if (sFieldName === 'sLocationId' || sFieldName === 'sLocationNo' || sFieldName === 'sLocationName') {
+ tableDataRow.sLocationId = changeValue.sLocationId;
+ tableDataRow.sLocationNo = changeValue.sLocationNo;
+ tableDataRow.sLocationName = changeValue.sLocationName;
+ } else if (sFieldName === 'sWareHouseLocationId' || sFieldName === 'sWareHouseLocationNo' || sFieldName === 'sWareHouseLocationName') {
+ tableDataRow.sWareHouseLocationId = changeValue.sWareHouseLocationId;
+ tableDataRow.sWareHouseLocationNo = changeValue.sWareHouseLocationNo;
+ tableDataRow.sWareHouseLocationName = changeValue.sWareHouseLocationName;
+ }
+ tableDataRow.handleType = commonUtils.isEmpty(tableDataRow.handleType) ? 'update' : tableDataRow.handleType;
+ }
+ slaveDataNew.push(tableDataRow);
+ }
+ addState.slaveData = slaveDataNew;
+ // this.props.onSaveState({ slaveData: slaveDataNew });
+ } else if ((sFieldName === 'sCustomerId' || sFieldName === 'sCustomerNo' || sFieldName === 'sCustomerName')) {
+ if (bNewSlaveData) {
+ const slaveDataNew = [];
+ const allTableData = {};
+ allTableData.master = returnData.masterData;
+ const tableDataRowAdd = commonFunc.getDefaultData(slaveConfig, allTableData);
+ tableDataRowAdd.handleType = 'add';
+ tableDataRowAdd.sId = commonUtils.createSid();
+ tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null;
+ tableDataRowAdd.key = tableDataRowAdd.sId;
+ tableDataRowAdd.bDefault = false;
+ tableDataRowAdd.iOrder = 1;
+ slaveDataNew.push(tableDataRowAdd);
+ addState.slaveData = slaveDataNew;
+ // this.props.onSaveState({ slaveData: slaveDataNew });
+ } else if (sModelsType.includes('sales/') || sModelsType.includes('cashier/') || sModelsType.includes('manufacture/')) { // 获取应收款
+ if (commonUtils.isNotEmptyObject(masterData)) {
+ this.getCustomerReceipt({ masterData: returnData.masterData });
+ }
+ }
+ } else if (sFieldName === 'sTestStandardId' || sFieldName === 'sTestStandardName') {
+ const { slaveDelData: slaveDelDataOld, slaveConfig, masterConfig } = this.props;
+ const dataUrl = `${commonConfig.server_host}eleteamemployee/getObtainInspectionStandards?sModelsId=${sModelsId}&sParentId=${returnData.masterData.sTestStandardId}`;
+ const dataReturn = (await commonServices.getService(this.props.app.token, dataUrl)).data;
+ const slaveDelData = commonUtils.isEmptyArr(slaveDelDataOld) ? [] : slaveDelDataOld;
+ if (dataReturn.code === 1) {
+ const returnSlaveData = dataReturn.dataset.rows;
+ slaveData.forEach((item) => {
+ item.handleType = 'del';
+ slaveDelData.push(item);
+ });
+ const slaveDataNew = [];
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ const iConfigIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'sTestStandardName');
+ const iSqlIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sActValue');
+ returnSlaveData.forEach((item, iIndex) => {
+ let tableDataRow = commonFunc.getDefaultData(slaveConfig, {});
+ tableDataRow.handleType = 'add';
+ tableDataRow.sId = commonUtils.createSid();
+ tableDataRow.sParentId = masterData && masterData.sId ? masterData.sId : null;
+ tableDataRow.key = tableDataRow.sId;
+ tableDataRow.iOrder = iIndex;
+ if (iConfigIndex > -1) {
+ tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(masterConfig.gdsconfigformslave[iConfigIndex].sAssignField, item, newCopyTo) }; // 取赋值字段
+ // tableDataRow.sTestReference = '15S|20S';
+ const sTestReference = tableDataRow.sTestReference;
+ const sParamObj = {};
+ if (commonUtils.isNotEmptyObject(sTestReference)) {
+ if (sTestReference.indexOf('|') >= 0) {
+ sTestReference.split('|').forEach((itemField) => {
+ sParamObj[itemField] = itemField;
+ });
+ tableDataRow.sParamDropDownsActValue = sParamObj;
+ if (iSqlIndex > -1) {
+ slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = 'sql';
+ } else {
+ slaveConfig.gdsconfigformslave[iSqlIndex].sDropDownType = '';
+ }
+ }
+ } else { /* 若数据没有值 则渲染文本框 */
+ tableDataRow.isText = true;
+ }
+ }
+ slaveDataNew.push(tableDataRow);
+ });
+ addState.slaveData = slaveDataNew;
+ } else {
+ Toast.fail(dataReturn.msg);
+ }
+ }
+ const models = name === 'materials' ? 'Materials' :
+ sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('print/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials';
+ if (sModelsType.includes('purchase/') || sModelsType.includes('print/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/') || sModelsType.includes('quality/')) {
+ let masterData = await this.handleMaterialsChange(returnData.masterData, sModelsId, masterData, changeValue, sFieldName, app, token, models);
+ masterData = commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, masterData);
+ if (sFieldName !== 'dPackQty') {
+ if (changeValue.dPackQty !== this.state.dPackQtyChange && changeValue.dPackQty !== undefined) {
+ masterData = commonBusiness.getCalculateAllMoney(app, models, 'dPackQty', masterData, masterData);
+ this.setState({ dPackQtyChange: changeValue.dPackQty });
+ }
+ }
+ returnData = { ...returnData, masterData };
+ }
+ if (isWait) {
+ return { ...returnData, ...addState, enabled: true };
+ } else {
+ this.props.onSaveState({ ...returnData, ...addState, enabled: true });
+ return returnData;
+ }
+ }
+
+ handleFocus = (showConfig) => {
+ this.props.onSaveState({
+ currentConfig:showConfig
+ });
+ }
+ handleBlur = (showConfig) => {
+
+ }
+
+
+ /** 表格数据更改 */
+ // name 不写完整的state名称作用为了要用到total // (name, changeValue, sId, dropDownData)
+ handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait) => {
+ /* 从CommonBase获取默认参数 */
+ const {
+ [`${name}Data`]: tableData, sModelsType, sModelsId, token, app,
+ } = this.props;
+ if (name === 'control' && sModelsType === 'sales/salesOrder') {
+ const { [`${name}Data`]: tableData, materialsData: materialsDataOld, processData: processDataOld } = this.props;
+ let tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true);
+ if (tableDataRow === undefined) return;
+ if (sFieldName === 'dSinglePQty' || sFieldName === 'dSumPQty' || sFieldName === 'iPrintModePo' || sFieldName === 'iPrintMode' || sFieldName === 'iPrintModePo' || sFieldName === 'iPositiveColor' ||
+ sFieldName === 'iPositiveSpecialColor' || sFieldName === 'iOppositeColor' || sFieldName === 'iOppositeSpecialColor') {
+ if (sFieldName === 'iPrintModePo') {
+ if (tableDataRow.iPrintModePo === 0) {
+ tableDataRow.iPrintMode = 3;
+ if (tableDataRow.iPositiveColor === 0) {
+ tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeColor = 0;
+ tableDataRow.iOppositeSpecialColor = 0;
+ } else {
+ tableDataRow.iOppositeColor = 0;
+ tableDataRow.iOppositeSpecialColor = 0;
+ }
+ } else if (tableDataRow.iPrintModePo === 1) {
+ tableDataRow.iPrintMode = 3;
+ if (tableDataRow.iPositiveColor === 0) {
+ tableDataRow.iPositiveColor = 0;
+ tableDataRow.iPositiveSpecialColor = 0;
+ tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? 4 : tableDataRow.iOppositeColor;
+ } else {
+ tableDataRow.iPositiveColor = 0;
+ tableDataRow.iPositiveSpecialColor = 0;
+ }
+ } else {
+ tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? tableDataRow.iPositiveColor : tableDataRow.iOppositeColor;
+ }
+ } else if (sFieldName === 'iPrintMode') {
+ if (tableDataRow.iPrintMode === 0 || tableDataRow.iPrintMode === 1) {
+ tableDataRow.iPositiveColor = commonUtils.isEmpty(tableDataRow.iPositiveColor) || tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeColor = tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeSpecialColor = tableDataRow.iPositiveSpecialColor;
+ } else if (tableDataRow.iPrintMode === 2) {
+ tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeColor = tableDataRow.iOppositeColor === 0 ? tableDataRow.iPositiveColor : tableDataRow.iOppositeColor;
+ } else if (tableDataRow.iPrintMode === 3) {
+ tableDataRow.iPositiveColor = tableDataRow.iPositiveColor === 0 ? 4 : tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeColor = 0;
+ tableDataRow.iOppositeSpecialColor = 0;
+ } else if (tableDataRow.iPrintMode === 4) {
+ tableDataRow.iPositiveColor = 0;
+ tableDataRow.iPositiveSpecialColor = 0;
+ tableDataRow.iOppositeColor = 0;
+ tableDataRow.iOppositeSpecialColor = 0;
+ }
+ } else if (sFieldName === 'iPositiveColor' || sFieldName === 'iPositiveSpecialColor') {
+ if (tableDataRow.iPrintMode === 0 || tableDataRow.iPrintMode === 1) {
+ tableDataRow.iOppositeColor = tableDataRow.iPositiveColor;
+ tableDataRow.iOppositeSpecialColor = tableDataRow.iPositiveSpecialColor;
+ }
+ }
+ tableDataRow = this.singlePQtyChange(tableDataRow);
+ }
+ const materialsData = [];
+ const processData = [];
+ materialsDataOld.forEach((item) => {
+ const itemNew = { ...item };
+ if (itemNew.sControlId === sId) {
+ itemNew.sPartsName = tableDataRow.sPartsName;
+ }
+ materialsData.push(itemNew);
+ });
+ processDataOld.forEach((item) => {
+ const itemNew = { ...item };
+ if (itemNew.sControlId === sId) {
+ itemNew.sPartsName = tableDataRow.sPartsName;
+ }
+ processData.push(itemNew);
+ });
+ const materialsDataNew = this.sortData(tableData, materialsData);
+ const processDataNew = this.sortData(tableData, processData);
+
+ const iIndex = tableData.findIndex(item => item.sId === sId);
+ tableData[iIndex] = tableDataRow;
+ this.props.onSaveState({ [`${name}Data`]: tableData, materialsData: materialsDataNew, processData: processDataNew });
+ } else {
+ let { masterData } = this.props;
+ const iIndex = tableData.findIndex(item => item.sId === sId);
+ // if (sFieldName.substring(0, 1) === 'd' && commonUtils.convertToNum(tableData[iIndex][sFieldName]) === commonUtils.convertToNum(changeValue[sFieldName])) {
+ // if (!(tableData[iIndex][sFieldName] === undefined && commonUtils.convertToNum(changeValue[sFieldName]) === 0)) return;
+ // }
+ if (sFieldName === 'sProductName' && name === 'slave' && (sModelsType.includes('sales/salesOrder') || sModelsType.includes('manufacture/workOrder') || sModelsType.includes('quotation/quotation'))) {
+ if (commonUtils.isNotEmptyObject(changeValue) && Object.keys(changeValue).length === 1 && Object.keys(changeValue)[0] === sFieldName) {
+ changeValue.sProductId = changeValue.sProductName;
+ }
+ }
+ let tableDataRow = this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true);
+ if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductStyle' || sFieldName === 'sProductUnit' || sFieldName === 'sProductNo'
+ || sFieldName === 'sCustomerProductNo' || sFieldName === 'sProductClassifyId' || sFieldName === 'sProductClassifyName') && !commonUtils.isEmpty(tableDataRow.sProductId)) {
+ const productIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'slave', sFieldName);
+ const iProductIdIndex = commonUtils.isEmptyArr(productIdDropDown) ? -1 : productIdDropDown.findIndex(item => item.sId === tableDataRow.sProductId);
+ if (iProductIdIndex === -1) {
+ tableDataRow.sProductInfo = JSON.stringify({
+ sProductId: tableDataRow.sProductName,
+ sProductName: tableDataRow.sProductName,
+ sProductStyle: tableDataRow.sProductStyle,
+ sProductUnit: tableDataRow.sProductUnit,
+ sProductNo: tableDataRow.sProductNo,
+ sCustomerProductNo: tableDataRow.sCustomerProductNo,
+ sProductClassifyId: tableDataRow.sProductClassifyId,
+ sProductClassifyName: tableDataRow.sProductClassifyName,
+ });
+ } else {
+ tableDataRow.sProductInfo = '';
+ }
+ if ((sFieldName === 'sProductId' || sFieldName === 'sProductName' || sFieldName === 'sProductNo') && !commonUtils.isEmpty(changeValue.sProductId)) {
+ const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`;
+ const value = {
+ sProName: 'Sp_Cashier_GetProductPrice',
+ paramsMap: {
+ sProductGuid: changeValue.sProductId,
+ },
+ };
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ if (returnData.code === 1) {
+ tableDataRow.dProductPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice;
+ }
+ const models = name === 'materials' ? 'Materials' :
+ sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials';
+ if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) {
+ tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, 'dProductQty', app, token, models);
+ }
+ tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dProductQty', masterData, tableDataRow);
+ // else {
+ // this.props.getServiceError(returnData);
+ // }
+ }
+ } else if (sModelsType === 'sales/salesOrder' && (sFieldName === 'sProductClassifyId' || sFieldName === 'sProductClassifyName') && name === 'slave') {
+ const { controlData } = this.props;
+ if (controlData !== undefined && !commonUtils.isEmpty(tableData.sProductInfo)) {
+ const controlDataFilter = controlData.filter(item => item.sSlaveId === tableData[iIndex].sId);
+ const tableSelectedRowKeys = [];
+ controlDataFilter.forEach((item) => {
+ tableSelectedRowKeys.push(item.sId);
+ });
+ const materialsReturnData = this.otherTableDel('materials', tableSelectedRowKeys);
+ const processReturnData = this.otherTableDel('process', tableSelectedRowKeys);
+ const controlReturnData = this.props.onDataRowDel('control', true, tableSelectedRowKeys);
+ this.props.onSaveState({
+ ...materialsReturnData,
+ ...processReturnData,
+ ...controlReturnData,
+ });
+ }
+ } else if (sModelsType.includes('cashier/') && sFieldName === 'dTotalMoney') { /* 付款单、收款单,从表付款/收款金额改变,会自动汇总到主表付款金额中 */
+ const addStata = {};
+ addStata.dTotalMoney = 0;
+ if (iIndex > -1) { /* 选中行 */
+ let dMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTotalMoney) ? tableDataRow.dTotalMoney : 0;
+ dMoney = commonUtils.convertStrToNumber(dMoney);
+ addStata.dTotalMoney = dMoney + commonUtils.convertStrToNumber(addStata.dTotalMoney);
+ }
+ tableData.forEach((item, index) => { /* 非选中行 */
+ if (index !== iIndex) {
+ const dMoney = commonUtils.isNotEmptyNumber(item.dTotalMoney) ? item.dTotalMoney : 0;
+ addStata.dTotalMoney = commonUtils.convertFixNum(dMoney, 6) + commonUtils.convertFixNum(addStata.dTotalMoney, 6);
+ }
+ });
+ masterData = { ...masterData, ...addStata };
+ this.props.onSaveState({ masterData });
+ }
+ // 取工艺卡数据
+ if (sModelsType === 'sales/salesOrder' && (sFieldName === 'sProductId' || sFieldName === 'sProductNo' || sFieldName === 'sProductName') && name === 'slave') {
+ const {
+ controlConfig, materialsConfig, processConfig,
+ } = this.props;
+ let { controlData, materialsData, processData } = this.props;
+ const sId = tableData[iIndex].sId;
+ const bCkxCopyFromTechnology = '1'; // app.systemData.filter(item => item.sName === 'CkxCopyFromTechnology')[0].sValue;
+ if (bCkxCopyFromTechnology === '1' && tableDataRow.sProductId !== tableDataRow.sProductName) {
+ const controlSelectedData = controlData.filter(item => item.sSlaveId === sId);
+ if (commonUtils.isNotEmptyObject(controlSelectedData)) {
+ const materialsReturnData = this.otherTableDel('materials', controlSelectedData);
+ const processReturnData = this.otherTableDel('process', controlSelectedData);
+ const controlReturnData = this.props.onDataRowDel('control', true, controlSelectedData);
+ controlData = controlReturnData.controlData;
+ materialsData = materialsReturnData.materialsData;
+ processData = processReturnData.processData;
+ this.props.onSaveState({
+ ...materialsReturnData,
+ ...processReturnData,
+ ...controlReturnData,
+ });
+ }
+ const sCustomerId = masterData.sCustomerId;
+ const sProductId = changeValue.sProductId;
+ const sProductIdArray = [];
+ sProductIdArray.push(sProductId);
+ const sProductIds = sProductIdArray.toString();
+ const condition = { sCustomerId, sProductIds };
+ const dataUrl = `${commonConfig.server_host}salesorder/getProcessCardDataByCustomIdProductId/?sModelsId=${sModelsId}`;
+ const dataReturn = (await commonServices.postValueService(token, condition, dataUrl)).data;
+ const config = this.props.masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes('BtnCopyFrom.ActProcessCard'));
+ if (dataReturn.code === 1) {
+ const returnData = dataReturn.dataset.rows[0];
+ const copyToControlConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Control'.toLowerCase());
+ const copyToMaterialsConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Materials'.toLowerCase());
+ const copyToProcessConfig = config.filter(item => item.sControlName.toLowerCase() === 'BtnCopyFrom.ActProcessCard.Process'.toLowerCase());
+ const controlAssignField = commonUtils.isNotEmptyArr(copyToControlConfig) ? copyToControlConfig[0].sAssignField : '';
+ const materialsAssignField = commonUtils.isNotEmptyArr(copyToMaterialsConfig) ? copyToMaterialsConfig[0].sAssignField : '';
+ const processAssignField = commonUtils.isNotEmptyArr(copyToProcessConfig) ? copyToProcessConfig[0].sAssignField : '';
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmptyArr(tableData) ? {} : tableData;
+ if (commonUtils.isNotEmptyArr(returnData.controlData)) {
+ // eslint-disable-next-line no-loop-func
+ returnData.controlData.forEach((controlItem) => {
+ newCopyTo.control = controlItem;
+ let controlRow = commonFunc.getDefaultData(controlConfig, newCopyTo); // 取默认值
+ controlRow = { ...controlRow, ...commonFunc.getAssignFieldValue(controlAssignField, controlItem, newCopyTo) }; // 取赋值字段
+ controlRow.handleType = 'add';
+ controlRow.sId = commonUtils.createSid();
+ controlRow.sSlaveId = tableDataRow.sId;
+ controlRow.sParentId = masterData.sId;
+ controlData.push(controlRow);
+
+ if (commonUtils.isNotEmptyArr(returnData.materialsData)) {
+ returnData.materialsData.filter(item => item.sControlId === controlItem.sId).forEach((materialsItem) => {
+ newCopyTo.materials = materialsItem;
+ let materialsRow = commonFunc.getDefaultData(materialsConfig, newCopyTo); // 取默认值
+ materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段
+ materialsRow.handleType = 'add';
+ materialsRow.sId = commonUtils.createSid();
+ materialsRow.sSlaveId = tableDataRow.sId;
+ materialsRow.sParentId = masterData.sId;
+ materialsRow.sControlId = controlRow.sId;
+ materialsRow.sPartsName = controlRow.sPartsName;
+
+ materialsData.push(materialsRow);
+ });
+ }
+
+ if (commonUtils.isNotEmptyArr(returnData.processData)) {
+ returnData.processData.filter(item => item.sControlId === controlItem.sId).forEach((processItem) => {
+ newCopyTo.process = processItem;
+ let processRow = commonFunc.getDefaultData(processConfig, newCopyTo); // 取默认值
+ processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段
+ processRow.handleType = 'add';
+ processRow.sId = commonUtils.createSid();
+ processRow.sSlaveId = tableDataRow.sId;
+ processRow.sParentId = masterData.sId;
+ processRow.sControlId = controlRow.sId;
+ processRow.sPartsName = controlRow.sPartsName;
+ processData.push(processRow);
+ });
+ }
+ });
+ }
+ if (commonUtils.isNotEmptyArr(returnData.materialsData)) {
+ // eslint-disable-next-line no-loop-func
+ returnData.materialsData.filter(item => item.sType === '2').forEach((materialsItem) => {
+ newCopyTo.materials = materialsItem;
+ let materialsRow = commonFunc.getDefaultData(materialsConfig, newCopyTo); // 取默认值
+ materialsRow = { ...materialsRow, ...commonFunc.getAssignFieldValue(materialsAssignField, materialsItem, newCopyTo) }; // 取赋值字段
+ materialsRow.handleType = 'add';
+ materialsRow.sId = commonUtils.createSid();
+ materialsRow.sSlaveId = tableDataRow.sId;
+ materialsRow.sParentId = masterData.sId;
+ materialsData.push(materialsRow);
+ });
+ }
+
+ if (commonUtils.isNotEmptyArr(returnData.processData)) {
+ // eslint-disable-next-line no-loop-func
+ returnData.processData.filter(item => item.sType === '3').forEach((processItem) => {
+ newCopyTo.process = processItem;
+ let processRow = commonFunc.getDefaultData(processConfig, newCopyTo); // 取默认值
+ processRow = { ...processRow, ...commonFunc.getAssignFieldValue(processAssignField, processItem, newCopyTo) }; // 取赋值字段
+ processRow.handleType = 'add';
+ processRow.sId = commonUtils.createSid();
+ processRow.sSlaveId = tableDataRow.sId;
+ processRow.sParentId = masterData.sId;
+ processData.push(processRow);
+ });
+ }
+ this.props.onSaveState({ controlData, materialsData, processData });
+ }
+ }
+ } else if (sModelsType === 'sales/salesOrder' && (sFieldName === 'dProductQty' || sFieldName === 'dGiveQty' || sFieldName === 'dStockupQty') && name === 'slave') {
+ const {
+ controlData, slaveSelectedRowKeys,
+ } = this.props;
+ const controlSelectedData = controlData.filter(item => item.sSlaveId === slaveSelectedRowKeys[0]);
+ for (const one of controlSelectedData) {
+ one.handleType = commonUtils.isEmpty(one.handleType) ? 'update' : one.handleType;
+ one.dPartsQty = commonUtils.isNull(tableDataRow.dProductQty, 0) + commonUtils.isNull(tableDataRow.dGiveQty, 0);
+ }
+ this.props.onSaveState({ controlData });
+ } else if (sModelsType.includes('purchase/') && (sFieldName === 'sMaterialsId' || sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName') && name === 'slave') {
+ const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`;
+ const value = {
+ sProName: 'Sp_Cashier_GetMaterialsPrice',
+ paramsMap: {
+ sMaterialsGuid: changeValue.sMaterialsId,
+ sSupplyGuid: masterData.sSupplyId,
+ },
+ };
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ if (returnData.code === 1) {
+ tableDataRow.dMaterialsPrice = returnData.dataset.rows[0].dataSet.outData[0].dPrice;
+ }
+ const models = name === 'materials' ? 'Materials' :
+ sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials';
+ if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) {
+ tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, 'dAuxiliaryQty', app, token, models);
+ }
+ tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dAuxiliaryQty', masterData, tableDataRow);
+
+ if (Object.keys(changeValue).length > 0 && Object.keys(changeValue).findIndex(item => item === 'dMaterialsStockAuxiliaryQty') > -1) {
+ const urlMaterialsStock = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`;
+ const valueMaterialsStock = {
+ sProName: 'Sp_Inventory_MaterialsInventoryV56',
+ paramsMap: {
+ sMaterialsGuid: tableDataRow.sMaterialsId,
+ sMaterialsStyle: tableDataRow.sMaterialsStyle,
+ sWarehouseGuid: tableDataRow.sWarehouseId,
+ sLocationalGuid: tableDataRow.sLocationId,
+ sWarehouseLocationGuid: tableDataRow.sWarehouseLocationId,
+ sDefine_no: tableDataRow.sDefineNo,
+ sDefine_no2: tableDataRow.sDefineNo2,
+ iGetQty: 1,
+ iHasZero: 1,
+ },
+ };
+ const returnDataMaterialsStock = (await commonServices.postValueService(app.token, valueMaterialsStock, urlMaterialsStock)).data;
+ if (returnDataMaterialsStock.code === 1) {
+ tableDataRow.dMaterialsStockAuxiliaryQty = returnDataMaterialsStock.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty;
+ }
+ }
+ if (Object.keys(changeValue).length > 0 && Object.keys(changeValue).findIndex(item => item === 'dMaterialsStockAvailableQty') > -1) {
+ const urlMaterialsAvailableQty = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`;
+ const valueMaterialsAvailableQty = {
+ sProName: 'Sp_Inventory_MaterialsInventoryV56',
+ paramsMap: {
+ sMaterialsGuid: tableDataRow.sMaterialsId,
+ sMaterialsStyle: tableDataRow.sMaterialsStyle,
+ sWarehouseGuid: tableDataRow.sWarehouseId,
+ sLocationalGuid: tableDataRow.sLocationId,
+ sWarehouseLocationGuid: tableDataRow.sWarehouseLocationId,
+ sDefine_no: tableDataRow.sDefineNo,
+ sDefine_no2: tableDataRow.sDefineNo2,
+ iGetQty: 2,
+ iHasZero: 1,
+ },
+ };
+ const returnDataMaterialsAvailableQty = (await commonServices.postValueService(app.token, valueMaterialsAvailableQty, urlMaterialsAvailableQty)).data;
+ if (returnDataMaterialsAvailableQty.code === 1) {
+ tableDataRow.dMaterialsStockAvailableQty = returnDataMaterialsAvailableQty.dataset.rows[0].dataSet.outData[0].dAuxiliaryQty;
+ }
+ }
+ // else {
+ // this.props.getServiceError(returnData);
+ // }
+ } else if (sModelsType === 'sales/salesCheck' && sFieldName === 'dLossMoney' && name === 'slave') {
+ if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcMoney) && commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney)) {
+ const dPprice = this.props.getFloatNum('dProductPrice'); /* 获取系统设定小数位 */
+ tableDataRow.dProductMoney = commonUtils.convertFixNum(tableDataRow.dSrcMoney - tableDataRow.dLossMoney, dPprice);
+ } else if (commonUtils.isNotEmptyNumber(tableDataRow.dSrcMoney) && commonUtils.isEmptyNumber(tableDataRow.dLossMoney)) {
+ tableDataRow.dProductMoney = tableDataRow.dSrcMoney;
+ tableDataRow.dLossMoney = 0;
+ }
+ }
+ /* 各种金额,税额,价格计算 */
+ const models = name === 'materials' ? 'Materials' :
+ sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials';
+ if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) {
+ tableDataRow = await this.handleMaterialsChange(tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models);
+ }
+ tableDataRow = commonBusiness.getCalculateAllMoney(app, models, sFieldName, masterData, tableDataRow);
+ let dMaterialsMoney = '';
+ if (sModelsType.includes('outside/')) { /* 工序发外 && (sFieldName === 'sSupplyName' || sFieldName === 'sProcessName' || sFieldName === 'dAuxiliaryQty') */
+ let sComputeId = {};
+ const sSupplyId = masterData.sSupplyId;
+ const sProcessId = tableDataRow.sProcessId;
+ /* 根据客户id,工序id获取公式ID */
+ sComputeId = await commonBusiness.getOutSideProcessFormula({
+ token, sModelsId, sSupplyId, sProcessId,
+ });
+ if (!commonUtils.isEmpty(sComputeId)) {
+ dMaterialsMoney = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId,
+ });
+ tableDataRow.dMaterialsMoney = dMaterialsMoney;
+ tableDataRow = commonBusiness.getCalculateMoney(app, masterData, tableDataRow, 'Materials');
+ }
+ }
+ const otherData = {};
+ if (this.isOutsourcedProcesses && sFieldName === 'dAuxiliaryQty' && name === 'slaveChild') {
+ const { slaveChildData, slaveData } = this.props;
+ const originData = slaveChildData.find(i => i && i.sId === sId)?.dAuxiliaryQty || 0;
+ if (Array.isArray(slaveChildData) && Array.isArray(slaveData)) {
+ const value = (Number(slaveData?.[0]?.dAuxiliaryQty) +
+ Number(changeValue[sFieldName] || 0) -
+ Number(originData)).toFixed(2) || slaveData?.[0]?.dAuxiliaryQty;
+ otherData.slaveData = [{...slaveData?.[0] || {}, dAuxiliaryQty: value }];
+ }
+ }
+ if (name === 'slaveChild') {
+ const params = {
+ sFieldName: 'dAuxiliaryQty',
+ tableDataRow,
+ }
+ // 汇总到从表方法
+ await this.handleWriteBack(params);
+ }
+
+ const tabPage = this.handleNameToIndex(name);
+ if ((typeof tabPage !== 'undefined') || !commonUtils.isNotEmptyObject(this.props.slaveChildConfig)) {
+ const data = [ ...tableData ];
+ data[iIndex] = tableDataRow;
+ const master = this.props.handleMasterDefaultData(data, this.isOutsourcedProcesses, tabPage, masterData);
+ this.props.onSaveState({ masterData: master });
+ }
+
+
+ if (isWait) {
+ return tableDataRow;
+ } else {
+ tableData[iIndex] = tableDataRow;
+ this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true, ...otherData });
+ }
+ }
+ };
+
+ handleNameToIndex = (name) => {
+ return ({
+ slaveChild: 0,
+ slave0: 1,
+ slave: undefined,
+ }[name]);
+ }
+
+ handleMaterialsChange = async (tableDataRow, sModelsId, masterData, changeValue, sFieldName, app, token, models) => {
+ const { sComputeId, sConversionComputeId, sReConversionComputeId } = tableDataRow;
+ if (sFieldName === 'sMaterialsNo' || sFieldName === 'sMaterialsName' || sFieldName === 'dAuxiliaryQty' || sFieldName === 'dReelAuxiliaryQty' || sFieldName === 'dConversionQty' || sFieldName === 'sMaterialsStyle' || sFieldName === 'dProductQty') {
+ if (sFieldName === 'dReelAuxiliaryQty') {
+ if (tableDataRow.sMaterialsUnit === '吨' && tableDataRow.bReel && tableDataRow.dGramWeight > 0) {
+ tableDataRow = commonBusiness.getMaterialsQty(app, { ...tableDataRow, sMaterialsStyle: tableDataRow.sReelMaterialsStyle }, 'dReelAuxiliaryQty', 'dMaterialsQty');
+ tableDataRow.dAuxiliaryQty = tableDataRow.dMaterialsQty;
+ tableDataRow.sMaterialsStyle = tableDataRow.sMaterialsStyle !== undefined && tableDataRow.sMaterialsStyle.split('*').length > 1 ? tableDataRow.sMaterialsStyle.split('*')[0] : tableDataRow.sMaterialsStyle;
+ tableDataRow.sAuxiliaryUnit = tableDataRow.sMaterialsUnit;
+ } else if (tableDataRow.sMaterialsUnit.toUpper() === 'M2' && tableDataRow.bReel) {
+ tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dReelAuxiliaryQty', 'dMaterialsQty');
+ tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty;
+ } else {
+ tableDataRow.dAuxiliaryQty = tableDataRow.dReelAuxiliaryQty;
+ }
+ }
+ if (commonUtils.isEmpty(sComputeId) && sFieldName !== 'dConversionQty') {
+ if (sFieldName === 'dProductQty') {
+ tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dProductQty', 'dMaterialsQty');
+ } else {
+ tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, 'dAuxiliaryQty', 'dMaterialsQty');
+ }
+ } else if (!commonUtils.isEmpty(sComputeId)) {
+ tableDataRow.dMaterialsQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId,
+ });
+ }
+ if (sFieldName !== 'dConversionQty' && !commonUtils.isEmpty(sConversionComputeId)) {
+ tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sConversionComputeId,
+ });
+ }
+ } else if (sFieldName === 'dMaterialsQty') {
+ const { sReComputeId } = tableDataRow;
+ if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) {
+ tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, 'dAuxiliaryQty');
+ } else if (tableDataRow.bInverse) {
+ tableDataRow.dAuxiliaryQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sReComputeId,
+ });
+ }
+ if (!commonUtils.isEmpty(sReConversionComputeId)) {
+ tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sReConversionComputeId,
+ });
+ }
+ } else if (sFieldName === 'dAuxiliaryLossQty') {
+ if (commonUtils.isEmpty(sComputeId)) {
+ tableDataRow = commonBusiness.getMaterialsQty(app, tableDataRow, sFieldName, 'dLossQty');
+ } else {
+ tableDataRow.dLossQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId,
+ });
+ }
+ if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) {
+ tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty;
+ tableDataRow.dMaterialsQty = commonUtils.convertFixNum(tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty, 6);
+ }
+ } else if (sFieldName === 'dLossQty') {
+ const { sReComputeId } = tableDataRow;
+ if (commonUtils.isEmpty(sReComputeId) && tableDataRow.bInverse) {
+ tableDataRow = commonBusiness.getAuxiliaryQty(app, tableDataRow, sFieldName, 'dAuxiliaryLossQty');
+ } else if (tableDataRow.bInverse) {
+ tableDataRow.dAuxiliaryLossQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sReComputeId,
+ });
+ }
+ if (!commonUtils.isEmpty(tableDataRow.dSrcSurplusAuxiliaryQty)) {
+ tableDataRow.dAuxiliaryQty = tableDataRow.dSrcSurplusAuxiliaryQty - tableDataRow.dAuxiliaryLossQty;
+ tableDataRow.dMaterialsQty = tableDataRow.dSrcSurplusQty - tableDataRow.dLossQty;
+ }
+ } else if (sFieldName === 'sProcessId' || sFieldName === 'sProcessNo' || sFieldName === 'sProcessName') {
+ const sProcessId = changeValue.sProcessId;
+ const url = `${commonConfig.server_host}process/outsideprocess?sModelsId=${sModelsId}&sProcessId=${sProcessId}`;
+ const dataReturn = (await commonServices.getService(token, url)).data;
+ if (dataReturn.code === 1) {
+ if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) {
+ tableDataRow.dMaterialsPrice = dataReturn.dataset.rows[0].dMaterialsPrice;
+ }
+ tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dMaterialsPrice', masterData, tableDataRow);
+ }
+ }
+ return tableDataRow;
+ }
+
+ handleCustomerChange = (name, changeValue) => {
+ if (commonUtils.isNotEmptyObject(changeValue)) {
+ if (changeValue.sCustomerId !== this.state.changleCustomerId) {
+ const sCustomerId = [];
+ sCustomerId.push(changeValue.sCustomerId);
+ this.handleTableSelectRowChange(name, sCustomerId, changeValue);
+ }
+ }
+ this.setState({ changleCustomerId: changeValue.sCustomerId });
+ }
+
+ handleMobileScan = (fieldConfig, tbName, record) => {
+ if (commonUtils.isNotEmptyObject(fieldConfig)) {
+ const sFieldName = fieldConfig.sName;
+ const newTableName = 'master';
+ BarCodeUtil.startScan(async (type, code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveData, sModelsType, masterConfig,
+ } = this.props;
+ /* 规则定义
+ 材料
+ sDefineNo: codeArr[0], --唯一码
+ sMaterialsName: codeArr[1], --材料名称
+ sMaterialsStyle: codeArr[2], --材料规格
+ dAuxiliaryQty: codeArr[3], --数量
+ sWareHouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sMaterialsId: codeArr[8], --材料ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10], --sLocationId
+ 成品
+ sDefineNo: codeArr[0], --唯一码
+ sProductName: codeArr[1], --产品名称
+ sProductStyle: codeArr[2], --产品规格
+ dProductQty: codeArr[3], --产品数量
+ sWarehouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --仓库名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sProductId: codeArr[8], --产品ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10],
+ sCustomerName: codeArr[11], --客户名称
+ sCustomerShort: codeArr[12],
+ sOrderNo: codeArr[13], --订单号
+ sWorkOrderNo: codeArr[14], --工单号
+ sCustomerOrderNo: codeArr[15], --客户编号
+ sCustomerProductNo: codeArr[16], --客户产品编号
+ */
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ const masterDataObjAdd = {};
+ if (commonUtils.isEmptyObject(code)) {
+ Toast.fail('二维码扫码失败!', 1);
+ return;
+ }
+ const codeArr = code.split('|');
+ let models = '';
+ if (codeArr.length === 12) { /* 材料 */
+ models = 'Materials';
+ } else if (codeArr.length === 17) { /* 成品 */
+ models = 'Product';
+ } else {
+ models = 'Single'; /* 单一的 */
+ }
+ if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */
+ /* 取第一条码 */
+ const sCode = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ if (tbName === 'master') {
+ masterData[sFieldName] = sCode;
+ }
+ if (tbName === 'master') {
+ masterdataObj = {
+ ...masterData, [sFieldName]: sCode,
+ };
+ } else if(tbName === 'slave') {
+ if(commonUtils.isNotEmptyArr(slaveData)) {
+ /* 如果是从表的字段配置了扫码 那么则将值赋值到字段上 */
+ const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => item.sId === record.sId) : -1;
+ if (iIndex > -1) {
+ const newType = commonUtils.isEmpty(slaveData[iIndex].handleType) ? 'update' : slaveData[iIndex].handleType;
+ slaveData[iIndex] = { ...slaveData[iIndex], [sFieldName]: sCode, handleType :newType };
+ }
+ }
+ }
+
+
+
+ /* 读取扫码配置 */
+ // const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1);
+ // const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ // /* 唯一码调接口 */
+ // let sqlDataRow ={};
+ // if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ // const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ // if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ // sqlDataRow = sqlDropDownData[0];
+ // }
+ // }
+ // slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段
+ // if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ // slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ // }
+ // slaveDataObj.sParentId = masterdataObj.sId;
+ // if (commonUtils.isNotEmptyArr(slaveData)) {
+ // const len = slaveData.length;
+ // const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ // const { handleType } = slaveData[len - 1];
+ // /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ // if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ // slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ // // slaveData[len - 1] = slaveDataObj;
+ // slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj};
+ // } else {
+ // slaveDataObj.sId = commonUtils.createSid();
+ // slaveDataObj.handleType = 'add';
+ // slaveData.push(slaveDataObj);
+ // }
+ // } else {
+ // slaveDataObj.sId = commonUtils.createSid();
+ // slaveDataObj.handleType = 'add';
+ // slaveData.push(slaveDataObj);
+ // }
+ if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ }
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (models !== 'Single') {
+ slaveData.push(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveData, masterData: masterdataObj });
+ });
+ }
+ }
+
+ handleButtonClick = async (name ) => {
+ if(name === 'BtnRefresh') {
+ const { sModelsType, slaveConfig, masterConfig, employeeConfig, slave0Config, slaveChildConfig}= this.props;
+ await this.handleGetData(masterConfig, slaveConfig);
+ if (sModelsType === 'production/productionReport' && !commonUtils.isEmpty(employeeConfig)) {
+ await this.handleGetMemoData(employeeConfig);
+ }
+ if(commonUtils.isNotEmptyObject(slave0Config) && this.isOutsourcedProcesses) {
+ await this.handleGetMemoData(slave0Config, 'slave0Child');
+ }
+ if(commonUtils.isNotEmptyObject(slaveChildConfig) ) {
+ await this.handleGetMemoData(slaveChildConfig, 'slaveChild');
+ }
+ // if (this.props.refresh !== undefined) {
+ // this.props.refresh();
+ // }
+ }
+
+ }
+ render() {
+ return (
+
+ );
+ }
+ };
+};
diff --git a/src/mobile/common/CommobileTabBill.js b/src/mobile/common/CommobileTabBill.js
new file mode 100644
index 0000000..a106ca9
--- /dev/null
+++ b/src/mobile/common/CommobileTabBill.js
@@ -0,0 +1,1734 @@
+/* eslint-disable */
+import React from 'react';
+import weixin from 'weixin-js-sdk';
+import { Flex, Button, ListView, Toast, Tabs, Badge,} from 'antd-mobile';
+import { createForm } from 'rc-form';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import CommobileBase from './CommobileBase';
+import CommobileBillEvent from './CommobileBillEvent';
+import CommobileViewMaster from './CommobileViewMaster';
+import commonConfig from '../../utils/config';
+import * as commonUtils from '../../utils/utils';
+import ShowType from './CommobileComponent';
+import CommobileToolBar from './CommobileToolBar';
+import styles from '../mobile.less';
+import add from '../../assets/mobile/add-select.svg';
+import scan from '../../assets/mobile/scanning.svg';
+import close from '../../assets/mobile/close.svg';
+import * as commonFunc from '../../components/Common/commonFunc';
+import BarCodeUtil from './BarCodeUtil';
+import preView from '../components/preView';
+import * as commonServices from "../../services/services";
+import indexStyles from '../../routes/mobile/IndexMobile.less';
+import ModalList from '../components/modal';
+import CommonMobileList from './CommobileModalList';
+
+const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+});
+const tabs = [
+ { title: 明细 },
+ { title: 汇总 },
+];
+let _this = {};
+class CommobileBill extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ tabPage: 0,
+ visible: false,
+ };
+ _this = this;
+ }
+
+ // eslint-disable-next-line react/sort-comp
+ handleClick = async (name, type, sId) => {
+ if (name === 'BtnSave') {
+ this.props.onSubmit();
+ } else if (name === 'BtnUpd') {
+ this.props.onEdit(name);
+ } else if (type === 'add') {
+ this.props.onDataRowAdd(name);
+ } else if (type === 'del') {
+ const { app, [`${name}Data`]: tableData } = this.props;
+ let { [`${name}DelData`]: tableDelData } = this.props;
+ tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData;
+ if (sId !== '') {
+ const tableDataIndex = tableData.findIndex(item => item.sId === sId);
+ if (tableDataIndex > -1) {
+ const slaveDataFilter = tableData[tableDataIndex];
+ tableData.splice(tableDataIndex, 1);
+ slaveDataFilter.handleType = 'del';
+ tableDelData.push(slaveDataFilter);
+ }
+ this.props.onSaveState({
+ [`${name}Data`]: tableData,
+ [`${name}DelData`]: tableDelData,
+ [`${name}SelectedRowKeys`]: [],
+ });
+ } else {
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据
+ }
+ } else if (type === 'scan' || name === 'BtnScan' || name === 'BtnScanPda') {
+ BarCodeUtil.startScan(async (type, code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveData, sModelsType, masterConfig,
+ } = this.props;
+ /* 规则定义
+ 材料
+ sDefineNo: codeArr[0], --唯一码
+ sMaterialsName: codeArr[1], --材料名称
+ sMaterialsStyle: codeArr[2], --材料规格
+ dAuxiliaryQty: codeArr[3], --数量
+ sWareHouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sMaterialsId: codeArr[8], --材料ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10], --sLocationId
+ 成品
+ sDefineNo: codeArr[0], --唯一码
+ sProductName: codeArr[1], --产品名称
+ sProductStyle: codeArr[2], --产品规格
+ dProductQty: codeArr[3], --产品数量
+ sWarehouseName: codeArr[4], --仓库名称
+ sLocationName: codeArr[5], --仓库名称
+ sDefineNo2: codeArr[6], --二维码
+ tInStoreDate: codeArr[7], --入库日期
+ sProductId: codeArr[8], --产品ID
+ sWareHouseId: codeArr[9], --仓库ID
+ sLocationId: codeArr[10],
+ sCustomerName: codeArr[11], --客户名称
+ sCustomerShort: codeArr[12],
+ sOrderNo: codeArr[13], --订单号
+ sWorkOrderNo: codeArr[14], --工单号
+ sCustomerOrderNo: codeArr[15], --客户编号
+ sCustomerProductNo: codeArr[16], --客户产品编号
+ */
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ let masterDataObjAdd = {};
+ if (commonUtils.isEmptyObject(code)) {
+ Toast.fail('二维码扫码失败!', 1);
+ return;
+ }
+ const codeArr = code.split('|');
+ let models = '';
+ if (codeArr.length === 12) { /* 材料 */
+ models = 'Materials';
+ } else if (codeArr.length === 17) { /* 成品 */
+ models = 'Product';
+ } else {
+ models = 'Single'; /* 单一的 */
+ }
+ if (models === 'Single') { /* sModelsType === 'purchase/purchaseInstore' 扫码入库、扫码领料(唯一码) */
+ /* 取第一条码 */
+ const sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ /* 读取扫码配置 */
+ let btnScanConfigs;
+ if (name === 'BtnScanPda') {
+ btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sControlName.indexOf('_pda') > -1);
+ } else {
+ btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1);
+ }
+
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ const sDefineNoName = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sActiveKey : 'sDefineNo';
+
+ masterdataObj = {
+ ...masterData, [sDefineNoName] : sDefineNo
+ };
+ /* 唯一码调接口 */
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+
+ if( name === 'BtnScanPda') {
+ this.handleSqlDropDownData({
+ sqlDropDownData,
+ fieldConfig: { ...btnScanConfigs?.[0] || [], sName: sDefineNoName },
+ masterdataObj,
+ slaveDataNew: slaveData,
+ sFieldName: sDefineNoName ,
+ })
+ return;
+ }
+
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+ slaveDataObj.sParentId = masterdataObj.sId;
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1][sDefineNoName];
+ const { handleType } = slaveData[len - 1];
+ /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ if (commonUtils.isEmptyObject(sDefineNoNew)) {
+ slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ // slaveData[len - 1] = slaveDataObj;
+ slaveData[len - 1] = { ...slaveData[len-1], ...slaveDataObj};
+ } else {
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ } else {
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ }
+ } else if (models === 'Materials') { /* sModelsType === 'materialsStock/productionmaterials' */
+ /* 取第一条码 */
+ const sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1;
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined;
+ // const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sDefineNo: codeArr.length > 0 ? codeArr[0] : '',
+ sMaterialsName: codeArr.length > 1 ? codeArr[1] : '',
+ sMaterialsStyle: codeArr.length > 2 ? codeArr[2] : '',
+ dAuxiliaryQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0) : '',
+ sDefineNo2: codeArr.length > 6 ? codeArr[6] : '',
+ sMaterialsId: codeArr.length > 8 ? codeArr[8] : '',
+ sWareHouseId: codeArr.length > 9 ? codeArr[9] : '',
+ sLocationId: codeArr.length > 10 ? codeArr[10] : '',
+ dMaterialsQty: codeArr.length > 11 ? commonUtils.isNull(Number(codeArr[11]), 0) : '',
+ tInStoreDate: dateStr,
+ };
+ masterdataObj = {
+ ...masterData, ...slaveDataObjAdd,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1);
+ // if(commonUtils.isEmptyArr(btnScanConfigs)) {
+ // Toast.fail('请配置扫码按钮!!!', 1);
+ // return;
+ // }
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] };
+ }
+ }
+ slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+
+ // slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.iOrder = 1;
+ console.log('slaveDataObj1111', slaveDataObj);
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId');
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId');
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : '';
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+
+ let materialsNameDropDownData = [];
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') {
+ materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ // }
+ let materialsNameDataOne;
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ if (!commonUtils.isEmpty(materialsNameDropDownData)) {
+ if (codeArr.length > 1) {
+ materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[1]);
+ }
+ }
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ if (codeArr.length > 4) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]);
+ }
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ if (codeArr.length > 5) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]);
+ }
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterdataObj;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let materialsDataDetiale = {};
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) };
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...slaveDataObj,
+ ...onDataRowAdd,
+ ...materialsDataDetiale,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = { ...masterdataObj, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale };
+ } else if (sModelsType === 'Product') { // 扫码待发货 sales/salesSgoods
+ /* 取第一条码 */
+ const sDefineNo = codeArr.length > 0 ? codeArr[0] : '';
+ /* 如果条码已存在,提示 */
+ // const iIndex = commonUtils.isNotEmptyArr(slaveData) ? slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo) : -1;
+ // if (iIndex > -1) {
+ // Toast.fail('条码已存在!!!', 1);
+ // return;
+ // }
+ const dateStr = codeArr.length > 7 && commonUtils.isNotEmptyObject(codeArr[7])? codeArr[7].replace(/-/g, '/') : undefined;
+ slaveDataObjAdd = {
+ sCustomerShort: codeArr.length > 12 ? codeArr[12] : '',
+ sOrderNo: codeArr.length > 13 ? codeArr[13] : '',
+ sWorkOrderNo: codeArr.length > 14 ? codeArr[14] : '',
+ sCustomerOrderNo: codeArr.length > 15 ? codeArr[15] : '',
+ sCustomerProductNo: codeArr.length > 13 ? codeArr[16] : '',
+ sDefineNo: codeArr.length > 0 ? codeArr[0] : '',
+ sDefineNo2: codeArr.length > 6 ? codeArr[6] : '',
+ dProductQty: codeArr.length > 3 ? commonUtils.isNull(Number(codeArr[3]), 0): '',
+ tInStoreDate: dateStr,
+ };
+ masterdataObj = {
+ ...masterData, ...slaveDataObjAdd,
+ };
+ // masterDataObjAdd = {
+ // sCustomerShort: codeArr.length > 12 ? codeArr[12] : '', sDefineNo: sDefineNo,
+ // };
+ /* 读取多条扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan.slave') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] };
+ }
+ }
+ /* 唯一码调接口 */
+ let sqlDataRow ={};
+ if(commonUtils.isNotEmptyArr(btnScanConfigs)) {
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', btnScanConfigs[0], masterdataObj);
+ if(commonUtils.isNotEmptyArr(sqlDropDownData)) {
+ sqlDataRow = sqlDropDownData[0];
+ }
+ }
+ slaveDataObj = { ...slaveDataObjAdd, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取赋值字段
+ if(commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+ // slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.iOrder = 1;
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位
+ const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称
+
+
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+ const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : '';
+
+
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ let sProductNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') {
+ sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData);
+ }
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ let sProductNameDataOne;
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ if (codeArr.length > 4) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[4]);
+ }
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ if (codeArr.length > 5) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[5]);
+ }
+ }
+ if (!commonUtils.isEmpty(sProductNamedropDownData)) {
+ if (codeArr.length > 1) {
+ sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[1]);
+ }
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ let sProductNameDataDetiale = {};
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...slaveDataObj,
+ ...onDataRowAdd,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sProductNameDataDetiale,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = {
+ ...masterData,
+ ...sLocationNameDataDetiale,
+ ...masterDataObjAdd,
+ ...sWareHouseNameDataDetiale,
+ };
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (models !== 'Single') {
+ slaveData.push(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveData, masterData: masterdataObj });
+ });
+ } else if (type === 'scan1') {
+ BarCodeUtil.startScan(async (type, code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveData, sModelsType,
+ } = this.props;
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ let masterDataObjAdd = {};
+ const codeArr = code.split('|');
+ if (sModelsType === 'materialsStock/productionmaterials') {
+ const dataStr = codeArr[10].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sMaterialsStyle: codeArr[1],
+ sDefineNo: codeArr[4],
+ sDefineNo2: codeArr[5],
+ dAuxiliaryQty: codeArr[7],
+ tInStoreDate: date,
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId');
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId');
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : '';
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+
+ let materialsNameDropDownData = [];
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') {
+ materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ // }
+ let materialsNameDataOne;
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ if (!commonUtils.isEmpty(materialsNameDropDownData)) {
+ materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]);
+ }
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let materialsDataDetiale = {};
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) };
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...materialsDataDetiale,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale };
+ } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货
+ const dataStr = codeArr[12].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sOrderNo: codeArr[9],
+ sWorkOrderNo: codeArr[8],
+ sCustomerOrderNo: codeArr[10],
+ sCustomerProductNo: codeArr[11],
+ sDefineNo: codeArr[3],
+ sDefineNo2: codeArr[4],
+ dProductQty: codeArr[6],
+ tInStoreDate: date,
+ };
+ masterDataObjAdd = {
+ sCustomerShort: codeArr[7],
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位
+ const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称
+
+
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+ const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : '';
+
+
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ let sProductNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') {
+ sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData);
+ }
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ let sProductNameDataOne;
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sProductNamedropDownData)) {
+ sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ let sProductNameDataDetiale = {};
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sProductNameDataDetiale,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = {
+ ...masterData,
+ ...sLocationNameDataDetiale,
+ ...masterDataObjAdd,
+ ...sWareHouseNameDataDetiale,
+ };
+ } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */
+ const { masterConfig } = this.props;
+ /* 取第一条码 */
+ const sDefineNo = codeArr[0];
+ /* 如果条码已存在,提示 */
+ const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ if (iIndex > -1) {
+ Toast.fail('条码已存在!!!', 1);
+ return;
+ }
+ masterdataObj = {
+ ...masterData,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) { /* 拿原始从表值 */
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj = { ...slaveDataObj, ...slaveData[len - 1] };
+ }
+ }
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ const { handleType } = slaveData[len - 1];
+ /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ slaveData[len - 1] = slaveDataObj;
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ if (sModelsType === 'scan/productionmaterials') { /* 只有扫码领料连续扫码 */
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ }
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') {
+ slaveData.push(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveData, masterData: masterdataObj });
+ });
+ } else if (commonUtils.isNotEmptyObject(name) && name.includes('BtnScan')) { /* 主表 扫流转码 */
+ BarCodeUtil.startScan(async (type, code) => {
+ const { masterConfig } = this.props;
+ let { masterData } = this.props;
+ let masterdataObj = {};
+ const codeArr = code.split('|');
+ if (commonUtils.isNotEmptyObject(codeArr)) { /* 扫流转码功能 */
+ /* 取第一条码 */
+ const sDefineNo = codeArr[0];
+ /* 如果条码已存在,提示 */
+ masterData.sDefineNo = sDefineNo;
+ masterdataObj = {
+ ...masterData,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ masterData = { ...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ masterData.handleType = commonUtils.isEmpty(masterData.handleType) ? 'update' : masterData.handleType;
+ // this.handleClick('slave', 'scan'); /* 连续扫码 */
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ this.props.onSaveState({ masterData });
+ });
+ } else if (name === 'BtnCamera') { /* 手机调动摄像头拍照 */
+ this.handleCamera();
+ } else if (name === 'BtnPhoto') { /* 手机相册选择图片 */
+ this.handleGetPhoto();
+ } else if (name === 'BtnCancel') {
+ window.history.back(-1);
+ } else if (name === 'BtnExamine') {
+ this.props.onAudit(1);
+ } else if (name === 'BtnCancelExamine') {
+ /* 销审 */
+ this.props.onAudit(0);
+ }
+ }
+ handleCamera = () => {
+ BarCodeUtil.getImage();
+ }
+ handleGetPhoto = () => {
+ BarCodeUtil.getPhoto();
+ }
+
+ /**pda扫码数据 */
+ fieldConfig = React.createRef();
+ masterdataObj = React.createRef();
+ ModalList = React.createRef();
+ selectedRowkeys = React.createRef();
+ cancelValue = React.createRef();
+
+ modalProps = {
+ title: 请选择
,
+ cancelAction: () => this.cancelAction(),
+ submitAction: () => {
+ this.handleAddPdaValue(this.selectedRowkeys.current);
+ this.setState({ visible: false });
+ },
+ };
+
+ setSelectedRowkeys = (v) => {
+ this.selectedRowkeys.current = v;
+ }
+ /**打开弹窗 */
+ openModalList = () => {
+ this.setState({ visible: true });
+ }
+
+ handleMasterFieldScan = (fieldConfig, tbName, record, newValue, cancelValue) => {
+ this.cancelValue.current = cancelValue;
+ this.handlePdaFieldScan(fieldConfig, tbName, record, newValue); /* PDA扫码逻辑 */
+ }
+
+ clearCache = () => {
+ this.fieldConfig.current = null;
+ this.masterdataObj.current = null;
+ }
+
+ /**
+ * 关闭弹框
+ */
+ cancelAction = () => {
+ this.setSelectedRowkeys(null);
+ this.cancelValue.current && this.cancelValue.current();
+ this.clearCache();
+ this.setState({ visible: false });
+ }
+
+ filterSlaveData = (v) => {
+ if (!this.fieldConfig.current) return [];
+ const sFieldName = this.fieldConfig.current.sName;
+ const { slaveData } = this.props;
+ return v.filter(i => i && !slaveData?.find(j => j && j[sFieldName] === i[sFieldName]));
+ }
+
+ /**
+ * pda 扫描
+ * @returns
+ */
+ handlePdaFieldScan = async (fieldConfig, tbName, record, newValue) => {
+ const {
+ sModelsId, masterData,
+ } = this.props;
+ const { slaveData: slaveDataNew } = this.props;
+ const code = newValue;
+ if (commonUtils.isEmptyObject(code) || typeof code !== 'string') {
+ return;
+ }
+ if (commonUtils.isEmptyObject(fieldConfig)) {
+ Toast.fail('未配置PDA!');
+ return;
+ }
+ const sFieldName = fieldConfig.sName;
+ let masterdataObj = masterData;
+ masterdataObj = {
+ ...masterData, [sFieldName]: code,
+ };
+ const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', fieldConfig, masterdataObj);
+ this.handleSqlDropDownData({ sqlDropDownData, fieldConfig, masterdataObj, slaveDataNew, sFieldName });
+ }
+
+ handleSqlDropDownData = (v) => {
+ const { sqlDropDownData, fieldConfig, slaveDataNew, sFieldName } = v;
+ let { masterdataObj } = v;
+ if (!Array.isArray(sqlDropDownData) || commonUtils.isEmptyArr(sqlDropDownData)) {
+ Toast.fail('暂无数据', 1);
+ this.clearCache();
+ return;
+ }
+ this.fieldConfig.current = fieldConfig;
+ this.masterdataObj.current = masterdataObj;
+ if (sqlDropDownData.length === 1) {
+ /* 如果条码已存在,提示 */
+ const iFIndex = commonUtils.isNotEmptyArr(slaveDataNew) ? slaveDataNew.findIndex(item => item[sFieldName] === sqlDropDownData[0][sFieldName]) : -1;
+ if (iFIndex > -1) {
+ this.cancelValue.current && this.cancelValue.current();
+ this.cancelValue.current = null;
+ Toast.fail('条码已存在!', 1);
+ this.clearCache();
+ return;
+ }
+ this.setSelectedRowkeys(sqlDropDownData);
+ this.handleAddPdaValue(sqlDropDownData);
+ }else if(sqlDropDownData.length > 1) {
+ /* 数据赋值到主表 */
+ const AssignField = commonUtils.isNotEmptyArr(this.fieldConfig.current) ? this.fieldConfig.current?.sAssignField : '';
+ masterdataObj = {...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDropDownData[0]) };
+ this.masterdataObj.current = masterdataObj;
+ }
+ if(sqlDropDownData.length > 1 ) {
+ this.openModalList();
+ }
+ return;
+ }
+
+ /**
+ * pda扫描添加数据
+ * @returns
+ */
+ handleAddPdaValue = (value) => {
+ let { slaveData: slaveDataNew } = this.props;
+ this.cancelValue.current && this.cancelValue.current();
+ this.cancelValue.current = null;
+ if (!this.fieldConfig.current ||
+ !this.masterdataObj.current ||
+ !Array.isArray(value) || !value.length) {
+ this.clearCache();
+ this.setSelectedRowkeys(null);
+ return
+ };
+ let masterdataObj = this.masterdataObj.current;
+ const sFieldName = this.fieldConfig.current.sName;
+ const AssignField = commonUtils.isNotEmptyArr(this.fieldConfig.current) ? this.fieldConfig.current?.sAssignField : '';
+ if (commonUtils.isEmptyArr(slaveDataNew)) {
+ slaveDataNew = [];
+ }
+ value.forEach((sqlDataRow) => {
+ let slaveDataObj = {};
+ masterdataObj = {...masterdataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) };
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterdataObj) }; // 取主表赋值字段
+ if (commonUtils.isNotEmptyObject(sqlDataRow)) {
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, sqlDataRow) }; // 取接口数据源赋值字段
+ }
+ slaveDataObj.sId = commonUtils.createSid();
+ slaveDataObj.handleType = 'add';
+ slaveDataObj.sParentId = masterdataObj.sId;
+ slaveDataNew.push(slaveDataObj);
+ });
+ if (commonUtils.isNotEmptyObject(masterdataObj)) {
+ const handleType = commonUtils.isEmpty(masterdataObj.handleType) ? 'update' : masterdataObj.handleType;
+ masterdataObj = { ...masterdataObj, [sFieldName]: '', handleType };
+ }
+ this.clearCache();
+ this.setSelectedRowkeys(null);
+ this.props.onSaveState({ slaveData: slaveDataNew, masterData: masterdataObj });
+ }
+
+ handleGetWxCode = async (successHandler) => {
+ let scanResult = '';
+ const { app } = this.props;
+ // eslint-disable-next-line prefer-destructuring,no-unused-vars
+ const userinfo = app.userinfo;
+ const myUrl = location.href;
+ const configUrl = `${commonConfig.server_host}wechat/getWxToken`;
+ const values = {
+ url: myUrl,
+ sBrandsId: userinfo.sBrandsId,
+ sSubsidiaryId: userinfo.sSubsidiaryId,
+ };
+ // const values = {
+ // url: myUrl,
+ // sBrandsId: '1111111111',
+ // sSubsidiaryId: '1111111111',
+ // };
+ const configReturn = (await commonServices.postValueService(null, values, configUrl)).data;
+ console.log('configReturn::', configReturn, values);
+ if (configReturn.code === 1) {
+ const { rows } = configReturn.dataset;/* 获取费用分摊单据配置 */
+ if (commonUtils.isNotEmptyArr(rows)) {
+ const appId = rows[0].appId.toString();
+ const nonceStr = rows[0].nonceStr.toString();
+ const signature = rows[0].signature.toString();
+ const timestamp = rows[0].timestamp.toString();
+ weixin.config({
+ beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
+ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+ appId, // 必填,公众号的唯一标识
+ timestamp, // 必填,生成签名的时间戳 <%= Html.Encode(ViewData["timestamp" ]) %>
+ nonceStr, // 必填,生成签名的随机串
+ signature, // 必填,签名
+ jsApiList: ['checkJsApi', 'scanQRCode'], // 必填,需要使用的JS接口列表, 这里只需要调用扫一扫
+ });
+ weixin.ready(() => {
+ weixin.checkJsApi({ // 判断当前客户端版本是否支持指定JS接口
+ jsApiList: ['scanQRCode'],
+ success(res) { // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"}
+ console.log(res);
+ if (res.checkResult.scanQRCode !== true) {
+ Toast.fail(`URL不对,当前URL:${myUrl}请使用正式地址!`);
+ }
+ },
+ // eslint-disable-next-line no-unused-vars
+ fail(res) { // 检测getNetworkType该功能失败时处理
+ Toast.fail('checkJsApi error');
+ },
+
+
+ }); // wx.ready结束
+ weixin.scanQRCode({
+ desc: 'scanQRCode desc',
+ needResult: 0, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
+ scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
+ success(res) {
+ // console.log("调用扫描成功",res);
+ scanResult = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
+ if (commonUtils.isNotEmptyObject(scanResult)) {
+ const codeResult = scanResult.split(',');
+ if (codeResult.length > 1) {
+ scanResult = codeResult[1];
+ }
+ }
+ successHandler(scanResult);
+ // console.log('微信扫码结果:', scanResult);
+ },
+ error(res) {
+ // console.log(res);
+ if (res.errMsg.indexOf('function_not_exist') > 0) {
+ Toast.fail('版本过低请升级');
+ }
+ },
+ });
+ });
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ return scanResult;
+ }
+
+ handleWxScan = async () => {
+ this.handleGetWxCode((code) => {
+ if (!commonUtils.isEmpty(code)) {
+ this.handleWxBusiness(code);
+ }
+ });
+ }
+
+ handleWxBusiness = async (code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveData, sModelsType,
+ } = this.props;
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ let masterDataObjAdd = {};
+ const codeArr = code.split('|');
+ if (sModelsType === 'materialsStock/productionmaterials') {
+ const dataStr = codeArr[10].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sMaterialsStyle: codeArr[1],
+ sDefineNo: codeArr[4],
+ sDefineNo2: codeArr[5],
+ dAuxiliaryQty: codeArr[7],
+ tInStoreDate: date,
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId');
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId');
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : '';
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+
+ let materialsNameDropDownData = [];
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') {
+ materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ // }
+ let materialsNameDataOne;
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ if (!commonUtils.isEmpty(materialsNameDropDownData)) {
+ materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]);
+ }
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let materialsDataDetiale = {};
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) };
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...materialsDataDetiale,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale };
+ } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货
+ const dataStr = codeArr[12].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sOrderNo: codeArr[9],
+ sWorkOrderNo: codeArr[8],
+ sCustomerOrderNo: codeArr[10],
+ sCustomerProductNo: codeArr[11],
+ sDefineNo: codeArr[3],
+ sDefineNo2: codeArr[4],
+ dProductQty: codeArr[6],
+ tInStoreDate: date,
+ };
+ masterDataObjAdd = {
+ sCustomerShort: codeArr[7],
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位
+ const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称
+
+
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+ const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : '';
+
+
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ let sProductNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') {
+ sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData);
+ }
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ let sProductNameDataOne;
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sProductNamedropDownData)) {
+ sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ let sProductNameDataDetiale = {};
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sProductNameDataDetiale,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = {
+ ...masterData,
+ ...sLocationNameDataDetiale,
+ ...masterDataObjAdd,
+ ...sWareHouseNameDataDetiale,
+ };
+ } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */
+ const { masterConfig } = this.props;
+ /* 取第一条码 */
+ const sDefineNo = codeArr[0];
+ /* 如果条码已存在,提示 */
+ const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ if (iIndex > -1) {
+ Toast.fail('条码已存在!!!', 1);
+ return;
+ }
+ masterdataObj = {
+ ...masterData,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ const { handleType } = slaveData[len - 1];
+ /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ slaveData[len - 1] = slaveDataObj;
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') {
+ slaveData.push(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveData, masterData: masterdataObj });
+ }
+
+ /* 页签切换 */
+ // eslint-disable-next-line no-unused-vars
+ handleTabClick =(index, tab) => {
+ const { slaveData, slaveSumConfig, masterData, sModelsType } = this.props;
+ let { slaveSumData }= this.props;
+
+ /* 盘点走单独的逻辑体 */
+ console.log('slaveSumData', slaveSumData);
+ if(commonUtils.isNotEmptyObject(slaveSumConfig) && slaveSumConfig.sGrd && slaveSumConfig.sGrd.includes('sumTableSelect')) {
+ if(commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyArr(slaveSumData)) {
+ const groupedData = commonUtils.groupBy(slaveData, item => item.sMaterialsId + '-' + commonUtils.isNull(item.sMaterialsStyle, '') + commonUtils.isNull(item.sDefineNo, '') + '-'
+ + commonUtils.isNull(item.sLocationId, '') + commonUtils.isNull(item.sWareHouseId, ''));
+ console.log('分组::', groupedData);
+ /* 对分组内的数据进行数据汇总 */
+ if (commonUtils.isNotEmptyObject(groupedData)) {
+ for (const key of Object.keys(groupedData)) {
+ const eachData = groupedData[key];
+ if (commonUtils.isNotEmptyArr(eachData)) {
+ console.log('eachData:', eachData);
+ let dAuxiliarySumQty = 0; /* 采购数量 */
+ let dMaterialsSumQty = 0; /* 采购计价数量 */
+ eachData.forEach((item) => {
+ /* 采购 */
+ dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2);
+ dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2);
+ });
+
+ /* 从汇总表数据集中 找到相同批次规格的汇总表 然后更新数据 */
+ const eachRow = eachData[0];
+ const iIndex = slaveSumData.findIndex(obj => obj.sMaterialsId ===eachRow.sMaterialsId && obj.sMaterialsStyle ===eachRow.sMaterialsStyle &&
+ obj.sDefineNo === eachRow.sDefineNo && obj.sLocationId === eachRow.sLocationId && obj.sWareHouseId === eachRow.sWareHouseId);
+ console.log('iIndex:', iIndex);
+ if(iIndex > -1) {
+ const sumRow = slaveSumData[iIndex];
+ const addState = {};
+ const minus = dAuxiliarySumQty - commonUtils.isNull(sumRow.dOriginalAuxiliaryQty, 0);
+ addState.dProfitLossAuxiliaryQty = commonUtils.convertFixNum(minus, 2); /* 盘盈数 */
+ addState.dAuxiliaryQty = dAuxiliarySumQty; /* 数量 */
+ addState.handleType = commonUtils.isEmpty(sumRow.handleType) ? 'update' : sumRow.handleType;
+ console.log('盘盈数字:', minus);
+ slaveSumData[iIndex] = { ...slaveSumData[iIndex], ...addState};
+ }
+
+ }
+ }
+ }
+ }
+
+
+ }else {
+
+ /* 汇总明细 */
+ slaveSumData = [];
+ console.log('sModelsType:', sModelsType);
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ let slaveSumRow = {};
+ let dProductTotalQty = 0; /* 总到货数 */
+ let dMaterialsTotalQty = 0; /* 总计价数 */
+ slaveData.forEach((slaveItem, index) => {
+ if (index === 0) {
+ slaveSumRow = JSON.parse(JSON.stringify(slaveItem));
+ }
+ if (sModelsType && sModelsType.includes('purchase/')) {
+ dProductTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dAuxiliaryQty, 0));
+ dMaterialsTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dMaterialsQty, 0));
+ } else {
+ dProductTotalQty += commonUtils.convertToNum(commonUtils.isNull(slaveItem.dProductQty, 0));
+ }
+ });
+ /* 根据sSqlConditionId汇总 */
+ if (sModelsType && sModelsType.includes('purchase/')) {
+ const groupedData = commonUtils.groupBy(slaveData, item => item.sSqlConditionId);
+ console.log('分组::', groupedData);
+ /* 对分组内的数据进行数据汇总 */
+ if (commonUtils.isNotEmptyObject(groupedData)) {
+ for (const key of Object.keys(groupedData)) {
+ const eachData = groupedData[key];
+ if (commonUtils.isNotEmptyArr(eachData)) {
+ console.log('eachData:', eachData);
+ let dAuxiliarySumQty = 0; /* 采购数量 */
+ let dMaterialsSumQty = 0; /* 采购计价数量 */
+ let dEscrowAuxiliarySumQty = 0; /* 代管数量 */
+ let dEscrowSumQty = 0; /* 代管计价数 */
+ let dGiveAuxiliarySumQty = 0; /* 赠送数 */
+ let dGiveSumQty = 0; /* 赠送计价数 */
+ eachData.forEach((item) => {
+ /* 采购 */
+ console.log('类型:', item.iType);
+ if ((commonUtils.isNull(item.iType), 0) === 0) {
+ dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2);
+ dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2);
+ }
+
+ if (item.iType === 1) {
+ dAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2);
+ dMaterialsSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2);
+ }
+ /* 代管 */
+ else if (item.iType === 2) {
+ dEscrowAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2);
+ dEscrowSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2);
+ }
+
+ /* 赠送 */
+ else if (item.iType === 3) {
+ dGiveAuxiliarySumQty += commonUtils.convertToNum(commonUtils.isNull(item.dAuxiliaryQty, 0), 2);
+ dGiveSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dMaterialsQty, 0), 2);
+ }
+ });
+ const newSum = JSON.parse(JSON.stringify(eachData[0]));
+
+ newSum.dAuxiliaryQty = dAuxiliarySumQty;
+ newSum.dMaterialsQty = dMaterialsSumQty;
+
+ newSum.dEscrowAuxiliaryQty = dEscrowAuxiliarySumQty;
+ newSum.dEscrowQty = dEscrowSumQty;
+
+ newSum.dGiveAuxiliaryQty = dGiveAuxiliarySumQty;
+ newSum.dGiveQty = dGiveSumQty;
+
+ newSum.dPurchaseArrivalQty = dProductTotalQty; /* 到货总数 */
+ newSum.dPurchaseQty = dMaterialsTotalQty; /* 总计价数量 */
+ newSum.dSrcQty = masterData.dSrcAuxiliaryQty; /* 源单数量 */
+
+ slaveSumRow.handleType = 'add';
+ slaveSumData.push(newSum);
+
+
+ }
+ }
+ }
+ } else {
+ const groupedData = commonUtils.groupBy(slaveData, item => item.sSqlConditionId);
+ console.log('产品分组::', groupedData);
+ /* 对分组内的数据进行数据汇总 */
+ if (commonUtils.isNotEmptyObject(groupedData)) {
+ for (const key of Object.keys(groupedData)) {
+ const eachData = groupedData[key];
+ let dProductSumQty = 0; /* 产品数量 */
+ if (commonUtils.isNotEmptyArr(eachData)) {
+ eachData.forEach((item) => {
+ dProductSumQty += commonUtils.convertToNum(commonUtils.isNull(item.dProductQty, 0), 2);
+ });
+ const newSum = JSON.parse(JSON.stringify(eachData[0]));
+ newSum.dProductQty = dProductSumQty;
+ slaveSumRow.handleType = 'add';
+ slaveSumData.push(newSum);
+ }
+
+ }
+ }
+ // slaveSumRow.sProductName = commonUtils.isNotEmptyObject(masterData) ? masterData.sProductName : '';
+ // slaveSumRow.dProductQty = dProductTotalQty;
+ // slaveSumRow.handleType = 'add';
+ // slaveSumData.push(slaveSumRow);
+ }
+
+ }
+ }
+ console.log('汇总表数据', slaveSumData);
+ console.log('主表数据', masterData);
+ this.setState({ tabPage: index });
+ this.props.onSaveState({ slaveSumData })
+
+ }
+
+ getViewValue = (showConfig, record) => {
+ let sValue = record === undefined ? undefined : record[showConfig.sName];
+ if (showConfig.sDropDownType === 'const') {
+ let showDropDown = [];
+ if (typeof showConfig.showDropDown === 'object') {
+ // eslint-disable-next-line prefer-destructuring
+ showDropDown = showConfig.showDropDown;
+ } else {
+ showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(showConfig.showDropDown));
+ }
+ let iIndex = commonUtils.isEmpty(record[showConfig.sName]) ? -1 : showDropDown.findIndex(item => item.sId === record[showConfig.sName].toString());
+ if (iIndex === -1 && record[showConfig.sName] === '') {
+ iIndex = showDropDown.findIndex(item => item.sId === '');
+ }
+ sValue = iIndex > -1 ? showDropDown[iIndex].value : record[showConfig.sName];
+ }
+ return sValue;
+ };
+
+ render() {
+ const {
+ slaveConfig, slaveData: slaveDataOld, sModelsId, enabled, app, sUseInfo, onReturnForm, masterData, masterConfig, slaveSumConfig, slaveSumData: slaveSumDataOld,
+ sModelsType, content, dispatch,
+ } = this.props;
+ const commonListProps = {
+ app,
+ content,
+ sModelsId: this.fieldConfig.current?.sActiveId || sModelsId,
+ sModelsType: sModelsType,
+ formRoute: '/indexMobile/commobileBill',
+ dispatch,
+ bNotSearch: true,
+ };
+ const { tabPage } = this.state;
+ onReturnForm(this.props.form);
+
+
+ const slaveSumDataOld2 = slaveSumDataOld === undefined ? [] : slaveSumDataOld;
+ const slaveSumData = dataSource.cloneWithRows(slaveSumDataOld2);
+
+
+ const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */
+ const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */
+ const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } };
+ const style = {
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+ const btnStyle = {
+ fontSize: '15px',
+ backgroundColor: '#f0f0f0',
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+
+ const rowSum = (rowData, sectionID, rowID) => {
+ return (
+
+ {commonUtils.isEmptyObject(slaveSumConfig) ? '' : slaveSumConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const showTypeProps = {
+ app,
+ masterData,
+ record: rowData,
+ sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */
+ name: 'slave',
+ form: this.props.form,
+ formId: sModelsId,
+ getSqlDropDownData: this.props.getSqlDropDownData,
+ getSqlCondition: this.props.getSqlCondition,
+ handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord,
+ getFloatNum: this.props.getFloatNum,
+ getDateFormat: this.props.getDateFormat,
+ onChange: this.props.onDataChange,
+ showConfig: child,
+ formItemLayout: sMemo ? formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: rowData[child.sName],
+ bTable: true,
+ onFilterDropDownData: this.props.onFilterDropDownData,
+ onSaveState: this.props.onSaveState,
+ };
+ return (
+
+ );
+ })}
+ {slaveSumConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => {
+ if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) {
+ const { token } = app;
+ let imgBox = '';
+ const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : '';
+ const previewImageArr = [];
+ if (commonUtils.isNotEmptyArr(picAddr)) {
+ picAddr.forEach((item) => {
+ const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */
+ previewImageArr.push(dataPreviewUrl);
+ });
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ imgBox =

0} onClick={e => preView(previewImageArr, e)} />
;
+ }
+ return imgBox;
+ } else {
+ return '';
+ }
+ })}
+
+ );
+ };
+
+ /* 汇总页签 */
+ const TabComponentSum = props => {
+ return (
+
+ );
+ }
+
+ const conditionValue = this.fieldConfig.current && this.masterdataObj.current ?
+ this.props.getSqlCondition(this.fieldConfig.current, 'master', this.masterdataObj.current) : null;
+ /**
+ * pda扫描弹窗
+ */
+ const ModalListProps = {
+ ...this.modalProps,
+ visible: this.state.visible,
+ content:
+ }
+
+ const otherProps = {
+ handleMasterFieldScan: this.handleMasterFieldScan,
+ }
+
+ return (
+
+ {
+ commonUtils.isNotEmptyObject(slaveSumConfig) ?
+
this.handleTabClick(index, tab)}
+ onTabClick={(tab, index) => { console.log('onTabClick', index, tab); }}
+ >
+ {tabPage === 0 ?
: ''}
+ {tabPage === 1 ?
: ''}
+ :
+
+ }
+
+
+ );
+ }
+}
+
+const CommobileBillComponent = createForm()(CommobileBill);
+
+const TabComponentSlave = (props) => {
+
+ const { masterConfig, masterData, slaveData: slaveDataOld, slaveConfig, sModelsId, enabled, app, sUseInfo } = props;
+
+ const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+
+ const style = {
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+
+ const btnStyle = {
+ fontSize: '15px',
+ backgroundColor: '#f0f0f0',
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+
+ const BtnStyle = {
+ type: 'default',
+ color: 'red',
+ border: 'none',
+ backgroundColor: '#f0f0f0',
+ fontSize: '15px',
+ };
+ const divStyle = {
+ display: 'flex',
+ justifyContent: 'space-between',
+ background: ' #f0f0f0',
+ };
+ const row = (rowData, sectionID, rowID) => {
+ return (
+
+
+ {/* eslint-disable-next-line react/jsx-no-duplicate-props */}
+ {
+ slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ?
+
+
+ : ''
+ }
+
+ {commonUtils.isEmptyObject(slaveConfig) ? '' : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const showTypeProps = {
+ app,
+ masterData,
+ record: rowData,
+ sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */
+ name: 'slave',
+ form: props.form,
+ formId: sModelsId,
+ getSqlDropDownData: props.getSqlDropDownData,
+ getSqlCondition: props.getSqlCondition,
+ handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord,
+ getFloatNum: props.getFloatNum,
+ getDateFormat: props.getDateFormat,
+ onChange: props.onDataChange,
+ showConfig: child,
+ formItemLayout: sMemo ? formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: rowData[child.sName],
+ bTable: true,
+ onFilterDropDownData: props.onFilterDropDownData,
+ onSaveState: props.onSaveState,
+ };
+ return (
+
+ );
+ })}
+ {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => {
+ if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) {
+ const { token } = app;
+ let imgBox = '';
+ const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : '';
+ const previewImageArr = [];
+ if (commonUtils.isNotEmptyArr(picAddr)) {
+ picAddr.forEach((item) => {
+ const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */
+ previewImageArr.push(dataPreviewUrl);
+ });
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ imgBox =

0} onClick={e => preView(previewImageArr, e)} />
;
+ }
+ return imgBox;
+ } else {
+ return '';
+ }
+ })}
+
+ );
+ };
+
+ const f1 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[0];
+ const f2 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[1];
+ const f3 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[2];
+ const f4 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[3];
+ const f5 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[4];
+ const f6 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[5];
+ const f7 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[6];
+ const f8 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[7];
+ const f9 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[8];
+ const f10 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[9];
+
+ return (
+
+
+
+ {
+ f1 ? {f1.showName} : {_this.getViewValue(f1, masterData)} : ''
+ }
+ {
+ f2 ? {f2.showName} : {_this.getViewValue(f2, masterData)} : ''
+ }
+
+
+ {
+ f3 ? {f3.showName} : {_this.getViewValue(f3, masterData)} : ''
+ }
+
+
+ {
+ f4 ? {f4.showName} : {_this.getViewValue(f4, masterData)} : ''
+ }
+
+
+ {
+ f5 ? {f5.showName} : {_this.getViewValue(f5, masterData)} : ''
+ }
+ {
+ f6 ? {f6.showName} : {_this.getViewValue(f6, masterData)} : ''
+ }
+
+
+ {
+ f7 ? {f7.showName} : {_this.getViewValue(f7, masterData)} : ''
+ }
+ {
+ f8 ? {f8.showName} : {_this.getViewValue(f8, masterData)} : ''
+ }
+
+
+ {
+ f9 ? {f9.showName} : {_this.getViewValue(f9, masterData)} : ''
+ }
+ {
+ f10 ? {f10.showName} : {_this.getViewValue(f10, masterData)} : ''
+ }
+
+
+
+
+
+ );
+}
+
+export default CommobileBase(CommobileBillEvent(CommobileBillComponent));
+
diff --git a/src/mobile/common/CommobileToolBar.js b/src/mobile/common/CommobileToolBar.js
new file mode 100644
index 0000000..d617f1f
--- /dev/null
+++ b/src/mobile/common/CommobileToolBar.js
@@ -0,0 +1,539 @@
+/* eslint-disable */
+import React, { Component } from 'react';
+import { Button, Toast } from 'antd-mobile';
+import * as commonUtils from '../../utils/utils';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import FileManageMobile from '../components/FileManageMobile';
+import FileShowMobile from '../components/FileShowMobile';
+import FileManageMobileWx from '../components/FileManageMobileWx';
+import {Modal} from "antd";
+
+
+class CommobileToolBar extends Component {
+ /** 构造函数 */
+ constructor(props) {
+ super(props);
+ this.state = {
+ buttonConfig: [], /* 导航工具栏 */
+ btnStyle: {},
+ divStyle: {},
+ };
+ }
+
+ componentWillMount() {
+ this.componentWillReceiveProps(this.props);
+ }
+ /** props改变的时候触发 */
+ componentWillReceiveProps(nextProps) {
+ const {
+ masterConfig, btnStyle, divStyle,
+ } = nextProps;
+ const { buttonConfig: buttonConfigOld } = this.state;
+ if (commonUtils.isNotEmptyObject(masterConfig) && commonUtils.isEmptyArr(buttonConfigOld)) {
+ const buttonConfig = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.showName !== '' && item.bVisible && item.sControlName.substring(0, 3) === 'Btn');
+ this.setState({ buttonConfig, btnStyle, divStyle });
+ }
+ }
+
+ /** 获取父级菜单属性 */
+ getMenuStatus = (menu) => {
+ if (menu?.sControlName === 'BtnCancel') {
+ return false;
+ }
+ let { masterData } = this.props;
+ const { enabled, adDisabled, sModelsType } = this.props;
+ if (commonUtils.isEmptyObject(masterData)) {
+ masterData = {};
+ }
+ const { bCheck, bInvalid } = masterData;
+ let disabledData = []; /* 置灰按钮集合 */
+ if (adDisabled) {
+ disabledData = ['BtnAdd', 'BtnUpd', 'BtnDel', 'BtnSave', 'BtnCancel', 'BtnSetPeriod'];
+ } else if (!adDisabled) {
+ if (!enabled) {
+ if (bInvalid) { // 已作废
+ disabledData = ['BtnUpd', 'BtnDel', 'BtnSave', 'BtnCancel', 'BtnExamine', 'BtnCancelExamine', 'BtnCopyTo', 'BtnCopyFrom', 'BtnBsOperation.BtnInvalid'];
+ } else if (bCheck) { // 已审核
+ if (!commonUtils.isEmpty(sModelsType) && sModelsType.includes('element/')) {
+ if (sModelsType === 'element/customerInfo') {
+ disabledData = ['BtnUpd', 'BtnDel', 'BtnSave', 'BtnCancel', 'BtnExamine', 'BtnCopyFrom', 'BtnCancelInvalid', 'BtnImport'];
+ } else {
+ disabledData = ['BtnSave', 'BtnCancel', 'BtnCancelExamine', 'BtnCopyFrom', 'BtnCancelInvalid'];
+ }
+ } else {
+ /* 已审核查看状态 修改 删除 保存 取消 审核 复制从 取消作废置灰 */
+ disabledData = ['BtnUpd', 'BtnDel', 'BtnSave', 'BtnCancel', 'BtnExamine', 'BtnCopyFrom', 'BtnCancelInvalid', 'BtnImport'];
+ }
+ } else {
+ /** 查看状态 修改 删除 保存 取消 审核 复制从置灰 */
+ disabledData = ['BtnSave', 'BtnCancel', 'BtnCancelExamine', 'BtnCopyTo', 'BtnCopyFrom', 'BtnCancelInvalid'];
+ if (!commonUtils.isEmpty(sModelsType) && sModelsType.includes('element/') && sModelsType !== 'element/customerInfo') {
+ /* 除了客户信息,其他基础信息在查看状态状态下 复制到常亮 */
+ disabledData = ['BtnSave', 'BtnCancel', 'BtnCancelExamine', 'BtnCopyFrom', 'BtnCancelInvalid'];
+ }
+ }
+ } else if (sModelsType === 'production/productionPlanInfo') {
+ disabledData = ['BtnRefresh', 'BtnAdd', 'BtnUpd', 'BtnDel', 'BtnFirst', 'BtnPrior', 'BtnNext', 'BtnLast', 'BtnUpCheck', 'BtnDownCheck', 'BtnExamine', 'BtnCancelExamine', 'BtnCopyTo', 'BtnBsOperation.BtnInvalid', 'BtnBsOperation.BtnCancelInvalid'];
+ } else {
+ disabledData = ['BtnRefresh', 'BtnAdd', 'BtnUpd', 'BtnDel', 'BtnFirst', 'BtnPrior', 'BtnNext', 'BtnLast', 'BtnUpCheck', 'BtnDownCheck', 'BtnExamine', 'BtnCancelExamine', 'BtnCopyTo', 'BtnBsOperation.BtnInvalid', 'BtnBsOperation.BtnCancelInvalid', 'BtnPrint'];
+ }
+ }
+ /* 通用上传按钮 除了新增,其他状态下都是亮的 */
+ if (menu.sControlName === 'BtnUpload') {
+ const { handleType } = masterData;
+ if (handleType === 'add') {
+ disabledData.push('BtnUpload');
+ }
+ }
+ // 其它自定义按钮不在以上 不能操作数据里
+ if (menu.disabled) {
+ disabledData.push(menu.sControlName);
+ }
+ // else {
+ // const iIndex = disabledData.findIndex(item => item === menu.sControlName);
+ // disabledData.splice(iIndex, 1);
+ // }
+ // console.log('disabledData:', menu.sControlName, menu.disabled); // disabledData
+ let bReturn = true;
+ if (menu.sControlName !== undefined && menu.sControlName.indexOf('.') > -1) {
+ bReturn = disabledData.findIndex(item => item === menu.sControlName.substring(0, menu.sControlName.indexOf('.'))) > -1;
+ if (!bReturn) {
+ bReturn = disabledData.findIndex(item => item === menu.sControlName) > -1;
+ }
+ } else {
+ bReturn = disabledData.findIndex(item => item === menu.sControlName) > -1;
+ }
+ bReturn = bReturn || (this.props.getMenuStatus !== undefined && this.props.getMenuStatus(menu));
+ return bReturn;
+ };
+ // 进行存储过程按钮存储过程参数解析拼接 根据存储过程按钮参数配置进行解析,配置是json格式 {"sproName":"cal_sss","inMap":"master.sSlaveId,slave.sId"}
+ handleBtnEent = async (btnConfig, name, sValue) => {
+ const { masterData } = this.props;
+ let iResult = 0 ;
+ // if (commonUtils.isNotEmptyObject(name) && name.indexOf('BtnRepair') > -1 && commonUtils.isNotEmptyObject(sCurrMemoProps)) {
+ // sCurrMemoProps.bVisibleMemo = false;
+ // this.props.onSaveState({ sCurrMemoProps });
+ // }
+ // eslint-disable-next-line prefer-destructuring
+ const sButtonParam = btnConfig.sButtonParam;
+ const btn = JSON.parse(sButtonParam);
+ const sProName = btn.sproName;
+ const inParams = [];
+ // eslint-disable-next-line prefer-destructuring
+ const inMap = btn.inMap;
+ const inlist = inMap.split(',');
+ const masterArr = [];
+ const slaveArr = [];
+ const slaveInfoArr = [];
+ const slaveChildArr = [];
+ const controlArr = [];
+ const materialsArr = [];
+ const processArr = [];
+
+
+ if (inlist.length > 0) {
+ inlist.forEach((item) => {
+ const itemArr = item.split('.');
+ if (itemArr.length > 0) {
+ const sname = itemArr[0];
+ const stype = itemArr[1];
+ if (commonUtils.isNotEmptyStr(sname) && sname === 'master') {
+ masterArr.push(stype);
+ }
+ if (commonUtils.isNotEmptyStr(sname) && sname === 'slave') {
+ slaveArr.push(stype);
+ }
+ if (commonUtils.isNotEmptyStr(sname) && sname === 'slaveInfo') {
+ slaveInfoArr.push(stype);
+ }
+ if (commonUtils.isNotEmptyStr(sname) && sname === 'slaveChild') {
+ slaveChildArr.push(stype);
+ }
+ if (commonUtils.isNotEmptyStr(sname) && sname === 'control') {
+ controlArr.push(stype);
+ }
+ if (commonUtils.isNotEmptyStr(sname) && sname === 'materials') {
+ materialsArr.push(stype);
+ }
+ if (commonUtils.isNotEmptyStr(sname) && sname === 'process') {
+ processArr.push(stype);
+ }
+ }
+ });
+
+ if (commonUtils.isNotEmptyArr(masterArr) && commonUtils.isNotEmptyObject(masterData)) {
+ const addState = {};
+ addState.key = 'master';
+ const val = [];
+ const currVal = {};
+ masterArr.forEach((filed) => {
+ currVal[`${filed}`] = masterData[`${filed}`];
+ });
+ val.push(currVal);
+ addState.value = val;
+ inParams.push({ ...addState });
+ }
+ if (commonUtils.isNotEmptyArr(slaveArr)) {
+ const addState = this.handleProParams('slave', slaveArr);
+ if (commonUtils.isNotEmptyObject(addState)) {
+ inParams.push({ ...addState });
+ }
+ }
+ if (commonUtils.isNotEmptyArr(slaveInfoArr)) {
+ const addState = this.handleProParams('slaveInfo', slaveInfoArr);
+ if (commonUtils.isNotEmptyObject(addState)) {
+ inParams.push({ ...addState });
+ }
+ }
+ if (commonUtils.isNotEmptyArr(slaveChildArr)) {
+ const addState = this.handleProParams('slaveChild', slaveChildArr);
+ if (commonUtils.isNotEmptyObject(addState)) {
+ inParams.push({ ...addState });
+ }
+ }
+ if (commonUtils.isNotEmptyArr(controlArr)) {
+ const addState = this.handleProParams('control', controlArr);
+ if (commonUtils.isNotEmptyObject(addState)) {
+ inParams.push({ ...addState });
+ }
+ }
+ if (commonUtils.isNotEmptyArr(materialsArr)) {
+ const addState = this.handleProParams('materials', materialsArr);
+ if (commonUtils.isNotEmptyObject(addState)) {
+ inParams.push({ ...addState });
+ }
+ }
+ if (commonUtils.isNotEmptyArr(processArr)) {
+ const addState = this.handleProParams('process', processArr);
+ if (commonUtils.isNotEmptyObject(addState)) {
+ inParams.push({ ...addState });
+ }
+ }
+ }
+ console.log('inParams', inParams);
+ iResult = await this.handleProcedureCall(btnConfig, sProName, JSON.stringify({ params: inParams, changeValue: sValue }));
+ return iResult;
+ };
+ // 存储过程按钮调用存储过程
+ handleProcedureCall = async (btnConfig, proName, proInParam) => {
+ const {
+ app,
+ sModelsId,
+ // salveData,
+ // slaveFilterCondition,
+ } = this.props;
+ let iResult = 0;
+ let { masterData} = this.props;
+ let { slaveChildData } = this.props;
+ const value = { sProName: proName, sProInParam: proInParam };
+ const url = `${commonConfig.server_host}procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`;
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ iResult = returnData.code;
+ if (returnData.code === 1) {
+ Toast.success(returnData.msg);
+ this.props.onButtonClick('BtnRefresh');
+ if(sModelsId === '12710101117254593440940' || btnConfig.sControlName === 'BtnEventBind'){
+ if(commonUtils.isNotEmptyObject(masterData)) {
+ // if(document.getElementById('sBarcode')) {
+ // document.getElementById('sBarcode').value = '';
+ // }
+ const addState ={};
+ addState.sBarcode1 = '';
+ addState.sBarcode = '';
+ addState.sBoardName = '';
+ addState.sSlaveLength = 0;
+ slaveChildData = [];
+ masterData = {...masterData, ...addState};
+ this.props.onSaveState({ masterData, slaveChildData });
+ }
+ }
+
+ } else {
+ this.props.getServiceError(returnData);
+ }
+ return iResult
+ }
+ // 根据配置解析拼接具体参数
+ handleProParams = (sKey, arr) => {
+ const { [`${sKey}Data`]: tableData, [`${sKey}SelectedRowKeys`]: selectedRowKeys } = this.props;
+ let keyData = commonUtils.isNotEmptyArr(tableData) && commonUtils.isNotEmptyArr(selectedRowKeys) ? tableData.filter(item => selectedRowKeys.includes(item.sId) || selectedRowKeys.includes(item.sSlaveId)) : [];
+ if(sKey === 'slaveChild' && commonUtils.isNotEmptyArr(tableData) && commonUtils.isEmptyArr(selectedRowKeys)) {
+ keyData = tableData;
+ }
+ if (commonUtils.isNotEmptyArr(keyData)) {
+ const addState = {};
+ addState.key = sKey;
+ const val = [];
+ keyData.forEach((currData) => {
+ const currVal = {};
+ arr.forEach((filed) => {
+ currVal[`${filed}`] = currData[`${filed}`];
+ });
+ val.push(currVal);
+ });
+ addState.value = val;
+ return addState;
+ } else {
+ return undefined;
+ }
+ };
+
+ handleClick = async (name) => {
+ if (name.startsWith('BtnEvent')) {
+ const btnConfig = this.props.masterConfig.gdsconfigformslave.filter(item => (item.sControlName === name))[0];// sButtonEnabled sButtonParam
+ if (commonUtils.isNotEmptyObject(btnConfig) && commonUtils.isNotEmptyStr(btnConfig.sButtonParam)) {
+ // this.handleBtnEent(btnConfig);
+ /* 根据接口返回是之前调用还是之后调用 */
+ const interfaceArr = commonUtils.isNotEmptyObject(btnConfig) ? btnConfig.interface :[];
+ this.props.onSaveState({
+ loading: true,
+ });
+ /* 根据接口返回是之前调用还是之后调用 */
+ let flag = 0;
+ if(commonUtils.isNotEmptyArr(interfaceArr)) {
+ const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1" );
+ const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2" );
+ if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */
+ // beforeInterfaceArr.forEach((item) => {
+ // this.handleInterfaceCall(item);
+ // });
+ const asyncFunc = async () => {
+ for (let i = 0; i < beforeInterfaceArr.length; i ++) {
+ const data = await this.handleInterfaceCall(beforeInterfaceArr[i]);
+ if (!data) {
+ flag += 1;
+ return;
+ }
+ }
+ }
+ await asyncFunc();
+
+ }
+ let result;
+ if (flag == 0) {
+ result = await this.handleBtnEent(btnConfig)
+ } else {
+ this.props.onSaveState({
+ loading: false,
+ });
+ }
+ if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */
+ if(result) { /* 只有审核成功 才能调用接口 -5代表审核失败 */
+ const asyncFunc = async () => {
+ for (let i = 0; i < afterInterfaceArr.length; i++) {
+ await this.handleInterfaceCall(afterInterfaceArr[i],true);
+ }
+ }
+ await asyncFunc();
+ }
+ }
+ } else{
+ this.handleBtnEent(btnConfig);
+ }
+ } else {
+ Toast.fail('请配置按钮的存储过程');
+ }
+ } else {
+ this.props.onButtonClick(name);
+ }
+ }
+ /* 调用后台配置的接口 */
+ handleInterfaceCall = async (obj, showTip, key, ids) => {
+ let bResult = false;
+ const { app, sModelsId, masterData, slaveSelectedRowKeys, slaveData, masterConfig, slaveFilterCondition } = this.props;
+ const sInterfaceName = obj.sInterfaceName;
+ /* 如果key是BtnSendList 传从表的主键集合 */
+ let idArr = '';
+ /* 如果有对应字段 则取对应字段 ,否则 取默认值 */
+ const btnConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))) ?
+ masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))[0] : {};
+
+ let sActiveKey = '';
+ if(commonUtils.isNotEmptyObject(btnConfig)) {
+ sActiveKey = btnConfig.sActiveKey;
+ }
+ if(sActiveKey) {
+ if( sActiveKey.includes('master.sId')) {
+ idArr = masterData.sId;
+ }
+ } else if(key && (key.includes('BtnSendList') || key.includes('BtnBatchExamine'))) {
+ if(commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
+ slaveSelectedRowKeys.forEach((item) => {
+ if(commonUtils.isNotEmptyObject(item)) {
+ idArr += `${item},`;
+ }
+ });
+ idArr = commonUtils.isNotEmptyObject(idArr) ? idArr.substr(0, idArr.length - 1) : '';
+ }
+ } else if(location.pathname.includes('commobileList')){
+ const { slaveSelectedRowKeys, slaveData } = this.props;
+ let { slaveSelectedData } = this.props;
+ if(commonUtils.isEmptyArr(slaveSelectedData) && commonUtils.isNotEmptyArr(slaveData)) {
+ slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sId) || slaveSelectedRowKeys.includes(item.sSlaveId));
+ }
+ const slaveSelectedDataNew = this.deteleObject(slaveSelectedData); // 删除sid重复的数据
+
+ if(commonUtils.isNotEmptyArr(slaveSelectedDataNew)) {
+ slaveSelectedDataNew.forEach((item) => {
+ if(commonUtils.isNotEmptyObject(item)) {
+ idArr += `${item.sId},`;
+ }
+ });
+ idArr = commonUtils.isNotEmptyObject(idArr) ? idArr.substr(0, idArr.length - 1) : '';
+ }
+ if(commonUtils.isNotEmptyObject(ids)) { /* 如果是勾选多行 则sId为循环的每一条 */
+ idArr = ids;
+ }
+ } else {
+ idArr = masterData.sId;
+ }
+ const value = { sId: commonUtils.isNotEmptyObject(idArr) ? idArr : commonUtils.isNotEmptyObject(ids) ? ids : masterData.sId, sSlaveId: slaveSelectedRowKeys?.toString(), masterData, userInfo: app.userinfo };
+ if(location.pathname.includes('commonList') && commonUtils.isNotEmptyArr(slaveFilterCondition)){
+ value.bFilter = JSON.stringify(slaveFilterCondition) ;
+ }
+ const url = `${commonConfig.interface_host}interfaceDefine/callthirdparty/${sInterfaceName}?sModelsId=${sModelsId}`;
+ const returnData = (await commonServices.postValueService(app.token, value, url, app)).data;
+ if(!returnData) {
+ Toast.fail('接口调用失败!');
+ return false;
+ }
+ if (returnData.code === 1) {
+ bResult = true;
+ // message.success(returnData.msg);
+ }else if (returnData.code === 2) {
+ // Modal.info({
+ // title: '温馨提示:',
+ // content: (
+ //
+ // {this.handleGetMsg(returnData.msg)}
+ //
+ // ),
+ // okText: '确认',
+ // onOk() {},
+ // });
+ bResult = true;
+ } else if (returnData.code === -8) {
+ Modal.info({
+ title: '温馨提示:',
+ content: (
+
+ {this.handleGetMsg(returnData.msg)}
+
+ ),
+ okText: '确认',
+ onOk() {},
+ });
+ bResult = false;
+ } else {
+ bResult = false;
+ this.props.getServiceError(returnData);
+ }
+ /* 若配置的是按钮后调用第三方, 则调用成功后 需要重新回刷一次数据 */
+ if(commonUtils.isNotEmptyObject(obj) && obj.sInterfaceCallMethod === "2"){
+ if(bResult){
+ this.props.onButtonClick('BtnRefresh');
+ }
+ }
+ return bResult;
+ }
+ /** 渲染 */
+ render() {
+ const { buttonConfig, btnStyle, divStyle } = this.state;
+ const {
+ masterData, sModelsId, slaveSelectedRowKeys, slaveData,
+ } = this.props;
+ /* 手机端通用拍照上传功能 */
+ let btnUpdConfig = {};
+ if (commonUtils.isNotEmptyArr(buttonConfig)) {
+ const iIndex = buttonConfig.findIndex(item => item.sControlName.includes('BtnUpdPic'));
+ if (iIndex > -1) {
+ btnUpdConfig = buttonConfig[iIndex];
+ }
+ }
+ let sSlaveId = '';
+ let selectedsId = ''; /* 列表选中行或窗体sFormId */
+ let selectedRow = {};
+ const bList = location.pathname === '/indexMobile/commobileList';
+
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ let iIndex = -1;
+ if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) {
+ iIndex = 0;
+ } else {
+ iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId));
+ }
+ if (iIndex > -1) {
+ selectedRow = slaveData[iIndex];
+ selectedsId = commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyObject(selectedRow) ? (commonUtils.isNotEmptyObject(selectedRow.sFormId) ? selectedRow.sFormId : '') : ''; /* 列表从表的sFormId */
+ sSlaveId = commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyObject(selectedRow) ? (commonUtils.isNotEmptyObject(selectedRow.sSlaveId) ? selectedRow.sSlaveId : '') : ''; /* 列表从表的sSlaveId */
+ }
+ }
+ /* 如果配置按钮有sqlConditon条件 则根据SQLCondition条件 否则走正常 */
+ let conditonValues = { sSrcId: bList ? selectedsId : commonUtils.isNotEmptyObject(masterData) ? masterData.sId : '' };
+ if (commonUtils.isNotEmptyObject(btnUpdConfig) && btnUpdConfig.sSqlCondition) {
+ /* 选中行 */
+ if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
+ const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId));
+ if (iIndex > -1) {
+ if (commonUtils.isNotEmptyObject(selectedRow)) {
+ conditonValues = this.props.getSqlCondition(btnUpdConfig, 'slave', selectedRow);
+ }
+ }
+ }
+ }
+
+ const filemanageType = {
+ app: {
+ ...this.props.app,
+ currentPane: {
+ name: 'elefilfilemanage',
+ config: btnUpdConfig,
+ conditonValues,
+ title: '上传',
+ route: '/elefilfilemanage',
+ formId: '15864832090002447752315825731600',
+ key: `${sModelsId}15864832090002447752315825731600`,
+ sModelsType: 'element/filfilemanage',
+ sSrcNo: bList ? (commonUtils.isNotEmptyArr(selectedRow) ? selectedRow.sBillNo : '') : (commonUtils.isNotEmptyObject(masterData) ? masterData.sBillNo : ''), /* 源单号 */
+ sSrcFormId: bList ? (commonUtils.isNotEmptyArr(selectedRow) ? sModelsId : '') : (commonUtils.isNotEmptyObject(masterData) ? masterData.sFormId : ''), /* 源单窗体Id */
+ sSrcId: bList ? (commonUtils.isNotEmptyObject(selectedRow) ? selectedRow.sId : '') : commonUtils.isNotEmptyObject(masterData) ? masterData.sId : '', /* 源单Id */
+ sSrcSlaveId: commonUtils.isNotEmptyObject(sSlaveId) ? sSlaveId : '', /* 工单控制表选中行或列表的是sSlaveId */
+ onFilfileOk: this.handleFilfileManageOk,
+ onFilfileCancel: this.handleFilfileManageCancel,
+ },
+ },
+ config: btnUpdConfig,
+ sModelsId: '15864832090002447752315825731600',
+ enabled: true, /* this.props.enabled */
+ dispatch: this.props.dispatch,
+ content: this.props.content,
+ id: new Date().getTime().toString(),
+ btnStyle,
+ };
+
+ return (
+
+ {commonUtils.isEmptyArr(buttonConfig) ? '' :
+ buttonConfig.map((item) => {
+ if (!commonConfig.isWeiXin && item.sControlName.includes('BtnUpdPic')) {
+ return (
+
+ );
+ } else if (true && item.sControlName.includes('BtnUpdPic')) {
+ return (
+
+ );
+ } else if (item.sControlName.includes('BtnShowPic')) {
+ return (
+ );
+ }
+ return ();
+ })}
+
+
+ );
+ }
+}
+
+export default CommobileToolBar;
diff --git a/src/mobile/common/CommobileView.js b/src/mobile/common/CommobileView.js
new file mode 100644
index 0000000..9f5b834
--- /dev/null
+++ b/src/mobile/common/CommobileView.js
@@ -0,0 +1,63 @@
+/**
+ * Created by mar105 on 2019-02-27.
+ */
+/* eslint-disable object-curly-newline,prefer-destructuring */
+import React, { Component } from 'react';
+import { List } from 'antd-mobile';
+import ShowType from './CommobileComponent';
+import * as commonUtils from '../../utils/utils'; /* 通用方法 */
+
+export default class CommobileView extends Component {
+ shouldComponentUpdate(nextProps) {
+ const { masterData, enabled } = this.props;
+ return masterData !== nextProps.masterData || enabled !== nextProps.enabled;
+ }
+
+ render() {
+ const { masterConfig, sModelsId, enabled, sUseInfo, app } = this.props;
+ let { masterData } = this.props;
+ masterData = masterData === undefined ? {} : masterData;
+ const masterShowConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '') : [];
+ const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } };
+ return (
+
+ {
+ masterShowConfig.map((child) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const showTypeProps = {
+ app,
+ record: masterData,
+ name: 'master',
+ form: this.props.form,
+ formId: sModelsId,
+ getSqlDropDownData: this.props.getSqlDropDownData,
+ getSqlCondition: this.props.getSqlCondition,
+ handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord,
+ getFloatNum: this.props.getFloatNum,
+ getDateFormat: this.props.getDateFormat,
+ onChange: this.props.onChange,
+ showConfig: child,
+ formItemLayout: sMemo ? formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: masterData[child.sName],
+ bTable: false,
+ onFilterDropDownData: this.props.onFilterDropDownData,
+ onSaveState: this.props.onSaveState,
+ };
+ return (
+
+ );
+ })
+ }
+
+ );
+ }
+}
diff --git a/src/mobile/common/CommobileViewMaster.js b/src/mobile/common/CommobileViewMaster.js
new file mode 100644
index 0000000..51cd875
--- /dev/null
+++ b/src/mobile/common/CommobileViewMaster.js
@@ -0,0 +1,108 @@
+/**
+ * Created by mar105 on 2019-02-27.
+ */
+/* eslint-disable object-curly-newline,prefer-destructuring */
+import React, { Component } from 'react';
+import { List, Flex } from 'antd-mobile';
+import ShowType from './CommobileComponent';
+import * as commonUtils from '../../utils/utils';
+import styles from '../mobile.less'; /* 通用方法 */
+
+export default class CommobileViewMaster extends Component {
+ handleMasterFieldScan = (fieldConfig, tbName, record, newValue, cancelValue) => {
+ this.props.onMasterFieldScan(fieldConfig, tbName, record, newValue, cancelValue);
+ }
+ handleMobileScan = (fieldConfig, tbName, record, newValue, cancelValue) => {
+ this.props.onMobileScan(fieldConfig, tbName, record, newValue, cancelValue);
+ }
+ handleFocus = (fieldConfig) => {
+ this.props.onFocus(fieldConfig);
+ }
+
+ handleBlur = (fieldConfig) => {
+ this.props.onBlur(fieldConfig);
+ }
+
+ render() {
+ const { masterConfig, masterData, sModelsId, enabled, sUseInfo, app, iTag, bOpenKeyboard } = this.props;
+ let masterShowConfig;
+ if (iTag === 1) {
+ masterShowConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1) : [];
+ } else {
+ masterShowConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag !== 1) : [];
+ }
+
+ const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } };
+ return (
+
+ {
+ // eslint-disable-next-line array-callback-return
+ masterShowConfig.map((child, index) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const bNotViewTitle = child.bNotViewTitle; /* 不显示标题 */
+ const iRowNum = child.iColValue === 1 ? 24 : 1; /* 每个字段占的网格个数 ,网格总个数是24 */
+ const iColValue = sMemo ? 24 : child.iColValue * iRowNum; /* 跨度 */
+ // eslint-disable-next-line no-unused-vars
+ const iRowValue = commonUtils.isEmptyNumber(child.iRowValue) || child.iRowValue === 0 ? 1 : child.iRowValue; /* 行高 */
+ const showTypeProps = {
+ app,
+ record: masterData,
+ sId: masterData.sId, /* 修改当前编号(数据格式:字符串) */
+ name: 'master',
+ form: this.props.form,
+ formId: sModelsId,
+ getSqlDropDownData: this.props.getSqlDropDownData,
+ getSqlCondition: this.props.getSqlCondition,
+ handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord,
+ getFloatNum: this.props.getFloatNum,
+ getDateFormat: this.props.getDateFormat,
+ onChange: this.props.onChange,
+ onFocus: this.handleFocus,
+ onBlur: this.handleBlur,
+ showConfig: child,
+ formItemLayout: sMemo ? formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: masterData[child.sName],
+ bTable: false,
+ onFilterDropDownData: this.props.onFilterDropDownData,
+ onSaveState: this.props.onSaveState,
+ onFieldScan: this.handleMasterFieldScan,
+ onMobileScan: this.handleMobileScan,
+ bOpenKeyboard,
+ };
+ if (child.iTag === 1) {
+ if (index > -1) {
+ return (
+
+
+ {
+ bNotViewTitle ?
+ <> {masterData[child.sName]}>
+ :
+ <>{child.showName}
:
{masterData[child.sName]}>
+ }
+
+
+ );
+ }
+ } else {
+ return (
+
+
+
+ );
+ }
+ })
+ }
+
+ );
+ }
+}
diff --git a/src/mobile/common/CommobileViewSlave.js b/src/mobile/common/CommobileViewSlave.js
new file mode 100644
index 0000000..5d0ac43
--- /dev/null
+++ b/src/mobile/common/CommobileViewSlave.js
@@ -0,0 +1,83 @@
+/**
+ * Created by mar105 on 2019-02-27.
+ */
+/* eslint-disable object-curly-newline,prefer-destructuring */
+import React, { Component } from 'react';
+import { List } from 'antd-mobile';
+import ShowType from './CommobileComponent';
+import * as commonUtils from '../../utils/utils';
+import styles from '../mobile.less'; /* 通用方法 */
+
+export default class CommobileView extends Component {
+ // shouldComponentUpdate(nextProps) {
+ // const { slaveData, enabled } = this.props;
+ // return JSON.stringify(slaveData) !== JSON.stringify(nextProps.slaveData) || enabled !== nextProps.enabled;
+ // }
+
+ render() {
+ const { slaveConfig, slaveData, sModelsId, enabled, sUseInfo, app, iTag } = this.props;
+ const slaveDataRow = commonUtils.isEmptyArr(slaveData) ? {} : slaveData[0];
+ let masterShowConfig;
+ if (iTag === 1) {
+ masterShowConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1) : [];
+ } else {
+ masterShowConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag !== 1) : [];
+ }
+
+ const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } };
+ return (
+
+ {
+ // eslint-disable-next-line array-callback-return
+ masterShowConfig.map((child, index) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const showTypeProps = {
+ app,
+ record: slaveDataRow,
+ sId: slaveDataRow.sId, /* 修改当前编号(数据格式:字符串) */
+ name: 'slave',
+ form: this.props.form,
+ formId: sModelsId,
+ getSqlDropDownData: this.props.getSqlDropDownData,
+ getSqlCondition: this.props.getSqlCondition,
+ handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord,
+ getFloatNum: this.props.getFloatNum,
+ getDateFormat: this.props.getDateFormat,
+ onChange: this.props.onDataChange,
+ showConfig: child,
+ formItemLayout: sMemo ? formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: slaveDataRow[child.sName],
+ bTable: false,
+ onFilterDropDownData: this.props.onFilterDropDownData,
+ onSaveState: this.props.onSaveState,
+ };
+ if (child.iTag === 1) {
+ if (index > 9) {
+ return (
+
+
{child.showName} : {showTypeProps.dataValue}
+
+ );
+ }
+ } else {
+ return (
+
+
+
+ );
+ }
+ })
+ }
+
+ );
+ }
+}
diff --git a/src/mobile/common/ContactsInfoMobile.js b/src/mobile/common/ContactsInfoMobile.js
new file mode 100644
index 0000000..f4456ee
--- /dev/null
+++ b/src/mobile/common/ContactsInfoMobile.js
@@ -0,0 +1,45 @@
+import React from 'react';
+import { Grid, Result } from 'antd-mobile';
+import { createForm } from 'rc-form';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import styles from '../mobile.less';
+import CommobileBase from './CommobileBase';
+import CommobileBillEvent from './CommobileBillEvent';
+import CommobileView from './CommobileView';
+// import * as commonUtils from '../../utils/utils';
+
+const arr = ['https://gw.alipayobjects.com/zos/rmsportal/nywPmnTAvTmLusPxHPSu.png', 'https://gw.alipayobjects.com/zos/rmsportal/pdFARIqkrKEGVVEwotFe.svg', 'https://gw.alipayobjects.com/zos/rmsportal/pdFARIqkrKEGVVEwotFe.svg', 'https://gw.alipayobjects.com/zos/rmsportal/pdFARIqkrKEGVVEwotFe.svg'];
+const data1 = Array.from(new Array(4)).map((_val, i) => ({
+ icon: arr[i],
+}));
+// eslint-disable-next-line no-useless-concat
+const myImg = src =>
;
+class ContactsInfoMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ };
+ }
+
+
+ render() {
+ const { personPic } = this.props;
+ return (
+
+ {masterData.sPositionName}
}
+ />
+
+
+
+ );
+ }
+}
+
+const ContactsInfoMobileComponent = createForm()(ContactsInfoMobile);
+
+export default CommobileBase(CommobileBillEvent(ContactsInfoMobileComponent));
+
diff --git a/src/mobile/common/ContactsMobile.js b/src/mobile/common/ContactsMobile.js
new file mode 100644
index 0000000..8f47691
--- /dev/null
+++ b/src/mobile/common/ContactsMobile.js
@@ -0,0 +1,125 @@
+import React from 'react';
+import { ListView } from 'antd-mobile';
+import styles from '../mobile.less';
+// eslint-disable-next-line import/first
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import CommobileBase from './CommobileBase';
+import CommobileListEvent from './CommobileListEvent';
+import CommobileSearchComponent from './CommobileSearchComponent';
+import commonConfig from '../../utils/config';
+
+const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+});
+
+class ContactsMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ personPic: 'https://zos.alipayobjects.com/rmsportal/dKbkpPXKfvZzWCM.png',
+ // height: ( document.documentElement.clientHeight * 3) / 4,
+ };
+ }
+
+
+ onEndReached = async () => {
+ if ((this.props.slavePagination.current + 1) <= Math.ceil(this.props.slavePagination.total / commonConfig.pageSize)) {
+ const { slaveFilterCondition, slaveData: slaveDataOld } = this.props;
+ const slaveData = [...slaveDataOld];
+ const addState = await this.props.onGetData(this.props.slaveConfig, slaveFilterCondition, this.props.slavePagination.current + 1, true);
+ addState.slaveData = slaveData.concat(addState.slaveData);
+ this.props.onSaveState({ ...addState });
+ // this.state = {
+ // isLoading: true,
+ // };
+ }
+ }
+
+ onClose = key => () => {
+ this.setState({
+ [key]: false,
+ });
+ }
+
+ handleGridClick = (el) => {
+ const { dispatch } = this.props;
+ const { slaveConfig } = this.props;
+ const { gdsconfigformslave } = slaveConfig;
+ // eslint-disable-next-line no-plusplus
+ for (let i = 0; i < gdsconfigformslave.length; i++) {
+ if (gdsconfigformslave[i].sName === 'picArr') {
+ this.sActiveId = gdsconfigformslave[i].sActiveId;
+ }
+ }
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ url: '/indexMobile/contactsInfo',
+ sModelsId: this.sActiveId,
+ sId: el.sId,
+ personPic: this.state.personPic,
+ slaveData: this.props.slaveData,
+ },
+ });
+ };
+
+
+ render() {
+ const { slaveData: slaveDataOld } = this.props;
+ const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+
+ const row = (rowData, sectionID, rowID) => {
+ const obj = rowData;
+ return (
+
+
+

+
+
{obj.sEmployeeName}
+
{obj.sDepartName}
+
+
+
+ );
+ };
+
+ return (
+
+
+
+
(
+
+ {this.props.isLoading ? '加载中...' : '加载完毕'}
+
)}
+ renderRow={row}
+ style={{
+ // height: this.state.height,
+ position: 'absolute',
+ overflow: 'auto',
+ bottom: 0,
+ top: 0,
+ width: '100%',
+ }}
+ pageSize={commonConfig.pageSize}
+ onScroll={() => {}}
+ scrollRenderAheadDistance={500}
+ onEndReached={this.onEndReached}
+ onEndReachedThreshold={10}
+ />
+
+
+ );
+ }
+}
+export default CommobileBase(CommobileListEvent(ContactsMobile));
+
diff --git a/src/mobile/common/DeviceMobile.js b/src/mobile/common/DeviceMobile.js
new file mode 100644
index 0000000..b6ecaa8
--- /dev/null
+++ b/src/mobile/common/DeviceMobile.js
@@ -0,0 +1,301 @@
+/* eslint-disable prefer-destructuring */
+/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */
+import React from 'react';
+import { Tabs, Badge, SearchBar, ListView, Modal, List, Button } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import styles from '.././mobile.less';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import * as commonUtils from '../../utils/utils';
+
+// function MyBody(props) {
+// return (
+//
+// you can custom body wrap element
+// {props.children}
+//
+// );
+// }
+
+
+// const prompt = Modal.prompt;
+const operation = Modal.operation;
+
+
+const tabs = [
+ { title: 全部数据v },
+ { title: 筛选.. },
+];
+
+
+class DeviceMobile extends React.Component {
+ constructor(props) {
+ super(props);
+
+ const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+ });
+
+ this.state = {
+ dataSource: dataSource.cloneWithRows({}),
+ isLoading: true, // 判断是否正在加载中
+ modal1: false,
+ height: document.documentElement.clientHeight * 3 / 4,
+ totalData: [],
+ pageSize: 5,
+ pageIndex: 1,
+ hasMore: true, // 判断是否有更多
+ };
+ }
+ async componentWillMount() {
+ let { sModelType } = this.props;
+ sModelType = commonUtils.isEmptyObject(sModelType) ? 'device' : sModelType;
+ const { token } = this.props.app;
+ const configUrl = `${commonConfig.server_host}mobilephone/getMenu/${sModelType}?sModelsId=100`;
+ const configReturn = (await commonServices.getService(token, configUrl)).data;
+ if (configReturn.code === 1) {
+ const returnData = configReturn.dataset.rows[0];/* 全部数据 */
+ if (commonUtils.isNotEmptyArr(returnData)) {
+ const sModelsId = returnData.sId;
+ const configUrl = `${commonConfig.server_host}business/getModelBysId/${sModelsId}?sModelsId=${sModelsId}`;
+ const configReturn = (await commonServices.getService(token, configUrl)).data;
+ if (configReturn.code === 1) {
+ const [configData] = configReturn.dataset.rows;
+ const masterConfig = configData.formData.filter(item => item.bGrd)[0];
+ if (commonUtils.isNotEmptyArr(masterConfig)) {
+ this.setState({ masterConfig, sModelsId });
+ }
+ const configDataId = masterConfig.sId;
+
+ const dataUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${configDataId}?sModelsId=${sModelsId}`;
+ const dataReturn = (await commonServices.postValueService(token, { pageNum: this.state.pageIndex, pageSize: this.state.pageSize }, dataUrl)).data;
+ if (configReturn.code === 1) {
+ if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) {
+ const dT = dataReturn.dataset.rows;
+ if (dT.length > 0) {
+ this.setState({ totalData: dT[0].dataSet });
+ this.getInitData();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ // componentDidMount() {
+ // }
+
+
+ onEndReached = async (event) => {
+ // load new data
+ // hasMore: from backend data, indicates whether it is the last page, here is false
+ if (this.state.isLoading && !this.state.hasMore) {
+ return;
+ }
+ console.log('reach end', event);
+ this.setState({ isLoading: true, hasMore: true });
+ // var token=this.state.token;
+ const { token } = this.props.app;
+ let currpagedata = [];
+ // var size=this.state.pageSize;
+ // var status=this.state.status;
+ const configDataId = this.state.masterConfig.sId;
+ const dataUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${configDataId}?sModelsId=${this.state.sModelsId}`;
+ const dataReturn = (await commonServices.postValueService(token, { pageNum: this.state.pageIndex, pageSize: this.state.pageSize }, dataUrl)).data;
+ console.log('===pageNum====', this.state.pageIndex);
+ if (dataReturn.code === 1) {
+ if (commonUtils.isNotEmptyArr(dataReturn.dataset.rows)) {
+ const dT = dataReturn.dataset.rows;
+ if (dT.length > 0) {
+ currpagedata = dT[0].dataSet;
+ }
+ }
+ }
+ setTimeout(() => {
+ const priortotalData = this.state.totalData; // 小于 pageIndex 的订单
+ this.rData = priortotalData.concat(currpagedata);
+ this.setState({
+ dataSource: this.state.dataSource.cloneWithRows(this.rData),
+ isLoading: false,
+ pageIndex: this.state.pageIndex + 1,
+ totalData: this.rData,
+ });
+ }, 1000);
+ }
+ onClose = key => () => {
+ this.setState({
+ [key]: false,
+ });
+ }
+
+ getInitData=() => {
+ this.setState({
+ isLoading: true, hasMore: true, pageIndex: 1,
+ });
+ // const that = this;
+ // 取第一页订单 作为初始
+ // const page = 1;
+ // const size = this.state.pageSize;
+ // that.props.orderAction.getOrderList({
+ // token, status, page, size,
+ // });
+ const dT = this.state.totalData;
+ if (dT.length > 0) {
+ setTimeout(() => {
+ this.rData = this.genData();
+ this.setState({
+ dataSource: this.state.dataSource.cloneWithRows(this.rData),
+ isLoading: false,
+ pageIndex: this.state.pageIndex + 1,
+ });
+ }, 600);
+ }
+ }
+ genData() {
+ const dataArr = [];
+ let order = [];
+ // const order = this.props.order.orderList;
+ const dT = this.state.totalData;
+ if (dT.length > 0) {
+ order = dT;
+ for (let i = 0; i < order.length; i += 1) {
+ dataArr.push(order[i]);
+ }
+ }
+ return dataArr;
+ }
+
+
+ render() {
+ const { masterConfig } = this.state;
+ if (masterConfig === undefined) {
+ return ();
+ }
+
+ const f1 = masterConfig.gdsconfigformslave.filter(item => item.bVisible)[0];
+ const f2 = masterConfig.gdsconfigformslave.filter(item => item.bVisible)[1];
+ const f3 = masterConfig.gdsconfigformslave.filter(item => item.bVisible)[2];
+ const f4 = masterConfig.gdsconfigformslave.filter(item => item.bVisible)[3];
+ const f5 = masterConfig.gdsconfigformslave.filter(item => item.bVisible)[4];
+ const separator = (sectionID, rowID) => (
+
+ );
+ const row = (rowData, sectionID, rowID) => {
+ const obj = rowData;
+ return (
+
+
{f1.showName}:{obj[f1.sName]}
+ {obj[f2.sName]}
+
+
+
+
{f3.showName}:{obj[f3.sName]}
+
{f4.showName}:
{obj[f4.sName]}
+
{f5.showName}:
+ {obj[f4.sName]}
+
+
+ {masterConfig.gdsconfigformslave.filter(item => item.bVisible).map((item, iIndex) => {
+ if (iIndex > 5) {
+ return (
item.showName:{obj[item.sName]}
);
+ } else {
+ return ('');
+ }
+ })}
+
+
+
+
+ );
+ };
+ return (
+
+
+
+
+
{ console.log('onChange', index, tab); }}
+ onTabClick={(tab, index) => {
+ if (index === 0) {
+ operation([
+ { text: '全部单据', onPress: () => console.log('标为未读被点击了') },
+ { text: '已审核单据', onPress: () => console.log('置顶聊天被点击了') },
+ { text: '本月单据', onPress: () => console.log('置顶聊天被点击了') },
+ ]);
+ } else {
+ this.setState({
+ modal1: true,
+ });
+ }
+}}
+ >
+
+
+
+
+
+
{ this.lv = el; }}
+ dataSource={this.state.dataSource}
+ // initialListSize={5} // 进入页面时记录数
+ // renderHeader={() => header}
+ renderFooter={() => (
+
+ {this.state.isLoading ? 'Loading...' : 'Loaded'}
+
)}
+ renderRow={row}
+ renderSeparator={separator}
+ style={{
+ height: this.state.height,
+ overflow: 'auto',
+ }}
+ pageSize={this.state.pageSize}
+ onScroll={() => {}}
+ scrollRenderAheadDistance={500}
+ onEndReached={this.onEndReached}
+ onEndReachedThreshold={10}
+ />
+
+ { alert('afterClose'); }}
+ >
+ 筛选条件
} >
+ {['股票名称', '股票代码', '买入价格'].map((i, index1) => (
+ {i}
+ ))}
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default DeviceMobile;
diff --git a/src/mobile/common/ExamineMobile.js b/src/mobile/common/ExamineMobile.js
new file mode 100644
index 0000000..95f9737
--- /dev/null
+++ b/src/mobile/common/ExamineMobile.js
@@ -0,0 +1,581 @@
+/* eslint-disable */
+import React from 'react';
+import { Flex, Button, ListView, Toast, TextareaItem, Steps, WhiteSpace, WingBlank } from 'antd-mobile';
+import { DownlandOutline, ArrowDownCircleOutline, CheckCircleFill, ClockCircleFill, HandPayCircleOutline, InformationCircleOutline, } from 'antd-mobile-icons'
+import { Space, Dropdown, Menu } from 'antd';
+import { createForm } from 'rc-form';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import CommobileBase from './CommobileBase';
+import CommobileBillEvent from './CommobileBillEvent';
+import CommobileViewMaster from './CommobileViewMaster';
+import commonConfig from '../../utils/config';
+import * as commonUtils from '../../utils/utils';
+import ShowType from './CommobileComponent';
+import CommobileToolBar from './CommobileToolBar';
+import styles from '../mobile.less';
+import add from '../../assets/mobile/add-select.svg';
+import scan from '../../assets/mobile/scanning.svg';
+import close from '../../assets/mobile/close.svg';
+import * as commonFunc from '../../components/Common/commonFunc';
+import BarCodeUtil from './BarCodeUtil';
+import preView from '../components/preView';
+import WaterWave from "../../components/Charts/WaterWave";
+import * as commonServices from "../../services/services";
+
+const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+});
+const { Step } = Steps
+class CommobileExamine extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ };
+ }
+
+ // eslint-disable-next-line react/sort-comp
+ handleClick = async (name, type, sId) => {
+ const { masterData, app } = this.props;
+ const userinfo = app.userinfo;
+ if (name === 'BtnRefuse' || name === 'BtnAgree') {
+ if(name ==='BtnRefuse') {
+ masterData.approved = false;
+ if(commonUtils.isEmpty(this.state.textareaValue)) {
+ Toast.fail('需要输入驳回内容!');
+ return;
+ }
+ } else if(name ==='BtnAgree') {
+ masterData.approved = true;
+ }
+ if(this.state.textareaValue) {
+ masterData.sCommentMemo = this.state.textareaValue;
+ }
+ const url = `${commonConfig.server_host}currencyFlow/completeerp/${userinfo.sBrandsId}/${userinfo.sSubsidiaryId}/${userinfo.sUserName}`;
+ const value ={
+ flow: masterData,
+ }
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ if(commonUtils.isNotEmptyObject(returnData)) {
+ if (returnData.code === 0) {
+ window.history.back(-1);
+ } else {
+ Toast.fail(returnData.msg);
+ }
+ } else {
+ Toast.info ('操作失败!');
+ }
+ } else if(name === 'BtnEntrust') { /* 委托 */
+ if(commonUtils.isNotEmptyObject(type)) {
+ const url = `${commonConfig.server_host}currencyFlow/completeerp/${userinfo.sUserName}/${userinfo.sBrandsId}/${userinfo.sSubsidiaryId}`;
+ // const url = commonConfig.flow_host + 'process/delegatePhone/' + userinfo.sUserName + '/' + userinfo.sBrandsId + '/'+ userinfo.sSubsidiaryId + '/' ;
+ const value ={
+ taskId: masterData.sTaskId,
+ delegateToUser: type.sUserName
+ }
+ const returnData = (await commonServices.postValueService(app.token, value, url)).data;
+ if(commonUtils.isNotEmptyObject(returnData)) {
+ if (returnData.code === 0) {
+ window.history.back(-1);
+ } else {
+ Toast.fail(returnData.msg);
+ }
+ } else {
+ Toast.info ('操作失败!');
+ }
+ }
+ } else if (name === 'BtnSave') {
+ this.props.onSubmit();
+ } else if (name === 'BtnUpd') {
+ this.props.onEdit(name);
+ } else if (type === 'add') {
+ this.props.onDataRowAdd(name);
+ } else if (type === 'del') {
+ const { app, [`${name}Data`]: tableData } = this.props;
+ let { [`${name}DelData`]: tableDelData } = this.props;
+ tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData;
+ if (sId !== '') {
+ const tableDataIndex = tableData.findIndex(item => item.sId === sId);
+ if (tableDataIndex > -1) {
+ const slaveDataFilter = tableData[tableDataIndex];
+ tableData.splice(tableDataIndex, 1);
+ slaveDataFilter.handleType = 'del';
+ tableDelData.push(slaveDataFilter);
+ }
+ this.props.onSaveState({
+ [`${name}Data`]: tableData,
+ [`${name}DelData`]: tableDelData,
+ [`${name}SelectedRowKeys`]: [],
+ });
+ } else {
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据
+ }
+ } else if (type === 'scan') {
+ BarCodeUtil.startScan(async (type, code) => {
+ const {
+ slaveConfig, sModelsId, masterData, slaveData, sModelsType,
+ } = this.props;
+ // const slaveData = [];
+ let slaveDataObj = {};
+ let masterdataObj = {};
+ let slaveDataObjAdd = {};
+ let masterDataObjAdd = {};
+ const codeArr = code.split('|');
+ if (sModelsType === 'materialsStock/productionmaterials') {
+ const dataStr = codeArr[10].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sMaterialsStyle: codeArr[1],
+ sDefineNo: codeArr[4],
+ sDefineNo2: codeArr[5],
+ dAuxiliaryQty: codeArr[7],
+ tInStoreDate: date,
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const materialsNameConfig = slaveDataConfig.filter(item => item.sName === 'sMaterialsId');
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId');
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const materialseAssignField = commonUtils.isNotEmptyArr(materialsNameConfig) ? materialsNameConfig[0].sAssignField : '';
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+
+ let materialsNameDropDownData = [];
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(materialsNameConfig[0]) && materialsNameConfig[0].sDropDownType === 'sql') {
+ materialsNameDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', materialsNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ // }
+ let materialsNameDataOne;
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ if (!commonUtils.isEmpty(materialsNameDropDownData)) {
+ materialsNameDataOne = materialsNameDropDownData.filter(item => item.sMaterialsName === codeArr[6]);
+ }
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[3]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let materialsDataDetiale = {};
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ materialsDataDetiale = { ...commonFunc.getAssignFieldValue(materialseAssignField, materialsNameDataOne[0], newCopyTo) };
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...materialsDataDetiale,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = { ...masterData, ...sLocationNameDataDetiale, ...sWareHouseNameDataDetiale };
+ } else if (sModelsType === 'sales/salesSgoods') { // 扫码待发货
+ const dataStr = codeArr[12].replace(/-/g, '/');
+ const date = new Date(dataStr);
+ slaveDataObjAdd = {
+ sOrderNo: codeArr[9],
+ sWorkOrderNo: codeArr[8],
+ sCustomerOrderNo: codeArr[10],
+ sCustomerProductNo: codeArr[11],
+ sDefineNo: codeArr[3],
+ sDefineNo2: codeArr[4],
+ dProductQty: codeArr[6],
+ tInStoreDate: date,
+ };
+ masterDataObjAdd = {
+ sCustomerShort: codeArr[7],
+ };
+ const slaveDataConfig = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave : '';
+ const sWareHouseNameConfig = slaveDataConfig.filter(item => item.sName === 'sWareHouseId'); // 仓库名称
+ const sLocationNameConfig = slaveDataConfig.filter(item => item.sName === 'sLocationId');// 库区库位
+ const sProductNameConfig = slaveDataConfig.filter(item => item.sName === 'sProductId');// 产品名称
+
+
+ const onDataRowAdd = this.props.onDataRowAdd(name, true);
+ const sWareHouseNameAssignField = commonUtils.isNotEmptyArr(sWareHouseNameConfig) ? sWareHouseNameConfig[0].sAssignField : '';
+ const sLocationNameAssignField = commonUtils.isNotEmptyArr(sLocationNameConfig) ? sLocationNameConfig[0].sAssignField : '';
+ const sProductNameAssignField = commonUtils.isNotEmptyArr(sProductNameConfig) ? sProductNameConfig[0].sAssignField : '';
+
+
+ let sWareHouseNamedropDownData = [];
+ let sLocationNamedropDownData = [];
+ let sProductNamedropDownData = [];
+ if (commonUtils.isNotEmptyObject(sWareHouseNameConfig[0]) && sWareHouseNameConfig[0].sDropDownType === 'sql') {
+ sWareHouseNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sWareHouseNameConfig[0], slaveData);
+ }
+ if (commonUtils.isNotEmptyObject(sLocationNameConfig[0]) && sLocationNameConfig[0].sDropDownType === 'sql') {
+ sLocationNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'master', sLocationNameConfig[0], masterData);
+ }
+ if (commonUtils.isNotEmptyObject(sProductNameConfig[0]) && sProductNameConfig[0].sDropDownType === 'sql') {
+ sProductNamedropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', sProductNameConfig[0], slaveData);
+ }
+ let sWareHouseNameDataOne;
+ let sLocationNameDataOne;
+ let sProductNameDataOne;
+ if (!commonUtils.isEmpty(sWareHouseNamedropDownData)) {
+ sWareHouseNameDataOne = sWareHouseNamedropDownData.filter(item => item.sName === codeArr[1]);
+ }
+ if (!commonUtils.isEmpty(sLocationNamedropDownData)) {
+ sLocationNameDataOne = sLocationNamedropDownData.filter(item => item.sName === codeArr[2]);
+ }
+ if (!commonUtils.isEmpty(sProductNamedropDownData)) {
+ sProductNameDataOne = sProductNamedropDownData.filter(item => item.sProductName === codeArr[5]);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ let sWareHouseNameDataDetiale = {};
+ let sLocationNameDataDetiale = {};
+ let sProductNameDataDetiale = {};
+ sWareHouseNameDataDetiale = { ...commonFunc.getAssignFieldValue(sWareHouseNameAssignField, sWareHouseNameDataOne[0], newCopyTo) };
+ sLocationNameDataDetiale = { ...commonFunc.getAssignFieldValue(sLocationNameAssignField, sLocationNameDataOne[0], newCopyTo) };
+ sProductNameDataDetiale = { ...commonFunc.getAssignFieldValue(sProductNameAssignField, sProductNameDataOne[0], newCopyTo) };
+ slaveDataObj = {
+ ...onDataRowAdd,
+ ...sWareHouseNameDataDetiale,
+ ...slaveDataObjAdd,
+ ...sProductNameDataDetiale,
+ ...sLocationNameDataDetiale,
+ };
+ masterdataObj = {
+ ...masterData,
+ ...sLocationNameDataDetiale,
+ ...masterDataObjAdd,
+ ...sWareHouseNameDataDetiale,
+ };
+ } else if (sModelsType === 'purchase/purchaseInstore' || sModelsType === 'scan/productionmaterials') { /* 扫码入库、扫码领料(唯一码) */
+ const { masterConfig } = this.props;
+ /* 取第一条码 */
+ const sDefineNo = codeArr[0];
+ /* 如果条码已存在,提示 */
+ const iIndex = slaveData.findIndex(item => commonUtils.isNotEmptyObject(item.sDefineNo) && item.sDefineNo === sDefineNo);
+ if (iIndex > -1) {
+ Toast.fail('条码已存在!!!', 1);
+ return;
+ }
+ masterdataObj = {
+ ...masterData,
+ };
+ /* 读取扫码配置 */
+ const btnScanConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnScan') > -1);
+ const AssignField = commonUtils.isNotEmptyArr(btnScanConfigs) ? btnScanConfigs[0].sAssignField : '';
+ slaveDataObj = { ...slaveDataObj, ...commonFunc.getAssignFieldValue(AssignField, masterData) }; // 取赋值字段
+ slaveDataObj.sDefineNo = sDefineNo;
+ slaveDataObj.sId = commonUtils.createSid();
+ if (commonUtils.isNotEmptyArr(slaveData)) {
+ const len = slaveData.length;
+ const sDefineNoNew = slaveData[len - 1].sDefineNo;
+ const { handleType } = slaveData[len - 1];
+ /* 若slaveData 最后一条数据没有条形码,则赋值条形码;否则新增一条数据 */
+ if (commonUtils.isEmptyArr(sDefineNoNew)) {
+ slaveDataObj.handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
+ slaveData[len - 1] = slaveDataObj;
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ } else {
+ slaveDataObj.handleType = 'add';
+ slaveData.push(slaveDataObj);
+ }
+ this.handleClick('slave', 'scan'); /* 连续扫码 */
+ } else {
+ Toast.fail('二维码不存在!!!', 1);
+ }
+ if (sModelsType !== 'purchase/purchaseInstore' && sModelsType !== 'scan/productionmaterials') {
+ slaveData.push(slaveDataObj);
+ }
+ this.props.onSaveState({ slaveData, masterData: masterdataObj });
+ });
+ } else if (name === 'BtnCamera') { /* 手机调动摄像头拍照 */
+ this.handleCamera();
+ } else if (name === 'BtnPhoto') { /* 手机相册选择图片 */
+ this.handleGetPhoto();
+ } else if (name === 'BtnCancel') {
+ window.history.back(-1);
+ } else if (name === 'BtnExamine') {
+ this.props.onAudit(1);
+ } else if (name === 'BtnCancelExamine') {
+ /* 销审 */
+ this.props.onAudit(0);
+ }
+ }
+
+ /* 设置textareaValue */
+ handleTextareaChange = (val) => {
+ this.setState({
+ textareaValue: val,
+ });
+ }
+ handleCamera = () => {
+ BarCodeUtil.getImage();
+ }
+ handleGetPhoto = () => {
+ BarCodeUtil.getPhoto();
+ }
+ getViewValue = (showConfig, record) => {
+ let sValue = record === undefined ? undefined : record[showConfig.sName];
+ if (showConfig.sDropDownType === 'const') {
+ let showDropDown = [];
+ if (typeof showConfig.showDropDown === 'object') {
+ // eslint-disable-next-line prefer-destructuring
+ showDropDown = showConfig.showDropDown;
+ } else {
+ showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(showConfig.showDropDown));
+ }
+ let iIndex = commonUtils.isEmpty(record[showConfig.sName]) ? -1 : showDropDown.findIndex(item => item.sId === record[showConfig.sName].toString());
+ if (iIndex === -1 && record[showConfig.sName] === '') {
+ iIndex = showDropDown.findIndex(item => item.sId === '');
+ }
+ sValue = iIndex > -1 ? showDropDown[iIndex].value : record[showConfig.sName];
+ }
+ return sValue;
+ };
+
+ render() {
+ const {
+ slaveConfig, slaveData: slaveDataOld, sModelsId, enabled, app, sUseInfo, onReturnForm, masterData, masterConfig, userEntrustData,
+ } = this.props;
+ onReturnForm(this.props.form);
+ const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+ const f1 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[0];
+ const f2 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[1];
+ const f3 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[2];
+ const f4 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[3];
+ const f5 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[4];
+ const f6 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[5];
+ const f7 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[6];
+ const f8 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[7];
+ const f9 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[8];
+ const f10 = commonUtils.isEmptyObject(masterConfig) ? {} : masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[9];
+ const sFilePathConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sName === 'sFilePath') : [];
+ const memoConfig = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sName === 'sCommentMemo') : [];
+ const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */
+ const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */
+ const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } };
+ const sFileNameText = commonUtils.isNotEmptyObject(masterData) ? masterData.sFileName : '';
+ const sFilePath = commonUtils.isNotEmptyObject(masterData) ? masterData.sFilePath : '';
+ const sFilePathText = commonUtils.isNotEmptyObject(sFilePath) ? sFilePath.replace('{ipAddress}', location.host) : '';
+ // const sFilePathText = commonUtils.isNotEmptyObject(sFilePath) ? sFilePath.replace('{ipAddress}', '113.90.147.40:7070') : '';
+ const menu = (
+
+ );
+ const style = {
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+ const btnStyle = {
+ fontSize: '15px',
+ backgroundColor: '#f0f0f0',
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+ const BtnStyle = {
+ type: 'default',
+ color: 'red',
+ border: 'none',
+ backgroundColor: '#f0f0f0',
+ fontSize: '15px',
+ };
+ const divStyle = {
+ display: 'flex',
+ justifyContent: 'space-between',
+ background: ' #f0f0f0',
+ };
+ const row = (rowData, sectionID, rowID) => {
+ return (
+
+
+ {/* eslint-disable-next-line react/jsx-no-duplicate-props */}
+ {
+ slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenAdd' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenScan' && item.bVisible).length ?
+
+
+ : ''
+ }
+ {
+ slaveConfig && slaveConfig.gdsconfigformslave.filter(item => item.sControlName === 'BtnChildrenDel' && item.bVisible).length ?
+
+
+ : ''
+ }
+
+ {commonUtils.isEmptyObject(slaveConfig) ? '' : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const showTypeProps = {
+ app,
+ masterData,
+ record: rowData,
+ sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */
+ name: 'slave',
+ form: this.props.form,
+ formId: sModelsId,
+ getSqlDropDownData: this.props.getSqlDropDownData,
+ getSqlCondition: this.props.getSqlCondition,
+ handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord,
+ getFloatNum: this.props.getFloatNum,
+ getDateFormat: this.props.getDateFormat,
+ onChange: this.props.onDataChange,
+ showConfig: child,
+ formItemLayout: sMemo ? formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: rowData[child.sName],
+ bTable: true,
+ onFilterDropDownData: this.props.onFilterDropDownData,
+ onSaveState: this.props.onSaveState,
+ };
+ return (
+
+ );
+ })}
+ {slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName.includes('spicture')).map((item) => {
+ if (item.sName.includes('spicture') && commonUtils.isNotEmptyObject(rowData.spicture)) {
+ const { token } = app;
+ let imgBox = '';
+ const picAddr = commonUtils.isNotEmptyObject(rowData.spicture) ? rowData.spicture.split(',') : '';
+ const previewImageArr = [];
+ if (commonUtils.isNotEmptyArr(picAddr)) {
+ picAddr.forEach((item) => {
+ const dataPreviewUrl = `${commonConfig.server_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */
+ previewImageArr.push(dataPreviewUrl);
+ });
+ const dataUrl = `${commonConfig.server_host}file/download?savePathStr=${picAddr[0]}&width=60&&height=60&sModelsId=100&token=${token}`; /* 缩略图 */
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ imgBox =

0} onClick={e => preView(previewImageArr, e)} />
;
+ }
+ return imgBox;
+ } else {
+ return '';
+ }
+ })}
+
+ );
+ };
+ return (
+
+ );
+ }
+}
+
+const CommobileExamineComponent = createForm()(CommobileExamine);
+
+export default CommobileBase(CommobileBillEvent(CommobileExamineComponent));
diff --git a/src/mobile/common/ExamineMobile1.js b/src/mobile/common/ExamineMobile1.js
new file mode 100644
index 0000000..c049dc4
--- /dev/null
+++ b/src/mobile/common/ExamineMobile1.js
@@ -0,0 +1,129 @@
+import React from 'react';
+import { Button, Card, TextareaItem, WhiteSpace, WingBlank, ListView } from 'antd-mobile';
+// import { createForm } from 'rc-form';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import CommobileBase from './CommobileBase';
+import CommobileBillEvent from './CommobileBillEvent';
+import * as commonUtils from '../../utils/utils';
+import commonConfig from '../../utils/config';
+import CommobileViewMaster from './CommobileViewMaster';
+
+const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+});
+class ExamineMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ };
+ }
+ render() {
+ const { slaveConfig, slaveData: slaveDataOld, onReturnForm } = this.props;
+ onReturnForm(this.props.form);
+ console.log('render', slaveDataOld, slaveConfig, this.props);
+ const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+ const f1 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[0];
+ const f2 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[1];
+ const f3 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[2];
+ const f4 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[3];
+ const separator = (sectionID, rowID) => (
+
+ );
+ const row = (rowData, sectionID, rowID) => {
+ const obj = rowData;
+ return (
+
+
+ {obj[f1.sName]}
+
+ {obj[f2.sName]}
+
+
+ {/*

*/}
+
+
{obj[f3.sName]}
+
{obj[f4.sName]}
+
+
+
+ );
+ };
+ return (
+
+
+
+ 4月14日 16:59}
+ />
+
+
+ 单据【XDD200300010】单据审核请求
+ 单据日期:2020-03-02
+ 单据号:XDD200300010
+ 审核内容:订单2金额大于1000
+ 备注:请领导尽快批复
+
+
+
+
+
+
+
+ {/* use `am-button-borderfix`. because Multiple buttons inline arranged, the last one border-right may not display */}
+
+
+
+
+
+
+
(
+
+ {this.props.isLoading ? 'Loading...' : 'Loaded'}
+
)}
+ renderRow={row}
+ renderSeparator={separator}
+ style={{
+ height: this.state.height,
+ overflow: 'auto',
+ }}
+ pageSize={commonConfig.pageSize}
+ onScroll={() => {}}
+ scrollRenderAheadDistance={500}
+ onEndReached={this.onEndReached}
+ onEndReachedThreshold={10}
+ />
+
+
+ );
+ }
+}
+export default CommobileBase(CommobileBillEvent(ExamineMobile));
diff --git a/src/mobile/common/MessageMobile.js b/src/mobile/common/MessageMobile.js
new file mode 100644
index 0000000..096116e
--- /dev/null
+++ b/src/mobile/common/MessageMobile.js
@@ -0,0 +1,228 @@
+import React from 'react';
+// eslint-disable-next-line no-unused-vars
+import { Tabs, Badge, ListView, SearchBar } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+// import ExamineMobile from './ExamineMobile';
+import commonConfig from '../../utils/config';
+import * as commonUtils from '../../utils/utils';
+import CommobileBase from '../../mobile/common/CommobileBase';
+import CommobileListEvent from './CommobileListEvent';
+import styles from '../../routes/mobile/IndexMobile.less';
+import NewsMobile from './NewsMobile';
+// eslint-disable-next-line no-unused-vars
+import ExamineMobile from './ExamineMobile';
+// import CommobileBill from './CommobileBill';
+
+
+const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+});
+// eslint-disable-next-line no-unused-vars
+const tabs = [
+ { title: 消息 },
+ { title: 待处理 },
+ { title: 已处理 },
+ { title: 我的申请 },
+];
+class MessageMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ height: (document.documentElement.clientHeight * 3) / 4,
+ tabPage: 0,
+ };
+ }
+
+ componentWillMount() {
+ /* 获取配置 */
+ this.props.onSaveState({ searchSolution: [] });
+ }
+
+ onEndReached = async () => {
+ if ((this.props.slavePagination.current + 1) <= Math.ceil(this.props.slavePagination.total / commonConfig.pageSize)) {
+ const addState = await this.props.onGetData(this.props.slaveConfig, [], this.props.slavePagination.current + 1, true);
+ addState.slaveData = this.props.slaveData.concat(addState.slaveData);
+ this.props.onSaveState({ ...addState });
+ }
+ }
+ onClose = key => () => {
+ this.setState({
+ [key]: false,
+ });
+ }
+ /* 页签切换 */
+ // eslint-disable-next-line no-unused-vars
+ handleTabClick =(index, tab) => {
+ this.setState({ tabPage: index });
+ }
+
+ render() {
+ const { slaveConfig, slaveData: slaveDataOld } = this.props;
+ const { tabPage } = this.state;
+ const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+ const f1 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[0];
+ const f2 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[1];
+ const f3 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[2];
+ const f4 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[3];
+ const separator = (sectionID, rowID) => (
+
+ );
+ const row = (rowData, sectionID, rowID) => {
+ const obj = rowData;
+ return (
+
+
+ {obj[f1.sName]}
+
+ {obj[f2.sName]}
+
+
+ {/*

*/}
+
+
{obj[f3.sName]}
+
{obj[f4.sName]}
+
+
+
+ );
+ };
+
+ /* 待处理 */
+ const unNewsProps = {
+ app: {
+ ...this.props.app,
+ },
+ sModelsId: '192116812112116672655865440',
+ dispatch: this.props.dispatch,
+ };
+
+ /* 已通过 */
+ const doneNewsProps = {
+ app: {
+ ...this.props.app,
+ },
+ sModelsId: '192116812112116672668106810',
+ dispatch: this.props.dispatch,
+ };
+
+ /* 我的申请 */
+ const sendNewsProps = {
+ app: {
+ ...this.props.app,
+ },
+ sModelsId: '192116812112116672733801250',
+ dispatch: this.props.dispatch,
+ };
+
+ // eslint-disable-next-line no-unused-vars
+ const examineProps = {
+ app: {
+ ...this.props.app,
+ },
+ sModelsId: '192116812112116672690047620',
+ sModelType: 'examine',
+ dispatch: this.props.dispatch,
+ };
+
+ return (
+
+
this.handleTabClick(index, tab)}
+ onTabClick={(tab, index) => { console.log('onTabClick', index, tab); }}
+ >
+
+ {
+ tabPage === 0 ?
+
+
+
(
+
+ {this.props.isLoading ? 'Loading...' : 'Loaded'}
+
)}
+ renderRow={row}
+ renderSeparator={separator}
+ style={{
+ height: this.state.height,
+ overflow: 'auto',
+ }}
+ pageSize={commonConfig.pageSize}
+ onScroll={() => {}}
+ scrollRenderAheadDistance={500}
+ onEndReached={this.onEndReached}
+ onEndReachedThreshold={10}
+ />
+ : '' }
+ {tabPage === 1 ?
: ''}
+ {tabPage === 2 ?
: ''}
+ {tabPage === 3 ?
: ''}
+
+ {/* */}
+ {/*
*/}
+ {/*
( */}
+ {/* */}
+ {/* {this.props.isLoading ? 'Loading...' : 'Loaded'} */}
+ {/*
)} */}
+ {/* renderRow={row} */}
+ {/* renderSeparator={separator} */}
+ {/* style={{ */}
+ {/* height: this.state.height, */}
+ {/* overflow: 'auto', */}
+ {/* }} */}
+ {/* pageSize={commonConfig.pageSize} */}
+ {/* onScroll={() => {}} */}
+ {/* scrollRenderAheadDistance={500} */}
+ {/* onEndReached={this.onEndReached} */}
+ {/* onEndReachedThreshold={10} */}
+ {/* /> */}
+ {/* */}
+
+ {/*
*/}
+ {/*
( */}
+ {/* */}
+ {/* {this.props.isLoading ? 'Loading...' : 'Loaded'} */}
+ {/*
)} */}
+ {/* renderRow={row} */}
+ {/* renderSeparator={separator} */}
+ {/* style={{ */}
+ {/* height: this.state.height, */}
+ {/* overflow: 'auto', */}
+ {/* }} */}
+ {/* pageSize={commonConfig.pageSize} */}
+ {/* onScroll={() => {}} */}
+ {/* scrollRenderAheadDistance={500} */}
+ {/* onEndReached={this.onEndReached} */}
+ {/* onEndReachedThreshold={10} */}
+ {/* /> */}
+ {/* */}
+
+
+ );
+ }
+}
+export default CommobileBase(CommobileListEvent(MessageMobile));
+
diff --git a/src/mobile/common/MyselfMobile.js b/src/mobile/common/MyselfMobile.js
new file mode 100644
index 0000000..fae658a
--- /dev/null
+++ b/src/mobile/common/MyselfMobile.js
@@ -0,0 +1,118 @@
+import React from 'react';
+import { Button, List } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+// import ExamineMobile from './ExamineMobile';
+import commonConfig from '../../utils/config';
+import * as commonUtils from '../../utils/utils';
+import CommobileBase from '../../mobile/common/CommobileBase';
+import styles from '../mobile.less';
+import setting from '../../assets/mobile/setting.png';
+import mailList from '../../assets/mobile/mailList.png';
+import recommendation from '../../assets/mobile/recommendation.png';
+import CommobileListEvent from './CommobileListEvent';
+
+// eslint-disable-next-line prefer-destructuring
+const Item = List.Item;
+
+class myselfMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ sId: props.app.userinfo.sId,
+ sUserName: props.app.userinfo.sUserName,
+ sComponanyName: props.app.systemData.findIndex(item => item.sName === 'CbxCompanyName') > -1 ? props.app.systemData.filter(item => item.sName === 'CbxCompanyName')[0].sValue : '',
+ };
+ }
+ btnOnclick = (value) => {
+ const { dispatch } = this.props;
+ const { sId } = this.state;
+ if (value === 'loginOut') {
+ const url = `${commonConfig.server_host}logout`;
+ dispatch({ type: 'app/loginOut', payload: { url, sId, loginOutType: 'loginMobileOut' } });
+ } else if (value === 'about') {
+ window.open('about.html');
+ } else {
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ url: `/indexMobile/${value}`,
+ },
+ });
+ }
+ }
+
+
+ render() {
+ const { sUserName, sComponanyName } = this.state;
+ const { slaveData } = this.props;
+
+ let sDepartName = '';
+ if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyObject(sUserName)) {
+ const findIndex = slaveData.findIndex(item => item.sEmployeeName === 'sUserName');
+ if (findIndex > -1) {
+ // eslint-disable-next-line prefer-destructuring
+ sDepartName = slaveData[findIndex].sDepartName;
+ } else {
+ sDepartName = '暂无';
+ }
+ }
+
+ const sUserNameFirst = sUserName.charAt(0);
+ return (
+
+
+
{sComponanyName}
+
+
{sUserNameFirst}
+
+
{sUserName}
+
{sDepartName}
+
+
+
+
+ -
+ 企业通讯录
+
+ -
+ 修改密码
+
+ - {}}
+ arrow="horizontal"
+ style={{ margin: '10px 0' }}
+ >
+ 推荐给好友
+
+ -
+ 关于软件
+
+
+
+
+ );
+ }
+}
+
+export default CommobileBase(CommobileListEvent(myselfMobile));
diff --git a/src/mobile/common/NewsMobile.js b/src/mobile/common/NewsMobile.js
new file mode 100644
index 0000000..a9c1575
--- /dev/null
+++ b/src/mobile/common/NewsMobile.js
@@ -0,0 +1,173 @@
+import React from 'react';
+// eslint-disable-next-line no-unused-vars
+import { Tabs, Badge, ListView, SearchBar } from 'antd-mobile-v2';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+// import ExamineMobile from './ExamineMobile';
+import commonConfig from '../../utils/config';
+import * as commonUtils from '../../utils/utils';
+import CommobileBase from '../../mobile/common/CommobileBase';
+import CommobileListEvent from './CommobileListEvent';
+
+
+const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+});
+// eslint-disable-next-line no-unused-vars
+const tabs = [
+ { title: 消息 },
+ { title: 审批消息 },
+];
+class NewsMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ height: (document.documentElement.clientHeight * 3) / 4,
+ };
+ }
+
+ componentWillMount() {
+ /* 获取配置 */
+ this.props.onSaveState({ searchSolution: [] });
+ }
+
+ onEndReached = async () => {
+ if ((this.props.slavePagination.current + 1) <= Math.ceil(this.props.slavePagination.total / commonConfig.pageSize)) {
+ const addState = await this.props.onGetData(this.props.slaveConfig, [], this.props.slavePagination.current + 1, true);
+ addState.slaveData = this.props.slaveData.concat(addState.slaveData);
+ this.props.onSaveState({ ...addState });
+ }
+ }
+ onClose = key => () => {
+ this.setState({
+ [key]: false,
+ });
+ }
+ /* 列表弹出详情 */
+ handleDoubleClick =(rowData) => {
+ this.props.onDoubleClick(rowData);
+ }
+
+ render() {
+ const { slaveConfig, slaveData: slaveDataOld } = this.props;
+ const slaveDataOld2 = slaveDataOld === undefined ? [] : slaveDataOld;
+ const slaveData = dataSource.cloneWithRows(slaveDataOld2);
+ const f1 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[0];
+ const f2 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[1];
+ const f3 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[2];
+ const f4 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible)[3];
+ const separator = (sectionID, rowID) => (
+
+ );
+ const row = (rowData, sectionID, rowID) => {
+ const obj = rowData;
+ return (
+ this.handleDoubleClick(rowData)}>
+
+ {obj[f1.sName]}
+
+ {obj[f2.sName]}
+
+
+ {/*

*/}
+
+
{obj[f3.sName]}
+
{obj[f4.sName]}
+
+
+
+ );
+ };
+ return (
+
+ {/*
{ console.log('onChange', index, tab); }} */}
+ {/* onTabClick={(tab, index) => { console.log('onTabClick', index, tab); }} */}
+ { /* > */ }
+ {/* */ }
+ {/*
*/}
+ {/*
( */}
+ {/* */}
+ {/* {this.props.isLoading ? 'Loading...' : 'Loaded'} */}
+ {/*
)} */}
+ {/* renderRow={row} */}
+ {/* renderSeparator={separator} */}
+ {/* style={{ */}
+ {/* height: this.state.height, */}
+ {/* overflow: 'auto', */}
+ {/* }} */}
+ {/* pageSize={commonConfig.pageSize} */}
+ {/* onScroll={() => {}} */}
+ {/* scrollRenderAheadDistance={500} */}
+ {/* onEndReached={this.onEndReached} */}
+ {/* onEndReachedThreshold={10} */}
+ {/* /> */}
+ {/* */}
+ {/* */}
+ {/*
*/}
+ {/*
( */}
+ {/* */}
+ {/* {this.props.isLoading ? 'Loading...' : 'Loaded'} */}
+ {/*
)} */}
+ {/* renderRow={row} */}
+ {/* renderSeparator={separator} */}
+ {/* style={{ */}
+ {/* height: this.state.height, */}
+ {/* overflow: 'auto', */}
+ {/* }} */}
+ {/* pageSize={commonConfig.pageSize} */}
+ {/* onScroll={() => {}} */}
+ {/* scrollRenderAheadDistance={500} */}
+ {/* onEndReached={this.onEndReached} */}
+ {/* onEndReachedThreshold={10} */}
+ {/* /> */}
+ {/* */}
+ {/* */}
+
+
(
+
+ {this.props.isLoading ? 'Loading...' : 'Loaded'}
+
)}
+ renderRow={row}
+ renderSeparator={separator}
+ style={{
+ height: this.state.height,
+ overflow: 'auto',
+ }}
+ pageSize={commonConfig.pageSize}
+ onScroll={() => {}}
+ scrollRenderAheadDistance={500}
+ onEndReached={this.onEndReached}
+ onEndReachedThreshold={10}
+ />
+
+
+
+ );
+ }
+}
+export default CommobileBase(CommobileListEvent(NewsMobile));
+
diff --git a/src/mobile/common/ProcessReportMobile.js b/src/mobile/common/ProcessReportMobile.js
new file mode 100644
index 0000000..f5ae2b6
--- /dev/null
+++ b/src/mobile/common/ProcessReportMobile.js
@@ -0,0 +1,553 @@
+import React from 'react';
+import { Flex, Button, ListView, Toast } from 'antd-mobile';
+import { createForm } from 'rc-form';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import CommobileBase from './CommobileBase';
+import CommobileBillEvent from './CommobileBillEvent';
+import CommobileViewSlave from './CommobileViewSlave';
+import commonConfig from '../../utils/config';
+import * as commonUtils from '../../utils/utils';
+import ShowType from './CommobileComponent';
+import * as commonServices from '../../services/services';
+import * as commonFunc from '../../components/Common/commonFunc';
+import CommobileToolBar from './CommobileToolBar';
+import * as commonBusiness from '../../components/Common/commonBusiness';
+import styles from '../mobile.less';
+import add from '../../assets/mobile/add-select.svg';
+import scan from '../../assets/mobile/scanning.svg';
+import close from '../../assets/mobile/close.svg';
+// eslint-disable-next-line import/first
+import BarCodeUtil from './BarCodeUtil';
+
+// const { Item } = List;
+// const PlaceHolder = ({ className = '', ...restProps }) => (
+// 产品名称:测试骑马订样本
+// );
+
+const dataSource = new ListView.DataSource({
+ rowHasChanged: (row1, row2) => row2,
+});
+
+class ProcessReportMobileComponent extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ };
+ }
+ async componentWillMount() {
+ const { token, sModelsId } = this.props;
+ const dataUrl = `${commonConfig.server_host}syssearch/getSyssearchData/${sModelsId}?sModelsId=${sModelsId}`; /* 获取快捷查找方案 */
+ const dataReturn = (await commonServices.getService(token, dataUrl)).data;
+ if (dataReturn.code === 1) {
+ const returnData = dataReturn.dataset.rows;
+ const addState = {};
+ if (commonUtils.isNotEmptyArr(returnData)) {
+ addState.searchOperation = [];
+ returnData.forEach((item) => {
+ addState.searchOperation.push({ text: item.sName });
+ });
+ let iIndex = returnData.findIndex(item => item.bDefault);
+ iIndex = iIndex > -1 ? iIndex : commonUtils.isEmptyArr(returnData) ? -1 : 0;
+ addState.label = returnData[iIndex].sName;
+ }
+ this.props.onSaveState({ searchSolution: returnData, ...addState });
+ } else {
+ this.props.getServiceError(dataReturn);
+ }
+ }
+
+ componentWillReceiveProps(nextProps) {
+ const { formData, employeeConfig, currentId } = nextProps;
+ if (commonUtils.isEmptyObject(employeeConfig) && formData.length > 0) {
+ const sId = currentId !== undefined ? currentId : '';
+ const employeeConfig = formData.filter(item => item.sTbName.toUpperCase() === 'mftproductionreportemployee'.toUpperCase())[0];
+ const addState = {};
+ if (sId === '') {
+ if (!commonUtils.isNotEmptyObject(nextProps.copyTo)) {
+ addState.employeeData = [];
+ }
+ } else {
+ this.props.handleGetDataSet({
+ name: 'employee', configData: employeeConfig, condition: { sSqlCondition: { sParentId: sId } },
+ });
+ }
+ this.props.onSaveState({
+ ...addState,
+ pageLoading: false,
+ employeeConfig,
+ });
+ }
+ }
+
+ onChange = async (event) => {
+ const file = event.target.files[0];
+ if (file) {
+ this.parseQrCode(file)
+ .then((data) => {
+ Toast.info(data);
+ })
+ .catch((error) => {
+ Toast.fail(error.message);
+ });
+ }
+ // this.parseLineCode(file);
+ }
+
+ getViewValue = (showConfig, record) => {
+ let sValue = record[showConfig.sName];
+ if (showConfig.sDropDownType === 'const') {
+ let showDropDown = [];
+ if (typeof showConfig.showDropDown === 'object') {
+ // eslint-disable-next-line prefer-destructuring
+ showDropDown = showConfig.showDropDown;
+ } else {
+ showDropDown = commonUtils.objectToArr(commonUtils.convertStrToObj(showConfig.showDropDown));
+ }
+ let iIndex = commonUtils.isEmpty(record[showConfig.sName]) ? -1 : showDropDown.findIndex(item => item.sId === record[showConfig.sName].toString());
+ if (iIndex === -1 && record[showConfig.sName] === '') {
+ iIndex = showDropDown.findIndex(item => item.sId === '');
+ }
+ sValue = iIndex > -1 ? showDropDown[iIndex].value : record[showConfig.sName];
+ }
+ return sValue;
+ };
+
+ handleClick = async (name, type, sId) => {
+ if (name === 'BtnSave') {
+ this.props.onSubmit();
+ } else if (type === 'add') {
+ const { [`${name}Data`]: tableData, slaveData } = this.props;
+ const tableDataRow = this.props.onDataRowAdd(name, true);
+ if (name === 'employee') {
+ tableDataRow.sSlaveId = slaveData[0].sId;
+ }
+ tableData.push(tableDataRow);
+ this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] });
+ } else if (type === 'del') {
+ const { app, [`${name}Data`]: tableData } = this.props;
+ let { [`${name}DelData`]: tableDelData } = this.props;
+ tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData;
+ if (sId !== '') {
+ const tableDataIndex = tableData.findIndex(item => item.sId === sId);
+ if (tableDataIndex > -1) {
+ const slaveDataFilter = tableData[tableDataIndex];
+ tableData.splice(tableDataIndex, 1);
+ slaveDataFilter.handleType = 'del';
+ tableDelData.push(slaveDataFilter);
+ }
+ this.props.onSaveState({
+ [`${name}Data`]: tableData,
+ [`${name}DelData`]: tableDelData,
+ [`${name}SelectedRowKeys`]: [],
+ });
+ } else {
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'pleaseChooseDelData')); // 请选择删除数据
+ }
+ } else if (type === 'scan') {
+ BarCodeUtil.startScan(async (type, code) => {
+ const {
+ employeeConfig, sModelsId, masterData, slaveData, employeeData,
+ } = this.props;
+ const employeeDataConfig = commonUtils.isNotEmptyObject(employeeConfig) ? employeeConfig.gdsconfigformslave : '';
+ const employeeSlaveConfig = employeeDataConfig.filter(item => item.sControlName === 'sEmployeeId');
+ let employeeDataDetiale;
+ employeeDataDetiale = this.props.onDataRowAdd(name, true);
+ const employeeAssignField = commonUtils.isNotEmptyArr(employeeSlaveConfig) ? employeeSlaveConfig[0].sAssignField : '';
+ let dropDownData = [];
+ if (employeeSlaveConfig[0].sDropDownType === 'sql') {
+ dropDownData = await this.props.getSqlDropDownData(sModelsId, 'employee', employeeSlaveConfig[0], employeeData);
+ }
+ let employeeDataOne;
+ if (!commonUtils.isEmpty(dropDownData)) {
+ employeeDataOne = dropDownData.filter(item => item.sId === code);
+ }
+ const newCopyTo = {};
+ newCopyTo.master = masterData;
+ newCopyTo.slave = commonUtils.isEmpty(slaveData) ? [] : slaveData[0];
+ employeeDataDetiale = { ...employeeDataDetiale, ...commonFunc.getAssignFieldValue(employeeAssignField, employeeDataOne[0], newCopyTo) };
+ employeeData.push(employeeDataDetiale);
+ this.props.onSaveState({ employeeData });
+ });
+ // if (this.textInput) {
+ // this.textInput.click();
+ // }
+ } else if (name === 'BtnCancel') {
+ window.history.back(-1);
+ }
+ }
+
+ handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData) => {
+ const {
+ token, sModelsId, masterData, slaveData, employeeData: employeeDataOld, employeeDelData: employeeDelDataOld,
+ } = this.props;
+ if (name === 'slave') {
+ if (sFieldName === 'sTeamName' || sFieldName === 'sTeamId') { /* 主表选择的班组,循环复制到从表班组 */
+ const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true);
+ const iSlaveIndex = slaveData.findIndex(item => item.sId === tableDataRow.sId);/* 拿到主表下拉选中的班组的名称 */
+ slaveData[iSlaveIndex] = tableDataRow;
+ const employeeDelData = commonUtils.isEmptyArr(employeeDelDataOld) ? [] : employeeDelDataOld;
+ const employeeData = [];
+ const iIndex = dropDownData.findIndex(item => item.sId === changeValue.sTeamId);/* 拿到主表下拉选中的班组的名称 */
+ if (iIndex > -1) {
+ if (commonUtils.isNotEmptyArr(slaveData) && slaveData.length > 0) {
+ const url = `${commonConfig.server_host}eleteamemployee/getEleteamemployee?sModelsId=${sModelsId}&sTeamId=${tableDataRow.sTeamId}&sSlaveId=${tableDataRow.sSlaveId}&sParentId=${tableDataRow.sParentId}`;
+ const dataReturn = (await commonServices.getService(token, url)).data;
+ if (dataReturn.code === 1) {
+ const returnData = dataReturn.dataset.rows;
+ if (commonUtils.isNotEmptyObject(returnData) && returnData.length > 0) {
+ employeeDataOld.forEach((item) => {
+ item.handleType = 'del';
+ employeeDelData.push(item);
+ });
+ if (commonUtils.isEmptyArr(employeeData)) { /* 当班组人员无数据时 */
+ returnData.forEach((child) => {
+ employeeData.push({
+ sId: commonUtils.createSid(),
+ sParentId: tableDataRow.sParentId,
+ sSlaveId: tableDataRow.sId,
+ sEmployeeId: child.sEmployeeId,
+ sEmployeeName: child.sEmployeeId,
+ dProportion: child.dProportion !== 0 ? child.dProportion : commonUtils.convertFixNum(1 / returnData.length, 6),
+ handleType: 'add',
+ });
+ });
+ }
+ }
+ const dWageMoneyTotal = commonUtils.isNotEmptyNumber(tableDataRow.dWageMoney) ? tableDataRow.dWageMoney : 0;
+ if (commonUtils.isNotEmptyNumber(dWageMoneyTotal)) {
+ let dProportionTotal = 0;
+ employeeData.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) {
+ item.dProportion = parseFloat(item.dProportion);
+ dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6);
+ dProportionTotal = commonUtils.convertFixNum(dProportionTotal, 6);
+ }
+ });
+ employeeData.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion)) {
+ const index1 = employeeData.findIndex(item1 => item1.sId === item.sId);
+ employeeData[index1] = {
+ ...item,
+ dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * dWageMoneyTotal, 6),
+ handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType,
+ };
+ }
+ });
+ }
+ }
+ this.props.onSaveState({
+ slaveData, employeeData, employeeDelData,
+ });
+ }
+ }
+ } else if (sFieldName === 'dProcessQty' || sFieldName === 'sConversionFormulaId' || sFieldName === 'sConversionFormulaName') {
+ const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true);
+ // eslint-disable-next-line prefer-destructuring
+ const sOutputValueFormulaId = tableDataRow.sOutputValueFormulaId; /* 产值公式 */
+ if (sOutputValueFormulaId) {
+ tableDataRow.dOutputValueQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sOutputValueFormulaId,
+ });
+ }
+ // eslint-disable-next-line prefer-destructuring
+ const sConversionFormulaId = tableDataRow.sConversionFormulaId;
+ if (sConversionFormulaId) {
+ tableDataRow.dConversionQty = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: sConversionFormulaId,
+ });
+ }
+ const iSlaveIndex = slaveData.findIndex(item => item.sId === tableDataRow.sId);/* 拿到主表下拉选中的班组的名称 */
+ if (iSlaveIndex > -1) {
+ slaveData[iSlaveIndex] = tableDataRow;
+ this.props.onSaveState({
+ slaveData, enabled: true,
+ });
+ }
+ } else if (sFieldName === 'dProcessQty' || sFieldName === 'sWageId' || sFieldName === 'sWageName') {
+ const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true);
+ const iSlaveIndex = slaveData.findIndex(item => item.sId === tableDataRow.sId);/* 拿到主表下拉选中的班组的名称 */
+ slaveData[iSlaveIndex] = tableDataRow;
+ const employeeDelData = commonUtils.isEmptyArr(employeeDelDataOld) ? [] : employeeDelDataOld;
+ slaveData[iSlaveIndex].dWageMoney = await commonBusiness.getFormulaValue({
+ token, sModelsId, masterData, tableDataRow, sComputeId: tableDataRow.sWageId,
+ });
+ const dWageMoneyTotal = slaveData[iSlaveIndex].dWageMoney;
+ const employeeData = employeeDataOld;
+ if (commonUtils.isNotEmptyNumber(dWageMoneyTotal)) {
+ let dProportionTotal = 0;
+ employeeDataOld.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) {
+ item.dProportion = parseFloat(item.dProportion);
+ dProportionTotal += commonUtils.convertFixNum(item.dProportion, 6);
+ dProportionTotal = commonUtils.convertFixNum(dProportionTotal, 6);
+ }
+ });
+ employeeDataOld.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion)) {
+ const index1 = employeeData.findIndex(item1 => item1.sId === item.sId);
+ employeeData[index1] = { ...item, dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * dWageMoneyTotal, 6), handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType };
+ }
+ });
+ }
+ /* 选择计件方案后 算总金额 */
+ const dWageMoney = commonUtils.isNotEmptyNumber(dWageMoneyTotal) ? commonUtils.convertFixNum(dWageMoneyTotal, 6) : 0;
+ const dTimeMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTimeMoney) ? commonUtils.convertFixNum(tableDataRow.dTimeMoney, 6) : 0;
+ const dLossMoney = commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney) ? commonUtils.convertFixNum(tableDataRow.dLossMoney, 6) : 0;
+ tableDataRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6);
+ this.props.onSaveState({
+ slaveData, employeeData, employeeDelData, enabled: true,
+ });
+ } else if (sFieldName === 'dTimeMoney' || sFieldName === 'dLossMoney') {
+ const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true);
+ const iSlaveIndex = slaveData.findIndex(item => item.sId === tableDataRow.sId);/* 拿到主表下拉选中的班组的名称 */
+ slaveData[iSlaveIndex] = tableDataRow;
+ /* 总金额=计件工资+工时工资-损失金额 */
+ const dWageMoney = commonUtils.isNotEmptyNumber(tableDataRow.dWageMoney) ? commonUtils.convertFixNum(tableDataRow.dWageMoney, 6) : 0;
+ const dTimeMoney = commonUtils.isNotEmptyNumber(tableDataRow.dTimeMoney) ? commonUtils.convertFixNum(tableDataRow.dTimeMoney, 6) : 0;
+ const dLossMoney = commonUtils.isNotEmptyNumber(tableDataRow.dLossMoney) ? commonUtils.convertFixNum(tableDataRow.dLossMoney, 6) : 0;
+ tableDataRow.dAllMoney = commonUtils.convertFixNum((dWageMoney + dTimeMoney) - dLossMoney, 6);
+ this.props.onSaveState({
+ slaveData, enabled: true,
+ });
+ } else {
+ this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData);
+ }
+ } else if (name === 'employee' && sFieldName === 'dProportion') {
+ const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true);
+ const iEmployeeIndex = employeeDataOld.findIndex(item => item.sId === tableDataRow.sId);/* 拿到主表下拉选中的班组的名称 */
+ employeeDataOld[iEmployeeIndex] = tableDataRow;
+ const iSlaveIndex = slaveData.findIndex(item => item.sId === tableDataRow.sSlaveId);/* 拿到主表下拉选中的班组的名称 */
+ const dWageMoneyTotal = slaveData[iSlaveIndex].dWageMoney;
+ const employeeData = employeeDataOld;
+ if (commonUtils.isNotEmptyNumber(dWageMoneyTotal)) {
+ let dProportionTotal = 0;
+ employeeDataOld.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion) && item.dProportion !== 0) {
+ // item.dProportion = parseFloat(item.dProportion);
+ dProportionTotal += commonUtils.convertFixNum(parseFloat(item.dProportion), 6);
+ dProportionTotal = commonUtils.convertFixNum(dProportionTotal, 6);
+ }
+ });
+ employeeDataOld.forEach((item) => {
+ if (commonUtils.isNotEmptyNumber(item.dProportion)) {
+ const index1 = employeeData.findIndex(item1 => item1.sId === item.sId);
+ employeeData[index1] = { ...item, dWageMoney: commonUtils.convertFixNum((item.dProportion / dProportionTotal) * dWageMoneyTotal, 6), handleType: commonUtils.isEmpty(item.handleType) ? 'update' : item.handleType };
+ }
+ });
+ }
+ this.props.onSaveState({
+ employeeData, enabled: true,
+ });
+ } else {
+ this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData);
+ }
+ }
+ // setTextInputRef = (element) => {
+ // this.textInput = element;
+ // };
+
+ render() {
+ const {
+ employeeConfig, employeeData: employeeDataOld, sModelsId, enabled, app, sUseInfo, onReturnForm, slaveData, slaveConfig,
+ } = this.props;
+ const slaveDatas = commonUtils.isEmptyArr(slaveData) ? {} : slaveData[0];
+ onReturnForm(this.props.form);
+ const employeeDataOld2 = employeeDataOld === undefined ? [] : employeeDataOld;
+ const employeeData = dataSource.cloneWithRows(employeeDataOld2);
+
+ const f1 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[0];
+ const f2 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[1];
+ const f3 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[2];
+ const f4 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[3];
+ const f5 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[4];
+ const f6 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[5];
+ const f7 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[6];
+ const f8 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[7];
+ const f9 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[8];
+ const f10 = commonUtils.isEmptyObject(slaveConfig) ? {} : slaveConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '' && item.iTag === 1)[9];
+
+ const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 18 } };
+ const style = {
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+ const btnStyle = {
+ fontSize: '15px',
+ backgroundColor: '#f0f0f0',
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+ };
+ const BtnStyle = {
+ type: 'default',
+ color: 'red',
+ border: 'none',
+ backgroundColor: '#f0f0f0',
+ fontSize: '15px',
+ };
+ const divStyle = {
+ display: 'flex',
+ justifyContent: 'space-between',
+ background: ' #f0f0f0',
+ };
+ const paddingFive = {
+ padding: '5px 0',
+ };
+ const row = (rowData, sectionID, rowID) => {
+ return (
+
+
+ {/* eslint-disable-next-line react/jsx-no-duplicate-props */}
+
+
+
+
+
+
+
+
+
+
+ {commonUtils.isEmptyObject(employeeConfig) ? '' : employeeConfig.gdsconfigformslave.filter(item => item.bVisible && item.sName !== '').map((child) => {
+ const sMemo = child.sName.toLowerCase().endsWith('memo');
+ // sUseInfo是指被其他单据调用,或者被审核
+ let enabledNew = (enabled && !child.bReadonly && !child.specialControl && commonUtils.isEmpty(sUseInfo));
+ if (child.iTag === 1) {
+ enabledNew = false;
+ } else if (child.iTag === 3) {
+ enabledNew = true;
+ }
+ const showTypeProps = {
+ app,
+ record: rowData,
+ sId: rowData.sId, /* 修改当前编号(数据格式:字符串) */
+ name: 'employee',
+ form: this.props.form,
+ formId: sModelsId,
+ getSqlDropDownData: this.props.getSqlDropDownData,
+ getSqlCondition: this.props.getSqlCondition,
+ handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord,
+ getFloatNum: this.props.getFloatNum,
+ getDateFormat: this.props.getDateFormat,
+ onChange: this.handleTableChange,
+ showConfig: child,
+ formItemLayout: sMemo ? formItemLayout : {},
+ textArea: sMemo,
+ enabled: enabledNew,
+ dataValue: rowData[child.sName],
+ bTable: true,
+ onFilterDropDownData: this.props.onFilterDropDownData,
+ onSaveState: this.props.onSaveState,
+ };
+ return (
+
+ );
+ })}
+
+ );
+ };
+ return (
+
+
+
+ {
+ f1 ? {f1.showName} : {this.getViewValue(f1, slaveDatas)} : ''
+ }
+ {
+ f2 ? {f2.showName} : {this.getViewValue(f2, slaveDatas)} : ''
+ }
+
+
+ {
+ f3 ? {f3.showName} : {this.getViewValue(f3, slaveDatas)} : ''
+ }
+
+
+ {
+ f4 ? {f4.showName} : {this.getViewValue(f4, slaveDatas)} : ''
+ }
+
+
+ {
+ f5 ? {f5.showName} : {this.getViewValue(f5, slaveDatas)} : ''
+ }
+ {
+ f6 ? {f6.showName} : {this.getViewValue(f6, slaveDatas)} : ''
+ }
+
+
+ {
+ f7 ? {f7.showName} : {this.getViewValue(f7, slaveDatas)} : ''
+ }
+ {
+ f8 ? {f8.showName} : {this.getViewValue(f8, slaveDatas)} : ''
+ }
+
+
+ {
+ f9 ? {f9.showName} : {this.getViewValue(f9, slaveDatas)} : ''
+ }
+ {
+ f10 ? {f10.showName} : {this.getViewValue(f10, slaveDatas)} : ''
+ }
+
+
+
+
+ );
+ }
+}
+
+const ProcessReportMobile = createForm()(ProcessReportMobileComponent);
+
+export default CommobileBase(CommobileBillEvent(ProcessReportMobile));
diff --git a/src/mobile/common/RevisePasswordMobile.js b/src/mobile/common/RevisePasswordMobile.js
new file mode 100644
index 0000000..5594252
--- /dev/null
+++ b/src/mobile/common/RevisePasswordMobile.js
@@ -0,0 +1,118 @@
+import React from 'react';
+import { List, InputItem, NavBar, Toast } from 'antd-mobile';
+import { createForm } from 'rc-form';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+// import ExamineMobile from './ExamineMobile';
+// import commonConfig from '../../utils/config';
+// import * as commonUtils from '../../utils/utils';
+import CommobileBase from '../../mobile/common/CommobileBase';
+import CommobileListEvent from './CommobileListEvent';
+import styles from '../mobile.less';
+import config from '../../utils/config';
+
+class RevisePasswordMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ sId: props.app.userinfo.sId,
+ dispatch: props.dispatch,
+ hasError: false,
+ sOldPwd: '',
+ sUserPwd: '',
+ sUserPwdAgain: '',
+ };
+ this.obj = {};
+ }
+ onErrorClick = () => {
+ if (this.state.hasError) {
+ Toast.fail('密码输入不一致', 1);
+ }
+ }
+
+ onChange = (name, value) => {
+ // const nameNew = name;
+ this.obj[name] = value;
+ if (this.obj.sUserPwd !== this.obj.sUserPwdAgain) {
+ this.setState({
+ hasError: true,
+ });
+ } else {
+ this.setState({
+ hasError: false,
+ });
+ }
+ this.setState({ [`${name}`]: value });
+ }
+ handleSubmitPwd = (e) => {
+ /* 阻止表单提交动作 */
+ e.preventDefault();
+ const values = {};
+ const {
+ sId,
+ sOldPwd,
+ sUserPwd,
+ sUserPwdAgain,
+ } = this.state;
+ values.sId = sId;
+ values.sOldPwd = sOldPwd;
+ values.sUserPwd = sUserPwd;
+ values.sUserPwdAgain = sUserPwdAgain;
+ if (values.sUserPwd !== values.sUserPwdAgain) {
+ Toast.fail('密码输入不一致', 1);
+ return;
+ }
+ const url = `${config.server_host}sftlogininfo/updatePasswordUserName/update?sModelsId=${100}`;
+ const { dispatch } = this.state;
+ dispatch({ type: 'app/editPwd', payload: { url, value: values, editPwdType: 'mobile' } });
+ }
+ render() {
+ return (
+
+ 返回
,
+ ]
+ }
+ rightContent={[
+ 保存
,
+ ]}
+ onLeftClick={() => { window.history.back(-1); }}
+ className={styles.iconColor}
+ >
+ 修改密码
+
+
+
+ this.inputRef = el}
+ />
+
+ this.inputRef = el}
+ />
+ this.inputRef = el}
+ />
+
+
+ );
+ }
+}
+const BasicInputExampleWrapper = createForm()(RevisePasswordMobile);
+export default CommobileBase(CommobileListEvent(BasicInputExampleWrapper));
diff --git a/src/mobile/common/SceneCssMobile.js b/src/mobile/common/SceneCssMobile.js
new file mode 100644
index 0000000..a9fba27
--- /dev/null
+++ b/src/mobile/common/SceneCssMobile.js
@@ -0,0 +1,127 @@
+import React from 'react';
+import { Grid, Toast } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import styles from './SceneMobile.less';
+// eslint-disable-next-line import/first
+import { createForm } from 'rc-form';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import * as commonUtils from '../../utils/utils';
+import CommobileBase from './CommobileBase';
+import CommobileBillEvent from './CommobileBillEvent';
+
+class SceneCssMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ totalData: [],
+ };
+ }
+ async componentWillMount() {
+ const masterConfig = {};
+ const masterData = [];
+ this.props.onSaveState({ masterConfig, masterData });
+ /* 获取配置 */
+ let { sModelType } = this.props;
+ sModelType = commonUtils.isEmptyObject(sModelType) ? 'scene' : sModelType;
+ const { token } = this.props.app;
+ const sLoginType = 'sLoginCss';
+ const configUrl = `${commonConfig.server_host}mobilephone/getMenuSrmCss/${sModelType}/${sLoginType}?sModelsId=100`;
+ const configReturn = (await commonServices.getService(token, configUrl)).data;
+ if (configReturn.code === 1) {
+ const returnData = configReturn.dataset.rows;/* 全部数据 */
+ if (commonUtils.isNotEmptyArr(returnData)) {
+ this.setState({ totalData: returnData });
+ }
+ } else {
+ Toast.success(configReturn.msg);
+ }
+ }
+ handleGetAllMenuData = () => {
+ const { totalData } = this.state;
+ const { token } = this.props.app;
+ if (commonUtils.isNotEmptyArr(totalData)) {
+ return totalData.map((item) => {
+ const firstMenu = {};
+ firstMenu.bUnReason = item.bUnReason;
+ firstMenu.bUnTask = item.bUnTask;
+ firstMenu.bVisible = item.bVisible;
+ firstMenu.children = item.children;
+ firstMenu.iOrder = item.iOrder;
+ firstMenu.sChinese = item.sChinese;
+ firstMenu.sMenuName = item.sMenuName;
+ firstMenu.sId = item.sId;
+ firstMenu.sModelType = item.sModelType;
+ firstMenu.sName = item.sName;
+ firstMenu.sParentId = item.sParentId;
+ firstMenu.sProcName = item.sProcName;
+ firstMenu.sTitleLogoPath = item.sTitleLogoPath;
+ firstMenu.sUnType = item.sUnType;
+ const childrenData = item.children;
+ const gridData = [];
+ if (commonUtils.isNotEmptyArr(childrenData)) {
+ childrenData.forEach((itemChild) => {
+ const addStata = {};
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${itemChild.sTitleLogoPath}&sModelsId=100&token=${token}`;
+ addStata.icon = dataUrl;
+ addStata.text = itemChild.sMenuName;
+ addStata.url = itemChild.sName.replace('indexMobile', 'indexCssMobile');
+ addStata.sModelsId = itemChild.sId;
+ addStata.sModelType = itemChild.sModelType;
+ addStata.iOrder = itemChild.iOrder;
+ gridData.push(addStata);
+ });
+ }
+ gridData.sort((item, item2) => item.iOrder - item2.iOrder);
+ return (
+
+
{firstMenu.sMenuName}
+
+
+ );
+ });
+ }
+ }
+ handleGridClick = (el) => {
+ const { dispatch } = this.props;
+ const { url } = el;/* 菜单对应的路由地址 */
+ if (url !== '') {
+ const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${el.sModelsId}?sModelsId=${el.sModelsId}`;
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ url, /* 接口地址 */
+ urlKey: sNameUrl,
+ sModelsId: el.sModelsId,
+ sModelType: el.sModelType,
+ },
+ });
+ }
+ }
+
+ /** 修改主表数据 */
+ handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => {
+ if (sFieldName === 'sMachineId') {
+ const { dispatch } = this.props;
+ const returnData = await this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, true, masterDataNew);
+ dispatch({
+ type: 'app/saveMachineId',
+ payload: { sMachineId: returnData.masterData.sMachineId },
+ });
+ this.props.onSaveState({ ...returnData });
+ } else {
+ this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew);
+ }
+ }
+
+
+ render() {
+ return (
+
+ {this.handleGetAllMenuData()}
+
+ );
+ }
+}
+const SceneMobileComponent = createForm()(SceneCssMobile);
+export default CommobileBase(CommobileBillEvent(SceneMobileComponent));
diff --git a/src/mobile/common/SceneMobile.js b/src/mobile/common/SceneMobile.js
new file mode 100644
index 0000000..1b4303f
--- /dev/null
+++ b/src/mobile/common/SceneMobile.js
@@ -0,0 +1,247 @@
+import React from 'react';
+import { Button, Grid, Toast } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import styles from './SceneMobile.less';
+// eslint-disable-next-line import/first
+import { createForm } from 'rc-form';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import * as commonUtils from '../../utils/utils';
+import ShowType from './CommobileComponent';
+import CommobileBase from './CommobileBase';
+import CommobileBillEvent from './CommobileBillEvent';
+
+class SceneMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ totalData: [],
+ };
+ }
+ async componentWillMount() {
+ const masterConfig = {};
+ const masterData = [];
+ this.props.onSaveState({ masterConfig, masterData });
+ /* 获取配置 */
+ let { sModelType } = this.props;
+ sModelType = commonUtils.isEmptyObject(sModelType) ? 'scene' : sModelType;
+ const { token } = this.props.app;
+ const configUrl = `${commonConfig.server_host}mobilephone/getMenu/${sModelType}?sModelsId=100`;
+ const configReturn = (await commonServices.getService(token, configUrl)).data;
+ if (configReturn.code === 1) {
+ const returnData = configReturn.dataset.rows;/* 全部数据 */
+ if (commonUtils.isNotEmptyArr(returnData)) {
+ this.setState({ totalData: returnData });
+ }
+ } else {
+ Toast.success(configReturn.msg);
+ }
+ }
+ handleGetAllMenuData = () => {
+ const { totalData } = this.state;
+ const { token } = this.props.app;
+ if (commonUtils.isNotEmptyArr(totalData)) {
+ return totalData.map((item) => {
+ const firstMenu = {};
+ firstMenu.bUnReason = item.bUnReason;
+ firstMenu.bUnTask = item.bUnTask;
+ firstMenu.bVisible = item.bVisible;
+ firstMenu.children = item.children;
+ firstMenu.iOrder = item.iOrder;
+ firstMenu.sChinese = item.sChinese;
+ firstMenu.sMenuName = item.sMenuName;
+ firstMenu.sId = item.sId;
+ firstMenu.sModelType = item.sModelType;
+ firstMenu.sName = item.sName;
+ firstMenu.sParentId = item.sParentId;
+ firstMenu.sProcName = item.sProcName;
+ firstMenu.sTitleLogoPath = item.sTitleLogoPath;
+ firstMenu.sUnType = item.sUnType;
+ const childrenData = item.children;
+ const gridData = [];
+ if (commonUtils.isNotEmptyArr(childrenData)) {
+ childrenData.forEach((itemChild) => {
+ const addStata = {};
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${itemChild.sTitleLogoPath}&sModelsId=100&token=${token}`;
+ addStata.icon = dataUrl;
+ addStata.text = itemChild.sMenuName;
+ addStata.url = itemChild.sName;
+ addStata.sModelsId = itemChild.sId;
+ addStata.sModelType = itemChild.sModelType;
+ addStata.iOrder = itemChild.iOrder;
+ gridData.push(addStata);
+ });
+ }
+ gridData.sort((item, item2) => item.iOrder - item2.iOrder);
+ return (
+
+
{firstMenu.sMenuName}
+
+
+ );
+ });
+ }
+ }
+
+ handleChangeIframeVisible = (visible, iframeUrl) => {
+ if (visible) {
+ document.querySelector('#root').classList.add('mesIframe');
+ } else {
+ document.querySelector('#root').classList.remove('mesIframe');
+ }
+ this.props.onSaveState({
+ iframeVisible: visible,
+ iframeUrl,
+ });
+ }
+ handleGridClick = (el) => {
+ const { dispatch, app, token } = this.props;
+ const { userinfo } = app;
+ const { url, sModelType } = el;/* 菜单对应的路由地址 */
+
+ const iframeUrl = sModelType !== undefined ?
+ sModelType
+ .replace('{sBrandsId}', userinfo.sBrandsId)
+ .replace('{sSubsidiaryId}', userinfo.sSubsidiaryId)
+ .replace('{sUserName}', userinfo.sUserName)
+ .replace('{sUserId}', userinfo.sId)
+ .replace('{token}', token)
+ : '';
+
+ if (iframeUrl.startsWith('http')) {
+ this.handleChangeIframeVisible(true, iframeUrl);
+ return;
+ }
+
+ if (url !== '') {
+ const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${el.sModelsId}?sModelsId=${el.sModelsId}`;
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ url, /* 接口地址 */
+ urlKey: sNameUrl,
+ sModelsId: el.sModelsId,
+ sModelType: el.sModelType,
+ },
+ });
+ }
+ }
+
+ /** 修改主表数据 */
+ handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => {
+ if (sFieldName === 'sMachineId') {
+ const { dispatch } = this.props;
+ const returnData = await this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, true, masterDataNew);
+ dispatch({
+ type: 'app/saveMachineId',
+ payload: { sMachineId: returnData.masterData.sMachineId },
+ });
+ this.props.onSaveState({ ...returnData });
+ } else {
+ this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew);
+ }
+ }
+
+
+ render() {
+ const {
+ sModelsId,
+ app,
+ iframeVisible,
+ iframeUrl,
+ } = this.props;
+ const child = {
+ bCanInput: false,
+ bEntireLine: false,
+ bFilter: false,
+ bFind: false,
+ bFirstEmpty: true,
+ bIsOther: false,
+ bMergeCell: false,
+ bMultipleChoice: false,
+ bNewRecord: false,
+ bNotEmpty: true,
+ bNotRepeat: false,
+ bReadonly: false,
+ bSum: false,
+ bTree: false,
+ bVisible: true,
+ iColValue: 1,
+ iFitWidth: 119,
+ iIncrement: 71019,
+ iOrder: 16,
+ iTag: 0,
+ iVisCount: 1,
+ sActiveId: '19211681019715540861764830',
+ sActiveKey: 'sMachineId',
+ sAssignField: 'sMachineId:sId',
+ sBig5: '机台名稱',
+ sBig5DropDown: 'SELECT sMachineName,sMachineNo, sId FROM eleMachine where 1=1 #companyId# and bInvalid = 0',
+ sBrandsId: '1111111111',
+ sChinese: '机台名称',
+ sChineseDropDown: 'SELECT sMachineName,sMachineNo, sId FROM eleMachine where 1=1 #companyId# and bInvalid = 0',
+ sColor: '',
+ sControlName: '',
+ sDateFormat: '',
+ sDefault: '',
+ sDropDownType: 'sql',
+ sEnglish: '',
+ sEnglishDropDown: 'SELECT sMachineName,sMachineNo, sId FROM eleMachine where 1=1 #companyId# and bInvalid = 0',
+ sFieldToContent: '',
+ sFilterSql: '',
+ sId: '15943635830008892519957335923000',
+ sKeyUpFilter: '',
+ sMaxValue: '',
+ sMinValue: '',
+ sName: 'sMachineId',
+ sNotRepeatColumn: '',
+ sParentId: '101251240115015916850902230',
+ sRelation: '',
+ sSelectRelation: '',
+ sSqlCondition: '',
+ sSubsidiaryId: '1111111111',
+ showDropDown: 'SELECT sMachineName,sMachineNo, sId FROM eleMachine where 1=1 #companyId# and bInvalid = 0',
+ showName: '当前设备',
+ };
+ const showTypeProps = {
+ app,
+ record: {},
+ sId: '', /* 修改当前编号(数据格式:字符串) */
+ name: 'master',
+ form: this.props.form,
+ formId: sModelsId,
+ getSqlDropDownData: this.props.getSqlDropDownData,
+ getSqlCondition: this.props.getSqlCondition,
+ handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord,
+ getFloatNum: this.props.getFloatNum,
+ getDateFormat: this.props.getDateFormat,
+ onChange: this.handleMasterChange,
+ showConfig: child,
+ formItemLayout: {},
+ textArea: false,
+ enabled: true,
+ dataValue: this.props.app.sMachineId,
+ bTable: false,
+ onFilterDropDownData: this.props.onFilterDropDownData,
+ onSaveState: this.props.onSaveState,
+ };
+ const iconSettingShow = true;
+ return iframeVisible ? (
+
+
+
+
+
+
+ ) : (
+
+
+ { false && }
+
+ {this.handleGetAllMenuData()}
+
+ );
+ }
+}
+const SceneMobileComponent = createForm()(SceneMobile);
+export default CommobileBase(CommobileBillEvent(SceneMobileComponent));
diff --git a/src/mobile/common/SceneMobile.less b/src/mobile/common/SceneMobile.less
new file mode 100644
index 0000000..0edd623
--- /dev/null
+++ b/src/mobile/common/SceneMobile.less
@@ -0,0 +1,71 @@
+:global {
+ .GridContent {
+ padding: 10px;
+ border-radius: 15px;
+ background-color: white;
+ margin-bottom: 10px;
+ }
+}
+.SubTitle {
+ font-size: 14px;
+ font-weight: bold;
+}
+.pickerList{
+ border-radius: 15px;
+ margin-bottom: 10px;
+}
+.pickerList > div{
+ border-radius: 10px;
+}
+.pickerList > div>div>div{
+ border-radius: 10px;
+}
+.ListImg{
+ width: 22px;
+ height: 22px;
+ margin-right: 15px;
+ vertical-align: sub !important;
+}
+
+:global {
+ .mesIframe {
+ .am-tabs-tab-bar-wrap {
+ display: none;;
+ }
+ .am-tab-bar-item {
+ overflow: hidden;
+ }
+ .am-navbar-title {
+ visibility: hidden;
+ }
+ }
+}
+
+.iframe {
+ width: 100%;
+ height: 100%;
+ iframe {
+ width: 100%;
+ height: 100%;
+ }
+}
+
+.iframeBakBtn {
+ position: fixed;
+ top: 0;
+ left: 0;
+ :global {
+ .am-button {
+ height: 40px;
+ width: 120px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+}
+
+
+
+
+
diff --git a/src/mobile/common/SceneSrmMobile.js b/src/mobile/common/SceneSrmMobile.js
new file mode 100644
index 0000000..5f08e97
--- /dev/null
+++ b/src/mobile/common/SceneSrmMobile.js
@@ -0,0 +1,127 @@
+import React from 'react';
+import { Grid, Toast } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import styles from './SceneMobile.less';
+// eslint-disable-next-line import/first
+import { createForm } from 'rc-form';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import * as commonUtils from '../../utils/utils';
+import CommobileBase from './CommobileBase';
+import CommobileBillEvent from './CommobileBillEvent';
+
+class SceneSrmMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ totalData: [],
+ };
+ }
+ async componentWillMount() {
+ const masterConfig = {};
+ const masterData = [];
+ this.props.onSaveState({ masterConfig, masterData });
+ /* 获取配置 */
+ let { sModelType } = this.props;
+ sModelType = commonUtils.isEmptyObject(sModelType) ? 'scene' : sModelType;
+ const { token } = this.props.app;
+ const sLoginType = 'sLoginSrm';
+ const configUrl = `${commonConfig.server_host}mobilephone/getMenuSrmCss/${sModelType}/${sLoginType}?sModelsId=100`;
+ const configReturn = (await commonServices.getService(token, configUrl)).data;
+ if (configReturn.code === 1) {
+ const returnData = configReturn.dataset.rows;/* 全部数据 */
+ if (commonUtils.isNotEmptyArr(returnData)) {
+ this.setState({ totalData: returnData });
+ }
+ } else {
+ Toast.success(configReturn.msg);
+ }
+ }
+ handleGetAllMenuData = () => {
+ const { totalData } = this.state;
+ const { token } = this.props.app;
+ if (commonUtils.isNotEmptyArr(totalData)) {
+ return totalData.map((item) => {
+ const firstMenu = {};
+ firstMenu.bUnReason = item.bUnReason;
+ firstMenu.bUnTask = item.bUnTask;
+ firstMenu.bVisible = item.bVisible;
+ firstMenu.children = item.children;
+ firstMenu.iOrder = item.iOrder;
+ firstMenu.sChinese = item.sChinese;
+ firstMenu.sMenuName = item.sMenuName;
+ firstMenu.sId = item.sId;
+ firstMenu.sModelType = item.sModelType;
+ firstMenu.sName = item.sName;
+ firstMenu.sParentId = item.sParentId;
+ firstMenu.sProcName = item.sProcName;
+ firstMenu.sTitleLogoPath = item.sTitleLogoPath;
+ firstMenu.sUnType = item.sUnType;
+ const childrenData = item.children;
+ const gridData = [];
+ if (commonUtils.isNotEmptyArr(childrenData)) {
+ childrenData.forEach((itemChild) => {
+ const addStata = {};
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${itemChild.sTitleLogoPath}&sModelsId=100&token=${token}`;
+ addStata.icon = dataUrl;
+ addStata.text = itemChild.sMenuName;
+ addStata.url = itemChild.sName.replace('indexMobile', 'indexSrmMobile');
+ addStata.sModelsId = itemChild.sId;
+ addStata.sModelType = itemChild.sModelType;
+ addStata.iOrder = itemChild.iOrder;
+ gridData.push(addStata);
+ });
+ }
+ gridData.sort((item, item2) => item.iOrder - item2.iOrder);
+ return (
+
+
{firstMenu.sMenuName}
+
+
+ );
+ });
+ }
+ }
+ handleGridClick = (el) => {
+ const { dispatch } = this.props;
+ const { url } = el;/* 菜单对应的路由地址1 */
+ if (url !== '') {
+ const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${el.sModelsId}?sModelsId=${el.sModelsId}`;
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ url, /* 接口地址 */
+ urlKey: sNameUrl,
+ sModelsId: el.sModelsId,
+ sModelType: el.sModelType,
+ },
+ });
+ }
+ }
+
+ /** 修改主表数据 */
+ handleMasterChange = async (name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew) => {
+ if (sFieldName === 'sMachineId') {
+ const { dispatch } = this.props;
+ const returnData = await this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, true, masterDataNew);
+ dispatch({
+ type: 'app/saveMachineId',
+ payload: { sMachineId: returnData.masterData.sMachineId },
+ });
+ this.props.onSaveState({ ...returnData });
+ } else {
+ this.props.onChange(name, sFieldName, changeValue, sId, dropDownData, isWait, masterDataNew);
+ }
+ }
+
+
+ render() {
+ return (
+
+ {this.handleGetAllMenuData()}
+
+ );
+ }
+}
+const SceneMobileComponent = createForm()(SceneSrmMobile);
+export default CommobileBase(CommobileBillEvent(SceneMobileComponent));
diff --git a/src/mobile/common/WorkBenchMobile.js b/src/mobile/common/WorkBenchMobile.js
new file mode 100644
index 0000000..23a5aef
--- /dev/null
+++ b/src/mobile/common/WorkBenchMobile.js
@@ -0,0 +1,180 @@
+import React from 'react';
+import { Grid, Toast } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import styles from './SceneMobile.less';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import * as commonUtils from '../../utils/utils';
+import CommobileBase from '../../mobile/common/CommobileBase';
+import CommobileListEvent from './CommobileListEvent';
+import CommobileChar from '../../mobile/common/CommobileChar';
+import Green from '../../assets/mobile/0.png';
+import Blue from '../../assets/mobile/10.png';
+import Orange from '../../assets/mobile/20.png';
+import Red from '../../assets/mobile/30.png';
+
+class WorkBenchMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ totalData: [],
+ };
+ }
+
+ async componentWillMount() {
+ /* 获取配置 */
+ let { sModelType } = this.props;
+ sModelType = commonUtils.isEmptyObject(sModelType) ? 'workbench' : sModelType;
+ const { token } = this.props.app;
+ const configUrl = `${commonConfig.server_host}mobilephone/getMenu/${sModelType}?sModelsId=100`;
+ const configReturn = (await commonServices.getService(token, configUrl)).data;
+ if (configReturn.code === 1) {
+ const returnData = configReturn.dataset.rows;/* 全部数据 */
+ if (commonUtils.isNotEmptyArr(returnData)) {
+ this.setState({ totalData: returnData });
+ }
+ } else {
+ Toast.success(configReturn.msg);
+ }
+ this.props.onSaveState({ searchSolution: [] });
+ }
+
+ handleGetAllMenuData() {
+ const { totalData } = this.state;
+ let gridData = [];
+
+ const { token } = this.props.app;
+
+ if (commonUtils.isNotEmptyArr(totalData)) {
+ // eslint-disable-next-line array-callback-return
+ return totalData.map((item) => {
+ if (item.sMenuName !== '图表分析') {
+ const firstMenu = {};
+ firstMenu.bUnReason = item.bUnReason;
+ firstMenu.bUnTask = item.bUnTask;
+ firstMenu.bVisible = item.bVisible;
+ firstMenu.children = item.children;
+ firstMenu.iOrder = item.iOrder;
+ firstMenu.sChinese = item.sChinese;
+ firstMenu.sMenuName = item.sMenuName;
+ firstMenu.sId = item.sId;
+ firstMenu.sModelType = item.sModelType;
+ firstMenu.sName = item.sName;
+ firstMenu.sParentId = item.sParentId;
+ firstMenu.sProcName = item.sProcName;
+ firstMenu.sTitleLogoPath = item.sTitleLogoPath;
+ firstMenu.sUnType = item.sUnType;
+ const childrenData = item.children;
+ if (firstMenu.sName !== '') {
+ const { slaveData } = this.props;
+ const slaveDataOld2 = slaveData === undefined ? [] : slaveData;
+ gridData = [];
+ if (commonUtils.isNotEmptyArr(slaveDataOld2)) {
+ slaveDataOld2.forEach((itemChild) => {
+ const addStata = {};
+ let dataUrl = '';
+ addStata.iTodayNo = itemChild.iTodayNo;
+ if (commonUtils.convertStrToNumber(addStata.iTodayNo) <= 0) {
+ dataUrl = Green;
+ } else if (commonUtils.convertStrToNumber(addStata.iTodayNo) <= 10) {
+ dataUrl = Blue;
+ } else if (commonUtils.convertStrToNumber(addStata.iTodayNo) <= 20) {
+ dataUrl = Orange;
+ } else {
+ dataUrl = Red;
+ }
+ addStata.icon = dataUrl;
+ addStata.text = itemChild.sMakePerson;
+ addStata.url = '/sss';
+ addStata.sModelsId = itemChild.sId;
+ gridData.push(addStata);
+ });
+ }
+ } else if (commonUtils.isNotEmptyArr(childrenData)) {
+ gridData = [];
+ childrenData.forEach((itemChild) => {
+ const addStata = {};
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${itemChild.sTitleLogoPath}&sModelsId=100&token=${token}`;
+ addStata.icon = dataUrl;
+ addStata.iTodayNo = '';
+ addStata.text = itemChild.sMenuName;
+ addStata.url = itemChild.sName;
+ addStata.sModelsId = itemChild.sId;
+ gridData.push(addStata);
+ });
+ }
+ return (
+
+
+
{firstMenu.sMenuName}
+
(
+
+
+

+
+ {dataItem.text}
+
+
+ {
+ dataItem.iTodayNo !== ''
+ ?
+
{dataItem.iTodayNo}
+
+ : null
+ }
+
+
+
+
+ )}
+ hasLine={false}
+ onClick={this.handleGridClick}
+ />
+
+ );
+ }
+ });
+ }
+ }
+ handleGridClick = (el) => {
+ const { dispatch } = this.props;
+ const { url } = el;/* 菜单对应的路由地址 */
+ const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${el.sModelsId}?sModelsId=${el.sModelsId}`;
+ if (url !== '') {
+ dispatch({
+ type: 'content/onRouterMobile',
+ payload: {
+ url, /* 接口地址 */
+ urlKey: sNameUrl,
+ sModelsId: el.sModelsId,
+ },
+ });
+ }
+ }
+
+ render() {
+ const { totalData } = this.state;
+ let sModelsId = '';
+ if (commonUtils.isNotEmptyArr(totalData)) {
+ const sModelsIdItem = totalData.findIndex(item => item.sMenuName === '图表分析');
+ if (sModelsIdItem > -1) {
+ sModelsId = totalData[sModelsIdItem].sId;
+ }
+ }
+
+ return (
+
+ {this.handleGetAllMenuData()}
+ {commonUtils.isNotEmptyStr(sModelsId) ? : '' }
+
+ );
+ }
+}
+export default CommobileBase(CommobileListEvent(WorkBenchMobile));
diff --git a/src/mobile/components/FileManageMobile.js b/src/mobile/components/FileManageMobile.js
new file mode 100644
index 0000000..d2675cf
--- /dev/null
+++ b/src/mobile/components/FileManageMobile.js
@@ -0,0 +1,296 @@
+/* eslint-disable prefer-destructuring */
+/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */
+import React from 'react';
+import { Button, Modal } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import * as commonUtils from '../../utils/utils';
+import CommobileClassifyEvent from '../common/CommobileClassifyEvent';
+import CommobileBase from '../common/CommobileBase';
+import commonConfig from '../../utils/config';
+import preView from '../components/preView';
+import styles from './fileManage.less';
+
+class FileManageMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ files: [], // 图片存放的数组 可以上传一个,或者多个图片
+ imageData: [],
+ };
+ }
+
+ /* 调用手机摄像头并拍照 */
+ getImage =() => {
+ const { plus } = window;
+ const cmr = plus.camera.getCamera();
+ cmr.captureImage((p) => {
+ plus.io.resolveLocalFileSystemURL(p, (entry) => {
+ this.startUpload(entry.toLocalURL(), entry.name);
+ }, (e) => {
+ plus.nativeUI.toast(`读取拍照文件错误:${e.message}`);
+ });
+ }, (e) => {
+ plus.nativeUI.toast(`调用摄像头错误:${e.message}`);
+ }, {
+ filter: 'image',
+ });
+ }
+
+ /* 相册选择图片 */
+ getPhoto =() => {
+ const { plus } = window;
+ plus.gallery.pick((path) => {
+ const name = path.substring(path.lastIndexOf('/') + 1);
+ this.startUpload(path, name);
+ }, (e) => {
+ plus.nativeUI.toast(`选取图片错误:${e.message}`);
+ }, { filter: 'image' });
+ }
+
+ showImgDetail = (imgId, imgkey, id, src) => {
+ let html = '';
+ html += ``;
+ html += `
![]()
`;
+ html += `
`;
+ html += ' ';
+ html += ' ';
+ html += '
';
+ document.getElementById('imgDiv').innerHTML = html;
+ }
+
+ // 压缩图片
+ compressImage =(url, filename, divid) => {
+ const { plus } = window;
+ const name = `_doc/upload/${divid}-${filename}`;// _doc/upload/F_ZDDZZ-1467602809090.jpg
+ plus.zip.compressImage(
+ {
+ src: url, // src: (String 类型 )压缩转换原始图片的路径
+ dst: name, // 压缩转换目标图片的路径
+ quality: 20, // quality: (Number 类型 )压缩图片的质量.取值范围为1-100
+ overwrite: true, // overwrite: (Boolean 类型 )覆盖生成新文件
+ },
+ (event) => {
+ // uploadf(event.target,divid);
+ const path = name;// 压缩转换目标图片的路径
+ // event.target获取压缩转换后的图片url路
+ // filename图片名称
+ this.saveimage(event.target, divid, filename, path);
+ }, (error) => {
+ plus.nativeUI.toast(`${error}压缩图片失败,请稍候再试`);
+ },
+ );
+ }
+
+
+ // 保存信息到本地
+ /**
+ *
+ * @param {Object} url 图片的地址
+ * @param {Object} divid 字段的名称
+ * @param {Object} name 图片的名称
+ */
+ saveimage = (url, divid, name, path) => {
+ const { plus } = window;
+ // alert(url);//file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ-1467602809090.jpg
+ // alert(path);//_doc/upload/F_ZDDZZ-1467602809090.jpg
+ // const state = 0;
+ const wt = plus.nativeUI.showWaiting();
+ // plus.storage.clear();
+ name = name.substring(0, name.indexOf('.'));// 图片名称:1467602809090
+ const id = document.getElementById('ckjl.id').value;
+ const itemname = `${id}img-${divid}`;// 429img-F_ZDDZ
+ let itemvalue = plus.storage.getItem(itemname);
+ if (itemvalue == null) {
+ itemvalue = `{${name},${path},${url}}`;// {IMG_20160704_112614,_doc/upload/F_ZDDZZ-IMG_20160704_112614.jpg,file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ-1467602809090.jpg}
+ } else {
+ itemvalue = `${itemvalue}{${name},${path},${url}}`;
+ }
+ plus.storage.setItem(itemname, itemvalue);
+
+ const src = `src="${url}"`;
+ this.showImgDetail(name, divid, id, src);
+ wt.close();
+ }
+ // /* 图片上传入库 */
+ uploadImage =(imageObj) => {
+ if (commonUtils.isNotEmptyObject(imageObj) && commonUtils.isNotEmptyObject(imageObj.filePath)) {
+ /* -封装slaveData */
+ const name = 'slave';
+ const { app } = this.props;
+ let { slaveData } = this.props;
+ let { imageData } = this.state;
+ if (commonUtils.isEmpty(slaveData) || commonUtils.isEmpty(imageData)) {
+ slaveData = [];
+ imageData = [];
+ }
+ const { currentPane } = app;
+ /* 上传图片 */
+ const tableDataRow = this.props.onDataRowAdd(name, true);/* 选中行 */
+ tableDataRow.iOrder = 0;
+ tableDataRow.sSrcNo = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcNo : '';
+ tableDataRow.sSrcFormId = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcFormId : '';
+ tableDataRow.sSrcId = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcId : '';
+ tableDataRow.sSrcSlaveId = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcSlaveId : '';
+ tableDataRow.sPicturePath = imageObj.filePath;
+ tableDataRow.sFileName = imageObj.fileName;
+ if (commonUtils.isNotEmptyObject(imageObj.filePath)) {
+ imageData.push(imageObj.filePath);
+ }
+ slaveData.push(tableDataRow);
+ this.props.onSaveState({ slaveData, imageData });
+ this.props.onSubmit();/* 通用保存 */
+ }
+ }
+
+ // 上传图片
+ // upload_img = (p) => {
+ // // 又初始化了一下文件数组 为了支持单个上传,如果你要一次上传多个,就不要在写这一行了
+ // // 注意
+ // // files=[];
+ // const n = p.substr(p.lastIndexOf('/') + 1);
+ // files.push({
+ // name: `name${files.length}`,
+ // path: p,
+ // });
+ // }
+
+ startUpload =(path, filename) => {
+ const { files } = this.state;
+ const { sModelsId, token } = this.props;
+ const { plus } = window;
+ // if (files.length <= 0) {
+ // plus.nativeUI.alert('没有添加上传文件!');
+ // return;
+ // }
+
+ // 原生的转圈等待框
+ const wt = plus.nativeUI.showWaiting();
+
+ const task = plus.uploader.createUpload(
+ `${commonConfig.file_host}file/mobileupload?sModelsId=${sModelsId}&token=${token}`, {
+ method: 'POST',
+ },
+ (t, status) => { // 上传完成
+ if (status === 200) {
+ // 关闭转圈等待框
+ wt.close();
+ if (commonUtils.isNotEmptyObject(t.responseText)) {
+ try {
+ const responseObj = JSON.parse(t.responseText);
+ if (commonUtils.isNotEmptyObject(responseObj) && responseObj.code === 1) {
+ /* 拿到上传返回的数据库地址 */
+ const dataReturn = responseObj.dataset.rows;
+ if (commonUtils.isNotEmptyArr(dataReturn) && dataReturn.length > 0) {
+ /* 通过文件名拿到文件地址 */
+ const sPicturePath = dataReturn[0][filename];
+ /* 上传到通用文件管理中 */
+ const imgObj = {};
+ imgObj.filePath = sPicturePath;
+ imgObj.fileName = filename;
+ files.push(imgObj);
+ this.uploadImage(imgObj);
+ }
+ } else {
+ alert(responseObj.msg);
+ }
+ } catch (e) {
+ alert(`解析地址失败:${e}`);
+ }
+ }
+ // window.location.reload();
+ } else {
+ alert(`上传失败:${status}`);
+ // 关闭原生的转圈等待框
+ wt.close();
+ }
+ },
+ );
+
+ task.addData('string_key', 'string_value'); // 可以向后台传值
+ task.addFile(path, { key: 'testimage' });
+ task.start();
+ }
+
+
+ handleClick =(name) => {
+ if (name === 'BtnCamera') { /* 手机调动摄像头拍照 */
+ this.getImage();
+ } else if (name === 'BtnPhoto') { /* 手机相册选择图片 */
+ this.getPhoto();
+ } else if (name === 'BtnCancel') {
+ window.history.back(-1);
+ }
+ }
+
+
+ render() {
+ const {
+ config: btnUpdConfig, btnStyle, app,
+ } = this.props;
+ const { files } = this.state;
+ const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */
+ const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */
+ /* 上传照片样式定位 */
+ let imgDivTop = '500';
+ const mobileBarStyle = document.getElementsByClassName('am-list-view-scrollview-content');
+ if (commonUtils.isNotEmptyArr(mobileBarStyle) && mobileBarStyle.length > 0) {
+ const obj = mobileBarStyle[0].getBoundingClientRect();
+ const objHeight = mobileBarStyle[0].clientHeight;
+ if (commonUtils.isEmptyObject(obj)) {
+ if (obj.top < dHeight) {
+ imgDivTop = Math.floor(obj.top + objHeight);
+ }
+ }
+ }
+
+ return (
+
+ {commonUtils.isEmptyObject(btnUpdConfig) ? '' :
+
+
+ {
+ commonUtils.isNotEmptyArr(files) && files.length > 0 ?
+ files.map((child) => {
+ if (commonUtils.isNotEmptyObject(child.filePath)) {
+ const { token } = app;
+ let imgBox = '';
+ const picAddr = commonUtils.isNotEmptyObject(child.filePath) ? child.filePath.split(',') : '';
+ const previewImageArr = [];
+ if (commonUtils.isNotEmptyArr(picAddr)) {
+ picAddr.forEach((item) => {
+ const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */
+ previewImageArr.push(dataPreviewUrl);
+ });
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${picAddr[0]}&width=80&&height=80&sModelsId=100&token=${token}`; /* 缩略图 */
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ imgBox =

0} onClick={e => preView(previewImageArr, e)} />;
+ }
+ return imgBox;
+ } else {
+ return '';
+ }
+ }) : ''
+ }
+
+
+
+ }
+
+
+ );
+ }
+}
+
+export default CommobileBase(CommobileClassifyEvent(FileManageMobile));
diff --git a/src/mobile/components/FileManageMobileWx.js b/src/mobile/components/FileManageMobileWx.js
new file mode 100644
index 0000000..51c40b1
--- /dev/null
+++ b/src/mobile/components/FileManageMobileWx.js
@@ -0,0 +1,497 @@
+/* eslint-disable */
+/* eslint-disable prefer-destructuring */
+/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */
+import React from 'react';
+import { Button, Toast } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import weixin from 'weixin-js-sdk';
+import logo from '@/assets/footer_logo.png';
+import * as commonUtils from '../../utils/utils';
+import CommobileClassifyEvent from '../common/CommobileClassifyEvent';
+import CommobileBase from '../common/CommobileBase';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import preView from '../components/preView';
+import styles from './fileManage.less';
+
+
+class FileManageMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ files: [], // 图片存放的数组 可以上传一个,或者多个图片
+ imageData: [],
+ };
+ }
+
+ /* 调用手机摄像头并拍照 */
+ getImage =() => {
+ const { plus } = window;
+ const cmr = plus.camera.getCamera();
+ cmr.captureImage((p) => {
+ plus.io.resolveLocalFileSystemURL(p, (entry) => {
+ this.startUpload(entry.toLocalURL(), entry.name);
+ }, (e) => {
+ plus.nativeUI.toast(`读取拍照文件错误:${e.message}`);
+ });
+ }, (e) => {
+ plus.nativeUI.toast(`调用摄像头错误:${e.message}`);
+ }, {
+ filter: 'image',
+ });
+ }
+
+ /* 相册选择图片 */
+ getPhoto =() => {
+ const { plus } = window;
+ plus.gallery.pick((path) => {
+ const name = path.substring(path.lastIndexOf('/') + 1);
+ this.startUpload(path, name);
+ }, (e) => {
+ plus.nativeUI.toast(`选取图片错误:${e.message}`);
+ }, { filter: 'image' });
+ }
+
+ showImgDetail = (imgId, imgkey, id, src) => {
+ let html = '';
+ html += ``;
+ html += `
![]()
`;
+ html += `
`;
+ html += ' ';
+ html += ' ';
+ html += '
';
+ document.getElementById('imgDiv').innerHTML = html;
+ }
+
+ // 压缩图片
+ compressImage =(url, filename, divid) => {
+ const { plus } = window;
+ const name = `_doc/upload/${divid}-${filename}`;// _doc/upload/F_ZDDZZ-1467602809090.jpg
+ plus.zip.compressImage(
+ {
+ src: url, // src: (String 类型 )压缩转换原始图片的路径
+ dst: name, // 压缩转换目标图片的路径
+ quality: 20, // quality: (Number 类型 )压缩图片的质量.取值范围为1-100
+ overwrite: true, // overwrite: (Boolean 类型 )覆盖生成新文件
+ },
+ (event) => {
+ // uploadf(event.target,divid);
+ const path = name;// 压缩转换目标图片的路径
+ // event.target获取压缩转换后的图片url路
+ // filename图片名称
+ this.saveimage(event.target, divid, filename, path);
+ }, (error) => {
+ plus.nativeUI.toast(`${error}压缩图片失败,请稍候再试`);
+ },
+ );
+ }
+
+
+ // 保存信息到本地
+ /**
+ *
+ * @param {Object} url 图片的地址
+ * @param {Object} divid 字段的名称
+ * @param {Object} name 图片的名称
+ */
+ saveimage = (url, divid, name, path) => {
+ const { plus } = window;
+ // alert(url);//file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ-1467602809090.jpg
+ // alert(path);//_doc/upload/F_ZDDZZ-1467602809090.jpg
+ // const state = 0;
+ const wt = plus.nativeUI.showWaiting();
+ // plus.storage.clear();
+ name = name.substring(0, name.indexOf('.'));// 图片名称:1467602809090
+ const id = document.getElementById('ckjl.id').value;
+ const itemname = `${id}img-${divid}`;// 429img-F_ZDDZ
+ let itemvalue = plus.storage.getItem(itemname);
+ if (itemvalue == null) {
+ itemvalue = `{${name},${path},${url}}`;// {IMG_20160704_112614,_doc/upload/F_ZDDZZ-IMG_20160704_112614.jpg,file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ-1467602809090.jpg}
+ } else {
+ itemvalue = `${itemvalue}{${name},${path},${url}}`;
+ }
+ plus.storage.setItem(itemname, itemvalue);
+
+ const src = `src="${url}"`;
+ this.showImgDetail(name, divid, id, src);
+ wt.close();
+ }
+
+ // 上传图片
+ // upload_img = (p) => {
+ // // 又初始化了一下文件数组 为了支持单个上传,如果你要一次上传多个,就不要在写这一行了
+ // // 注意
+ // // files=[];
+ // const n = p.substr(p.lastIndexOf('/') + 1);
+ // files.push({
+ // name: `name${files.length}`,
+ // path: p,
+ // });
+ // }
+
+ startUpload =(path, filename) => {
+ const { files } = this.state;
+ const { sModelsId, token } = this.props;
+ const { plus } = window;
+ // if (files.length <= 0) {
+ // plus.nativeUI.alert('没有添加上传文件!');
+ // return;
+ // }
+
+ // 原生的转圈等待框
+ const wt = plus.nativeUI.showWaiting();
+
+ const task = plus.uploader.createUpload(
+ `${commonConfig.file_host}file/mobileupload?sModelsId=${sModelsId}&token=${token}`, {
+ method: 'POST',
+ },
+ (t, status) => { // 上传完成
+ if (status === 200) {
+ // 关闭转圈等待框
+ wt.close();
+ if (commonUtils.isNotEmptyObject(t.responseText)) {
+ try {
+ const responseObj = JSON.parse(t.responseText);
+ if (commonUtils.isNotEmptyObject(responseObj) && responseObj.code === 1) {
+ /* 拿到上传返回的数据库地址 */
+ const dataReturn = responseObj.dataset.rows;
+ if (commonUtils.isNotEmptyArr(dataReturn) && dataReturn.length > 0) {
+ /* 通过文件名拿到文件地址222 */
+ const fileName = dataReturn[0].fileName;
+ const filePath = dataReturn[0].filePath;
+ /* 上传到通用文件管理中 */
+ const imgObj = {};
+ imgObj.filePath = filePath;
+ imgObj.fileName = fileName;
+ files.push(imgObj);
+ this.uploadImage(imgObj);
+ }
+ } else {
+ alert(responseObj.msg);
+ }
+ } catch (e) {
+ alert(`解析地址失败:${e}`);
+ }
+ }
+ // window.location.reload();
+ } else {
+ alert(`上传失败:${status}`);
+ // 关闭原生的转圈等待框
+ wt.close();
+ }
+ },
+ );
+
+ task.addData('string_key', 'string_value'); // 可以向后台传值
+ task.addFile(path, { key: 'testimage' });
+ task.start();
+ }
+
+
+ handleClick =(name) => {
+ if (name === 'BtnCamera') { /* 手机调动摄像头拍照 */
+ this.getImage();
+ } else if (name === 'BtnPhoto') { /* 手机相册选择图片 */
+ this.getPhoto();
+ } else if (name === 'BtnCancel') {
+ window.history.back(-1);
+ }
+ }
+
+ handleGetWxCode = async (successHandler) => {
+ let scanResult = '';
+ const { app } = this.props;
+ // eslint-disable-next-line prefer-destructuring,no-unused-vars
+ const userinfo = app.userinfo;
+ // const myUrl = `http://${location.host}/index.html`;
+ const myUrl = location.href.split("#")[0];
+ // const myUrl = 'http://sztlerp.gnway.vip:62665/index.html';
+ const configUrl = `${commonConfig.server_host}wechat/getWxToken`;
+ const values = {
+ url: myUrl,
+ sBrandsId: userinfo.sBrandsId,
+ sSubsidiaryId: userinfo.sSubsidiaryId,
+ };
+ const configReturn = (await commonServices.postValueService(null, values, configUrl)).data;
+ if (configReturn.code === 1) {
+ const { rows } = configReturn.dataset;/* 获取费用分摊单据配置 */
+ if (commonUtils.isNotEmptyArr(rows)) {
+ const appId = rows[0].appId.toString();
+ const nonceStr = rows[0].nonceStr.toString();
+ const signature = rows[0].signature.toString();
+ const timestamp = rows[0].timestamp.toString();
+ // alert(appId);
+ // Toast.fail(`1-获取TokenAppId!${appId}`);
+ weixin.config({
+ beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
+ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+ appId, // 必填,公众号的唯一标识
+ timestamp, // 必填,生成签名的时间戳 <%= Html.Encode(ViewData["timestamp" ]) %>
+ nonceStr, // 必填,生成签名的随机串
+ signature, // 必填,签名
+ jsApiList: ['checkJsApi', 'scanQRCode', 'chooseImage', 'previewImage', 'uploadImage', 'downloadImage', 'getLocalImgData'], // 必填,需要使用的JS接口列表, 这里只需要调用扫一扫
+ });
+ weixin.ready(() => {
+ weixin.checkJsApi({ // 判断当前客户端版本是否支持指定JS接口222
+ jsApiList: ['scanQRCode', 'chooseImage'],
+ success(res) { // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"}
+ // Toast.fail(`成功校验:${res}`);
+ },
+ // eslint-disable-next-line no-unused-vars
+ fail(res) { // 检测getNetworkType该功能失败时处理
+ Toast.fail('checkJsApi error');
+ },
+
+
+ }); // wx.ready结束
+ weixin.chooseImage({
+ count: 9, // 默认9 一共选择图片数量
+ sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
+ sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
+ success(res) {
+ const localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
+ // const imgHtml = '';
+ let imgUrl = localIds[0];
+ // Toast.fail(`2-选定照片的本地src!${imgUrl}`);
+ // eslint-disable-next-line no-plusplus
+ // for (let i = 0; i < localIds.length; i++) {
+ // 选择照片展示
+ // imgHtml = `${imgHtml}
`;
+ // successHandler(localIds[i]);
+ // imgUrl = localIds[i];
+ // imgHtml+fnGetLocalImgData(localIds[i]);
+ // }
+ // imgUrl = localIds[0];
+ // const base64Url = this.fnGetLocalImgData(imgUrl);
+ // console.log('base1111', base64Url);
+ successHandler(imgUrl);
+ },
+ fail(res) {
+ Toast.fail(`照片上传失败!${res}`);
+ },
+ });
+ });
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ return scanResult;
+ }
+
+ /* 处理照片上传业务 */
+ handleWxBusiness = async (localIds) => {
+ const { sModelsId, token, app } = this.props;
+ const { files } = this.state;
+ this.fnGetLocalImgData(localIds, async (base64Url) => {
+ if(commonUtils.isNotEmptyObject(base64Url)) {
+ const dataUrl = `${commonConfig.file_host}file/mobileuploadwechat?sModelsId=${sModelsId}&token=${token}`;
+ /* 将二进制地址存储到数据中 */
+ const value ={ picUrl : [base64Url]};
+ const returnData = (await commonServices.postValueService(app.token, value, dataUrl)).data;
+ /* 拿到上传返回的数据库地址 */
+ const dataReturn = returnData.dataset.rows;
+ if (commonUtils.isNotEmptyArr(dataReturn) && dataReturn.length > 0) {
+ /* 通过文件名拿到文件地址 */
+ const sFileName = dataReturn[0].fileName;
+ const sFilePath = dataReturn[0].filePath;
+ // Toast.fail(`3-照片上传成功后!${sFileName}`);
+ /* 上传到通用文件管理中 */
+ if(commonUtils.isNotEmptyObject(sFileName) && commonUtils.isNotEmptyObject(sFilePath)) {
+ const imgObj = {};
+ imgObj.filePath = sFilePath;
+ imgObj.fileName = sFileName;
+ files.push(imgObj);
+ this.handleUploadImage(imgObj);
+ }
+ }
+ }
+ });
+ }
+
+ fnGetLocalImgData = (localID, successHandler ) => {
+ weixin.getLocalImgData({
+ localId: localID, // 图片的localID
+ success: (res) => {
+ let baseUrL = '';
+ let { localData } = res; // localData是图片的base64数据,可以用img标签显示
+ // if (localData.startsWith('data:image')) { // 判断是否有这样的头部
+ // // 没有则加上头部
+ // localData = `data:image/jpeg;base64,${localData}`;
+ // }
+ // 去掉所以换行符
+ localData = localData.replace(/\r|\n/g, '');
+ // return `
`;
+ baseUrL = localData;
+ successHandler(baseUrL);
+ },
+ });
+ }
+
+ /* 微信拍照 */
+ handleWxPhoto = async () => {
+ this.handleGetWxCode((code) => {
+ if (!commonUtils.isEmpty(code)) {
+ this.handleWxBusiness(code);
+ }
+ });
+ }
+
+ /* 微信二进制 */
+ handleWxPhotoScream = async () => {
+ this.handleGetWxCode((code) => {
+ if (!commonUtils.isEmpty(code)) {
+ this.handleWxBusiness(code);
+ }
+ });
+ }
+
+ // /* 图片上传入库 */
+ handleUploadImage = (imageObj) => {
+ if (commonUtils.isNotEmptyObject(imageObj) && commonUtils.isNotEmptyObject(imageObj.filePath)) {
+ /* -封装slaveData */
+ const name = 'slave';
+ const { app } = this.props;
+ let { slaveData } = this.props;
+ let { imageData } = this.state;
+ if (commonUtils.isEmpty(slaveData) || commonUtils.isEmpty(imageData)) {
+ slaveData = [];
+ imageData = [];
+ }
+ const { currentPane } = app;
+ /* 上传图片 */
+ const tableDataRow = this.props.onDataRowAdd(name, true);/* 选中行 */
+ tableDataRow.iOrder = 0;
+ tableDataRow.sSrcNo = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcNo : '';
+ tableDataRow.sSrcFormId = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcFormId : '';
+ tableDataRow.sSrcId = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcId : '';
+ tableDataRow.sSrcSlaveId = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcSlaveId : '';
+ tableDataRow.sPicturePath = imageObj.filePath;
+ tableDataRow.sFileName = imageObj.fileName;
+ if (commonUtils.isNotEmptyObject(imageObj.filePath)) {
+ imageData.push(imageObj.filePath);
+ }
+ slaveData.push(tableDataRow);
+ this.props.onSaveState({ slaveData, imageData });
+ this.props.onSubmit();/* 通用保存 */
+ }
+ }
+
+ readAsDataURL = async()=> {
+ const { sModelsId, token, app } = this.props;
+ let { slaveData } = this.props;
+ let { imageData } = this.state;
+ const files = [];
+ //检验是否为图像文件
+ var file = document.getElementById("file").files[0];
+ if (!/image\/\w+/.test(file.type)) {
+ alert("看清楚,这个需要图片!");
+ return false;
+ }
+ const onUploadImage = this.handleUploadImage;
+ var reader = new FileReader();
+ //将文件以Data URL形式读入页面
+ reader.readAsDataURL(file);
+ reader.onload = async function (e) {
+ const urlArr = [reader.result];
+ const dataUrl = `${commonConfig.server_host}file/mobileuploadwechat?sModelsId=${sModelsId}&token=${token}`;
+ /* 将二进制地址存储到数据中 */
+ const value ={ picUrl : urlArr};
+ const returnData = (await commonServices.postValueService(app.token, value, dataUrl)).data;
+ /* 拿到上传返回的数据库地址 */
+ const dataReturn = returnData.dataset.rows;
+ if (commonUtils.isNotEmptyArr(dataReturn) && dataReturn.length > 0) {
+ /* 通过文件名拿到文件地址 */
+ const sFileName = dataReturn[0].fileName;
+ const sFilePath = dataReturn[0].filePath;
+ /* 上传到通用文件管理中 */
+ if(commonUtils.isNotEmptyObject(sFileName) && commonUtils.isNotEmptyObject(sFilePath)) {
+ const imgObj = {};
+ imgObj.filePath = sFilePath;
+ imgObj.fileName = sFileName;
+ files.push(imgObj);
+ onUploadImage(imgObj);
+ }
+ }
+ }
+ }
+
+ render() {
+ const {
+ config: btnUpdConfig, btnStyle, app,
+ } = this.props;
+ const { files } = this.state;
+ const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度 */
+ const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */
+ /* 上传照片样式定位 */
+ let imgDivTop = '500';
+ const mobileBarStyle = document.getElementsByClassName('am-list-view-scrollview-content');
+ if (commonUtils.isNotEmptyArr(mobileBarStyle) && mobileBarStyle.length > 0) {
+ const obj = mobileBarStyle[0].getBoundingClientRect();
+ const objHeight = mobileBarStyle[0].clientHeight;
+ if (commonUtils.isEmptyObject(obj)) {
+ if (obj.top < dHeight) {
+ imgDivTop = Math.floor(obj.top + objHeight);
+ }
+ }
+ }
+
+ return (
+
+ {commonUtils.isEmptyObject(btnUpdConfig) ? '' :
+
+
+ {
+ commonUtils.isNotEmptyArr(files) && files.length > 0 ?
+ files.map((child) => {
+ if (commonUtils.isNotEmptyObject(child.filePath)) {
+ const { token } = app;
+ let imgBox = '';
+ const picAddr = commonUtils.isNotEmptyObject(child.filePath) ? child.filePath.split(',') : '';
+ const previewImageArr = [];
+ if (commonUtils.isNotEmptyArr(picAddr)) {
+ picAddr.forEach((item) => {
+ const dataPreviewUrl = `${commonConfig.server_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */
+ previewImageArr.push(dataPreviewUrl);
+ });
+ const dataUrl = `${commonConfig.server_host}file/download?savePathStr=${picAddr[0]}&width=80&&height=80&sModelsId=100&token=${token}`; /* 缩略图 */
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ imgBox =

0} onClick={e => preView(previewImageArr, e)} />;
+ }
+ return imgBox;
+ } else {
+ return '';
+ }
+ }) : ''
+ }
+
+ {/*
*/}
+
+ {/*
*/}
+ {/*
*/}
+ {/*
*/}
+ {/*
*/}
+
+ }
+
+
+ );
+ }
+}
+
+export default CommobileBase(CommobileClassifyEvent(FileManageMobile));
diff --git a/src/mobile/components/FileShowMobile.js b/src/mobile/components/FileShowMobile.js
new file mode 100644
index 0000000..1ccd2c5
--- /dev/null
+++ b/src/mobile/components/FileShowMobile.js
@@ -0,0 +1,303 @@
+/* eslint-disable */
+/* eslint-disable prefer-destructuring */
+/* eslint no-dupe-keys: 0, no-mixed-operators: 0 */
+import React from 'react';
+import { Button, Modal } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import * as commonUtils from '../../utils/utils';
+import CommobileClassifyEvent from '../common/CommobileClassifyEvent';
+import CommobileBase from '../common/CommobileBase';
+import commonConfig from '../../utils/config';
+import preView from '../components/preView';
+import styles from './fileManage.less';
+
+class FileManageMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ files: [], // 图片存放的数组 可以上传一个,或者多个图片
+ imageData: [],
+ };
+ }
+
+ /* 调用手机摄像头并拍照 */
+ getImage =() => {
+ const { plus } = window;
+ const cmr = plus.camera.getCamera();
+ cmr.captureImage((p) => {
+ plus.io.resolveLocalFileSystemURL(p, (entry) => {
+ this.startUpload(entry.toLocalURL(), entry.name);
+ }, (e) => {
+ plus.nativeUI.toast(`读取拍照文件错误:${e.message}`);
+ });
+ }, (e) => {
+ plus.nativeUI.toast(`调用摄像头错误:${e.message}`);
+ }, {
+ filter: 'image',
+ });
+ }
+
+ /* 相册选择图片 */
+ getPhoto =() => {
+ const { plus } = window;
+ plus.gallery.pick((path) => {
+ const name = path.substring(path.lastIndexOf('/') + 1);
+ this.startUpload(path, name);
+ }, (e) => {
+ plus.nativeUI.toast(`选取图片错误:${e.message}`);
+ }, { filter: 'image' });
+ }
+
+ showImgDetail = (imgId, imgkey, id, src) => {
+ let html = '';
+ html += ``;
+ html += `
![]()
`;
+ html += `
`;
+ html += ' ';
+ html += ' ';
+ html += '
';
+ document.getElementById('imgDiv').innerHTML = html;
+ }
+
+ // 压缩图片
+ compressImage =(url, filename, divid) => {
+ const { plus } = window;
+ const name = `_doc/upload/${divid}-${filename}`;// _doc/upload/F_ZDDZZ-1467602809090.jpg
+ plus.zip.compressImage(
+ {
+ src: url, // src: (String 类型 )压缩转换原始图片的路径
+ dst: name, // 压缩转换目标图片的路径
+ quality: 20, // quality: (Number 类型 )压缩图片的质量.取值范围为1-100
+ overwrite: true, // overwrite: (Boolean 类型 )覆盖生成新文件
+ },
+ (event) => {
+ // uploadf(event.target,divid);
+ const path = name;// 压缩转换目标图片的路径
+ // event.target获取压缩转换后的图片url路
+ // filename图片名称
+ this.saveimage(event.target, divid, filename, path);
+ }, (error) => {
+ plus.nativeUI.toast(`${error}压缩图片失败,请稍候再试`);
+ },
+ );
+ }
+
+
+ // 保存信息到本地
+ /**
+ *
+ * @param {Object} url 图片的地址
+ * @param {Object} divid 字段的名称
+ * @param {Object} name 图片的名称
+ */
+ saveimage = (url, divid, name, path) => {
+ const { plus } = window;
+ // alert(url);//file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ-1467602809090.jpg
+ // alert(path);//_doc/upload/F_ZDDZZ-1467602809090.jpg
+ // const state = 0;
+ const wt = plus.nativeUI.showWaiting();
+ // plus.storage.clear();
+ name = name.substring(0, name.indexOf('.'));// 图片名称:1467602809090
+ const id = document.getElementById('ckjl.id').value;
+ const itemname = `${id}img-${divid}`;// 429img-F_ZDDZ
+ let itemvalue = plus.storage.getItem(itemname);
+ if (itemvalue == null) {
+ itemvalue = `{${name},${path},${url}}`;// {IMG_20160704_112614,_doc/upload/F_ZDDZZ-IMG_20160704_112614.jpg,file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ-1467602809090.jpg}
+ } else {
+ itemvalue = `${itemvalue}{${name},${path},${url}}`;
+ }
+ plus.storage.setItem(itemname, itemvalue);
+
+ const src = `src="${url}"`;
+ this.showImgDetail(name, divid, id, src);
+ wt.close();
+ }
+ // /* 图片上传入库 */
+ uploadImage =(imageObj) => {
+ if (commonUtils.isNotEmptyObject(imageObj) && commonUtils.isNotEmptyObject(imageObj.filePath)) {
+ /* -封装slaveData */
+ const name = 'slave';
+ const { app } = this.props;
+ let { slaveData } = this.props;
+ let { imageData } = this.state;
+ if (commonUtils.isEmpty(slaveData) || commonUtils.isEmpty(imageData)) {
+ slaveData = [];
+ imageData = [];
+ }
+ const { currentPane } = app;
+ /* 上传图片 */
+ const tableDataRow = this.props.onDataRowAdd(name, true);/* 选中行 */
+ tableDataRow.iOrder = 0;
+ tableDataRow.sSrcNo = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcNo : '';
+ tableDataRow.sSrcFormId = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcFormId : '';
+ tableDataRow.sSrcId = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcId : '';
+ tableDataRow.sSrcSlaveId = commonUtils.isNotEmptyObject(currentPane) ? currentPane.sSrcSlaveId : '';
+ tableDataRow.sPicturePath = imageObj.filePath;
+ tableDataRow.sFileName = imageObj.fileName;
+ if (commonUtils.isNotEmptyObject(imageObj.filePath)) {
+ imageData.push(imageObj.filePath);
+ }
+ slaveData.push(tableDataRow);
+ this.props.onSaveState({ slaveData, imageData });
+ this.props.onSubmit();/* 通用保存 */
+ }
+ }
+
+ // 上传图片
+ // upload_img = (p) => {
+ // // 又初始化了一下文件数组 为了支持单个上传,如果你要一次上传多个,就不要在写这一行了
+ // // 注意
+ // // files=[];
+ // const n = p.substr(p.lastIndexOf('/') + 1);
+ // files.push({
+ // name: `name${files.length}`,
+ // path: p,
+ // });
+ // }
+
+ startUpload =(path, filename) => {
+ const { files } = this.state;
+ const { sModelsId, token } = this.props;
+ const { plus } = window;
+ // if (files.length <= 0) {
+ // plus.nativeUI.alert('没有添加上传文件!');
+ // return;
+ // }
+
+ // 原生的转圈等待框
+ const wt = plus.nativeUI.showWaiting();
+
+ const task = plus.uploader.createUpload(
+ `${commonConfig.file_host}file/mobileupload?sModelsId=${sModelsId}&token=${token}`, {
+ method: 'POST',
+ },
+ (t, status) => { // 上传完成
+ if (status === 200) {
+ // 关闭转圈等待框
+ wt.close();
+ if (commonUtils.isNotEmptyObject(t.responseText)) {
+ try {
+ const responseObj = JSON.parse(t.responseText);
+ if (commonUtils.isNotEmptyObject(responseObj) && responseObj.code === 1) {
+ /* 拿到上传返回的数据库地址 */
+ const dataReturn = responseObj.dataset.rows;
+ if (commonUtils.isNotEmptyArr(dataReturn) && dataReturn.length > 0) {
+ /* 通过文件名拿到文件地址 */
+ const sPicturePath = dataReturn[0][filename];
+ /* 上传到通用文件管理中 */
+ const imgObj = {};
+ imgObj.filePath = sPicturePath;
+ imgObj.fileName = filename;
+ files.push(imgObj);
+ this.uploadImage(imgObj);
+ }
+ } else {
+ alert(responseObj.msg);
+ }
+ } catch (e) {
+ alert(`解析地址失败:${e}`);
+ }
+ }
+ // window.location.reload();
+ } else {
+ alert(`上传失败:${status}`);
+ // 关闭原生的转圈等待框
+ wt.close();
+ }
+ },
+ );
+
+ task.addData('string_key', 'string_value'); // 可以向后台传值
+ task.addFile(path, { key: 'testimage' });
+ task.start();
+ }
+
+
+ handleClick =(name) => {
+ if (name === 'BtnCamera') { /* 手机调动摄像头拍照 */
+ this.getImage();
+ } else if (name === 'BtnPhoto') { /* 手机相册选择图片 */
+ this.getPhoto();
+ } else if (name === 'BtnCancel') {
+ window.history.back(-1);
+ }
+ }
+
+
+ render() {
+ const {
+ btnConfig, btnStyle, app, selectedRow
+ } = this.props;
+ const { token } = app;
+ console.log('ss', token)
+ const { files, showPicVisible } = this.state;
+ const dWidth = document.documentElement.clientWidth || document.body.clientWidth; /* 获取手机视窗宽度1 */
+ const dHeight = document.documentElement.clientHeight || document.body.clientHeight; /* 获取手机视窗宽度 */
+ /* 上传照片样式定位 */
+ let imgDivTop = '500';
+ const mobileBarStyle = document.getElementsByClassName('am-list-view-scrollview-content');
+ if (commonUtils.isNotEmptyArr(mobileBarStyle) && mobileBarStyle.length > 0) {
+ const obj = mobileBarStyle[0].getBoundingClientRect();
+ const objHeight = mobileBarStyle[0].clientHeight;
+ if (commonUtils.isEmptyObject(obj)) {
+ if (obj.top < dHeight) {
+ imgDivTop = Math.floor(obj.top + objHeight);
+ }
+ }
+ }
+ const sPicturePath =commonUtils.isNotEmptyObject(selectedRow)? selectedRow.sPicturePath : '';
+ const sPicturePathArr = sPicturePath? sPicturePath.split(',') : [];
+ console.log('00020ss', sPicturePathArr);
+ const previewImageArr = [];
+ sPicturePathArr.forEach((item) => {
+ const dataPreviewUrl = `${commonConfig.file_host}file/download?savePathStr=${item}&width=${dWidth}&&height=${dHeight}&sModelsId=100&token=${token}`; /* 预览 */
+ previewImageArr.push(dataPreviewUrl);
+ });
+ return (
+
+ {commonUtils.isEmptyObject(btnConfig) ? '' :
+
+
+
+
{ this.setState({ showPicVisible: false }); } }]}
+ >
+
+ {
+ commonUtils.isNotEmptyArr(sPicturePathArr) > 0 ?
+ sPicturePathArr.map((child) => {
+ if (commonUtils.isNotEmptyObject(child)) {
+ let imgBox = '';
+ const dataUrl = `${commonConfig.file_host}file/download?savePathStr=${child}&width=120&&height=120&sModelsId=100&token=${token}`; /* 缩略图 */
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
+ imgBox =

0} onClick={e => preView(previewImageArr, e)} />;
+ return imgBox;
+ } else {
+ return '';
+ }
+ }) : ''
+ }
+
+
+
+ }
+
+
+ );
+ }
+}
+
+export default CommobileBase(CommobileClassifyEvent(FileManageMobile));
diff --git a/src/mobile/components/fileManage.less b/src/mobile/components/fileManage.less
new file mode 100644
index 0000000..325cc11
--- /dev/null
+++ b/src/mobile/components/fileManage.less
@@ -0,0 +1,42 @@
+:global{
+.am-image-picker{
+ position:fixed!important;
+ bottom: 20%!important;
+}
+ .spictureStyle{
+ width: 100%;
+ background-color: #ffffff;
+ padding: 2px 5px;
+ }
+ .spictureStyle img{
+ border-radius: 4px;
+ }
+}
+.commonImage{
+ position:fixed;
+ //bottom: 30%;
+ left: 3%;
+ margin-left: 10px;
+}
+.commonImage img{
+ border-radius: 4px;
+ width: 80px;
+ max-height: 80px;
+ //width: 3rem;
+ //max-height: 3rem;
+ height: auto;
+ margin-right: 10px;
+}
+.showImage{
+ height:40vh;
+}
+.showImage img{
+ border-radius: 4px;
+ border: 5px solid #efeff4;
+ width: 360px;
+ max-height: 240px;
+ //width: 3rem;
+ //max-height: 3rem;
+ height: auto;
+ margin-right: 10px;
+}
diff --git a/src/mobile/components/modal.jsx b/src/mobile/components/modal.jsx
new file mode 100644
index 0000000..8c4fbf8
--- /dev/null
+++ b/src/mobile/components/modal.jsx
@@ -0,0 +1,43 @@
+/*eslint-disable*/
+import React, { PureComponent } from 'react';
+import { Modal } from 'antd-mobile';
+
+export default class ModalBase extends PureComponent {
+ state = {
+ visible: this.props.visible,
+ }
+
+ closeModal = () => {
+ this.setState({ visible: false });
+ }
+
+ openModal = () => {
+ this.setState({ visible: true });
+ }
+
+ render() {
+ const { title, submitAction, content, cancelAction, ...others } = this.props;
+ return <>
+ { typeof cancelAction === 'function' && cancelAction() } },
+ { text: '确认', onPress: () => { typeof submitAction === 'function' && submitAction() } },
+ ]}
+ { ...others }
+ >
+
+ {
+ content
+ }
+
+
+ >
+ }
+}
\ No newline at end of file
diff --git a/src/mobile/components/preView.js b/src/mobile/components/preView.js
new file mode 100644
index 0000000..d61b39a
--- /dev/null
+++ b/src/mobile/components/preView.js
@@ -0,0 +1,49 @@
+import React from 'react';
+import { Carousel, Modal } from 'antd-mobile';
+import styles from './preView.less';
+
+/**
+ * 图片预览函数
+ * @param {*} urls 图片地址数组
+ * @param {*} e 点击事件,用于阻止冒泡
+ */
+const perView = (urls, e) => {
+ if (e) e.stopPropagation();
+ Modal.alert(
+ '预览',
+
+ {urls.map(val => (
+ // eslint-disable-next-line jsx-a11y/anchor-is-valid
+
+
+
+ ))}
+ ,
+ [
+ { text: '关闭' },
+ ],
+ );
+};
+
+export default perView;
diff --git a/src/mobile/components/preView.less b/src/mobile/components/preView.less
new file mode 100644
index 0000000..27d0676
--- /dev/null
+++ b/src/mobile/components/preView.less
@@ -0,0 +1,22 @@
+:global{
+ .am-modal-transparent {
+ width: 96vw;
+ }
+}
+.spaceCarousel {
+ padding: 16px;
+ background: #DEF1E5;
+ overflow: hidden;
+
+ :global {
+ .slider-list {
+ height: auto !important;
+ }
+ .slider-slide {
+ position: unset !important;
+ }
+ .slider-frame{
+ height:80vh!important;
+ }
+ }
+}
diff --git a/src/mobile/login/LoginMobile.js b/src/mobile/login/LoginMobile.js
new file mode 100644
index 0000000..cdee05f
--- /dev/null
+++ b/src/mobile/login/LoginMobile.js
@@ -0,0 +1,223 @@
+import React from 'react';
+import { createForm } from 'rc-form';
+import { InputItem, Button, WhiteSpace, Toast, Modal, Picker, List } from 'antd-mobile-v2';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import styles from './LoginMobile.less';
+import LoginIcon from '../../assets/mobile/LOGO.png';
+import LoginUser from '../../assets/mobile/User.svg';
+import loginCompanyPic from '../../assets/oee/loginCompany.png';
+import LoginPassword from '../../assets/mobile/Password.svg';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import * as commonFunc from '../../components/Common/commonFunc';
+import AppUtil from '../../utils/AppUtil';
+import * as commonUtils from '../../utils/utils';
+
+
+// eslint-disable-next-line prefer-destructuring
+const alert = Modal.alert;
+
+class LoginMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ // eslint-disable-next-line react/no-unused-state
+ companys: [],
+ sParentId: '',
+ sId: '',
+ username: localStorage.getItem(`${commonConfig.prefix}username`) || '',
+ userpwd: localStorage.getItem(`${commonConfig.prefix}userpwd`) || '',
+ loginCompany: JSON.parse(localStorage.getItem(`${commonConfig.prefix}loginCompany`)) || [],
+ };
+ }
+ async componentWillMount() {
+ const configUrl = `${commonConfig.server_host}sysbrands/getSysbrands`;
+ const configReturn = (await commonServices.getService(null, configUrl)).data;
+ if (configReturn.code === 1) {
+ const companys = configReturn.dataset.rows;
+ const companysLabel = [];
+ // const sParentId = commonUtils.isNotEmptyObject(this.state.sParentId) ? this.state.sParentId : companys[0].sParentId;
+ // const sId = commonUtils.isNotEmptyObject(this.state.sId) ? this.state.sId : companys[0].sId;
+ if (commonUtils.isNotEmptyArr(companys)) {
+ // eslint-disable-next-line array-callback-return
+ companys.map((item) => {
+ const map = { ...item };
+ map.label = item.sName;
+ map.value = item.sId;
+ companysLabel.push(map);
+ });
+ }
+ // eslint-disable-next-line react/no-unused-state
+ this.setState({ companys: companysLabel });
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ }
+ componentDidMount() {
+ if (localStorage.getItem(`${commonConfig.prefix}privacyPolicy`) !== 'agree') {
+ alert(
+ '用户协议与隐私政策',
+ 感谢您选择小羚羊EBC!
+ 我们非常重视您的个人信息和隐私保护。为了更好地保障您的个人权益,在您使用我们的产品前,请务必审慎阅读
+ 《小羚羊EBC服务协议》与
+ 《小羚羊EBC隐私政策》内的所有条款,尤其是:
+ 1.我们对您的个人信息的收集/保存/使用/对外提供/保护等规则条款,以及您的用户权利等条款;
+ 2.约定我们的限制责任、免责条款。
+ 3.其他以颜色或加粗进行标识的重要条款。
+ 如您对以上协议有任何疑问,可通过人工客服或发邮件至yanghl@xlyerp.com与我们联系。您点击“同意并继续”的行为即表示您已阅读完毕并同意以上协议的全部内容。
+
, [
+ {
+ text: '不同意',
+ onPress: () => {
+ const { plus } = window;
+ if (plus) {
+ plus.runtime.quit();
+ }
+ },
+ },
+ {
+ text: '同意并继续',
+ onPress: () => {
+ localStorage.setItem(`${commonConfig.prefix}privacyPolicy`, 'agree');
+ },
+ },
+ ],
+ );
+ }
+ }
+
+ onChange = (name, newValue) => {
+ if (name === 'username') {
+ this.setState({ username: newValue });
+ } if (name === 'userpwd') {
+ this.setState({ userpwd: newValue });
+ }
+ }
+ handleChoodeCompanyOk = (value) => {
+ this.setState({
+ loginCompany: value,
+ });
+ }
+ handleLogin = async () => {
+ const { dispatch, app } = this.props;
+ const { loginCompany, companys } = this.state;
+ let sParentId = '';
+ if (commonUtils.isNotEmptyArr(companys) && commonUtils.isNotEmptyObject(loginCompany)) {
+ // eslint-disable-next-line prefer-destructuring
+ sParentId = companys.filter(item => item.sId === loginCompany[0])[0].sParentId;
+ } else {
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'chooseBranchCompany'));
+ return;
+ }
+ this.props.form.validateFields(async () => {
+ const value = {};
+ value.username = this.state.username;
+ value.password = this.state.userpwd;
+ value.sParentId = this.state.sParentId;
+ // value.company = this.state.loginCompany;
+ value.sId = this.state.sId;
+ const url = `${commonConfig.server_host}userlogin/${sParentId}/${loginCompany}?sLoginType=phoneLogin`;
+ const dataReturn = (await commonServices.postValueService(null, value, url)).data;
+ if (dataReturn.code === 1) {
+ if (commonUtils.isNotEmptyObject(dataReturn.msg)) {
+ Toast.info(dataReturn.msg, 3);
+ }
+ localStorage.setItem(`${commonConfig.prefix}username`, this.state.username);
+ localStorage.setItem(`${commonConfig.prefix}userpwd`, this.state.userpwd);
+ localStorage.setItem(`${commonConfig.prefix}loginCompany`, JSON.stringify(loginCompany));
+ const param = {};
+ const {
+ token, gdslogininfo: userinfo, systemData, commonConst,
+ } = dataReturn.dataset.rows[0];
+ const decimals = {};
+ if (systemData !== undefined) {
+ const dNetPrice = systemData.filter(item => (item.sName === 'NetPrice'))[0];
+ const dNetMoney = systemData.filter(item => (item.sName === 'NetMoney'))[0];
+ decimals.dNetPrice = dNetPrice.sValue !== undefined ? (dNetPrice.sValue) * 1 : 6;
+ decimals.dNetMoney = dNetMoney.sValue !== undefined ? (dNetMoney.sValue) * 1 : 6;
+ }
+ param.token = token;
+ param.userinfo = userinfo;
+ param.systemData = systemData;
+ param.commonConst = commonConst;
+ param.decimals = decimals;
+ param.dateFormat = commonFunc.getDateFormat(systemData);
+ dispatch({
+ type: 'loginMobile/login',
+ payload: { ...param, dispatch },
+ });
+ } else {
+ Toast.fail(dataReturn.msg);
+ }
+ });
+ }
+
+ render() {
+ const { loginCompany } = this.state;
+ const { getFieldProps } = this.props.form;
+ return (
+
+
+

+
+
+
+ );
+ }
+}
+const LoginMobileWrapper = createForm()(LoginMobile);
+export default LoginMobileWrapper;
diff --git a/src/mobile/login/LoginMobile.less b/src/mobile/login/LoginMobile.less
new file mode 100644
index 0000000..aef3957
--- /dev/null
+++ b/src/mobile/login/LoginMobile.less
@@ -0,0 +1,72 @@
+:global {
+ html, body, #root {
+ height: 100%;
+ background: #fff !important;
+ }
+ .am-list-item .am-input-control input:-webkit-autofill{
+ -webkit-box-shadow:0 0 0 1000px white inset !important;
+ }
+ .chooseCompany{
+ .am-list-content{
+ width: 85px !important;
+ flex: none !important;
+ margin-right: 5px;
+ }
+ .am-list-extra{
+ width: 100% !important;
+ flex: 1;
+ text-align: left !important;
+ color: #000 !important;
+ font-size: 17px !important;
+ }
+ .am-list-line:after{
+ content: '';
+ position: absolute;
+ background-color: #ddd;
+ display: block;
+ z-index: 1;
+ top: auto;
+ right: auto;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 1PX;
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ -webkit-transform: scaleY(0.5);
+ transform: scaleY(0.5);
+ }
+ }
+}
+.wraper{
+ width: 100%;
+ height: 100%;
+ }
+.login{
+ margin-top: 5%;
+ height: 100%;
+ background-color: #fff;
+}
+.logo {
+ width: 100%;
+ height: 28%;
+ text-align: center;
+}
+.logo img{
+ margin-top: 12%;
+ width: 80px;
+ height: 64px;
+}
+.loginSubmit{
+ padding: 0px 5%;
+}
+
+.setting{
+ display: block;
+ text-align: center;
+ margin-top: 10px;
+}
+.chooseCompany{
+ width: 100%;
+}
+
diff --git a/src/mobile/logincss/LoginCss.js b/src/mobile/logincss/LoginCss.js
new file mode 100644
index 0000000..468cb57
--- /dev/null
+++ b/src/mobile/logincss/LoginCss.js
@@ -0,0 +1,223 @@
+import React from 'react';
+import { createForm } from 'rc-form';
+import { InputItem, Button, WhiteSpace, Toast, Modal, Picker, List } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import styles from './LoginCss.less';
+import LoginIcon from '../../assets/mobile/logoCss.png';
+import LoginUser from '../../assets/mobile/User.svg';
+import loginCompanyPic from '../../assets/oee/loginCompany.png';
+import LoginPassword from '../../assets/mobile/Password.svg';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import * as commonFunc from '../../components/Common/commonFunc';
+import AppUtil from '../../utils/AppUtil';
+import * as commonUtils from '../../utils/utils';
+
+
+// eslint-disable-next-line prefer-destructuring
+const alert = Modal.alert;
+
+class LoginCss extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ // eslint-disable-next-line react/no-unused-state
+ companys: [],
+ sParentId: '',
+ sId: '',
+ username: localStorage.getItem(`${commonConfig.prefix}username`) || '',
+ userpwd: localStorage.getItem(`${commonConfig.prefix}userpwd`) || '',
+ loginCompany: JSON.parse(localStorage.getItem(`${commonConfig.prefix}loginCompany`)) || [],
+ };
+ }
+ async componentWillMount() {
+ const configUrl = `${commonConfig.server_host}sysbrands/getSysbrands`;
+ const configReturn = (await commonServices.getService(null, configUrl)).data;
+ if (configReturn.code === 1) {
+ const companys = configReturn.dataset.rows;
+ const companysLabel = [];
+ // const sParentId = commonUtils.isNotEmptyObject(this.state.sParentId) ? this.state.sParentId : companys[0].sParentId;
+ // const sId = commonUtils.isNotEmptyObject(this.state.sId) ? this.state.sId : companys[0].sId;
+ if (commonUtils.isNotEmptyArr(companys)) {
+ // eslint-disable-next-line array-callback-return
+ companys.map((item) => {
+ const map = { ...item };
+ map.label = item.sName;
+ map.value = item.sId;
+ companysLabel.push(map);
+ });
+ }
+ // eslint-disable-next-line react/no-unused-state
+ this.setState({ companys: companysLabel });
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ }
+ componentDidMount() {
+ if (localStorage.getItem(`${commonConfig.prefix}privacyPolicy`) !== 'agree') {
+ alert(
+ '用户协议与隐私政策',
+ 感谢您选择小羚羊EBC!
+ 我们非常重视您的个人信息和隐私保护。为了更好地保障您的个人权益,在您使用我们的产品前,请务必审慎阅读
+ 《小羚羊EBC服务协议》与
+ 《小羚羊EBC隐私政策》内的所有条款,尤其是:
+ 1.我们对您的个人信息的收集/保存/使用/对外提供/保护等规则条款,以及您的用户权利等条款;
+ 2.约定我们的限制责任、免责条款。
+ 3.其他以颜色或加粗进行标识的重要条款。
+ 如您对以上协议有任何疑问,可通过人工客服或发邮件至yanghl@xlyerp.com与我们联系。您点击“同意并继续”的行为即表示您已阅读完毕并同意以上协议的全部内容。
+
, [
+ {
+ text: '不同意',
+ onPress: () => {
+ const { plus } = window;
+ if (plus) {
+ plus.runtime.quit();
+ }
+ },
+ },
+ {
+ text: '同意并继续',
+ onPress: () => {
+ localStorage.setItem(`${commonConfig.prefix}privacyPolicy`, 'agree');
+ },
+ },
+ ],
+ );
+ }
+ }
+
+ onChange = (name, newValue) => {
+ if (name === 'username') {
+ this.setState({ username: newValue });
+ } if (name === 'userpwd') {
+ this.setState({ userpwd: newValue });
+ }
+ }
+ handleChoodeCompanyOk = (value) => {
+ this.setState({
+ loginCompany: value,
+ });
+ }
+ handleLogin = async () => {
+ const { dispatch, app } = this.props;
+ const { loginCompany, companys } = this.state;
+ let sParentId = '';
+ if (commonUtils.isNotEmptyArr(companys) && commonUtils.isNotEmptyObject(loginCompany)) {
+ // eslint-disable-next-line prefer-destructuring
+ sParentId = companys.filter(item => item.sId === loginCompany[0])[0].sParentId;
+ } else {
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'chooseBranchCompany'));
+ return;
+ }
+ this.props.form.validateFields(async () => {
+ const value = {};
+ value.username = this.state.username;
+ value.password = this.state.userpwd;
+ value.sParentId = this.state.sParentId;
+ // value.company = this.state.loginCompany;
+ value.sId = this.state.sId;
+ const url = `${commonConfig.server_host}userlogin/${sParentId}/${loginCompany}`;
+ const dataReturn = (await commonServices.postValueService(null, value, url)).data;
+ if (dataReturn.code === 1) {
+ if (commonUtils.isNotEmptyObject(dataReturn.msg)) {
+ Toast.info(dataReturn.msg, 3);
+ }
+ localStorage.setItem(`${commonConfig.prefix}username`, this.state.username);
+ localStorage.setItem(`${commonConfig.prefix}userpwd`, this.state.userpwd);
+ localStorage.setItem(`${commonConfig.prefix}loginCompany`, JSON.stringify(loginCompany));
+ const param = {};
+ const {
+ token, gdslogininfo: userinfo, systemData, commonConst,
+ } = dataReturn.dataset.rows[0];
+ const decimals = {};
+ if (systemData !== undefined) {
+ const dNetPrice = systemData.filter(item => (item.sName === 'NetPrice'))[0];
+ const dNetMoney = systemData.filter(item => (item.sName === 'NetMoney'))[0];
+ decimals.dNetPrice = dNetPrice.sValue !== undefined ? (dNetPrice.sValue) * 1 : 6;
+ decimals.dNetMoney = dNetMoney.sValue !== undefined ? (dNetMoney.sValue) * 1 : 6;
+ }
+ param.token = token;
+ param.userinfo = userinfo;
+ param.systemData = systemData;
+ param.commonConst = commonConst;
+ param.decimals = decimals;
+ param.dateFormat = commonFunc.getDateFormat(systemData);
+ dispatch({
+ type: 'loginCss/login',
+ payload: { ...param, dispatch },
+ });
+ } else {
+ Toast.fail(dataReturn.msg);
+ }
+ });
+ }
+
+ render() {
+ const { loginCompany } = this.state;
+ const { getFieldProps } = this.props.form;
+ return (
+
+
+

+
+
+
+ );
+ }
+}
+const LoginMobileWrapper = createForm()(LoginCss);
+export default LoginMobileWrapper;
diff --git a/src/mobile/logincss/LoginCss.less b/src/mobile/logincss/LoginCss.less
new file mode 100644
index 0000000..aef3957
--- /dev/null
+++ b/src/mobile/logincss/LoginCss.less
@@ -0,0 +1,72 @@
+:global {
+ html, body, #root {
+ height: 100%;
+ background: #fff !important;
+ }
+ .am-list-item .am-input-control input:-webkit-autofill{
+ -webkit-box-shadow:0 0 0 1000px white inset !important;
+ }
+ .chooseCompany{
+ .am-list-content{
+ width: 85px !important;
+ flex: none !important;
+ margin-right: 5px;
+ }
+ .am-list-extra{
+ width: 100% !important;
+ flex: 1;
+ text-align: left !important;
+ color: #000 !important;
+ font-size: 17px !important;
+ }
+ .am-list-line:after{
+ content: '';
+ position: absolute;
+ background-color: #ddd;
+ display: block;
+ z-index: 1;
+ top: auto;
+ right: auto;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 1PX;
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ -webkit-transform: scaleY(0.5);
+ transform: scaleY(0.5);
+ }
+ }
+}
+.wraper{
+ width: 100%;
+ height: 100%;
+ }
+.login{
+ margin-top: 5%;
+ height: 100%;
+ background-color: #fff;
+}
+.logo {
+ width: 100%;
+ height: 28%;
+ text-align: center;
+}
+.logo img{
+ margin-top: 12%;
+ width: 80px;
+ height: 64px;
+}
+.loginSubmit{
+ padding: 0px 5%;
+}
+
+.setting{
+ display: block;
+ text-align: center;
+ margin-top: 10px;
+}
+.chooseCompany{
+ width: 100%;
+}
+
diff --git a/src/mobile/loginsrm/LoginSrm.js b/src/mobile/loginsrm/LoginSrm.js
new file mode 100644
index 0000000..5748b0d
--- /dev/null
+++ b/src/mobile/loginsrm/LoginSrm.js
@@ -0,0 +1,223 @@
+import React from 'react';
+import { createForm } from 'rc-form';
+import { InputItem, Button, WhiteSpace, Toast, Modal, Picker, List } from 'antd-mobile';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import styles from './LoginSrm.less';
+import LoginIcon from '../../assets/mobile/logoSrm.png';
+import LoginUser from '../../assets/mobile/User.svg';
+import loginCompanyPic from '../../assets/oee/loginCompany.png';
+import LoginPassword from '../../assets/mobile/Password.svg';
+import commonConfig from '../../utils/config';
+import * as commonServices from '../../services/services';
+import * as commonFunc from '../../components/Common/commonFunc';
+import AppUtil from '../../utils/AppUtil';
+import * as commonUtils from '../../utils/utils';
+
+
+// eslint-disable-next-line prefer-destructuring
+const alert = Modal.alert;
+
+class LoginSrm extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ // eslint-disable-next-line react/no-unused-state
+ companys: [],
+ sParentId: '',
+ sId: '',
+ username: localStorage.getItem(`${commonConfig.prefix}username`) || '',
+ userpwd: localStorage.getItem(`${commonConfig.prefix}userpwd`) || '',
+ loginCompany: JSON.parse(localStorage.getItem(`${commonConfig.prefix}loginCompany`)) || [],
+ };
+ }
+ async componentWillMount() {
+ const configUrl = `${commonConfig.server_host}sysbrands/getSysbrands`;
+ const configReturn = (await commonServices.getService(null, configUrl)).data;
+ if (configReturn.code === 1) {
+ const companys = configReturn.dataset.rows;
+ const companysLabel = [];
+ // const sParentId = commonUtils.isNotEmptyObject(this.state.sParentId) ? this.state.sParentId : companys[0].sParentId;
+ // const sId = commonUtils.isNotEmptyObject(this.state.sId) ? this.state.sId : companys[0].sId;
+ if (commonUtils.isNotEmptyArr(companys)) {
+ // eslint-disable-next-line array-callback-return
+ companys.map((item) => {
+ const map = { ...item };
+ map.label = item.sName;
+ map.value = item.sId;
+ companysLabel.push(map);
+ });
+ }
+ // eslint-disable-next-line react/no-unused-state
+ this.setState({ companys: companysLabel });
+ } else {
+ Toast.fail(configReturn.msg);
+ }
+ }
+ componentDidMount() {
+ if (localStorage.getItem(`${commonConfig.prefix}privacyPolicy`) !== 'agree') {
+ alert(
+ '用户协议与隐3私政策',
+ 感谢您选择小羚羊EBC!
+ 我们非常重视您的个人信息和隐私保护。为了更好地保障您的个人权益,在您使用我们的产品前,请务必审慎阅读
+ 《小羚羊EBC服务协议》与
+ 《小羚羊EBC隐私政策》内的所有条款,尤其是:
+ 1.我们对您的个人信息的收集/保存/使用/对外提供/保护等规则条款,以及您的用户权利等条款;
+ 2.约定我们的限制责任、免责条款。
+ 3.其他以颜色或加粗进行标识的重要条款。
+ 如您对以上协议有任何疑问,可通过人工客服或发邮件至yanghl@xlyerp.com与我们联系。您点击“同意并继续”的行为即表示您已阅读完毕并同意以上协议的全部内容。
+
, [
+ {
+ text: '不同意',
+ onPress: () => {
+ const { plus } = window;
+ if (plus) {
+ plus.runtime.quit();
+ }
+ },
+ },
+ {
+ text: '同意并继续',
+ onPress: () => {
+ localStorage.setItem(`${commonConfig.prefix}privacyPolicy`, 'agree');
+ },
+ },
+ ],
+ );
+ }
+ }
+
+ onChange = (name, newValue) => {
+ if (name === 'username') {
+ this.setState({ username: newValue });
+ } if (name === 'userpwd') {
+ this.setState({ userpwd: newValue });
+ }
+ }
+ handleChoodeCompanyOk = (value) => {
+ this.setState({
+ loginCompany: value,
+ });
+ }
+ handleLogin = async () => {
+ const { dispatch, app } = this.props;
+ const { loginCompany, companys } = this.state;
+ let sParentId = '';
+ if (commonUtils.isNotEmptyArr(companys) && commonUtils.isNotEmptyObject(loginCompany)) {
+ // eslint-disable-next-line prefer-destructuring
+ sParentId = companys.filter(item => item.sId === loginCompany[0])[0].sParentId;
+ } else {
+ Toast.fail(commonFunc.showMessage(app.commonConst, 'chooseBranchCompany'));
+ return;
+ }
+ this.props.form.validateFields(async () => {
+ const value = {};
+ value.username = this.state.username;
+ value.password = this.state.userpwd;
+ value.sParentId = this.state.sParentId;
+ // value.company = this.state.loginCompany;
+ value.sId = this.state.sId;
+ const url = `${commonConfig.server_host}userlogin/${sParentId}/${loginCompany}`;
+ const dataReturn = (await commonServices.postValueService(null, value, url)).data;
+ if (dataReturn.code === 1) {
+ if (commonUtils.isNotEmptyObject(dataReturn.msg)) {
+ Toast.info(dataReturn.msg, 3);
+ }
+ localStorage.setItem(`${commonConfig.prefix}username`, this.state.username);
+ localStorage.setItem(`${commonConfig.prefix}userpwd`, this.state.userpwd);
+ localStorage.setItem(`${commonConfig.prefix}loginCompany`, JSON.stringify(loginCompany));
+ const param = {};
+ const {
+ token, gdslogininfo: userinfo, systemData, commonConst,
+ } = dataReturn.dataset.rows[0];
+ const decimals = {};
+ if (systemData !== undefined) {
+ const dNetPrice = systemData.filter(item => (item.sName === 'NetPrice'))[0];
+ const dNetMoney = systemData.filter(item => (item.sName === 'NetMoney'))[0];
+ decimals.dNetPrice = dNetPrice.sValue !== undefined ? (dNetPrice.sValue) * 1 : 6;
+ decimals.dNetMoney = dNetMoney.sValue !== undefined ? (dNetMoney.sValue) * 1 : 6;
+ }
+ param.token = token;
+ param.userinfo = userinfo;
+ param.systemData = systemData;
+ param.commonConst = commonConst;
+ param.decimals = decimals;
+ param.dateFormat = commonFunc.getDateFormat(systemData);
+ dispatch({
+ type: 'loginSrm/login',
+ payload: { ...param, dispatch },
+ });
+ } else {
+ Toast.fail(dataReturn.msg);
+ }
+ });
+ }
+
+ render() {
+ const { loginCompany } = this.state;
+ const { getFieldProps } = this.props.form;
+ return (
+
+
+

+
+
+
+ );
+ }
+}
+const LoginMobileWrapper = createForm()(LoginSrm);
+export default LoginMobileWrapper;
diff --git a/src/mobile/loginsrm/LoginSrm.less b/src/mobile/loginsrm/LoginSrm.less
new file mode 100644
index 0000000..aef3957
--- /dev/null
+++ b/src/mobile/loginsrm/LoginSrm.less
@@ -0,0 +1,72 @@
+:global {
+ html, body, #root {
+ height: 100%;
+ background: #fff !important;
+ }
+ .am-list-item .am-input-control input:-webkit-autofill{
+ -webkit-box-shadow:0 0 0 1000px white inset !important;
+ }
+ .chooseCompany{
+ .am-list-content{
+ width: 85px !important;
+ flex: none !important;
+ margin-right: 5px;
+ }
+ .am-list-extra{
+ width: 100% !important;
+ flex: 1;
+ text-align: left !important;
+ color: #000 !important;
+ font-size: 17px !important;
+ }
+ .am-list-line:after{
+ content: '';
+ position: absolute;
+ background-color: #ddd;
+ display: block;
+ z-index: 1;
+ top: auto;
+ right: auto;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 1PX;
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ -webkit-transform: scaleY(0.5);
+ transform: scaleY(0.5);
+ }
+ }
+}
+.wraper{
+ width: 100%;
+ height: 100%;
+ }
+.login{
+ margin-top: 5%;
+ height: 100%;
+ background-color: #fff;
+}
+.logo {
+ width: 100%;
+ height: 28%;
+ text-align: center;
+}
+.logo img{
+ margin-top: 12%;
+ width: 80px;
+ height: 64px;
+}
+.loginSubmit{
+ padding: 0px 5%;
+}
+
+.setting{
+ display: block;
+ text-align: center;
+ margin-top: 10px;
+}
+.chooseCompany{
+ width: 100%;
+}
+
diff --git a/src/mobile/mobile.less b/src/mobile/mobile.less
new file mode 100644
index 0000000..20f23cb
--- /dev/null
+++ b/src/mobile/mobile.less
@@ -0,0 +1,367 @@
+:global{
+ .result-example .spe {
+ width: 60px;
+ height: 60px;
+ }
+ .sub-title {
+ color: #888;
+ font-size: 14px;
+ padding: 30px 0 18px 0;
+ margin-left: 15px;
+ }
+ .editPwdMobile{
+ .ant-form{
+ .ant-form-item{
+ .ant-input{
+ border: none;
+ height: 44px;
+ font-size: 16px;
+ }
+ .ant-form-explain{
+ font-size: 16px;
+ padding: 3px 10px;
+ }
+ }
+ }
+ }
+ .am-result .am-result-pic{
+ width: 80px !important;
+ height: 80px !important;
+ }
+ .th-div{
+ position: relative;
+ }
+}
+.modal{
+ top: 200px;
+}
+.aa {
+ width: 100%;
+ height: 100%;
+ border-radius: 50%;
+}
+//人员列表样式
+.conContent{
+ padding-left: 15px;
+}
+.conContentInner {
+ display: flex;
+ align-items: center;
+}
+.conImg{
+ height: 50px;
+ margin-right: 15px;
+ border-radius: 50%;
+}
+.conInfo{
+ flex: 1;
+ border-bottom: 1px solid #F6F6F6;
+ padding: 5px 0;
+}
+.conName{
+ font-weight: bold;
+ font-size: 1rem;
+ margin-bottom: .5rem;
+}
+.conpart{
+ font-size: .9rem;
+}
+.iconColor{
+ color: #000;
+}
+// 搜索框组件样式
+.filterLabel{
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ font-size: 16px;
+}
+
+.filterItem{
+ display: flex;
+ justify-content: flex-start;
+ padding: 0 15px;
+}
+.filterItem > div {
+ width: 100%;
+ }
+.filterItemLabel{
+ text-align: left;
+ width: 30%;
+ display: flex;
+ align-items: center;
+
+}
+.filterItemInput{
+ width: 70%;
+}
+.filterListContent{
+ max-height: 315px;
+ overflow-y: auto;
+}
+.filterList{
+ padding: 0 15px;
+}
+
+.filterListFlex{
+ padding-top: 8px;
+}
+.filterListBtn{
+ margin: 4px 0 10px 0;
+}
+.filterInput{
+ border: 1px solid #ddd;
+ width: 100%;
+ height: 35px;
+ line-height: 35px;
+ border-radius: 3px;
+ font-size: 15px;
+ padding: 0 5px;
+ color: #000000;
+}
+.ProcessReportMobile {
+ min-height: 24px;
+ a:before{
+ border: none !important;
+ }
+}
+.listView {
+ overflow: visible !important;
+ height: auto;
+}
+.listView > div {
+ padding-bottom: 47px !important;
+}
+
+.onlyWordBg{
+ background: #f37d3d;
+ color: #f5f5f5;
+}
+
+//通用超出
+.wordsFlow {
+ //overflow: hidden;
+ //white-space: nowrap;
+ //text-overflow: ellipsis;
+}
+.borderRadius{
+ margin-bottom: 10px;
+}
+.borderRadius>div>div{
+ border-radius:15px;
+}
+//现场中的图标
+.fr{
+ text-align: right;
+}
+
+.iconStyle{
+ width: 22px;
+ height: 22px;
+ margin-left: 5px;
+}
+
+
+.paddingFive {
+ padding: 0 15px 5px 15px ;
+}
+.paddingFiveTeen {
+ padding: 0 15px 0px 15px ;
+}
+//commobilelis底部按钮样式
+.commobilelistToolBarBtn{
+ flex: 1;
+}
+.commobilelistToolBarBtn a:before {
+ border: none !important;
+}
+
+.CheckboxItem > div:first-child > div:first-child{
+ margin-right: 0 !important;
+}
+.floatLeft{
+ float: left;
+}
+.floatRight{
+ float: right;
+}
+.listViewStyle > div:first-child > div:first-child{
+ width: 100% !important;
+}
+
+// 我的页面样式
+.myselfContent {
+ padding: 12px 15px;
+ color: #fff;
+ background: #2b2e37;
+}
+.company {
+ font-size: 22px;
+ font-weight: bold;
+ text-align: left;
+ margin-bottom: 16px;
+}
+.textInfo{
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ margin-bottom: 12px;
+}
+.myselfNameFirst{
+ width: 60px;
+ height: 60px;
+ border-radius: 50%;
+ background: #d8a105;
+ line-height: 56px;
+ text-align: center;
+ font-size: 27px;
+ font-weight: bold;
+}
+.myselfName{
+ margin-left: 20px;
+ flex: 1;
+}
+.myselfNameInfo{
+ text-align: left;
+ font-size: 18px;
+ padding: 3px 0;
+}
+.companyInfo{
+ text-align: left;
+ font-size: 14px;
+ padding: 3px 0;
+}
+.myselfList > div{
+ background: #f0f0f0;
+}
+.listViewStyle{
+ position: relative;
+ bottom: 0;
+ width: 100%;
+ height: 100%;
+ top: 0;
+}
+// 工单状态查看
+.statusView_title{
+ background: #f0f0f0;
+ font-size: 16px;
+ font-weight: bold;
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ padding:0 1em;
+}
+.spanStyle{
+ position: absolute;
+ top: 3%;
+ right: 12%;
+}
+.requireStyle{
+ position: absolute;
+ height: 4px;
+ width: 4px;
+ left: -1px;
+ top: -5px;
+ font-family: SimSun;
+ line-height: 1;
+ font-size: 16px;
+ color: #f5222d;
+}
+.scanStyle{
+ width: 2rem;
+ height: 2rem;
+}
+:global {
+ .statusView .am-steps-vertical.am-steps-small .am-steps-item-title {
+ width: 100% !important;
+ }
+ .commobileBillContainer {
+ .am-list-item .am-list-line .am-list-content{
+ flex: unset;
+ flex-basis: 90px;
+ }
+ .am-list-item .am-list-line .am-list-extra{
+ flex-basis: ~'calc(100% - 115px)';
+ text-align: left;
+ }
+ }
+ .am-list-item .am-input-control input, .am-textarea-control textarea{
+ color: #888;
+ &::-webkit-input-placeholder { /* WebKit, Blink, Edge */
+ color: #888;
+ }
+ &::-moz-placeholder { /* WebKit, Blink, Edge */
+ color: #888;
+ }
+ &::-moz-placeholder { /* WebKit, Blink, Edge */
+ color: #888;
+ }
+ &::-ms-input-placeholder { /* WebKit, Blink, Edge */
+ color: #888;
+ }
+ }
+ .am-list-item .am-list-line .am-list-extra{
+ font-size: 17px;
+ }
+ .am-list-item .am-input-control input:disabled {
+ color: #bbb!important;
+ &::-webkit-input-placeholder { /* WebKit, Blink, Edge */
+ color: #bbb;
+ }
+ &::-moz-placeholder { /* WebKit, Blink, Edge */
+ color: #bbb;
+ }
+ &::-moz-placeholder { /* WebKit, Blink, Edge */
+ color: #bbb;
+ }
+ &::-ms-input-placeholder { /* WebKit, Blink, Edge */
+ color: #bbb;
+ }
+ }
+ .doubleItem{
+ font-size: 16px;
+ width: 50%;
+ float: left;
+ height: 18px;
+ line-height: 18px;
+ //white-space:nowrap;
+ //overflow:hidden;
+ //text-overflow:ellipsis;
+ }
+ .treeItem{
+ font-size: 16px;
+ width: 33%;
+ float: left;
+ height: 18px;
+ line-height: 18px;
+ }
+ .singleItem{
+ font-size: 16px;
+ width: 100%;
+ float: left;
+ line-height: 18px;
+ }
+ .singleItem .listContent{
+ line-height: 18px;
+ }
+ .flexTitle{
+ //width: 5rem;
+ width: 67px;
+ text-align-last:justify;
+ text-align: justify;
+ font-weight: bold;
+ }
+ .commobileBillToolbar {
+ background: #fff;
+ font-size: 17px;
+ &>div{
+ background: #f37d3d!important;
+ }
+ .am-button{
+ background: #f37d3d!important;
+ font-size: 17px!important;
+ color: #fff!important;
+ }
+ }
+}
diff --git a/src/mobile/printpdf.less b/src/mobile/printpdf.less
new file mode 100644
index 0000000..c690870
--- /dev/null
+++ b/src/mobile/printpdf.less
@@ -0,0 +1,101 @@
+.view {
+ position: fixed;
+ top: 0;
+ padding: 0;
+ display: flex;
+ justify-content: center;
+ height: 100vh;
+ width:calc(100vw - 0px);
+ overflow: auto;
+ z-index: 3000;
+ background-color: #fff;
+}
+.pageContainer {
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 0px 0px;
+ width:max-content;
+ max-width:100%;
+}
+.pageTool{
+ width: 70%;
+ position: absolute;
+ bottom: 20px;
+ background: rgb(66, 66, 66);
+ color: white;
+ padding: 3px 5px;
+ border-radius: 15px;
+ display: flex;
+ align-items: center;
+ i{
+ padding: 5px;
+ margin:0 5px;
+ &:hover{
+ background: #333;
+ }
+ }
+ input{
+ display: inline-block;
+ width: 25px;
+ text-align: center;
+ margin-right: 0px;
+ height: 15px;
+ font-size: 1rem!important;
+ }
+ input::-webkit-outer-spin-button,
+ input::-webkit-inner-spin-button {
+ -webkit-appearance: none;
+ }
+ input[type="number"]{
+ -moz-appearance: textfield;
+ }
+ .numPages{
+ text-align: center;
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+ width: 30%;
+ font-size: 1rem;
+ }
+ .left{
+ display: flex;
+ text-align: center;
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+ width: 25%;
+ }
+ .right{
+ display: flex;
+ text-align: center;
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+ width: 25%;
+ }
+}
+
+:global{
+ .pdfClose{
+ position: absolute;
+ right: 2%;
+ top:3%;
+ z-index: 3001;
+ }
+
+ .demo-preview-item{
+ .am-list-item.am-input-item{
+ height: 36px!important;
+ min-height: 36px!important;
+ padding-left: 0px;
+ .am-list-line{
+ padding-left: 15px;
+ padding-right: 15px;
+ }
+ }
+ .am-list-item{
+ padding-right: 8px;
+ }
+ .am-list-item .am-list-line{
+ padding-right: 2px;
+ }
+ }
+}
diff --git a/src/routes/mobile/IndexCssMobile.js b/src/routes/mobile/IndexCssMobile.js
new file mode 100644
index 0000000..e33abaf
--- /dev/null
+++ b/src/routes/mobile/IndexCssMobile.js
@@ -0,0 +1,184 @@
+/* eslint-disable */
+import React from 'react';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import { Icon, NavBar, TabBar, Modal } from 'antd-mobile';
+import { connect,history } from 'umi';
+
+import styles from './IndexMobile.less';
+import SceneCssMobile from './common/SceneCssMobile';
+import MessageMobile from './common/MessageMobile';
+import ContactsMobile from './common/ContactsMobile';
+import WorkBenchMobile from './common/WorkBenchMobile';
+import CommobileList from './commobileList/commobileList';
+import ProcessReportMobile from './common/ProcessReportMobile';
+import MyselfMobile from './common/MyselfMobile';
+import ContactsInfoMobile from './common/ContactsInfoMobile';
+import RevisePasswordMobile from './common/RevisePasswordMobile';
+import CommobileBill from './common/commobileBill';
+import CommobilePrintPdf from './common/commobilePrintPdf';
+import Icon1 from '../../assets/mobile/1.png';
+import Icon11 from '../../assets/mobile/11.png';
+import Icon2 from '../../assets/mobile/2.png';
+import Icon21 from '../../assets/mobile/21.png';
+import Icon3 from '../../assets/mobile/3.png';
+import Icon31 from '../../assets/mobile/31.png';
+import Icon4 from '../../assets/mobile/4.png';
+import Icon41 from '../../assets/mobile/41.png';
+import Icon5 from '../../assets/mobile/5.png';
+import Icon51 from '../../assets/mobile/51.png';
+// import AppUtil from '../../utils/AppUtil';
+import * as commonBusiness from '../../components/Common/commonBusiness';
+
+// eslint-disable-next-line prefer-destructuring
+const alert = Modal.alert;
+class indexCssMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ selectedTab: 'scene',
+ title: '现场',
+ hidden: false,
+ fullScreen: true,
+ touchStartPageX: 0, // 滑动开始的Y坐标
+ touchStartPageY: 0,
+ };
+ }
+ componentWillMount() {
+ this.props.dispatch(history.push('/indexCssMobile')); // 刷新时更新路由,避免底部按钮和返回按钮错乱显示
+ if (this.props.routing && this.props.routing) {
+ const { state } = this.props.routing;
+ if (state) {
+ const { sId } = state;
+ if (sId === 'myself') {
+ this.setState({ selectedTab: 'myself' });
+ // this.renderContent('contacts');
+ }
+ }
+ }
+
+ // AppUtil.addDrag();
+ }
+ handleTouchStart = (e) => {
+ this.setState({
+ touchStartPageX: e.changedTouches[0].pageX,
+ touchStartPageY: e.changedTouches[0].pageY,
+ });
+ }
+
+ handleTouchEnd = (e) => {
+ const touchEndtPageX = e.changedTouches[0].pageX;
+ const touchEndtPageY = e.changedTouches[0].pageY;
+ const touchDireactionX = touchEndtPageX - this.state.touchStartPageX; // 滑动横向坐标
+ const touchDireactionY = touchEndtPageY - this.state.touchStartPageY; // 滑动横向坐标
+ if (touchDireactionX > 100 && touchDireactionY > -80) { // 滑动一定距离
+ const { plus } = window;
+ if (location.pathname === '/indexCssMobile') {
+ alert('确定退出吗?', '', [
+ { text: '取消', onPress: () => {} },
+ { text: '是', onPress: () => plus.runtime.quit() }, // 关闭app
+ ]);
+ } else {
+ window.history.back(-1);
+ }
+ }
+ }
+ renderContent(pageText) {
+ if (pageText === 'message') {
+ return (
+
+
+
+ );
+ } else if (pageText === 'scene') {
+ if (location.pathname === '/indexCssMobile/commobileList') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexCssMobile/printPdf') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexCssMobile/processReport') {
+ return (
+
+ );
+ } else if (location.pathname === '/indexCssMobile/commobileBill') {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+
+ {/* 15881422910005021526504105317000 */}
+
+ );
+ }
+ } else if (pageText === 'workbench') {
+ if (location.pathname === '/indexCssMobile/commobileList') {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+
+
+ );
+ }
+ } else if (pageText === 'device') {
+ return (
+
+ );
+ } else if (pageText === 'myself') {
+ if (location.pathname === '/indexCssMobile/contacts') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexCssMobile/revisePassword') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexCssMobile/contactsInfo') {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+
+
+ );
+ }
+ }
+ }
+
+ render() {
+ const { hidden } = this.state;
+ const TabBarHidden = location.pathname === '/indexCssMobile' ? hidden : true;
+ return (
+
+ {this.state.selectedTab === 'scene' ? this.renderContent(this.state.selectedTab) : ''}
+
+ );
+ }
+}
+export default connect(({ app, routing }) =>
+ ({ app, routing }))(indexCssMobile);
+
diff --git a/src/routes/mobile/IndexMobile.js b/src/routes/mobile/IndexMobile.js
new file mode 100644
index 0000000..d63650f
--- /dev/null
+++ b/src/routes/mobile/IndexMobile.js
@@ -0,0 +1,388 @@
+import React from 'react';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import { Icon, NavBar, TabBar, Modal } from 'antd-mobile-v2';
+import { connect,history } from 'umi';
+
+import * as commonUtils from '@/utils/utils';
+import styles from './IndexMobile.less';
+import SceneMobile from './common/SceneMobile';
+import MessageMobile from './common/MessageMobile';
+import ContactsMobile from './common/ContactsMobile';
+import WorkBenchMobile from './common/WorkBenchMobile';
+import CommobileList from './commobileList/commobileList';
+import ProcessReportMobile from './common/ProcessReportMobile';
+import MyselfMobile from './common/MyselfMobile';
+import ContactsInfoMobile from './common/ContactsInfoMobile';
+import RevisePasswordMobile from './common/RevisePasswordMobile';
+import CommobileBill from './common/commobileBill';
+import CommobilePrintPdf from './common/commobilePrintPdf';
+import ExamineMobile from './common/ExamineMobile';
+import Icon1 from '../../assets/mobile/1.png';
+import Icon11 from '../../assets/mobile/11.png';
+import Icon2 from '../../assets/mobile/2.png';
+import Icon21 from '../../assets/mobile/21.png';
+import Icon3 from '../../assets/mobile/3.png';
+import Icon31 from '../../assets/mobile/31.png';
+// import Icon4 from '../../assets/mobile/4.png';
+// import Icon41 from '../../assets/mobile/41.png';
+import Icon5 from '../../assets/mobile/5.png';
+import Icon51 from '../../assets/mobile/51.png';
+// import AppUtil from '../../utils/AppUtil';
+import * as commonBusiness from '../../components/Common/commonBusiness';
+
+// eslint-disable-next-line prefer-destructuring
+const alert = Modal.alert;
+class IndexMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ selectedTab: 'scene',
+ title: '现场',
+ hidden: false,
+ fullScreen: true,
+ touchStartPageX: 0, // 滑动开始的Y坐标
+ touchStartPageY: 0,
+ };
+ }
+ componentWillMount() {
+ this.props.dispatch(history.push('/indexMobile')); // 刷新时更新路由,避免底部按钮和返回按钮错乱显示
+ if (this.props.routing && this.props.routing) {
+ const { state } = this.props.routing;
+ if (state) {
+ const { sId } = state;
+ if (sId === 'myself') {
+ this.setState({ selectedTab: 'myself' });
+ // this.renderContent('contacts');
+ }
+ }
+ }
+
+ // AppUtil.addDrag();
+ }
+
+ componentDidUpdate(prevProps) {
+ /* eslint-disable */
+ if (prevProps?.location.state !== this.props.location.state) {
+ const originTitle = ({
+ message: '消息',
+ scene: '现场',
+ workbench: '工作台',
+ device: '设备',
+ myself: '我的',
+ })[this.state.selectedTab];
+
+ try {
+ const path = JSON.parse(this.props.location.state || '{}');
+ this.setState({ title: path.title || originTitle });
+ } catch (error) {
+ this.setState({ title: originTitle });
+ }
+ }
+ }
+
+ handleTouchStart = (e) => {
+ this.setState({
+ touchStartPageX: e.changedTouches[0].pageX,
+ touchStartPageY: e.changedTouches[0].pageY,
+ });
+ }
+
+ handleTouchEnd = (e) => {
+ const touchEndtPageX = e.changedTouches[0].pageX;
+ const touchEndtPageY = e.changedTouches[0].pageY;
+ const touchDireactionX = touchEndtPageX - this.state.touchStartPageX; // 滑动横向坐标
+ const touchDireactionY = touchEndtPageY - this.state.touchStartPageY; // 滑动横向坐标
+ if (touchDireactionX > 100 && touchDireactionY > -80) { // 滑动一定距离
+ const { plus } = window;
+ if (location.pathname === '/indexMobile') {
+ alert('确定退出吗?', '', [
+ { text: '取消', onPress: () => {} },
+ { text: '是', onPress: () => plus.runtime.quit() }, // 关闭app
+ ]);
+ } else {
+ window.history.back(-1);
+ }
+ }
+ }
+ renderContent(pageText) {
+ if (pageText === 'message') {
+ if (location.pathname === '/indexMobile/examine') {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+
+
+ );
+ }
+ } else if (pageText === 'scene') {
+ if (location.pathname === '/indexMobile/commobileList') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexMobile/printPdf') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexMobile/processReport') {
+ return (
+
+ );
+ } else if (location.pathname === '/indexMobile/commobileBill') {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+
+ {/* 15881422910005021526504105317000 */}
+
+ );
+ }
+ } else if (pageText === 'workbench') {
+ if (location.pathname === '/indexMobile/commobileList') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexMobile/commobileBill') {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+
+
+ );
+ }
+ } else if (pageText === 'device') {
+ return (
+
+ );
+ } else if (pageText === 'myself') {
+ if (location.pathname === '/indexMobile/contacts') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexMobile/revisePassword') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexMobile/contactsInfo') {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+
+
+ );
+ }
+ }
+ }
+
+ render() {
+ const { hidden } = this.state;
+ const TabBarHidden = location.pathname === '/indexMobile' ? hidden : true;
+ const navbarIconShow = !['/indexMobile/commobileBill'].includes(location.pathname);
+ const msg = this.props.app.unRead;
+ const msgObj = commonUtils.isJSON(msg) ? JSON.parse(msg) : {};
+ return (
+
+
+ : null}
+ onLeftClick={() => {
+ if (TabBarHidden && navbarIconShow) {
+ window.history.back(-1);
+ }
+ }
+ }
+ className={styles.iconColor}
+ >
+ {this.state.title}
+
+
+
+
+
+ }
+ selectedIcon={
+ }
+ selected={this.state.selectedTab === 'message'}
+ badge={msgObj.iCount || 0}
+ onPress={() => {
+ const { app } = this.props;
+ const { token } = app;
+ commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 });
+ this.setState({
+ selectedTab: 'message', title: '消息',
+ });
+ this.props.dispatch(history.push('/indexMobile'));
+ }}
+ data-seed="logId"
+ >
+ {this.state.selectedTab === 'message' ? this.renderContent(this.state.selectedTab) : ''}
+
+
+ }
+ selectedIcon={
+
+ }
+ title="现场"
+ key="scene"
+ // badge="new"
+ selected={this.state.selectedTab === 'scene'}
+ onPress={() => {
+ const { app } = this.props;
+ const { token } = app;
+ commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 });
+ this.setState({
+ selectedTab: 'scene', title: '现场',
+ });
+ this.props.dispatch(history.push('/indexMobile'));
+ }}
+ data-seed="logId1"
+ >
+ {this.state.selectedTab === 'scene' ? this.renderContent(this.state.selectedTab) : ''}
+
+
+ }
+ selectedIcon={
+
+ }
+ title="工作台"
+ key="workbench"
+ // badge="2"
+ selected={this.state.selectedTab === 'workbench'}
+ onPress={() => {
+ const { app } = this.props;
+ const { token } = app;
+ commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 });
+ this.setState({
+ selectedTab: 'workbench', title: '工作台',
+ });
+ this.props.dispatch(history.push('/indexMobile'));
+ }}
+ >
+ {this.state.selectedTab === 'workbench' ? this.renderContent(this.state.selectedTab) : ''}
+
+
+ }
+ selectedIcon={
+
+ }
+ title="我的"
+ key="contacts"
+ // badge="4"
+ selected={this.state.selectedTab === 'myself'}
+ onPress={() => {
+ const { app } = this.props;
+ const { token } = app;
+ commonBusiness.clearSocketData({ token, value: {}, sModelsId: 100 });
+ this.setState({
+ selectedTab: 'myself', title: '我的',
+ });
+ this.props.dispatch(history.push('/indexMobile'));
+ }}
+ >
+ {this.state.selectedTab === 'myself' ? this.renderContent(this.state.selectedTab) : ''}
+
+
+
+
+ );
+ }
+}
+export default connect(({ app, routing }) =>
+ ({ app, routing }))(IndexMobile);
+
diff --git a/src/routes/mobile/IndexMobile.less b/src/routes/mobile/IndexMobile.less
new file mode 100644
index 0000000..bc33d01
--- /dev/null
+++ b/src/routes/mobile/IndexMobile.less
@@ -0,0 +1,27 @@
+:global{
+ #tab-bar{
+ background-color: #f0f0f0;
+ }
+ #tab-bar .demoName {
+ font-size: 16px;
+ font-weight: bold;
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ }
+ #tab-bar .demo-preview-item .am-tab-bar {
+ //background-color: red;
+ }
+}
+#tab-bar.demo {
+ //height: 100%;
+ //display: flex;
+ //flex-direction: column;
+}
+.demoContainer{
+ height: calc(100vh - 15px);
+}
+
+.newContainer{
+ height: calc(100vh - 84px);
+}
diff --git a/src/routes/mobile/IndexSrmMobile.js b/src/routes/mobile/IndexSrmMobile.js
new file mode 100644
index 0000000..a95d61e
--- /dev/null
+++ b/src/routes/mobile/IndexSrmMobile.js
@@ -0,0 +1,184 @@
+/* eslint-disable */
+import React from 'react';
+import 'antd-mobile-v2/dist/antd-mobile.css';
+import { Icon, NavBar, TabBar, Modal } from 'antd-mobile';
+import { connect,history } from 'dva';
+
+import styles from './IndexMobile.less';
+import SceneSrmMobile from './common/SceneSrmMobile';
+import MessageMobile from './common/MessageMobile';
+import ContactsMobile from './common/ContactsMobile';
+import WorkBenchMobile from './common/WorkBenchMobile';
+import CommobileList from './commobileList/commobileList';
+import ProcessReportMobile from './common/ProcessReportMobile';
+import MyselfMobile from './common/MyselfMobile';
+import ContactsInfoMobile from './common/ContactsInfoMobile';
+import RevisePasswordMobile from './common/RevisePasswordMobile';
+import CommobileBill from './common/commobileBill';
+import CommobilePrintPdf from './common/commobilePrintPdf';
+import Icon1 from '../../assets/mobile/1.png';
+import Icon11 from '../../assets/mobile/11.png';
+import Icon2 from '../../assets/mobile/2.png';
+import Icon21 from '../../assets/mobile/21.png';
+import Icon3 from '../../assets/mobile/3.png';
+import Icon31 from '../../assets/mobile/31.png';
+import Icon4 from '../../assets/mobile/4.png';
+import Icon41 from '../../assets/mobile/41.png';
+import Icon5 from '../../assets/mobile/5.png';
+import Icon51 from '../../assets/mobile/51.png';
+// import AppUtil from '../../utils/AppUtil';
+import * as commonBusiness from '../../components/Common/commonBusiness';
+
+// eslint-disable-next-line prefer-destructuring
+const alert = Modal.alert;
+class indexSrmMobile extends React.Component {
+ constructor(props) {
+ super(props);
+ this.state = {
+ selectedTab: 'scene',
+ title: '现场',
+ hidden: false,
+ fullScreen: true,
+ touchStartPageX: 0, // 滑动开始的Y坐标
+ touchStartPageY: 0,
+ };
+ }
+ componentWillMount() {
+ this.props.dispatch(history.push('/indexSrmMobile')); // 刷新时更新路由,避免底部按钮和返回按钮错乱显示
+ if (this.props.routing && this.props.routing) {
+ const { state } = this.props.routing;
+ if (state) {
+ const { sId } = state;
+ if (sId === 'myself') {
+ this.setState({ selectedTab: 'myself' });
+ // this.renderContent('contacts');
+ }
+ }
+ }
+
+ // AppUtil.addDrag();
+ }
+ handleTouchStart = (e) => {
+ this.setState({
+ touchStartPageX: e.changedTouches[0].pageX,
+ touchStartPageY: e.changedTouches[0].pageY,
+ });
+ }
+
+ handleTouchEnd = (e) => {
+ const touchEndtPageX = e.changedTouches[0].pageX;
+ const touchEndtPageY = e.changedTouches[0].pageY;
+ const touchDireactionX = touchEndtPageX - this.state.touchStartPageX; // 滑动横向坐标
+ const touchDireactionY = touchEndtPageY - this.state.touchStartPageY; // 滑动横向坐标
+ if (touchDireactionX > 100 && touchDireactionY > -80) { // 滑动一定距离
+ const { plus } = window;
+ if (location.pathname === '/indexSrmMobile') {
+ alert('确定退出吗?', '', [
+ { text: '取消', onPress: () => {} },
+ { text: '是', onPress: () => plus.runtime.quit() }, // 关闭app
+ ]);
+ } else {
+ window.history.back(-1);
+ }
+ }
+ }
+ renderContent(pageText) {
+ if (pageText === 'message') {
+ return (
+
+
+
+ );
+ } else if (pageText === 'scene') {
+ if (location.pathname === '/indexSrmMobile/commobileList') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexSrmMobile/printPdf') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexSrmMobile/processReport') {
+ return (
+
+ );
+ } else if (location.pathname === '/indexSrmMobile/commobileBill') {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+
+ {/* 15881422910005021526504105317000 */}
+
+ );
+ }
+ } else if (pageText === 'workbench') {
+ if (location.pathname === '/indexSrmMobile/commobileList') {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+
+
+ );
+ }
+ } else if (pageText === 'device') {
+ return (
+
+ );
+ } else if (pageText === 'myself') {
+ if (location.pathname === '/indexSrmMobile/contacts') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexSrmMobile/revisePassword') {
+ return (
+
+
+
+ );
+ } else if (location.pathname === '/indexSrmMobile/contactsInfo') {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+
+
+ );
+ }
+ }
+ }
+
+ render() {
+ const { hidden } = this.state;
+ const TabBarHidden = location.pathname === '/indexCssMobile' ? hidden : true;
+ return (
+
+ {this.state.selectedTab === 'scene' ? this.renderContent(this.state.selectedTab) : ''}
+
+ );
+ }
+}
+export default connect(({ app, routing }) =>
+ ({ app, routing }))(indexSrmMobile);
+
diff --git a/src/routes/mobile/commobileList/commobileList.js b/src/routes/mobile/commobileList/commobileList.js
new file mode 100644
index 0000000..fa60bc6
--- /dev/null
+++ b/src/routes/mobile/commobileList/commobileList.js
@@ -0,0 +1,44 @@
+/**
+ * @Date: 2019-05-20T16:45:00+08:00
+ * @Last modified time: 2019-06-26T18:40:44+08:00
+ */
+
+import React from 'react';
+import { connect } from 'dva';
+import CommobileListComponent from '../../../mobile/common/CommobileList';
+import * as commonUtils from '../../../utils/utils';
+
+function commobileList({
+ dispatch, app, content, location, sModelsId, sModelsType,
+}) {
+ /* 只有state与sModelsId同时为空时 返回空白页,设备是固定模块id */
+ if (location.state === null && commonUtils.isEmptyObject(sModelsId)) {
+ return ();
+ }
+ let param = {};
+ if (location.pathname !== '/indexMobile') {
+ if (location.state.sParam) {
+ param = commonUtils.convertStrToObj(location.state.sParam);
+ } else {
+ param = commonUtils.convertStrToObj(location.state);
+ }
+ }
+ const commonListProps = {
+ app,
+ content,
+ sModelsId: commonUtils.isNotEmptyObject(sModelsId) && location.pathname === '/indexMobile' ? sModelsId : param.sModelsId,
+ sModelsType: commonUtils.isNotEmptyObject(sModelsType) ? sModelsType : param.sModelsType,
+ formRoute: '/commobileList',
+ dispatch,
+ };
+ if (commonUtils.isNotEmptyArr(param.returnFilterCondition)) { /* 未清到单据 单据回刷到列表所带条件 */
+ commonListProps.returnFilterCondition = param.returnFilterCondition;
+ commonListProps.returnFilterName = param.copyTo.listFilterName;
+ }
+ return (
+
+ );
+}
+
+export default connect(({ routing, app, content }) =>
+ ({ routing, app, content }))(commobileList);
diff --git a/src/routes/mobile/common/ContactsInfoMobile.js b/src/routes/mobile/common/ContactsInfoMobile.js
new file mode 100644
index 0000000..4cda798
--- /dev/null
+++ b/src/routes/mobile/common/ContactsInfoMobile.js
@@ -0,0 +1,39 @@
+import React from 'react';
+import { connect } from 'dva';
+import ContactsInfoMobileComponent from '../../../mobile/common/ContactsInfoMobile';
+import * as commonUtils from '../../../utils/utils';
+
+
+function ContactsInfoMobile({
+ dispatch, app, content, location, sModelsId, sModelType,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+
+ // const sParam = JSON.parse(location.state.sParam);
+ let sParam = {};
+ if (location.state.sParam) {
+ sParam = commonUtils.convertStrToObj(location.state.sParam);
+ } else {
+ sParam = commonUtils.convertStrToObj(location.state);
+ }
+ const ContactsInfoMobileProps = {
+ app,
+ content,
+ dispatch,
+ sModelsId,
+ sModelType,
+ personPic: sParam.personPic,
+ formRoute: '/contactsInfo',
+ peopleInfosId: sParam.sId,
+ peopleInfoData: sParam.slaveData,
+ onRemovePane: removePane,
+ };
+ return (
+
+ );
+}
+
+export default connect(({ routing, app, content }) =>
+ ({ routing, app, content }))(ContactsInfoMobile);
diff --git a/src/routes/mobile/common/ContactsMobile.js b/src/routes/mobile/common/ContactsMobile.js
new file mode 100644
index 0000000..4e6d4fb
--- /dev/null
+++ b/src/routes/mobile/common/ContactsMobile.js
@@ -0,0 +1,25 @@
+import React from 'react';
+import { connect } from 'dva';
+import ContactsMobileComponent from '../../../mobile/common/ContactsMobile';
+
+function ContactsMobile({
+ dispatch, app, content, sModelsId,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+ const ContactsMobileProps = {
+ app,
+ content,
+ dispatch,
+ sModelsId,
+ onRemovePane: removePane,
+ };
+
+ return (
+
+ );
+}
+
+export default connect(({ app, content }) =>
+ ({ app, content }))(ContactsMobile);
diff --git a/src/routes/mobile/common/DeviceMobile.js b/src/routes/mobile/common/DeviceMobile.js
new file mode 100644
index 0000000..dd5f97c
--- /dev/null
+++ b/src/routes/mobile/common/DeviceMobile.js
@@ -0,0 +1,26 @@
+import React from 'react';
+import { connect } from 'dva';
+import DeviceMobileComponent from '../../../mobile/common/CommobileList';
+
+function DeviceMobile({
+ dispatch, app, content, sModelsId,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+
+ const DeviceMobile = {
+ sModelsId,
+ app,
+ content,
+ dispatch,
+ onRemovePane: removePane,
+ };
+
+ return (
+
+ );
+}
+
+export default connect(({ app, content }) =>
+ ({ app, content }))(DeviceMobile);
diff --git a/src/routes/mobile/common/ExamineMobile.js b/src/routes/mobile/common/ExamineMobile.js
new file mode 100644
index 0000000..b7e524a
--- /dev/null
+++ b/src/routes/mobile/common/ExamineMobile.js
@@ -0,0 +1,37 @@
+import React from 'react';
+import { connect } from 'dva';
+import ExamineMobileComponent from '../../../mobile/common/ExamineMobile';
+import * as commonUtils from '../../../utils/utils';
+
+function ExamineMobile({
+ dispatch, app, content, sModelsId, location,
+}) {
+ /* 只有state与sModelsId同时为空时 返回空白页,设备是固定模块id */
+ if (location.state === null && commonUtils.isEmptyObject(sModelsId)) {
+ return ();
+ }
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+ let param = {};
+ if (commonUtils.isNotEmptyObject(location.state) && location.state.sParam) {
+ param = commonUtils.convertStrToObj(location.state.sParam);
+ } else {
+ param = commonUtils.convertStrToObj(location.state);
+ }
+ const ExamineMobileProps = {
+ sModelsId,
+ app,
+ content,
+ dispatch,
+ ...param,
+ onRemovePane: removePane,
+ };
+
+ return (
+
+ );
+}
+
+export default connect(({ app, content }) =>
+ ({ app, content }))(ExamineMobile);
diff --git a/src/routes/mobile/common/MessageMobile.js b/src/routes/mobile/common/MessageMobile.js
new file mode 100644
index 0000000..d9fe872
--- /dev/null
+++ b/src/routes/mobile/common/MessageMobile.js
@@ -0,0 +1,26 @@
+import React from 'react';
+import { connect } from 'dva';
+import MessageMobileComponent from '../../../mobile/common/MessageMobile';
+
+function MessageMobile({
+ dispatch, app, content, sModelsId,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+
+ const MessageMobile = {
+ sModelsId,
+ app,
+ content,
+ dispatch,
+ onRemovePane: removePane,
+ };
+ return (
+
+ );
+}
+
+
+export default connect(({ app, content }) =>
+ ({ app, content }))(MessageMobile);
diff --git a/src/routes/mobile/common/MyselfMobile.js b/src/routes/mobile/common/MyselfMobile.js
new file mode 100644
index 0000000..73fc454
--- /dev/null
+++ b/src/routes/mobile/common/MyselfMobile.js
@@ -0,0 +1,27 @@
+import React from 'react';
+import { connect } from 'dva';
+import MyselfMobileComponent from '../../../mobile/common/MyselfMobile';
+
+function MyselfMobile({
+ dispatch, app, content, sModelType, sModelsId,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+
+ const myselfMobileProps = {
+ app,
+ content,
+ dispatch,
+ sModelType,
+ sModelsId,
+ formRoute: '/myself',
+ onRemovePane: removePane,
+ };
+ return (
+
+ );
+}
+
+export default connect(({ app, content }) =>
+ ({ app, content }))(MyselfMobile);
diff --git a/src/routes/mobile/common/NewsMobile.js b/src/routes/mobile/common/NewsMobile.js
new file mode 100644
index 0000000..13ffe38
--- /dev/null
+++ b/src/routes/mobile/common/NewsMobile.js
@@ -0,0 +1,26 @@
+import React from 'react';
+import { connect } from 'dva';
+import NewsMobileComponent from '../../../mobile/common/NewsMobile';
+
+function NewsMobile({
+ dispatch, app, content, sModelsId,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+
+ const NewsMobile = {
+ sModelsId,
+ app,
+ content,
+ dispatch,
+ onRemovePane: removePane,
+ };
+ return (
+
+ );
+}
+
+
+export default connect(({ app, content }) =>
+ ({ app, content }))(NewsMobile);
diff --git a/src/routes/mobile/common/ProcessReportMobile.js b/src/routes/mobile/common/ProcessReportMobile.js
new file mode 100644
index 0000000..4f14fcb
--- /dev/null
+++ b/src/routes/mobile/common/ProcessReportMobile.js
@@ -0,0 +1,32 @@
+import React from 'react';
+import { connect } from 'dva';
+import ProcessReportMobileComponent from '../../../mobile/common/ProcessReportMobile';
+import * as commonUtils from '../../../utils/utils';
+
+function ProcessReportMobile({
+ dispatch, app, content, location,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+ let param = {};
+ if (location.state.sParam) {
+ param = commonUtils.convertStrToObj(location.state.sParam);
+ } else {
+ param = commonUtils.convertStrToObj(location.state);
+ }
+ const processReportMobileProps = {
+ app,
+ content,
+ dispatch,
+ ...param,
+ onRemovePane: removePane,
+ };
+
+ return (
+
+ );
+}
+
+export default connect(({ app, content, routing }) =>
+ ({ app, content, routing }))(ProcessReportMobile);
diff --git a/src/routes/mobile/common/RevisePasswordMobile.js b/src/routes/mobile/common/RevisePasswordMobile.js
new file mode 100644
index 0000000..adeb073
--- /dev/null
+++ b/src/routes/mobile/common/RevisePasswordMobile.js
@@ -0,0 +1,26 @@
+import React from 'react';
+import { connect } from 'dva';
+import RevisePasswordMobileComponent from '../../../mobile/common/RevisePasswordMobile';
+
+function RevisePasswordMobile({
+ dispatch, app, content, sModelType, sModelsId,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+
+ const RevisePasswordMobileProps = {
+ app,
+ content,
+ dispatch,
+ sModelType,
+ sModelsId,
+ onRemovePane: removePane,
+ };
+ return (
+
+ );
+}
+
+export default connect(({ app, content }) =>
+ ({ app, content }))(RevisePasswordMobile);
diff --git a/src/routes/mobile/common/SceneCssMobile.js b/src/routes/mobile/common/SceneCssMobile.js
new file mode 100644
index 0000000..3d9681e
--- /dev/null
+++ b/src/routes/mobile/common/SceneCssMobile.js
@@ -0,0 +1,26 @@
+import React from 'react';
+import { connect } from 'dva';
+import SceneCssMobileComponent from '../../../mobile/common/SceneCssMobile';
+
+function SceneMobile({
+ dispatch, app, content, sModelType, sModelsId,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+
+ const sceneMobileProps = {
+ app,
+ content,
+ dispatch,
+ sModelType,
+ sModelsId,
+ onRemovePane: removePane,
+ };
+ return (
+
+ );
+}
+
+export default connect(({ app, content }) =>
+ ({ app, content }))(SceneMobile);
diff --git a/src/routes/mobile/common/SceneMobile.js b/src/routes/mobile/common/SceneMobile.js
new file mode 100644
index 0000000..5fb7956
--- /dev/null
+++ b/src/routes/mobile/common/SceneMobile.js
@@ -0,0 +1,26 @@
+import React from 'react';
+import { connect } from 'dva';
+import SceneMobileComponent from '../../../mobile/common/SceneMobile';
+
+function SceneMobile({
+ dispatch, app, content, sModelType, sModelsId,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+
+ const sceneMobileProps = {
+ app,
+ content,
+ dispatch,
+ sModelType,
+ sModelsId,
+ onRemovePane: removePane,
+ };
+ return (
+
+ );
+}
+
+export default connect(({ app, content }) =>
+ ({ app, content }))(SceneMobile);
diff --git a/src/routes/mobile/common/SceneSrmMobile.js b/src/routes/mobile/common/SceneSrmMobile.js
new file mode 100644
index 0000000..c2ca05f
--- /dev/null
+++ b/src/routes/mobile/common/SceneSrmMobile.js
@@ -0,0 +1,26 @@
+import React from 'react';
+import { connect } from 'dva';
+import SceneSrmMobileComponent from '../../../mobile/common/SceneSrmMobile';
+
+function SceneMobile({
+ dispatch, app, content, sModelType, sModelsId,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+
+ const sceneMobileProps = {
+ app,
+ content,
+ dispatch,
+ sModelType,
+ sModelsId,
+ onRemovePane: removePane,
+ };
+ return (
+
+ );
+}
+
+export default connect(({ app, content }) =>
+ ({ app, content }))(SceneMobile);
diff --git a/src/routes/mobile/common/WorkBenchMobile.js b/src/routes/mobile/common/WorkBenchMobile.js
new file mode 100644
index 0000000..41f0d91
--- /dev/null
+++ b/src/routes/mobile/common/WorkBenchMobile.js
@@ -0,0 +1,27 @@
+import React from 'react';
+import { connect } from 'dva';
+import WorkBenchMobileComponent from '../../../mobile/common/WorkBenchMobile';
+
+
+function WorkBenchMobile({
+ dispatch, app, content, sModelsId,
+}) {
+ function removePane(changePanes, currentPane) {
+ dispatch({ type: 'app/removePane', payload: { changePanes, currentPane } });
+ }
+
+ const WorkBenchMobile = {
+ sModelsId,
+ app,
+ content,
+ dispatch,
+ onRemovePane: removePane,
+ };
+ return (
+
+ );
+}
+
+
+export default connect(({ app, content }) =>
+ ({ app, content }))(WorkBenchMobile);
diff --git a/src/routes/mobile/common/commobileBill.js b/src/routes/mobile/common/commobileBill.js
new file mode 100644
index 0000000..5bf808c
--- /dev/null
+++ b/src/routes/mobile/common/commobileBill.js
@@ -0,0 +1,37 @@
+/**
+ * @Date: 2019-05-20T16:45:00+08:00
+ * @Last modified time: 2019-06-26T18:40:44+08:00
+ */
+
+import React from 'react';
+import { connect } from 'dva';
+// import CommobileBillComponent from '../../../mobile/common/CommobileTabBill';
+import CommobileBillComponent from '../../../mobile/common/CommobileSubBill';
+import * as commonUtils from '../../../utils/utils';
+
+function commobileBill({
+ dispatch, app, content, location,
+}) {
+ if (location.state === null) {
+ return ();
+ }
+ // const param = commonUtils.convertStrToObj(location.state.sParam);
+ let param = {};
+ if (location.state.sParam) {
+ param = commonUtils.convertStrToObj(location.state.sParam);
+ } else {
+ param = commonUtils.convertStrToObj(location.state);
+ }
+ const commonListProps = {
+ app,
+ content,
+ ...param,
+ dispatch,
+ };
+ return (
+
+ );
+}
+
+export default connect(({ routing, app, content }) =>
+ ({ routing, app, content }))(commobileBill);
diff --git a/src/routes/mobile/common/commobilePrintPdf.js b/src/routes/mobile/common/commobilePrintPdf.js
new file mode 100644
index 0000000..7409fb5
--- /dev/null
+++ b/src/routes/mobile/common/commobilePrintPdf.js
@@ -0,0 +1,36 @@
+/**
+ * @Date: 2019-05-20T16:45:00+08:00
+ * @Last modified time: 2019-06-26T18:40:44+08:00
+ */
+
+import React from 'react';
+import { connect } from 'dva';
+import * as commonUtils from '../../../utils/utils';
+import CommobilePrintPdf from '../../../mobile/common/CommobilePrintPdf';
+
+function commobilePrintPdf({
+ dispatch, app, content, location,
+}) {
+ if (location.state === null) {
+ return ();
+ }
+ // const param = commonUtils.convertStrToObj(location.state.sParam);
+ let param = {};
+ if (location.state.sParam) {
+ param = commonUtils.convertStrToObj(location.state.sParam);
+ } else {
+ param = commonUtils.convertStrToObj(location.state);
+ }
+ const commobilePrintPdfProps = {
+ app,
+ content,
+ ...param,
+ dispatch,
+ };
+ return (
+
+ );
+}
+
+export default connect(({ routing, app, content }) =>
+ ({ routing, app, content }))(commobilePrintPdf);
diff --git a/src/routes/mobile/login/LoginMobile.js b/src/routes/mobile/login/LoginMobile.js
new file mode 100644
index 0000000..119a1e0
--- /dev/null
+++ b/src/routes/mobile/login/LoginMobile.js
@@ -0,0 +1,30 @@
+import React from 'react';
+import { connect } from 'umi';
+import LoginMobileComponent from '../../../mobile/login/LoginMobile';
+
+function LoginMobile({
+ dispatch, app, content, loginMobile,
+}) {
+ const LoginProps = {
+ app,
+ content,
+ onLogin: userlogin,
+ dispatch,
+ loginMobile,
+ };
+
+ function userlogin(param) {
+ dispatch({
+ type: 'login/login',
+ payload: { ...param, dispatch },
+ });
+ }
+
+ return (
+
+
+
+ );
+}
+
+export default connect(({ app, content }) => ({ app, content }))(LoginMobile);
diff --git a/src/routes/mobile/logincss/LoginCss.js b/src/routes/mobile/logincss/LoginCss.js
new file mode 100644
index 0000000..e4837c6
--- /dev/null
+++ b/src/routes/mobile/logincss/LoginCss.js
@@ -0,0 +1,30 @@
+import React from 'react';
+import { connect } from 'dva';
+import LoginCssComponent from '../../../mobile/logincss/LoginCss';
+
+function LoginCss({
+ dispatch, app, content, loginMobile,
+}) {
+ const LoginProps = {
+ app,
+ content,
+ onLogin: userlogin,
+ dispatch,
+ loginMobile,
+ };
+
+ function userlogin(param) {
+ dispatch({
+ type: 'login/login',
+ payload: { ...param, dispatch },
+ });
+ }
+
+ return (
+
+
+
+ );
+}
+
+export default connect(({ app, content }) => ({ app, content }))(LoginCss);
diff --git a/src/routes/mobile/loginsrm/LoginSrm.js b/src/routes/mobile/loginsrm/LoginSrm.js
new file mode 100644
index 0000000..6bcf42e
--- /dev/null
+++ b/src/routes/mobile/loginsrm/LoginSrm.js
@@ -0,0 +1,30 @@
+import React from 'react';
+import { connect } from 'dva';
+import LoginSrmComponent from '../../../mobile/loginsrm/LoginSrm';
+
+function LoginSrm({
+ dispatch, app, content, loginMobile,
+}) {
+ const LoginProps = {
+ app,
+ content,
+ onLogin: userlogin,
+ dispatch,
+ loginMobile,
+ };
+
+ function userlogin(param) {
+ dispatch({
+ type: 'login/login',
+ payload: { ...param, dispatch },
+ });
+ }
+
+ return (
+
+
+
+ );
+}
+
+export default connect(({ app, content }) => ({ app, content }))(LoginSrm);
diff --git a/src/utils/AppUtil.js b/src/utils/AppUtil.js
new file mode 100644
index 0000000..4c8fbd8
--- /dev/null
+++ b/src/utils/AppUtil.js
@@ -0,0 +1,29 @@
+class AppUtil {
+ static openSettingPage() {
+ const { plus } = window;
+ if (plus && plus.webview) {
+ const view = plus.webview.create('/setting.html', 'setting', { titleNView: '设置' });
+ view.show('pop-in');
+ }
+ }
+
+ static addDrag() {
+ const { plus } = window;
+ if (plus && plus.webview) {
+ const webview = plus.webview.currentWebview();
+ webview.drag({
+ direction: 'right',
+ moveMode: 'bounce',
+ }, {
+ view: plus.runtime.appid,
+ moveMode: 'silent',
+ }, (e) => {
+ if (e.type === 'end') {
+ webview.back();
+ }
+ });
+ }
+ }
+}
+
+export default AppUtil;