From ceec89801ad69708c33babb90d4f9d9ebfd8e3f9 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 27 八月 2026 16:20:42 +0800
Subject: [PATCH] fix(order): -移除英文字段验证 - 删除与OA流程相关的无用代码和组件 - 移除系统用户管理中的获取三方人员功能 - 更新设备二维码链接使用动态API地址 - 清理不合格处理页面中的OA相关功能和字段 - 移除登录页面的集团集成登录按钮 - 删除未使用的API接口和组件引用
---
src/views/system/user/index.vue | 209 +++++++++-------------------------------------------
1 files changed, 37 insertions(+), 172 deletions(-)
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 9bbfd25..1ddcb8f 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -28,29 +28,28 @@
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="鐘舵��" prop="status">
- <el-select v-model="queryParams.status" placeholder="鐢ㄦ埛鐘舵��" clearable>
+ <el-select v-model="queryParams.status" placeholder="鐢ㄦ埛鐘舵��" clearable @change="handleQuery">
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item>
- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鏌� 璇�</el-button>
- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲� 缃�</el-button>
+ <el-button type="primary" size="mini" @click="handleQuery">鏌ヨ</el-button>
+ <el-button size="mini" @click="resetQuery">閲嶇疆</el-button>
</el-form-item>
</el-form>
</div>
<div class="options_button">
- <el-button type="primary" size="mini" @click="openthirdParty"
- v-hasPermi="['system:user:add']">鑾峰彇涓夋柟浜哄憳</el-button>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:user:add']">鏂板鐢ㄦ埛</el-button>
</div>
</div>
<el-col>
- <el-table v-loading="loading" :data="userList">
+ <el-table v-loading="loading" :data="userList" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border>
<el-table-column label="搴忓彿" align="center" type="index" />
<el-table-column label="濮撳悕" align="center" key="nickName" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="璐﹀彿" align="center" key="userName" prop="userName" :show-overflow-tooltip="true" />
+ <el-table-column label="瑙掕壊" align="center" key="roleName" prop="roleName" :show-overflow-tooltip="true" />
<el-table-column label="鐘舵��" align="center" key="status">
<template slot-scope="scope">
<el-switch v-model="scope.row.status" active-value="0" inactive-value="1"
@@ -205,48 +204,6 @@
</div>
</el-dialog>
- <!-- 鑾峰彇浜轰簨绯荤粺浜哄憳淇℃伅 -->
- <el-dialog title="鑾峰彇浜轰簨绯荤粺浜哄憳淇℃伅" :visible.sync="addthirdParty" width="70%">
- <div class="body" v-loading="thirdPartyLoading">
- <el-row>
- <el-col :span="8" style="height: 70vh;overflow: hidden;" v-if="companiesList.length != 1">
- <el-input v-model="search2" placeholder="杈撳叆鍏抽敭瀛楁悳绱�" clearable size="small" @clear="searchFilter2"
- @keyup.enter.native="searchFilter2" prefix-icon="el-icon-search" style="margin-bottom: 20px;width: 90%" />
- <el-tree :data="datathirdParty" node-key="companyId" :props="defaultProps" @node-click="nodeClick2"
- style="height: calc(100% - 42px);" @node-expand="nodeOpen0" :filter-node-method="filterNode2" ref="tree2"
- highlight-current>
- </el-tree>
- </el-col>
- <el-col :span="companiesList.length == 1 ? 24 : 16" style="height: 70vh;padding-left: 8px;">
- <div style="display: flex;align-items: center;margin-bottom: 10px">
- <span style="width: 140px">鍛樺伐鍙�/鍛樺伐濮撳悕:</span>
- <el-input size="small" placeholder="璇疯緭鍏ュ憳宸ュ彿/鍛樺伐濮撳悕" @clear="searchPerson" clearable v-model="userSearch2"
- style="width: 50%" @keyup.enter.native="searchPerson()"></el-input>
- </div>
- <el-table height="67vh" stripe :data="personList" v-loading="personLoad" ref="personTable"
- @selection-change="handleSelectionChange">
- <el-table-column type="selection" width="50">
- </el-table-column>
- <el-table-column prop="employeeID" label="鍛樺伐鍙�">
- </el-table-column>
- <el-table-column prop="nickName" label="鍛樺伐濮撳悕">
- </el-table-column>
- <el-table-column prop="department" label="閮ㄩ棬" min-width="200">
- </el-table-column>
- <el-table-column prop="isLive" label="宸插瓨鍦�" width="80" align="center">
- <template slot-scope="scope">
- <el-tag type="success" effect="dark" v-if="scope.row.isLive === 1">鈭�</el-tag>
- </template>
- </el-table-column>
- </el-table>
- </el-col>
- </el-row>
- </div>
- <div slot="footer" class="dialog-footer">
- <el-button @click="addthirdParty = false">鍙� 娑�</el-button>
- <el-button type="primary" @click="addUser2" :loading="addLoad">纭� 瀹�</el-button>
- </div>
- </el-dialog>
<el-dialog title="鏋舵瀯鏂板" :visible.sync="addDia" width="400px">
<div class="body">
<el-row style="line-height: 50px;">
@@ -276,7 +233,7 @@
resetUserPwd,
changeUserStatus,
deptTreeSelect,
- selectCompaniesList, selectSimpleList, addPersonUser, uploadFile, selectRoleList, selectCustomEnum, addDepartment
+ uploadFile, selectRoleList, selectCustomEnum, addDepartment
} from "@/api/system/user";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
@@ -292,6 +249,7 @@
return {
// 閬僵灞�
loading: true,
+ multipleSelection: [],
// 閫変腑鏁扮粍
ids: [],
// 闈炲崟涓鐢�
@@ -371,18 +329,41 @@
userName: [
{ required: true, message: "璇峰~鍐欒处鍙�", trigger: "blur" }
],
- // nameEn: [
- // { required: true, message: "璇疯緭鍏ュ鍚岴N", trigger: "blur" }
- // ],
status: [
{ required: true, message: "璇烽�夋嫨鐘舵��", trigger: "change" }
],
roleIds: [
{ required: true, message: "璇烽�夋嫨瑙掕壊", trigger: "change" }
],
- // password: [
- // { required: true, message: "瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
- // ],
+ password: [
+ { required: false, message: "瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+ { min: 8, max: 20, message: "瀵嗙爜闀垮害蹇呴』鍦�8-20涓瓧绗︿箣闂�", trigger: "blur" },
+ {
+ validator: (rule, value, callback) => {
+ if (!value) {
+ callback();
+ return;
+ }
+ // 妫�鏌ユ槸鍚﹀寘鍚ぇ鍐欏瓧姣�
+ const hasUpperCase = /[A-Z]/.test(value);
+ // 妫�鏌ユ槸鍚﹀寘鍚皬鍐欏瓧姣�
+ const hasLowerCase = /[a-z]/.test(value);
+ // 妫�鏌ユ槸鍚﹀寘鍚壒娈婄鍙�
+ const hasSpecialChar = /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(value);
+
+ if (!hasUpperCase) {
+ callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓ぇ鍐欏瓧姣�'));
+ } else if (!hasLowerCase) {
+ callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓皬鍐欏瓧姣�'));
+ } else if (!hasSpecialChar) {
+ callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓壒娈婄鍙�'));
+ } else {
+ callback();
+ }
+ },
+ trigger: "blur"
+ }
+ ],
phonenumber: [
{
required: true,
@@ -392,19 +373,7 @@
}
]
},
- // 鑾峰彇涓夋柟浜哄憳寮规
- addthirdParty: false,
- thirdPartyLoading: false,
- companiesList: [],
- search2: '',
- datathirdParty: [],
- currentCompaniesList: [],
- personList: [],
- personListCopy: [],
- personLoad: false,
- userSearch2: '',
addLoad: false,
- //
addDia: false, // 娣诲姞鏋舵瀯寮规
addOb: {
fatherId: 10001,
@@ -540,6 +509,7 @@
},
// 澶氶�夋閫変腑鏁版嵁
handleSelectionChange(selection) {
+ this.multipleSelection = selection;
this.ids = selection.map(item => item.userId);
this.single = selection.length != 1;
this.multiple = !selection.length;
@@ -556,111 +526,6 @@
default:
break;
}
- },
- // 鑾峰彇涓夋柟浜哄憳
- openthirdParty() {
- this.addthirdParty = true;
- this.thirdPartyLoading = true;
- selectCompaniesList().then(res => {
- this.companiesList = this.HaveJson(res.data);
- if (this.companiesList.length == 1) {
- selectSimpleList({ companyId: this.companiesList[0].companyId }).then(res => {
- this.thirdPartyLoading = false;
- this.personListCopy = JSON.parse(JSON.stringify(res.data))
- this.personList = res.data
- this.$refs.personTable.doLayout()
- })
- } else {
- this.thirdPartyLoading = false;
- }
- this.datathirdParty = this.tranListToTreeData(res.data, "ROOT");
- }).catch(() => {
- this.thirdPartyLoading = false;
- })
- if (this.componentData.entity.roleId > 10000) this.$message.warning('鐢变簬鏈�変腑鍏蜂綋瑙掕壊锛屾柊澧炵敤鎴峰皢鎴愪负榛樿瑙掕壊')
- },
- tranListToTreeData(list, rootValue) {
- const arr = [];
- list.forEach((item) => {
- if (item.parentCompanyId === rootValue) {
- const children = this.tranListToTreeData(list, item.companyId);
- if (children.length) {
- item.children = children;
- }
- arr.push(item);
- }
- });
- return arr;
- },
- searchPerson() {
- let arr = JSON.parse(JSON.stringify(this.personListCopy))
- this.personList = arr.filter(a => {
- if (a.employeeID.includes(this.userSearch2) || a.nickName.includes(this.userSearch2)) {
- return true
- }
- })
- },
- searchFilter2() {
- this.$refs.tree2.filter(this.search2)
- },
- nodeClick2(ob, node, el) {
- this.getNodeParent(node)
- if (ob.companyId !== 'SC21') {
- this.personLoad = true
- selectSimpleList({ companyId: ob.companyId }).then(res => {
- this.personListCopy = JSON.parse(JSON.stringify(res.data))
- this.personList = res.data
- this.personLoad = false
- this.$refs.personTable.doLayout()
- })
- }
- },
- getNodeParent(val) {
- this.currentCompaniesList[val.level - 1] = val.data.companyId
- if (val.parent != null) {
- this.getNodeParent(val.parent)
- }
- },
- nodeOpen0(data, node, el) {
- this.currentCompaniesList[node.level - nodeOpen01] = data.id
- },
- filterNode2(value, data) {
- if (!value) return true;
- return data['companyName'].indexOf(value) !== -1;
- },
- addUser2() {
- if (this.multipleSelection.length === 0) {
- return this.$message.error('璇烽�夋嫨浜哄憳')
- }
- if (this.currentCompaniesList.length === 0) {
- return this.$message.error('璇烽�夋嫨缁勭粐')
- }
- /* for (let index = this.currentCompaniesList.length-1; index >1; index--) {
- let obj = this.multipleSelection.find(a=>a.companyId==this.currentCompaniesList[index])
- if(!obj){
- this.currentCompaniesList.splice(index,1)
- }
- } */
- let arr = []
- this.currentCompaniesList.forEach(b => {
- let obj = this.companiesList.find(a => a.companyId == b)
- arr.push(obj)
- })
- this.addLoad = true
- addPersonUser({
- company: arr,
- person: this.multipleSelection,
- roleId: this.componentData.entity.roleId
- }).then(res => {
- this.$message.success('鎿嶄綔鎴愬姛')
- this.multipleSelection = []
- this.$refs.personTable.clearSelection()
- this.addLoad = false
- this.userSearch2 = ''
- this.getList()
- }).catch(e => {
- this.addLoad = false
- })
},
/** 鏂板鎸夐挳鎿嶄綔 */
handleAdd() {
--
Gitblit v1.9.3