liuwei 1 kuukausi sitten
vanhempi
commit
edcee576c2

+ 2 - 2
src/main/java/com/jeesite/modules/mes/entity/MesProductScreen.java

@@ -16,7 +16,7 @@ import javax.validation.constraints.Size;
  */
 @Table(name="mes_product_screen", alias="a", label="大屏展示配置信息", columns={
 		@Column(name="id", attrName="id", label="id", isPK=true),
-		@Column(name="screen_type", attrName="screenType", label="大屏类型", comment="ZS总屏 MP毛坯 JJ机加", queryType=QueryType.EQ),
+		@Column(name="screen_type", attrName="screenType", label="大屏类型", comment="ZS总屏 MP毛坯 JJ机加 ZP装配", queryType=QueryType.EQ),
 		@Column(name="people_num", attrName="peopleNum", label="生产人数"),
 		@Column(name="machine_num", attrName="machineNum", label="设备数量"),
 		@Column(name="plan_output", attrName="planOutput", label="每日计划"),
@@ -30,7 +30,7 @@ import javax.validation.constraints.Size;
 public class MesProductScreen extends DataEntity<MesProductScreen> {
 
 	private static final long serialVersionUID = 1L;
-	/** ZS总屏 / MP毛坯 / JJ机加 */
+	/** ZS总屏 / MP毛坯 / JJ机加 / ZP装配 */
 	private String screenType;
 	private String peopleNum;
 	private String machineNum;

+ 2 - 2
src/main/java/com/jeesite/modules/mes/service/MesProductScreenService.java

@@ -59,7 +59,7 @@ public class MesProductScreenService extends CrudService<MesProductScreenDao, Me
 
 	/**
 	 * 按大屏类型取最新一条配置。screenType 为空时取全局最新(兼容旧调用)。
-	 * ZS总屏 / MP毛坯 / JJ机加
+	 * ZS总屏 / MP毛坯 / JJ机加 / ZP装配
 	 */
 	public MesProductScreen getLatestByScreenType(String screenType) {
 		String code = normalizeScreenType(screenType);
@@ -81,7 +81,7 @@ public class MesProductScreenService extends CrudService<MesProductScreenDao, Me
 		return null;
 	}
 
-	/** JeeSite select 可能提交成 JJ=机加大屏,统一成 ZS / JJ / MP */
+	/** JeeSite select 可能提交成 JJ=机加大屏,统一成 ZS / JJ / MP / ZP */
 	public static String normalizeScreenType(String screenType) {
 		if (screenType == null) {
 			return "";

+ 5 - 0
src/main/java/com/jeesite/modules/mes/web/MesProductController.java

@@ -384,6 +384,11 @@ public class MesProductController extends BaseController {
 		return "modules/mes/mesScreen6";
 	}
 
+	@RequestMapping(value = {"screen7"})
+	public String screen7(Model model) {
+		return "modules/mes/mesScreen7";
+	}
+
 	/**
 	 * 大屏:按小时统计 mes_product_record 中上线/下线工位的 OK 条数(与前端「每小时上下线数据分析」对接)。
 	 * <p>请求参数:</p>

+ 1 - 0
src/main/java/com/jeesite/modules/mes/web/MesProductScreenController.java

@@ -99,6 +99,7 @@ public class MesProductScreenController extends BaseController {
 		map.put("ZS", "总屏");
 		map.put("MP", "毛坯大屏");
 		map.put("JJ", "机加大屏");
+		map.put("ZP", "装配大屏");
 		return map;
 	}
 

+ 40 - 5
src/main/resources/views/modules/mes/mesProductScreenForm.html

@@ -24,6 +24,7 @@
 									<option value="ZS">总屏</option>
 									<option value="MP">毛坯大屏</option>
 									<option value="JJ">机加大屏</option>
+									<option value="ZP">装配大屏</option>
 								</select>
 							</div>
 						</div>
@@ -126,6 +127,9 @@
 						</div>
 					</div>
 				</div>
+				<div id="opPlanZp" class="hide">
+					<div class="row" id="opPlanZpRow"></div>
+				</div>
 			</div>
 			<div class="box-footer">
 				<div class="row">
@@ -144,9 +148,37 @@
 <script>
 var OPS_MP = ['OP060','OP080','OP090','OP100'];
 var OPS_JJ = ['OP110','OP120','OP130','OP140','OP150','OP160'];
+var OPS_ZP = (function(){
+	var arr = [];
+	for (var n = 170; n <= 400; n += 10) {
+		arr.push('OP' + n);
+	}
+	return arr;
+})();
+function buildOpPlanZpInputs() {
+	var $row = $("#opPlanZpRow");
+	if (!$row.length || $row.children().length) return;
+	var html = [];
+	for (var i = 0; i < OPS_ZP.length; i++) {
+		var op = OPS_ZP[i];
+		html.push(
+			'<div class="col-xs-4"><div class="form-group">' +
+			'<label class="control-label col-sm-5">' + op + ':</label>' +
+			'<div class="col-sm-7"><input type="text" id="plan_' + op + '" class="form-control digits" maxlength="8"/></div>' +
+			'</div></div>'
+		);
+	}
+	$row.html(html.join(''));
+}
+function opKeysByScreenType(st) {
+	if (st === 'MP') return OPS_MP;
+	if (st === 'JJ') return OPS_JJ;
+	if (st === 'ZP') return OPS_ZP;
+	return [];
+}
 function collectOpPlan() {
 	var st = $("#screenType").val();
-	var keys = st === 'MP' ? OPS_MP : (st === 'JJ' ? OPS_JJ : []);
+	var keys = opKeysByScreenType(st);
 	var obj = {};
 	for (var i = 0; i < keys.length; i++) {
 		obj[keys[i]] = parseInt($("#plan_" + keys[i]).val(), 10) || 0;
@@ -155,21 +187,24 @@ function collectOpPlan() {
 }
 function toggleOpPlanFields() {
 	var st = $("#screenType").val();
+	$("#opPlanMp, #opPlanJj, #opPlanZp").addClass('hide');
 	if (st === 'MP') {
 		$("#opPlanTitle, #opPlanMp").removeClass('hide');
-		$("#opPlanJj").addClass('hide');
 	} else if (st === 'JJ') {
 		$("#opPlanTitle, #opPlanJj").removeClass('hide');
-		$("#opPlanMp").addClass('hide');
+	} else if (st === 'ZP') {
+		buildOpPlanZpInputs();
+		$("#opPlanTitle, #opPlanZp").removeClass('hide');
 	} else {
-		$("#opPlanTitle, #opPlanMp, #opPlanJj").addClass('hide');
+		$("#opPlanTitle").addClass('hide');
 	}
 }
 function fillOpPlanInputs() {
 	var raw = $("#opPlan").val();
 	var obj = {};
 	try { obj = raw ? JSON.parse(raw) : {}; } catch (e) { obj = {}; }
-	var keys = OPS_MP.concat(OPS_JJ);
+	buildOpPlanZpInputs();
+	var keys = OPS_MP.concat(OPS_JJ).concat(OPS_ZP);
 	for (var i = 0; i < keys.length; i++) {
 		var k = keys[i];
 		var v = obj[k];

+ 2 - 0
src/main/resources/views/modules/mes/mesProductScreenList.html

@@ -25,6 +25,7 @@
 							<option value="ZS">总屏</option>
 							<option value="MP">毛坯大屏</option>
 							<option value="JJ">机加大屏</option>
+							<option value="ZP">装配大屏</option>
 						</select>
 					</div>
 				</div>
@@ -68,6 +69,7 @@ $('#dataGrid').dataGrid({
 			if (code === 'ZS') return '总屏';
 			if (code === 'MP') return '毛坯大屏';
 			if (code === 'JJ') return '机加大屏';
+			if (code === 'ZP') return '装配大屏';
 			return val || '';
 		}},
 		{header:'${text("生产人数")}', name:'peopleNum', index:'a.people_num', width:150, align:"center"},

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1397 - 0
src/main/resources/views/modules/mes/mesScreen7.html


+ 6 - 5
src/main/resources/views/modules/mes/mesScreenRotate.html

@@ -22,14 +22,14 @@
 		}
 		.rotate-track {
 			display: flex;
-			width: 300%;
+			width: 400%;
 			height: 100%;
 			transition: transform 0.8s ease;
 			will-change: transform;
 		}
 		.rotate-track iframe {
-			flex: 0 0 33.333333%;
-			width: 33.333333%;
+			flex: 0 0 25%;
+			width: 25%;
 			height: 100%;
 			border: 0;
 			display: block;
@@ -57,6 +57,7 @@
 			<iframe src="${ctx}/mes/mesProduct/screenAll" title="all"></iframe>
 			<iframe src="${ctx}/mes/mesProduct/screen3" title="mp"></iframe>
 			<iframe src="${ctx}/mes/mesProduct/screen5" title="jj"></iframe>
+			<iframe src="${ctx}/mes/mesProduct/screen7" title="zp"></iframe>
 		</div>
 	</div>
 	<div class="rotate-progress">
@@ -66,14 +67,14 @@
 	(function () {
 		document.title = 'MES\u7efc\u5408\u5927\u5c4f';
 		var INTERVAL = 2 * 60 * 1000;
-		var COUNT = 3;
+		var COUNT = 4;
 		var index = 0;
 		var startedAt = Date.now();
 		var track = document.getElementById('rotateTrack');
 		var bar = document.getElementById('rotateBar');
 
 		function applyIndex() {
-			track.style.transform = 'translateX(-' + (index * 33.333333) + '%)';
+			track.style.transform = 'translateX(-' + (index * 25) + '%)';
 		}
 
 		function next() {