From 6e61b49f9cddbda65bad95af5d6300265384c37f Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 28 十月 2025 09:28:35 +0800
Subject: [PATCH] 页面

---
 admin/src/views/business/internalCompany.vue        |    4 +-
 admin/src/api/system/user.js                        |    4 +
 admin/src/views/system/user.vue                     |   32 ++++++++++++++++
 admin/src/components/system/user/ResetPwdWindow.vue |   20 +++++++++-
 admin/src/components/common/CommonHeader.vue        |   36 +++++++++++------
 admin/src/views/business/internalMember.vue         |   10 ++--
 6 files changed, 83 insertions(+), 23 deletions(-)

diff --git a/admin/src/api/system/user.js b/admin/src/api/system/user.js
index b47616f..c18731c 100644
--- a/admin/src/api/system/user.js
+++ b/admin/src/api/system/user.js
@@ -10,7 +10,9 @@
 export function findAllList (data) {
   return request.post('/visitsAdmin/cloudService/system/user/findAllList', data)
 }
-
+export function updUserProhibitStatus (data) {
+  return request.post('/visitsAdmin/cloudService/system/user/updUserProhibitStatus', data)
+}
 // 鏂板缓
 export function create (data) {
   return request.post('/visitsAdmin/cloudService/system/user/create', data, {
diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index 2857921..7b28a6b 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -35,7 +35,7 @@
             show-password></el-input>
         </el-form-item>
         <el-form-item label="鏂板瘑鐮�" prop="newPwd" required>
-          <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜锛屽瘑鐮侀渶鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ"
+          <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜锛岃嚦灏戝寘鎷暟瀛椼�佸ぇ鍐欏瓧姣嶃�佸皬鍐欏瓧姣嶃�佺壒娈婂瓧绗︿腑鐨勪笁绉嶅瓧绗︼紝涓旇嚦灏�8浣嶆暟"
             maxlength="20" show-password></el-input>
         </el-form-item>
         <!-- <div style="font-size: 12px;color:#999999">瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ</div> -->
@@ -138,19 +138,29 @@
       if (!value) {
         callback(new Error('璇疯緭鍏ュ瘑鐮�'))
       } else {
-        const lengthValid = /^.{6,20}$/.test(value)
-        const hasLetter = /[a-zA-Z]/.test(value)
-        const hasNumber = /[0-9]/.test(value)
-        const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value)
-
-        const typesCount = [hasLetter, hasNumber, hasSpecial].filter(Boolean).length
-
-        if (!lengthValid) {
-          callback(new Error('瀵嗙爜闀垮害闇�涓�6鍒�20涓瓧绗�'))
-        } else if (typesCount < 2) {
-          callback(new Error('瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ'))
+        // const lengthValid = /^.{6,20}$/.test(value)
+        // const hasLetter = /[a-zA-Z]/.test(value)
+        // const hasNumber = /[0-9]/.test(value)
+        // const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value)
+        //
+        // const typesCount = [hasLetter, hasNumber, hasSpecial].filter(Boolean).length
+        //
+        // if (!lengthValid) {
+        //   callback(new Error('瀵嗙爜闀垮害闇�涓�6鍒�20涓瓧绗�'))
+        // } else if (typesCount < 2) {
+        //   callback(new Error('瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ'))
+        // } else {
+        //   callback() // 楠岃瘉閫氳繃
+        // }
+        let typeCount = 0;
+        if (/[a-z]/.test(value)) typeCount++; // 灏忓啓瀛楁瘝
+        if (/[A-Z]/.test(value)) typeCount++; // 澶у啓瀛楁瘝
+        if (/\d/.test(value)) typeCount++;    // 鏁板瓧
+        if (/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(value)) typeCount++; // 鐗规畩瀛楃
+        if (typeCount >= 3) {
+          callback()
         } else {
-          callback() // 楠岃瘉閫氳繃
+          callback(new Error('鑷冲皯鍖呮嫭鏁板瓧銆佸ぇ鍐欏瓧姣嶃�佸皬鍐欏瓧姣嶃�佺壒娈婂瓧绗︿腑鐨勪笁绉嶅瓧绗︼紝涓旇嚦灏�8浣嶆暟'))
         }
       }
     },
diff --git a/admin/src/components/system/user/ResetPwdWindow.vue b/admin/src/components/system/user/ResetPwdWindow.vue
index 287ce32..aca9656 100644
--- a/admin/src/components/system/user/ResetPwdWindow.vue
+++ b/admin/src/components/system/user/ResetPwdWindow.vue
@@ -9,7 +9,7 @@
     <p class="tip" v-if="user != null">涓虹敤鎴� <em>{{user.realname}}</em> 閲嶇疆瀵嗙爜</p>
     <el-form :model="form" ref="form" :rules="rules">
       <el-form-item label="鏂板瘑鐮�" prop="password" required>
-        <el-input v-model="form.password" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜" maxlength="30" show-password></el-input>
+        <el-input v-model="form.password" type="password" placeholder="鑷冲皯鍖呮嫭鏁板瓧銆佸ぇ鍐欏瓧姣嶃�佸皬鍐欏瓧姣嶃�佺壒娈婂瓧绗︿腑鐨勪笁绉嶅瓧绗︼紝涓旇嚦灏�8浣嶆暟" maxlength="30" show-password></el-input>
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -31,7 +31,7 @@
       },
       rules: {
         password: [
-          { required: true, message: '璇疯緭鍏ュ瘑鐮�' }
+          { validator: this.validatePassword, trigger: 'blur' }
         ]
       }
     }
