From 68d7be0814e89ef811c2e7c435dff7af64ea60c1 Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期二, 03 十二月 2024 10:11:21 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/ERP_override

---
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/GlassComputed.vue              |   23 ++++-
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeCard.vue           |   10 +-
 north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml                           |   24 +++++
 north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java |    9 ++
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java         |    3 
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue               |   14 +++
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue               |   34 +------
 north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java       |    7 +
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeDetail.vue         |  114 ++++++++++++++++++---------
 9 files changed, 161 insertions(+), 77 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/GlassComputed.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/GlassComputed.vue
index f824caa..09b91f8 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/GlassComputed.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/GlassComputed.vue
@@ -2,7 +2,7 @@
 import ComputeCard from "@/views/pp/glassOptimize/page/ComputeCard.vue";
 import ComputeDetail from "@/views/pp/glassOptimize/page/ComputeDetail.vue";
 import Compute from "@/views/pp/glassOptimize/page/Compute.vue";
-import { ref } from 'vue';
+import {ref, watch} from 'vue';
 import {ElMessage} from "element-plus";
 import request from "@/utils/request";
 
@@ -26,8 +26,23 @@
     }
   } catch (error) {
     console.error('璇锋眰鍑洪敊', error);
-    ElMessage.error('缃戠粶杩炴帴鍑虹幇闂锛岃妫�鏌ョ綉缁滆缃�');
+    ElMessage.error('璇疯緭鍏ュ伐绋嬪彿锛�');
   }
+};
+
+// 鐢ㄤ簬浠庤幏鍙栧埌鐨勬暟鎹腑鎻愬彇娴佺▼鍗″彿锛坧rocessId锛�
+const extractProcessCardNumbers = (data) => {
+  if (typeof data === 'string') {
+    console.log('娴佺▼鍗″彿涓哄瓧绗︿覆绫诲瀷锛岀洿鎺ヨ繑鍥炶瀛楃涓诧細', data);
+    return data;
+  }
+  if (Array.isArray(data)) {
+    const processCardNumbers = data.map(item => item.process_id);
+    console.log('鎻愬彇鍒扮殑娴佺▼鍗″彿鏁扮粍锛�', processCardNumbers);
+    return processCardNumbers;
+  }
+  console.log('浼犲叆鐨勬暟鎹被鍨嬩笉绗﹀悎瑕佹眰锛屾棤娉曟彁鍙栨祦绋嬪崱鍙�');
+  return [];
 };
 
 </script>
@@ -44,7 +59,7 @@
     </div>
 
     <div id="computeDetail">
-      <compute-detail/>
+      <compute-detail :process-card-numbers="extractProcessCardNumbers(receivedData)" />
     </div>
 
   </div>
@@ -59,7 +74,7 @@
   height: 40%;
 }
 #computeCard{
-  margin-top: 90px;
+  margin-top: 100px;
   width: 64%;
   height: 40%;
   float: left;
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
index 933e6bb..8321845 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
@@ -111,7 +111,17 @@
     successMsg: '妯℃嫙璁$畻宸插惎鍔紒',
     checkMessage: '褰撳墠宸ョ▼鐘舵�佷笉绗﹀悎妯℃嫙璁$畻鏉′欢锛岃纭宸ョ▼鐘舵�佸悗鍐嶆搷浣滐紒',
     requiresRow: true,
