廖井涛
2025-09-09 2700299978337e0f9603515472ea901be33e4c0d
Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
22个文件已修改
373 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/ar.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/en.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/kr.js 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/ru.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetTrimming.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectAddProcess.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintProject.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/DamageDetails.xml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
@@ -362,7 +362,7 @@
        <td>{{ itemDatile.total_area }}</td>
        <td>{{ itemDatile.perimeter }}</td>
        <td>{{ itemDatile.bend_radius }}</td>
        <td>{{ itemDatile.remarks }}</td>
        <td style="white-space: normal; word-break: break-all; word-wrap: break-word;">{{ itemDatile.remarks }}</td>
        <template v-for=" n in item.processList.length">
          <td></td>
          <td></td>
north-glass-erp/northglass-erp/src/lang/ar.js
@@ -384,6 +384,8 @@
        archRise:'拱高',
        qr1Local:'二维码1位置',
        qr2Local:'二维码2位置',
        default:'默认'
    },
north-glass-erp/northglass-erp/src/lang/en.js
@@ -385,6 +385,7 @@
        archRise:'拱高',
        qr1Local:'二维码1位置',
        qr2Local:'二维码2位置',
        default:'默认'
    },
north-glass-erp/northglass-erp/src/lang/kr.js
@@ -390,8 +390,11 @@
        xMargin:'X축 여백',
        yMargin:'Y축 여백',
        location:'상표 위치',
        sort:'유리 굽힘 방지'
        sort:'유리 굽힘 방지',
        archRise:'拱高',
        qr1Local:'二维码1位置',
        qr2Local:'二维码2位置',
        default:'默认'
    },
    workOrder:{
north-glass-erp/northglass-erp/src/lang/ru.js
@@ -167,6 +167,7 @@
            productAbbreviation:'Продукция',
            productDuplication:'产品重复',
            default:'默认'
        }
    },
    order:{
@@ -383,6 +384,7 @@
        archRise:'拱高',
        qr1Local:'二维码1位置',
        qr2Local:'二维码2位置',
        default:'默认'
    },
