Quellcode durchsuchen

admin 添加搜索

wangwei vor 4 Jahren
Ursprung
Commit
a3094cf8c4

+ 3 - 0
src/utils/adapt.ts

@@ -3,6 +3,7 @@
 interface AdaptWidth {
   elContainer: number;
   labelWidth: number;
+  adminLabelWidth: number;
   tableHeight: number;
 }
 
@@ -12,10 +13,12 @@ export function adapt() {
   if (clientWidth > 1000) {
     adaptWidth.elContainer = 20;
     adaptWidth.labelWidth = 180;
+    adaptWidth.adminLabelWidth = 110;
     adaptWidth.tableHeight = 600;
   } else {
     adaptWidth.elContainer = 22;
     adaptWidth.labelWidth = 80;
+    adaptWidth.adminLabelWidth = 80;
     adaptWidth.tableHeight = 350;
   }
   return adaptWidth;

+ 9 - 107
src/views/admin/admin/data.ts

@@ -128,7 +128,7 @@ export function getFormConfig(): Partial<FormProps> {
       {
         field: `logintime`,
         label: `最后登录`,
-        component: 'RangePicker',
+        component: 'DatePicker',
         colProps: {
           xl: 12,
           xxl: 8,
@@ -157,105 +157,6 @@ export function getFormConfig(): Partial<FormProps> {
           xxl: 8,
         },
       },
-      {
-        field: `sort`,
-        label: `排序字段`,
-        component: 'Select',
-        componentProps: {
-          options: [
-            {
-              label: 'ID',
-              value: 'id',
-              key: 'id',
-            },
-            {
-              label: '用户名',
-              value: 'username',
-              key: 'username',
-            },
-            {
-              label: '昵称',
-              value: 'nickname',
-              key: 'nickname',
-            },
-            {
-              label: 'Email',
-              value: 'email',
-              key: 'email',
-            },
-            {
-              label: '最后登录',
-              value: 'logintime',
-              key: 'logintime',
-            },
-          ],
-        },
-        colProps: {
-          xl: 12,
-          xxl: 8,
-        },
-      },
-      {
-        field: `order`,
-        label: `排序方式`,
-        component: 'Select',
-        componentProps: {
-          options: [
-            {
-              label: '升序',
-              value: 'asc',
-              key: 'order',
-            },
-            {
-              label: '降序',
-              value: 'desc',
-              key: 'order',
-            },
-          ],
-        },
-        colProps: {
-          xl: 12,
-          xxl: 8,
-        },
-      },
-      {
-        field: `filter`,
-        label: `筛选字段`,
-        component: 'CheckboxGroup',
-        componentProps: {
-          options: [
-            {
-              label: 'ID',
-              value: 'id',
-              key: 'filter1',
-            },
-            {
-              label: '用户名',
-              value: 'username',
-              key: 'filter2',
-            },
-            {
-              label: '昵称',
-              value: 'nickname',
-              key: 'filter3',
-            },
-            {
-              label: 'Email',
-              value: 'email',
-              key: 'filter4',
-            },
-            {
-              label: '昵称',
-              value: 'logintime',
-              key: 'filter5',
-            },
-          ],
-        },
-        colProps: {
-          xl: 12,
-          xxl: 8,
-        },
-      },
     ],
   };
 }
@@ -274,7 +175,7 @@ export const schemas: FormSchema[] = [
       },
       getPopupContainer: () => document.body,
     },
-    labelWidth: adaptWidth.labelWidth,
+    labelWidth: adaptWidth.adminLabelWidth,
     colProps: {
       span: adaptWidth.elContainer,
     },