-    actionFunction: () => {
+    actionFunction: async ({row}) => {
+      console.log('鑾峰彇鐨勮鏁版嵁', row);
+      try {
+        // 浣跨敤娴忚鍣ㄥ師鐢烠lipboard API澶嶅埗宸ョ▼鍙�
+        await navigator.clipboard.writeText(row.projectNumber);
+        console.log('宸ョ▼鍙峰凡澶嶅埗鍒板壀璐存澘');
+        ElMessage.success('宸ョ▼鍙峰凡鎴愬姛澶嶅埗');
+      } catch (error) {
+        console.error('澶嶅埗宸ョ▼鍙锋椂鍑洪敊:', error);
+        ElMessage.error('澶嶅埗宸ョ▼鍙峰け璐ワ紝璇风◢鍚庨噸璇�');
+      }
       optimizeCompute.value = true;
       Mange.value = false;
     }
@@ -257,7 +267,7 @@
           return;
         } else {
           if (config.code === 'compute') {
-            config.actionFunction();
+            config.actionFunction({ row });
           } else {
             row.state = config.targetState;
             const index = produceList.value.findIndex(item => item === row);
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
index ae83d7c..01dfdb5 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
@@ -1,7 +1,7 @@
 <script setup>
 import {reactive, ref} from "vue";
 import {useI18n} from "vue-i18n";
-import {Minus, Plus, Search} from "@element-plus/icons-vue";
+import {Minus, Platform, Plus, Search, SuccessFilled} from "@element-plus/icons-vue";
 
 const {t} = useI18n()
 
@@ -34,27 +34,7 @@
     mode: 'row',
     showStatus: true
   },
-  /*formConfig: {
-    data: {
-      width: '',
-      height: '',
-      quantity: ''
-    },
-    items: [
-      { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } },
-      { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } },
-      { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } },
-      {
-        itemRender: {
-          name: 'VxeButtonGroup',
-          options: [
-            { type: 'submit', content: t('craft.sure'), status: 'primary' },
-            { type: 'reset', content: t('product.msg.reset') }
-          ]
-        }
-      }
-    ]
-  },*/
+
   columns: [
     {field: 'id', width: 70, title: '搴忓彿', filters: [{data: ''}], slots: {default: 'state', filter: 'num2_filter'}},
     {field: '', width: 100, title: '鐗堝浘鏁�'},
@@ -128,7 +108,7 @@
 // 瀹氫箟鍝嶅簲寮忔暟鎹紝鐢ㄤ簬缁戝畾宸ョ▼鍙疯緭鍏ユ鐨勫��
 const projectNumber = ref('');
 
-let emit = defineEmits(['changeDialog', 'fetch-data']);
+let emit = defineEmits(['fetch-data']);
 
 const handleSearchClick = () => {
   // 閫氳繃 $emit 瑙﹀彂鑷畾涔変簨浠讹紝灏嗗伐绋嬪彿浼犻�掔粰鐖剁粍浠讹紝鐢辩埗缁勪欢鍘昏皟鐢ㄦ帴鍙h幏鍙栨暟鎹�
@@ -144,13 +124,13 @@
     <div id="title" style="margin-top: -10px">
       <span>
         宸ョ▼缂栧彿
-      <vxe-input size="small" style="margin-left: 20px" clearable v-model="projectNumber"></vxe-input>
+      <el-input style="width:150px;margin-left: 20px" clearable v-model="projectNumber" placeholder="璇疯緭鍏ュ伐绋嬪彿"></el-input>
       <el-button
           type="primary"
           :icon="Search"
           style="margin-left: 20px"
           @click="handleSearchClick"
-      >{{$t('basicData.search') }}
+      >{{ $t('basicData.search') }}
       </el-button>
       </span>
       <span style="float: right ; margin-right: 120px">
@@ -172,8 +152,8 @@
                 :value="item.value"
             />
           </el-select>
-      <el-button type="primary" style="margin-left: 20px">妯℃嫙璁$畻</el-button>
-      <el-button type="primary" style="margin-left: 50px">淇濆瓨</el-button>
+      <el-button type="warning" style="margin-left: 10px" :icon="Platform">妯℃嫙璁$畻</el-button>
+      <el-button type="danger" style="margin-left: 20px" :icon="SuccessFilled">淇濆瓨</el-button>
       </span><br>
       <div class="demo-progress" style="margin-top: 5px">
         <div style="display: flex; align-items: center">
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeCard.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeCard.vue
index debeba0..3620f67 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeCard.vue
@@ -8,8 +8,10 @@
 const checkboxCellRender = reactive({
   name: 'VxeCheckboxGroup',
   options: [
-    { label: '鍏佽妯帓', value: '1' },
-    { label: '閽㈠寲', value: '2' },
+    { label: '骞曞妯″紡', value: '1' },
+    { label: '鍏佽妯帓', value: '2' },
+    { label: '閽㈠寲', value: '3' },
+
   ]
 })
 
@@ -43,8 +45,8 @@
   },
 
   columns:[
-    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
-    {field: 'check', title: '閫夋嫨', width: 200, cellRender: checkboxCellRender },
+    {type:'seq',fixed:"left",slots: { content:'content' },width: 50},
+    {field: 'check', title: '閫夋嫨', width: 250, cellRender: checkboxCellRender },
     {field: 'process_id',width: 150, title: t('processCard.processId'), sortable: true},
     {field: 'technology_number',width: 70, title: '灞�', sortable: true},
     {field: 'TotalFloors',width: 150, title: '鎬诲眰鏁�', sortable: true},
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeDetail.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeDetail.vue
index a092239..64c9542 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeDetail.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ComputeDetail.vue
@@ -1,6 +1,9 @@
 <script setup>
 import {reactive, ref} from "vue";
 import {useI18n} from "vue-i18n";
+import request from "@/utils/request";
+import {ElMessage} from "element-plus";
+import {Minus, Plus, Search} from "@element-plus/icons-vue";
 const { t } = useI18n()
 
 const xGrid = ref()
@@ -32,37 +35,16 @@
     mode: 'row',
     showStatus: true
   },
-  /*formConfig: {
-    data: {
-      width: '',
-      height: '',
-      quantity: ''
-    },
-    items: [
-      { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } },
-      { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } },
-      { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } },
-      {
-        itemRender: {
-          name: 'VxeButtonGroup',
-          options: [
-            { type: 'submit', content: t('craft.sure'), status: 'primary' },
-            { type: 'reset', content: t('product.msg.reset') }
-          ]
-        }
-      }
-    ]
-  },*/
-  columns:[
-    {field: 'id',width: 70,  title: '搴忓彿',filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }},
-    {field:'state',width: 150,title: t('order.width'),filters:[{ data: '' }], slots: { default: 'state',filter: 'num2_filter' }},
-    {type: 'seq',width: 150,title: t('order.height')},
-    {field: 'id',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'id',width: 150, title: t('order.buildingNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'id',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'id',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'id',width: 150, title: t('craft.TrademarkAttribute'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
 
+  columns:[
+    {type: 'seq',width: 70,  title: '搴忓彿',filters:[{ data: '' }],},
+    {field: 'width',width: 150,title: t('order.width'),filters:[{ data: '' }],},
+    {field: 'height',width: 150,title: t('order.height')},
+    {field: 'quantity',width: 150, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'Storey Number',width: 150, title: t('order.buildingNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'shape',width: 150, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'area',width: 150, title: t('order.grossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'Label type',width: 150, title: '鍗版爣',filters:[{ data: '' }],},
   ],//琛ㄥご鍙傛暟
   data:null,//琛ㄦ牸鏁版嵁
   toolbarConfig: {
@@ -73,19 +55,73 @@
   },
 
 })
-let emit = defineEmits([
-  'changeDialog'
-])
-let ProjectName = ref('')
-const changeOrderType = async ()=>{
-  await emit('changeDialog',ProjectName.value)
-  ProjectName.value = null
-}
+
+// 閫氳繃props鎺ユ敹鐖剁粍浠朵紶閫掕繃鏉ョ殑娴佺▼鍗″彿锛坧rocessId锛�
+const props = defineProps({
+  processCardNumbers: String
+});
+
+// 鐢ㄤ簬璁板綍褰撳墠鏄剧ず鐨勬祦绋嬪崱鍙峰湪鏁扮粍涓殑绱㈠紩浣嶇疆锛屽垵濮嬪�间负0锛屽嵆鏄剧ず绗竴涓厓绱�
+const currentIndex = ref(0);
+
+const selectComputeDetail = async () => {
+  let processId;
+  if (typeof props.processCardNumbers === 'string') {
+    processId = props.processCardNumbers;
+  } else if (Array.isArray(props.processCardNumbers)) {
+    if (props.processCardNumbers.length > 0) {
+      processId = props.processCardNumbers[currentIndex.value];
+    } else {
+      console.error('娴佺▼鍗″彿鏁扮粍涓嶇鍚堥鏈熸垨鑰呯储寮曡秴鍑鸿寖鍥达紝鏃犳硶鍙戣捣璇锋眰');
+      ElMessage.error('娌℃湁鏈夋晥鐨勬祦绋嬪崱鍙锋暟鎹紝璇锋鏌ユ暟鎹潵婧�');
+      return;
+    }
+  } else {
+    console.error('鎺ユ敹鍒扮殑娴佺▼鍗″彿鏁版嵁绫诲瀷涓嶇鍚堥鏈燂紝鏃犳硶杩涜鍚庣画鎿嶄綔');
+    ElMessage.error('鎺ユ敹鍒扮殑娴佺▼鍗″彿鏁版嵁鏍煎紡涓嶆纭紝璇锋鏌ユ暟鎹潵婧�');
+    return;
+  }
+  try {
+    const res = await request.post(`/glassOptimize/selectComputeDetail/${processId}`);
+    if ((Number(res.code) === 200)) {
+      xGrid.value.loadData(res.data.data);
+    } else {
+      ElMessage.warning(res.msg);
+      console.error('璇锋眰鑾峰彇娴佺▼鍗¤鎯呭け璐ワ紝鐘舵�佺爜锛�', res.code, '锛岄敊璇俊鎭細', res.msg);
+    }
+  } catch (error) {
+    console.error('璋冪敤loadData鏂规硶鍔犺浇鏁版嵁鏃跺嚭鐜伴敊璇�:', error);
+    ElMessage.error('鍔犺浇琛ㄦ牸鏁版嵁鏃跺彂鐢熼敊璇紝璇锋鏌ョ浉鍏充唬鐮佹垨鑱旂郴寮�鍙戜汉鍛�');
+  }
+};
+
+// 鏂板鍑芥暟鐢ㄤ簬鐐瑰嚮鎸夐挳鏃舵洿鏂板綋鍓嶆樉绀虹殑娴佺▼鍗″彿绱㈠紩浣嶇疆锛屽疄鐜板垏鎹㈡樉绀轰笅涓�涓垨涓婁竴涓祦绋嬪崱鍙�
+const handleChangeProcessCard = (step) => {
+  if (Array.isArray(props.processCardNumbers)) {
+    if (step > 0 && currentIndex.value < props.processCardNumbers.length - 1) {
+      currentIndex.value++;
+    } else if (step < 0 && currentIndex.value > 0) {
+      currentIndex.value--;
+    } else {
+      if (step > 0) {
+        ElMessage.warning('宸茬粡鏄渶鍚庝竴涓祦绋嬪崱鍙�');
+      } else {
+        ElMessage.warning('宸茬粡鏄涓�涓祦绋嬪崱鍙�');
+      }
+    }
+  }
+};
+
 </script>
 
 <template>
   <div style="width: 100%;height: 100%">
-    <span>娴佺▼鍗¤鎯�</span>
+    <span>娴佺▼鍗¤鎯�
+      <el-input style="width: 180px"  :value="props.processCardNumbers[currentIndex]"></el-input>
+      <el-button type="danger" style="margin-left: 10px" @click="handleChangeProcessCard(-1)" :icon="Minus"></el-button>
+      <el-button type="primary" style="margin-left: 10px" @click="handleChangeProcessCard(1)" :icon="Plus"></el-button>
+    <el-button  type="success" style="margin-left: 10px;" @click="selectComputeDetail" :icon="Search">鏌ョ湅</el-button>
+    </span>
     <vxe-grid
         size="small"
         @filter-change="filterChanged"
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java b/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
index 7022879..5b48efa 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
@@ -76,4 +76,13 @@
         return Result.seccess(glassOptimizeService.selectProjectComputeSv(projectNumber));
     }
 
+    //妯℃嫙璁$畻娴佺▼鍗¤鎯�
+    //妯℃嫙璁$畻宸ョ▼鍙锋煡璇�
+    @ApiOperation("妯℃嫙璁$畻宸ョ▼鍙锋煡璇�")
+    @PostMapping  ("/selectComputeDetail/{processId}")
+    public Result selectComputeDetail(
+            @PathVariable String processId){
+        return Result.seccess(glassOptimizeService.selectComputeDetailSv(processId));
+    }
+
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
index c57fa23..e5d003b 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
@@ -30,4 +30,7 @@
 
     //妯℃嫙璁$畻宸ョ▼鍙锋煡璇�
     List<Map<String, Object>> selectProjectComputeMp(@Param("projectNo")String projectNumber);
+
+    //妯℃嫙璁$畻娴佺▼鍗¤鎯�
+    List<Map<String, Object>> selectComputeDetailMp(String processId);
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
index 32e97d8..5d15e5b 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
@@ -64,4 +64,11 @@
         return map;
     }
 
+    //妯℃嫙璁$畻娴佺▼鍗¤鎯�
+    public Map<String, Object>selectComputeDetailSv(String processId) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", glassOptimizeMapper.selectComputeDetailMp(processId));
+        return map;
+    }
+
 }