north-glass-erp/northglass-erp/src/lang/zh.js
@@ -394,6 +394,7 @@
        archRise:'拱高',
        qr1Local:'二维码1位置',
        qr2Local:'二维码2位置',
        default:'默认'
    },
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/GlassInventory.vue
@@ -64,7 +64,7 @@
    body: {
      options: [
        [
          {code: 'selectTrimming', name: '设置统一修边',},
          {code: 'selectTrimming', name: '设置统一修边',prefixIcon: 'vxe-icon-edit'},
          {code: 'Exports', name: '数据导出', prefixIcon: 'vxe-icon-download', visible: true, disabled: false},
          {code: 'addRow', name: t('basicData.add'), prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: true },
        ],
@@ -85,7 +85,14 @@
    gridRef: xGrid,
    requiresRow: false,
    openTrimming: async () => {
     emit ( 'select-trimming', true)
      // 获取当前选中的记录
      const selectedRecords = xGrid.value.getCheckboxRecords();
      // 发送事件给父组件,包含选中的数据
      emit('select-trimming', {
        action: 'open-trimming-dialog',
        selectedData: selectedRecords && selectedRecords.length > 0 ? selectedRecords : null,
        timestamp: Date.now()
      });
    }
  },
  {
@@ -136,16 +143,22 @@
          }
          return;
        }
        if (config.code === 'selectTrimming') {
          config.openTrimming();
          return;
        }
        // 添加确认提示弹窗,询问用户是否进行当前操作
        ElMessageBox.confirm('是否进行当前操作?', '确认操作', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          if (config.code === 'selectTrimming') {
            config.openTrimming();
            ElMessage.success(config.successMsg);
          }
          // if (config.code === 'selectTrimming') {
          //   config.openTrimming();
          //   ElMessage.success(config.successMsg);
          // }
        }).catch(() => {
          // 用户点击取消后执行的逻辑
          ElMessage.info('已取消操作');
@@ -298,19 +311,38 @@
    const data = gridOptions.data;
    if (data) {
      try {
        const updatedData = [];
        for (let i = 0; i < data.length; i++) {
          const item = data[i];
          const updatedItem = {
        // 检查是否只对选中的项目应用修边
        const shouldApplyToSelectedOnly = receivedData.selectedItemsOnly;
        let targetData = data;
        if (shouldApplyToSelectedOnly) {
          // 只对选中的数据应用修边
          targetData = receivedData.selectedGlassData || [];
          if (!targetData || targetData.length === 0) {
            ElMessage.warning('未选择任何项目,修边未应用');
            return;
          }
        }
        const updatedData = data.map(item => {
          // 如果只对选中项应用,检查当前项是否在选中列表中
          if (shouldApplyToSelectedOnly) {
            const isSelected = targetData.some(selectedItem => selectedItem.id === item.id);
            if (!isSelected) {
              return item; // 不在选中列表中,不修改
            }
          }
          // 应用修边值
          return {
            ...item,
            // 从 receivedData 中获取对应的值来更新表格数据项
            leftTrim: Number(receivedData.quicksetLeft),
            downTrim: Number(receivedData.quicksetBottom),
            rightTrim: Number(receivedData.quicksetRight),
            upTrim: Number(receivedData.quicksetTop),
          };
          updatedData.push(updatedItem);
        }
        });
        gridOptions.data = updatedData;
        xGrid.value.loadData(updatedData);
      } catch (error) {
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
@@ -585,9 +585,21 @@
//右键菜单统一修边
const props = defineProps({
  TrimmingDialogVisible: Boolean,
  CheckboxChangeData: null
  TrimmingDialogVisible: {
    type: [Boolean, Object],
    required: false,
    default: null
  },
  CheckboxChangeData: {
    type: Array,
    required: false,
    default: null
  }
});
const selectedGlassDataForTrimming = ref([]);
/*watch(() => props.TrimmingDialogVisible, (newValue) => {
  if (newValue === true) {
    dialogVisible.value[3] = newValue;
@@ -595,42 +607,59 @@
});*/
watch(
    ()=> [props.TrimmingDialogVisible,props.CheckboxChangeData],
    ([newValue, oldValue])=> {
      if (props.TrimmingDialogVisible!=null){
        dialogVisible.value[3] = newValue;
    () => props.TrimmingDialogVisible,
    (newVal, oldVal) => {
      // 处理打开修边对话框的逻辑
      if (newVal != null && typeof newVal === 'object' && newVal.action === 'open-trimming-dialog') {
        dialogVisible.value[3] = true;
        // 更新选中的玻璃数据
        if (newVal.selectedData && newVal.selectedData.length > 0) {
          selectedGlassDataForTrimming.value = newVal.selectedData;
        } else {
          selectedGlassDataForTrimming.value = [];
        }
      }
      if (props.CheckboxChangeData!=null && props.CheckboxChangeData.length>0){
    }
);
// 单独处理选中原片数据的逻辑
watch(
    () => props.CheckboxChangeData,
    (newData, oldData) => {
      // 只有当有选中数据时才处理
      if (newData != null && newData.length > 0) {
        optimizeData.value.materialDetails = [];
        props.CheckboxChangeData.forEach(items=>{
          const detail={
            width :null,
            height :null,
            stockCode  :null,
            quantity  :null,
            upTrim :null,
            downTrim :null,
            leftTrim :null,
            rightTrim:null,
            priority:0
        newData.forEach(items => {
          const detail = {
            width: null,
            height: null,
            stockCode: null,
            quantity: null,
            upTrim: null,
            downTrim: null,
            leftTrim: null,
            rightTrim: null,
            priority: 0
          }
          detail.width=items.width
          detail.height=items.height
          detail.stockCode=items.id
          detail.quantity=items.available_quantity
          detail.upTrim=items.upTrim
          detail.downTrim=items.downTrim
          detail.leftTrim=items.leftTrim
          detail.rightTrim=items.rightTrim
          detail.width = items.width
          detail.height = items.height
          detail.stockCode = items.id
          detail.quantity = items.available_quantity
          detail.upTrim = items.upTrim
          detail.downTrim = items.downTrim
          detail.leftTrim = items.leftTrim
          detail.rightTrim = items.rightTrim
          optimizeData.value.materialDetails.push(detail)
        })
        dialogVisible.value[4] = true;
      }else{
      } else if (newData !== null && newData.length === 0) {
        // 只有当明确传入空数组时才提示选择原片
        ElMessage.warning('请选择原片');
      }
      console.log(optimizeData.value)
    });
    }
);
const route = useRoute();
@@ -1007,7 +1036,10 @@
        <el-button id="button" type="primary" @click="openDialog(3)">设置修边</el-button>
        <el-dialog v-model="dialogVisible[3]" title="设置修边(mm)" destroy-on-close
                   style="width: 35%;height:80%;margin-top: 3vh;">
          <set-trimming :closeDialog="closeDialog" @send-data-event="handleTrimmingData"/>
          <set-trimming
              :closeDialog="closeDialog"
              :selected-glass-data="selectedGlassDataForTrimming"
              @send-data-event="handleTrimmingData"/>
        </el-dialog>
        <el-button id="button" type="primary" @click="saveOptimizeData()">保存</el-button>
        <el-button id="button" type="primary" @click="openDialog(4)">优化</el-button>
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/SetTrimming.vue
@@ -82,7 +82,15 @@
const emit = defineEmits(['send-data-event',]);
const props = defineProps({
  closeDialog: Function
  closeDialog: {
    type: Function,
    required: true
  },
  selectedGlassData: {
    type: Array,
    required: false,
    default: () => []
  }
});
const setTrimming = () => {
@@ -105,7 +113,9 @@
        quicksetTop: quicksetTop.value,
        quicksetRight: quicksetRight.value,
        quicksetBottom: quicksetBottom.value,
        quicksetLeft: quicksetLeft.value
        quicksetLeft: quicksetLeft.value,
        selectedItemsOnly: props.selectedGlassData && props.selectedGlassData.length > 0,
        selectedGlassData: props.selectedGlassData
      };
      emit('send-data-event', dataToSend);
      props.closeDialog(3);
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectAddProcess.vue
@@ -102,11 +102,12 @@
let endTime = orderInfo.workOrderDate[1]
//第一次加载数据
request.post(`/processCard/selectAddProcess/${startTime}/${endTime}`, filterData.value).then((res) => {
request.post(`/processCard/selectAddProcess/${orderInfo.workOrderDate}`, filterData.value).then((res) => {
  if (res.code == 200) {
    pageTotal.value = res.data.total
    produceList = produceList.value.concat(deepClone(res.data.data))
    orderInfo.workOrderDate = res.data.selectDate
    xGrid.value.reloadData(produceList)
    gridOptions.loading = false
  } else {
@@ -117,13 +118,13 @@
//点击查询
const getWorkOrder = () => {
  let startTime = orderInfo.workOrderDate[0]
  let endTime = orderInfo.workOrderDate[1]
  request.post(`/processCard/selectAddProcess/${startTime}/${endTime}`, filterData.value).then((res) => {
  request.post(`/processCard/selectAddProcess/${orderInfo.workOrderDate}`, filterData.value).then((res) => {
    if (res.code == 200) {
      pageTotal.value = res.data.total
      xGrid.value.loadData(res.data.data)
      orderInfo.workOrderDate = res.data.selectDate
      gridOptions.loading = false
    } else {
      ElMessage.warning(res.msg)
@@ -156,7 +157,7 @@
  let startTime = orderInfo.workOrderDate[0]
  let endTime = orderInfo.workOrderDate[1]
  request.post(`/processCard/selectAddProcess/${startTime}/${endTime}`, filterData.value).then((res) => {
  request.post(`/processCard/selectAddProcess/${orderInfo.workOrderDate}`, filterData.value).then((res) => {
    if (res.code == 200) {
      pageTotal.value = res.data.total
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue
@@ -127,7 +127,7 @@
//第一次加载数据
request.post(`/processCard/selectPrintFlowCard/${startTime}/${endTime}/${orderId}/${project}/${userId}/${state}`, filterData.value).then((res) => {
request.post(`/processCard/selectPrintFlowCard/${orderInfo.workOrderDate}/${orderId}/${project}/${userId}/${state}`, filterData.value).then((res) => {
  if (res.code == 200) {
    produceList = produceList.value.concat(deepClone(res.data.data))
@@ -136,7 +136,7 @@
    if (roleId=='1' || roleId=='17'){
      gridOptions.toolbarConfig.buttons[2].visible=true
    }*/
    orderInfo.workOrderDate = res.data.selectDate
    xGrid.value.reloadData(produceList)
    gridOptions.loading = false
  } else {
@@ -147,8 +147,7 @@
//点击查询
const getWorkOrder = () => {
  let startTime = orderInfo.workOrderDate[0]
  let endTime = orderInfo.workOrderDate[1]
  let orderId=form.orderId
  let project=form.project
@@ -160,9 +159,9 @@
  }
  let state = optionVal.value
  request.post(`/processCard/selectPrintFlowCard/${startTime}/${endTime}/${orderId}/${project}/${userId}/${state}`, filterData.value).then((res) => {
  request.post(`/processCard/selectPrintFlowCard/${orderInfo.workOrderDate}/${orderId}/${project}/${userId}/${state}`, filterData.value).then((res) => {
    if (res.code == 200) {
      orderInfo.workOrderDate = res.data.selectDate
      xGrid.value.loadData(res.data.data)
      gridOptions.loading = false
    } else {
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintProject.vue
@@ -15,6 +15,8 @@
import {remove} from "xe-utils";
import PrintProcess from "@/components/pp/PrintProcess.vue";
import PrintProcessStraight from "@/components/pp/PrintProcessStraight.vue";
import useOrderInfoStore from "@/stores/sd/order/orderInfo"
//语言获取
const {t} = useI18n()
@@ -23,7 +25,7 @@
const dialogTableVisibleLabelXJTwo = ref(false)
const dialogTableVisibleStraight = ref(false)
let rowClickIndex = ref(null)
const orderInfo = useOrderInfoStore()
//定义数据返回结果
@@ -139,15 +141,17 @@
}
//第一次加载获取近七天时间和默认状态
form.date1 = getNowTime()
let startTime = form.date1[0]
let endTime = form.date1[1]
if (orderInfo.workOrderDate[0]=="" && orderInfo.workOrderDate[1]==""){
  orderInfo.workOrderDate=getNowTime()
}
let startTime = orderInfo.workOrderDate[0]
let endTime = orderInfo.workOrderDate[1]
let orderId=form.orderId
let project=form.project
//第一次加载数据
request.post(`/processCard/selectPrintPrintProject/${startTime}/${endTime}`, filterData.value).then((res) => {
request.post(`/processCard/selectPrintPrintProject/${orderInfo.workOrderDate}`, filterData.value).then((res) => {
  if (res.code == 200) {
    if(hidePrintLabels=="true"){
@@ -169,6 +173,7 @@
      gridOptions.toolbarConfig.buttons.push(button2)
    }
    orderInfo.workOrderDate = res.data.selectDate
    produceList.value = deepClone(res.data.data)
    xGrid.value.reloadData(produceList.value)
    gridOptions.loading = false
@@ -183,9 +188,9 @@
  let startTime = form.date1[0]
  let endTime = form.date1[1]
  request.post(`/processCard/selectPrintPrintProject/${startTime}/${endTime}`, filterData.value).then((res) => {
  request.post(`/processCard/selectPrintPrintProject/${orderInfo.workOrderDate}`, filterData.value).then((res) => {
    if (res.code == 200) {
      orderInfo.workOrderDate = res.data.selectDate
      xGrid.value.loadData(res.data.data)
      gridOptions.loading = false
    } else {
@@ -376,7 +381,7 @@
  <div  style="width: 100%;height: 100%">
    <div class="head">
        <el-date-picker
            v-model="form.date1"
            v-model="orderInfo.workOrderDate"
            :start-placeholder="$t('basicData.startDate')"
            :end-placeholder="$t('basicData.endDate')"
            format="YYYY/MM/DD"
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
@@ -187,6 +187,7 @@
    if (res.code == 200) {
      total.dataTotal = res.data.total.total * 1
      total.pageTotal = res.data.total.pageTotal
      orderInfo.workOrderDate = res.data.selectDate
      pageTotal.value = res.data.total
      res.data.data.forEach(item => {
        switch (item.layoutStatus) {
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -451,6 +451,7 @@
          //当可操作数量为0,并且完工数量不等于可完工数量时
          if(row.minQuantity===0 && val!==(totalQuantity-row.breakageQuantity) ){
            console.log(12312312312)
            return new Error(`${t('reportingWorks.pleaseNumber12')} ${okVal}+${val}=${okVal+val}\n
                              ${t('reportingWorks.pleaseNumber13')} ${nextQuantitySum}\n
                              ${t('reportingWorks.pleaseNumber14')}
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
@@ -212,6 +212,7 @@
      total.pageTotal= res.data.total.pageTotal
      pageTotal.value = res.data.total
      total.value = res.data.total
      orderInfo.reportingWorkDate = res.data.selectDate
      produceList=res.data.data
      // 使用map方法来处理每个对象
      let modifiedCollection = produceList.map(item => {
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue
@@ -138,8 +138,8 @@
  let selectState = optionVal.value
  request.post(`/workOrder/orderGlassDetail/${orderInfo.workOrderDate}/${selectState}`, filterData.value).then((res) => {
    if (res.code == 200) {
      //isButtonDisabled=false
      pageTotal.value = res.data.total
      orderInfo.workOrderDate = res.data.selectDate
      xGrid.value.loadData(res.data.data)
      gridOptions.loading = false
    } else {
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue
@@ -23,6 +23,9 @@
const company = companyInfo()
const xGrid = ref()
const trademarkLocation=ref([t('craft.upperLeft'),t('craft.upperRight'),t('craft.lowLeft'),t('craft.lowRight')])
const qrcodeLocation=ref({})
const gridOptions = reactive({
  loading:true,
  border:  "full",//表格加边框
@@ -467,6 +470,10 @@
//初始化判断是否有id传入
onMounted(()=>{
  addListener(xGrid.value,gridOptions)
  qrcodeLocation.value[t('craft.default')] = ""
  trademarkLocation.value.forEach(item =>{
    qrcodeLocation.value[item] = item
  })
  const str = route.query.orderId
  if (typeof str === 'undefined' || str === null || str === '' || str === '\n' || str === '\r'){
    return
@@ -1308,7 +1315,7 @@
        :close-on-click-modal="false"
        :close-on-press-escape="false"
        @closed="handleClosed"
        style="width: 922px;height:750px;margin-top: 100px ;
        style="width: 1122px;height:750px;margin-top: 100px ;
        position: relative;" >
      <div style="width: 50%;height: 100%;float: left">
        <el-row style="">
@@ -1386,7 +1393,12 @@
        <el-row>
          <el-col :span="5">{{$t('craft.qr1Local')}}:</el-col>
          <el-col :span="25">
            <el-radio v-model="trademarkAttr.qr1.location" v-for="item in trademarkLocation" :label="item"  />
            <el-radio v-model="trademarkAttr.qr1.location"
                      v-for="(item,keys) in qrcodeLocation"
                      :value="item"
            >
              {{keys}}
            </el-radio>
          </el-col>
        </el-row>
@@ -1419,7 +1431,12 @@
        <el-row>
          <el-col :span="5">{{$t('craft.qr2Local')}}:</el-col>
          <el-col :span="25">
            <el-radio v-model="trademarkAttr.qr2.location" v-for="item in trademarkLocation" :label="item"  />
            <el-radio v-model="trademarkAttr.qr2.location"
                      v-for="(item,keys) in qrcodeLocation"
                      :value="item"
            >
              {{keys}}
            </el-radio>
          </el-col>
        </el-row>
@@ -1451,7 +1468,7 @@
      position: relative;display: flex;justify-content: center;align-content: center;">
          <div id="mains" ref="parent"  >
            <div id="iocn" ref="draggable"
            <div id="icon" ref="draggable"
                v-if="tagCheck(t('craft.upperLeft'))"
                :style="{marginLeft:trademarkAttr.xMargin/big+'px',marginTop:trademarkAttr.yMargin/big+'px'}"
                style="width: 20px;height: 20px;left: 0;top: 0;background-color: red;position: absolute;"
@@ -1459,13 +1476,13 @@
            >
              <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%"   :src="iconNickname"/>
            </div>
            <div id="iocn" ref="draggable" v-if="tagCheck(t('craft.upperRight'))"  @mousedown="startDragUpperRight" :style="{marginRight:trademarkAttr.xMargin/big+'px',marginTop:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;right: 0;top: 0;background-color: red;position: absolute;">
            <div id="icon" ref="draggable" v-if="tagCheck(t('craft.upperRight'))"  @mousedown="startDragUpperRight" :style="{marginRight:trademarkAttr.xMargin/big+'px',marginTop:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;right: 0;top: 0;background-color: red;position: absolute;">
              <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%"   :src="iconNickname"/>
            </div>
            <div id="iocn" ref="draggable" v-if="tagCheck(t('craft.lowLeft'))" @mousedown="startDragLowLeft" :style="{marginLeft:trademarkAttr.xMargin/big+'px',marginBottom:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;left: 0;bottom: 0;background-color: red;position: absolute;">
            <div id="icon" ref="draggable" v-if="tagCheck(t('craft.lowLeft'))" @mousedown="startDragLowLeft" :style="{marginLeft:trademarkAttr.xMargin/big+'px',marginBottom:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;left: 0;bottom: 0;background-color: red;position: absolute;">
              <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%"   :src="iconNickname"/>
            </div>
            <div id="iocn" ref="draggable" v-if="tagCheck(t('craft.lowRight'))" @mousedown="startDragLowRight" :style="{marginRight:trademarkAttr.xMargin/big+'px',marginBottom:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;right: 0;bottom: 0;background-color: red;position: absolute;">
            <div id="icon" ref="draggable" v-if="tagCheck(t('craft.lowRight'))" @mousedown="startDragLowRight" :style="{marginRight:trademarkAttr.xMargin/big+'px',marginBottom:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;right: 0;bottom: 0;background-color: red;position: absolute;">
              <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%"   :src="iconNickname"/>
            </div>
           <canvas  id="canvas" ></canvas>
@@ -1473,8 +1490,8 @@
      </div>
      <div id="width" style="height: 20px;position: absolute;top: 33px;left: 652px;">{{orderDetailWidth}}</div>
      <div id="height" style="width: 60px;position: absolute;top: 178px;left: 390px;">{{orderDetailHeight}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 33px;left: 752px;">{{orderDetailWidth}}</div>
      <div id="height" style="width: 60px;position: absolute;top: 178px;right: 100px;">{{orderDetailHeight}}</div>
      <div style="float: left;margin-top: 20px;margin-left: 80px">
        <el-input class="contactNumber" @blur="getproject" type="text" v-model="data1" />
        <el-input class="contactNumber" @blur="getproject" type="text" v-model="data2"  />&nbsp;&nbsp;&nbsp;
@@ -1485,12 +1502,12 @@
        <el-input class="contactNumber" @blur="getproject" type="text" v-model="data7"  />
        <el-input class="contactNumber" @blur="getproject" type="text" v-model="data8"  /><br>
      </div>
      <div id="width" style="height: 20px;position: absolute;top: 332px;left: 520px;">{{$t('order.upper')}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 354px;left: 520px;">{{$t('order.down')}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 312px;left: 562px;">{{$t('order.horizontal')}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 312px;left: 625px;">{{$t('order.vertical')}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 312px;left: 695px;">{{$t('order.horizontal')}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 312px;left: 760px;">{{$t('order.vertical')}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 332px;left: 520px;margin-left: 80px">{{$t('order.upper')}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 354px;left: 520px;margin-left: 80px">{{$t('order.down')}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 312px;left: 562px;margin-left: 80px">{{$t('order.horizontal')}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 312px;left: 625px;margin-left: 80px">{{$t('order.vertical')}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 312px;left: 695px;margin-left: 80px">{{$t('order.horizontal')}}</div>
      <div id="width" style="height: 20px;position: absolute;top: 312px;left: 760px;margin-left: 80px">{{$t('order.vertical')}}</div>
      <div v-if="enlargementFlag" style="width: 400px;height: 250px;float: left;position: relative;background-color: red">
        <el-image  @dblclick="trademarkenlargement" style="z-index: 9999;max-width: 100%;max-height: 100%" :src="iconNickname"/>
      </div>
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
@@ -47,12 +47,11 @@
    //分架查询
    @ApiOperation("分架查询接口")
    @SaCheckPermission("selectAddProcess.search")
    @PostMapping("/selectAddProcess/{selectTime1}/{selectTime2}")
    @PostMapping("/selectAddProcess/{selectDate}")
    public Result selectAddProcess(
            @PathVariable Date selectTime1,
            @PathVariable Date selectTime2,
            @PathVariable List<String> selectDate,
            @RequestBody FlowCard flowCard) {
        return Result.seccess(flowCardService.selectAddProcess(selectTime1, selectTime2, flowCard));
        return Result.seccess(flowCardService.selectAddProcess(selectDate, flowCard));
    }
    //分架明细查询
@@ -176,16 +175,15 @@
    @ApiOperation("流程卡打印查询接口")
    @SaCheckPermission("selectPrintFlowCard.search")
    @PostMapping("/selectPrintFlowCard/{selectTime1}/{selectTime2}/{orderId}/{project}/{userId}/{state}")
    @PostMapping("/selectPrintFlowCard/{selectDate}/{orderId}/{project}/{userId}/{state}")
    public Result selectPrintFlowCard(
            @PathVariable Date selectTime1,
            @PathVariable Date selectTime2,
            @PathVariable List<String> selectDate,
            @PathVariable String orderId,
            @PathVariable String project,
            @PathVariable String userId,
            @PathVariable Integer state,
            @RequestBody FlowCard flowCard) {
        return Result.seccess(flowCardService.selectPrintFlowCardSv(selectTime1, selectTime2, orderId, project,userId,state, flowCard));
        return Result.seccess(flowCardService.selectPrintFlowCardSv(selectDate, orderId, project,userId,state, flowCard));
    }
    @ApiOperation("流程卡明细查询接口")
@@ -306,11 +304,10 @@
    @ApiOperation("工程打印查询接口")
    @SaCheckPermission("selectPrintFlowCard.search")
    @PostMapping("/selectPrintPrintProject/{selectTime1}/{selectTime2}")
    @PostMapping("/selectPrintPrintProject/{selectDate}")
    public Result selectPrintFlowCard(
            @PathVariable Date selectTime1,
            @PathVariable Date selectTime2) {
        return Result.seccess(flowCardService.selectPrintFlowCard(selectTime1, selectTime2));
            @PathVariable List<String> selectDate) {
        return Result.seccess(flowCardService.selectPrintFlowCard(selectDate));
    }
    @ApiOperation("修改是否打印状态")
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
@@ -25,7 +25,7 @@
    Map<String, Integer> getPageTotal(Integer offset, Integer pageSize, String selectTime1, String selectTime2, FlowCard flowCard);
    //分架数据查询
    List<FlowCard> selectFlowCardMp(Date selectTime1, Date selectTime2, FlowCard flowCard);
    List<FlowCard> selectFlowCardMp(String selectTime1, String selectTime2, FlowCard flowCard);
    //分架明细查询
    List<Map<String, String>> detailsSelectMp(String orderId, FlowCard flowCard);
@@ -74,9 +74,9 @@
    Boolean deleteReportingWork(String processId);
    Boolean deleteReportingWorkByOrderId(String orderId);
    List<Map<String, String>> selectPrintFlowCardMp(Date selectTime1, Date selectTime2, String orderId, String project, Integer state, FlowCard flowCard);
    List<Map<String, String>> selectPrintFlowCardMp(String selectTime1, String selectTime2, String orderId, String project, Integer state, FlowCard flowCard);
    List<Map<String, String>> selectPrintFlowCard(Date selectTime1, Date selectTime2);
    List<Map<String, String>> selectPrintFlowCard(String selectTime1, String selectTime2);
    List<Map<String, String>> selectPrintMp(String orderId);
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -89,9 +89,23 @@
    }
    //分架查询
    public Map<String, Object> selectAddProcess(Date selectTime1, Date selectTime2, FlowCard flowCard) {
    public Map<String, Object> selectAddProcess(List<String> selectDate, FlowCard flowCard) {
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
        if(selectDate !=null && selectDate.size()==2){
            if(!selectDate.get(0).isEmpty()){
                startDate = selectDate.get(0);
            }
            if(!selectDate.get(1).isEmpty()){
                endDate = selectDate.get(1);
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.selectFlowCardMp(selectTime1, selectTime2, flowCard));
        map.put("data", flowCardMapper.selectFlowCardMp( startDate, endDate, flowCard));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
    }
@@ -248,23 +262,51 @@
        return map;
    }
    public Object selectPrintFlowCardSv(Date selectTime1, Date selectTime2, String orderId, String project, String userId, Integer state, FlowCard flowCard) {
    public Object selectPrintFlowCardSv(List<String> selectDate, String orderId, String project, String userId, Integer state, FlowCard flowCard) {
        if ("null".equals(orderId)) {
            orderId = "";
        }
        if ("null".equals(project)) {
            project = "";
        }
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
        if(selectDate !=null && selectDate.size()==2){
            if(!selectDate.get(0).isEmpty()){
                startDate = selectDate.get(0);
            }
            if(!selectDate.get(1).isEmpty()){
                endDate = selectDate.get(1);
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.selectPrintFlowCardMp(selectTime1, selectTime2, orderId, project,state, flowCard));
        map.put("data", flowCardMapper.selectPrintFlowCardMp(startDate, endDate, orderId, project,state, flowCard));
        String roleId = flowCardMapper.selectUserMp(userId);
        map.put("user", roleId);
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
    }
    public Object selectPrintFlowCard(Date selectTime1, Date selectTime2) {
    public Object selectPrintFlowCard(List<String> selectDate) {
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
        if(selectDate !=null && selectDate.size()==2){
            if(!selectDate.get(0).isEmpty()){
                startDate = selectDate.get(0);
            }
            if(!selectDate.get(1).isEmpty()){
                endDate = selectDate.get(1);
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.selectPrintFlowCard(selectTime1, selectTime2));
        map.put("data", flowCardMapper.selectPrintFlowCard(startDate, endDate));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
    }
north-glass-erp/src/main/resources/mapper/pp/DamageDetails.xml
@@ -8,13 +8,17 @@
    FROM pp.damage_details as a
    left join pp.reporting_work as b
    on a.reporting_work_id = b.reporting_work_id
    left join patch_log as c
    on a.reporting_work_id = c.reporting_work_id
           and a.process_id = c.process_id
           and a.order_number = c.order_sort
           and a.technology_number = c.technology_number
    WHERE a.process_id = #{processId}
    <if test="needOrderNumber!=null">
    and a.order_number = #{orderNumber}
    </if>
    and a.technology_number =#{technologyNumber}
    and a.breakage_quantity>0
    and a.patch_status=0
    and b.reviewed_state>=0
    and b.this_process in (WITH RECURSIVE cte AS (
                            SELECT 1 AS n
@@ -24,21 +28,25 @@
                           SELECT REGEXP_SUBSTR(#{behindProcess}, '[^,]+', 1, n) AS process
                           FROM cte
                           WHERE REGEXP_SUBSTR(#{behindProcess}, '[^,]+', 1, n) IS NOT NULL)
    and ifnull(c.review_status,0) = 0
</select>
    <select id="getNotReview">
    select a.*
    select a.*,ifnull(c.review_status,0) as reviewed_state
    from damage_details as a
    left join reporting_work as b
    on a.reporting_work_id = b.reporting_work_id
    left join patch_log as c
    on a.reporting_work_id = c.reporting_work_id and a.process_id = c.process_id and a.order_number = c.order_sort
    and a.technology_number = c.technology_number
    where a.process_id=#{processId}
     and b.reviewed_state>=0
  <if test="orderNumber!= null">
  <if test="orderNumber!= null || orderNumber!=''">
      and a.order_number = #{orderNumber}
  </if>
    and a.technology_number = #{technologyNumber}
     and     a.patch_status=0
    and a.breakage_quantity>0
    and c.review_status = 0
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -448,7 +448,7 @@
                   a.completed_quantity,
                (a.completed_quantity+ a.breakage_quantity),
                   (f.completed_quantity
                       -ifnull(g.completed_quantity,0))
                       -ifnull(g.completed_quantity,0) + a.breakage_quantity)
                    )  as minQuantity -- 修改最小数
            </if>
            <if test="nextProcess == null or nextProcess == ''">  -- 最后一道工序