qushaowei
2023-10-17 05170ec3d816960d4f8a38ec8d202cefe73b4179
src/views/system/modules/DepartList/DepartAuthModal.vue
@@ -2,32 +2,56 @@
  <a-card :bordered="false">
    <template v-if="this.departId">
      <div class="table-page-search-wrapper">
        <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-form
          layout="inline"
          @keyup.enter.native="searchQuery"
        >
          <a-row :gutter="24">
            <a-col :md="6" :sm="12">
            <a-col :span="24 / 2  ">
              <a-form-item label="设备编号">
                <a-input placeholder="请输入设备编号" v-model="queryParam.equipmentId"></a-input>
                <a-input
                  placeholder="请输入设备编号"
                  v-model="queryParam.equipmentId"
                ></a-input>
              </a-form-item>
            </a-col>
            <a-col :md="6" :sm="8">
              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
            <a-col :span="24 / 2  ">
              <a-button
                type="primary"
                @click="searchQuery"
                icon="search"
              >查询</a-button>
              <a-button
                type="primary"
                @click="searchReset"
                icon="reload"
                style="margin-left: 8px"
              >重置</a-button>
            </a-col>
          </a-row>
        </a-form>
      </div>
      <div class="table-operator" style="border-top: 5px">
      <div
        class="table-operator"
        style="border-top: 5px"
      >
        <a-dropdown v-if="selectedRowKeys.length > 0">
          <a-menu slot="overlay"  @click="handleMenuClick">
          <a-menu
            slot="overlay"
            @click="handleMenuClick"
          >
            <a-menu-item key="1">
              <a-icon type="delete" @click="batchDel"/>
              <a-icon
                type="delete"
                @click="batchDel"
              />
              批量移除
            </a-menu-item>
          </a-menu>
          <a-button style="margin-left: 8px">
            批量操作
            <a-icon type="down"/>
            <a-icon type="down" />
          </a-button>
        </a-dropdown>
      </div>
@@ -42,22 +66,33 @@
        :pagination="ipagination"
        :loading="loading"
        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
        @change="handleTableChange">
        @change="handleTableChange"
      >
        <!--<template slot="avatarslot" slot-scope="text, record, index">-->
          <!--<div class="anty-img-wrap">-->
            <!--<a-avatar shape="square" :src="getAvatarView(record.avatar)" icon="user"/>-->
          <!--</div>-->
        <!--<div class="anty-img-wrap">-->
        <!--<a-avatar shape="square" :src="getAvatarView(record.avatar)" icon="user"/>-->
        <!--</div>-->
        <!--</template>-->
        <span slot="action" slot-scope="text, record">
        <a-popconfirm title="确定移除吗?" @confirm="() => handleDelete(record.id)">
                  <a>移除</a>
        </a-popconfirm>
        <span
          slot="action"
          slot-scope="text, record"
        >
          <a-popconfirm
            title="确定移除吗?"
            @confirm="() => handleDelete(record.id)"
          >
            <a>移除</a>
          </a-popconfirm>
        </span>
      </a-table>
    </template>
    <a-card v-else :bordered="false" style="height:200px">
    <a-card
      v-else
      :bordered="false"
      style="height:200px"
    >
      <a-empty>
        <span slot="description"> 请先选择一个部门! </span>
      </a-empty>
