廖井涛
2024-04-09 8202686b06680db9b82d4a99a31dc7f9dca4ee86
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -8,8 +8,10 @@
import  useUserInfoStore from '@/stores/userInfo'
import SelectProduct from "@/views/sd/product/SelectProduct.vue"
import {changeFilterEvent,filterChanged} from "@/hook"
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
import {CaretBottom} from "@element-plus/icons-vue";
import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove"
import downLoadFile from "@/hook/downLoadFile"
import {useI18n} from "vue-i18n"
const { t } = useI18n()
let dialogTableVisible = ref(false)
let productVisible = ref(false)
@@ -18,6 +20,7 @@
const route = useRoute()
const xGrid = ref()
let cellArea = ref()
const shapeList = ref(['普形','异形'])
// 定义表头上传数据
const titleUploadData = ref({
@@ -31,7 +34,7 @@
  orderId:'',
  deliveryDate:'',
  batch:'',
  calculateType:'',
  calculateType:null,
  salesmanId:'',
  salesman:'',
  alType:'',
@@ -79,12 +82,12 @@
    body: {
      options: [
        [
          { code: 'addRow', name: '添加', prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: false },
          { code: 'deleteRow', name: '删除', prefixIcon: 'vxe-icon-delete', visible: true, disabled: true },
          { code: 'copyChecked', name: '选中相同', prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
          { code: 'copyAll', name: '之后相同', prefixIcon: 'vxe-icon-feedback', visible: true, disabled: false },
          { code: 'clearChecked', name: '清除选中', prefixIcon: 'vxe-icon-indicator', visible: true, disabled: false },
          { code: 'computedMoney', name: '计算金额', prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: true },
          { code: 'addRow', name: t('basicData.add'), prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: false },
          { code: 'deleteRow', name: t('basicData.delete'), prefixIcon: 'vxe-icon-delete', visible: true, disabled: true },
          { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
          { code: 'copyAll', name: t('basicData.sameAfterwards'), prefixIcon: 'vxe-icon-feedback', visible: true, disabled: false },
          { code: 'clearChecked', name: t('basicData.clearSelection'), prefixIcon: 'vxe-icon-indicator', visible: true, disabled: false },
          { code: 'computedMoney', name: t('basicData.calculateAmount'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: true },
        ]
      ]
    }
@@ -105,45 +108,48 @@
    showStatus: true
  },//表头参数
  columns:[
    {type: 'seq',fixed:"left", title: '自序', width: 80 },
    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
    // {field: 'buildingNumber',width:120,  title: '楼号',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'productId',width:100,  title: '产品ID',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'productName',width:120,  title: '产品',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'price',width:140,  title: '单价',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'quantity',width:120,  title: '数量',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'grossAmount',width:120,  title: '总金额',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'width',width:120,  title: '宽',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'height',width:120,  title: '高',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'area',width:150,  title: '实际单片面积',filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'grossArea',width:140,  title: '实际总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'computeArea',width:180,  title: '结算单片面积',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'computeGrossArea',width:140,  title: '结算总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'shape',width:120,  title: '形状',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'bendRadius',width:140,  title: '弯钢弧度',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'edgingType',width:140,  title: '磨边类型',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'processingNote',width:140,  title: '加工要求',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'remarks',width:120,  title: '备注',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
    {field: 'productId',width:140,  title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'productName',width:300,  title: t('order.product'),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: 'quantity',width:140,  title: t('order.quantity'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'grossAmount',width:160,  title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {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: 'area',width:150,  title: t('order.trueArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'grossArea',width:160,  title: t('order.trueGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'computeArea',width:180,  title: t('order.computeArea'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'computeGrossArea',width:200,  title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'shape',width:120,
      title: t('order.shape'),
      editRender: { name: 'input'},
      filters:[{ data: '' }],
      slots: { filter: 'num1_filter',edit:'shape_edit' }, sortable: true,filterMethod:filterChanged},
    {field: 'bendRadius',width:160,  title: t('order.bendRadius'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'edgingType',width:160,  title: t('order.edgingType'),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: 'remarks',width:140,  title: t('basicData.remarks'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
  ],
  //表单验证
  editRules: {
    buildingNumber: [
      { required: false},
      { min: 0, max: 255, message: '名称长度在 0 到 255 个字符' }
      { min: 0, max: 255, message: t('basicData.msg.max255') }
    ],
    productId: [
      { required: true, message: '请选择产品' }
      { required: true, message: t('order.msg.productCheck') }
    ],
    productName: [
      { required: true, message: '请选择产品' }
      { required: true, message: t('order.msg.productCheck') }
    ],
    price: [
      {
        validator ({ cellValue }) {
          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
          const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
          if ( !regex.test(cellValue) ) {
            return new Error('输入0.00~99999.99的数字')
            return new Error(t('basicData.msg.range99999Dec2') )
          }
        }
      }
@@ -151,9 +157,9 @@
    computeArea: [
      {
        validator ({ cellValue }) {
          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
          const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
          if (!regex.test(cellValue)) {
            return new Error('输入0.00~99999.99的数字')
            return new Error(t('basicData.msg.range99999Dec2'))
          }
        }
      }
@@ -164,16 +170,16 @@
        validator ({ cellValue }) {
          const regex = /^[1-9]\d*$/
          if (!regex.test(cellValue)) {
            return new Error('输入大于0的整数')
            return new Error(t('basicData.msg.greater0'))
          }
        }}
    ],
    width:[
      {
        validator ({ cellValue }) {
          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
          const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
          if (!regex.test(cellValue)) {
            return new Error('输入0.00~99999.99的数字')
            return new Error(t('basicData.msg.range99999Dec2'))
          }
        }
      }
@@ -183,7 +189,7 @@
        validator ({ cellValue }) {
          const regex = /^(0|[1-9][0-9]{0,4}([.][0-9]{1,2})?)$/
          if ( !regex.test(cellValue)) {
            return new Error('输入0.00~99999.99的数字')
            return new Error(t('basicData.msg.range99999Dec2'))
          }
        }
      }
@@ -191,10 +197,11 @@
  },
  toolbarConfig: {
    buttons: [
      {'code': 'remarks', 'name': '加工要求'},
      {'code': 'Craft', 'name': '工艺',status: 'primary',disabled: true},
      {'code': 'review', 'name': '审核',status: 'primary',disabled: true},
      {'code': 'saveOrder', 'name': '保存',status: 'primary',icon: 'vxe-icon-save',disabled: false}
      {'code': 'remarks', 'name': t('order.processingNote')},
      {'code': 'Craft', 'name': t('order.technology'),status: 'primary',disabled: true},
      {'code': 'review', 'name': t('basicData.review'),status: 'primary',disabled: true},
      {'code': 'updateMoney', 'name': t('order.amountReset'),status: 'primary',disabled: true},
      {'code': 'saveOrder', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save',disabled: false}
    ],
    slots: {
      tools: 'toolbar_buttons'
@@ -211,7 +218,7 @@
    return[
      columns.map((column, columnIndex) => {
        if (columnIndex === 0) {
          return '合计:'
          return t('basicData.total')+':'
        }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
@@ -231,6 +238,10 @@
          dialogTableVisible.value=true
          break
        }
        case 'updateMoney': {
          updateMoney()
          break
        }
        case 'Craft': {
          await router.push({path: '/main/order/updateOrderCraft', query: {orderId: titleUploadData.value.orderId }})
          break
@@ -243,41 +254,45 @@
          reviewOrder(0)
          break
        }
        case 'cancelOrder':{
          cancelOrder()
          break
        }
        case 'saveOrder': {
          if ($grid.getTableData().tableData.length === 0){
            ElMessage.error('没有表格数据!')
            ElMessage.error( t('order.msg.tableLengthNot'))
            return
          }
          if(!gridOptions.menuConfig.body.options[0][5].disabled){
            ElMessage.error('请先打开右击菜单重新计算金额后,再保存!')
            ElMessage.error(t('order.msg.amountReset'))
            return
          }
          const project = titleUploadData.value.project
          if(project === null || project === undefined || project === ''){
            ElMessage.error('输入项目名称!')
            ElMessage.error(t('order.msg.projectCheck'))
            return
          }
          const customer = titleUploadData.value.customerId
          if(customer === null || customer === undefined || customer === ''){
            ElMessage.error('请选择客户!')
            ElMessage.error(t('order.msg.customerCheck'))
            return
          }
          const salasMan = titleUploadData.value.salesman
          if(salasMan === null || salasMan === undefined || salasMan === ''){
            ElMessage.error('请选择业务员!')
            ElMessage.error(t('order.msg.salasManCheck'))
            return
          }
          const calculateType = titleUploadData.value.calculateType
          if(calculateType === null || calculateType === undefined || calculateType === ''){
            ElMessage.error('请选择计算方式!')
            ElMessage.error(t('order.msg.calculateTypeCheck'))
            return
          }
          if ($grid) {
            const errMap = await $grid.validate(true)
            if (errMap) {
              ElMessage.error(`校验不通过!`)
              ElMessage.error(t('basicData.msg.checkoutLose'))
              return
            }
            let order ={
@@ -290,7 +305,7 @@
        }
      }
    }
  },//头部按钮事件
  },//右键按钮事件
  menuClick ({ menu, row, column }) {
    const $grid = xGrid.value
    if ($grid) {
@@ -301,7 +316,7 @@
        }
        case 'addRow': {
          if ($grid.getTableData().tableData.length >=240){
            ElMessage.error('表格数据已达到最大值!')
            ElMessage.error(t('order.msg.tableLengthMax'))
            return
          }
          $grid.insert({})
@@ -386,27 +401,51 @@
}
//获取子页面产品方法
const getProductRow = (row) => {
  if(row.state!=1){
    ElMessage.warning(t('order.msg.productStateCheck'))
    return
  }
  rowIndex.productName = row.productName
  rowIndex.productId = row.id
  productVisible.value = false
}
//初始化判断是否有id传入
onMounted(()=>{
  //启用表格拖动选中
  addListener(xGrid.value,gridOptions)
  const str = route.query.orderId
  const str = route.query.orderId || history.state.orderId
  if (typeof str === 'undefined' || str === null || str === '' || str === '\n' || str === '\r'){
    return
  }
  request.post(`/order/getOrderById/${str}`).then((res) => {
    if(res.code==200){
      titleUploadData.value = res.data.order
      if(history.state.orderId!=null){
        titleUploadData.value.orderId=''
        titleUploadData.value.id=null
        titleUploadData.value.processReview=null
        titleUploadData.value.orderReview=null
        titleUploadData.value.productionOrder=null
        titleUploadData.value.processingCard=null
        titleUploadData.value.warehousing=null
        titleUploadData.value.delivery=null
        titleUploadData.value.createTime=null
        if(history.state.type=='copy'){
          xGrid.value.reloadData(res.data.orderDetails)
        }
        return
      }
      //取消工艺按钮禁用
      gridOptions.toolbarConfig.buttons[1].disabled = false
      //工艺审核后保存按钮禁用
      if(res.data.order.processReview === 2){
        gridOptions.toolbarConfig.buttons[3].disabled = true
        gridOptions.toolbarConfig.buttons[4].disabled = true
      }
      //取消审核按钮禁用
      if(res.data.order.processReview === 2 && res.data.order.orderReview === 0){
@@ -414,13 +453,24 @@
      }
      //按钮审核过后变为反审
      if(res.data.order.orderReview === 2){
      if(Math.abs(res.data.order.orderReview) === 2){
        gridOptions.toolbarConfig.buttons[2].disabled = false
        gridOptions.toolbarConfig.buttons[2].code='reviews'
        gridOptions.toolbarConfig.buttons[2].name='反审'
        gridOptions.toolbarConfig.buttons[2].name=t('basicData.cancelReview')
        gridOptions.toolbarConfig.buttons[3].disabled = false
        const button = {'code': 'cancelOrder',
          status: 'primary',
          'name': (res.data.order.orderReview>0?t('basicData.cancel'):t('basicData.restore'))}
        gridOptions.toolbarConfig.buttons.push(button)
        if(res.data.order.orderReview===-2){
          gridOptions.toolbarConfig.buttons[2].disabled = true
          gridOptions.toolbarConfig.buttons[3].disabled = true
          gridOptions.toolbarConfig.buttons[4].disabled = true
        }
      }
      if(res.data.order.productionOrder !==0 ){
        gridOptions.toolbarConfig.buttons[2].disabled = true
      }
      //加载副表数据
@@ -431,16 +481,30 @@
  })
})
const cancelOrder = () => {
  request.post(`/order/cancelOrder/${titleUploadData.value.orderId}`).then((res) =>{
    if (res.code== 200){
      ElMessage.success(t('order.msg.updateOrderState'))
      router.push({path:'/main/order/createOrder',query:{orderId:titleUploadData.value.orderId,random:Math.random()}})
    }else{
      ElMessage.error(res.msg)
    }
  })
}
//页面第一次加载执行
request.get(`/basicData/orderBasicData`).then((res) => {
  if(res.code==200){
    titleSelectJson.value=deepClone(res.data)
    //进入页面下拉框设置默认值
    titleUploadData.value.orderType = titleSelectJson.value.orderType[0].basicName
    titleUploadData.value.orderClassify = titleSelectJson.value.orderClassify[0].basicName
    titleUploadData.value.icon = titleSelectJson.value.icon[0].basicName
    titleUploadData.value.packType = titleSelectJson.value.packType[0].basicName
    titleUploadData.value.alType = titleSelectJson.value.alType[0].basicName
    titleUploadData.value.calculateType=1
    const today = new Date
    today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000))
    titleUploadData.value.deliveryDate = today.getFullYear() +
@@ -455,26 +519,49 @@
const saveOrder = (order) => {
  request.post(`/order/saveOrder`,order).then((res) => {
    if(res.code==200){
      ElMessage.success('保存成功')
      ElMessage.success(t('basicData.msg.saveSuccess'))
      router.push({path:'/main/order/selectOrder'})
    }else {
      ElMessage.error(res.msg)
    }
  })
}
//更新金额
const updateMoney = () => {
  const updateData = {
    order: titleUploadData.value,
    detail: xGrid.value.getTableData().fullData
  }
  request.post(`/order/updateOrderMoney`,updateData).then(res => {
    if (res.code == 200){
      ElMessage.success( t('order.msg.updateAmountSuccessfully') )
      router.push({path:'/main/order/createOrder',
        query:{
          orderId:titleUploadData.value.orderId,
          random:Math.random()
        }
      })
    }
  })
}
// 审核订单
const reviewOrder = (state) => {
  request.post(`/order/reviewOrderById/${titleUploadData.value.orderId}/${state}`).then(res =>{
    if(res.code==200){
      gridOptions.toolbarConfig.buttons[2].disabled = true
      if(state==2){
        ElMessage.success('审核成功!')
        ElMessage.success(t('basicData.msg.ReviewSuccess') )
      }else if (state==0){
        ElMessage.success('反审成功!')
        ElMessage.success(t('basicData.msg.cancelReviewSuccess'))
      }
      setTimeout(() =>{
        location.reload()
      },1500)
      router.push({path:'/main/order/createOrder',query:{
        orderId:titleUploadData.value.orderId,
        random:Math.random()}})
    }else{
      ElMessage.error(res.msg)
@@ -508,7 +595,7 @@
  list.forEach((item)=>{
    countMoney += parseFloat(item.grossAmount)
  })
  return countMoney
  return parseFloat((countMoney).toFixed(2))
}
//导入功能
const importEvent = async () => {
@@ -522,7 +609,10 @@
    const workbook = XLXS.read(data, { type: 'binary' })
    let jsonData = XLXS.utils.sheet_to_json(workbook.Sheets.Sheet1).slice(1)
    if(jsonData.length>240){
      ElMessage.error(`导入${jsonData.length}条,数据不能超过240条,请分订单导入`)
      ElMessage.error(`${t('order.msg.importMaxCheckFailFirst')}
                          ${jsonData.length}
                          ${t('order.msg.importMaxCheckFailMid')}
                          ${t('order.msg.importMaxCheckFailLast')}`)
      return
    }
    jsonData.forEach((item,index) => {
@@ -539,6 +629,11 @@
    xGrid.value.loadData(jsonData)
  }
  fileReader.readAsBinaryString(files[0])
}
//模板下载
const importTemplate = () => {
  downLoadFile('/importTemplate.xlsx','importTemplate.xlsx')
}
//行单元格修改修改触发此事件
@@ -566,15 +661,15 @@
  <div class="main-div">
    <div class="order-primary" style="background-color: white">
      <el-row>
        <el-col  :span="2"><el-text>*项目名称:</el-text></el-col>
        <el-col  :span="2"><el-text>*{{$t('order.project')}}:</el-text></el-col>
        <el-col  :span="2"><el-input v-model="titleUploadData.project"/></el-col>
        <el-col  :span="2"><el-text>*客户选择:</el-text></el-col>
        <el-col  :span="2"><el-text>*{{$t('order.customers')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select  v-model="titleUploadData.customerId"
                      @change="changeCustomer"
                      filterable
                      clearable
                      placeholder="" >
                      placeholder=" " >
            <el-option v-for="item in titleSelectJson['customer']"
                       :key="item.id"
                       :label="item.id+' '+item.customerName"
@@ -582,7 +677,7 @@
                       />
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>*订单类型:</el-text></el-col>
        <el-col  :span="2"><el-text>*{{$t('order.orderType')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.orderType"  clearable placeholder=""  >
            <el-option
@@ -593,7 +688,7 @@
            />
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>订单分类:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.orderClassify')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.orderClassify"  clearable placeholder=" " >
            <el-option
@@ -604,7 +699,7 @@
            />
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>商标选项:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.icon')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.icon"  clearable placeholder=" " >
            <el-option  v-for="item in titleSelectJson['icon']"
@@ -613,7 +708,7 @@
                       :value="item.basicName"/>
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>包装方式:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.packType')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.packType"  clearable placeholder=" " >
            <el-option v-for="item in titleSelectJson['packType']"
@@ -625,9 +720,9 @@
        <!--      <el-col :span="2"><el-text  /></el-col>-->
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>销售单号:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.orderId')}}:</el-text></el-col>
        <el-col  :span="2"><el-text  >{{titleUploadData.orderId}}</el-text></el-col>
        <el-col  :span="2"><el-text>交货日期:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.deliveryDate')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-date-picker
              v-model="titleUploadData.deliveryDate"
@@ -635,15 +730,15 @@
              placeholder=""
              />
        </el-col>
        <el-col  :span="2"><el-text>批次:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.batch')}}:</el-text></el-col>
        <el-col  :span="2"><el-input  v-model="titleUploadData.batch"/></el-col>
        <el-col  :span="2"><el-text>计算方式:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.calculateType')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.calculateType"  clearable placeholder=" " >
            <el-option value="1" label="面积金额(单片)"/>
            <el-option :value="1" label="面积金额(单片)"/>
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>*业务员:</el-text></el-col>
        <el-col  :span="2"><el-text>*{{$t('order.salesman')}}:</el-text></el-col>
        <el-col  :span="2">
          <el-select
              v-model="titleUploadData.salesmanId"
@@ -657,7 +752,7 @@
                       :value="item.id"/>
          </el-select>
        </el-col>
        <el-col  :span="2"><el-text>铝条方式:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.alType')}}</el-text></el-col>
        <el-col  :span="2">
          <el-select v-model="titleUploadData.alType" clearable placeholder=" " >
            <el-option v-for="item in titleSelectJson['alType']"
@@ -668,17 +763,17 @@
        </el-col>
      </el-row>
      <el-row>
        <el-col  :span="2"><el-text>总金额:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.money')}}:</el-text></el-col>
        <el-col  :span="2"><el-text >{{titleUploadData.money}}</el-text></el-col>
        <el-col  :span="2"><el-text>合同编号:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.customers')}}:</el-text></el-col>
        <el-col  :span="2"><el-input v-model="titleUploadData.contractId"/></el-col>
        <el-col  :span="2"><el-text>客户批次:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.customerBatch')}}:</el-text></el-col>
        <el-col  :span="2"><el-input v-model="titleUploadData.customerBatch"/></el-col>
        <el-col  :span="2"><el-text>联系人:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.contacts')}}:</el-text></el-col>
        <el-col  :span="2"><el-input v-model="titleUploadData.contacts" /></el-col>
        <el-col  :span="2"><el-text>联系电话:</el-text></el-col>
        <el-col  :span="2"><el-text>{{$t('order.contactNumber')}}:</el-text></el-col>
        <el-col  :span="2"><el-input v-model="titleUploadData.contactNumber"/></el-col>
        <el-col  :span="2"><el-text >送货地址:</el-text></el-col>
        <el-col  :span="2"><el-text >{{$t('order.deliveryAddress')}}:</el-text></el-col>
        <el-col  :span="2"><el-input v-model="titleUploadData.deliveryAddress"/></el-col>
      </el-row>
<!--      <el-row>-->
@@ -708,13 +803,19 @@
          </div>
        </template>
        <template #toolbar_buttons>
          <vxe-button  @click="importEvent">导入</vxe-button>
          <vxe-button  @click="importTemplate">{{$t('order.template')}}</vxe-button>
          <vxe-button  @click="importEvent">{{$t('order.import')}}</vxe-button>
        </template>
        <template #shape_edit="{ row }">
          <vxe-select v-model="row.shape" transfer>
            <vxe-option v-for="item in shapeList" :key="item" :value="item" :label="item" />
          </vxe-select>
        </template>
      </vxe-grid>
    </div>
    <el-dialog v-model="dialogTableVisible" title="加工要求" style="width: 60%;height:75% ">
    <el-dialog v-model="dialogTableVisible" :title="$t('order.processingNote')" style="width: 60%;height:75% ">
      <el-input
          v-model="titleUploadData.processingNote"
          type="textarea"
@@ -724,12 +825,7 @@
    <el-dialog v-model="productVisible"  style="width: 80%;height:75% ">
      <select-product :rowIndex="rowIndex" @getProductRow="getProductRow" style="width: 100%;height: 100%" />
    </el-dialog>
<!--选中表格 -->
<!--    <div class="vxe-table&#45;&#45;cell-area" ref="cellArea" >-->
<!--      <span  class="vxe-table&#45;&#45;cell-main-area"  ></span>-->
<!--      <span class="vxe-table&#45;&#45;cell-active-area"  ></span>-->
<!--    </div>-->
  </div>
</template>