廖井涛
2024-03-13 5ca512048bcb9fa1e29fa924a468ba1302c6c243
Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
8个文件已修改
369 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/lang/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/LoginView.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 168 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/Order.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/index.js
@@ -9,7 +9,7 @@
}
const i18n = createI18n({
    locale: localStorage.getItem('lang') || 'en', // 设置当前语言类型
    locale: localStorage.getItem('lang') || 'zh', // 设置当前语言类型
    legacy: false, // 如果要支持compositionAPI,此项必须设置为false;
    globalInjection: true, // 全局注册$t方法
    messages
north-glass-erp/northglass-erp/src/views/LoginView.vue
@@ -35,7 +35,7 @@
const validatePass = (rule: any, value: any, callback: any) => {
  if (value === '') {
    callback(new Error(t('login.psErr')))
    callback(new Error(  t('login.psErr')  ))
  } else {
    callback()
  }
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -9,7 +9,8 @@
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 {useI18n} from "vue-i18n"
const { t } = useI18n()
let dialogTableVisible = ref(false)
let productVisible = ref(false)
@@ -31,7 +32,7 @@
  orderId:'',
  deliveryDate:'',
  batch:'',
  calculateType:'',
  calculateType:null,
  salesmanId:'',
  salesman:'',
  alType:'',
@@ -79,12 +80,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 +106,44 @@
    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' }, 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(\.\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') )
          }
        }
      }
@@ -153,7 +153,7 @@
        validator ({ cellValue }) {
          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,7 +164,7 @@
        validator ({ cellValue }) {
          const regex = /^[1-9]\d*$/
          if (!regex.test(cellValue)) {
            return new Error('输入大于0的整数')
            return new Error(t('basicData.msg.greater0'))
          }
        }}
    ],
