chenlu
2024-10-25 b573243ff526f948a499c8557b49ee97e94f035d
Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
1个文件已添加
18个文件已修改
363 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/en.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/ru.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/glassPrice/GlassPrice.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/glassPrice/GlassPriceList.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/glassPrice/GlassPriceSet.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/glassPrice/ProducePriceCompute.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/glassPrice/ProductList.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Glass.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Hollow.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Interlayer.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Process.vue 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/GlassPriceBasic.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/GlassPriceBasicService.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue
@@ -5,6 +5,8 @@
import companyInfo from "@/stores/sd/companyInfo"
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import {add,multiply,multiplyAuto,divideAuto} from '@/utils/decimal';
const company = companyInfo()
let produceList = ref([])
let otherMoney = []
@@ -39,7 +41,7 @@
      produceList.value.forEach(item => {
        sumMoney+=item.DeliveryDetail.money
      })
      console.log(otherMoney.value)
      otherMoney1=[]
      otherMoney=deepClone(res.data.otherMoney)
      for(let i=0;i<otherMoney.length;i++){
@@ -51,8 +53,9 @@
          else{
            for(let s=0;s<otherMoney1.length;s++){
              if(otherMoney[i].DeliveryDetailOtherMoney.alias===otherMoney1[s].DeliveryDetailOtherMoney.alias){
                otherMoney1[s].DeliveryDetailOtherMoney.count=otherMoney[i].DeliveryDetailOtherMoney.count+otherMoney1[s].DeliveryDetailOtherMoney.count
                otherMoney1[s].DeliveryDetailOtherMoney.monery =otherMoney[i].DeliveryDetailOtherMoney.monery+otherMoney1[s].DeliveryDetailOtherMoney.monery
                otherMoney1[s].DeliveryDetailOtherMoney.count=add(otherMoney[i].DeliveryDetailOtherMoney.count,otherMoney1[s].DeliveryDetailOtherMoney.count)
                otherMoney1[s].DeliveryDetailOtherMoney.monery =add(otherMoney[i].DeliveryDetailOtherMoney.monery,otherMoney1[s].DeliveryDetailOtherMoney.monery)
                break
              }
              if(s+1===otherMoney1.length){
@@ -220,7 +223,7 @@
                  <span style="width: 25%">{{item.DeliveryDetailOtherMoney.alias}}</span>&nbsp;
                  <span  style="width: 25%">{{item.DeliveryDetailOtherMoney.price}}</span>&nbsp;
                  <span  style="width: 25%">{{item.DeliveryDetailOtherMoney.count}}</span>&nbsp;
                  <span  style="width: 25%">{{parseFloat(item.DeliveryDetailOtherMoney.monery.toFixed(2))}}</span>
                  <span  style="width: 25%">{{parseFloat(item.DeliveryDetailOtherMoney.monery).toFixed(2)}}</span>
                </div>
                <div style="display: flex;font-size: 10px;text-align: center" v-if="delivery.freight>0">
                  <span style="width: 25%">运费</span>&nbsp;
north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue
@@ -5,6 +5,7 @@
import companyInfo from "@/stores/sd/companyInfo"
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import {add,multiply,multiplyAuto,divideAuto} from '@/utils/decimal';
const company = companyInfo()
let produceList = ref([])
let delivery = ref([])
@@ -53,8 +54,8 @@
          else{
            for(let s=0;s<otherMoney1.length;s++){
              if(otherMoney[i].DeliveryDetailOtherMoney.alias===otherMoney1[s].DeliveryDetailOtherMoney.alias){
                otherMoney1[s].DeliveryDetailOtherMoney.count=otherMoney[i].DeliveryDetailOtherMoney.count+otherMoney1[s].DeliveryDetailOtherMoney.count
                otherMoney1[s].DeliveryDetailOtherMoney.monery =otherMoney[i].DeliveryDetailOtherMoney.monery+otherMoney1[s].DeliveryDetailOtherMoney.monery
                otherMoney1[s].DeliveryDetailOtherMoney.count=add(otherMoney[i].DeliveryDetailOtherMoney.count,otherMoney1[s].DeliveryDetailOtherMoney.count)
                otherMoney1[s].DeliveryDetailOtherMoney.monery =add(otherMoney[i].DeliveryDetailOtherMoney.monery,otherMoney1[s].DeliveryDetailOtherMoney.monery)
                break
              }
              if(s+1===otherMoney1.length){
@@ -132,8 +133,8 @@
          else{
            for(let s=0;s<otherMoney1.length;s++){
              if(otherMoney[i].DeliveryDetailOtherMoney.alias===otherMoney1[s].DeliveryDetailOtherMoney.alias){
                otherMoney1[s].DeliveryDetailOtherMoney.count=otherMoney[i].DeliveryDetailOtherMoney.count+otherMoney1[s].DeliveryDetailOtherMoney.count
                otherMoney1[s].DeliveryDetailOtherMoney.monery =otherMoney[i].DeliveryDetailOtherMoney.monery+otherMoney1[s].DeliveryDetailOtherMoney.monery
                otherMoney1[s].DeliveryDetailOtherMoney.count=add(otherMoney[i].DeliveryDetailOtherMoney.count,otherMoney1[s].DeliveryDetailOtherMoney.count)
                otherMoney1[s].DeliveryDetailOtherMoney.monery =add(otherMoney[i].DeliveryDetailOtherMoney.monery,otherMoney1[s].DeliveryDetailOtherMoney.monery)
                break
              }
              if(s+1===otherMoney1.length){
@@ -262,7 +263,7 @@
            <span style="width: 25%">{{item.DeliveryDetailOtherMoney.alias}}</span>&nbsp;
            <span  style="width: 25%">{{item.DeliveryDetailOtherMoney.price}}</span>&nbsp;
            <span  style="width: 25%">{{item.DeliveryDetailOtherMoney.count}}</span>&nbsp;
            <span  style="width: 25%">{{parseFloat(item.DeliveryDetailOtherMoney.monery.toFixed(2))}}</span>
            <span  style="width: 25%">{{parseFloat(item.DeliveryDetailOtherMoney.monery).toFixed(2)}}</span>
          </div>
        </td>
        <td style="text-align: left;border:none;font-size: 15px;font-weight: bold;" colspan="5">大写金额:&nbsp;&nbsp;&nbsp;&nbsp;{{money}}</td>
north-glass-erp/northglass-erp/src/lang/en.js
@@ -1112,6 +1112,24 @@
        user :'User',
        role :'Role',
        userPassWord :'User Pass Word',
        glassPrice:'Glass Price'
    },
    glassPrice:{
        glassPriceComputed:'玻璃报价',
        priceSet:'价格设置',
        priceList:'价格列表',
        msg:{
            error1:'请选择全部参数',
            error2:'此膜系已经存在,请重新选择',
            success:'数据保存成功',
            addProduce:'请先添加产品'
        },
        glass:'玻璃',
        interlayer:'夹胶',
        hollow:'中空',
        craft:'工艺',
        addProduce:'选择产品',
        reorder:'转订单'
    }
north-glass-erp/northglass-erp/src/lang/ru.js
@@ -1112,7 +1112,24 @@
        user :'Список пользователей',
        role :'Права на роль',
        userPassWord :'Изменить пароль',
        glassPrice:'Цена стекла.'
    },
    glassPrice:{
        glassPriceComputed:'玻璃报价',
        priceSet:'价格设置',
        priceList:'价格列表',
        msg:{
            error1:'请选择全部参数',
            error2:'此膜系已经存在,请重新选择',
            success:'数据保存成功',
            addProduce:'请先添加产品'
        },
        glass:'玻璃',
        interlayer:'夹胶',
        hollow:'中空',
        craft:'工艺',
        addProduce:'选择产品',
        reorder:'转订单'
    }
}
north-glass-erp/northglass-erp/src/lang/zh.js
@@ -1112,6 +1112,25 @@
        user :'用户列表',
        role :'角色权限',
        userPassWord :'修改密码',
        glassPrice:'玻璃价格'
    },
    glassPrice:{
        glassPriceComputed:'玻璃报价',
        priceSet:'价格设置',
        priceList:'价格列表',
        msg:{
            error1:'请选择全部参数',
            error2:'此膜系已经存在,请重新选择',
            success:'数据保存成功',
            addProduce:'请先添加产品'
        },
        glass:'玻璃',
        interlayer:'夹胶',
        hollow:'中空',
        craft:'工艺',
        addProduce:'选择产品',
        reorder:'转订单'
    }
north-glass-erp/northglass-erp/src/views/sd/glassPrice/GlassPrice.vue
@@ -20,9 +20,9 @@
  <div id="main">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/glassPrice/producePriceCompute' }">{{'玻璃报价'}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/glassPrice/glassPriceSet' }">{{'价格设置'}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/glassPrice/glassPriceList' }">{{'价格列表'}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/glassPrice/producePriceCompute' }">{{$t('glassPrice.glassPriceComputed')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/glassPrice/glassPriceSet' }">{{$t('glassPrice.priceSet')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/glassPrice/glassPriceList' }">{{$t('glassPrice.priceList')}}</el-breadcrumb-item>
        <!--       <el-breadcrumb-item :to="{ path: '/main/product/test' }">测试</el-breadcrumb-item>-->
        <!--       <el-breadcrumb-item :to="{ path: '/main/product/testSort11' }">测试</el-breadcrumb-item>-->
        <el-breadcrumb-item v-show="false"  />
north-glass-erp/northglass-erp/src/views/sd/glassPrice/GlassPriceList.vue
@@ -54,10 +54,10 @@
  columns:[
    {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
    {field: 'type',  title: '类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'name',  title: '名称',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'price',  title: '价格' ,editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'createTime',  title: '创建时间',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
    {field: 'type',  title: t('product.msg.interlayerType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'name',  title: t('orderBasicData.name'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'price',  title: t('menu.glassPrice') ,editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'createTime',  title: t('basicData.creationTime'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
  ],
@@ -81,16 +81,27 @@
      ElMessageBox.prompt( '', {
        confirmButtonText: t('basicData.save'),
        cancelButtonText: t('basicData.cancelButtonText'),
        inputPattern:/^.{1,20}$/,
        inputErrorMessage: t('components.message')
        inputPattern:/^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/,
        inputErrorMessage: t('basicData.msg.range99999Dec2')
      }).then(({ value }) => {
        alert(value)
        const data = {
          id: row.id,
          price: value
        }
        request.post(`/glassPriceBasic/updateGlassPriceById`,data).then((res) => {
            if(res.code==='200' && res.data){
              ElMessage.success(t('basicData.msg.saveSuccess'))
              router.push({path:'/main/glassPrice/glassPriceList',query:{random:Math.random()}})
            }else{
              ElMessage.warning(t('basicData.msg.saveFail'))
            }
        })
      })
      break
    }
    case 'delete': {
      request.post(`/glassPriceBasic/deleteGlassPriceById/${row.id}`).then((res) => {
        if(res.code==200){
        if(res.code==='200' && res.data){
          ElMessage.success(t('searchOrder.msgDeleteSuccess'))
          router.push({path:'/main/glassPrice/glassPriceList',query:{random:Math.random()}})
        }else{
north-glass-erp/northglass-erp/src/views/sd/glassPrice/GlassPriceSet.vue
@@ -2,10 +2,13 @@
import glass from './pages/Glass.vue'
import Interlayer from './pages/Interlayer.vue'
import Hollow from './pages/Hollow.vue'
import Process from './pages/Process.vue'
import {onMounted, ref} from "vue";
import request from "@/utils/request";
import {ElMessage} from "element-plus";
import {useRouter,useRoute} from "vue-router"
import {useI18n} from "vue-i18n";
const { t } = useI18n()
let BasicData = ref({
  stuffColor:null,
  stuffCraft:null,
@@ -42,17 +45,17 @@
const getChild = (value) =>{
  for (let key in value) {
    if(!value[key]){
      ElMessage.warning("请选择全部参数")
      ElMessage.warning(t('glassPrice.msg.error1'))
      return
    }
  }
  request.post(`/glassPriceBasic/save`,value).then((res) => {
    if(res.code==='200' && res.data===true){
      ElMessage.success("数据保存成功")
      ElMessage.success(t('glassPrice.msg.success'))
      router.push({path:'/main/glassPrice/glassPriceList'})
    }else{
      ElMessage.warning("此膜系已经存在,请重新选择")
      ElMessage.warning(t('glassPrice.msg.error1'))
    }
  })
}
@@ -62,15 +65,18 @@
<template>
  <div id="main-div">
    <el-tabs v-model="tabsValue" type="border-card" style="width: 100%;height: 100%">
      <el-tab-pane :name="1" label="玻璃" >
      <el-tab-pane :name="1" :label="t('glassPrice.glass')" >
        <glass @getChild="getChild" v-if="tabsValue===1" :basicData="BasicData"/>
      </el-tab-pane>
      <el-tab-pane :name="2" label="夹胶">
      <el-tab-pane :name="2" :label="t('glassPrice.interlayer')">
        <interlayer @getChild="getChild" v-if="tabsValue===2" :basicData="BasicData"/>
      </el-tab-pane>
      <el-tab-pane :name="3" label="中空">
      <el-tab-pane :name="3" :label="t('glassPrice.hollow')">
        <hollow @getChild="getChild" v-if="tabsValue===3" :basicData="BasicData"/>
      </el-tab-pane>
      <el-tab-pane :name="4" :label="t('glassPrice.craft')">
        <process @getChild="getChild" v-if="tabsValue===4" :basicData="BasicData"/>
      </el-tab-pane>
    </el-tabs>
  </div>
</template>
north-glass-erp/northglass-erp/src/views/sd/glassPrice/ProducePriceCompute.vue
@@ -64,8 +64,8 @@
  toolbarConfig: {
    buttons: [
      {'code': 'addProducts', 'name': '选择产品',disabled: false},
      {'code': 'reorder', 'name': '转订单',status: 'primary',icon: 'vxe-icon-save',disabled: false},
      {'code': 'addProducts', 'name': t('glassPrice.addProduce'),disabled: false},
      {'code': 'reorder', 'name': t('glassPrice.reorder'),status: 'primary',icon: 'vxe-icon-save',disabled: false},
    ],
    zoom: true,
@@ -85,7 +85,7 @@
        }
        case 'reorder': {
          if($grid.getTableData().fullData.length === 0){
            ElMessage.warning("请先添加产品")
            ElMessage.warning(t('glassPrice.msg.addProduce'))
            return
          }
          router.push({
north-glass-erp/northglass-erp/src/views/sd/glassPrice/ProductList.vue
@@ -221,15 +221,15 @@
      quantity: ''
    },
    items: [
      { field: 'width', title: '宽:', itemRender: { name: 'VxeInput' } },
      { field: 'height', title: '高:', itemRender: { name: 'VxeInput' } },
      { field: 'quantity', title: '数量:', itemRender: { name: 'VxeInput' } },
      { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } },
      { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } },
      { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } },
      {
        itemRender: {
          name: 'VxeButtonGroup',
          options: [
            { type: 'submit', content: '确定', status: 'primary' },
            { type: 'reset', content: '重置' }
            { type: 'submit', content: t('craft.sure'), status: 'primary' },
            { type: 'reset', content: t('product.msg.reset') }
          ]
        }
      }
north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Glass.vue
@@ -51,15 +51,18 @@
  <el-row :gutter="8">
    <el-col :span="3">
    <el-input
        v-model.number="stuff.price"
    <el-input-number
        v-model="stuff.price"
        controls-position="right"
        :step="0.01"
        :max="99999.99"
        placeholder="元/m²"
        class="delInput"/>
    </el-col>
  </el-row>
  <el-row :gutter="8">
    <el-col :span="3">
      <el-button @click="save" type="primary" >保存</el-button>
      <el-button @click="save" type="primary" >{{$t('basicData.save')}}</el-button>
    </el-col>
  </el-row>
@@ -72,15 +75,8 @@
.el-row{
  margin-bottom: 5px;
}
.el-input{
.el-input-number{
  width: 182px;
}
/deep/.delInput input::-webkit-outer-spin-button,
/deep/.delInput input::-webkit-inner-spin-button {
  -webkit-appearance: none!important;
}
/deep/.delInput input[type="number"]{
  -moz-appearance: textfield;
}
north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Hollow.vue
@@ -67,7 +67,7 @@
        <el-option v-for="item in props.basicData.hollowType"
                   :key="item.id"
                   :label="item.basicName+'('+item.nickname+')'"
                   :value="item.nickname"
                   :value="'('+item.nickname+')'"
        />
      </el-select>
    </el-col>
@@ -75,14 +75,18 @@
  <el-row :gutter="8">
    <el-col :span="3">
      <el-input
          v-model.number="hollowBasic.price"
      <el-input-number
          v-model="hollowBasic.price"
          controls-position="right"
          :step="0.01"
          :max="99999.99"
          placeholder="元/m²"
          class="delInput"/>
    </el-col>
  </el-row>
  <el-row :gutter="8">
    <el-col :span="3">
      <el-button @click="save" type="primary" >保存</el-button>
      <el-button @click="save" type="primary" >{{$t('basicData.save')}}</el-button>
    </el-col>
  </el-row>
@@ -95,15 +99,8 @@
.el-row{
  margin-bottom: 5px;
}
.el-input{
.el-input-number{
  width: 182px;
}
/deep/.delInput input::-webkit-outer-spin-button,
/deep/.delInput input::-webkit-inner-spin-button {
  -webkit-appearance: none!important;
}
/deep/.delInput input[type="number"]{
  -moz-appearance: textfield;
}
north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Interlayer.vue
@@ -75,14 +75,18 @@
  <el-row :gutter="8">
    <el-col :span="3">
      <el-input
          v-model.number="interlayerBasic.price"
      <el-input-number
          v-model="interlayerBasic.price"
          controls-position="right"
          :step="0.01"
          :max="99999.99"
          placeholder="元/m²"
          class="delInput"/>
    </el-col>
  </el-row>
  <el-row :gutter="8">
    <el-col :span="3">
      <el-button @click="save" type="primary" >保存</el-button>
      <el-button @click="save" type="primary" >{{$t('basicData.save')}}</el-button>
    </el-col>
  </el-row>
@@ -95,15 +99,8 @@
.el-row{
  margin-bottom: 5px;
}
.el-input{
.el-input-number{
  width: 182px;
}
/deep/.delInput input::-webkit-outer-spin-button,
/deep/.delInput input::-webkit-inner-spin-button {
  -webkit-appearance: none!important;
}
/deep/.delInput input[type="number"]{
  -moz-appearance: textfield;
}
north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Process.vue
New file
@@ -0,0 +1,98 @@
<script setup>
import {ref} from "vue"
import {useI18n} from "vue-i18n"
const { t } = useI18n()
const props  = defineProps({
  basicData:{
    stuffColor:null,
    stuffThickness:null,
    process:[]
  }
})
console.log(props.basicData)
let stuff = ref({
  thickness:'',
  color:'',
  process:'',
  price:null,
  type:'process'
})
const emit = defineEmits(['getChild'])
const save = ()=>{
  emit('getChild',stuff.value)
}
</script>
<template>
  <el-row :gutter="8">
    <el-col :span="12">
      <el-select v-model.trim="stuff.thickness" size="small" clearable :placeholder="$t('product.msg.thickness')" >
        <el-option v-for="item in props.basicData.stuffThickness"
                   :key="item.id"
                   :label="item.basicName"
                   :value="item.basicName"
        />
      </el-select>
    </el-col>
  </el-row>
  <el-row :gutter="8">
    <el-col :span="12">
      <el-select v-model.trim="stuff.color" size="small" clearable :placeholder="$t('product.msg.color')"  filterable>
        <el-option v-for="item in props.basicData.stuffColor"
                   :key="item.id"
                   :label="item.basicName"
                   :value="item.basicName"
        />
      </el-select>
    </el-col>
  </el-row>
  <el-row :gutter="8">
    <el-col :span="12">
      <el-select v-model.trim="stuff.process" size="small" clearable :placeholder="$t('glassPrice.glass')+$t('glassPrice.craft')"  filterable>
        <el-option v-for="item in props.basicData.process"
                   :key="item.id"
                   :label="item.basicName"
                   :value="item.basicName"
        />
      </el-select>
    </el-col>
  </el-row>
  <el-row :gutter="8">
    <el-col :span="3">
      <el-input-number
          v-model="stuff.price"
          controls-position="right"
          :step="0.01"
          :max="99999.99"
          placeholder="元/m²"
          class="delInput"/>
    </el-col>
  </el-row>
  <el-row :gutter="8">
    <el-col :span="3">
      <el-button @click="save" type="primary" >{{$t('basicData.save')}}</el-button>
    </el-col>
  </el-row>
</template>
<style scoped>
.el-row{
  margin-bottom: 5px;
}
.el-input-number{
  width: 182px;
}
</style>
north-glass-erp/src/main/java/com/example/erp/entity/sd/GlassPriceBasic.java
@@ -14,6 +14,7 @@
    private String type;
    private Double thickness;
    private String name;
    private String process;
    private Double price;
    private String json;
    private LocalDateTime createTime;
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
@@ -33,9 +33,9 @@
                                                         @Param("productId") Integer productId,@Param("orderId") String orderId);
    Map<String, Object> getSelectotherMoney(@Param("orderId") String orderId,@Param("deliveryId") String deliveryId,
                                                   @Param("orderNumber") Integer orderNumber,@Param("key") String key,@Param("value") String value);
                                                   @Param("orderNumber") Integer orderNumber,@Param("key") String key,@Param("value") Double value);
    Map<String, Object> getSelectOrderotherMoney(@Param("orderId") String orderId,@Param("orderNumber") Integer orderNumber, @Param("key") String key,@Param("value") String value);
    Map<String, Object> getSelectOrderotherMoney(@Param("orderId") String orderId,@Param("orderNumber") Integer orderNumber, @Param("key") String key,@Param("value") Double value);
    List <Map<String, Object>> getSelectOrderDetailPrinting(@Param("productId") Integer productId,@Param("orderId") String orderId);
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -269,7 +269,8 @@
                                deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue();
                            }else if (calculateType==2){
                                if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())){
                                //判断实际单片面积跟结算单片面积是否相等 结算总面积跟实际总面积是否相等
                                if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())&&Objects.equals(orderDetail.getGrossArea(), orderDetail.getComputeGrossArea())){
                                    deliveryDetailMoney=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP)
                                            .multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue();
                                    deliveryDetailArea=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue();
@@ -309,7 +310,8 @@
                                    boolean isnull = key.contains("M");
                                    if(isnull) {
                                        Map<String, Object> moneryItemmap = new HashMap<>();
                                        Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoney(orderDetail.getOrderId(),orderDetail.getOrderNumber(), key, jsonObject.get(key).toString());
                                        Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoney(orderDetail.getOrderId(),orderDetail.getOrderNumber(),
                                                key, Double.valueOf(jsonObject.get(key).toString()));
                                        if(deliveryDetailOtherMoney.get("monery")!=null){
                                            otherMoneys=otherMoneys+Double.valueOf(deliveryDetailOtherMoney.get("monery").toString());
                                            deliveryDetailotherMoneys=Double.valueOf(deliveryDetailOtherMoney.get("monery").toString());
@@ -376,7 +378,7 @@
                int intMoney= (int) Math.round(money+freight+otherMoneys);
                //修改发货明细累加面积数量金额
                deliveryMapper.updatedelivery(Double.valueOf(String.format("%.2f", area)), quantity, Double.valueOf(intMoney), otherMoney.get(), oddNumber);
                deliveryMapper.updatedelivery(Double.valueOf(String.format("%.2f", area)), quantity, Double.valueOf(intMoney), otherMoneys, oddNumber);
                logService.saveLog(log);
            } else {
                return "false3";
@@ -488,8 +490,8 @@
                        if(isnull) {
                            Map<String, Object> moneryItemmap = new HashMap<>();
                            Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectotherMoney(detail.getOrderDetail().getOrderId(),
                                    detail.getDeliveryId(),Integer.parseInt(stringObjectMap.get("order_number").toString()), key, jsonObject.get(key).toString());
                                    detail.getDeliveryId(),Integer.parseInt(stringObjectMap.get("order_number").toString()), key,Double.valueOf(jsonObject.get(key).toString()));
                            Double sss= Double.valueOf(jsonObject.get(key).toString());
                            moneryItemmap.put("DeliveryDetailOtherMoney", deliveryDetailOtherMoney);
                            moneryList.add(moneryItemmap);
                        }
@@ -544,7 +546,8 @@
                            boolean isnull = key.contains("M");
                            if(isnull){
                                Map<String, Object> moneryItemmap = new HashMap<>();
                                Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoney(detail.getOrderId(),Integer.parseInt(stringObjectMap.get("order_number").toString()),key,jsonObject.get(key).toString());
                                Map<String, Object> deliveryDetailOtherMoney = deliveryDetailMapper.getSelectOrderotherMoney(detail.getOrderId(),Integer.parseInt(stringObjectMap.get("order_number").toString())
                                        ,key,Double.valueOf(jsonObject.get(key).toString()));
                                grossAmount=grossAmount.add(BigDecimal.valueOf(Double.parseDouble(deliveryDetailOtherMoney.get("monery").toString())));
                                moneryItemmap.put("DeliveryDetailOtherMoney", deliveryDetailOtherMoney);
                                moneryList.add(moneryItemmap);
north-glass-erp/src/main/java/com/example/erp/service/sd/GlassPriceBasicService.java
@@ -12,6 +12,7 @@
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -20,11 +21,11 @@
@DS("sd")
public class GlassPriceBasicService {
    private final GlassPriceBasicMapper glassPriceBasicMapper;
    @Autowired
    private ProductDetailMapper productDetailMapper;
    private final ProductDetailMapper productDetailMapper;
    public GlassPriceBasicService(GlassPriceBasicMapper glassPriceBasicMapper) {
    public GlassPriceBasicService(GlassPriceBasicMapper glassPriceBasicMapper, ProductDetailMapper productDetailMapper) {
        this.glassPriceBasicMapper = glassPriceBasicMapper;
        this.productDetailMapper = productDetailMapper;
    }
    //保存玻璃价格
@@ -50,8 +51,14 @@
                    prams.get("thickness").toString()
                            + prams.get("color").toString()
                            + prams.get("types").toString());
        } else if (Objects.equals(type, "process")) {
            glassPriceBasic.setName(prams.get("thickness").toString() + prams.get("color").toString()+prams.get("process").toString());
            glassPriceBasic.setProcess(prams.get("process").toString());
        }
        GlassPriceBasic glassPriceBasic1 = glassPriceBasicMapper.selectOne(new QueryWrapper<GlassPriceBasic>().eq("name", glassPriceBasic.getName()));
        GlassPriceBasic glassPriceBasic1 = glassPriceBasicMapper.selectOne(
                new QueryWrapper<GlassPriceBasic>()
                        .eq("name", glassPriceBasic.getName())
        );
        if(glassPriceBasic1 != null){
            return false;
        }
@@ -63,29 +70,42 @@
                .selectList(new QueryWrapper<ProductDetail>().eq("prod_id", productId));
        final Double[] money = {0.0};
        productDetails.forEach(productDetail -> {
        for (ProductDetail productDetail : productDetails){
            Map<String,String> separation =  JSON.parseObject(
                    productDetail.getSeparation(), new TypeReference<Map<String, String>>(){});
            String name = "";
            switch (productDetail.getDetailType()) {
                case "glass":
                    name = separation.get("thickness") + separation.get("color");
                    String[] process = productDetail.getProcess().split("->");
                    for (String s : process) {
                        GlassPriceBasic glassPriceBasic = glassPriceBasicMapper.selectOne(
                                new QueryWrapper<GlassPriceBasic>()
                                        .eq("name", name+s));
                        if(glassPriceBasic == null) {
                            return 0.0;
                        }else{
                            money[0] += glassPriceBasic.getPrice();
                        }
                    }
                    break;
                case "hollow":
                    name = separation.get("thickness") + separation.get("gasType") + separation.get("type");
                    name = separation.get("thickness") + separation.get("gasType") + separation.get("Type");
                    break;
                case "interlayer":
                    name = separation.get("thickness") + separation.get("color") + separation.get("type");
                    break;
            }
            GlassPriceBasic glassPriceBasic = glassPriceBasicMapper
                    .selectOne(new QueryWrapper<GlassPriceBasic>().eq("name", name));
            if(glassPriceBasic == null) {
                money[0]= 0.0;
                return;
                return money[0];
            }
            money[0] += glassPriceBasic.getPrice();
        });
        }
        return money[0];
    }
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -283,7 +283,9 @@
                orderOtherMoney.setId(null);
                orderOtherMoney.setOrderId(orderId);
                if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){
                    orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice()));
                    BigDecimal getQuantity= BigDecimal.valueOf(orderOtherMoney.getQuantity());
                    BigDecimal getPrice= BigDecimal.valueOf(orderOtherMoney.getPrice());
                    orderOtherMoney.setMoney(getQuantity.multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue());
                }else {
                    orderOtherMoney.setMoney(0.0);
                }