loulijun2021
2023-02-12 adb74c51618faf025fe1d46bf6b22db895c2608f
src/views/jcsz/zzjg.vue
@@ -3,16 +3,15 @@
    <div class="body" :style="{height:mainHeight+'px'}">
      <div class="bodyTopButtonGroup">
        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>
      </div>
      <div class="bodyTopFormGroup">
        <el-form
          ref="form"
          :model="form"
          label-width="80px"
          label-width="100px"
          inline
          style="display: flex;justify-content: space-between"
          style="display: flex;"
        >
          <div class="elForm">
            <el-form-item label="组织编码" style=" display: flex;">
@@ -22,7 +21,13 @@
              <el-input v-model="form.OrgName" placeholder="请输入" style="width: 200px" />
            </el-form-item>
            <el-form-item label="组织类型" style=" display: flex;">
              <el-select v-model="form.OrgType" :popper-append-to-body="false" filterable style="width: 200px" placeholder="请选择">
              <el-select
                v-model="form.OrgType"
                :popper-append-to-body="false"
                filterable
                style="width: 200px"
                placeholder="请选择"
              >
                <el-option
                  v-for="item in OrgTypeArr"
                  :key="item.value"
@@ -35,14 +40,27 @@
              <el-input v-model="form.UserName" style="width: 200px" placeholder="请输入" />
            </el-form-item>
          </div>
          <div style="display: flex;align-items: start;margin-top: 5px;">
            <el-button type="primary" icon="el-icon-search" @click="search">查询</el-button>
            <el-button type="info" icon="el-icon-refresh" @click="reset">重置</el-button>
          <div
            class="bodySearchReset"
            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
          >
            <el-button v-waves type="primary" icon="el-icon-search" @click="search">查询</el-button>
            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">重置</el-button>
          </div>
        </el-form>
        <div
          class="bodyTopFormExpand"
        />
      </div>
      <div class="elTableDiv">
        <TableColumnSettings
          :list1="tableColumnSettingsArray"
          @tableColumnUpdate="tableColumnUpdate"
        />
        <el-table
          ref="tableDataRef"
          :key="tableTimeStampKey"
          class="tableFixed"
          :data="tableData"
          border
          :row-class-name="tableRowClassName"
@@ -54,65 +72,87 @@
          @sort-change="sortChange"
        >
          <el-table-column
            v-for="item in tableColumnSettingsArray"
            v-if="item.show"
            :key="item.id"
            :sortable="item.sortable"
            :prop="item.prop"
            :min-width="item.minWidth"
            :label="item.label"
            :width="item.width"
            show-tooltip-when-overflow
            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
          >
            <template slot-scope="{row}">
              <div v-if="row[item.prop]==='D'&&item.prop==='description'">部门</div>
              <div v-else-if="row[item.prop]==='W'&&item.prop==='description'">车间</div>
              <div v-else-if="!row[item.prop]">/</div>
              <div v-else>{{ row[item.prop] }}</div>
            </template>
          </el-table-column>
          <!--          <el-table-column-->
          <!--            type="selection"-->
          <!--            prop="RowNum"-->
          <!--            width="50"-->
          <!--            label="序号"-->
          <!--            fixed-->
          <!--          />-->
          <el-table-column
            prop="RowNum"
            width="50"
            label="序号"
            fixed
          />
          <el-table-column
            prop="org_code"
            label="组织编码"
            sortable="custom"
            min-width="110"
          />
          <el-table-column
            prop="org_name"
            label="组织名称"
            sortable="custom"
            min-width="110"
          />
          <el-table-column
            prop="description"
            label="组织类型"
            min-width="110"
            sortable="custom"
          >
            <template slot-scope="{row}">
              <!--              <div v-if="row.description==='F'">工厂</div>-->
              <div v-if="row.description==='D'">部门</div>
              <div v-if="row.description==='W'">车间</div>
              <!--              <div v-if="row.description==='K'">科室</div>-->
              <!--              <div v-if="row.description==='L'">生产线</div>-->
            </template>
          </el-table-column>
          <el-table-column
            prop="parentorg_name"
            label="上级单位"
            sortable="custom"
            min-widt="110"
          >
            <template slot-scope="{row}">
              <div v-if="row.parentorg_name===null">/</div>
              <div v-else>{{ row.parentorg_name }}</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            label="创建人员"
            width="110"
            sortable="custom"
          />
          <el-table-column
            prop="lm_date"
            label="创建时间"
            width="160"
            sortable="custom"
          />
          <!--          <el-table-column-->
          <!--            prop="org_code"-->
          <!--            label="组织编码"-->
          <!--            sortable="custom"-->
          <!--            show-tooltip-when-overflow-->
          <!--            min-width="110"-->
          <!--          />-->
          <!--          <el-table-column-->
          <!--            prop="org_name"-->
          <!--            label="组织名称"-->
          <!--            sortable="custom"-->
          <!--            show-tooltip-when-overflow-->
          <!--            min-width="110"-->
          <!--          />-->
          <!--          <el-table-column-->
          <!--            prop="description"-->
          <!--            label="组织类型"-->
          <!--            min-width="110"-->
          <!--            show-tooltip-when-overflow-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              &lt;!&ndash;              <div v-if="row.description==='F'">工厂</div>&ndash;&gt;-->
          <!--              <div v-if="row.description==='D'">部门</div>-->
          <!--              <div v-if="row.description==='W'">车间</div>-->
          <!--              &lt;!&ndash;              <div v-if="row.description==='K'">科室</div>&ndash;&gt;-->
          <!--              &lt;!&ndash;              <div v-if="row.description==='L'">生产线</div>&ndash;&gt;-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="parentorg_name"-->
          <!--            label="上级单位"-->
          <!--            sortable="custom"-->
          <!--            show-tooltip-when-overflow-->
          <!--            min-widt="110"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              <div v-if="row.parentorg_name===null">/</div>-->
          <!--              <div v-else>{{ row.parentorg_name }}</div>-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="lm_user"-->
          <!--            label="创建人员"-->
          <!--            width="110"-->
          <!--            show-tooltip-when-overflow-->
          <!--            sortable="custom"-->
          <!--          />-->
          <!--          <el-table-column-->
          <!--            prop="lm_date"-->
          <!--            label="创建时间"-->
          <!--            width="160"-->
          <!--            show-tooltip-when-overflow-->
          <!--            sortable="custom"-->
          <!--          />-->
          <el-table-column
            fixed="right"
            label="操作"
