Selaa lähdekoodia

🎨 修改细节问题

快乐的梦鱼 1 kuukausi sitten
vanhempi
commit
9e6582279c

+ 4 - 4
package-lock.json

@@ -23,7 +23,7 @@
         "@dcloudio/uni-mp-weixin": "3.0.0-4030620241128001",
         "@dcloudio/uni-mp-xhs": "3.0.0-4030620241128001",
         "@dcloudio/uni-quickapp-webview": "3.0.0-4030620241128001",
-        "@imengyu/imengyu-utils": "^0.0.19",
+        "@imengyu/imengyu-utils": "^0.0.24",
         "@imengyu/js-request-transform": "^0.3.7",
         "async-validator": "^4.2.5",
         "pinia": "^3.0.1",
@@ -2890,9 +2890,9 @@
       }
     },
     "node_modules/@imengyu/imengyu-utils": {
-      "version": "0.0.19",
-      "resolved": "https://registry.npmmirror.com/@imengyu/imengyu-utils/-/imengyu-utils-0.0.19.tgz",
-      "integrity": "sha512-McRfq8JksU1rjkji21eB2G0xffSiJcKsVvOwMPWUdEQzXy5qPRZzsWrB+e/Irm86Qj+pA789pA9VA93gW6ALSw==",
+      "version": "0.0.24",
+      "resolved": "https://registry.npmmirror.com/@imengyu/imengyu-utils/-/imengyu-utils-0.0.24.tgz",
+      "integrity": "sha512-IFlN6DUmSqrD1pUQ8jhU98FV+0woS8fxJ0fR0f8cwDgh2AW7eIrYtDKZ6ouC8r6ytWncHkwRDQrfwBTiS0NR0g==",
       "license": "MIT",
       "dependencies": {
         "@imengyu/js-request-transform": "^0.3.6"

+ 1 - 1
package.json

@@ -50,7 +50,7 @@
     "@dcloudio/uni-mp-weixin": "3.0.0-4030620241128001",
     "@dcloudio/uni-mp-xhs": "3.0.0-4030620241128001",
     "@dcloudio/uni-quickapp-webview": "3.0.0-4030620241128001",
-    "@imengyu/imengyu-utils": "^0.0.19",
+    "@imengyu/imengyu-utils": "^0.0.24",
     "@imengyu/js-request-transform": "^0.3.7",
     "async-validator": "^4.2.5",
     "pinia": "^3.0.1",

+ 18 - 19
src/api/CommonContent.ts

@@ -1,8 +1,8 @@
-import { DataModel, transformArrayDataModel, type NewDataModel } from '@imengyu/js-request-transform';
+import { DataModel, transformArrayDataModel, type KeyValue, type NewDataModel } from '@imengyu/js-request-transform';
 import { AppServerRequestModule } from './RequestModules';
 import ApiCofig from '@/common/config/ApiCofig';
 import { transformSomeToArray } from './Utils';
-import { RequestApiConfig, RequestOptions, type QueryParams } from '@imengyu/imengyu-utils';
+import { assertNotNull, RequestApiConfig, RequestOptions, requireNotNull, type QueryParams } from '@imengyu/imengyu-utils';
 
 export class GetColumListParams extends DataModel<GetColumListParams> {
   
@@ -385,12 +385,12 @@ export class CommonContentApi extends AppServerRequestModule<DataModel> {
     type?: number,
     withself?: boolean,
   ) {
-    return (this.get('/content/category/getCategoryList', '获取分类列表', {
+    return (this.get<KeyValue[]>('/content/category/getCategoryList', '获取分类列表', {
       type,
       is_tree: false,
       withself,
     }))
-      .then(res => transformArrayDataModel<CategoryListItem>(CategoryListItem, res.data2, `获取分类列表`, true))
+      .then(res => transformArrayDataModel<CategoryListItem>(CategoryListItem, res.data!, `获取分类列表`, true))
       .catch(e => { throw e });
   }
   /**
@@ -404,7 +404,7 @@ export class CommonContentApi extends AppServerRequestModule<DataModel> {
     }))
       .then(res => transformArrayDataModel<CategoryListItem>(
         CategoryListItem, 
-        transformSomeToArray(res.data2), 
+        transformSomeToArray(res.data), 
         `获取分类列表`, 
         true
       ))
@@ -424,7 +424,7 @@ export class CommonContentApi extends AppServerRequestModule<DataModel> {
       pageSize,
       ...querys
     })
-      .then(res => transformArrayDataModel<T>(GetModelColumContentList, res.data2, `${this.debugName} 模型的主体栏目列表`, true))
+      .then(res => transformArrayDataModel<T>(GetModelColumContentList, res.data as any, `${this.debugName} 模型的主体栏目列表`, true))
       .catch(e => { throw e });
   }
   /**
@@ -434,15 +434,15 @@ export class CommonContentApi extends AppServerRequestModule<DataModel> {
    * @returns 
    */
   getColumList<T extends DataModel = GetColumContentList>(params: GetColumListParams, modelClassCreator: NewDataModel = GetColumContentList, querys?: QueryParams) {
-    return this.get('/content/content/getMainBodyColumnContentList', `${this.debugName} 主体栏目列表`, {
+    return this.get<{ list: T[], total: number }>('/content/content/getMainBodyColumnContentList', `${this.debugName} 主体栏目列表`, {
       main_body_id: this.mainBodyId,
       model_id: this.modelId,
       ...params.toServerSide(),
       ...querys,
     })
       .then(res => ({
-        list: transformArrayDataModel<T>(modelClassCreator, res.data2.list, `${this.debugName} 主体栏目列表`, true),
-        total: res.data2.total as number,
+        list: transformArrayDataModel<T>(modelClassCreator, requireNotNull(res.data).list, `${this.debugName} 主体栏目列表`, true),
+        total: requireNotNull(res.data).total as number,
       }))
       .catch(e => { throw e });
   }
@@ -455,7 +455,7 @@ export class CommonContentApi extends AppServerRequestModule<DataModel> {
    * @returns 
    */
   getContentList<T extends DataModel = GetContentListItem>(params: GetContentListParams, page: number, pageSize: number = 10, modelClassCreator: NewDataModel = GetContentListItem, querys?: QueryParams) {
-    return this.get('/content/content/getContentList', `${this.debugName} 模型内容列表`, {
+    return this.get<{ list: T[], total: number }>('/content/content/getContentList', `${this.debugName} 模型内容列表`, {
       ...params.toServerSide(),
       model_id: params.modelId || this.modelId,
       main_body_id: params.mainBodyId || this.mainBodyId,
@@ -467,13 +467,12 @@ export class CommonContentApi extends AppServerRequestModule<DataModel> {
       .then(res => {
         let resList : any = null;
         let resTotal : any = null;
-
-        if (res.data2?.list && Array.isArray(res.data2.list)) {
-          resList = res.data2.list;
-          resTotal = res.data2.total ?? resList.length;
+        if (res.data?.list && Array.isArray(res.data.list)) {
+          resList = res.data.list;
+          resTotal = res.data.total ?? resList.length;
         }
-        else if (res.data2 && Array.isArray(res.data2)) {
-          resList = res.data2;
+        else if (res.data && Array.isArray(res.data)) {
+          resList = res.data;
           resTotal = resList.length;
         } else
           resList = res.data;
@@ -518,7 +517,7 @@ export class CommonContentApi extends AppServerRequestModule<DataModel> {
       let req : RequestOptions = {
         method: 'POST',
         data: data,
-        header: {},
+        headers: {},
       }
       if (this.config.requestInceptor) {
         const { newReq, newUrl } = this.config.requestInceptor(url, req);
@@ -528,7 +527,7 @@ export class CommonContentApi extends AppServerRequestModule<DataModel> {
       uni.uploadFile({
         url: url,
         name,
-        header: req.header,
+        header: req.headers,
         filePath: file,
         formData: data,
         fileType,
@@ -551,7 +550,7 @@ export class CommonContentApi extends AppServerRequestModule<DataModel> {
    * @returns 
    */
   async feedBack(data: FeedBackItem) {
-    return (this.post('/user/feedback', data, '内容反馈'));
+    return (this.post('/user/feedback', '内容反馈', data.toServerSide()));
   }
 }
 

+ 14 - 13
src/api/RequestModules.ts

@@ -15,6 +15,7 @@ import {
   appendGetUrlParams, 
   appendPostParams,
   UniappImplementer,
+  type RequestApiInfoStruct,
 } from "@imengyu/imengyu-utils";
 import type { DataModel, KeyValue, NewDataModel } from "@imengyu/js-request-transform";
 import { StringUtils } from "@imengyu/imengyu-utils";
@@ -38,10 +39,10 @@ function matchNotReportMessage(str: string) {
 function requestInceptor(url: string, req: RequestOptions) {
   //获取app中的token,追加到头;
   const app = getApp();
-  if (StringUtils.isNullOrEmpty((req.header as KeyValue).token as string)) {
+  if (StringUtils.isNullOrEmpty((req.headers as KeyValue).token as string)) {
     const t = app?.globalData?.token ?? '';
-    req.header['token'] = t
-    req.header['__token__'] = t;
+    req.headers['token'] = t
+    req.headers['__token__'] = t;
   }
   const main_body_user_id = app?.globalData?.userId ?? '';
   const append_main_body_user_id = !(url.includes('content/content'));
@@ -61,7 +62,7 @@ function requestInceptor(url: string, req: RequestOptions) {
   return { newUrl: url, newReq: req };
 }
 //响应数据处理函数
-function responseDataHandler<T extends DataModel>(response: RequestResponse, req: RequestOptions, resultModelClass: NewDataModel|undefined, instance: RequestCoreInstance<T>, apiName: string | undefined): Promise<RequestApiResult<T>> {
+function responseDataHandler<T extends DataModel>(response: RequestResponse, req: RequestOptions, resultModelClass: NewDataModel | undefined, instance: RequestCoreInstance<T>, apiInfo: RequestApiInfoStruct): Promise<RequestApiResult<T>> {
   return new Promise<RequestApiResult<T>>((resolve, reject) => {
     const method = req.method || 'GET';
     response.json().then((json) => {
@@ -74,9 +75,8 @@ function responseDataHandler<T extends DataModel>(response: RequestResponse, req
             response.status,
             null,
             null,
-            req,
-            apiName,
-            response.url
+            response.headers,
+            apiInfo
           ));
           return;
         }
@@ -107,7 +107,9 @@ function responseDataHandler<T extends DataModel>(response: RequestResponse, req
           json?.code || response.status,
           message,
           data,
-          json
+          json,
+          response.headers,
+          apiInfo
         ));
       }
       else {
@@ -155,14 +157,13 @@ function responseDataHandler<T extends DataModel>(response: RequestResponse, req
           response.status,
           null,
           null,
-          req,
-          apiName,
-          response.url
+          response.headers,
+          apiInfo
         ));
       }
     }).catch((err) => {
       //错误统一处理
-      defaultResponseDataHandlerCatch(method, req, response, null, err, apiName, response.url, reject, instance);
+      defaultResponseDataHandlerCatch(method, req, response, null, err, apiInfo, response.url, reject, instance);
     });
   });
 }
@@ -184,7 +185,7 @@ export function reportError<T extends DataModel>(instance: RequestCoreInstance<T
         content: response.toString() +
           '\r\n请求接口:' + response.apiName +
           '\r\n请求地址:' + response.apiUrl +
-          '\r\n请求参数:' + JSON.stringify(response.rawRequest) +
+          '\r\n请求参数:' + JSON.stringify(response.apiRawReq) +
           '\r\n返回参数:' + JSON.stringify(response.rawData) +
           '\r\n状态码:' + response.code +
           '\r\n信息:' + response.errorCodeMessage,

+ 11 - 11
src/api/auth/UserApi.ts

@@ -80,24 +80,24 @@ export class UserApi extends AppServerRequestModule<DataModel> {
     raw_data: string,
     signature: string,
   }) {
-    return (await this.post('/content/main_body_user/third', {
+    return (await this.post('/content/main_body_user/third', '登录', {
       appid: AppCofig.appId,
       ...data,
-    }, '登录', undefined, LoginResult)).data as LoginResult;
+    }, undefined, LoginResult)).data as LoginResult;
   }
   async loginWithMobile(data?: {
     mobile: string,
     password: string,
   }) {
-    return (await this.post('/discover/User/login', {
+    return (await this.post('/discover/User/login', '登录', {
       appid: AppCofig.appId,
       ...data,
-    }, '登录', undefined, LoginResult)).data as LoginResult;
+    }, undefined, LoginResult)).data as LoginResult;
   }
   async getUserInfo(main_body_user_id: number) {
-    return (await this.post('/content/main_body_user/getMainBodyUser', {
+    return (await this.post('/content/main_body_user/getMainBodyUser', '获取用户信息', {
       main_body_user_id,
-    }, '获取用户信息', undefined, UserInfo)).data as UserInfo;
+    }, undefined, UserInfo)).data as UserInfo;
   }
   async updateUserInfo(data: {
     nickname?: string,
@@ -105,16 +105,16 @@ export class UserApi extends AppServerRequestModule<DataModel> {
     intro?: string,
     password?: string,
   }) {
-    return (await this.post('/content/main_body_user/editMainBodyUser', data, '更新用户信息'))
+    return (await this.post('/content/main_body_user/editMainBodyUser', '更新用户信息', data))
   }
   async refresh() {
-    return (await this.post('/content/main_body_user/refreshUser', {
-    }, '刷新用户', undefined, LoginResult)).data as LoginResult;
+    return (await this.post('/content/main_body_user/refreshUser', '刷新用户', {
+    }, undefined, LoginResult)).data as LoginResult;
   }
   async checkUserAuthed(id: number) {
-    return await this.post('/content/main_body_user/getMainBodyUser', {
+    return await this.post('/content/main_body_user/getMainBodyUser', '检查用户是否登录', {
       main_body_user_id: id,
-    }, '检查用户是否登录');
+    });
   }  
 }
 

+ 10 - 11
src/api/inhert/VillageApi.ts

@@ -142,38 +142,37 @@ export class VillageApi extends AppServerRequestModule<DataModel> {
     return (this.get('/village/village/getVillageList', '获取已认领村落', {
       village_volunteer_id: volunteerId,
     })) 
-      .then(res => transformArrayDataModel<VillageListItem>(VillageListItem, res.data2, `村落`, true))
+      .then(res => transformArrayDataModel<VillageListItem>(VillageListItem, res.data as any, `村落`, true))
       .catch(e => { throw e });
   }
   async getCanClaimVallageList() {
     return (this.get('/village/village/getClaimList', '可认领村落列表', {
       main_body_id: 2,
     })) 
-      .then(res => transformArrayDataModel<VillageListItem>(VillageListItem, transformSomeToArray(res.data2), `村落`, true))
+      .then(res => transformArrayDataModel<VillageListItem>(VillageListItem, transformSomeToArray(res.data), `可认领村落`, true))
       .catch(e => { throw e });
   }
   async claimVallage(data: any) {
-    return (this.post('/village/village/addVillageClaim', {
+    return (this.post('/village/village/addVillageClaim', '认领村落', {
       ...data
-    }, '认领村落')) ;
+    })) ;
   }
   async getVallageList(level?: number) {
     return (this.get('/village/village/getList', '村落列表', {
       history_level: level,
     })) 
-      .then(res => transformArrayDataModel<VillageListItem>(VillageListItem, transformSomeToArray(res.data2), `村落`, true))
+      .then(res => transformArrayDataModel<VillageListItem>(VillageListItem, transformSomeToArray(res.data), `村落`, true))
       .catch(e => { throw e });
   }
 
   async getVolunteerInfo() {
-    return (await this.post('/village/volunteer/getInfo', {
-    }, '获取志愿者信息', undefined, VolunteerInfo)).data as VolunteerInfo
+    return (await this.post('/village/volunteer/getInfo', '获取志愿者信息', {}, undefined, VolunteerInfo)).data as VolunteerInfo
   }
   async getVolunteerRanklist(category?: number) {
-    return (this.post('/village/volunteer/getRanklist', {
+    return (this.post('/village/volunteer/getRanklist', '志愿者排行榜', {
       category,
-    }, '志愿者排行榜')) 
-      .then(res => transformArrayDataModel<VolunteerRanklistItem>(VolunteerRanklistItem, res.data2, ``, true))
+    })) 
+      .then(res => transformArrayDataModel<VolunteerRanklistItem>(VolunteerRanklistItem, res.data as any, ``, true))
       .catch(e => { throw e });
   }
   
@@ -182,7 +181,7 @@ export class VillageApi extends AppServerRequestModule<DataModel> {
       village_id: id,
       platform: 2,
     })) 
-      .then(res => transformArrayDataModel<VillageMenuListItem>(VillageMenuListItem, res.data2, `村落菜单`, true))
+      .then(res => transformArrayDataModel<VillageMenuListItem>(VillageMenuListItem, res.data as any, `村落菜单`, true))
       .catch(e => { throw e });
   }
 

+ 9 - 9
src/api/inhert/VillageInfoApi.ts

@@ -152,7 +152,7 @@ export class VillageInfoApi extends AppServerRequestModule<DataModel> {
       is_tree: false,
       withself,
     }))
-      .then(res => transformArrayDataModel<CategoryListItem>(CategoryListItem, res.data2, `获取分类列表`, true))
+      .then(res => transformArrayDataModel<CategoryListItem>(CategoryListItem, res.data as any, `获取分类列表`, true))
       .catch(e => { throw e });
   }
   /**
@@ -166,7 +166,7 @@ export class VillageInfoApi extends AppServerRequestModule<DataModel> {
     }))
       .then(res => transformArrayDataModel<CategoryListItem>(
         CategoryListItem, 
-        transformSomeToArray(res.data2), 
+        transformSomeToArray(res.data), 
         `获取分类列表`, 
         true
       ))
@@ -181,12 +181,12 @@ export class VillageInfoApi extends AppServerRequestModule<DataModel> {
     id?: number,
     modelClassCreator: (new () => T) = CommonInfoModel as any
   ) {
-    return (await this.post(`/village/${sub}/getInfo`, {
+    return (await this.post(`/village/${sub}/getInfo`, '获取信息详情', {
       type: subId,
       village_id: villageId,
       village_volunteer_id: villageVolunteerId,
       id,
-    }, '获取信息详情', undefined, modelClassCreator)).data as T
+    }, undefined, modelClassCreator)).data as T
   }
   async getList<T extends DataModel = VillageListItem>(
     sub: string,
@@ -196,12 +196,12 @@ export class VillageInfoApi extends AppServerRequestModule<DataModel> {
     villageVolunteerId: number,
     modelClassCreator: (new () => T) = VillageListItem as any 
   ) {
-    return (this.post(`/village/${sub}/getList`, {
+    return (this.post(`/village/${sub}/getList`, '获取信息列表', {
       [subKey ? subKey : 'type']: subId,
       village_id: villageId,
       village_volunteer_id: villageVolunteerId,
-    }, '获取信息详情'))
-      .then(res => transformArrayDataModel<T>(modelClassCreator, res.data2, `获取分类列表`, true))
+    }))
+      .then(res => transformArrayDataModel<T>(modelClassCreator, res.data as any, `获取分类列表`, true))
       .catch(e => { throw e });
   }
   async updateInfo<T extends DataModel>(
@@ -210,12 +210,12 @@ export class VillageInfoApi extends AppServerRequestModule<DataModel> {
     villageVolunteerId: number,
     data: T,
   ) {
-    return (await this.post(`/village/${sub}/save`, {
+    return (await this.post(`/village/${sub}/save`, '更新信息详情', {
       sub,
       village_id: villageId,
       village_volunteer_id: villageVolunteerId,
       ...data.toServerSide(),
-    }, '更新信息详情'));
+    }));
   }
 }
 

+ 5 - 6
src/api/running/RunningApi.ts

@@ -1,6 +1,5 @@
 import { DataModel, transformArrayDataModel } from '@imengyu/js-request-transform';
 import { AppServerRequestModule } from '../RequestModules';
-import ApiCofig from '@/common/config/ApiCofig';
 
 export class ActivityListItem extends DataModel<ActivityListItem> {
   constructor() {
@@ -181,7 +180,7 @@ export class RunningApi extends AppServerRequestModule<DataModel> {
       keywords: searchText,
       type: 3,
     })) 
-      .then(res => transformArrayDataModel<ActivityListItem>(ActivityListItem, res.data2, `活动列表`, true))
+      .then(res => transformArrayDataModel<ActivityListItem>(ActivityListItem, res.data as any, `活动列表`, true))
       .catch(e => { throw e });
   }
   async getActivityDetail(id: number) {
@@ -195,7 +194,7 @@ export class RunningApi extends AppServerRequestModule<DataModel> {
       keywords: searchText,
       type: 3,
     })) 
-      .then(res => transformArrayDataModel<GuideListItem>(GuideListItem, res.data2, `宣讲员列表`, true))
+      .then(res => transformArrayDataModel<GuideListItem>(GuideListItem, res.data as any, `宣讲员列表`, true))
       .catch(e => { throw e });
   }
 
@@ -203,7 +202,7 @@ export class RunningApi extends AppServerRequestModule<DataModel> {
     return (this.get('/activity/schedule/lists', '获取活动日程列表', {
       activity_id,
     })) 
-      .then(res => transformArrayDataModel<ActivityListDetail>(ActivityListDetail, res.data2, `活动日程列表`, true))
+      .then(res => transformArrayDataModel<ActivityListDetail>(ActivityListDetail, res.data as any, `活动日程列表`, true))
       .catch(e => { throw e });
   }
 
@@ -211,7 +210,7 @@ export class RunningApi extends AppServerRequestModule<DataModel> {
     return (this.get('/activity/signup_params/lists', '获取活动报名参数列表', {
       activity_id,
     })) 
-      .then(res => transformArrayDataModel<SignupParamsItem>(SignupParamsItem, res.data2, `活动报名参数列表`, true))
+      .then(res => transformArrayDataModel<SignupParamsItem>(SignupParamsItem, res.data as any, `活动报名参数列表`, true))
       .catch(e => { throw e });
   }
 
@@ -227,7 +226,7 @@ export class RunningApi extends AppServerRequestModule<DataModel> {
     mobile: string,
     id_card: string,
   }) {
-    await this.post('/volunteer/volunteer/getXuanjiangDetails', data, '活动报名');
+    await this.post('/volunteer/volunteer/getXuanjiangDetails', '活动报名', data);
   }
 }
 

+ 2 - 2
src/api/user/ContributeApi.ts

@@ -29,11 +29,11 @@ export class ContributeApi extends AppServerRequestModule<DataModel> {
     return (this.get('/content/main_body_user/getUserContribute', '用户投稿列表', {
       page, pageSize,
     })) 
-      .then(res => transformArrayDataModel<GetContentListItem>(GetContentListItem, res.data2, `用户投稿列表`, true))
+      .then(res => transformArrayDataModel<GetContentListItem>(GetContentListItem, res.data as any, `用户投稿列表`, true))
       .catch(e => { throw e });
   }
   async contribute(data: ContributeItem) {
-    return (this.post('/content/content/contribute', data, '投稿'));
+    return (this.post('/content/content/contribute', '投稿', data));
   }
 }
 

+ 10 - 7
src/api/user/UserApi.ts

@@ -9,23 +9,26 @@ export class UserApi extends AppServerRequestModule<DataModel> {
   }
 
   async like(id: number) {
-    return (this.post('/content/main_body_user/like', { content_id: id }, '点赞'));
+    return (this.post('/content/main_body_user/like', '点赞', { content_id: id }));
   }
   async unlike(id: number) {
-    return (this.post('/content/main_body_user/unLike', { content_ids: id }, '取消点赞'));
+    return (this.post('/content/main_body_user/unLike', '取消点赞', { content_ids: id }));
   }
   async collect(id: number) {
-    return (this.post('/content/main_body_user/collect', { content_id: id }, '收藏'));
+    return (this.post('/content/main_body_user/collect', '收藏', { content_id: id }));
   }
   async uncollect(id: number) {
-    return (this.post('/content/main_body_user/unCollect', { content_ids: id }, '取消收藏'));
+    return (this.post('/content/main_body_user/unCollect', '取消收藏', { content_ids: id }));   
   }
   async getUserCollect(page: number, pageSize: number) {
-    return (this.post('/content/main_body_user/getUserCollect', { page, pageSize }, '获取用户收藏')) 
+    return (this.post<{
+      data: GetContentDetailItem[],
+      total: number,
+    }>('/content/main_body_user/getUserCollect', '获取用户收藏', { page, pageSize })) 
       .then(res => {
         return { 
-          list: transformArrayDataModel(GetContentDetailItem, res.data2?.data ?? [], `获取用户收藏列表`, true),
-          total: res.data2?.total as number ?? 0,
+          list: transformArrayDataModel(GetContentDetailItem, res.data?.data ?? [], `获取用户收藏列表`, true),
+          total: res.data?.total as number ?? 0,
         }
       })
       .catch(e => { throw e });

+ 4 - 2
src/components/dynamic/DynamicFormControl.vue

@@ -324,10 +324,12 @@ const props = defineProps({
     default: false
   },
   model: {
-    type: null
+    type: null,
+    default: null
   },
   parentModel: {
-    type: null
+    type: null,
+    default: null
   },
   rawModel: {
     type: Object as PropType<Record<string, unknown>>,

+ 4 - 1
src/components/dynamic/wrappers/CheckBoxList.vue

@@ -86,6 +86,7 @@ export interface CheckBoxListItem {
   disable?: boolean;
 }
 export interface CheckBoxListProps {
+  modelValue?: any[],
   multiple?: boolean,
   disabled?: boolean,
   useCell?: boolean,
@@ -96,7 +97,7 @@ export interface CheckBoxListProps {
 }
 
 const props = withDefaults(defineProps<CheckBoxListProps>(), {
-  modelValue: () => [],
+  modelValue: () => ([]),
   loadData: () => Promise.resolve([]),
   disabled: false,
   multiple: false,
@@ -123,6 +124,8 @@ const handleLoadData = () => {
   }).catch((e) => {
     loadError.value = e.message || '加载失败';
     loadStatus.value = 'error';
+    console.error(e);
+    
   });
 }
 const reload = () => {

+ 4 - 3
src/components/feedback/Alert.vue

@@ -1,5 +1,6 @@
 <template>
-  <FlexRow 
+  <Touchable 
+    direction="row"
     :innerClass="['nana-alert', `nana-alert-${type}`]"
     :innerStyle="{
       ...themeStyles.container.value,
@@ -92,7 +93,7 @@
         @click.stop="handleClose"
       />
     </slot>
-  </FlexRow>
+  </Touchable>
 </template>
 
 <script setup lang="ts">
@@ -102,8 +103,8 @@ import { DynamicSize, DynamicColor, selectStyleType, DynamicVar } from '../theme
 import Text from '../basic/Text.vue';
 import Icon from '../basic/Icon.vue';
 import IconButton from '../basic/IconButton.vue';
-import FlexRow from '../layout/FlexRow.vue';
 import FlexCol from '../layout/FlexCol.vue';
+import Touchable from './Touchable.vue';
 
 export type AlertType = 'primary' | 'success' | 'warning' | 'danger' | 'error' | 'info' | 'default';
 export interface AlertProps {

+ 33 - 33
src/pages/article/correct.vue

@@ -1,39 +1,44 @@
 <template>
-  <FlexCol backgroundColor="#f6f2e7">
-    <StatusBarSpace backgroundColor="transparent" />
-    <NavBar leftButton="back" />
-    <FlexCol :padding="20">
-      <FlexCol align="center" :margin="[0,0,20,0]">
-        <H3>内容反馈</H3>
-        <Text fontConfig="subText">请填写您对文章的反馈,我们会尽快处理。</Text>
+  <CommonRoot>
+    <FlexCol backgroundColor="#f6f2e7">
+      <StatusBarSpace backgroundColor="transparent" />
+      <NavBar leftButton="back" />
+      <FlexCol :padding="20">
+        <FlexCol align="center" :margin="[0,0,20,0]">
+          <H3>内容反馈</H3>
+          <Text fontConfig="subText">请填写您对文章的反馈,我们会尽快处理。</Text>
+        </FlexCol>
+        <ProvideVar :vars="{
+          DynamicFormGroupBorderRadius: 20,
+          DynamicFormGroupMarginBottom: 20,
+        }">
+          <DynamicForm
+            ref="formRef"
+            :model="formModel"
+            :options="formDefine"
+          />
+        </ProvideVar>
+        <Button type="primary" @click="submit">提交</Button>
+        <XBarSpace />
       </FlexCol>
-      <ProvideVar :vars="{
-        DynamicFormGroupBorderRadius: 20,
-        DynamicFormGroupMarginBottom: 20,
-      }">
-        <DynamicForm
-          ref="formRef"
-          :model="formModel"
-          :options="formDefine"
-        />
-      </ProvideVar>
-      <Button type="primary" @click="submit">提交</Button>
-      <XBarSpace />
     </FlexCol>
-  </FlexCol>
+  </CommonRoot>
 </template>
 
 <script setup lang="ts">
 import { ref } from 'vue';
+import { useLoadQuerys } from '@/common/composeabe/LoadQuerys';
 import { useImageSimpleUploadCo } from '@/common/components/upload/ImageUploadCo';
 import { showError } from '@/common/composeabe/ErrorDisplay';
-import { useLoadQuerys } from '@/common/composeabe/LoadQuerys';
+import { back } from '@/components/utils/PageAction';
+import { waitTimeOut } from '@imengyu/imengyu-utils';
 import Button from '@/components/basic/Button.vue';
 import Text from '@/components/basic/Text.vue';
 import DynamicForm from '@/components/dynamic/DynamicForm.vue';
 import FlexCol from '@/components/layout/FlexCol.vue';
 import XBarSpace from '@/components/layout/space/XBarSpace.vue';
 import H3 from '@/components/typography/H3.vue';
+import CommonRoot from '@/components/dialog/CommonRoot.vue';
 import CommonContent, { FeedBackItem } from '@/api/CommonContent';
 import type { IDynamicFormOptions, IDynamicFormRef } from '@/components/dynamic';
 import type { CheckBoxListProps } from '@/components/dynamic/wrappers/CheckBoxList.vue';
@@ -43,7 +48,7 @@ import type { UploaderFieldProps } from '@/components/form/UploaderField.vue';
 import ProvideVar from '@/components/theme/ProvideVar.vue';
 import NavBar from '@/components/nav/NavBar.vue';
 import StatusBarSpace from '@/components/layout/space/StatusBarSpace.vue';
-import { back } from '@/components/utils/PageAction';
+import { alert, toast } from '@/components/utils/DialogAction';
 
 const loading = ref(false);
 
@@ -67,6 +72,7 @@ const formDefine : IDynamicFormOptions = {
           defaultValue: '',
           additionalProps: {
             loadData: async () => {
+              await waitTimeOut(200);
               return (await CommonContent.getCategoryList(335)).map((item) => ({
                 value: item.id,
                 text: item.title,
@@ -152,10 +158,7 @@ async function submit() {
   try {
     await formRef.value.validate();
   } catch {
-    uni.showToast({
-      title: '有必填项未填写,请检查',
-      icon: 'none',
-    });
+    toast('有必填项未填写,请检查');
     return;
   }
   try { 
@@ -167,14 +170,11 @@ async function submit() {
     formModel.value.mainBodyColumnId = querys.value.mainBodyColumnId;
     formModel.value.mainBodyColumnName = querys.value.mainBodyColumnName;
     await CommonContent.feedBack(formModel.value as FeedBackItem);
-    uni.showModal({
+    await alert({
       title: '提交成功',
-      content: '感谢您的反馈,我们将尽快审核并通知您结果。',
-      success: () => {
-        back();
-      }
-    });
-
+      content: '感谢您的反馈,我们将尽快审核并通知您结果。'
+    }); 
+    back();
   } catch (e) {
     showError(e);
   } finally {