diff --git a/business-css/frontend/src/components/antvx6/index.vue b/business-css/frontend/src/components/antvx6/index.vue index 78b848f..23135ce 100644 --- a/business-css/frontend/src/components/antvx6/index.vue +++ b/business-css/frontend/src/components/antvx6/index.vue @@ -13,7 +13,7 @@ import { Stencil, Transform } from '@antv/x6' - +import { searchMaterialsPage } from "@/api/business/database/material"; // @ts-ignore import insertCss from 'insert-css' import { updateProjects} from "@/api/business/project"; @@ -43,6 +43,19 @@ const props = defineProps({ default: {} }, }) + +const materialList:any = ref([]) // 物料列表 + +function gettableData() { // 获取物料列表 + let params = { + pageNum: 1, + pageSize: 99, + }; + searchMaterialsPage(params).then((result:any) => { + materialList.value = result.records; + }).catch((err) => { + }); +} //获取所有项目列表 const sizeSchemaInfo:any = ref({}); @@ -62,12 +75,13 @@ const projectInfo:any = ref(props.projectInfo) // 项目信息 const isScenario = ref(false) //是否展示历史模拟场景 const isDisplay = ref(true) // 是否显示 const isExpansionandcontraction = ref(false) // 是否显示展开收起按钮 +const isExplanation = ref(false) // 是否显示物料说明 // 为了协助代码演示 let graph: Graph onMounted(() => { preWork() getSizeSchemaList() - + gettableData() // #region 初始化画布 graph = new Graph({ container: document.getElementById('graph-container') as HTMLElement, @@ -1272,8 +1286,16 @@ function closeEditdevice(e:any){ // 关闭编辑设备弹窗 selectedDevice.value = e let retrievedNode:any = graph.getCellById(nodeId.value) retrievedNode.store.data.deviceInfo = e + if(retrievedNode.store.data.materialInfo != null && retrievedNode.store.data.materialInfo.name != null){ + retrievedNode.attr('text/text',e.name +'('+ retrievedNode.store.data.materialInfo.name + ')') + retrievedNode.attr('label/text', e.name +'('+ retrievedNode.store.data.materialInfo.name + ')') + }else{ retrievedNode.attr('text/text', e.name) retrievedNode.attr('label/text', e.name) + } + + + isEditdevice.value = false; let json = graph.toJSON() tabDeviceNum.value = 0 @@ -1317,7 +1339,23 @@ function closeMaterialModel(e:any){ // 关闭物料信息弹窗 selectedMaterial.value = e let retrievedNode:any = graph.getCellById(nodeId.value) + // copyNodeInfo.value.store.data.attrs.label = copyDeviceInfo.value.name retrievedNode.store.data.materialInfo = e + retrievedNode.attr('text/text',retrievedNode.store.data.deviceInfo.name +'('+ e.name + ')') + retrievedNode.attr('label/text', retrievedNode.store.data.deviceInfo.name +'('+ e.name + ')') + + retrievedNode.attr('text/fill', e.iconBase64); // 文字颜色 + retrievedNode.attr('text/stroke', e.iconBase64); // 文字描边 + + // 如果是 label + // retrievedNode.attr('label/text/fill', '#d25b5b'); + // retrievedNode.attr('label/text', retrievedNode.store.data.attrs.label.text); + // retrievedNode.setAttrs({ + // 'label/text/fill': '#d25b5b', + // 'label/text/stroke': '#d25b5b', + // 'rect/fill': e.iconBase64 // 背景色 + // }); + saveDesign(false) let json = graph.toJSON() tabDeviceNum.value = 0 @@ -1945,10 +1983,35 @@ function getName(code:any) { 图标 +
+
+ +
+
+
+
物料信息
+
+
物料
+
颜色
+
+
+
{{ item.name }}
+
+
+
+
+
+
+ +
+ +
+ +
-
+
@@ -2317,6 +2380,17 @@ function getName(code:any) { display: flex; align-items: center; } + +.line-style-left-box{ + position: absolute; + left: 300px; + height: 100%; + /* width: 100px; */ + /* background-color: #d9d9d9; */ + z-index: 10; + display: flex; + align-items: center; +} .expansionandcontraction-box{ width:15px; height: 64px; @@ -2329,6 +2403,25 @@ function getName(code:any) { justify-content: center; cursor: pointer; } +.explanation-box{ + width: 15px; + height: 64px; + background-color: #ffffff; + border: 1px solid #cfcfcf; + border-radius:0 10px 10px 0; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; +} +.style-content-explanation-box{ + width: 200px; + height: calc(100vh - 60px); + border: 1px solid #cfcfcf; + border-top: none; + border-left: none; + background: #fff; +} .style-content-box{ width: 300px; height: calc(100vh - 60px); diff --git a/business-css/frontend/src/components/antvx6/materialmodel.vue b/business-css/frontend/src/components/antvx6/materialmodel.vue index 9b8bbcd..af01708 100644 --- a/business-css/frontend/src/components/antvx6/materialmodel.vue +++ b/business-css/frontend/src/components/antvx6/materialmodel.vue @@ -66,13 +66,9 @@ function confirmClick(formEl: any) { organicRatio: info.value.organicRatio, moistureContent: info.value.moistureContent, customAttrs: JSON.stringify(customAttrsData.value), - + iconBase64: info.value.iconBase64, } - let data = { - ...params, - iconBase64: iconBase64.value, - } - saveOrUpdate(data).then((res:any) => { + saveOrUpdate(params).then((res:any) => { if(res == true){ emit('closeMaterialModel', params) } @@ -140,12 +136,48 @@ const validator2 = (rule: any, value: any, callback: any) => { callback(); return; } + if (!/^\d+(\.\d+)?$/.test(value)) { + callback(new Error('请输入有效的数字或小数')); + } else if (parseFloat(value) <= 0) { + callback(new Error('必须大于 0')); + }else if (parseFloat(value) > 1) { + callback(new Error('必须小于等于 1')); + } else { + callback(); + } +} +const validator3 = (rule: any, value: any, callback: any) => { + if (!value || value === '') { + callback(); + return; + } + let ePu238 = 0; + let ePu239 = 0; + let ePu240 = 0; + let ePu241 = 0; + let ePu242 = 0; + if(info.value.ePu238 != null && info.value.ePu238 != ""){ + ePu238 = parseFloat(info.value.ePu238); + } + if(info.value.ePu239 != null && info.value.ePu239 != ""){ + ePu239 = parseFloat(info.value.ePu239); + } + if(info.value.ePu240 != null && info.value.ePu240 != ""){ + ePu240 = parseFloat(info.value.ePu240); + } + if(info.value.ePu241 != null && info.value.ePu241 != ""){ + ePu241 = parseFloat(info.value.ePu241); + } + if(info.value.ePu242 != null && info.value.ePu242 != ""){ + ePu242 = parseFloat(info.value.ePu242); + } + if (!/^\d+(\.\d+)?$/.test(value)) { callback(new Error('请输入有效的数字或小数')); } else if (parseFloat(value) <= 0) { callback(new Error('请输入小数')); - }else if (parseFloat(value) >= 1) { - callback(new Error('请输入小数')); + }else if (ePu238 + ePu239 + ePu240 + ePu241 + ePu242 > 1.005 || ePu238 + ePu239 + ePu240 + ePu241 + ePu242 <0.995) { + callback(new Error(' PU占比相加必须等于1')); } else { callback(); } @@ -183,31 +215,31 @@ const rules = ref({ ], ePu238: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu239: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu240: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu241: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu242: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], @@ -312,7 +344,7 @@ function gettableData() { // 获取物料列表 }).catch((err) => { }); } -const iconBase64:any = ref("") // 物料图片 +const iconBase64:any = ref("") // 物料颜色 function handleClick(item:any, index:any){ iconBase64.value = item.iconBase64 ingredientData.value = [] @@ -509,30 +541,9 @@ function delIconBase(){
- - -
- -
- -
-
-
- -
物料图片
-
-
+ + +
@@ -604,24 +615,9 @@ function delIconBase(){
-
图片
+
颜色
- - +
diff --git a/business-css/frontend/src/views/business/database/criticalData/index.vue b/business-css/frontend/src/views/business/database/criticalData/index.vue index fd55f7d..c1456e8 100644 --- a/business-css/frontend/src/views/business/database/criticalData/index.vue +++ b/business-css/frontend/src/views/business/database/criticalData/index.vue @@ -124,21 +124,56 @@ const validator1 = (rule: any, value: any, callback: any) => { // 校验数字 } } const validator2 = (rule: any, value: any, callback: any) => { - if (value == null || value === '') { + if (!value || value === '') { callback(); return; } if (!/^\d+(\.\d+)?$/.test(value)) { callback(new Error('请输入有效的数字或小数')); } else if (parseFloat(value) <= 0) { - callback(new Error('请输入小数')); - }else if (parseFloat(value) >= 1) { - callback(new Error('请输入小数')); + callback(new Error('必须大于 0')); + }else if (parseFloat(value) > 1) { + callback(new Error('必须小于等于 1')); } else { callback(); } } +const validator3 = (rule: any, value: any, callback: any) => { + if (!value || value === '') { + callback(); + return; + } + let ePu238 = 0; + let ePu239 = 0; + let ePu240 = 0; + let ePu241 = 0; + let ePu242 = 0; + if(info.value.ePu238 != null && info.value.ePu238 != ""){ + ePu238 = parseFloat(info.value.ePu238); + } + if(info.value.ePu239 != null && info.value.ePu239 != ""){ + ePu239 = parseFloat(info.value.ePu239); + } + if(info.value.ePu240 != null && info.value.ePu240 != ""){ + ePu240 = parseFloat(info.value.ePu240); + } + if(info.value.ePu241 != null && info.value.ePu241 != ""){ + ePu241 = parseFloat(info.value.ePu241); + } + if(info.value.ePu242 != null && info.value.ePu242 != ""){ + ePu242 = parseFloat(info.value.ePu242); + } + if (!/^\d+(\.\d+)?$/.test(value)) { + callback(new Error('请输入有效的数字或小数')); + } else if (parseFloat(value) <= 0) { + callback(new Error('请输入小数')); + }else if (ePu238 + ePu239 + ePu240 + ePu241 + ePu242 > 1.005 || ePu238 + ePu239 + ePu240 + ePu241 + ePu242 <0.995) { + callback(new Error(' PU占比相加必须等于1')); + } else { + callback(); + } +} const rulesSize = ref({ uConcentration: [ { @@ -160,31 +195,31 @@ const rulesSize = ref({ ], ePu238: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu239: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu240: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu241: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu242: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], diff --git a/business-css/frontend/src/views/business/database/material/index.vue b/business-css/frontend/src/views/business/database/material/index.vue index 19b05af..6925d23 100644 --- a/business-css/frontend/src/views/business/database/material/index.vue +++ b/business-css/frontend/src/views/business/database/material/index.vue @@ -94,7 +94,7 @@ const info: any = ref({ h2c2o4Concentration: "", organicRatio: "", moistureContent: "", - iconBase64: "" + iconBase64: "#409EFF" }); const dialogVisible = ref(false); @@ -117,7 +117,7 @@ function addClick() { h2c2o4Concentration: "", organicRatio: "", moistureContent: "", - iconBase64: "" + iconBase64: "#409EFF" }; customAttrsData.value = [] dialogVisible.value = true; @@ -178,12 +178,48 @@ const validator2 = (rule: any, value: any, callback: any) => { callback(); return; } + if (!/^\d+(\.\d+)?$/.test(value)) { + callback(new Error('请输入有效的数字或小数')); + } else if (parseFloat(value) <= 0) { + callback(new Error('必须大于 0')); + }else if (parseFloat(value) > 1) { + callback(new Error('必须小于等于 1')); + } else { + callback(); + } +} +const validator3 = (rule: any, value: any, callback: any) => { + if (!value || value === '') { + callback(); + return; + } + let ePu238 = 0; + let ePu239 = 0; + let ePu240 = 0; + let ePu241 = 0; + let ePu242 = 0; + if(info.value.ePu238 != null && info.value.ePu238 != ""){ + ePu238 = parseFloat(info.value.ePu238); + } + if(info.value.ePu239 != null && info.value.ePu239 != ""){ + ePu239 = parseFloat(info.value.ePu239); + } + if(info.value.ePu240 != null && info.value.ePu240 != ""){ + ePu240 = parseFloat(info.value.ePu240); + } + if(info.value.ePu241 != null && info.value.ePu241 != ""){ + ePu241 = parseFloat(info.value.ePu241); + } + if(info.value.ePu242 != null && info.value.ePu242 != ""){ + ePu242 = parseFloat(info.value.ePu242); + } + if (!/^\d+(\.\d+)?$/.test(value)) { callback(new Error('请输入有效的数字或小数')); } else if (parseFloat(value) <= 0) { callback(new Error('请输入小数')); - }else if (parseFloat(value) >= 1) { - callback(new Error('请输入小数')); + }else if (ePu238 + ePu239 + ePu240 + ePu241 + ePu242 > 1.005 || ePu238 + ePu239 + ePu240 + ePu241 + ePu242 <0.995) { + callback(new Error(' PU占比相加必须等于1')); } else { callback(); } @@ -221,31 +257,31 @@ const rules = ref({ ], ePu238: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu239: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu240: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu241: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], ePu242: [ { - validator: validator2, + validator: validator3, trigger: 'blur' } ], @@ -412,21 +448,6 @@ function downloadFile(obj :any, name :any, suffix :any) { document.body.removeChild(link) } - -function uploadIconBaseChange(file:any){ - var reader = new FileReader(); - reader.readAsDataURL(file.raw); - reader.onload = () => { - info.value.iconBase64 =reader.result - }; - reader.onerror = function(error) { - console.log("Error: ", error); - }; -} -function delIconBase(){ - info.value.iconBase64 = " " -} -