廖井涛
2024-11-15 5ec9dc2cee9c172c7799235d0a6452dd3a229a0f
Merge branch 'master' of http://bore.pub:10439/r/ERP_override
16个文件已修改
6个文件已添加
1182 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelDetails.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelProject.vue 308 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/TagStyleDesigner.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/router/index.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/sd/companySet/金华天成.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/Optimize.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizePrint.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/CheckInventory.vue 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetAmount.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetTrimming.vue 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProjectDetails.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintProject.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/Report.xml 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelDetails.vue
@@ -68,7 +68,6 @@
            }
          }
        }
        console.log(props.lastList)
      } else {
        ElMessage.warning(res.msg)
      }
north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelProject.vue
New file
@@ -0,0 +1,308 @@
<script setup>
import request from "@/utils/request"
import {ElDatePicker, ElMessage} from "element-plus"
import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue"
import {Search} from "@element-plus/icons-vue"
import {useRouter} from 'vue-router'
import {changeFilterEvent, filterChanged} from "@/hook"
import {useI18n} from 'vue-i18n'
import deepClone from "@/utils/deepClone";
import companyInfo from "@/stores/sd/companyInfo"
const company = companyInfo()
//语言获取
const {t} = useI18n()
let router = useRouter()
let produceList = ref([])
let labelList = ref([])
let titleList = ref([])
let dataList = ref([])
let list = ref([])
let lastList = ref([])
let filterData = ref({})
const data = ref({
  printList: []
})
let props = defineProps({
  list:null,//勾选的数据
  faceOrientation:null,//内外面
  type:null,//标签模板
  lableType:null//标签类型
})
const {currentRoute} = useRouter()
const route = currentRoute.value
let type = props.type
let faceOrientation = props.faceOrientation
if (type.indexOf("英文")>-1 && faceOrientation==="此面为室内面"){
  faceOrientation='INSIDE'
}
else if (type.indexOf("英文")>-1 && faceOrientation==="此面为室外面"){
  faceOrientation='OUTSIDE'
}
let lableType = props.lableType
data.value.printList = JSON.parse(props.list)
onMounted(() => {
      request.post(`/processCard/getPrintCustomDataProjectNoDetail/${type}`, data.value).then((res) => {
        if (res.code == 200) {
          console.log(res.data.data)
          produceList.value = deepClone(res.data.title)
          list.value = deepClone(res.data.data)
          const data = produceList.value[0].value
          dataList = JSON.parse(`[${data}]`);
          labelList = dataList[0]
          for (let i = 0; i < list.value.length; i++) {
            let count = list.value[i].data.length
            for (let j = 0; j < count; j++) {
              lastList.value.push(list.value[i].data[j])
            }
          }
        } else {
          ElMessage.warning(res.msg)
          router.push("/login")
        }
      })
    }
)
//修改相同产品名称标签
const updateProductName = (event, index,id) => {
  // åˆ›å»ºæ˜ å°„对象
  const propertyMapping = {};
  labelList.forEach(item => {
    propertyMapping[item.name] = item.title;
  });
  // è¾“入的值
  const newValue = event.target.innerText;
  const parts = newValue.split(':');
  const result = parts[1]; // èŽ·å–å†’å·åŽçš„éƒ¨åˆ†
  // èŽ·å–æ˜ å°„ä¸­æ‰€æœ‰çš„é”®
  const keys = Object.keys(propertyMapping);
  // æ ¹æ® index èŽ·å–å¯¹åº”çš„å±žæ€§å
  const propertyName = keys[index];
  // å¦‚果映射中没有该 index,直接返回
  if (!propertyName) {
    console.warn('Unsupported index:', index);
    return;
  }
  // éåކ lastList å¹¶æ›´æ–°å¯¹åº”的属性
  lastList.value.forEach(obj => {
    // èŽ·å–å‰ç¼€å’Œ orderId
    const prefix = lastList.value[id].processId.substring(0, 11);
    const orderId = obj.orderId;
    const glassNumber=lastList.value[id].glassNumber
    const customerName = obj.customerName
    // æ ¹æ® propertyName æ›´æ–°å±žæ€§
    if (propertyName === 'productAbbreviation' && prefix === obj.processId.substring(0, 11)) {
      obj.productAbbreviation = result;
    }
    if (propertyName === 'project' && orderId === obj.orderId) {
      obj.project = result;
    }
    if (propertyName === 'productName' && prefix === obj.processId.substring(0, 11)){
      obj.productName = result;
    }
    if (propertyName === 'customerName' && orderId === obj.orderId){
      obj.customerName = result;
    }
  });
}
</script>
<template>
    <div id="print" :class="company.printLabel.className.custom.printFlowCardName()">
      <div v-for="(item1,index) in lastList" :class="company.printLabel.className.custom.entiretyName()">
        <div class="row4">{{ faceOrientation }}</div>
        <div v-for="(item,id) in labelList" :class="company.printLabel.className.custom.contentRowName()">
          <div v-if="item1[item.name] != null && item1[item.name] !== ''" class="row1"  contenteditable="true" @input="updateProductName($event, id,index)" v-text="item.title+':'+item1[item.name]"></div>
<!--          <div class="row2" style="width: 100%;"><input class="contentRow2" v-model="item1[item.name]"  @keyup="updataProductName()" style="border: none;"/></div>-->
<!--          <div v-if="item1[item.name] != null && item1[item.name] !== ''" class="row2" style="width: 100%;" contenteditable="true" @input="updateProductName($event, id)" v-text="item1[item.name]"></div>-->
        </div>
        <div v-html="company.printLabel.custom(item1)"></div>
      </div>
    </div>
