From 59d872915ad6b8c5efe9271eb60886d84332296f Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期六, 12 七月 2025 10:16:15 +0800
Subject: [PATCH] 用户管理新增按照岗位查询及列表展示

---
 src/views/system/UserList.vue |  417 ++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 211 insertions(+), 206 deletions(-)

diff --git a/src/views/system/UserList.vue b/src/views/system/UserList.vue
index b186bbc..d2a35e1 100644
--- a/src/views/system/UserList.vue
+++ b/src/views/system/UserList.vue
@@ -6,22 +6,27 @@
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
 
-          <a-col :md="6" :sm="12">
-            <a-form-item label="璐﹀彿">
-              <!--<a-input placeholder="璇疯緭鍏ヨ处鍙锋煡璇�" v-model="queryParam.username"></a-input>-->
-              <j-input placeholder="杈撳叆璐﹀彿妯$硦鏌ヨ" v-model="queryParam.username"></j-input>
+          <a-col :md="4" :sm="6">
+            <a-form-item label="鐢ㄦ埛璐﹀彿">
+              <j-input placeholder="杈撳叆鐢ㄦ埛璐﹀彿妯$硦鏌ヨ" v-model="queryParam.username"/>
             </a-form-item>
           </a-col>
 
-          <a-col :md="6" :sm="8">
-            <a-form-item label="鐪熷疄鍚嶅瓧">
-              <a-input placeholder="璇疯緭鍏ョ湡瀹炲悕瀛�" v-model="queryParam.realname"></a-input>
+          <a-col :md="4" :sm="6">
+            <a-form-item label="鐢ㄦ埛濮撳悕">
+              <a-input placeholder="璇疯緭鍏ョ敤鎴峰鍚�" v-model="queryParam.realname"/>
             </a-form-item>
           </a-col>
 
-          <a-col :md="6" :sm="8">
+          <a-col :md="4" :sm="6">
+            <a-form-item label="宀椾綅">
+              <j-dict-select-tag v-model="queryParam.post" placeholder="璇烽�夋嫨宀椾綅" dict-code="sys_position,name,code"/>
+            </a-form-item>
+          </a-col>
+
+          <a-col :md="4" :sm="6">
             <a-form-item label="鐢ㄦ埛鐘舵��">
-              <a-select v-model="queryParam.status" placeholder="璇烽�夋嫨">
+              <a-select v-model="queryParam.status" placeholder="璇烽�夋嫨鐢ㄦ埛鐘舵��">
                 <a-select-option value="">璇烽�夋嫨</a-select-option>
                 <a-select-option value="1">姝e父</a-select-option>
                 <a-select-option value="2">鍐荤粨</a-select-option>
@@ -29,25 +34,26 @@
             </a-form-item>
           </a-col>
 
-          <a-col :md="6" :sm="8">
+          <a-col :md="4" :sm="6">
             <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
               <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
               <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
             </span>
           </a-col>
-
         </a-row>
       </a-form>
     </div>
 
     <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
     <div class="table-operator" style="border-top: 5px">
-      <a-button @click="handleAdd" type="primary" icon="plus" >娣诲姞鐢ㄦ埛</a-button>
+      <a-button @click="handleAdd" type="primary" icon="plus">娣诲姞鐢ㄦ埛</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('鐢ㄦ埛淇℃伅')">瀵煎嚭</a-button>
-      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"
+                @change="handleImportExcel">
         <a-button type="primary" icon="import">瀵煎叆</a-button>
       </a-upload>
-      <j-third-app-button biz-type="user" :selected-row-keys="selectedRowKeys" syncToApp syncToLocal @sync-finally="onSyncFinally"/>
+      <j-third-app-button biz-type="user" :selected-row-keys="selectedRowKeys" syncToApp syncToLocal
+                          @sync-finally="onSyncFinally"/>
       <a-button type="primary" icon="hdd" @click="recycleBinVisible=true">鍥炴敹绔�</a-button>
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay" @click="handleMenuClick">
@@ -75,7 +81,8 @@
     <!-- table鍖哄煙-begin -->
     <div>
       <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
