panqiuyao před 10 měsíci
rodič
revize
514de5cd7f

+ 7 - 0
electron/api/takephoto.js

@@ -17,6 +17,13 @@ module.exports = {
     })
   },
 
+  //生成主图  create_main_image
 
+  createMainImage(data){
+    return post({
+      url: '/create_main_image',
+      data: data
+    })
+  },
 
 }

+ 13 - 2
electron/controller/socket.js

@@ -8,7 +8,7 @@ let socket = null;
 const { pyapp } = require('../config/app.config.json')
 
 const typeToMessage = {
-  run_mcu_single_finish:"seeting",
+  run_mcu_single:['seeting','default'],
   get_deviation_data:"developer",
   set_deviation:"developer",
   get_mcu_other_info:"developer",
@@ -53,7 +53,18 @@ class SocketController extends Controller {
           if(this_data.msg_type){
             let channel = 'controller.socket.message_'+this_data.msg_type;
             if(typeToMessage[this_data.msg_type]){
-              this.app.electron[typeToMessage[this_data.msg_type]].webContents.send(channel, this_data);
+              if(typeof typeToMessage[this_data.msg_type] === 'object'){
+
+                typeToMessage[this_data.msg_type].map(item=>{
+                  if(item === 'default'){
+                    win.webContents.send(channel, this_data);
+                  }else{
+                    if(this.app.electron[item]) this.app.electron[item].webContents.send(channel, this_data);
+                  }
+                })
+              }else{
+                if(this.app.electron[typeToMessage[this_data.msg_type]]) this.app.electron[typeToMessage[this_data.msg_type]].webContents.send(channel, this_data);
+              }
             }else{
               win.webContents.send(channel, this_data);
             }

+ 15 - 1
electron/controller/takephoto.js

@@ -1,6 +1,6 @@
 'use strict';
 const { Controller } = require('ee-core');
-const  { getPhotoRecords,delectGoodsArts } =  require('../api/takephoto');
+const  { getPhotoRecords,delectGoodsArts,createMainImage } =  require('../api/takephoto');
 const errData = {
   msg :'请求失败,请联系管理员',
   code:999
@@ -54,6 +54,20 @@ class takePhotoController extends Controller {
       return errData;
     }
   }
+  async createMainImage (params) {
+    console.log('createMainImage')
+    try {
+      const result = await createMainImage(params);
+      console.log('result')
+      console.log(result)
+      if(result.data)  return result.data
+      return errData;
+    } catch (error) {
+      console.log('error')
+      console.log(error)
+      return errData;
+    }
+  }
 
 
 }

+ 2 - 1
frontend/src/utils/ipc.ts

@@ -31,7 +31,8 @@ const icpList = {
     },
     takePhoto:{
         getPhotoRecords: 'controller.takephoto.getPhotoRecords',
-        delectGoodsArts: 'controller.takephoto.delectGoodsArts'
+        delectGoodsArts: 'controller.takephoto.delectGoodsArts',
+        createMainImage: 'controller.takephoto.createMainImage'
     },
     generate:{
         generatePhotoDetail: 'controller.generate.generatePhotoDetail',

+ 83 - 32
frontend/src/views/Photography/check.vue

@@ -25,7 +25,7 @@
                  <img v-if="previewKey" class="camera-img" :src="preview+'?key='+previewKey" />
               </template>
               <template v-if="step === 2" >
-                <img class="camera-img" :src="imageUrl+'?key='+imageUrlkey" />
+                <img class="camera-img"  :src="getFilePath(imageTplPath)" />
                 <span  class="camera-description">这是一张用于检查镜头是否合适的测试图</span>
               </template>
 
@@ -59,29 +59,39 @@
     </div>
 
     <editRow
+      v-if="showrEditRow ||  isSetting"
       :id="id"
-      @confirm="emit('confirm')"
-      @onClose="emit('onClose')"
+      @confirm="confirm"
+      ref="editData"
+      @onClose="onClose"
       :addRowData="addRowData"
     />
 
   </div>
-  <hardware-check
-      v-if="!isSetting"
+  <hardware-check v-if="!isSetting"
    isInitCheck
    @confirm="checkConfirm(true)"
   />
 </template>
 <script setup lang="ts">
-import {watchEffect, ref, reactive, defineEmits, defineProps, computed, onBeforeUnmount} from 'vue'
+import {watchEffect, ref, reactive, defineEmits, defineProps, computed, onBeforeUnmount, onMounted} from 'vue'
 import client from "@/stores/modules/client";
+import socket from "@/stores/modules/socket";
 import icpList from '@/utils/ipc'
 import useUserInfo from "@/stores/modules/user";
 import headerBar from '@/components/header-bar/index.vue'
 import  editRow  from './components/editRow'
 const clientStore = client();
+const socketStore = socket(); // WebSocket状态管理实例
 
 const emit = defineEmits([ 'confirm','onClose']);
+
+const confirm = ()=>{
+  emit('confirm')
+}
+const onClose = ()=>{
+  emit('onClose')
+}
 // 定义 props
 const props = defineProps({
   id:{
@@ -99,19 +109,14 @@ const menu = reactive([])
 const show = ref(true)
 
 const isSetting = computed(()=>{
-  return props.id
+  return props.id || props.addRowData.mode_type
 })
 
 const useUserInfoStore = useUserInfo()
 import HardwareCheck from '@/components/check/index.vue'
-function confirm(){
-  emit('confirm')
-}
-
-import socket from "../../stores/modules/socket";
 import { digiCamControlWEB } from  '@/utils/appconfig'
-const imageUrl = ref(digiCamControlWEB+'preview.jpg')
-const imageUrlkey = ref(0)
+import { getFilePath } from '@/utils/appfun'
+import {ElMessage} from "element-plus";
 const previewKey = ref(0)
 const preview = ref(digiCamControlWEB+'liveview.jpg')
 
@@ -119,9 +124,6 @@ const step = ref(1)
 function checkConfirm(init){
   step.value =1
   if(menu.length === 0){
-    menu.push({
-      type:'setting'
-    })
     if(useUserInfoStore.userInfo.brand_company_code === '1300'){
 
       menu.push({
@@ -132,10 +134,10 @@ function checkConfirm(init){
   if(!init) previewKey.value++;
 
   showVideo()
+  showrEditRow.value = true
 }
 
-
-
+const showrEditRow = ref(false)
 
 
 
@@ -169,23 +171,72 @@ function hideVideo(){
 }
 
 const loading = ref(false)
-
+const editData = ref(null);
+const imageTplPath = ref(null)
 function takePictures() {
+  console.log(editData);
+  console.log(editData.value.editRowData);
+
   if (clientStore.isClient) {
-    clientStore.ipc.removeAllListeners(icpList.camera.takePictures);
-    clientStore.ipc.send(icpList.camera.takePictures);
-    clientStore.ipc.on(icpList.camera.takePictures, async (event, result) => {
 
-      if(interval) clearInterval(interval)
-      loading.value = true;
-      imageUrlkey.value++;
-      setTimeout(()=>{
-        hideVideo()
-        step.value = 2
-        imageUrlkey.value++;
-        loading.value = false;
-      },8000)
+    loading.value = true;
+
+    socketStore.sendMessage({
+      type: 'run_mcu_single',
+      data: {
+        camera_height: Number(editData.value.editRowData.camera_height),
+        camera_angle:  Number(editData.value.editRowData.camera_angle),
+        led_switch:editData.value.editRowData.led_switch,
+        id:0,
+        mode_type:editData.value.editRowData.mode_type,
+        turntable_position:Number(editData.value.editRowData.turntable_position),
+        action_name:editData.value.editRowData.action_name || '测试',
+        turntable_angle: Number(editData.value.editRowData.turntable_angle),
+        shoe_upturn: Number(editData.value.editRowData.shoe_upturn),
+        action_index:1,
+        number_focus:0,
+        take_picture:true,
+        pre_delay:0,
+        after_delay:0,
+      }
+    });
+
+    clientStore.ipc.on(icpList.socket.message+'_run_mcu_single', async (event, result) => {
+      console.log('_run_mcu_single_check')
+      console.log(result)
+      if(result.code === 0 && result.data?.file_path){
+
+
+
+        clientStore.ipc.removeAllListeners(icpList.utils.createMainImage);
+        clientStore.ipc.send(icpList.utils.createMainImage,{
+          file_path:result.data.file_path
+        });
+        clientStore.ipc.on(icpList.utils.createMainImage, async (event, result) => {
+          console.log('icpList.utils.createMainImage');
+
+          if(result.code === 0 && result.data?.main_out_path){
+            imageTplPath.value  = result.data?.main_out_path
+            hideVideo()
+            step.value = 2
+            loading.value = false;
+          }else if(result.msg){
+
+            ElMessage.error(result.msg)
+          }
+
+
+        });
+
+
+      }else if(result.msg){
+
+        ElMessage.error(result.msg)
+      }
+
     })
+
+
   }
 }
 

+ 17 - 22
frontend/src/views/Photography/components/editRow.vue

@@ -1,9 +1,9 @@
 <template>
-  <div class="editrow_wrap" v-if="initStatus">
+  <div class="editrow_wrap" v-if="initStatus" v-loading="captureLoading">
     <div class="config-type">参数值编辑:
       <!-- <el-checkbox v-model="isDefault">开启运动调试</el-checkbox>-->
     </div>
-    <el-form class="editForm" :model="editRowData" label-width="100px">
+    <el-form class="editForm" :model="editRowData" label-width="100px" >
       <el-form-item label="动作名称">
         <el-input v-model="editRowData.action_name" style="width: 170px;"/>
       </el-form-item>
@@ -66,7 +66,7 @@
     </el-form>
     <div class="btn-row mar-top-20">
       <div class="normal-btn" @click="close" v-if="id">取消</div>
-      <div class="primary-btn" @click="saveRow" v-if="id">{{ id ? '保存并关闭' : '保存' }}</div>
+      <div class="primary-btn" @click="saveRow">{{ id ? '保存并关闭' : '保存' }}</div>
       </div>
   </div>
 
@@ -100,10 +100,12 @@ const initStatus = ref(false)
 const isDefault = ref(true); // 是否为默认配置
 const editRowData = ref({}); // 当前编辑行的数据
 onMounted(()=>{
+  console.log('editrow')
   if(props.addRowData.mode_type){
     console.log(props.addRowData);
     initStatus.value = true
     editRowData.value = props.addRowData;
+    testShoesFlip()
     return
   }
   let params = {
@@ -116,9 +118,13 @@ onMounted(()=>{
   clientStore.ipc.removeAllListeners(icpList.setting.getDeviceConfigDetail);
   clientStore.ipc.send(icpList.setting.getDeviceConfigDetail, params);
   clientStore.ipc.on(icpList.setting.getDeviceConfigDetail, (event, result) => {
+
+    console.log('getDeviceConfigDetail')
+    console.log(result)
     editRowData.value = result.data;
     clientStore.ipc.removeAllListeners(icpList.setting.getDeviceConfigDetail);
     initStatus.value = true;
+    testShoesFlip()
   });
 
 })
@@ -166,8 +172,6 @@ async function changeNum(type, min, max) {
 
 /*测试拍照*/
 const captureLoading = ref(false)
-const imageUrl = ref(digiCamControlWEB+'preview.jpg')
-const imageUrlkey = ref(0)
 function testShoesFlip(){
   if (clientStore.isClient) {
 
@@ -178,7 +182,7 @@ function testShoesFlip(){
         camera_angle:  Number(editRowData.value.camera_angle),
         led_switch:editRowData.value.led_switch,
         id:0,
-        mode_type:'执行'+ activeTab.value === 'left' ? '左脚' : '右脚'+'程序',
+        mode_type:editRowData.mode_type,
         turntable_position:Number(editRowData.value.turntable_position),
         action_name:editRowData.value.action_name || '测试',
         turntable_angle: Number(editRowData.value.turntable_angle),
@@ -193,22 +197,10 @@ function testShoesFlip(){
     captureLoading.value = true;
 
 
-    clientStore.ipc.on(icpList.socket.message+'_run_mcu_single_finish', async (event, result) => {
-      console.log('_run_mcu_single_finish')
-      setTimeout(()=>{
-        clientStore.ipc.removeAllListeners(icpList.camera.takePictures);
-        clientStore.ipc.send(icpList.camera.takePictures,false);
-        clientStore.ipc.on(icpList.camera.takePictures, async (event, result) => {
-          setTimeout(()=>{
-            imageUrlkey.value++;
-            console.log('preview')
-            preview(imageUrl.value+'?key='+imageUrlkey.value)
-            captureLoading.value = false;
-          },8000)
-          clientStore.ipc.removeAllListeners(icpList.camera.takePictures);
-        })
-      },1000)
+    clientStore.ipc.on(icpList.socket.message+'_run_mcu_single', async (event, result) => {
+      console.log('_run_mcu_single_row')
 
+      captureLoading.value = false;
 
     })
   }
@@ -238,7 +230,10 @@ const saveRow = () => {
   });
 };
 
-
+// 暴露给父组件
+defineExpose({
+  editRowData, // 父组件可通过 editData.value.editRowData 访问
+});
 </script>
 <style>
 </style>

+ 1 - 1
frontend/src/views/Setting/components/EditDialog.vue

@@ -10,6 +10,7 @@
     :show-close="false"
   >
       <check
+          v-if="visible"
           @onClose="onClose"
           :addRowData="addRowData"
           @confirm="onConfirm"
@@ -63,7 +64,6 @@ const onConfirm = ()=>{
   onClose()
 }
 
-
 </script>
 <style lang="scss">
 .editRowDialog {