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 |  201 ++++++++------------------------------------------
 1 files changed, 32 insertions(+), 169 deletions(-)

diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index e5e11ee..1ddcb8f 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -40,8 +40,6 @@
               </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>
@@ -206,49 +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"
-                      :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
-              @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;">
@@ -278,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";
@@ -294,6 +249,7 @@
     return {
       // 閬僵灞�
       loading: true,
+      multipleSelection: [],
       // 閫変腑鏁扮粍
       ids: [],
       // 闈炲崟涓鐢�
@@ -373,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,
@@ -394,19 +373,7 @@
           }
         ]
       },
-      // 鑾峰彇涓夋柟浜哄憳寮规
-      addthirdParty: false,
-      thirdPartyLoading: false,
-      companiesList: [],
-      search2: '',
-      datathirdParty: [],
-      currentCompaniesList: [],
-      personList: [],
-      personListCopy: [],
-      personLoad: false,
-      userSearch2: '',
       addLoad: false,
-      //
       addDia: false, // 娣诲姞鏋舵瀯寮规
       addOb: {
         fatherId: 10001,
@@ -542,6 +509,7 @@
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
+      this.multipleSelection = selection;
       this.ids = selection.map(item => item.userId);
       this.single = selection.length != 1;
       this.multiple = !selection.length;
@@ -558,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