廖井涛
14 小时以前 f7a2fcdda7f1120498c5c5f75c5a99955fc54b43
north-glass-erp/northglass-erp/src/views/sd/basicData/SearchBasicData.vue
@@ -6,10 +6,124 @@
import CreateBasicData from "@/views/sd/basicData/CreateBasicData.vue"
import {useRouter,useRoute} from "vue-router"
import {useI18n} from "vue-i18n"
import {changeFilterEvent, filterChanged} from "@/hook";
const { t } = useI18n()
let dialogTableVisible = ref(false)
const router = useRouter()
let basic = ref({
  basicType : ['',''],
})
let options=ref([
  { "label": t('orderBasicData.order'),
    "value": "order",
    "children": [
      {
        "label": t('orderBasicData.orderType'),
        "value": "orderType"
      },
      {
        "label": t('orderBasicData.orderClassify'),
        "value": "orderClassify"
      },
      {
        "label": t('orderBasicData.icon'),
        "value": "icon"
      },
      {
        "label": t('orderBasicData.packType'),
        "value": "packType"
      },
      {
        "label": t('orderBasicData.alType'),
        "value": "alType"
      },
      {
        "label": t('orderBasicData.saleMan'),
        "value": "saleMan"
      },
      {
        "label": t('order.edgingType'),
        "value": "edgingType"
      }
    ]
  },
  {
    "label": t('orderBasicData.product'),
    "value": "product",
    "children": [
      {
        "label": t('orderBasicData.stuffThickness'),
        "value": "stuffThickness"
      },
      {
        "label": t('orderBasicData.stuffColor'),
        "value": "stuffColor"
      },
      {
        "label": t('orderBasicData.stuffCraft'),
        "value": "stuffCraft"
      },
      {
        "label": t('orderBasicData.stuffPosition'),
        "value": "stuffPosition"
      },
      {
        "label": t('orderBasicData.stuffLowE'),
        "value": "stuffLowE"
      },
      {
        "label": t('orderBasicData.InterlayerThickness'),
        "value": "InterlayerThickness"
      },
      {
        "label": t('orderBasicData.InterlayerType'),
        "value": "InterlayerType"
      },
      {
        "label": t('orderBasicData.InterlayerColor'),
        "value": "InterlayerColor"
      },
      {
        "label": t('orderBasicData.process'),
        "value": "process"
      },
      {
        "label": t('orderBasicData.hollowThickness'),
        "value": "hollowThickness"
      },
      {
        "label": t('orderBasicData.hollowGasType'),
        "value": "hollowGasType"
      },
      {
        "label": t('orderBasicData.hollowType'),
        "value": "hollowType"
      },
      {
        "label": t('orderBasicData.hollowGlueDepth'),
        "value": "hollowGlueDepth"
      }
    ]
  },
  {
    "children": [
      {
        "label": t('orderBasicData.paymentTerms'),
        "value": "paymentTerms"
      },
      {
        "label": t('orderBasicData.payMethod'),
        "value": "payMethod"
      }
    ],
    "label": t('orderBasicData.delivery'),
    "value": "delivery"
  }
])
const xGrid = ref()
const gridOptions = reactive({
  border:  "full",//表格加边框
@@ -18,7 +132,6 @@
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮
  id: 'OrderList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
@@ -29,7 +142,7 @@
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
    //remote: true
  },
  customConfig: {
    storage: true
@@ -43,18 +156,21 @@
  //表头参数
  columns:[
    {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
    {type: 'seq', title: '序号', width: 80 ,fixed:"left",},
    {field:'basicName',title: '名称'},
    {field:'createTime',title: '创建日期'},
    {type: 'seq', title: t('basicData.number'), width: 80 ,fixed:"left",},
    {field:'basicName',title: t('orderBasicData.name'),filters: [{data: ''}],slots: {filter: 'num1_filter'},filterMethod: filterChanged},
    {field:'nickname',title: t('orderBasicData.alias'),filters: [{data: ''}],slots: { default: 'showNickname' ,filter: 'num1_filter'},filterMethod: filterChanged},
    {field:'sort',title: t('processCard.sorting'),sortable: true,filters: [{data: ''}],slots: {filter: 'num1_filter'},filterMethod: filterChanged},
    {field:'createTime',title: t('basicData.creationTime')},
  ],
  //表头按钮
  toolbarConfig: {
    buttons: [
      {'code': 'add', 'name': '新增',status: 'primary'},
    ],
    slots:{
      buttons: "toolbar_buttons",
      tools:'add'
    },
    // import: false,
    // export: true,
@@ -62,21 +178,6 @@
    zoom: true,
    custom: true
  },
  footerMethod ({ columns, data }) {//页脚函数
    return[
      columns.map((column, columnIndex) => {
        // if (columnIndex === 0) {
        //   return t('basicData.total')
        // }
        // if (props.tableProp.footList.includes(column.field)) {
        //   return sumNum(data, column.field)
        // }
        return ''
      })
    ]
  }
})
const gridEvents = {
  toolbarButtonClick ({ code }) {
@@ -91,16 +192,12 @@
      }
    }
  },
  menuClick ({ menu, row, column }) {
    const $grid = xGrid.value
    if ($grid) {
      switch (menu.code) {
      }
    }
  }
}
const add = () => {
  rowIndex.value = null
  dialogTableVisible.value = true
}
request.get('/basicData/getBasicData').then(res => {
@@ -111,11 +208,8 @@
const getChildrenFunction = (flag) => {
  if(flag){
    router.push({
      path:'/main/orderBasicData/searchBasicData',
      query:{random:Math.random()
      }
    })
    dialogTableVisible.value=false
    handleChange()
  }
}
@@ -146,37 +240,101 @@
  }
}
const handleChange = () => {
  if(basic.value.basicType==null){
    request.get('/basicData/getBasicData').then(res => {
      if(res.code==='200'){
        xGrid.value.reloadData(res.data)
      }
    })
  }else{
    request.get(`/basicData/BasicDataByType/${basic.value.basicType[0]}/${basic.value.basicType[1]}`).then(res => {
      if(res.code==='200'){
        xGrid.value.reloadData(res.data)
      }
    })
  }
}
</script>
<template>
  <div>
    <vxe-grid
        style="width: 40vw;"
        class="mytable-scrollbar"
        max-height="500px"
        ref="xGrid"
        v-bind="gridOptions"
        v-on="gridEvents"
    >
      <template #button_slot="{ row }">
        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
        <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
          <template #reference>
            <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
          </template>
        </el-popconfirm>
      </template>
  <div  style="width: 100%;height: 100%">
    </vxe-grid>
    <div class="main-table">
      <vxe-grid
          class="mytable-scrollbar"
          height="100%"
          ref="xGrid"
          v-bind="gridOptions"
          v-on="gridEvents"
      >
        <template #button_slot="{ row }">
          <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
          <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
            <template #reference>
              <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
            </template>
          </el-popconfirm>
        </template>
        <template #showNickname="{ row,column, $panel }">
          <span v-if="row.basicCategory==='icon' && row.nickname!=null">picture</span>
          <span v-else>{{row.nickname}}</span>
        </template>
        <template #num1_filter="{ column, $panel }">
          <div>
            <div v-for="(option, index) in column.filters" :key="index">
              <input
                  v-model="option.data"
                  type="text"
                  @keyup.enter.native="$panel.confirmFilter()"
                  @input="changeFilterEvent($event, option, $panel)"/>
            </div>
          </div>
        </template>
        <template #toolbar_buttons>
          <el-col :span="8">
            <el-cascader
                v-model="basic.basicType"
                @change="handleChange"
                :options="options"
                clearable
                :placeholder="$t('processCard.pleaseSelect')"
            />
          </el-col>
        </template>
        <template #add>
          <el-button @click="add" type="primary" style="margin-right: 3px">{{$t('basicData.insert')}}</el-button>
        </template>
      </vxe-grid>
    </div>
    <el-dialog
        v-model="dialogTableVisible"
        destroy-on-close
        style="width: 30%;height:30% ">
        :close-on-click-modal="false"
        :close-on-press-escape="false"
        style="width: 30%;height:50% ">
      <create-basic-data :rowIndex="rowIndex" @gaveParent='getChildrenFunction'/>
    </el-dialog>
  </div>
</template>
<style scoped>
.head{
  width: 100%;
  height: 35px;
}
.main-table{
  width: 100%;
  height: calc(100% - 0px);
}
</style>