Jelajahi Sumber

feat(password): 更换

gemercheung 1 tahun lalu
induk
melakukan
3f4e650c34

+ 7 - 5
src/request/URL.ts

@@ -25,11 +25,13 @@ export const delDevice = `/relics/camera/del/:deviceId`;
 export const addDevice = `/relics/camera/add`;
 
 // organization
-export const organizationPage = `/relics/relics/org/page`;
-export const addOrganization = `/relics/relics/org/add`;
-export const delOrganization = `/relics/relics/org/del`;
-export const getOrganizationDetail = `/relics/relics/org/info/:orgId`;
-export const alterOrganization = `/relics/relics/org/update`;
+// export const organizationPage = `/relics/relics/org/page`;
+export const organizationPageList = `/relics/org/treeList`;
+export const organizationPage = `/relics/org/treePage`;
+export const addOrganization = `/relics/org/add`;
+export const delOrganization = `/relics/org/del`;
+export const getOrganizationDetail = `/relics/org/info/:orgId`;
+export const alterOrganization = `/relics/org/update`;
 
 // users
 export const addUser = `/relics/user/addUser`;

+ 6 - 0
src/request/organization.ts

@@ -41,3 +41,9 @@ export const getOrgListFetch = (params: PageProps<Partial<OrganizationType>>) =>
         body: JSON.stringify(params),
     });
 
+
+export const getOrgListFetchList = () =>
+    sendFetch<ResPage<PageProps<OrganizationType>>>(URL.organizationPageList, {
+        method: "post",
+        body: JSON.stringify({}),
+    });

+ 8 - 2
src/view/organization-add.vue

@@ -22,7 +22,7 @@
       <el-input v-model="data.contact" style="width: 300px" :maxlength="500" placeholder="请输入" />
     </el-form-item>
     <el-form-item label="账号" prop="userName" required>
-      <el-input v-model="data.userName" style="width: 300px" :maxlength="500" placeholder="请输入手机号" />
+      <el-input v-model="data.userName" style="width: 300px" :maxlength="500"  placeholder="请输入手机号" />
     </el-form-item>
     <el-form-item label="密码" prop="password" required>
       <el-input autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" v-model="data.password"
@@ -51,7 +51,7 @@ import type { FormInstance, FormRules } from "element-plus";
 import type { OrganizationType } from '@/request/organization'
 import { OrganizationTypeDesc } from '@/store/organization'
 
-import { ref, reactive, unref } from "vue";
+import { ref, reactive, unref, watch } from "vue";
 import { View, Hide } from '@element-plus/icons-vue';
 import { user } from '@/store/user'
 
@@ -99,6 +99,12 @@ const setParentId = () => {
     data.value.parentId = isSuper ? 0 : Number(user.value.orgId)
   }
 }
