loulijun2021
2022-07-15 869f6c069e86c2ff90393c1441854a6f05989481
1.连接自动打印,2.修改bug
已添加2个文件
已修改16个文件
265 ■■■■■ 文件已修改
src/api/ErpSyncMes.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/Excel.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Sidebar/index.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jcsz/jsqd.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jcsz/wldw.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jcsz/yhqd.vue 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sbgl/sbqd.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/gd.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/gdpg.vue 102 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/scdd.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/sckbg.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/template.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wlgl/ckdy.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wlgl/kwdy.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zzmx/chda.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zzmx/gxdy.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zzmx/gylx.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zzmx/wllx.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/ErpSyncMes.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
import request from '@/utils/request'
// åˆ¶é€ æ¨¡åž‹ï¼šå­˜è´§åˆ†ç±»åŒæ­¥
export function SeaveSearchInventoryClass() {
  return request({
    url: 'ErpSyncMes/SeaveSearchInventoryClass',
    method: 'post'
  })
}
// åˆ¶é€ æ¨¡åž‹ï¼šå­˜è´§æ¡£æ¡ˆåŒæ­¥
export function SeaveSearchInventory() {
  return request({
    url: 'ErpSyncMes/SeaveSearchInventory',
    method: 'post'
  })
}
// ç‰©æ–™ç®¡ç†ï¼šä»“库库位同步
export function SeaveSearchWhareHouseLocation() {
  return request({
    url: 'ErpSyncMes/SeaveSearchWhareHouseLocation',
    method: 'post'
  })
}
//
export function SeaveSearchPartner() {
  return request({
    url: 'ErpSyncMes/SeaveSearchPartner',
    method: 'post'
  })
}
src/api/Excel.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
import request from '@/utils/request'
// Excel导入模板下载
export function DownLoadExcel(data) {
  return request({
    url: 'ImportExcel/DownLoadExcel',
    method: 'get',
    params: data
  })
}
// Excel导入文件上传、模板验证、数据量、验证
export function ExcelModelCheck(data) {
  return request({
    url: 'ImportExcel/ExcelModelCheck',
    method: 'get',
    params: data
  })
}
src/layout/components/Sidebar/index.vue
@@ -1,7 +1,7 @@
<template>
  <div :class="{'has-logo':showLogo}">
    <logo v-if="showLogo" :collapse="isCollapse" />
    <logo v-if="showLogo" :collapse="isCollapse"/>
    <el-scrollbar wrap-class="scrollbar-wrapper" style="margin-top:56px;height: 85%">
      <el-menu
        :default-active="activeMenu"
@@ -20,13 +20,14 @@
        <!--          :item="route"-->
        <!--          :base-path="route.path"-->
        <!--        />-->
        <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" />
        <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path"/>
      </el-menu>
    </el-scrollbar>
    <div style="position: absolute;bottom: 20px;left: 30px;">
      <div>
        <el-button type="text">新凯迪制造V1.0.01</el-button>
<!--        <el-button type="text"><a href="http://www.ykxkd.com/" target="_blank">新凯迪制造V1.0.01</a></el-button>-->
      </div>
    </div>