diff --git a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
index 4d401ea..5168b02 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -212,7 +212,7 @@
             p.project_no
     </select>
 
-    <!--妯℃嫙璁$畻鏌ヨ-->
+    <!--妯℃嫙璁$畻鏌ヨ娴佺▼鍗�-->
     <select id="selectProjectComputeMp">
         SELECT
             fc.process_id,
@@ -251,4 +251,26 @@
             fc.process_id, fc.technology_number;
     </select>
 
+    <!--妯℃嫙璁$畻娴佺▼鍗¤鎯�-->
+    <select id="selectComputeDetailMp">
+        SELECT
+            d.width AS width,
+            d.height AS height,
+            f.quantity AS quantity,
+            d.building_number AS `Storey Number`,
+            d.shape AS shape,
+            round(g.area * f.quantity, 4) AS area,
+            g.icon AS `Label type`
+        FROM
+            pp.flow_card f
+                LEFT JOIN pp.optimize_project p ON f.project_no = p.project_no
+                LEFT JOIN sd.order o ON f.order_id = o.order_id
+                LEFT JOIN sd.order_detail d ON f.order_id = d.order_id AND f.order_number = d.order_number
+                LEFT JOIN sd.order_glass_detail g ON f.order_id = g.order_id AND f.order_number = g.order_number AND f.technology_number = g.technology_number
+                LEFT JOIN sd.product_detail p2 ON d.product_id = p2.prod_id AND f.technology_number = p2.glass_sort
+                LEFT JOIN pp.optimize_project j ON f.project_no = j.project_no
+        WHERE
+            p.state IN (1, 2)
+          AND f.process_id = #{processId}
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0