+watch(data, (newValue) => {
+  data.value.userName = newValue.userName.replace(/[^0-9]/g, '');
+}, {
+  immediate: true,
+  deep: true
+});
 
 defineExpose<QuiskExpose>({
   async submit() {

+ 3 - 2
src/view/organization.vue

@@ -88,8 +88,9 @@ const relicsArray = ref<any[]>([]);
 const refresh = debounce(async () => {
   const data = await getOrgListFetch(pageProps.value);
   total.value = data.total;
-  console.log('parseTree', parseTree(data.records, 'orgId'))
-  relicsArray.value = data.records.length > 1 ? parseTree(data.records, 'orgId') : data.records
+  // console.log('parseTree', parseTree(data.records, 'orgId'))
+  // relicsArray.value = data.records.length > 1 ? parseTree(data.records, 'orgId') : data.records
+  relicsArray.value = data.records
 });
 
 watch(pageProps, refresh, { deep: true, immediate: true });

+ 30 - 19
src/view/users-add.vue

@@ -4,9 +4,10 @@
     <el-form-item label="单位名称" prop="orgId" required>
       <!-- <el-autocomplete style="width: 300px" v-model="data.orgName" :fetch-suggestions="querySearch" clearable
         class="inline-input w-50" placeholder="请输入" @select="handleSelect" /> -->
-      <el-select style="width: 300px" v-model="data.orgId" clearable>
-        <el-option :value="Number(id)" :label="value" v-for="{ value, id } in allOrgs" />
-      </el-select>
+      <el-tree-select style="width: 300px" v-model="data.orgId" :data="allOrgs" node-key="orgName"
+        @node-click="handleNodeClick" clearable>
+        <!-- <el-option :value="Number(id)" :label="value" v-for="{ value, id } in allOrgs" /> -->
+      </el-tree-select>
     </el-form-item>
 
     <el-form-item label="姓名" prop="nickName" required>
@@ -41,12 +42,11 @@ import { ElMessage, type FormInstance, type FormRules } from "element-plus";
 // import { ElMessage } from "element-plus";
 import type { OrganizationType } from '@/request/organization'
 import {
-  getOrgListFetch,
-
+  getOrgListFetchList,
   UserType
 } from "@/request";
 
-import { ref, reactive, unref, onMounted } from "vue";
+import { ref, reactive, unref, onMounted, watch } from "vue";
 import { View, Hide } from '@element-plus/icons-vue';
 // import { user } from '@/store/user'
 
@@ -55,7 +55,9 @@ const addPassFlag = ref(true) //图标显示标识
 const baseFormRef = ref<FormInstance>();
 
 type SelectType = {
-  value: string, id: number
+  orgName: string,
+  orgId: number
+  children: SelectType[]
 }
 
 const allOrgs = ref<SelectType[]>([]);
@@ -66,11 +68,11 @@ const rules = reactive<FormRules>({
   ],
   nickName: [
     { required: true, message: "请输入姓名", trigger: "blur" },
-    // { required: true, pattern: /^1[3456789]\d{9}$/, message: "请输入正确手机号", trigger: "blur" },
+
   ],
   userName: [
     { required: true, message: "请输入账号", trigger: "blur" },
-    // { required: true, pattern: /^1[3456789]\d{9}$/, message: "请输入正确手机号", trigger: "blur" },
+    { required: true, pattern: /^[A-Za-z0-9]{1,15}$/, message: "请输入字母或数字组合", trigger: "blur" },
   ],
   password: [
     { required: true, pattern: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,16}$/, message: "请输入8-16位数字、字母大小写组合", trigger: "blur" },
@@ -89,20 +91,29 @@ const data = ref<Partial<OrganizationType> & Partial<UserType>>({
   // userId: 0,
   userName: ""
 });
-
+watch(data, (newValue) => {
+  data.value.userName = newValue.userName.replace(/[^A-Za-z0-9]/g, '');
+}, {
+  immediate: true,
+  deep: true
+});
 onMounted(async () => {
-  const data = await getOrgListFetch({
-    pageNum: 1,
-    pageSize: 10000,
-  })
-  console.log('allOrgs', data.records);
-  allOrgs.value = Array.from(data.records).map((item: OrganizationType) => {
-    const i: SelectType = { value: item['orgName'], id: item['orgId'] }
-    return i
-  });
+  const data = await getOrgListFetchList()
+
+  console.log('allOrgs', data);
+  allOrgs.value = data as any as SelectType[]
+  // allOrgs.value = Array.from(data.records).map((item: OrganizationType) => {
+  //   const i: SelectType = { value: item['orgName'], id: item['orgId'] }
+  //   return i
+  // });
 
 })
 
+const handleNodeClick = (node: SelectType) => {
+  data.value.orgId = node.orgId
+  // console.log('handleNodeClick', node)
+}
+
 
 defineExpose<QuiskExpose>({
   async submit() {

+ 0 - 1
src/view/users-edit.vue

@@ -22,7 +22,6 @@ import { ElMessage, type FormInstance, type FormRules } from "element-plus";
 import type { OrganizationType } from '@/request/organization'
 import {
   getOrgListFetch,
-
   UserType
 } from "@/request";
 

+ 1 - 17
src/view/users-password-edit.vue

@@ -52,7 +52,6 @@ import { ElMessage, type FormInstance, type FormRules } from "element-plus";
 import { View, Hide } from '@element-plus/icons-vue';
 // import type { OrganizationType } from '@/request/organization'
 import {
-  // getOrgListFetch,
   getMsgAuthCode,
   UserType,
   ChangePasswordParam
@@ -129,16 +128,6 @@ let checkCodeBtn = reactive<any>({
 })
 
 onMounted(async () => {
-  // const data = await getOrgListFetch({
-  //   pageNum: 1,
-  //   pageSize: 10000,
-  // })
-  // // console.log('allOrgs', data.records);
-  // allOrgs.value = Array.from(data.records).map((item: OrganizationType) => {
-  //   const i: SelectType = { value: item['orgName'], id: item['orgId'] }
-  //   return i
-  // });
-
 })
 onUnmounted(() => {
   // 清除掉定时器
@@ -146,12 +135,7 @@ onUnmounted(() => {
 })
 
 
-// const setParentId = () => {
-//   if (user.value) {
-//     const isSuper = user.value.roles.filter(item => item.roleKey === "super_admin").length > 0;
-//     data.value.parentId = isSuper ? 0 : Number(user.value.orgId)
-//   }
-// }
+
 watchEffect(() => {
   if (props.user) {
     data.value = { ...props.user }