</template>
<style scoped>
* {
  margin: 0;
  padding: 0;
}
textarea {
  border: none; /* å–消默认边框 */
  padding: 0; /* å–消默认内边距 */
  margin: 0; /* å–消默认外边距 */
  resize: none; /* ç¦ç”¨è°ƒæ•´å¤§å°åŠŸèƒ½ */
  font-family: Arial; /* è®¾ç½®è‡ªå®šä¹‰å­—体 */
  font-size: 12px; /* è®¾ç½®è‡ªå®šä¹‰å­—体大小 */
  line-height: 1; /* è®¾ç½®è¡Œé«˜ */
  width: 100%; /* è®¾ç½®å®½åº¦ä¸º100% */
  height: auto; /* é«˜åº¦æ ¹æ®å†…容自动调整 */
  box-sizing: border-box; /* ä½¿å®½é«˜åŒ…括内边距和边框 */
  overflow-y: hidden;
}
body {
  overflow: hidden;
  font-family: Arial;
  font-size: 7px;
}
#printButton {
  margin-top: -20px;
  width: 100px;
}
.print{
  width: 100%;
  height: 100%;
}
/*成*/
.printFlowCard_finished {
  /*
  font-family: 'Microsoft YaHei', '微软雅黑', sans-serif;
  */
  flex-wrap: nowrap;
  display: flex;
  flex-direction: column;
}
/*成*/
.entirety_finished {
  display: flex;
  text-align: center;
  flex-direction: column;
  margin-left: 10px;
  width: 100%;
  height: 100%;
}
/*div{
  font-family: 'Microsoft YaHei', '微软雅黑', sans-serif;
}*/
.row3 {
  text-align: center;
  /*display: flex;
  justify-content:space-evenly;*/
}
.row3 label {
  margin-top: 28px;
}
.contentRow {
  font-weight: bolder;
  display: flex;
  text-align: center;
  width: 100%;
}
label {
  /*font-family: 'Microsoft YaHei', '微软雅黑', sans-serif;*/
}
.contentRow .row1 {
  width: 100%;
}
.entirety_finished .row4 {
  font-weight: bolder;
  text-align: right;
  margin-right: 20px;
}
.contentRow .row1, .contentRow .row2 {
  text-align: left;
}
input{
  width: 100%;
  border: none;
}
@page {
  size: auto;  /* auto is the initial value */
  margin: 13mm 5mm 0mm 7mm;  /* this affects the margin in the printer settings */
}
@media print {
  div {
    page-break-inside: avoid;
  }
  .entirety_finished {
    page-break-before: always;
  }
}
.printFlowCard_finished1 {
  flex-wrap: wrap;
  display: flex;
  flex-direction: column;
}
/*成*/
.entirety_finished1 {
  display: flex;
  text-align: center;
  flex-direction: column;
  margin-left: 10px;
  width: 337px;
  height: 120px;
}
.contentRow1 {
  font-weight: bolder;
  display: flex;
  text-align: center;
  width: 100%;
}
.contentRow1 .row1 {
  width: 30%;
  font-weight: bolder;
}
.entirety_finished1 .row4 {
  font-weight: bolder;
  text-align: right;
  margin-right: 10px;
}
.contentRow1 .row1, .contentRow1 .row2 {
  text-align: left;
  font-weight: bolder;
}
</style>
north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
@@ -41,6 +41,7 @@
if (like == '') {
  like = null
}
let name=company.companyName
data.value.printList = JSON.parse(props.printList)
let flowCardCount = ''
onMounted(() => {
@@ -212,7 +213,7 @@
          <div  style="font-weight: bolder;display: flex;justify-content:space-between">
            <div>打印人:{{user.user.userName}}</div>
            <div>
              <span style="font-size: 10px">{{itemFlow.otherRemarks}}</span>&nbsp;&nbsp;
              <span v-if="name!='金华福喜天成玻璃有限公司'" style="font-size: 10px">{{itemFlow.otherRemarks}}</span>&nbsp;&nbsp;
              æµç¨‹å¡å·ï¼š {{
                itemFlow.process_id
              }}/{{ itemFlow.technologyNumber }} å…± {{ item.count }} æž¶
@@ -224,7 +225,7 @@
        <td class="tdNowrap">客户名称:</td>
        <td colspan="2">{{ items.customer_name }}</td>
        <td class="tdNowrap">项目名称:</td>
        <td colspan="4">{{ items.project }}</td>
        <td colspan="4" style="min-width: 250px;">{{ items.project }}</td>
        <td class="tdNowrap">工艺流程:</td>
        <td colspan="22"  style="width: 500px">{{ items.process }}</td>
      </tr>
@@ -278,7 +279,8 @@
      <tr v-for="(itemDatile,index) in item.detailList" :key="index">
        <td>{{ itemDatile.order_number }}</td>
        <td>{{ itemDatile.mapNumber }}</td>
        <td>{{ itemDatile.s01Value }}</td>
        <td v-if="name='金华福喜天成玻璃有限公司'">{{ itemDatile.building_number }}</td>
        <td v-else>{{ itemDatile.s01Value }}</td>
        <td>{{ itemDatile.technology_number }}</td>
        <td>{{ itemDatile.child_width }}</td>
        <td class="item" style="width: 5%;height: 100%;">
north-glass-erp/northglass-erp/src/components/pp/TagStyleDesigner.vue
@@ -278,6 +278,18 @@
    }
  },
  {
    tid: 'quantity', title: '订单数量', data: '', type: 'text',
    options: {
      field: 'quantity',
      testData: '',
      width:270,
      height: 16,
      fontSize: 11.25,
      textAlign: "left",
      textContentVerticalAlign: "middle"
    }
  },
  {
    tid: 'orderNumber', title: '订单序号', data: '', type: 'text',
    options: {
      field: 'orderNumber',
north-glass-erp/northglass-erp/src/router/index.js
@@ -332,6 +332,11 @@
              component: () => import('../views/pp/glassOptimize/OptimizeProject.vue'),
            },
            {
              path: 'optimizePrint',
              name: 'optimizePrint',
              component: () => import('../views/pp/glassOptimize/OptimizePrint.vue'),
            },
            {
              path: '',
              redirect:'/main/glassOptimize/optimizeProject'
            }
north-glass-erp/northglass-erp/src/stores/sd/companySet/½ð»ªÌì³É.js
@@ -12,7 +12,7 @@
            //regexp:/^(0|[1-9][0-9]{0,3}([.][0-9]{1,2})?)$/,//正则0.00-9999.99
            msg:'basicData.msg.range99999Dec2'
        },
        orderIdType:'day',//后端生成订单号类型,day:每天生成,month:每月生成,year:每年生成
        orderIdType:'year',//后端生成订单号类型,day:每天生成,month:每月生成,year:每年生成
        deliveryIdType:'day',
        columnName:'图号',
        selectOrderReviewShow:true, //订单首页加工单审核按钮是否显示
