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>宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤� + <i class="anticon anticon-info-circle ant-alert-icon"></i>宸查�夋嫨 <a style="font-weight: 600">{{ + selectedRowKeys.length }}</a>椤� <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