@@ -121,11 +161,18 @@
            <template slot-scope="{row}">
              <div class="operationClass">
                <el-tooltip class="item" effect="dark" content="编辑" placement="top">
                  <i class="el-icon-edit-outline" @click="edit('edit',row)" />
                  <i
                    :style="{color:$store.state.settings.theme}"
                    class="el-icon-edit-outline"
                    @click="edit('edit',row)"
                  />
                </el-tooltip>
                <el-tooltip v-del-tab-index class="item" effect="dark" content="删除" placement="top">
                  <i class="el-icon-delete" @click="del(row.id)" />
                  <i :style="{color:$store.state.settings.theme}" class="el-icon-delete" @click="del(row.id)" />
                </el-tooltip>
                <!--                <el-button type="primary" size="mini" />-->
                <!--                <el-button type="danger" size="mini">删除</el-button>-->
              </div>
            </template>
          </el-table-column>
@@ -144,6 +191,7 @@
    </div>
    <el-dialog
      v-el-drag-dialog
      :title="operation==='add'?'新增':'编辑'"
      :visible.sync="dialogVisible"
      width="800px"
@@ -192,8 +240,14 @@
      </el-form>
      <span slot="footer" class="dialog-footer">
        <div class="footerButton">
          <el-button @click="dialogVisibleCancel">取 消</el-button>
          <el-button type="primary" @click="dialogVisibleConfirm">确 定</el-button>
          <el-button v-waves @click="dialogVisibleCancel">取 消</el-button>
          <el-button
            v-waves
            type="primary"
            :loading="$store.state.app.buttonIsDisabled"
            :disabled="$store.state.app.buttonIsDisabled"
            @click="dialogVisibleConfirm"
          >确 定</el-button>
        </div>
      </span>
    </el-dialog>