@@ -22,7 +22,7 @@
        calculateType:1,//订单计算方式
        reportType:2,//报工是否查询样品订单2查询,1不查询
        qualityInsStatus:2,//跨工序质检审核,1不需要,2需要
        remarkSwitch:1,//流程卡上是否显示其它备注,1显示,2不显示
        remarkSwitch:2,//流程卡上是否显示其它备注,1显示,2不显示
        icon:"",//商标参数
        longSide:null,//订单创建最长边提示颜色 null不提示颜色
        //天津
@@ -75,14 +75,14 @@
            },
            printFlowCard: {//流程卡打印样式
                patch:'è¡¥',
                lackOf:'欠',
                patch:'正品',
                lackOf:'次品',
                processingNote: (itemtextarea) => {
                    return  ``
                },
            },
            hideButton:'true',//流程卡打印界面按钮是否显示
            getSelectFlowCard:1,//流程卡打印查询是否合并  1合并2不合并
            getSelectFlowCard:2,//流程卡打印查询是否合并  1合并2不合并
            columnsLabel:2,//一行两列成品标签 1新疆一行两列成品标签,2其它
        },
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/Optimize.vue
@@ -11,13 +11,6 @@
}
const handleCommand = (command) => {
  router.push({
    path: command
  })
}
</script>
<template>
@@ -26,6 +19,15 @@
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/glassOptimize/optimizeProject' }">{{'工程信息'}}</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">{{$t('order.page.createOrder')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/glassOptimize/optimizePrint' }">打印
        </el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/glassOptimize/optimizePrint' }">调整
        </el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(5)" :class="indexFlag===5?'indexTag':''" :to="{ path: '/main/glassOptimize/optimizePrint' }">数控
        </el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(6)" :class="indexFlag===6?'indexTag':''" :to="{ path: '/main/glassOptimize/optimizePrint' }">设置
        </el-breadcrumb-item>
        <el-breadcrumb-item></el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizePrint.vue
New file
@@ -0,0 +1,11 @@
<script setup>
</script>
<template>
  111
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
@@ -2,8 +2,9 @@
import {reactive, ref} from "vue";
import {useI18n} from "vue-i18n";
import {Search} from "@element-plus/icons-vue";
import {ElDatePicker} from "element-plus";
import {ElDatePicker, ElMessage} from "element-plus";
import useOrderInfoStore from "@/stores/sd/order/orderInfo";
import request from "@/utils/request";
const { t } = useI18n()
@@ -101,29 +102,46 @@
  },
  {
    value: '1',
    label: '1',
    label: '初始工程',
  },
  {
    value: '2',
    label: '2',
    label: '第一次优化',
  },
  {
    value: '3',
    label: '10',
    label: '模拟计算保存',
  },
  {
    value: '4',
    label: '20',
    label: '优化保存',
  },
  {
    value: '5',
    label: '100',
    label: '完成优化',
  },
  {
    value: '6',
    label: '200',
    label: '已领取',
  },
]
//点击查询
const getWorkOrder = () => {
  let startTime = orderInfo.workOrderDate[0]
  let endTime = orderInfo.workOrderDate[1]
  request.post(`/processCard/flowCard/${pageNum.value}/${total.pageSize}/${startTime}/${endTime}`, filterData.value).then((res) => {
    if (res.code == 200) {
      total.dataTotal = res.data.total.total * 1
      total.pageTotal = res.data.total.pageTotal
      pageTotal.value = res.data.total
      xGrid.value.loadData(res.data.data)
      gridOptions.loading = false
    } else {
      ElMessage.warning(res.msg)
    }
  })
}
</script>
@@ -143,8 +161,15 @@
            :default-time="defaultTime"
        />
        <vxe-input
            style="margin-left:10px; "
            placeholder="输入工程号或流程卡号"
        >
        </vxe-input>
        <span class="input">工程状态</span>
        <el-select
            style="margin-left:10px; margin-top: -5px; "
            style="margin-left:10px; margin-top: -5px; width: 150px"
            :default-first-option="true"
            ref="getSelect"
            v-model="optionVal"
@@ -160,12 +185,12 @@
              :value="item.value"
          />
        </el-select>
        <!--查询-->
        <el-button
            style="margin-left:10px;margin-top: -5px"
            @click="searchByDateRange"
            type="primary" :icon="Search">
          æŸ¥è¯¢
            :icon="Search"
            type="primary"
            @click="getWorkOrder">{{ $t('basicData.search') }}
        </el-button>
      </div>
@@ -206,13 +231,6 @@
          å°ç‰‡é¢<vxe-input size="small" class="input" disabled></vxe-input>
          åŽŸç‰‡æ•°<vxe-input size="small" class="input" disabled></vxe-input>
          åŽŸç‰‡é¢<vxe-input size="small" class="input" disabled></vxe-input>
        </span>
        <span style="float: right">
          <el-button type="primary" class="input">钢化版图</el-button>
          <el-button type="primary" class="input">模拟计算</el-button>
          <el-button type="primary" class="input">优化版图</el-button>
          <el-button type="primary" class="input">优化排版</el-button>
          <el-button type="primary" class="input">数据导出</el-button>
        </span>
      </div>
    </div>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/CheckInventory.vue
New file
@@ -0,0 +1,86 @@
<script setup>
import {ref} from "vue";
const value1 = ref('')
const value2 = ref('')
const options1 = [
  {
    value: 'Option1',
    label: '5',
  },
  {
    value: 'Option2',
    label: '6',
  },
  {
    value: 'Option3',
    label: '8',
  },
  {
    value: 'Option4',
    label: '10',
  },
  {
    value: 'Option5',
    label: '12',
  },
]
const options2 = [
  {
    value: 'Option1',
    label: '白玻',
  },
  {
    value: 'Option2',
    label: '灰镜',
  },
  {
    value: 'Option3',
    label: 'Low-e',
  },
]
</script>
<template>
  <div id="box">
    <div>
      <span>厚度(mm):</span>
      <el-select v-model="value1" clearable style="width: 240px">
        <el-option
            v-for="item in options1"
            :key="item.value"
            :label="item.label"
            :value="item.value"
        />
      </el-select>
    </div>
    <div style="margin-top: 30px">
    <span>玻璃类型:</span>
      <el-select v-model="value2"  clearable  style="width: 240px; margin-left: 23px">
        <el-option
            v-for="item in options2"
            :key="item.value"
            :label="item.label"
            :value="item.value"
        />
      </el-select>
    </div>
    <div style="float: right; margin:-55px 35px 0 0;">
      <el-button type="primary">查询</el-button>
    </div>
  </div>