@@ -34,15 +35,15 @@
</template>
<script>
import { mapGetters } from 'vuex'
import {mapGetters} from 'vuex'
import Logo from './Logo'
import SidebarItem from './SidebarItem'
import variables from '@/styles/variables.scss'
import { LoginMenu } from '@/api/user'
import { removeCookie, setCookie } from '@/utils/auth'
import {LoginMenu} from '@/api/user'
import {removeCookie, setCookie} from '@/utils/auth'
export default {
  components: { SidebarItem, Logo },
  components: {SidebarItem, Logo},
  data() {
    return {
      routers: []
@@ -58,7 +59,7 @@
    },
    activeMenu() {
      const route = this.$route
      const { meta, path } = route
      const {meta, path} = route
      // if set path, the sidebar will highlight the path you set
      removeCookie('ruleCode')
      setCookie('ruleCode', meta.code)// å°†ç¼–码规则code存到cookie里面
@@ -85,9 +86,11 @@
  color: white;
  font-size: 18px;
}
.el-button--text:focus{
.el-button--text:focus {
  color: white;
}
#app .sidebar-container .el-submenu .el-menu-item {
  background-color: transparent !important;
}
src/views/jcsz/jsqd.vue
@@ -47,7 +47,7 @@
      <div style="margin-left: 10px;display: flex">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button type="primary" icon="el-icon-setting" @click="settingButton">设置</el-button>
        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>
        <!--        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>-->
      </div>
      <el-divider />
      <div class="elTableDiv">
@@ -509,6 +509,7 @@
} from '@/api/jcsz'
import { getCookie } from '@/utils/auth'
import $ from 'jquery'
import clearAllChildren from '@/utils/global'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
export default {
@@ -669,7 +670,7 @@
    // èŽ·å–æ‰€å±žç»„ç»‡
    async getUserOrganization() {
      const { data: res } = await UserOrganization()
      this.StuOrgArr = res
      this.StuOrgArr = clearAllChildren(res)
    },
    // æŽ’序改变时
    sortChange({ column, prop, order }) {
@@ -954,6 +955,7 @@
      this.dialogFormUser.orgcode = ''
      this.dialogFormUser.isrole = ''
      this.$refs.dialogCascaderUser.checkedValue = ''
      this.getRoleAssociationUser()
    },
    /* è§’色关联权限对话框部分*/
src/views/jcsz/wldw.vue
@@ -39,7 +39,7 @@
      <el-divider />
      <div style="margin-left: 10px;display: flex">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button type="primary" icon="el-icon-upload2">导入</el-button>
        <!--        <el-button type="primary" icon="el-icon-upload2">导入</el-button>-->
      </div>
      <el-divider />
      <div class="elTableDiv">
src/views/jcsz/yhqd.vue
@@ -29,7 +29,13 @@
            </el-form-item>
            <el-form-item label="工资类型" style=" display: flex;">
              <el-select v-model="form.wagetype" :popper-append-to-body="false" filterable style="width: 200px" placeholder="请选择">
              <el-select
                v-model="form.wagetype"
                :popper-append-to-body="false"
                filterable
                style="width: 200px"
                placeholder="请选择"
              >
                <el-option
                  v-for="item in wagetypeArr"
                  :key="item.value"
@@ -39,7 +45,13 @@
              </el-select>
            </el-form-item>
            <el-form-item label="在职状态" style=" display: flex;">
              <el-select v-model="form.Enable" :popper-append-to-body="false" filterable style="width: 200px" placeholder="请选择">
              <el-select
                v-model="form.Enable"
                :popper-append-to-body="false"
                filterable
                style="width: 200px"
                placeholder="请选择"
              >
                <el-option
                  v-for="item in EnableArr"
                  :key="item.value"
@@ -59,7 +71,7 @@
      <div style="margin-left: 10px;display: flex">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button type="primary" icon="el-icon-menu" @click="workingTramClick">生产班组</el-button>
        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>
        <!--        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>-->
      </div>
      <el-divider />
      <div class="elTableDiv">
@@ -646,7 +658,7 @@
      this.StuOrgArr = clearAllChildren(res)
    },
    // èŽ·å–æ‰€å±žç»„ç»‡å¯¹è¯æ¡†
    async  getUserOrganization2() {
    async getUserOrganization2() {
      const { data: res } = await UserOrganization()
      this.StuOrgArr2 = clearAllChildren(res)
    },
@@ -689,7 +701,7 @@
      this.dialogForm.StuOrg = val[val.length - 1]
    },
    // èŽ·å–ä¸‹æ‹‰ç”Ÿäº§ç­ç»„
    async  getMesOrderStepReportSelectUserGroup() {
    async getMesOrderStepReportSelectUserGroup() {
      const { data: res } = await MesOrderStepReportSelectUserGroup()
      this.usergroupArr = res
    },
@@ -927,7 +939,8 @@
                  if (i.Code === checkedFatherCode) {
                    this.dialogFormRoles.roleTreeSelectedArr[ind].Data.forEach((i1, ind2) => {
                      if (i1 === a[0]) {
                        this.dialogFormRoles.roleTreeSelectedArr[ind].Data.splice(ind2, 1)// å½“子code与现在的code相同时执行
                        // this.dialogFormRoles.roleTreeSelectedArr[ind].Data.splice(ind2, 1)// å½“子code与现在的code相同时执行
                        this.dialogFormRoles.roleTreeSelectedArr[ind].Data = this.dialogFormRoles.roleTreeSelectedArr[ind].Data.filter(i2 => i2 !== a[0])
                      } else {
                        this.dialogFormRoles.roleTreeSelectedArr[ind].Data.push(a[0])// //当子code与现在的code不相同时执行
                      }
@@ -1114,7 +1127,7 @@
      this.getUserGroupSearch()
    },
    // èŽ·å–ç”Ÿäº§ç­ç»„åˆ—è¡¨
    async  getUserGroupSearch() {
    async getUserGroupSearch() {
      const res = await UserGroupSearch(this.formWorking)
      this.workingTableData = res.data
      this.workingTableDataLength = res.count
@@ -1147,7 +1160,7 @@
      })
    },
    // ä¿å­˜
    async  saveWorking(row) {
    async saveWorking(row) {
      if (row.group_code.trim().length < 1) {
        return this.$message.info('班组编码不能为空!')
      }
@@ -1195,6 +1208,7 @@
  border: none;
  padding: 0 20px;
}
::v-deep .el-button--primary:hover {
  border: none;
}
@@ -1237,7 +1251,7 @@
  padding: 20px 100px !important;
}
.workingDialogVisible ::v-deep .el-dialog__body{
.workingDialogVisible ::v-deep .el-dialog__body {
  padding: 20px 20px !important;
}
@@ -1386,15 +1400,15 @@
  border-color: $main_color;
}
::v-deep .el-select .el-input__inner:focus{
::v-deep .el-select .el-input__inner:focus {
  border-color: $main_color;
}
::v-deep .el-select-dropdown__item.selected{
::v-deep .el-select-dropdown__item.selected {
  color: $main_color;
}
::v-deep  .el-input__inner:focus {
::v-deep .el-input__inner:focus {
  border-color: #42b983 !important;
}
@@ -1415,10 +1429,12 @@
    background-color: #42b983;
    border-color: #42b983;
  }
  .el-radio__input.is-checked .el-radio__inner:hover {
    border-color: #42b983;
  }
  .el-input__inner{
  .el-input__inner {
    border-color: #42b983 !important;
  }
src/views/sbgl/sbqd.vue
@@ -97,7 +97,7 @@
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button type="primary" icon="el-icon-c-scale-to-original" @click="deviceTypeButton">设备类型</el-button>
        <el-button type="primary" icon="el-icon-document-copy" @click="deviceGroupButton">设备组</el-button>
        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>
        <!--        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>-->
      </div>
      <el-divider />
      <div class="elTableDiv">
src/views/scgl/gd.vue
@@ -567,7 +567,7 @@
import { handleDatetime } from '@/utils/global'
import { getCookie } from '@/utils/auth'
import { MesOrderPrintSearch1 } from '@/api/utils'
import { urlAddRandomNo, webapp_ws_ajax_run } from '@/utils/grwebapp'
import { urlAddRandomNo, webapp_urlprotocol_startup, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
export default {
@@ -705,6 +705,8 @@
  mounted() {
    window.addEventListener('resize', this.getHeight)
    this.getHeight()
    // webapp_urlprotocol_startup()
    webapp_ws_autoupdate(true)
  },
  methods: {
    async getMesOrderSearch() {
@@ -964,7 +966,7 @@
          AddUpdateMesOrder(data).then(res => {
            if (res.code === '200') {
              if (this.operation !== 'add') {
                // this.sendPrint()
                this.sendPrint()
              }
              this.$message.success(this.operation === 'add' ? '添加成功!' : '派发成功!')
              this.dialogVisible = false
src/views/scgl/gdpg.vue
@@ -1,55 +1,55 @@
<template>
  <div v-if="false">
    <h3>报表直接打印,通过AJAX方式获取报表模板与报表数据</h3>
    <p><a href="javascript:void" @click.prevent="printClick">直接打印</a></p>
  </div>
</template>
<!--<template>-->
<!--  <div v-if="false">-->
<!--    <h3>报表直接打印,通过AJAX方式获取报表模板与报表数据</h3>-->
<!--    <p><a href="javascript:void" @click.prevent="printClick">直接打印</a></p>-->
<!--  </div>-->
<!--</template>-->
<script>
import { webapp_ws_ajax_run, webapp_urlprotocol_startup, urlAddRandomNo } from '@/utils/grwebapp'
import { MesOrderPrintSearch, MesOrderPrintSearch1 } from '@/api/utils'
import { getCookie } from '@/utils/auth'
// import a from 'public/static/grf/simple.grf'
export default {
  data() {
    return {
      OBJ: {},
      TEXT: ''
    }
  },
  mounted() {
    webapp_urlprotocol_startup()
    // const a = require('public/static/grf/simple.grf')
    // console.log(a, 1)
  },
  methods: {
    async printClick() {
      const data = {
        username: getCookie('admin'),
        mesordercode: 'PO202206280001_4'
      }
      const res = await MesOrderPrintSearch1(data)
      console.log(this.OBJ = res.data, 8989)
      if (res.code === '200') {
        this.ws_ajax_print()
      }
      // console.log(JSON.stringify(this.OBJ), 1)
    },
    ws_ajax_print() {
      // å‚数具体说明请参考帮助文档中的“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分
      var args = {
        type: 'preview', // preview  print
        showOptionDlg: false, // å¦‚果不显示打印对话框而直接打印,将此行注释去掉即可
        report: urlAddRandomNo('./static/grf/产品流传单A4.grf'),
        data: this.OBJ
      }
<!--<script>-->
<!--import { webapp_ws_ajax_run, webapp_urlprotocol_startup, urlAddRandomNo } from '@/utils/grwebapp'-->
<!--import { MesOrderPrintSearch, MesOrderPrintSearch1 } from '@/api/utils'-->
<!--import { getCookie } from '@/utils/auth'-->
<!--// import a from 'public/static/grf/simple.grf'-->
<!--export default {-->
<!--  data() {-->
<!--    return {-->
<!--      OBJ: {},-->
<!--      TEXT: ''-->
<!--    }-->
<!--  },-->
<!--  mounted() {-->
<!--    webapp_urlprotocol_startup()-->
<!--    // const a = require('public/static/grf/simple.grf')-->
<!--    // console.log(a, 1)-->
<!--  },-->
<!--  methods: {-->
<!--    async printClick() {-->
<!--      const data = {-->
<!--        username: getCookie('admin'),-->
<!--        mesordercode: 'PO202206280001_4'-->
<!--      }-->
<!--      const res = await MesOrderPrintSearch1(data)-->
<!--      console.log(this.OBJ = res.data, 8989)-->
<!--      if (res.code === '200') {-->
<!--        this.ws_ajax_print()-->
<!--      }-->
<!--      // console.log(JSON.stringify(this.OBJ), 1)-->
<!--    },-->
<!--    ws_ajax_print() {-->
<!--      // å‚数具体说明请参考帮助文档中的“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分-->
<!--      var args = {-->
<!--        type: 'preview', // preview  print-->
<!--        showOptionDlg: false, // å¦‚果不显示打印对话框而直接打印,将此行注释去掉即可-->
<!--        report: urlAddRandomNo('./static/grf/产品流传单A4.grf'),-->
<!--        data: this.OBJ-->
<!--      }-->
      webapp_ws_ajax_run(args)
    }
<!--      webapp_ws_ajax_run(args)-->
<!--    }-->
  }
}
</script>
<!--  }-->
<!--}-->
<!--</script>-->
<style>
</style>
<!--<style>-->
<!--</style>-->
src/views/scgl/scdd.vue
@@ -130,8 +130,6 @@
          @click="orderClose"
        >关闭订单
        </el-button>
        <!--        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>-->
        <!--        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>-->
      </div>
      <el-divider />
      <div class="elTableDiv">
src/views/scgl/sckbg.vue
@@ -667,7 +667,7 @@
  SavaMesOrderStepStart,
  SavaMesOrderStepReport
} from '@/api/scgl'
import { urlAddRandomNo, webapp_ws_ajax_run } from '@/utils/grwebapp'
import { urlAddRandomNo, webapp_urlprotocol_startup, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp'
import { MesOrderPrintSearch1 } from '@/api/utils'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
@@ -714,7 +714,7 @@
      WXform: { // å¤–协表单
        // PO202206280001_4;Step01
        orderstepqrcode: '', // æ‰«æçš„二维码信息
        prop: 'wo_code', // æŽ’序字段
        prop: 'wo_code', // æŽ’序字段z
        order: 'asc', // æŽ’序字段
        page: 1, // ç¬¬å‡ é¡µ
        rows: 20 // æ¯é¡µå¤šå°‘条
@@ -821,6 +821,8 @@
    this.$nextTick(() => {
      $("input[name='produceCode']")[0].focus()
    })
    // webapp_urlprotocol_startup()
    webapp_ws_autoupdate(true)
  },
  methods: {
    async getMesOrderStepSearch() {
@@ -897,12 +899,12 @@
      // æ”¶æ–™ï¼šcode="200"  count=3
      // èµ°åˆ—表形式 code="200"  count=4
      if (belong === 'produceCode') {
        const orderstepqrcode = this.form.orderstepqrcode
        const data = {
          OperType: 'ZZ',
          orderstepqrcode: this.form.orderstepqrcode,
          orderstepqrcode: orderstepqrcode,
          SelectType: ''
        }
        console.log(this.form.orderstepqrcode, 21)
        const res = await MesOrderStepStart(data)
        if (res.code === '200' && res.count === 0) {
          await this.ZZstart(res.data)
@@ -912,9 +914,10 @@
        }
      }
      if (belong === 'WXproduceCode') {
        const orderstepqrcode = this.WXform.orderstepqrcode
        const data = {
          OperType: 'WX',
          orderstepqrcode: this.WXform.orderstepqrcode,
          orderstepqrcode: orderstepqrcode,
          SelectType: this.WXSelected// OUT、IN
        }
        const res = await MesOrderStepStart(data)
@@ -1245,12 +1248,12 @@
              inuser: this.dialogForm.inuser, // å‘料人员
              taskqty: this.dialogForm.planqty, // ä»»åŠ¡æ•°é‡
              sqty: this.dialogForm.sqty, // æ”¶æ–™æ•°é‡
              ngqty: this.dialogForm.noputqty, // ä¸è‰¯æ•°é‡
              ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // ä¸è‰¯æ•°é‡
              badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è‰¯åŽŸå› 
            }
            SavaMesOrderStepIn(data).then(res => {
              if (res.code === '200') {
                // this.WXprint()
                this.WXprint()
                this.$message.success('收料成功!')
                this.dialogVisible = false
                this.tabClick()
@@ -1272,7 +1275,6 @@
            }
            SavaMesOrderStepStart(data).then(res => {
              if (res.code === '200') {
                // this.WXprint()
                this.$message.success('开工成功!')
                this.dialogVisible = false
                this.tabClick()
@@ -1310,12 +1312,12 @@
              startqty: this.dialogForm.reportqty, // å¼€å·¥æ•°é‡
              // reportqty: this.dialogForm.reportqty, // æŠ¥å·¥æ•°é‡
              reportqty: this.dialogForm.startqty, // æŠ¥å·¥æ•°é‡
              ngqty: this.dialogForm.noputqty, // ä¸è‰¯æ•°é‡
              ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // ä¸è‰¯æ•°é‡
              badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è‰¯åŽŸå› 
            }
            SavaMesOrderStepReport(data).then(res => {
              if (res.code === '200') {
                // this.ZZprint()
                this.ZZprint()
                this.$message.success('报工成功!')
                this.dialogVisible = false
                this.tabClick()
src/views/template.vue
@@ -129,7 +129,7 @@
    <el-dialog
      :title="operation==='add'?'新增':'编辑'"
      :visible.sync="dialogVisible"
      width="60%"
      width="800"
      top="15vh"
      @closed="handleClose"
      @close="handleClose"
src/views/wlgl/ckdy.vue
@@ -32,7 +32,7 @@
      <el-divider />
      <div style="margin-left: 10px;display: flex">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>
        <!--        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>-->
      </div>
      <el-divider />
      <div class="elTableDiv">
src/views/wlgl/kwdy.vue
@@ -48,7 +48,7 @@
      <el-divider />
      <div style="margin-left: 10px;display: flex">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>
        <!--        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>-->
      </div>
      <el-divider />
      <div class="elTableDiv">
src/views/zzmx/chda.vue
@@ -81,7 +81,7 @@
      <div style="margin-left: 10px;display: flex">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button type="primary" icon="el-icon-office-building" @click="office">单位</el-button>
        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>
        <!--        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>-->
      </div>
      <el-divider />
      <div class="elTableDiv">
src/views/zzmx/gxdy.vue
@@ -55,7 +55,7 @@
      <el-divider />
      <div style="margin-left: 10px;display: flex">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>
        <!--        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>-->
      </div>
      <el-divider />
      <div class="elTableDiv">
src/views/zzmx/gylx.vue
@@ -32,7 +32,7 @@
      <el-divider />
      <div style="margin-left: 10px;display: flex">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>
        <!--        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>-->
      </div>
      <el-divider />
      <div class="elTableDiv">
src/views/zzmx/wllx.vue
@@ -36,7 +36,7 @@
      <el-divider />
      <div style="margin-left: 10px;display: flex">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>
        <!--        <el-button type="primary" icon="el-icon-upload2" @click="upload">导入</el-button>-->
      </div>
      <el-divider />
      <div class="elTableDiv">