@@ -66,268 +101,265 @@
</template>
<script>
  import {queryTreeListForRole,queryDepartPermission,saveDepartPermission} from '@/api/api'
  import DepartDataruleModal from './DepartDataruleModal'
  import {JeecgListMixin} from '@/mixins/JeecgListMixin'
  import { getAction,postAction } from '@/api/manage'
  import { filterObj } from '@/utils/util'
  import qs from 'qs'
  export default {
    name: 'DepartAuthModal',
    mixins: [JeecgListMixin],
    components: { DepartDataruleModal },
    data(){
      return {
        queryParam:{},
        columns: [
          {
            title: '#',
            dataIndex: '',
            key:'rowIndex',
            width:60,
            align:"center",
            customRender:function (t,r,index) {
              return parseInt(index)+1;
            }
          },
          {
            title: '设备编号',
            align: "center",
            dataIndex: 'equipmentId',
            width: 120,
            // sorter: true
          },
          {
            title: '设备名称',
            align: "center",
            width: 150,
            dataIndex: 'equipmentName',
          },
          {
            title: '设备类型',
            align: "center",
            width: 120,
            dataIndex: 'equipmentType',
            // scopedSlots: {customRender: "avatarslot"}
          },
          {
            title: '驱动类型',
            align: "center",
            width: 80,
            dataIndex: 'driveType',
            // sorter: true
          },
          {
            title: '操作',
            dataIndex: 'action',
            scopedSlots: {customRender: 'action'},
            align: "center",
            width: 120
import { queryTreeListForRole, queryDepartPermission, saveDepartPermission } from '@/api/api'
import DepartDataruleModal from './DepartDataruleModal'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { getAction, postAction } from '@/api/manage'
import { filterObj } from '@/utils/util'
import qs from 'qs'
export default {
  name: 'DepartAuthModal',
  mixins: [JeecgListMixin],
  components: { DepartDataruleModal },
  data() {
    return {
      queryParam: {},
      columns: [
        {
          title: '#',
          dataIndex: '',
          key: 'rowIndex',
          width: 60,
          align: "center",
          customRender: function (t, r, index) {
            return parseInt(index) + 1;
          }
        },
        {
          title: '设备编号',
          align: "center",
          dataIndex: 'equipmentId',
          width: 120,
          // sorter: true
        },
        {
          title: '设备名称',
          align: "center",
          width: 150,
          dataIndex: 'equipmentName',
        },
        {
          title: '设备类型',
          align: "center",
          width: 120,
          dataIndex: 'equipmentType',
          // scopedSlots: {customRender: "avatarslot"}
        },
        ],
        disableMixinCreated:true,
        departId:"",
        title:"部门权限配置",
        visible: false,
        loading: false,
        url:{
          list:'/mdc/mdcEquipment/equipmentListByDepart',
          removeEquipmentForDepart:'/mdc/mdcEquipment/removeEquipmentForDepart',
          serachEquipment:'/mdc/mdcEquipment/equipmentListByDepart',
          removeEquipmentsForDepart:"/mdc/mdcEquipment/removeEquipmentsForDepart"
        {
          title: '驱动类型',
          align: "center",
          width: 80,
          dataIndex: 'driveType',
          // sorter: true
        },
        {
          title: '操作',
          dataIndex: 'action',
          scopedSlots: { customRender: 'action' },
          align: "center",
          width: 120
        }
      ],
      disableMixinCreated: true,
      departId: "",
      title: "部门权限配置",
      visible: false,
      loading: false,
      url: {
        list: '/mdc/mdcEquipment/equipmentListByDepart',
        removeEquipmentForDepart: '/mdc/mdcEquipment/removeEquipmentForDepart',
        serachEquipment: '/mdc/mdcEquipment/equipmentListByDepart',
        removeEquipmentsForDepart: "/mdc/mdcEquipment/removeEquipmentsForDepart"
      }
    }
  },
  methods: {
    show(departId) {
      this.departId = departId
      this.loadData();
    },
    close() {
      this.reset()
      this.$emit('close');
      this.visible = false;
    },
    searchReset() {
      this.queryParam = {}
      this.loadData();
    },
    searchQuery() {
      var id = this.queryParam.equipmentId
      this.loading = true;
      var params = this.getQueryParams();//查询条件
      params.pageNo = this.ipagination.current;
      params.pageSize = this.ipagination.pageSize;
      getAction(this.url.serachEquipment, { equipmentId: this.queryParam.equipmentId, departId: this.departId, pageNo: params.pageNo, pageSize: params.pageSize }).then((res) => {
        if (res.success) {
          // console.log(res)
          //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
          this.dataSource = res.result.records || res.result;
          if (res.result.total) {
            this.ipagination.total = res.result.total;
          } else {
            this.ipagination.total = 0;
          }
          //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
        } else {
          this.$message.warning(res.message)
        }
      }).finally(() => {
        this.loading = false
      })
    },
    handleTableChange(pagination, filters, sorter) {
      //分页、排序、筛选变化时触发
      //TODO 筛选
      // console.log(pagination)
      if (Object.keys(sorter).length > 0) {
        this.isorter.column = sorter.field;
        this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
      }
      this.ipagination = pagination;
      this.loadData();
    },
    loadData() {
      //加载数据 若传入参数1则加载第一页的内容
      // if (arg === 1) {
      //   this.ipagination.current = 1;
      // }
      var params = this.getQueryParams();//查询条件
      params.pageNo = this.ipagination.current;
      params.pageSize = this.ipagination.pageSize;
      this.loading = true;
      getAction(this.url.list, params).then((res) => {
        if (res.success) {
          // console.log(res)
          //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
          this.dataSource = res.result.records || res.result;
          if (res.result.total) {
            this.ipagination.total = res.result.total;
          } else {
            this.ipagination.total = 0;
          }
          //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
        } else {
          // this.$message.warning(res.message)
          this.$notification.warning({
            message: '消息',
            description: res.message
          });
        }
      }).finally(() => {
        this.loading = false
      })
    },
    getQueryParams() {
      //获取查询条件
      let sqp = {}
      if (this.superQueryParams) {
        sqp['superQueryParams'] = encodeURI(this.superQueryParams)
        sqp['superQueryMatchType'] = this.superQueryMatchType
      }
      var param = Object.assign(sqp, this.queryParam, this.isorter, this.filters);
      param.field = this.getQueryField();
      param.pageNo = this.ipagination.current;
      param.pageSize = this.ipagination.pageSize;
      param.departId = this.departId;
      //获取用户定制的参数属性
      if (this.getCustomQueryParams) {
        param = this.getCustomQueryParams(param);
        if (!param) {
          return false;
        }
      }
      return filterObj(param);
    },
    methods: {
    handleDelete(equipmentId) {
      show(departId){
        this.departId=departId
        this.loadData();
      },
      close () {
        this.reset()
        this.$emit('close');
        this.visible = false;
      },
      searchReset() {
        this.queryParam = {}
        this.loadData();
      },
      searchQuery() {
        var id = this.queryParam.equipmentId
        this.loading = true;
        var params = this.getQueryParams();//查询条件
        params.pageNo = this.ipagination.current;
        params.pageSize = this.ipagination.pageSize;
        getAction(this.url.serachEquipment,{equipmentId:this.queryParam.equipmentId,departId:this.departId,pageNo:params.pageNo,pageSize:params.pageSize}).then((res)=>{
          if (res.success) {
            // console.log(res)
            //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
            this.dataSource = res.result.records||res.result;
            if(res.result.total)
            {
              this.ipagination.total = res.result.total;
            }else{
              this.ipagination.total = 0;
            }
            //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
          }else{
            this.$message.warning(res.message)
          }
        }).finally(() => {
          this.loading = false
        })
      },
      handleTableChange(pagination, filters, sorter) {
        //分页、排序、筛选变化时触发
        //TODO 筛选
        // console.log(pagination)
        if (Object.keys(sorter).length > 0) {
          this.isorter.column = sorter.field;
          this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
        }
        this.ipagination = pagination;
        this.loadData();
      },
      loadData(){
        //加载数据 若传入参数1则加载第一页的内容
        // if (arg === 1) {
        //   this.ipagination.current = 1;
        // }
        var params = this.getQueryParams();//查询条件
        params.pageNo = this.ipagination.current;
        params.pageSize = this.ipagination.pageSize;
        this.loading = true;
        getAction(this.url.list,params).then((res)=>{
          if (res.success) {
            // console.log(res)
            //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
            this.dataSource = res.result.records||res.result;
            if(res.result.total)
            {
              this.ipagination.total = res.result.total;
            }else{
              this.ipagination.total = 0;
            }
            //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
          }else{
            // this.$message.warning(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        }).finally(() => {
          this.loading = false
        })
      },
      getQueryParams() {
        //获取查询条件
        let sqp = {}
        if(this.superQueryParams){
          sqp['superQueryParams']=encodeURI(this.superQueryParams)
          sqp['superQueryMatchType'] = this.superQueryMatchType
        }
        var param = Object.assign(sqp, this.queryParam, this.isorter ,this.filters);
        param.field = this.getQueryField();
        param.pageNo = this.ipagination.current;
        param.pageSize = this.ipagination.pageSize;
        param.departId = this.departId;
        //获取用户定制的参数属性
        if (this.getCustomQueryParams) {
          param = this.getCustomQueryParams(param);
          if(!param){
            return false;
          }
        }
        return filterObj(param);
      },
      handleDelete(equipmentId){
        postAction(this.url.removeEquipmentForDepart,qs.stringify({departId:this.departId,equipmentId:equipmentId})).then((res)=>{
          if (res.success) {
            // this.$message.warning(res.message)
            this.$notification.success({
              message:'消息',
              description:res.message
            });
            this.loadData(this.departId);
          }else{
            // this.$message.warning(res.message)
            this.$notification.warning({
              message:'消息',
              description:res.message
            });
          }
        }).finally(() => {
        })
      },
      handleMenuClick(e) {
        if (e.key == 1) {
          this.batchDel();
        }
      },
      batchDel: function () {
        if(!this.url.removeEquipmentsForDepart){
          this.$message.error("请设置url.removeEquipmentsForDepart属性!")
          return
        }
        if (this.selectedRowKeys.length <= 0) {
          // this.$message.warning('请选择一条记录!');
          this.$notification.warning({
            message:'消息',
            description:"请选择一条记录"
      postAction(this.url.removeEquipmentForDepart, qs.stringify({ departId: this.departId, equipmentId: equipmentId })).then((res) => {
        if (res.success) {
          // this.$message.warning(res.message)
          this.$notification.success({
            message: '消息',
            description: res.message
          });
          return;
          this.loadData(this.departId);
        } else {
          var ids = "";
          for (var a = 0; a < this.selectedRowKeys.length; a++) {
            ids += this.selectedRowKeys[a] + ",";
          }
          var that = this;
          this.$confirm({
            title: "确认删除",
            content: "是否删除选中数据?",
            onOk: function () {
              that.loading = true;
              postAction(that.url.removeEquipmentsForDepart,qs.stringify({departId:that.departId,equipmentIds:ids})).then((res) => {
                if (res.success) {
                  //重新计算分页问题
                  that.reCalculatePage(that.selectedRowKeys.length)
                  // that.$message.success(res.message);
                  that.$notification.success({
                    message:'消息',
                    description:res.message
                  });
                  that.loadData(that.departId);
                  that.onClearSelected();
                } else {
                  // that.$message.warning(res.message);
                  that.$notification.warning({
                    message:'消息',
                    description:res.message
                  });
                }
              }).finally(() => {
                that.loading = false;
              });
            }
          // this.$message.warning(res.message)
          this.$notification.warning({
            message: '消息',
            description: res.message
          });
        }
      },
      }).finally(() => {
      })
    },
  }
    handleMenuClick(e) {
      if (e.key == 1) {
        this.batchDel();
      }
    },
    batchDel: function () {
      if (!this.url.removeEquipmentsForDepart) {
        this.$message.error("请设置url.removeEquipmentsForDepart属性!")
        return
      }
      if (this.selectedRowKeys.length <= 0) {
        // this.$message.warning('请选择一条记录!');
        this.$notification.warning({
          message: '消息',
          description: "请选择一条记录"
        });
        return;
      } else {
        var ids = "";
        for (var a = 0; a < this.selectedRowKeys.length; a++) {
          ids += this.selectedRowKeys[a] + ",";
        }
        var that = this;
        this.$confirm({
          title: "确认删除",
          content: "是否删除选中数据?",
          onOk: function () {
            that.loading = true;
            postAction(that.url.removeEquipmentsForDepart, qs.stringify({ departId: that.departId, equipmentIds: ids })).then((res) => {
              if (res.success) {
                //重新计算分页问题
                that.reCalculatePage(that.selectedRowKeys.length)
                // that.$message.success(res.message);
                that.$notification.success({
                  message: '消息',
                  description: res.message
                });
                that.loadData(that.departId);
                that.onClearSelected();
              } else {
                // that.$message.warning(res.message);
                that.$notification.warning({
                  message: '消息',
                  description: res.message
                });
              }
            }).finally(() => {
              that.loading = false;
            });
          }
        });
      }
    },
  },
}
</script>
<style scoped>
</style>