</template>
<style scoped>
#box {
  width: 100%;
  height: 100%;
  padding: 10px;
  margin-top: -20px;
  border-radius: 5px;
  background-color: #D5EAFF;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
@@ -138,7 +138,12 @@
      <span>
        å·¥ç¨‹ç¼–号
      <vxe-select size="small" style="margin-left: 20px" clearable></vxe-select>
      <el-button type="primary" :icon="Search" style="margin-left: 20px">查询</el-button>
      <el-button
          type="primary"
          :icon="Search"
          style="margin-left: 20px"
          @click="">{{$t('basicData.search') }}
      </el-button>
      </span>
      <span style="float: right ; margin-right: 120px">
        å·¥ç¨‹æ··æŽ’等级
@@ -172,8 +177,8 @@
            <el-button :icon="Minus" @click="handleButtonClick(1,false)"/>
            <el-button :icon="Plus" @click="handleButtonClick(1,true)"/>
          </el-button-group>
          <span style="float: right ; margin-left: 250px;">
                å·¥ç¨‹çŽ»ç’ƒç‰‡<vxe-input size="small" class="input" clearable></vxe-input>
          <span style="float: right ; margin-left: 198px;">
                å·¥ç¨‹çŽ»ç’ƒç‰‡&nbsp;&nbsp;<vxe-input size="small" class="input" clearable></vxe-input>
                å®½è½´é—´éš”<vxe-input size="small" class="input" clearable></vxe-input>
                ç‚‰å®½(mm)<vxe-input size="small" class="input" clearable></vxe-input>
              </span>
@@ -190,7 +195,7 @@
            <el-button :icon="Minus" @click="handleButtonClick(2,false)"/>
            <el-button :icon="Plus" @click="handleButtonClick(2,true)"/>
          </el-button-group>
          <span style="float: right ; margin-left: 242px;">
          <span style="float: right ; margin-left: 198px;">
                  åŠ çƒ­æ—¶é—´(秒)<vxe-input size="small" class="input" clearable></vxe-input>
                  é•¿è½´é—´éš”<vxe-input size="small" class="input" clearable></vxe-input>
                  ç‚‰é•¿(mm)<vxe-input size="small" class="input" clearable></vxe-input>
