huang
2024-11-12 54c2f0fda44123782e5241ff7d1ad6e81c95f2b2
Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
1个文件已添加
10个文件已修改
474 ■■■■■ 已修改文件
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 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/TagStyleDesigner.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/ingredientStock/CreateOutBound.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | 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/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml 7 ●●●● 补丁 | 查看 | 原始文档 | 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(() => {
@@ -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/views/mm/ingredientStock/CreateOutBound.vue
@@ -103,25 +103,27 @@
//页面第一次加载
request.get(`/BasicWarehouse/BasicWarehouseTypes/`+t('ingredientsStock.materialOutboundType')).then((res) => {
const initOrder = async ()=> {
  await request.get(`/BasicWarehouse/BasicWarehouseTypes/` + t('ingredientsStock.materialOutboundType')).then((res) => {
  if(res.code==200){
    if (res.code == 200) {
    titleSelectJson.value=deepClone(res.data)
    const today = new Date
    today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000))
    titleUploadData.value.materialRequisitionDate = today.getFullYear() +
        '-' + ("0" + (today.getMonth() + 1)).slice(-2)
        + '-' + ("0" + today.getDate()).slice(-2)
    getWork()
  }else{
    ElMessage.warning(res.msg)
  }
})
      titleSelectJson.value = deepClone(res.data)
      console.log("a"+titleSelectJson.value)
      const today = new Date
      today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000))
      titleUploadData.value.materialRequisitionDate = today.getFullYear() +
          '-' + ("0" + (today.getMonth() + 1)).slice(-2)
          + '-' + ("0" + today.getDate()).slice(-2)
      getWork()
    } else {
      ElMessage.warning(res.msg)
    }
  })
}
//列查询
const getWork = () => {
  request.get(`/BasicWarehouse/BasicWarehouseType/`+t('ingredients.originalFilm')+'|'+t('ingredients.accessories')).then((res) => {
const getWork = async ()=> {
  await request.get(`/BasicWarehouse/BasicWarehouseType/`+t('ingredients.originalFilm')+'|'+t('ingredients.accessories')).then((res) => {
    if(res.code==200){
      gridOptions.columns=[]
      BasicData.value = res.data
@@ -149,7 +151,10 @@
const  number = ref();
onMounted(()=>{
onMounted(async()=>{
  await initOrder()
  //启用表格拖动选中
  addListener(xGrid.value,gridOptions,cellArea.value)
  //出库新增
@@ -163,7 +168,7 @@
      request.post("/materialInventory/getSelectMaterialInventory/1/100",filterData.value).then((res) => {
        if(res.code==200){
          console.log("b"+titleSelectJson.value)
          titleUploadData.value.warehouseManager=userStore.user.userName
          titleUploadData.value.outboundType = titleSelectJson.value.outboundType[0].operateTypeName
          materialStore.value=[]
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/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
@@ -327,6 +327,15 @@
                materialOutboundId = object.get("materialOutboundId").toString();
            }
            if(materialOutboundId!=null){
                List<MaterialOutboundDetail> materialOutboundDetailLists = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId);
                if (!materialOutboundDetailLists.isEmpty()) {
                    for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) {
                        //还原物料库存数
                        materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity());
                    }
                }
                materialInventoryMapper.deleteMaterialOutboundDetail(materialOutboundId);
                materialInventoryMapper.deleteMaterialOutbound(materialOutboundId);
                materialInventoryMapper.deleteMaterialLog(materialOutboundId);
@@ -363,6 +372,15 @@
                returningId = object.get("returningId").toString();
            }
            if(returningId!=null){
                List<ReturningWarehouseDetail> returningWarehouseDetailLists = materialInventoryMapper.getIsNotReturningWarehouseDetail(returningId);
                if (!returningWarehouseDetailLists.isEmpty()) {
                    for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailLists) {
                        //还原物料库存数
                        materialInventoryMapper.updateMaterialInventoryAvailableOut(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity());
                    }
                }
                materialInventoryMapper.deleteReturningWarehouseDetail(returningId);
                materialInventoryMapper.deleteReturningWarehouse(returningId);
                materialInventoryMapper.deleteMaterialLog(returningId);
north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
@@ -562,11 +562,23 @@
    </delete>
    <select id="getMaximum" >
        select count(*) from mm.material_outbound where  date(create_time)=CURDATE()
        select
            ifnull(SUBSTR(max(right(material_outbound_id,8)) from 7),0)
        from
            mm.material_outbound as a
        where
            date(a.create_time) = curdate()
    </select>
    <select id="getMaximums" >
        select count(*) from mm.returning_warehouse where  date(create_time)=CURDATE()
        select
            ifnull(SUBSTR(max(right(returning_id,8)) from 7),0)
        from
            mm.returning_warehouse as a
        where
            date(a.create_time) = curdate()
    </select>
    <select id="getMaterialOutboundCount" >
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/sd/DeliveryMapper.xml
@@ -42,7 +42,12 @@
    <select id="getmaximum" >
        select count(*) from sd.delivery where  date(create_time)=CURDATE()
        select
            ifnull(SUBSTR(max(right(delivery_id,8)) from 7),0)
        from
            sd.delivery as a
        where
            date(a.create_time) = curdate()
    </select>
    <select id="getmaximumMonth">