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