@@ -239,7 +244,7 @@
.input {
  width: 80px;
  margin-left: 10px;
  margin-left: 20px;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue
New file
@@ -0,0 +1,144 @@
<script setup>
import {ref, computed} from "vue";
import {Connection} from "@element-plus/icons-vue";
//计时器
let seconds = ref(0);
let isRunning = ref(false);
let intervalId;
//优化进度条
let progress = ref(0);
//优化次数;时长;效率
let progressValue1 = ref(10);
let progressValue2 = ref(1000);
let progressValue3 = ref(50);
const formattedTime = computed(() => {
  const minutes = Math.floor(seconds.value / 60);
  const remainingSeconds = seconds.value % 60;
  return `${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`;
});
const startTimer = () => {
  if (!isRunning.value) {
    intervalId = setInterval(() => {
      seconds.value++;
      progress.value += 10;
      if (progress.value >= 100) {
        progress.value = 100;
        clearInterval(intervalId);
      }
    }, 1000);
    isRunning.value = true;
  }
};
const pauseTimer = () => {
  if (isRunning.value) {
    clearInterval(intervalId);
    isRunning.value = false;
  }
};
const resetTimer = () => {
  clearInterval(intervalId);
  isRunning.value = false;
  seconds.value = 0;
  progress.value = 0;
};
</script>
<template>
  <div class="header">
    <el-header>
      <div class="header-content">
        <span style="margin-left: -20px;">需切成品</span><br>
        <div>
          <span>总面积(m2):</span>
          <vxe-input class="input" disabled placeholder=""></vxe-input>
          <span>总数量(片):</span>
          <vxe-input class="input" disabled placeholder=""></vxe-input>
          <span>优化时长(秒):</span>
          <span class="time-display">{{ formattedTime }}</span>
          <el-button type="primary" style="margin-left: 20px" @click="startTimer">开始优化</el-button>
          <el-button class="buttons" type="primary" @click="pauseTimer">暂停</el-button>
          <el-button class="buttons" type="primary" @click="resetTimer">完成</el-button>
        </div>
        <br>
        <div style="display: flex;margin-top: -10px">
          <span>方案池 ä¼˜åŒ–次数:</span>
          <el-slider v-model="progressValue1" :min="2" :max="20" size="small" style="max-width: 200px;"></el-slider>
          <span>单次优化时长:</span>
          <el-slider v-model="progressValue2" :min="50" :max="2000" size="small" style="max-width: 200px;"></el-slider>
          <span>钢化效率优先:</span>
          <el-slider v-model="progressValue3" :show-tooltip="false" size="small" style="max-width: 200px;"></el-slider>
          <span>切裁率优先</span>
        </div>
      </div>
    </el-header>
  </div>
  <div id="box">
    <span style="font-size: 20px">优化进度</span>
    <div class="progress-bar">
      <el-progress :percentage="progress"
                   :text-inside="true"
                   :stroke-width="20"
                   status="success"
                   striped
                   striped-flow
                   duration="45"/>
    </div>
    <div style="height: 100px; margin-top: 20px; border: 2px solid #e6e6e6; padding: 10px; border-radius: 5px;">
      <span style="font-weight: bold">耗用原片</span>
    </div>
    <div style="height: 130px; margin-top: 20px;  display: flex; border: 2px solid #e6e6e6; padding: 10px; border-radius: 5px;">
      <span style="font-weight: bold">当前结果</span>
      <div style="margin-top: 5%">
        <span>产生时间:{{ formattedTime }}</span>
        <span style="margin-left: 20px">总利用率:0.0%</span>
        <span style="margin-left: 20px">尾片:</span>
      </div>
    </div>
  </div>
</template>
<style scoped>
.header {
  height: 120px;
  background-color: #d5eaff;
  margin-top: -30px;
  padding: 10px;
  border-radius: 5px;
}
div header span {
  margin-left: 10px;
  font-weight: bold;
}
.input {
  border: none !important;
  height: 25px;
  width: 80px;
}
.time-display {
  font-size: 18px;
  color: #409eff;
}
.buttons {
  float: right;
}
#box {
  padding: 10px;
  margin-top: 10px;
  width: 100%;
  height: 80%;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
@@ -3,9 +3,7 @@
import {useI18n} from "vue-i18n";
import {Search} from "@element-plus/icons-vue";
const { t } = useI18n()
const xGrid = ref()
const gridOptions = reactive({
  height:'100%',
@@ -100,11 +98,21 @@
  },
]
//小圆点单选框
let radio = ref(1);
</script>
<template>
  <div style="width: 100%;height: 100%">
    <h1>流程卡列表</h1>
  <div style="width: 100%;height: 110%; margin-top: -36px">
    <h1>流程卡列表
    <span style="margin-left: 140px;font-size: 14px">工程编号:</span>
    <vxe-input disabled placeholder="" size="small"></vxe-input>&nbsp;
    <span style="font-size: 14px">工程名称:</span>
    <vxe-input placeholder="" size="small"></vxe-input>
      <el-button type="primary" style="margin-left: 20px">创建</el-button>
    </h1>
    <vxe-grid
          size="small"
          @filter-change="filterChanged"
@@ -158,9 +166,11 @@
            />
          </el-select>
          <el-button type="primary" :icon="Search" style="margin-left: 20px">查询</el-button>
          <vxe-select style="margin-left: 40px" placeholder="全部流程卡" clearable></vxe-select>
          <vxe-select style="margin-left: 20px" placeholder="全部项目" clearable></vxe-select>
          <el-button type="primary" style="margin-left: 10px">筛选</el-button>
          <vxe-radio-group v-model="radio" style="margin-left: 20px">
            <vxe-radio label="1" content="全"></vxe-radio>
            <vxe-radio label="2" content="æ­£"></vxe-radio>
            <vxe-radio label="3" content="è¡¥"></vxe-radio>
          </vxe-radio-group>
        </template>
    </vxe-grid>
  </div>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCardDetail.vue
@@ -119,11 +119,6 @@
        </div>
      </template>
      <template #toolbar_buttons>
        <vxe-input value="null" placeholder="工程名称" clearable></vxe-input>
        <el-button type="primary" style="margin-left: 20px">创建</el-button>
      </template>
    </vxe-grid>
  </div>
</template>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
@@ -6,13 +6,11 @@
  Plus,
  Setting,
  Operation,
  Tickets,
  DocumentCopy,
  Grid,
  Edit,
  Printer,
  DocumentAdd, Minus, Menu, Checked, Upload, Suitcase, Refresh, CircleCloseFilled, Sort, Link,
} from "@element-plus/icons-vue";
import OptimizeCompute from "@/views/pp/glassOptimize/page/OptimizeCompute.vue";
import SetAmount from "@/views/pp/glassOptimize/page/SetAmount.vue";
import SetTrimming from "@/views/pp/glassOptimize/page/SetTrimming.vue";
import CheckInventory from "@/views/pp/glassOptimize/page/CheckInventory.vue";
const {t} = useI18n()
@@ -67,8 +65,8 @@
  },*/
  columns: [
    {title: '订序', width: 70},
    {field: 'state', width: 150, title: t('order.width'), filters: [{data: ''}], slots: {filter: 'num2_filter'}},
    {type: 'seq', width: 150, title: t('order.height')},
    {field: 'state', width: 100, title: t('order.width'), filters: [{data: ''}], slots: {filter: 'num2_filter'}},
    {field: 'seq', width: 100, title: t('order.height'),filters: [{data: ''}],slots: {filter: 'num2_filter'}},
    {
      field: 'id',
      width: 150,
@@ -172,6 +170,13 @@
  await emit('changeDialog', command)
}
//优化计算
const dialogVisible = ref({});
const openDialog = (index) => {
  dialogVisible.value[index] = true;
};
</script>
<template>
@@ -212,12 +217,49 @@
      <template #toolbar>
        <div id="header">
          <div id="title">
            <el-button id="checkinventory" type="primary">查询库存</el-button>
            <el-button id="checkremnant" type="primary">查询余料</el-button>
            <el-button id="selectml" type="primary">设置磨量</el-button>
            <el-button id="selectxb" type="primary">设置修边</el-button>
            <el-button id="safe" type="primary">保存</el-button>
            <el-button id="optimize" type="primary">优化</el-button>
            <span>工程编号:</span>
            <vxe-input disabled placeholder=""></vxe-input>&nbsp;
            <span>工程名称:</span>
            <vxe-input placeholder="" style="margin-right: 270px"></vxe-input>
            <el-button id="checkinventory" type="primary" @click="openDialog(1)">查询库存</el-button>
            <el-dialog
                v-model="dialogVisible[1]"
                title="查询库存"
                destroy-on-close
                style="width: 35%;height:35%;">
              <check-inventory/>
            </el-dialog>
            <el-button id="button" type="primary" @click="openDialog(2)">设置磨量</el-button>
            <el-dialog
                v-model="dialogVisible[2]"
                title="设置磨量"
                destroy-on-close
                style="width: 35%;height:80%;margin-top: 3vh;">
               <set-amount/>
            </el-dialog>
            <el-button id="button" type="primary" @click="openDialog(3)">设置修边</el-button>
            <el-dialog
                v-model="dialogVisible[3]"
                title="设置修边"
                destroy-on-close
                style="width: 35%;height:80%;margin-top: 3vh;">
              <set-trimming/>
            </el-dialog>
            <el-button id="button" type="primary">保存</el-button>
            <el-button id="button" type="primary" @click="openDialog(4)">优化</el-button>
            <el-dialog
                v-model="dialogVisible[4]"
                title="优化计算"
                destroy-on-close
                style="width: 75%;height:90%;margin-top: 3vh;"
            >
              <optimize-compute/>
            </el-dialog>
          </div>
          <!--工程文件菜单-->
          <el-dropdown @command="handleCommand">
@@ -234,60 +276,6 @@
              </el-dropdown-menu>
            </template>
          </el-dropdown>
          <!--打印菜单-->
          <el-dropdown @command="handleCommand">
            <el-button class="buttons" type="primary" :icon="Printer">
              æ‰“印
            </el-button>
            <template #dropdown>
              <el-dropdown-menu>
                <el-dropdown-item :command="null" :icon="Printer">打印优化版图</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="Tickets">打印优化报告</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="DocumentCopy">合并打印</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="Grid">缩略图</el-dropdown-item>
              </el-dropdown-menu>
            </template>
          </el-dropdown>
          <!--调整-->
          <el-dropdown @command="handleCommand">
            <el-button class="buttons" type="primary" :icon="Operation">
              è°ƒæ•´
            </el-button>
            <template #dropdown>
              <el-dropdown-menu>
                <el-dropdown-item :command="null" :icon="Edit">全部重排</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="DocumentAdd">新增版面</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="Plus">增加加工次数</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="Minus">删除版面</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="Menu">镜像当前版面</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="Grid">镜像所以版面</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="Checked">保存修改</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="Upload">导出剩余小片</el-dropdown-item>
              </el-dropdown-menu>
            </template>
          </el-dropdown>
          <!--数控-->
          <el-dropdown @command="handleCommand">
            <el-button class="buttons" type="primary" :icon="Suitcase">
              æ•°æŽ§
            </el-button>
            <template #dropdown>
              <el-dropdown-menu>
                <el-dropdown-item :command="null" :icon="Refresh">刷新刀路</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="Link">截断连续线</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="CircleCloseFilled">删除刀路</el-dropdown-item>
                <el-dropdown-item :command="null" :icon="Sort">当前刀路反向</el-dropdown-item>
              </el-dropdown-menu>
            </template>
          </el-dropdown>
          <!--设置-->
          <el-button class="buttons" type="primary" :icon="Setting">
            è®¾ç½®
          </el-button>
          <!--报告-->
          <el-button class="buttons" type="primary" :icon="Tickets">
            æŠ¥å‘Š
          </el-button>
        </div>
      </template>
    </vxe-grid>
@@ -306,9 +294,8 @@
  margin-top: 8px;
}
.buttons {
#button{
  margin-left: 10px;
  margin-top: 8px;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetAmount.vue
New file
@@ -0,0 +1,139 @@
<script setup>
import {ref} from "vue";
function setupComponent() {
  // å„个输入框绑定的值,初始化为0
  const quicksetTop = ref('0');
  const quicksetRight = ref('0');
  const quicksetBottom = ref('0');
  const quicksetLeft = ref('0');
  // ç”¨äºŽæŽ§åˆ¶çš„输入值,初始化为1
  const controlValue = ref('1');
  const syncValues = () => {
    // å°†æŽ§åˆ¶å€¼èµ‹ç»™å…¶ä»–四个组件
    quicksetTop.value = controlValue.value;
    quicksetRight.value = controlValue.value;
    quicksetBottom.value = controlValue.value;
    quicksetLeft.value = controlValue.value;
  };
  return {
    quicksetTop,
    quicksetRight,
    quicksetBottom,
    quicksetLeft,
    controlValue,
    syncValues
  };
}
const {
  quicksetTop,
  quicksetRight,
  quicksetBottom,
  quicksetLeft,
  controlValue,
  syncValues
} = setupComponent();
const check = ref(true)
</script>
<template>
  <div id="box1">
    <span>磨边量(毫米)</span><br><br>
    <span>选择流程卡:</span>
    <vxe-select size="small" placeholder="全部" clearable>
      <vxe-option>全部</vxe-option>
    </vxe-select>
    <div style="display: flex">
      <div class="square-container">
        <div class="square" @click="syncValues"></div>
        <el-input-number v-model="quicksetTop" class="top" placeholder="0"
                         controls-position="right" :step="0.1" :min="0"></el-input-number>
        <el-input-number v-model="quicksetRight" class="right" placeholder="0"
                         controls-position="right" :step="0.1" :min="0"></el-input-number>
        <el-input-number v-model="quicksetBottom" class="bottom" placeholder="0"
                         controls-position="right" :step="0.1" :min="0"></el-input-number>
        <el-input-number v-model="quicksetLeft" class="left" placeholder="0"
                         controls-position="right" :step="0.1" :min="0"></el-input-number>
      </div>
      <el-button type="primary" style="float: right; margin: 184px 0 0 13px;">应用</el-button>
    </div>
    <div style="margin-top: -20px">
      <span>鼠标点击蓝色图形区域可快速设置磨边量</span>
      <el-input-number v-model="controlValue" class="quickset" placeholder="0"
                       controls-position="right" :step="0.1" :min="0"></el-input-number>
      <br>
      <span>成品边长大于等于多少时自动填充(单位: æ¯«ç±³)</span>
      <el-checkbox v-model="check" style="margin: 5px 0 0 12px;"/>
      <vxe-input style="width: 100px; height: 40px; margin-left: 5px" placeholder="0"/>
    </div>
  </div>
</template>
<style scoped>
#box1 {
  width: 100%;
  height: 100%;
  padding: 10px;
  border-radius: 5px;
  background-color: #D5EAFF;
}
.square-container {
  width: 300px;
  height: 300px;
  display: flex;
  position: relative;
  justify-content: center;
  align-items: center;
}
.square {
  width: 100px;
  height: 100px;
  background-color: #5cadfe;
}
.top,
.right,
.bottom,
.left {
  width: 100px;
  height: 50px;
  position: absolute;
}
.top {
  top: 45px;
  left: 50%;
  transform: translateX(-50%);
}
.right {
  top: 50%;
  right: -5px;
  transform: translateY(-50%);
}
.bottom {
  bottom: 45px;
  left: 50%;
  transform: translateX(-50%);
}
.left {
  top: 50%;
  left: -5px;
  transform: translateY(-50%);
}
.quickset {
  margin-left: 60px;
  width: 100px;
  height: 40px;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetTrimming.vue
New file
@@ -0,0 +1,134 @@
<script setup>
import {ref} from "vue";
function setupComponent() {
  // å„个输入框绑定的值,初始化为0
  const quicksetTop = ref('0');
  const quicksetRight = ref('0');
  const quicksetBottom = ref('0');
  const quicksetLeft = ref('0');
  // ç”¨äºŽæŽ§åˆ¶çš„输入值,初始化为1
  const controlValue = ref('1');
  const syncValues = () => {
    // å°†æŽ§åˆ¶å€¼èµ‹ç»™å…¶ä»–四个组件
    quicksetTop.value = controlValue.value;
    quicksetRight.value = controlValue.value;
    quicksetBottom.value = controlValue.value;
    quicksetLeft.value = controlValue.value;
  };
  return {
    quicksetTop,
    quicksetRight,
    quicksetBottom,
    quicksetLeft,
    controlValue,
    syncValues
  };
}
const {
  quicksetTop,
  quicksetRight,
  quicksetBottom,
  quicksetLeft,
  controlValue,
  syncValues
} = setupComponent();
const check = ref(true)
</script>
<template>
  <div id="box1">
    <span>修边量(毫米)</span><br>
    <div style="display: flex; margin-top: -20px">
      <div class="square-container">
        <div class="square" @click="syncValues"></div>
        <el-input-number v-model="quicksetTop" class="top" placeholder="0"
                         controls-position="right" :step="0.1" :min="0"></el-input-number>
        <el-input-number v-model="quicksetRight" class="right" placeholder="0"
                         controls-position="right" :step="0.1" :min="0"></el-input-number>
        <el-input-number v-model="quicksetBottom" class="bottom" placeholder="0"
                         controls-position="right" :step="0.1" :min="0"></el-input-number>
        <el-input-number v-model="quicksetLeft" class="left" placeholder="0"
                         controls-position="right" :step="0.1" :min="0"></el-input-number>
      </div>
      <el-button type="primary" style="float: right; margin: 184px 0 0 13px;">应用</el-button>
    </div>
    <div>
      <span>鼠标点击蓝色图形区域可快速设置修边量</span>
      <el-input-number v-model="controlValue" class="quickset" placeholder="0"
                       controls-position="right" :step="0.1" :min="0"></el-input-number>
      <br>
      <span>查询原片时自动填充(单位: æ¯«ç±³)</span>
      <el-checkbox v-model="check" style="margin: 20px 0 0 117px;"/>
    </div>
  </div>
</template>
<style scoped>
#box1 {
  width: 100%;
  height: 100%;
  padding: 10px;
  border-radius: 5px;
  background-color: #D5EAFF;
}
.square-container {
  width: 300px;
  height: 300px;
  display: flex;
  position: relative;
  justify-content: center;
  align-items: center;
}
.square {
  width: 100px;
  height: 100px;
  background-color: #5cadfe;
}
.top,
.right,
.bottom,
.left {
  width: 100px;
  height: 50px;
  position: absolute;
}
.top {
  top: 45px;
  left: 50%;
  transform: translateX(-50%);
}
.right {
  top: 50%;
  right: -5px;
  transform: translateY(-50%);
}
.bottom {
  bottom: 45px;
  left: 50%;
  transform: translateX(-50%);
}
.left {
  top: 50%;
  left: -5px;
  transform: translateY(-50%);
}
.quickset {
  margin-left: 60px;
  width: 100px;
  height: 45px;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProjectDetails.vue
@@ -15,6 +15,7 @@
import PrintCustomLabelSemi from '@/components/pp/PrintCustomLabelSemi.vue'
import PrintCustomLabelXJ from '@/components/pp/PrintCustomLabelTwo.vue'
import PrintCustomLabelXJTwo from '@/components/pp/PrintCustomLabelXJTwo.vue'
import PrintCustomLabelProject from '@/components/pp/PrintCustomLabelProject.vue'
import SortDetail from '@/components/pp/SelectSortDetailProcessCard.vue'
import footSum from "@/hook/footSum"
import companyInfo from "@/stores/sd/companyInfo"
@@ -32,6 +33,7 @@
const dialogTableVisibleCustomLabel = ref(false)
const dialogTableVisibleLabelXJ = ref(false)
const dialogTableVisibleLabelXJTwo = ref(false)
const dialogTableVisibleLabelProject = ref(false)
const printVisible = ref(false)
let selectRecords = ref(null)
let titleStyleVisible = ref(false)
@@ -546,10 +548,21 @@
            }
          }
          let name=company.companyName
          labelRow.value.list = JSON.stringify(selectRecords)
          labelRow.value.type = '恒鑫带数量'
          labelRow.value.dataType=3
          dialogTableVisibleLabelXJTwo.value = true
          if (name == '金华福喜天成玻璃有限公司'){
            labelRow.value.type = '成品标签'
            labelRow.value.dataType=3
            labelRow.value.lableType = lableTypes
            dialogTableVisibleLabelProject.value = true
          }
          else {
            labelRow.value.type = '恒鑫带数量'
            labelRow.value.dataType=3
            dialogTableVisibleLabelXJTwo.value = true
          }
          break