@@ -284,7 +185,7 @@ export const schemas: FormSchema[] = [
     field: 'username',
     component: 'Input',
     label: '用户名',
-    labelWidth: adaptWidth.labelWidth,
+    labelWidth: adaptWidth.adminLabelWidth,
     colProps: {
       span: adaptWidth.elContainer,
     },
@@ -294,7 +195,7 @@ export const schemas: FormSchema[] = [
     field: 'nickname',
     component: 'Input',
     label: '昵称',
-    labelWidth: adaptWidth.labelWidth,
+    labelWidth: adaptWidth.adminLabelWidth,
     colProps: {
       span: adaptWidth.elContainer,
     },
@@ -304,7 +205,7 @@ export const schemas: FormSchema[] = [
     field: 'email',
     component: 'Input',
     label: 'Email',
-    labelWidth: adaptWidth.labelWidth,
+    labelWidth: adaptWidth.adminLabelWidth,
     colProps: {
       span: adaptWidth.elContainer,
     },
@@ -313,16 +214,17 @@ export const schemas: FormSchema[] = [
     field: 'password',
     component: 'InputPassword',
     label: '密码',
-    labelWidth: adaptWidth.labelWidth,
+    labelWidth: adaptWidth.adminLabelWidth,
     colProps: {
       span: adaptWidth.elContainer,
     },
+    required: true,
   },
   {
     field: 'loginfailure',
     component: 'Input',
     label: '失败次数',
-    labelWidth: adaptWidth.labelWidth,
+    labelWidth: adaptWidth.adminLabelWidth,
     defaultValue: 0,
     colProps: {
       span: adaptWidth.elContainer,
@@ -339,7 +241,7 @@ export const schemas: FormSchema[] = [
         { label: '停用', value: 'locked' },
       ],
     },
-    labelWidth: adaptWidth.labelWidth,
+    labelWidth: adaptWidth.adminLabelWidth,
     colProps: {
       span: adaptWidth.elContainer,
     },

+ 20 - 26
src/views/admin/admin/index.vue

@@ -44,6 +44,7 @@
   import { Modal } from 'ant-design-vue';
   import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
   import { getFormConfig, columns } from './data';
+  import moment from 'moment';
   import {
     getUserList,
     addUser,
@@ -123,33 +124,33 @@
         return tableAction;
       }
 
-      // 请求之前处理参数
+      // 请求之前处理
       function beforeFetch(params) {
-        console.log(params);
-        console.log('==========before========');
-        // params['op'] = {};
         for (let k in params) {
-          if (!params[k]) {
-            delete params[k];
+          if (k !== 'page' && k !== 'pageSize' && k !== 'field' && k !== 'order') {
+            if (params[k] === '') {
+              delete params[k];
+            } else {
+              if (!params.filter) {
+                params.filter = {};
+              }
+              if (params.logintime) {
+                params.logintime = moment(params.logintime).format('YYYY-MM-DD');
+              } else {
+                delete params.logintime;
+              }
+              params.filter[k] = params[k];
+              delete params[k];
+            }
           }
         }
-
-        if (params.logintime) {
-          params.logintime[0] = params.logintime[0].replace(
-            /([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])/g,
-            '00:00:00'
-          );
-          params.logintime[1] = params.logintime[1].replace(
-            /([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])/g,
-            '23:59:59'
-          );
-        }
-
+        params.filter = JSON.stringify(params.filter);
         params.offset = params.page;
         params.limit = params.pageSize;
         delete params.page;
         delete params.pageSize;
       }
+
       function afterFetch(result) {
         result.map((item) => {
           if (item.groups) {
@@ -176,14 +177,7 @@
           return;
         }
         popupData.title = '添加';
-        openPopup(true, {
-          id: null,
-          username: '',
-          nickname: '',
-          email: '',
-          groups_value: [],
-          status: 'normal',
-        });
+        openPopup(true, null);
       }
 
       function handleEdit(record: EditRecordRow) {

+ 13 - 2
src/views/admin/admin/popup.vue

@@ -50,7 +50,19 @@
       const [register, { closeModal }] = useModalInner((data) => {
         resetFields();
         setFieldsValue(data);
-        role.id = data.id;
+        if (data) {
+          role.id = data.id;
+          updateSchema({
+            field: 'password',
+            required: false,
+          });
+        } else {
+          role.id = 0;
+          updateSchema({
+            field: 'password',
+            required: true,
+          });
+        }
         console.log(`popupData.treeData`, popupData.treeData);
         updateSchema({
           field: 'groups_value',
@@ -60,7 +72,6 @@
 
       async function confirm() {
         const data = await validate();
-        console.log(`确定`, data);
         if (role.id) {
           data.id = role.id;
         }

+ 4 - 4
src/views/admin/group/data.ts

@@ -55,7 +55,7 @@ export const schemas: FormSchema[] = [
       getPopupContainer: () => document.body,
     },
     required: true,
-    labelWidth: adaptWidth.labelWidth,
+    labelWidth: adaptWidth.adminLabelWidth,
     colProps: {
       span: adaptWidth.elContainer,
     },
@@ -64,7 +64,7 @@ export const schemas: FormSchema[] = [
     field: 'name',
     component: 'Input',
     label: '名称',
-    labelWidth: adaptWidth.labelWidth,
+    labelWidth: adaptWidth.adminLabelWidth,
     colProps: {
       span: adaptWidth.elContainer,
     },
@@ -73,7 +73,7 @@ export const schemas: FormSchema[] = [
   //     field: 'rules',
   //     component: 'Input',
   //     label: '规则',
-  //     labelWidth: adaptWidth.labelWidth,
+  //     labelWidth: adaptWidth.adminLabelWidth,
   //     colProps: {
   //       span: adaptWidth.elContainer,
   //     },
@@ -89,7 +89,7 @@ export const schemas: FormSchema[] = [
         { label: '停用', value: 'locked' },
       ],
     },
-    labelWidth: adaptWidth.labelWidth,
+    labelWidth: adaptWidth.adminLabelWidth,
     colProps: {
       span: adaptWidth.elContainer,
     },

+ 21 - 0
src/views/admin/group/index.vue

@@ -105,6 +105,7 @@
         api: getGroupTree,
         isTreeTable: true,
         pagination: false, // 树列表不显示分页
+        beforeFetch: beforeFetch,
         afterFetch: afterFetch,
         actionColumn: {
           width: 160,
@@ -119,6 +120,26 @@
       const [register, { openModal }] = useModal();
       const [addRegister, { openModal: openPopup }] = useModal();
 
+      function beforeFetch(params) {
+        for (let k in params) {
+          if (k !== 'page' && k !== 'pageSize' && k !== 'field' && k !== 'order') {
+            if (params[k] === '') {
+              delete params[k];
+            } else {
+              if (!params.filter) {
+                params.filter = {};
+              }
+              params.filter[k] = params[k];
+              delete params[k];
+            }
+          }
+        }
+        params.filter = JSON.stringify(params.filter);
+        params.offset = params.page;
+        params.limit = params.pageSize;
+        delete params.page;
+        delete params.pageSize;
+      }
       function afterFetch(result) {
         popupData.treeData = result;
         console.log(`result`, result);

+ 22 - 0
src/views/admin/rule/index.vue

@@ -92,6 +92,7 @@
         isTreeTable: true,
         pagination: false, // 树列表不显示分页
         api: getRuleTree,
+        beforeFetch: beforeFetch,
         afterFetch: afterFetch,
         // dataSource: formData,
         actionColumn: {
@@ -108,6 +109,27 @@
       const [register, { openModal }] = useModal();
       const [addRegister, { openModal: openAdd }] = useModal();
 
+      function beforeFetch(params) {
+        for (let k in params) {
+          if (k !== 'page' && k !== 'pageSize' && k !== 'field' && k !== 'order') {
+            if (params[k] === '') {
+              delete params[k];
+            } else {
+              if (!params.filter) {
+                params.filter = {};
+              }
+              params.filter[k] = params[k];
+              delete params[k];
+            }
+          }
+        }
+        params.filter = JSON.stringify(params.filter);
+        params.offset = params.page;
+        params.limit = params.pageSize;
+        delete params.page;
+        delete params.pageSize;
+      }
+
       function afterFetch(result) {
         popupData.treeData = result;
         console.log(`result`, result);

+ 1 - 1
src/views/general/attachment/index.vue

@@ -86,7 +86,7 @@
     setup() {
       const { t } = useI18n();
       const { createMessage } = useMessage();
-      const { success, error } = createMessage;
+      const { success /*, error */ } = createMessage;
       const tableHeight = adapt().tableHeight;
       const state = reactive({
         groupList: [] as object[],