-        <i class="anticon anticon-info-circle ant-alert-icon"></i>宸查�夋嫨&nbsp;<a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤�&nbsp;&nbsp;
+        <i class="anticon anticon-info-circle ant-alert-icon"></i>宸查�夋嫨&nbsp;<a style="font-weight: 600">{{
+        selectedRowKeys.length }}</a>椤�&nbsp;&nbsp;
         <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a>
       </div>
 
@@ -98,9 +105,9 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)" >缂栬緫</a>
+          <a @click="handleEdit(record)">缂栬緫</a>
 
-          <a-divider type="vertical" />
+          <a-divider type="vertical"/>
 
           <a-dropdown>
             <a class="ant-dropdown-link">
@@ -158,18 +165,18 @@
 
   import UserModal from './modules/UserModal'
   import PasswordModal from './modules/PasswordModal'
-  import {putAction,getFileAccessHttpUrl} from '@/api/manage';
-  import {frozenBatch} from '@/api/api'
-  import {JeecgListMixin} from '@/mixins/JeecgListMixin'
-  import SysUserAgentModal from "./modules/SysUserAgentModal";
+  import { putAction, getFileAccessHttpUrl } from '@/api/manage'
+  import { frozenBatch } from '@/api/api'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import SysUserAgentModal from './modules/SysUserAgentModal'
   import JInput from '@/components/jeecg/JInput'
   import UserRecycleBinModal from './modules/UserRecycleBinModal'
   import JSuperQuery from '@/components/jeecg/JSuperQuery'
   import JThirdAppButton from '@/components/jeecgbiz/thirdApp/JThirdAppButton'
-  import {mapActions} from 'vuex'
+  import { mapActions } from 'vuex'
 
   export default {
-    name: "UserList",
+    name: 'UserList',
     mixins: [JeecgListMixin],
     components: {
       JThirdAppButton,
@@ -188,47 +195,47 @@
         columns: [
           {
             title: '鐢ㄦ埛璐﹀彿',
-            align: "center",
+            align: 'center',
             dataIndex: 'username',
             width: 120,
             sorter: true
           },
           {
             title: '鐢ㄦ埛濮撳悕',
-            align: "center",
+            align: 'center',
             width: 100,
-            dataIndex: 'realname',
+            dataIndex: 'realname'
           },
           {
             title: '澶村儚',
-            align: "center",
+            align: 'center',
             width: 80,
             dataIndex: 'avatar',
-            scopedSlots: {customRender: "avatarslot"}
+            scopedSlots: { customRender: 'avatarslot' }
           },
           {
             title: '閮ㄩ棬',
-            align: "center",
+            align: 'center',
             width: 240,
             dataIndex: 'orgCodeTxt'
           },
           {
             title: '杞﹂棿',
-            align: "center",
+            align: 'center',
             width: 240,
             dataIndex: 'productionName',
-            ellipsis: true,
+            ellipsis: true
           },
           {
             title: '缁翠慨閮ㄩ棬',
-            align: "center",
+            align: 'center',
             width: 240,
             dataIndex: 'repairDepartName',
-            ellipsis: true,
+            ellipsis: true
           },
           {
             title: '鐘舵��',
-            align: "center",
+            align: 'center',
             width: 80,
             dataIndex: 'status_dictText'
           },
@@ -236,240 +243,238 @@
             title: '鎿嶄綔',
             dataIndex: 'action',
             scopedSlots: { customRender: 'action' },
-            align: "center",
+            align: 'center',
             width: 80
-          },
+          }
 
 
         ],