@@ -763,6 +776,24 @@
                              :dataType="labelRow.dataType"
                              style="width: 100%;height: 100%"/>
    </el-dialog>
    <!--    æˆå“æ ‡ç­¾å·¥ç¨‹æ‰“印-->
    <el-dialog
        id="sizeCustom"
        v-model="dialogTableVisibleLabelProject"
        :title="$t('processCard.printLabel')"
        destroy-on-close
        style="width: 80%;height:75% ">
      <template #header="{ close, titleId, titleClass }">
        <el-button v-print="printContentLabel" :icon="Printer" circle/>
      </template>
      <print-custom-label-project id="childLabel"
                          :faceOrientation="labelRow.faceOrientation"
                          :lableType="labelRow.lableType"
                          :list="labelRow.list"
                          :type="labelRow.type"
                          style="width: 100%;height: 100%"/>
    </el-dialog>
  </div>
</template>
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintProject.vue
@@ -112,7 +112,12 @@
      const button = {'code': 'printLabel',
        status: 'primary',
        'name': t('processCard.finishedProductPrinting2')}
      gridOptions.toolbarConfig.buttons.push(button)
      let name=company.companyName
      if (name != '金华福喜天成玻璃有限公司') {
        gridOptions.toolbarConfig.buttons.push(button)
      }
      const button2 = {'code': 'detailPrinting',
        status: 'primary',
@@ -276,7 +281,16 @@
  id: 'childLabel',
})
const hideButton = () => {
  let name=company.companyName
  // æ ¹æ®æ¡ä»¶å€¼ hidePrintLabels è¿‡æ»¤æŒ‰é’®æ•°ç»„
  gridOptions.toolbarConfig.buttons = gridOptions.toolbarConfig.buttons.filter(button => {
    // è¿™é‡Œæ ¹æ® hidePrintLabels çš„值决定是否隐藏 printLabel å’Œ printLabel2
    if (name == '金华福喜天成玻璃有限公司') {
      return button.code !== 'printLabel';
    }
  })
}
</script>
<template>
north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
@@ -300,6 +300,7 @@
    {field: 'orderNumber', width: 100, title: t('order.OrderNum'),visible: true},
    {field: 'technologyNumber', width: 120, title: t('processCard.technologyNumber'),filters: [{data: ''}],
      slots: {filter: 'num1_filter'}, showOverflow: "ellipsis",visible: true},
    {field: 'bend_radius', width: 100, title: t('order.bendRadius'),visible: true},
    {field: 'shape', width: 100, title: t('order.shape'),visible: true},
    {field: 'process', width: 120, title: t('craft.process'),visible: true},
    {field: 'quantity', width: 120, title: t('order.quantity'),visible: true},
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -667,7 +667,8 @@
               round(ogd.child_height)                                        as height,
               pd.separation,
               fc.technology_number,
               IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber
               IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber,
               od.building_number
        from flow_card as fc
                 left join sd.order_glass_detail as ogd
                           on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and