@@ -44,6 +44,22 @@
         this.$refs.form.resetFields()
       })
     },
+    validatePassword (rule, value, callback) {
+      if (!value) {
+        callback(new Error('璇疯緭鍏ュ瘑鐮�'))
+      } else {
+        let typeCount = 0;
+        if (/[a-z]/.test(value)) typeCount++; // 灏忓啓瀛楁瘝
+        if (/[A-Z]/.test(value)) typeCount++; // 澶у啓瀛楁瘝
+        if (/\d/.test(value)) typeCount++;    // 鏁板瓧
+        if (/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(value)) typeCount++; // 鐗规畩瀛楃
+        if (typeCount >= 3) {
+          callback()
+        } else {
+          callback(new Error('鑷冲皯鍖呮嫭鏁板瓧銆佸ぇ鍐欏瓧姣嶃�佸皬鍐欏瓧姣嶃�佺壒娈婂瓧绗︿腑鐨勪笁绉嶅瓧绗︼紝涓旇嚦灏�8浣嶆暟'))
+        }
+      }
+    },
     // 纭閲嶇疆瀵嗙爜
     confirm () {
       if (this.isWorking) {
diff --git a/admin/src/views/business/internalCompany.vue b/admin/src/views/business/internalCompany.vue
index 4239815..4e8edc9 100644
--- a/admin/src/views/business/internalCompany.vue
+++ b/admin/src/views/business/internalCompany.vue
@@ -17,8 +17,8 @@
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:company:create', 'business:company:sync']">
-<!--        <li><el-button type="primary" v-permissions="['business:company:create']"-->
-<!--            @click="$refs.OperaInternalCompanyWindow.open('鏂板缓浼佷笟', null, null)">鏂板缓</el-button></li>-->
+        <li><el-button type="primary" v-permissions="['business:company:create']"
+            @click="$refs.OperaInternalCompanyWindow.open('鏂板缓缁勭粐', null, null)">鏂板缓</el-button></li>
         <li><el-button @click="sort('top')" :loading="sorting" icon="el-icon-sort-up"
             v-permissions="['business:company:sort']">涓婄Щ</el-button></li>
         <li><el-button @click="sort('bottom')" :loading="sorting" icon="el-icon-sort-down"
diff --git a/admin/src/views/business/internalMember.vue b/admin/src/views/business/internalMember.vue
index 2029c62..0c820ff 100644
--- a/admin/src/views/business/internalMember.vue
+++ b/admin/src/views/business/internalMember.vue
@@ -68,13 +68,13 @@
             @click="synchronous()">鍚屾</el-button></li>
         <li><el-button type="primary" v-permissions="['business:member:create']" :loading="loading"
             @click="synchronousDingding()">鍚屾閽夐拤</el-button></li>
-<!--        <li><el-button type="primary"
+        <li><el-button type="primary"
             @click="add" icon="el-icon-plus"
             v-permissions="['business:member:create']">鏂板缓鍛樺伐</el-button></li>
-        <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('浜哄憳瀵煎叆', searchForm.companyType)"
-            icon="el-icon-plus" v-permissions="['business:member:create']">浜哄憳瀵煎叆</el-button></li>
-        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete"
-            v-permissions="['business:member:delete']">鎵归噺鍒犻櫎</el-button></li>-->
+<!--        <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('浜哄憳瀵煎叆', searchForm.companyType)"-->
+<!--            icon="el-icon-plus" v-permissions="['business:member:create']">浜哄憳瀵煎叆</el-button></li>-->
+<!--        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete"-->
+<!--            v-permissions="['business:member:delete']">鎵归噺鍒犻櫎</el-button></li>-->
         <li><el-button type="primary" v-permissions="['business:empower:create']"
             @click="startEmpowerBatch()">涓嬪彂鎺堟潈</el-button></li>
         <li style="float: right">
diff --git a/admin/src/views/system/user.vue b/admin/src/views/system/user.vue
index 1e69dc9..8a27ad8 100644
--- a/admin/src/views/system/user.vue
+++ b/admin/src/views/system/user.vue
@@ -81,6 +81,25 @@
             </ul>
           </template>
         </el-table-column>
+        <el-table-column prop="prohibitStatus" label="绂佹鐧诲綍" min-width="160px" class-name="table-column-strings">
+          <template slot-scope="{row}">
+            <el-switch
+              v-model="row.prohibitStatus"
+              @change="changeStatus($event, row.id)"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="0"
+              :inactive-value="1">
+            </el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column prop="prohibitRemark" label="绂佺敤澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column label="鍒濆鍖栧瘑鐮�" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.needChangePwd === 0">{{row.firstPassword}}</span>
+            <span v-else>-</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="createUser" label="鍒涘缓浜�" min-width="100px">
           <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template>
         </el-table-column>
@@ -128,6 +147,7 @@
 import DepartmentSelect from '@/components/common/DepartmentSelect'
 import PositionSelect from '@/components/common/PositionSelect'
 import { fetchAll as fetchAllRoles, fetchAll } from '@/api/system/role'
+import { updUserProhibitStatus } from '@/api/system/user'
 export default {
   name: 'SystemUser',
   extends: BaseTable,
@@ -165,6 +185,18 @@
       .catch(e => {
         this.$tip.apiFailed(e)
       })
+  },
+  methods: {
+    changeStatus(prohibitStatus, id) {
+      console.log(id)
+      console.log(prohibitStatus)
+      updUserProhibitStatus({
+        prohibitStatus,
+        id
+      }).then(res => {
+        this.search()
+      })
+    }
   }
 }
 </script>

--
Gitblit v1.9.3