于杰
94 分钟以前 69a25cd577d5639f2869bcf80f498b373e80137e
north-glass-erp/northglass-erp/src/components/sd/order/OrderDetail.vue
@@ -4,6 +4,9 @@
import {useI18n} from "vue-i18n"
import request from "@/utils/request"
import footSum from "@/hook/footSum";
import {addListener,destroyAreaBox} from "@/hook/mouseMoveHomePage";
import {copyTableCellValue, copyTableCellValueShow} from "@/hook/copyTableCellValue";
import {multiply,multiplyAuto,divideAuto} from '@/utils/decimal'
const { t } = useI18n()
const xGrid = ref()
const gridOptions = reactive({
@@ -17,9 +20,6 @@
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  virtualScroll: true, // 开启虚拟滚动功能
  id: 'OrderDetail',
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true,gt:13 },//开启虚拟滚动
  //scrollX:{ enabled: true,gt:15 },//开启虚拟滚动
@@ -33,12 +33,7 @@
  },
  mouseConfig:{selected: true},//鼠标选中
  keyboardConfig:{
    isArrow: true,
    isDel: true,
    isEnter: true,
    isTab: true,
    isEdit: true,
    isChecked: true
    isArrow: true
  },
  columns:[
@@ -51,6 +46,8 @@
    {field: 'width',width:120,  title: t('order.width') ,editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'height',width:140,  title: t('order.height'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'quantity',width:140,  title: t('order.quantity'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'deliveryNum',width:140,  title: t('delivery.deliveryQuantity'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'deliveryArea',width:140,  title: t('report.shippedArea'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'processingNote',width:200,  title: t('order.processingNote'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'price',width:140,  title: t('order.price'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'area',width:150,  title: t('order.trueArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
@@ -69,6 +66,9 @@
  ],
  toolbarConfig: {
    slots:{
      buttons: "title"
    },
    zoom: true,
    custom: true
  },
@@ -79,7 +79,7 @@
        if (columnIndex === 0) {
          return t('basicData.total')
        }
        const List = ["quantity",'grossArea','area','computeGrossArea','computeArea','perimeter']
        const List = ["quantity",'grossArea','area','computeGrossArea','computeArea','perimeter','deliveryNum','deliveryArea']
        if (List.includes(column.field)) {
          return footSum(data, column.field)
        }
@@ -90,11 +90,19 @@
})
let props = defineProps({
  orderId:null
  orderId:null,
  row: {}
})
const gridEvents = {
  cellDblclick ({row,column}) {
    copyTableCellValue(row,column)
  }
}
onMounted(async ()=>{
  await getColumns()
  await getDetail()
  addListener(xGrid.value,gridOptions)
})
watch(()=>props.orderId,(newValue)=>{
  getDetail()
@@ -121,6 +129,7 @@
const getDetail = async ()=> {
  await request.post(`/order/getOrderDetailById/${props.orderId}`).then(res=>{
    res.data.forEach(item => {
      item.deliveryArea = multiply(item.deliveryNum,item.computeArea)
      item.otherColumns = JSON.parse(item.otherColumns)
    })
    xGrid.value.reloadData(res.data)
@@ -128,7 +137,6 @@
}
const handleKeyDown = (evnt) =>{
  if(evnt.$event.keyCode === 38 ){
    let nextRowIndex = xGrid.value.getRowIndex(xGrid.value.getCurrentRecord()) - 1;
    if (nextRowIndex < xGrid.value.getTableData().fullData.length && nextRowIndex>=0) {
@@ -137,6 +145,7 @@
  }
  if(evnt.$event.keyCode === 40 ){
    let nextRowIndex = xGrid.value.getRowIndex(xGrid.value.getCurrentRecord()) + 1;
    if (nextRowIndex < xGrid.value.getTableData().fullData.length) {
      xGrid.value.setCurrentRow(xGrid.value.getTableData().fullData[nextRowIndex]);
@@ -145,7 +154,10 @@
  }
}
let showTitle = ref(false)
const changeZoom = ()=> {
  showTitle.value = !showTitle.value
}
</script>
@@ -157,7 +169,9 @@
        class="mytable-scrollbar"
        ref="xGrid"
        v-bind="gridOptions"
        @zoom="changeZoom"
        @keydown="handleKeyDown"
        v-on="gridEvents"
    >
      <template #num1_filter="{ column, $panel }">
        <div>
@@ -174,10 +188,27 @@
        <span>{{ row.shape==='1'?$t('order.universalShape'):row.shape==='2'?$t('order.alien'):null }}</span>
      </template>
      <template #title>
        <span style="font-weight: bold" v-show="showTitle">
          {{ row.orderId || '' }}
          {{ row.project?'--':'' }}
          {{row.project}}
          {{ row.batch?'--':'' }}
          {{row.batch}}
        </span>
      </template>
    </vxe-grid>
  </div>
</template>
<style scoped>
.vxe-grid {
  /* 禁用浏览器默认选中 */
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  transform: translateZ(0);
}
</style>