@@ -1217,7 +1218,8 @@
               round(ogd.child_height)                                        as height,
               pd.separation,
               fc.technology_number,
               IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber
               IFNULL(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S02')),'') as mapNumber,
               od.building_number
        from flow_card as fc
                 left join sd.order_glass_detail as ogd
                           on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and
@@ -2187,7 +2189,8 @@
            '文本' as custom2,
            '文本' as custom3,
            '文本' as custom4,
            '文本' as custom5
            '文本' as custom5,
            od.quantity
        from optimize_detail as opt
                 left join flow_card as fc on opt.project_no=fc.project_no and opt.process_id=fc.process_id and opt.layer=fc.technology_number and opt.order_sort=fc.order_number
                 left join sd.order as o on o.order_id=fc.order_id
@@ -2334,7 +2337,8 @@
            '文本' as custom2,
            '文本' as custom3,
            '文本' as custom4,
            '文本' as custom5
            '文本' as custom5,
            od.quantity
        from optimize_detail as opt
                 left join flow_card as fc on opt.project_no=fc.project_no and opt.process_id=fc.process_id and opt.layer=fc.technology_number and opt.order_sort=fc.order_number
                 left join sd.order as o on o.order_id=fc.order_id
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -323,7 +323,8 @@
        o.project,
        o.order_id,
        o.batch,
        if(od.shape = 1, '普形', if(od.shape = 2, '异形', '')) as shape,
        if(od.shape='' || ISNULL(od.shape),'普形',if(od.shape = 1, '普形', if(od.shape = 2, '异形', ''))) as shape,
        if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),od.bend_radius) as bend_radius,
        ogd.order_number,
        ogd.technology_number,
        ogd.process,
