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 |  381 +++++++++++++++++++++++++++++++++---------------------
 1 files changed, 234 insertions(+), 147 deletions(-)

diff --git a/src/views/system/UserList.vue b/src/views/system/UserList.vue
index df8c1ab..d2a35e1 100644
--- a/src/views/system/UserList.vue
+++ b/src/views/system/UserList.vue
@@ -6,71 +6,54 @@
       <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-select v-model="queryParam.sex" placeholder="璇烽�夋嫨鎬у埆">
+          <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="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-option value="">璇烽�夋嫨</a-select-option>
-                <a-select-option value="1">鐢�</a-select-option>
-                <a-select-option value="2">濂�</a-select-option>
+                <a-select-option value="1">姝e父</a-select-option>
+                <a-select-option value="2">鍐荤粨</a-select-option>
               </a-select>
             </a-form-item>
           </a-col>
 
-
-          <template v-if="toggleSearchStatus">
-            <a-col :md="6" :sm="8">
-              <a-form-item label="鐪熷疄鍚嶅瓧">
-                <a-input placeholder="璇疯緭鍏ョ湡瀹炲悕瀛�" v-model="queryParam.realname"></a-input>
-              </a-form-item>
-            </a-col>
-
-            <a-col :md="6" :sm="8">
-              <a-form-item label="鎵嬫満鍙风爜">
-                <a-input placeholder="璇疯緭鍏ユ墜鏈哄彿鐮佹煡璇�" v-model="queryParam.phone"></a-input>
-              </a-form-item>
-            </a-col>
-
-            <a-col :md="6" :sm="8">
-              <a-form-item label="鐢ㄦ埛鐘舵��">
-                <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>
-                </a-select>
-              </a-form-item>
-            </a-col>
-          </template>
-
-          <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>
-              <a @click="handleToggleSearch" style="margin-left: 8px">
-                {{ toggleSearchStatus ? '鏀惰捣' : '灞曞紑' }}
-                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
-              </a>
             </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">
@@ -98,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>
 
@@ -114,16 +98,16 @@
         :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
         @change="handleTableChange">
 
-        <template slot="avatarslot" slot-scope="text, record, index">
+        <template slot="avatarslot" slot-scope="text, record">
           <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 @click="handleEdit(record)" >缂栬緫</a>
+          <a @click="handleEdit(record)">缂栬緫</a>
 
-          <a-divider type="vertical" />
+          <a-divider type="vertical"/>
 
           <a-dropdown>
             <a class="ant-dropdown-link">
@@ -181,17 +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'
 
   export default {
-    name: "UserList",
+    name: 'UserList',
     mixins: [JeecgListMixin],
     components: {
       JThirdAppButton,
@@ -208,186 +193,288 @@
         queryParam: {},
         recycleBinVisible: false,
         columns: [
-          /*{
-            title: '#',
-            dataIndex: '',
-            key:'rowIndex',
-            width:60,
-            align:"center",
-            customRender:function (t,r,index) {
-              return parseInt(index)+1;
-            }
-          },*/
           {
             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",
-          //   width: 80,
-          //   dataIndex: 'sex_dictText',
-          //   sorter: true
-          // },
-          // {
-          //   title: '鐢熸棩',
-          //   align: "center",
-          //   width: 100,
-          //   dataIndex: 'birthday'
-          // },
-          // {
-          //   title: '鎵嬫満鍙风爜',
-          //   align: "center",
-          //   width: 100,
-          //   dataIndex: 'phone'
-          // },
           {
             title: '閮ㄩ棬',
-            align: "center",
+            align: 'center',
             width: 240,
             dataIndex: 'orgCodeTxt'
           },
           {
             title: '杞﹂棿',
-            align: "center",
+            align: 'center',
             width: 240,
-            dataIndex: 'productionName'
+            dataIndex: 'productionName',
+            ellipsis: true
+          },
+          {
+            title: '缁翠慨閮ㄩ棬',
+            align: 'center',
+            width: 240,
+            dataIndex: 'repairDepartName',
+            ellipsis: true
           },
           {
             title: '鐘舵��',
-            align: "center",
+            align: 'center',
             width: 80,
             dataIndex: 'status_dictText'
           },
           {
             title: '鎿嶄綔',
             dataIndex: 'action',
-            scopedSlots: {customRender: 'action'},
-            align: "center",
+            scopedSlots: { customRender: 'action' },
+            align: 'center',
             width: 80
           }
 
+
         ],
+        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: {
-      getAvatarView: function (avatar) {
+      ...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: '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.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
+                }
+              ]
+            }
+          } 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.$message.success(res.message);
-            that.loadData();
+            that.$notification.success({
+              message: '娑堟伅',
+              description: res.message
+            })
+            that.loadData()
           } else {
-            that.$message.warning(res.message);
+            that.$notification.warning({
+              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