@@ -173,7 +173,7 @@
        validator ({ cellValue }) {
          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 +183,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,11 +191,11 @@
  },
  toolbarConfig: {
    buttons: [
      {'code': 'remarks', 'name': '加工要求'},
      {'code': 'Craft', 'name': '工艺',status: 'primary',disabled: true},
      {'code': 'review', 'name': '审核',status: 'primary',disabled: true},
      {'code': 'updateMoney', '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'
@@ -212,7 +212,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)
@@ -250,39 +250,39 @@
        }
        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 ={
@@ -306,7 +306,7 @@
        }
        case 'addRow': {
          if ($grid.getTableData().tableData.length >=240){
            ElMessage.error('表格数据已达到最大值!')
            ElMessage.error(t('order.msg.tableLengthMax'))
            return
          }
          $grid.insert({})
@@ -392,7 +392,7 @@
//获取子页面产品方法
const getProductRow = (row) => {
  if(row.state!=1){
    ElMessage.warning('该产品还未审核')
    ElMessage.warning(t('order.msg.productStateCheck'))
    return
  }
@@ -413,7 +413,6 @@
  }
  request.post(`/order/getOrderById/${str}`).then((res) => {
    if(res.code==200){
      console.log(res.data.order)
      titleUploadData.value = res.data.order
      //取消工艺按钮禁用
      gridOptions.toolbarConfig.buttons[1].disabled = false
@@ -430,7 +429,7 @@
      if(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
      }
      if(res.data.order.productionOrder !==0 ){
@@ -455,6 +454,7 @@
    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() +
@@ -469,7 +469,7 @@
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)
@@ -485,7 +485,7 @@
  }
  request.post(`/order/updateOrderMoney`,updateData).then(res => {
    if (res.code == 200){
      ElMessage.success('更新金额成功')
      ElMessage.success( t('order.msg.updateAmountSuccessfully') )
      router.push({path:'/main/order/createOrder',query:{orderId:titleUploadData.value.orderId,random:Math.random()}})
    }
@@ -500,13 +500,13 @@
    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)
@@ -554,7 +554,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) => {
@@ -598,15 +601,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"
@@ -614,7 +617,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
@@ -625,7 +628,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
@@ -636,7 +639,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']"
@@ -645,7 +648,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']"
@@ -657,9 +660,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"
@@ -667,15 +670,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-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"
@@ -689,7 +692,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']"
@@ -700,17 +703,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>-->
@@ -740,13 +743,13 @@
          </div>
        </template>
        <template #toolbar_buttons>
          <vxe-button  @click="importEvent">导入</vxe-button>
          <vxe-button  @click="importEvent">{{$t('order.import')}}</vxe-button>
        </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"
@@ -756,12 +759,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>
north-glass-erp/northglass-erp/src/views/sd/order/Order.vue
@@ -1,6 +1,8 @@
<script setup>
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router";
import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router"
import {useI18n} from "vue-i18n"
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
let indexFlag=$ref(1)
@@ -18,9 +20,9 @@
  <div id="main-div">
    <div id="div-title">
      <el-breadcrumb :separator-icon="ArrowRight">
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/order/selectOrder' }">订单首页</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">创建</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/order/selectOrder' }">{{$t('order.orderHomePage')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">{{$t('basicData.create')}}</el-breadcrumb-item>
        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/order/orderReport' }">{{$t('order.orderReport')}}</el-breadcrumb-item>
        <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -1,13 +1,15 @@
<script setup>
  import {Search} from "@element-plus/icons-vue"
  import {useRouter} from "vue-router"
  import {reactive, ref} from "vue";
  const router = useRouter()
  import {reactive, ref} from "vue"
  import ProcessCardProgress from '@/views/pp/report/ProcessCardProgress.vue'
  import request from "@/utils/request";
  import deepClone from "@/utils/deepClone";
  import {ElMessage} from "element-plus";
  import {VXETable} from "vxe-table";
  import deepClone from "@/utils/deepClone"
  import {ElMessage} from "element-plus"
  import {VXETable} from "vxe-table"
  import {useI18n} from "vue-i18n"
  const { t } = useI18n()
  const router = useRouter()
  const xGrid = ref()
@@ -41,35 +43,35 @@
    },//表头参数
    columns:[
      {type:'expand',slots: { content:'content' },width: 50,fixed:"left",},
      {title: '操作', width: 110, slots: { default: 'button_slot' },fixed:"left",},
      {type: 'seq', title: '自序', width: 80 ,fixed:"left",},
      {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
      {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left",},
      {field:'createOrder',title: '下单', width: 40, slots: { default: 'state' }},
      {field:'processReview',title: '工艺', width: 40, slots: { default: 'state' }},
      {field:'orderReview',title: '审核', width: 40, slots: { default: 'state' }},
      {field:'productionOrder',title: '工单', width: 40, slots: { default: 'state' }},
      {field:'processingCard',title: '流程', width: 40, slots: { default: 'state' }},
      {field:'warehousing',title: '入库', width: 40, slots: { default: 'state' }},
      {field:'delivery',title: '发货', width: 40, slots: { default: 'state' }},
      {field:'createOrder',title: t('searchOrder.createOrder'), width: 40, slots: { default: 'state' }},
      {field:'processReview',title: t('order.technology'), width: 40, slots: { default: 'state' }},
      {field:'orderReview',title: t('basicData.review'), width: 40, slots: { default: 'state' }},
      {field:'productionOrder',title: t('searchOrder.production'), width: 40, slots: { default: 'state' }},
      {field:'processingCard',title: t('searchOrder.process'), width: 40, slots: { default: 'state' }},
      {field:'warehousing',title: t('searchOrder.storage'), width: 40, slots: { default: 'state' }},
      {field:'delivery',title: t('searchOrder.delivery'), width: 40, slots: { default: 'state' }},
      {field: 'orderId',width:120,  title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'customerId',width:120,  title: '客户编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'customerName',width:120,  title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'project',width:120,  title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'batch',width:120,  title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'quantity',width:120,  title: '数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: '14',width:120,  title: '库存数', sortable: true},
      {field: 'area',width:120,  title: '总结算面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'createTime',width:120,   title: '报表日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'packType',width:120,  title: '包装方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'orderType',width:120,  title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'salesman',width:120,  title: '业务员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'perimeter',width:120,  title: '周长',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'deliveryDate',width:120,  title: '交货日期',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'customerBatch',width:120,  title: '客户批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'orderId',width:120,  title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'customerId',width:120,  title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'customerName',width:120,  title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'project',width:120,  title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'batch',width:120,  title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'quantity',width:120,  title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: '14',width:120,  title: t('searchOrder.inventoryNum'), sortable: true},
      {field: 'area',width:120,  title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'createTime',width:120,   title: t('basicData.reportData'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'packType',width:120,  title: t('order.packType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'orderType',width:120,  title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'salesman',width:120,  title: t('order.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'perimeter',width:120,  title: t('searchOrder.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'deliveryDate',width:120,  title: t('order.deliveryDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'customerBatch',width:120,  title: t('order.customerBatch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      //{field: '14',width:120,  title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
      {field: 'deliveryAddress',width:120,  title: '地址',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
      {field: 'deliveryAddress',width:120,  title: t('order.deliveryAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
    ],//表头按钮
    toolbarConfig: {
@@ -91,7 +93,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)
@@ -109,7 +111,7 @@
        switch (code) {
          case 'checkList': {
            if($grid.getCheckboxRecords().length==0){
              VXETable.modal.message( '请选择一条数据!')
              VXETable.modal.message( t('searchOrder.msg'))
              return
            }
            break
@@ -219,15 +221,15 @@
      }
      case 'delete': {
        if (row.processReview === 2) {
          ElMessage.warning('已审核的订单不能删除')
          ElMessage.warning(t('searchOrder.msgDelete'))
          return
        }
        request.post(`/order/deleteOrder/${row.orderId}`).then((res) => {
          if(res.code==200){
            ElMessage.success('删除成功')
            location.reload()
            ElMessage.success(t('searchOrder.msgDeleteSuccess'))
            router.push({path:'/main/order/selectOrder',query:{random:Math.random()}})
          }else{
            ElMessage.warning('删除失败')
            ElMessage.warning(t('searchOrder.msgDeleteFail'))
          }
        })
        break
@@ -244,13 +246,13 @@
    <el-date-picker
        v-model="selectDate"
        type="daterange"
        start-placeholder="开始时间"
        end-placeholder="结束时间"
        :start-placeholder="$t('basicData.startDate')"
        :end-placeholder="$t('basicData.startDate')"
        format="YYYY-MM-DD"
        value-format="YYYY-MM-DD"
    />
    <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">查询</el-button>
    <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">{{ $t('basicData.search') }}</el-button>
    <vxe-grid
        @filter-change="filterChanged"
        @cell-dblclick="cellClickEvent"
@@ -276,10 +278,10 @@
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">编辑</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')" title="确认删除订单?">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('basicData.deleteConfirm')">
          <template #reference>
            <el-button  link type="primary" size="small">删除</el-button>
            <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
          </template>
        </el-popconfirm>
      </template>
@@ -293,10 +295,10 @@
      </template>
      <template #toolbar_buttons>
        <vxe-select @change="changeOrderType" v-model="orderType" placeholder="订单类型">
          <vxe-option value="2" label="正常订单"></vxe-option>
          <vxe-option value="-2" label="作废订单"></vxe-option>
          <vxe-option value="0" label="全部订单"></vxe-option>
        <vxe-select @change="changeOrderType" v-model="orderType" :placeholder="$t('searchOrder.orderType')">
          <vxe-option value="2" :label="$t('searchOrder.regularOrders')"></vxe-option>
          <vxe-option value="-2" :label="$t('searchOrder.cancelledOrders')"></vxe-option>
          <vxe-option value="0" :label="$t('searchOrder.allOrders')"></vxe-option>
        </vxe-select>
      </template>
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue
@@ -4,7 +4,8 @@
import request from "@/utils/request"
import {ElMessage} from "element-plus"
import {changeFilterEvent,filterChanged} from "@/hook"
import SelectProduct from "@/views/sd/product/SelectProduct.vue";
import {useI18n} from "vue-i18n"
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
@@ -40,25 +41,25 @@
    showStatus: true
  },//表头参数
  columns:[
    {title: '操作', width: 110, slots: { default: 'button_slot' },fixed:"left",},
    {field: 'orderNumber',width:120,  title: '序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
    {field: 'orderNumber',width:120,  title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    //{field: 'orderDetail.buildingNumber',width:120,  title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
    {field: 'orderDetail.productName',width:120,  title: '成品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'glassAddress',width:120,  title: '标记',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'glassChild',width:120,  title: '子产品',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.width',width:120,  title: '成品宽',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.height',width:120,  title: '成品高',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.shape',width:120,  title: '形状',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'totalArea',width:120,  title: '总尺寸',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'childWidth',width:120,  title: '单片宽',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'childHeight',width:120,  title: '单片高',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'area',width:120,  title: '单片尺寸',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.quantity',width:120,  title: '数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'process',width:120,  title: '工艺流程',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'icon',width:120,  title: '商标',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.processingNote',width:120,  title: '加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.remarks',width:120,  title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.edgingType',width:120,  title: '磨边类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
    {field: 'orderDetail.productName',width:120,  title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'glassAddress',width:120,  title: t('craft.glassAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'glassChild',width:120,  title: t('craft.glassChild'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.width',width:120,  title: t('craft.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.height',width:120,  title: t('craft.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.shape',width:120,  title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'totalArea',width:120,  title: t('craft.totalArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'childWidth',width:120,  title: t('craft.childWidth'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'childHeight',width:120,  title: t('craft.childHeight'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'area',width:120,  title: t('craft.area'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.quantity',width:120,  title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'process',width:120,  title: t('craft.process'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'icon',width:120,  title: t('order.icon'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.processingNote',width:120,  title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.remarks',width:120,  title: t('order.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
    {field: 'orderDetail.edgingType',width:120,  title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}
  ],//表头按钮
  mergeCells: [
    /*{ row: 0, col: 1, rowspan: 4, colspan: 1 },
@@ -71,9 +72,9 @@
  ],
  toolbarConfig: {
    buttons: [
      {'code': 'remarks', 'name': '加工要求'},
      {'code': 'Craft', 'name': '订单详情',status: 'primary'},
      {'code': 'review', 'name': '审核',status: 'primary'},
      {'code': 'remarks', 'name': t('order.processingNote')},
      {'code': 'Craft', 'name': t('craft.orderDetail'),status: 'primary'},
      {'code': 'review', 'name': t('basicData.review'),status: 'primary'},
    ],
    // import: false,
    // export: true,
@@ -85,7 +86,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)
@@ -198,7 +199,7 @@
      if(res.data.order.processReview === 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')
      }
@@ -223,13 +224,11 @@
    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/updateOrderCraft',query:{orderId:titleUploadData.value.orderId,random:Math.random()}})
    }else{
      ElMessage.error(res.msg)
@@ -247,25 +246,25 @@
    <div class="order-primary" style="background-color: white">
      <el-row>
        <el-col  :span="4"><el-text>销售单号:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.orderId')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.orderId}}</el-text></el-col>
        <el-col  :span="4"><el-text>客户名称:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('customer.customerName')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.customerName}}</el-text></el-col>
        <el-col  :span="4"><el-text>项目名称:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.project')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.project}}</el-text></el-col>
      </el-row>
      <el-row>
        <el-col  :span="4"><el-text>订单批次:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.batch')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.batch}}</el-text></el-col>
        <el-col  :span="4"><el-text>订单类型:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.orderType')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{ titleUploadData.orderType }}</el-text></el-col>
        <el-col  :span="4"><el-text>业务员</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.salesman')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.salesman}}</el-text></el-col>
      </el-row>
      <el-row>
        <el-col  :span="4"><el-text>包装方式:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.packType')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.packType}}</el-text></el-col>
        <el-col  :span="4"><el-text>交货日期:</el-text></el-col>
        <el-col  :span="4"><el-text>{{t('order.deliveryDate')}}</el-text></el-col>
        <el-col  :span="4"><el-text>{{titleUploadData.deliveryDate}}</el-text></el-col>
      </el-row>
    </div>
@@ -291,7 +290,7 @@
        <!--左边固定显示的插槽-->
        <template #button_slot="{ row }">
          <el-button @click="updateCraft(row)" link type="primary" size="small">修改工艺</el-button>
          <el-button @click="updateCraft(row)" link type="primary" size="small">{{t('craft.updateCraft')}}</el-button>
        </template>
        <template #num1_filter="{ column, $panel }">
@@ -304,7 +303,7 @@
      </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"
@@ -312,8 +311,8 @@
      />
    </el-dialog>
    <el-dialog v-model="craftVisible" title="工艺流程" style="width: 60%;height:60% ;position: relative;" >
      <h5>工艺属性</h5>
    <el-dialog v-model="craftVisible" :title="$t('craft.technologicalProcess')" style="width: 60%;height:60% ;position: relative;" >
      <h5>{{$t('craft.processAttribute')}}</h5>
      <el-checkbox
          v-model="craftObj.newCraft"
          v-for="item in process"
@@ -324,16 +323,16 @@
      <el-row style="width: 90%;border: 0;position: absolute;bottom: 1rem; left: 50%;transform: translateX(-50%);">
        <span class="ml-3 w-35 text-gray-600 inline-flex items-center"
        >原流程:
        >{{$t('craft.oldProcess')}}:
        </span>
        <el-input :value="oldCraftComputed" disabled class="w-50 m-2" />
        <span class="ml-3 w-35 text-gray-600 inline-flex items-center"
        >流程:
        >{{$t('craft.newProcess')}}:
        </span>
        <el-input :value="newCraftComputed" disabled class="w-50 m-2" />
        <el-col style="margin-top: 0.5rem">
          <el-button type="primary" @click="resetCraft">重置</el-button>
          <el-button type="primary" @click="saveCraft">保存</el-button>
          <el-button type="primary" @click="resetCraft">{{$t('craft.reset')}}</el-button>
          <el-button type="primary" @click="saveCraft">{{$t('basicData.save')}}</el-button>
        </el-col>
      </el-row>
north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue
@@ -548,7 +548,7 @@
              @click="updateHollowSure"
              size="small"
              type="primary"
              round>夹层间隔物修改</el-button>
              round>中空间隔物修改</el-button>
        </div>
        <div class="glass-spacer-zk">
          <el-select
@@ -740,7 +740,6 @@
          <el-col :span="16">
            <el-input
                :value="item.detail"
                value="5mm白玻"
                size="small"
                disabled  />
          </el-col>
north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuController.java
@@ -21,7 +21,6 @@
    private SysMenuService sysMenuService;
    @GetMapping("/getMenu/{lang}")
    public Result getMenu(@PathVariable String lang){
        System.out.println(lang);
        MyChannelHandlerPool myChannelHandlerPool = new MyChannelHandlerPool();
        //myChannelHandlerPool.sendMsg("123");
        //MyChannelHandlerPool.channelGroup.writeAndFlush( new TextWebSocketFrame("123123"));