@@ -656,7 +657,7 @@
               ogd.child_height                                                     as childHeight,
               fc.quantity,
               round(ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2) as area,
               if(od.shape = 1, '普形', if(od.shape = 2, '异形', ''))               as shape,
               if(od.shape='' || ISNULL(od.shape),'普形',if(od.shape = 1, '普形', if(od.shape = 2, '异形', ''))) as shape,
               od.remarks
        FROM sd.ORDER AS o
                 LEFT JOIN sd.order_detail AS od ON od.order_id = od.order_id
@@ -740,7 +741,7 @@
    <select id="productionScheduleMp">
        select a.order_number,
               if(a.shape = 1, '普形', if(a.shape = 2, '异形', '')) as shape,
               if(od.shape='' || ISNULL(od.shape),'普形',if(od.shape = 1, '普形', if(od.shape = 2, '异形', ''))) as shape,
               a.product_name,
               b.child_width,
               b.child_height,
@@ -1060,7 +1061,7 @@
               o.project,
               o.order_id,
               o.batch,
               if(od.shape = 1, '普形', if(od.shape = 2, '异形', '')) as shape,
               if(od.shape='' || ISNULL(od.shape),'普形',if(od.shape = 1, '普形', if(od.shape = 2, '异形', ''))) as shape,
               ogd.order_number,
               ogd.technology_number,
               ogd.process,
@@ -1422,7 +1423,7 @@
        o.project,
        o.order_id,
        o.batch,
        if(od.shape = 1, '普形', if(od.shape = 2, '异形', '')) as shape,
        if(od.shape='' || ISNULL(od.shape),'普形',if(od.shape = 1, '普形', if(od.shape = 2, '异形', ''))) as shape,
        sum(od.quantity) as quantity,
        sum(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
        odpd.broken_num) as stockNum,
@@ -1554,7 +1555,7 @@
        o.order_id,
        fc.process_id,
        o.batch,
        if(od.shape = 1, '普形', if(od.shape = 2, '异形', '')) as shape,
        if(od.shape='' || ISNULL(od.shape),'普形',if(od.shape = 1, '普形', if(od.shape = 2, '异形', ''))) as shape,
        sum(od.quantity) as quantity,
        sum(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
        odpd.broken_num) as stockNum,