Commit 499f04f98495d310cfef70da367fdda425233bc9

Authored by Min
1 parent 5ad0fab1

1.产品提醒重新设计实现

src/components/Common/CommonHooks/useCommonBase.js
@@ -677,7 +677,15 @@ const useCommonBase = props => { @@ -677,7 +677,15 @@ const useCommonBase = props => {
677 globalData?.currentStartWorkMachineTask, 677 globalData?.currentStartWorkMachineTask,
678 currentWorkOrderInfo: globalData?.currentWorkOrderInfo 678 currentWorkOrderInfo: globalData?.currentWorkOrderInfo
679 }; 679 };
680 - conditonValues[fieldNameFilter] = tempProps[tableName][fieldName]; 680 + if (
  681 + tempProps &&
  682 + tempProps[tableName] !== undefined &&
  683 + tempProps[tableName][fieldName] !== undefined
  684 + ) {
  685 + conditonValues[fieldNameFilter] = tempProps[tableName][fieldName];
  686 + } else {
  687 + conditonValues[fieldNameFilter] = ''; // 不存在时给默认值
  688 + }
681 } else if (name === tableName && !commonUtils.isEmpty(record)) { 689 } else if (name === tableName && !commonUtils.isEmpty(record)) {
682 const data = record; 690 const data = record;
683 conditonValues[fieldNameFilter] = data[fieldName]; 691 conditonValues[fieldNameFilter] = data[fieldName];
src/mes/common/routerComponent/index.js
@@ -9,7 +9,7 @@ import * as commonUtils from "@/utils/utils"; @@ -9,7 +9,7 @@ import * as commonUtils from "@/utils/utils";
9 import CommonModelComponent from "@/mes/common/commonModelComponent"; 9 import CommonModelComponent from "@/mes/common/commonModelComponent";
10 import MachineTasks from "@/mes/scheduledTasks/machineTasks"; 10 import MachineTasks from "@/mes/scheduledTasks/machineTasks";
11 import ProcessInstructionBook from "@/mes/scheduledTasks/processInstructionBook"; 11 import ProcessInstructionBook from "@/mes/scheduledTasks/processInstructionBook";
12 -import PrenatalReminderInfo from "@/mes/scheduledTasks/prenatalReminderInfo"; 12 +import PrenatalReminderInfo from "@/mes/scheduledTasks/prenatalReminderInfo1";
13 import ProductionExecMain from "@/mes/productionExec/productionExecMain"; 13 import ProductionExecMain from "@/mes/productionExec/productionExecMain";
14 import AbnormalEventReporting from "@/mes/scheduledTasks/abnormalEventReporting"; 14 import AbnormalEventReporting from "@/mes/scheduledTasks/abnormalEventReporting";
15 import RunningStatus from "@/mes/common/RunningStatus"; 15 import RunningStatus from "@/mes/common/RunningStatus";
src/mes/scheduledTasks/prenatalReminderInfo1/assets/1.png 0 → 100644

511 Bytes

src/mes/scheduledTasks/prenatalReminderInfo1/assets/2.png 0 → 100644

528 Bytes

src/mes/scheduledTasks/prenatalReminderInfo1/assets/3.png 0 → 100644

552 Bytes

src/mes/scheduledTasks/prenatalReminderInfo1/assets/4.png 0 → 100644

635 Bytes

src/mes/scheduledTasks/prenatalReminderInfo1/assets/5.png 0 → 100644

601 Bytes

src/mes/scheduledTasks/prenatalReminderInfo1/assets/6.png 0 → 100644

553 Bytes

src/mes/scheduledTasks/prenatalReminderInfo1/assets/7.png 0 → 100644

404 Bytes

src/mes/scheduledTasks/prenatalReminderInfo1/index.js 0 → 100644
  1 +import React, { useEffect } from "react";
  2 +import * as commonUtils from "@/utils/utils";
  3 +import useCommonBase from "@/components/Common/CommonHooks/useCommonBase";
  4 +
  5 +import ShowType from "@/components/Common/CommonComponent";
  6 +
  7 +import styles from "./index.less";
  8 +
  9 +const usePrenatalReminderInfoEvent = props => {
  10 + const { formData } = props;
  11 +
  12 + useEffect(
  13 + async () => {
  14 + if (commonUtils.isNotEmptyArr(formData)) {
  15 + const result = await handleGetData(formData[0]);
  16 + const result1 = await handleGetData(formData[1], 1);
  17 + const result2 = await handleGetData(formData[2], 2);
  18 + props.onSaveState({
  19 + ...result,
  20 + ...result1,
  21 + ...result2,
  22 + slaveConfig: formData[0],
  23 + slave1Config: formData[1],
  24 + slave2Config: formData[2],
  25 + bFinish: true
  26 + });
  27 + }
  28 + },
  29 + [formData]
  30 + );
  31 +
  32 + // 获取数据集
  33 + const handleGetData = async (config, index = "") => {
  34 + const { app } = props;
  35 + const { userinfo = {} } = app;
  36 + const globalData = commonUtils.convertStrToObj(
  37 + localStorage.xlybusinessglobalData
  38 + );
  39 + const { sWorkshopId } = userinfo;
  40 + const { currentSelectedMachineTaskDataRow = {} } = globalData;
  41 + const { sOrderId } = currentSelectedMachineTaskDataRow;
  42 + const conditonValues = props.onGetSqlConditionValues(config);
  43 + const addState =
  44 + (await props.onGetDataSet({
  45 + name: `slave${index}`,
  46 + configData: config,
  47 + condition: {
  48 + sSqlCondition: {
  49 + ...conditonValues,
  50 + sWorkshopId,
  51 + sOrderId
  52 + }
  53 + },
  54 + isWait: true
  55 + })) || {};
  56 + return addState;
  57 + };
  58 +
  59 + return {
  60 + ...props
  61 + };
  62 +};
  63 +
  64 +const PrenatalReminderInfo = baseProps => {
  65 + const props = usePrenatalReminderInfoEvent(useCommonBase(baseProps));
  66 + const { bFinish } = props;
  67 + if (!bFinish) return "";
  68 +
  69 + const { app, slaveData, slave1Data, slave2Data, slaveConfig, slave1Config, slave2Config } = props;
  70 +
  71 + const viewRow1 = commonUtils.isNotEmptyArr(slaveData) ? slaveData[0] : {};
  72 + const viewRow2 = commonUtils.isNotEmptyArr(slave1Data) ? slave1Data[0] : {};
  73 + const viewRow3 = commonUtils.isNotEmptyArr(slave2Data) ? slave2Data[0] : {};
  74 + const viewRow = { ...viewRow1, ...viewRow2, ...viewRow3 };
  75 + const tableName = "slave";
  76 +
  77 + const memoListFilter =
  78 + slaveConfig?.gdsconfigformslave
  79 + .filter(item => item.sControlName?.includes("_"));
  80 + console.log('memoListFilter', memoListFilter, slave2Config?.gdsconfigformslave, slaveConfig, slave1Config, slave2Config);
  81 +
  82 + const leftSize = Math.ceil(memoListFilter.length / 2);
  83 + const rightSize = memoListFilter.length - leftSize;
  84 + const leftMemoList = memoListFilter.slice(0, leftSize);
  85 + const rightMemoList = memoListFilter.slice(leftSize, memoListFilter.length);
  86 +
  87 + return (
  88 + <div className={styles.prenatalReminderInfo}>
  89 + {[
  90 + "技术评审汇签",
  91 + "客户投诉",
  92 + "本批生产注意事项",
  93 + "不合格报告",
  94 + "车间产前提醒"
  95 + ].map((title, index) => {
  96 + let dataValueNew = "";
  97 + const child = {
  98 + sId: commonUtils.createSid(),
  99 + sName: `sTempMemo${index}`,
  100 + sControlName: "",
  101 + bVisible: true,
  102 + showName: title
  103 + };
  104 +
  105 + const memoList = new Array(20)
  106 + .fill("")
  107 + .map((_, i) => viewRow[`sNoteMemo${i + 1}`]);
  108 +
  109 + const getMemoValue = (from, to) => {
  110 + const tempList = memoList
  111 + .slice(from, to)
  112 + .filter(item => item !== undefined)
  113 + .map((item, i) => `${i + 1}) ${item}`);
  114 + return tempList.join("\n");
  115 + };
  116 +
  117 + if (title === "客户投诉") {
  118 + dataValueNew = getMemoValue(0, 4);
  119 + } else if (title === "不合格报告") {
  120 + dataValueNew = getMemoValue(4, 8);
  121 + } else if (title === "车间产前提醒") {
  122 + dataValueNew = viewRow.sMemo;
  123 + } else if (title === "本批生产注意事项") {
  124 + dataValueNew = getMemoValue(16, 20);
  125 + } else if (title === "技术评审汇签") {
  126 + const dataValue1 = leftMemoList
  127 + .map(
  128 + ({ sName, showName }) => `${showName}:${viewRow[sName] || ""}`
  129 + )
  130 + .join("\n");
  131 +
  132 + const dataValue2 = rightMemoList
  133 + .map(
  134 + ({ sName, showName }) => `${showName}:${viewRow[sName] || ""}`
  135 + )
  136 + .join("\n");
  137 + const showTypeProps1 = {
  138 + app,
  139 + className: styles.showType,
  140 + iColValue: 24,
  141 + name: tableName,
  142 + record: viewRow,
  143 + sId: commonUtils.createSid(),
  144 + getSqlDropDownData: props.getSqlDropDownData,
  145 + getSqlCondition: props.getSqlCondition,
  146 + handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord,
  147 + getFloatNum: props.getFloatNum,
  148 + onChange: props.onDataChange,
  149 + showConfig: { ...child, costomStyle: styles.hideRightBorder },
  150 + slaveConfig: props[`${tableName}Config`],
  151 + formItemLayout: { labelCol: { span: 0 }, wrapperCol: { span: 24 } },
  152 + textArea: true,
  153 + enabled: false,
  154 + dataValue: dataValue1,
  155 + bTable: true,
  156 + bViewTable: true,
  157 + formRoute: props.formRoute,
  158 + getDateFormat: props.getDateFormat
  159 + };
  160 +
  161 + const showTypeProps2 = {
  162 + app,
  163 + className: styles.showType,
  164 + iColValue: 24,
  165 + name: tableName,
  166 + record: viewRow,
  167 + sId: commonUtils.createSid(),
  168 + getSqlDropDownData: props.getSqlDropDownData,
  169 + getSqlCondition: props.getSqlCondition,
  170 + handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord,
  171 + getFloatNum: props.getFloatNum,
  172 + onChange: props.onDataChange,
  173 + showConfig: { ...child, costomStyle: styles.hideLeftBorder },
  174 + slaveConfig: props[`${tableName}Config`],
  175 + formItemLayout: { labelCol: { span: 0 }, wrapperCol: { span: 24 } },
  176 + textArea: true,
  177 + enabled: false,
  178 + dataValue: dataValue2,
  179 + bTable: true,
  180 + bViewTable: true,
  181 + formRoute: props.formRoute,
  182 + getDateFormat: props.getDateFormat
  183 + };
  184 +
  185 + return (
  186 + <div>
  187 + <div className={styles.title}>{title}</div>
  188 + <div className={styles.content1}>
  189 + <ShowType {...showTypeProps1} />
  190 + <ShowType {...showTypeProps2} />
  191 + </div>
  192 + </div>
  193 + );
  194 + }
  195 + const showTypeProps = {
  196 + app,
  197 + className: styles.showType,
  198 + iColValue: 24,
  199 + name: tableName,
  200 + record: viewRow,
  201 + sId: commonUtils.createSid(),
  202 + getSqlDropDownData: props.getSqlDropDownData,
  203 + getSqlCondition: props.getSqlCondition,
  204 + handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord,
  205 + getFloatNum: props.getFloatNum,
  206 + onChange: props.onDataChange,
  207 + showConfig: child,
  208 + slaveConfig: props[`${tableName}Config`],
  209 + formItemLayout: { labelCol: { span: 0 }, wrapperCol: { span: 24 } },
  210 + textArea: true,
  211 + enabled: false,
  212 + dataValue: dataValueNew,
  213 + bTable: true,
  214 + bViewTable: true,
  215 + formRoute: props.formRoute,
  216 + getDateFormat: props.getDateFormat
  217 + };
  218 +
  219 + return (
  220 + <div>
  221 + <div className={styles.title}>{title}</div>
  222 + <div className={styles.content}>
  223 + <ShowType {...showTypeProps} />
  224 + </div>
  225 + </div>
  226 + );
  227 + })}
  228 + </div>
  229 + );
  230 +};
  231 +
  232 +export default PrenatalReminderInfo;
src/mes/scheduledTasks/prenatalReminderInfo1/index.less 0 → 100644
  1 +@import "~@/mixins.less";
  2 +
  3 +.prenatalReminderInfo {
  4 + .size();
  5 + // border: 1px solid red;
  6 + display: grid;
  7 + /* 创建两列,每列宽度自动分配 */
  8 + grid-template-columns: repeat(2, 1fr);
  9 + /* 创建三行,每行最小高度为100px,自动扩展 */
  10 + grid-template-rows: repeat(3, minmax(100px, auto));
  11 + /* 设置行列间距均为10px */
  12 + gap: 10px;
  13 +
  14 +
  15 + >div {
  16 + display: flex;
  17 + flex-direction: column;
  18 + padding: 0 10px 10px 10px;
  19 + background-color: #FFF;
  20 +
  21 + .title {
  22 + .size(100%, 40px);
  23 + .flex(center);
  24 + font-size: 20px;
  25 + font-weight: bold;
  26 + background-color: #FFF;
  27 + color: #1890FF;
  28 + padding-left: 25px;
  29 + }
  30 +
  31 + .content {
  32 + .size(100%, calc(100% - 40px));
  33 + background: #F0F0F0;
  34 +
  35 + :global {
  36 + .ant-input[disabled] {
  37 + background: #F0F0F0;
  38 + }
  39 +
  40 + *:not(.ant-form-item-control-input-content) {
  41 + padding: 0 !important;
  42 + }
  43 + }
  44 + }
  45 +
  46 + .content1 {
  47 + .size(100%, calc(100% - 40px));
  48 + background: #F0F0F0;
  49 +
  50 + .flex();
  51 +
  52 + :global {
  53 + .ant-input[disabled] {
  54 + background: #F0F0F0;
  55 + }
  56 +
  57 + *:not(.ant-form-item-control-input-content) {
  58 + padding: 0 !important;
  59 + }
  60 + }
  61 +
  62 + }
  63 + }
  64 +
  65 + >div:first-child {
  66 + grid-column: span 2;
  67 + }
  68 +
  69 + >div:nth-child(1) .title {
  70 + background: url(./assets/1.png) no-repeat;
  71 + background-position-x: -10px;
  72 + }
  73 +
  74 + >div:nth-child(2) .title {
  75 + background: url(./assets/2.png) no-repeat;
  76 + background-position-x: -10px;
  77 + }
  78 +
  79 + >div:nth-child(3) .title {
  80 + background: url(./assets/3.png) no-repeat;
  81 + background-position-x: -10px;
  82 + }
  83 +
  84 + >div:nth-child(4) .title {
  85 + background: url(./assets/4.png) no-repeat;
  86 + background-position-x: -10px;
  87 + }
  88 +
  89 + >div:nth-child(5) .title {
  90 + background: url(./assets/5.png) no-repeat;
  91 + background-position-x: -10px;
  92 + }
  93 +
  94 + >div:nth-child(6) .title {
  95 + background: url(./assets/6.png) no-repeat;
  96 + background-position-x: -10px;
  97 + }
  98 +
  99 + >div:nth-child(7) .title {
  100 + background: url(./assets/7.png) no-repeat;
  101 + background-position-x: -10px;
  102 + }
  103 +
  104 + .showType {
  105 + .size();
  106 + }
  107 +
  108 + :global {
  109 + .ant-form-item-label {
  110 + display: none;
  111 + }
  112 +
  113 + .input24 {
  114 + .size();
  115 +
  116 + .ant-form-item[class*='formItemMargin'],
  117 + .ant-form-item-row,
  118 + .ant-form-item-control,
  119 + .ant-form-item-control-input,
  120 + .ant-form-item-control-input-content,
  121 + textarea {
  122 + .size();
  123 + text-indent: 0;
  124 + color: #000;
  125 + padding: 10px;
  126 + }
  127 +
  128 + .ant-form-item {
  129 + border: 1px solid #AAA;
  130 + }
  131 + }
  132 + }
  133 +}
  134 +
  135 +.hideRightBorder {
  136 + :global {
  137 + .ant-form-item[class*="formItemMargin"] {
  138 + border-right: 0 !important;
  139 + }
  140 + }
  141 +}
  142 +
  143 +.hideLeftBorder {
  144 + :global {
  145 + .ant-form-item[class*="formItemMargin"] {
  146 + border-left: 0 !important;
  147 + }
  148 + }
  149 +}
0 \ No newline at end of file 150 \ No newline at end of file
src/utils/config.js
@@ -6,7 +6,7 @@ export const webSite = { @@ -6,7 +6,7 @@ export const webSite = {
6 // faceAddress: isDev ? '//192.168.11.22:8080/xlyFace' : '//' + location.host + '/xlyFace', 6 // faceAddress: isDev ? '//192.168.11.22:8080/xlyFace' : '//' + location.host + '/xlyFace',
7 fileAddress: isDev ? '//km5cjx.gnway.cc:43920/xlyReport/' : '//' + location.host + '/xlyReport/', // 接口地址 7 fileAddress: isDev ? '//km5cjx.gnway.cc:43920/xlyReport/' : '//' + location.host + '/xlyReport/', // 接口地址
8 faceAddress: isDev ? '//km5cjx.gnway.cc:43920/xlyFace' : '//' + location.host + '/xlyFace', 8 faceAddress: isDev ? '//km5cjx.gnway.cc:43920/xlyFace' : '//' + location.host + '/xlyFace',
9 - ipAddress: localStorage.ipAddress ? localStorage.ipAddress : isDev ? '//192.168.2.36:8080/xlyEntry/' : '//' + location.host + '/xlyEntry/', 9 + ipAddress: localStorage.ipAddress ? localStorage.ipAddress : isDev ? '//192.168.2.22:9098/xlyEntry/' : '//' + location.host + '/xlyEntry/',
10 interfaceAddress: isDev ? '//km5cjx.gnway.cc:43920/xlyApi/' : '//' + location.host + '/xlyApi/', // 接口地址88 10 interfaceAddress: isDev ? '//km5cjx.gnway.cc:43920/xlyApi/' : '//' + location.host + '/xlyApi/', // 接口地址88
11 // ipAddress: isDev ? '//ebc.jinjia.com:8091/xlyEntry/' : '//' + location.host + '/xlyEntry/', 11 // ipAddress: isDev ? '//ebc.jinjia.com:8091/xlyEntry/' : '//' + location.host + '/xlyEntry/',
12 // interfaceAddress: isDev ? '//ebc.jinjia.com:8091/xlyApi/' : '//' + location.host + '/xlyApi/', // 接口地址 12 // interfaceAddress: isDev ? '//ebc.jinjia.com:8091/xlyApi/' : '//' + location.host + '/xlyApi/', // 接口地址