@@ -205,14 +259,18 @@
import { AddUpdateOrganization, DeleteOrganization, OrganizationSearch, PrentOrganization } from '@/api/jcsz'
import { getCookie } from '@/utils/auth'
import { validateCode } from '@/utils/global'
import TableColumnSettings from '@/components/TableColumnSettings'
import elDragDialog from '@/directive/el-drag-dialog' // base on element-ui
import waves from '@/directive/waves/index.js' // 水波纹指令
// const SER_HZ = /^[\u4e00-\u9fa5]+$/
// const SER_HZ = /^[a-zA-Z0-9_;,.<>() ]{0,}$/
export default {
  name: 'ZZJG',
  components: {
    Pagination
    Pagination, TableColumnSettings
  },
  directives: { elDragDialog, waves },
  data() {
    // const validateName = (rule, value, callback) => {
    //   if (!value) {
@@ -255,6 +313,91 @@
        // { label: '科室', value: 'K' },
        // { label: '生产线', value: 'L' }
      ],
      tableColumnSettingsArray: [
        { minWidth: 50, width: false, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 隐藏列  show: false隐藏,true显示
        { minWidth: 25, width: 50, prop: 'RowNum', label: '序号', id: 2, show: true, fixed: 'left', sortable: false }, // custom
        {
          minWidth: 110,
          width: false,
          prop: 'org_code',
          label: '组织编码',
          id: 3,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'org_name',
          label: '组织名称',
          id: 4,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'description',
          label: '组织类型',
          id: 5,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'parent_id',
          label: '上级id',
          id: 6,
          show: false,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'parentorg_code',
          label: '上级编码',
          id: 7,
          show: false,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'parentorg_name',
          label: '上级单位',
          id: 8,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'lm_user',
          label: '创建人员',
          id: 9,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'lm_date',
          label: '创建时间',
          id: 10,
          show: true,
          fixed: false,
          sortable: true
        }
      ],
      tableTimeStampKey: new Date().getTime(), // 表格key
      total: 10,
      tableData: [],
@@ -318,7 +461,22 @@
    //   })()
    // }
  },
  destroyed() {
  },
  methods: {
    tableColumnUpdate(val, isCopyTrue) {
      console.log(val, isCopyTrue, 1111)
      if (isCopyTrue) {
        this.tableColumnSettingsArray = val
      }
      this.tableTimeStampKey = new Date().getTime()
      // this.$nextTick(() => {
      this.$refs.tableDataRef.doLayout()
      // })
    },
    async getOrganizationSearch() {
      const res = await OrganizationSearch(this.form)
      this.tableData = res.data
@@ -356,7 +514,6 @@
        this.SupUnitArr = res
      }
    },
    // 新增按钮
    async add(operation) {
      this.operation = operation
@@ -426,6 +583,7 @@
    dialogVisibleConfirm() {
      this.$refs.dialogForm.validate(valid => {
        if (valid) {
          this.$store.state.app.buttonIsDisabled = true
          const data = {
            OrganType: this.dialogForm.OrgType === '部门' ? 'D' : 'W',
            OrganCode: this.dialogForm.OrgCode,
@@ -441,11 +599,13 @@
          AddUpdateOrganization(data).then(res => {
            if (res.code === '200') {
              this.$message.success(this.operation === 'add' ? '添加成功!' : '修改成功!')
              this.dialogVisible = false
              this.$message.success(this.operation === 'add' ? '添加成功!' : '修改成功!')
              this.getOrganizationSearch()
              this.$store.state.app.buttonIsDisabled = false
            } else {
              this.$message.error(this.operation === 'add' ? '添加失败!' : '修改失败!')
              this.$store.state.app.buttonIsDisabled = false
            }
          })
        }
@@ -455,11 +615,12 @@
    getHeight() {
      this.$nextTick(() => {
        this.mainHeight = window.innerHeight - 85
        this.tableHeight = this.mainHeight - 200
        this.tableHeight = this.mainHeight - 195
        if (window.innerHeight < 769) {
          this.tableHeight = this.tableHeight - 40
        }
        this.isIpad = window.innerHeight < 769 && window.innerWidth < 1367
        this.$refs.tableDataRef.doLayout()
      })
    },
    tableRowClassName({ row, rowIndex }) {
@@ -472,13 +633,15 @@
<!--公共页面样式-->
<style lang="scss" scoped>
$main_color: #42b983;
.el-icon-share ,.el-icon-delete,.el-icon-edit-outline{
.el-icon-share, .el-icon-delete, .el-icon-edit-outline {
  color: $main_color;
  cursor: pointer;
}
.el-icon-edit-outline{
.el-icon-edit-outline {
  margin-right: 15px;
}
::v-deep .el-button--primary, .el-button--default, .el-button--info {
  height: 34px;
  display: flex;
@@ -536,8 +699,8 @@
  background-color: #f8f8fa;
}
::v-deep .el-table__body .el-table__row.hover-row td{
  background-color: #eaecef ;
::v-deep .el-table__body .el-table__row.hover-row td {
  background-color: #eaecef;
}
::v-deep .el-form--inline .el-form-item__label {
@@ -554,8 +717,30 @@
  margin-bottom: 0;
}
.tableFixed {
  ::v-deep .el-table__fixed-right {
    height: 100% !important;
  }
  ::v-deep .el-table__fixed {
    height: 100% !important;
  }
}
//::v-deep .cell {
//  display: flex;
//  flex-wrap: nowrap;
//}
//
//::v-deep .has-gutter .cell {
//  display: flex;
//  flex-wrap: nowrap;
//}
</style>
<style>
.osloading {
  font-size: 30px;
}
.el-table .custom-row {
  background: #f8f8fa;