chenlu
2024-04-19 13843ab657179da3a9165a6ed68ca116bfa56d69
提交拉取
9个文件已修改
400 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue 200 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | 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 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/pp/FolwCard.xml 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
@@ -14,7 +14,7 @@
const {t} = useI18n()
let router = useRouter()
const dialogTableVisible = ref(false)
let rowClickIndex = ref(null)
let selectRecords = ref(null)
//定义滚动条高度
let scrollTop = ref(null)
@@ -185,17 +185,32 @@
})
const gridEvents = {
  async toolbarButtonClick({code}) {
  toolbarButtonClick ({ code}) {
    const $grid = xGrid.value
     selectRecords = $grid.getCheckboxRecords()
    if ($grid) {
      switch (code) {
        case 'print': {
          const $table = xGrid.value
          const selectRecords = $table.getCheckboxRecords()
          console.log(selectRecords.order_id)
          dialogTableVisible.value = true
          return;
          if(selectRecords.value===null){
            ElMessage.warning(t('searchOrder.msgList.checkOrder'))
            return
          }
          let id = ""
          for (let i = 0; i < selectRecords.length; i++) {
            if (i + 1 === selectRecords.length) {
              id += selectRecords[i].id
            } else {
              id += selectRecords[i].id + "|"
            }
          }
          console.log(selectRecords)
          router.push({path: '/main/processCard/printProcess', query: {printList: JSON.stringify(selectRecords)}})
          //dialogTableVisible.value = true
          break
        }
      }
    }
  },
@@ -252,7 +267,7 @@
        destroy-on-close
        title="流程卡打印"
        style="width: 80%;height:75% ">
      <PrintProcess
      <PrintProcess :printList="selectRecords"
          style="width: 100%;height: 100%" />
    </el-dialog>
  </div>
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue
@@ -1,35 +1,117 @@
<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";
//语言获取
const {t} = useI18n()
let router = useRouter()
let produceList = ref([])
let details = ref([])
const data = ref({
  printList:[]
})
const {currentRoute} = useRouter()
const route = currentRoute.value
data.value.printList = JSON.parse(route.query.printList)
let flowCardCount=data.value.printList.length
console.log(flowCardCount)
onMounted(() => {
  // if (id === null || id === undefined || id === '') {
  //   return
  // }
      request.post(`/processCard/getSelectPrinting`, data.value).then((res) => {
        if (res.code == 200) {
          produceList.value = deepClone(res.data.data)
          console.log(produceList.value)
        } else {
          ElMessage.warning(res.msg)
          router.push("/login")
        }
      })
    }
  )
// 打印方法
const printFlowCard = () => {
  // 需要打印的局部区域赋予"print-wrap"的id
  let el = document.getElementById("printFlowCard");
  let doc = document;
  let body = doc.body || doc.getElementsByTagName("body")[0];
  let printId = "print-" + Date.now();
  // 创建无副作用的打印容器(因不确定页面的打印元素有无其它样式)
  let content = doc.createElement("div");
  content.id = printId;
  // 样式控制与打印无关的元素隐藏
  let style = doc.createElement("style");
  style.innerHTML =
      "body>#" +
      printId +
      "{display:none}@media print{body>:not(#" +
      printId +
      "){display:none !important}body>#" +
      printId +
      "{display:block;padding-top:1px}}";
  //
   content.innerHTML = el.outerHTML;
  // // console.log("el.outerHTML", el.outerHTML);
  body.appendChild(style);
  // 与style元素设置的样式相配合
  // 把打印内容的元素添加到body(作为body的子元素,可用body的子选择器 '>' 控制打印样式)
  body.appendChild(content);
  setTimeout(() => {
    window.print();
    body.removeChild(content);
    body.removeChild(style);
  }, 20);
}
</script>
<template>
  <el-button id="printButton" @click="printFlowCard">打印</el-button>
  <div id="printFlowCard">
    <table id="contentTable" >
    <table v-for="(item,id) in produceList" id="contentTable" :key="id">
      <thead>
      <tr>
      <tr v-for="(itemFlow,index) in item.detail" :key="index">
        <td colspan="24">
          <h1>吉利玻璃</h1>
          <h1>生产流程卡</h1>
          <div style="text-align: right">流程卡号: NG24041101A001 共*架<span class="technology">/1</span></div>
          <div id="bj" style="float: right;font-size: 28px">{{ id+1 }}</div>
          <div>常州市吉利玻璃有限公司</div>
          <div>生产流程卡</div>
          <div style="text-align: right;font-weight: bolder">流程卡号: {{ itemFlow.process_id }}/{{ itemFlow.technologyNumber }} 共 {{flowCardCount}} 架</div>
        </td>
      </tr>
      <tr>
      <tr v-for="(items,index) in item.detail" :key="index">
        <td>客户名称:</td>
        <td colspan="2"></td>
        <td colspan="2">{{ items.customer_name }}</td>
        <td>项目名称:</td>
        <td colspan="2"></td>
        <td>工艺流程:</td>
        <td colspan="16"></td>
        <td colspan="2">{{ items.project }}</td>
        <td style="width:100px">工艺流程:</td>
        <td colspan="16">{{ items.process }}</td>
      </tr>
      <tr>
      <tr v-for="(itemTr,index) in item.detail" :key="index">
        <td>磨边类型:</td>
        <td colspan="2"></td>
        <td colspan="2">{{ itemTr.edging_type }}</td>
        <td>单片名称:</td>
        <td colspan="2"></td>
        <td colspan="2">{{ itemTr.glass_child }}</td>
        <td>产品名称:</td>
        <td colspan="16"></td>
        <td colspan="16">{{ itemTr.product_name }}</td>
      </tr>
      </thead>
      <tbody>
      <tr>
        <td rowspan='2'>序号</td>
        <td rowspan='2'>宽*高</td>
@@ -65,24 +147,46 @@
        <td>正品</td>
        <td>次品</td>
      </tr>
      </thead>
      <tbody>
      <tr></tr>
      <tr v-for="(itemDatile,index) in item.detailList" :key="index">
        <td>{{ itemDatile.order_number }}</td>
        <td>{{ itemDatile.child_width }}</td>
        <td>{{ itemDatile.quantity }}</td>
        <td>{{ itemDatile.total_area }}</td>
        <td>{{ itemDatile.perimeter }}</td>
        <td>{{ itemDatile.bend_radius }}</td>
        <td>{{ itemDatile.order_number }}</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
      </tr>
      </tbody>
      <tfoot>
      <tr>
        <td colspan="24">
        <td colspan="24" v-for="(itemsum,index) in item.detail" :key="index">
          数量:
          <label>11</label>
          <label>{{ itemsum.quantity }}</label>
          面积:
          <label>1111</label>
          <label>{{ itemsum.gross_area }}</label>
          重量:
          <label>1111</label>
          <label>{{ itemsum.gross_area }}</label>
        </td>
      </tr>
      <tr>
        <td colspan="6" rowspan="7" style="width: 470px">
          <textarea style="height: 98%;width: 98%"></textarea>
      <tr v-for="(itemtextarea,index) in item.detail" :key="index">
        <td colspan="6" rowspan="6" style="width: 450px;height: 150px ">
          <div style="width: 100%;height: 100%"><textarea style="height: 98%;width: 98%">{{ itemtextarea.processing_note }}</textarea></div>
        </td>
        <td>完工签名</td>
        <td></td>
@@ -194,25 +298,63 @@
  padding: 0;
}
#printButton{
  margin-top: -40px;
  width: 100px;
}
#printFlowCard {
  margin-top: -40px;
  text-align: center;
  width: 100%;
  height: 100%;
  //font-weight: bolder;
  height: 600px;
}
#contentTable {
  border-collapse: collapse;
  border: 1px solid black;
  height: 100%;
  width: 100%;
}
#contentTable thead {
  font-size: 13px;
  font-weight: bolder;
}
#contentTable thead div {
  font-size: 15px;
  font-weight: bolder;
}
#contentTable tr td {
  border: 1px solid black;
  height: 30px;
  height: 22px;
  font-weight: bolder;
}
#contentTable tbody{
  height: 22px;
}
#contentTable tbody td {
  width: 50px;
}
#contentTable tfoot{
  font-size: 12px;
  font-weight: bolder;
}
footer {page-break-after: always;}
tbody{display:table-row-group;}
table { page-break-inside:auto; }
tr    { page-break-inside:avoid;  }
td    { page-break-inside:avoid;  }
thead { display:table-header-group;  }
tfoot { display:table-footer-group;page-break-inside:avoid; }
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue
@@ -98,7 +98,16 @@
  let startTime = form.date1[0]
  let endTime = form.date1[1]
  request.post(`/processCard/selectAddProcess/${startTime}/${endTime}`).then((res) => {
  let orderId=form.orderId
  let project=form.project
  if (orderId==''){
    orderId=null
  }
  if (project==''){
    project=null
  }
  request.post(`/processCard/selectPrintFlowCard/${startTime}/${endTime}/${orderId}/${project}`, filterData.value).then((res) => {
    if (res.code == 200) {
      xGrid.value.loadData(res.data.data)
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -516,7 +516,6 @@
const checkClose = async (done) => {
  if(brokenGrid.value.getTableData().fullData.length===0){
    console.log(brokenRow.value)
    brokenRow.value.breakageQuantity=null
    brokenRow.value.completedQuantity = brokenRow.value.quantity
    brokenRow.value.damageDetails=[]
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
@@ -2,6 +2,7 @@
import com.example.erp.common.Constants;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.sd.DeliveryDetail;
import com.example.erp.entity.sd.Order;
import com.example.erp.common.Result;
import com.example.erp.entity.sd.OrderDetail;
@@ -163,4 +164,11 @@
        return Result.seccess(flowCardService.selectPrintSv(orderId,flowCard));
    }
    @ApiOperation("打印流程卡数据查询接口")
    @PostMapping("/getSelectPrinting")
    public Result getSelectPrinting( @RequestBody Map<String,Object> object){
        System.out.println(object);
        return Result.seccess(flowCardService.getSelectPrintingSv(object));
    }
}
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
@@ -69,4 +69,10 @@
    List<Map<String, String>> selectPrintFlowCardMp(Date selectTime1, Date selectTime2, String orderId, String project, FlowCard flowCard);
    List<Map<String, String>> selectPrintMp(String orderId, FlowCard flowCard);
    List<Map<String, String>> getPrimaryList(String processId, Integer technologyNumber);
    List<Map<String, Object>> getDetailList(String processId, Integer technologyNumber);
    List<Map<String, Object>> getProcessList(String processId, Integer technologyNumber);
}
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -14,6 +14,7 @@
import org.springframework.stereotype.Service;
import java.sql.Date;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -194,14 +195,14 @@
    }
    public Object selectPrintFlowCardSv(Date selectTime1, Date selectTime2, String orderId, String project, FlowCard flowCard) {
        if("null".equals(orderId)){
            orderId="";
        if ("null".equals(orderId)) {
            orderId = "";
        }
        if("null".equals(project)){
            project="";
        if ("null".equals(project)) {
            project = "";
        }
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.selectPrintFlowCardMp(selectTime1, selectTime2,orderId,project,flowCard));
        map.put("data", flowCardMapper.selectPrintFlowCardMp(selectTime1, selectTime2, orderId, project, flowCard));
        return map;
    }
@@ -210,4 +211,28 @@
        map.put("data", flowCardMapper.selectPrintMp(orderId, flowCard));
        return map;
    }
    public Map<String, Object> getSelectPrintingSv(Map<String, Object> object) {
        Map<String, Object> map = new HashMap<>();
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//最终结果
        List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class);
        if (!flowCardList.isEmpty()) {
            for (FlowCard flowCard : flowCardList) {
                Map<String, Object> itemmap = new HashMap<>();
                //流程卡表头表尾数据
                itemmap.put("detail", flowCardMapper.getPrimaryList(flowCard.getProcessId(), flowCard.getTechnologyNumber()));
                //流程卡明细数据
                List<Map<String, Object>> detailList = flowCardMapper.getDetailList(flowCard.getProcessId(), flowCard.getTechnologyNumber());
                //工艺流程
                List<Map<String, Object>> processList = flowCardMapper.getProcessList(flowCard.getProcessId(), flowCard.getTechnologyNumber());
                itemmap.put("detailList", detailList);
                itemmap.put("processList", processList);
                list.add(itemmap);
            }
        }
        map.put("data", list);
        return map;
    }
}
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -410,7 +410,8 @@
    </select>
    <select id="selectPrintMp">
        select fc.order_id,
        select fc.id,
               fc.order_id,
               fc.process_id,
               o.customer_name,
               o.project,
@@ -433,4 +434,55 @@
        order by fc.process_id, ogd.technology_number
    </select>
    <select id="getPrimaryList">
        select o.customer_name,
               o.project,
               ogd.process,
               od.edging_type,
               ogd.glass_child,
               od.product_name,
               o.processing_note,
               fc.process_id,
               SUM( od.quantity) as quantity,
               SUM(od.gross_area) as gross_area,
               #{technologyNumber} as technologyNumber
        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
                              fc.technology_number = ogd.technology_number
                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
                 left join sd.`order` as o on o.order_id = fc.order_id
        where fc.process_id = #{processId}
          and fc.technology_number = #{technologyNumber}
        group by fc.process_id, fc.technology_number
    </select>
    <select id="getDetailList">
        select fc.order_number,
               concat(ogd.child_width, "*", ogd.child_height) as child_width,
               od.quantity,
               ogd.total_area,
               od.perimeter,
               od.bend_radius,
               od.remarks
        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
                              fc.technology_number = ogd.technology_number
                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
        where fc.process_id = #{processId}
          and fc.technology_number = #{technologyNumber}
        group by fc.process_id, fc.order_number
        order by fc.order_number
        limit 10
    </select>
    <select id="getProcessList">
        select *
        from sd.order_process_detail
        where process_id = #{processId}
          and technology_number = #{technologyNumber}
        group by process
    </select>
</mapper>
north-glass-erp/target/classes/mapper/pp/FolwCard.xml
@@ -410,7 +410,8 @@
    </select>
    <select id="selectPrintMp">
        select fc.order_id,
        select fc.id,
               fc.order_id,
               fc.process_id,
               o.customer_name,
               o.project,
@@ -433,4 +434,55 @@
        order by fc.process_id, ogd.technology_number
    </select>
    <select id="getPrimaryList">
        select o.customer_name,
               o.project,
               ogd.process,
               od.edging_type,
               ogd.glass_child,
               od.product_name,
               o.processing_note,
               fc.process_id,
               SUM( od.quantity) as quantity,
               SUM(od.gross_area) as gross_area,
               #{technologyNumber} as technologyNumber
        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
                              fc.technology_number = ogd.technology_number
                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
                 left join sd.`order` as o on o.order_id = fc.order_id
        where fc.process_id = #{processId}
          and fc.technology_number = #{technologyNumber}
        group by fc.process_id, fc.technology_number
    </select>
    <select id="getDetailList">
        select fc.order_number,
               concat(ogd.child_width, "*", ogd.child_height) as child_width,
               od.quantity,
               ogd.total_area,
               od.perimeter,
               od.bend_radius,
               od.remarks
        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
                              fc.technology_number = ogd.technology_number
                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
        where fc.process_id = #{processId}
          and fc.technology_number = #{technologyNumber}
        group by fc.process_id, fc.order_number
        order by fc.order_number
        limit 10
    </select>
    <select id="getProcessList">
        select *
        from sd.order_process_detail
        where process_id = #{processId}
          and technology_number = #{technologyNumber}
        group by process
    </select>
</mapper>