-        isDepartType:'',
+        isDepartType: '',
         superQueryFieldList: [
-          { type: 'input', value: 'username', text: '鐢ㄦ埛璐﹀彿', },
-          { type: 'input', value: 'realname', text: '鐢ㄦ埛濮撳悕', },
-          { type: 'select', value: 'sex', dbType: 'int', text: '鎬у埆', dictCode: 'sex' },
+          { type: 'input', value: 'username', text: '鐢ㄦ埛璐﹀彿' },
+          { type: 'input', value: 'realname', text: '鐢ㄦ埛濮撳悕' },
+          { type: 'select', value: 'sex', dbType: 'int', text: '鎬у埆', dictCode: 'sex' }
         ],
         url: {
-          syncUser: "/act/process/extActProcess/doSyncUser",
-          list: "/sys/user/list",
-          delete: "/sys/user/delete",
-          deleteBatch: "/sys/user/deleteBatch",
-          exportXlsUrl: "/sys/user/exportXls",
-          importExcelUrl: "sys/user/importExcel",
-        },
+          syncUser: '/act/process/extActProcess/doSyncUser',
+          list: '/sys/user/list',
+          delete: '/sys/user/delete',
+          deleteBatch: '/sys/user/deleteBatch',
+          exportXlsUrl: '/sys/user/exportXls',
+          importExcelUrl: 'sys/user/importExcel'
+        }
       }
     },
     computed: {
-      importExcelUrl: function(){
-        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      importExcelUrl: function() {
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
       }
     },
-      created() {
-        this.queryTreeData()
-      },
-      methods: {
-        ...mapActions(['QueryDepartTree']),
-        queryTreeData() {
-          this.QueryDepartTree().then(res => {
-            if (res.success) {
-              this.isDepartType = res.result[0].value
-              if(this.isDepartType == -1){
-                this.columns=[
-                  {
-                    title: '鐢ㄦ埛璐﹀彿',
-                    align: "center",
-                    dataIndex: 'username',
-                    width: 120,
-                    sorter: true
-                  },
-                  {
-                    title: '鐢ㄦ埛濮撳悕',
-                    align: "center",
-                    width: 100,
-                    dataIndex: 'realname',
-                  },
-                  {
-                    title: '澶村儚',
-                    align: "center",
-                    width: 80,
-                    dataIndex: 'avatar',
-                    scopedSlots: {customRender: "avatarslot"}
-                  },
-                  {
-                    title: '杞﹂棿',
-                    align: "center",
-                    width: 240,
-                    dataIndex: 'productionName',
-                    ellipsis: true,
-                  },
-                  {
-                    title: '鐘舵��',
-                    align: "center",
-                    width: 80,
-                    dataIndex: 'status_dictText'
-                  },
-                  {
-                    title: '鎿嶄綔',
-                    dataIndex: 'action',
-                    scopedSlots: { customRender: 'action' },
-                    align: "center",
-                    width: 80
-                  },
-
-
-                ]
-              }else{
-                this.columns= [
-                  {
+    created() {
+      this.queryTreeData()
+    },
+    methods: {
+      ...mapActions(['QueryDepartTree']),
+      queryTreeData() {
+        this.QueryDepartTree().then(res => {
+          if (res.success) {
+            this.isDepartType = res.result[0].value
+            if (this.isDepartType == -1) {
+              this.columns = [
+                {
                   title: '鐢ㄦ埛璐﹀彿',
-                  align: "center",
+                  align: 'center',
                   dataIndex: 'username',
                   width: 120,
                   sorter: true
                 },
-                  {
-                    title: '鐢ㄦ埛濮撳悕',
-                    align: "center",
-                    width: 100,
-                    dataIndex: 'realname',
-                  },
-                  {
-                    title: '澶村儚',
-                    align: "center",
-                    width: 80,
-                    dataIndex: 'avatar',
-                    scopedSlots: {customRender: "avatarslot"}
-                  },
-                  {
-                    title: '閮ㄩ棬',
-                    align: "center",
-                    width: 240,
-                    dataIndex: 'orgCodeTxt'
-                  },
-                  {
-                    title: '杞﹂棿',
-                    align: "center",
-                    width: 240,
-                    dataIndex: 'productionName',
-                    ellipsis: true,
-                  },
-                  {
-                    title: '鐝粍',
-                    align: "center",
-                    width: 240,
-                    dataIndex: 'teamId_dictText'
-                  },
-                  {
-                    title: '鐘舵��',
-                    align: "center",
-                    width: 80,
-                    dataIndex: 'status_dictText'
-                  },
-                  {
-                    title: '鎿嶄綔',
-                    dataIndex: 'action',
-                    scopedSlots: { customRender: 'action' },
-                    align: "center",
-                    width: 80
-                  }
+                {
+                  title: '鐢ㄦ埛濮撳悕',
+                  align: 'center',
+                  width: 100,
+                  dataIndex: 'realname'
+                },
+                {
+                  title: '宀椾綅',
+                  align: 'center',
+                  width: 80,
+                  dataIndex: 'post_dictText'
+                },
+                {
+                  title: '杞﹂棿',
+                  align: 'center',
+                  width: 240,
+                  dataIndex: 'productionName',
+                  ellipsis: true
+                },
+                {
+                  title: '鐘舵��',
+                  align: 'center',
+                  width: 80,
+                  dataIndex: 'status_dictText'
+                },
+                {
+                  title: '鎿嶄綔',
+                  dataIndex: 'action',
+                  scopedSlots: { customRender: 'action' },
+                  align: 'center',
+                  width: 80
+                }
+
+
               ]
-              }
             } else {
-              this.$notification.warning({
-                message:'娑堟伅',
-                description:res.message
-              });
+              this.columns = [
+                {
+                  title: '鐢ㄦ埛璐﹀彿',
+                  align: 'center',
+                  dataIndex: 'username',
+                  width: 120,
+                  sorter: true
+                },
+                {
+                  title: '鐢ㄦ埛濮撳悕',
+                  align: 'center',
+                  width: 100,
+                  dataIndex: 'realname'
+                },
+                {
+                  title: '宀椾綅',
+                  align: 'center',
+                  width: 80,
+                  dataIndex: 'post_dictText'
+                },
+                {
+                  title: '閮ㄩ棬',
+                  align: 'center',
+                  width: 240,
+                  dataIndex: 'orgCodeTxt'
+                },
+                {
+                  title: '杞﹂棿',
+                  align: 'center',
+                  width: 240,
+                  dataIndex: 'productionName',
+                  ellipsis: true
+                },
+                {
+                  title: '鐝粍',
+                  align: 'center',
+                  width: 240,
+                  dataIndex: 'teamId_dictText'
+                },
+                {
+                  title: '鐘舵��',
+                  align: 'center',
+                  width: 80,
+                  dataIndex: 'status_dictText'
+                },
+                {
+                  title: '鎿嶄綔',
+                  dataIndex: 'action',
+                  scopedSlots: { customRender: 'action' },
+                  align: 'center',
+                  width: 80
+                }
+              ]
             }
-          }).finally(() =>{
-          })
-        },
-      getAvatarView: function (avatar) {
+          } else {
+            this.$notification.warning({
+              message: '娑堟伅',
+              description: res.message
+            })
+          }
+        }).finally(() => {
+        })
+      },
+      getAvatarView: function(avatar) {
         return getFileAccessHttpUrl(avatar)
       },
 
-      batchFrozen: function (status) {
+      batchFrozen: function(status) {
         if (this.selectedRowKeys.length <= 0) {
           // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒');
           this.$notification.warning({
-            message:'娑堟伅',
-            description:"璇烽�夋嫨涓�鏉¤褰�"
-          });
-          return false;
+            message: '娑堟伅',
+            description: '璇烽�夋嫨涓�鏉¤褰�'
+          })
+          return false
         } else {
-          let ids = "";
-          let that = this;
-          let isAdmin = false;
-          that.selectionRows.forEach(function (row) {
+          let ids = ''
+          let that = this
+          let isAdmin = false
+          that.selectionRows.forEach(function(row) {
             if (row.username == 'admin') {
-              isAdmin = true;
+              isAdmin = true
             }
-          });
+          })
           if (isAdmin) {
-            that.$message.warning('绠$悊鍛樿处鍙蜂笉鍏佽姝ゆ搷浣�,璇烽噸鏂伴�夋嫨锛�');
-            return;
+            that.$message.warning('绠$悊鍛樿处鍙蜂笉鍏佽姝ゆ搷浣�,璇烽噸鏂伴�夋嫨锛�')
+            return
           }
-          that.selectedRowKeys.forEach(function (val) {
-            ids += val + ",";
-          });
+          that.selectedRowKeys.forEach(function(val) {
+            ids += val + ','
+          })
           that.$confirm({
-            title: "纭鎿嶄綔",
-            content: "鏄惁" + (status == 1 ? "瑙e喕" : "鍐荤粨") + "閫変腑璐﹀彿?",
-            onOk: function () {
-              frozenBatch({ids: ids, status: status}).then((res) => {
+            title: '纭鎿嶄綔',
+            content: '鏄惁' + (status == 1 ? '瑙e喕' : '鍐荤粨') + '閫変腑璐﹀彿?',
+            onOk: function() {
+              frozenBatch({ ids: ids, status: status }).then((res) => {
                 if (res.success) {
-                  that.$message.success(res.message);
-                  that.loadData();
-                  that.onClearSelected();
+                  that.$message.success(res.message)
+                  that.loadData()
+                  that.onClearSelected()
                 } else {
-                  that.$message.warning(res.message);
+                  that.$message.warning(res.message)
                 }
-              });
+              })
             }
-          });
+          })
         }
       },
       handleMenuClick(e) {
         if (e.key == 1) {
-          this.batchDel();
+          this.batchDel()
         } else if (e.key == 2) {
-          this.batchFrozen(2);
+          this.batchFrozen(2)
         } else if (e.key == 3) {
-          this.batchFrozen(1);
+          this.batchFrozen(1)
         }
       },
-      handleFrozen: function (id, status, username) {
-        let that = this;
+      handleFrozen: function(id, status, username) {
+        let that = this
         //TODO 鍚庡彴鏍¢獙绠$悊鍛樿鑹�
         if ('admin' == username) {
-          that.$message.warning('绠$悊鍛樿处鍙蜂笉鍏佽姝ゆ搷浣滐紒');
-          return;
+          that.$message.warning('绠$悊鍛樿处鍙蜂笉鍏佽姝ゆ搷浣滐紒')
+          return
         }
-        frozenBatch({ids: id, status: status}).then((res) => {
+        frozenBatch({ ids: id, status: status }).then((res) => {
           if (res.success) {
             that.$notification.success({
-              message:'娑堟伅',
-              description:res.message
-            });
-            that.loadData();
+              message: '娑堟伅',
+              description: res.message
+            })
+            that.loadData()
           } else {
             that.$notification.warning({
-              message:'娑堟伅',
-              description:res.message
-            });
+              message: '娑堟伅',
+              description: res.message
+            })
           }
-        });
+        })
       },
       handleChangePassword(username) {
-        this.$refs.passwordmodal.show(username);
+        this.$refs.passwordmodal.show(username)
       },
       passwordModalOk() {
         //TODO 瀵嗙爜淇敼瀹屾垚 涓嶉渶瑕佸埛鏂伴〉闈紝鍙互鎶奷atasource涓殑鏁版嵁鏇存柊涓�涓�
       },
-      onSyncFinally({isToLocal}) {
+      onSyncFinally({ isToLocal }) {
         // 鍚屾鍒版湰鍦版椂鍒锋柊涓嬫暟鎹�
         if (isToLocal) {
           this.loadData()
         }
-      },
+      }
     }
 
   }

--
Gitblit v1.9.3