瀏覽代碼

feat: update: 更新项目结构 code==200

叶静 1 月之前
父節點
當前提交
5c833f9ecb
共有 93 個文件被更改,包括 997 次插入770 次删除
  1. 1 1
      .env.development
  2. 4 4
      src/app/admin/store/account.js
  3. 2 7
      src/app/admin/store/app.js
  4. 3 3
      src/app/admin/views/auth/access/components/sa-access.vue
  5. 4 4
      src/app/admin/views/auth/access/edit.vue
  6. 5 5
      src/app/admin/views/auth/admin/edit.vue
  7. 7 4
      src/app/admin/views/auth/admin/index.vue
  8. 2 2
      src/app/admin/views/auth/role/edit.vue
  9. 4 4
      src/app/admin/views/auth/role/index.vue
  10. 4 4
      src/app/shop/admin/config/componenets/payConfig/edit.vue
  11. 4 4
      src/app/shop/admin/config/componenets/payConfig/index.vue
  12. 2 2
      src/app/shop/admin/config/componenets/platform/edit.vue
  13. 4 4
      src/app/shop/admin/content/banner/edit.vue
  14. 4 4
      src/app/shop/admin/content/banner/index.vue
  15. 4 4
      src/app/shop/admin/content/notification/edit.vue
  16. 4 4
      src/app/shop/admin/content/notification/index.vue
  17. 4 4
      src/app/shop/admin/content/sms/edit.vue
  18. 4 4
      src/app/shop/admin/content/sms/index.vue
  19. 2 2
      src/app/shop/admin/dashboard/components/chart/index.vue
  20. 2 2
      src/app/shop/admin/dashboard/components/ranking/index.vue
  21. 2 2
      src/app/shop/admin/dashboard/components/total/index.vue
  22. 1 1
      src/app/shop/admin/data/express/express.js
  23. 6 6
      src/app/shop/admin/data/report/index.vue
  24. 1 1
      src/app/shop/admin/finance/commission/detail.vue
  25. 4 4
      src/app/shop/admin/finance/commission/edit.vue
  26. 4 4
      src/app/shop/admin/finance/commission/index.vue
  27. 1 1
      src/app/shop/admin/finance/recharge/detail.vue
  28. 4 4
      src/app/shop/admin/finance/recharge/edit.vue
  29. 4 4
      src/app/shop/admin/finance/recharge/index.vue
  30. 1 1
      src/app/shop/admin/finance/withdraw/detail.vue
  31. 2 2
      src/app/shop/admin/finance/withdraw/edit.vue
  32. 4 4
      src/app/shop/admin/finance/withdraw/index.vue
  33. 9 10
      src/app/shop/admin/goods/category/edit.vue
  34. 22 20
      src/app/shop/admin/goods/category/index.vue
  35. 2 2
      src/app/shop/admin/goods/category/select.vue
  36. 1 1
      src/app/shop/admin/goods/goods.service.js
  37. 3 3
      src/app/shop/admin/goods/goods/edit.vue
  38. 3 3
      src/app/shop/admin/goods/goods/index.vue
  39. 4 4
      src/app/shop/admin/goods/goods/select.vue
  40. 2 2
      src/app/shop/admin/marketing/group/edit.vue
  41. 5 5
      src/app/shop/admin/marketing/group/index.vue
  42. 2 2
      src/app/shop/admin/order/aftersale/addLog.vue
  43. 2 2
      src/app/shop/admin/order/aftersale/detail.vue
  44. 4 4
      src/app/shop/admin/order/aftersale/index.vue
  45. 2 2
      src/app/shop/admin/order/aftersale/refund.vue
  46. 2 2
      src/app/shop/admin/order/aftersale/refuse.vue
  47. 2 2
      src/app/shop/admin/order/invoice/edit.vue
  48. 8 8
      src/app/shop/admin/order/invoice/index.vue
  49. 3 3
      src/app/shop/admin/order/order/batchDispatch.vue
  50. 10 10
      src/app/shop/admin/order/order/detail.vue
  51. 6 6
      src/app/shop/admin/order/order/dispatch.vue
  52. 2 2
      src/app/shop/admin/order/order/fee.vue
  53. 3 3
      src/app/shop/admin/order/order/index.vue
  54. 9 9
      src/app/shop/admin/order/order/loopDispatch.vue
  55. 2 2
      src/app/shop/admin/order/order/manualOrder.vue
  56. 4 4
      src/app/shop/admin/order/order/refund.vue
  57. 4 4
      src/app/shop/admin/order/setting/edit.vue
  58. 4 4
      src/app/shop/admin/order/setting/index.vue
  59. 26 26
      src/app/shop/admin/trade/order/index.vue
  60. 4 4
      src/app/shop/admin/user/level/edit.vue
  61. 4 4
      src/app/shop/admin/user/level/index.vue
  62. 4 4
      src/app/shop/admin/user/list/edit.vue
  63. 4 4
      src/app/shop/admin/user/list/index.vue
  64. 4 4
      src/app/shop/admin/user/tag/edit.vue
  65. 4 4
      src/app/shop/admin/user/tag/index.vue
  66. 1 1
      src/sheep/components/sa-file/components/file-upload.vue
  67. 6 6
      src/sheep/components/sa-file/sa-filemanager.vue
  68. 3 3
      src/sheep/components/sa-table/sa-pagination/index.global.vue
  69. 1 1
      src/sheep/components/sa-table/sa-pagination/usePagination.js
  70. 1 1
      src/sheep/components/sa-uploader/sa-upload-image.global.vue
  71. 7 7
      src/sheep/components/sa-uploader/uploader-action.vue
  72. 2 2
      src/sheep/components/sa-uploader/uploader-cert.vue
  73. 3 3
      src/sheep/local-data/admin.js
  74. 50 24
      src/sheep/mock/admin.js
  75. 2 2
      src/sheep/mock/category.js
  76. 14 18
      src/sheep/mock/commission.js
  77. 24 0
      src/sheep/mock/data/profile.js
  78. 115 0
      src/sheep/mock/handlers/admin.js
  79. 280 258
      src/sheep/mock/handlers/category.js
  80. 36 27
      src/sheep/mock/handlers/commission.js
  81. 1 1
      src/sheep/mock/handlers/goods.js
  82. 2 1
      src/sheep/mock/handlers/index.js
  83. 28 31
      src/sheep/mock/handlers/order.js
  84. 20 27
      src/sheep/mock/handlers/role.js
  85. 7 7
      src/sheep/mock/handlers/user.js
  86. 26 11
      src/sheep/mock/recharge.js
  87. 39 24
      src/sheep/mock/role.js
  88. 2 2
      src/sheep/mock/utils.js
  89. 23 24
      src/sheep/mock/withdraw.js
  90. 20 11
      src/sheep/request/crud.js
  91. 1 1
      src/sheep/request/index.js
  92. 2 2
      src/sheep/views/login/index.vue
  93. 7 0
      vite.config.js

+ 1 - 1
.env.development

@@ -4,7 +4,7 @@ SHEEP_VERSION = v1.4.0
 SHEEP_BASE_URL = /
 
 # 开发环境接口域名
- SHEEP_DEV_BASE_URL = https://shop.trust-will.com
+ SHEEP_DEV_BASE_URL = /mall
 
 # 开发模式端口号
 SHEEP_DEV_PORT = 3001

+ 4 - 4
src/app/admin/store/account.js

@@ -28,7 +28,7 @@ const account = defineStore({
       const response = await admin.account.login(formData);
 
       // 登录成功后设置 token
-      if (response.error === 0 && response.data && response.data.token) {
+      if (response.code == '200' && response.data && response.data.token) {
         this.setToken(response.data.token);
 
         // 如果返回了用户信息,也设置到 store 中
@@ -59,7 +59,7 @@ const account = defineStore({
      * @description 获取用户信息
      */
     async getInfo() {
-      const { error, data } = await admin.account.info();
+      const { code, data } = await admin.account.info();
 
       let lastLogin = $storage.get('lastLogin');
       if (lastLogin) {
@@ -78,8 +78,8 @@ const account = defineStore({
      * @description 获取用户菜单权限规则
      */
     async getRules() {
-      const { error, data } = await localAdmin.account.rules();
-      if (error === 0) {
+      const { code, data } = await localAdmin.account.rules();
+      if (code == 200) {
         this.menuRules = data.menu; // 设置菜单规则
         this.pageRules = data.permission; // 设置页面权限
         this.apiRules = data.permission; // 设置功能权限

+ 2 - 7
src/app/admin/store/app.js

@@ -51,14 +51,9 @@ const app = defineStore({
      * @description 初始化信息
      */
     async init() {
-      const { error, data } = await admin.init();
-      // 安装流程
-      if (error === 1001) {
-        window.location.replace(location.pathname + '#/install');
-        return;
-      }
+      const { code, data } = await admin.init();
       // 初始化信息
-      if (error === 0) {
+      if (code == 200) {
         this.info = data;
         checkUpdate(this.info.sheep_version);
         if ($store('account').isLogin) {

+ 3 - 3
src/app/admin/views/auth/access/components/sa-access.vue

@@ -174,7 +174,7 @@
 
     try {
       // 使用本地menuRulesData数据
-      if (menuRulesData.error === 0) {
+      if (menuRulesData.code == '200') {
         // 根据type类型处理数据
         if (props.type === 'select') {
           // 权限选择模式,使用完整的菜单数据
@@ -436,8 +436,8 @@
   }
 
   async function onDelete(id, index, level) {
-    const { error } = await admin.auth.access.delete(id);
-    if (error == 0) {
+    const { code } = await admin.auth.access.delete(id);
+    if (code == '200') {
       state.show[level].data.splice(index, 1);
       for (let key in state.show) {
         if (key > level) {

+ 4 - 4
src/app/admin/views/auth/access/edit.vue

@@ -199,8 +199,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await admin.auth.access.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await admin.auth.access.detail(id);
+    code == '200' && (form.model = data);
 
     loading.value = false;
   }
@@ -230,11 +230,11 @@
       let submitForm = cloneDeep(form.model);
       if (!submitForm.parent_id) submitForm.parent_id = 0;
       submitForm.type == 'page' ? (submitForm.api = doUnique(submitForm.api || [], 'name')) : '';
-      const { error, data } =
+      const { code, data } =
         props.modal.params.type == 'add' || props.modal.params.type == 'append'
           ? await admin.auth.access.add(submitForm)
           : await admin.auth.access.edit(props.modal.params.id, submitForm);
-      error == 0 && emit('modalCallBack', { event: 'confirm', data });
+      code == '200' && emit('modalCallBack', { event: 'confirm', data });
     });
   }
 

+ 5 - 5
src/app/admin/views/auth/admin/edit.vue

@@ -91,7 +91,7 @@
     loading.value = true;
     try {
       const result = adminMockData.getDetail(id);
-      if (result.error === 0) {
+      if (result.code === '200') {
         form.model = { ...result.data };
       }
     } catch (error) {
@@ -108,9 +108,9 @@
   async function getRoleSelect() {
     try {
       const result = roleMockData.getList();
-      if (result.error === 0) {
-        // 处理分页数据格式
-        const roleList = result.data.data || result.data || [];
+      if (result.code === '200') {
+        // 处理新的数据格式
+        const roleList = result.data.list || [];
         role.select = roleList.map((item) => ({
           id: item.id,
           name: item.name,
@@ -141,7 +141,7 @@
             ? adminMockData.add(submitForm)
             : adminMockData.edit(props.modal.params.id, submitForm);
 
-        if (result.error === 0) {
+        if (result.code === '200') {
           emit('modalCallBack', { event: 'confirm' });
         }
       } catch (error) {

+ 7 - 4
src/app/admin/views/auth/admin/index.vue

@@ -94,9 +94,12 @@
     loading.value = true;
     try {
       const result = adminMockData.getList();
-      if (result.error === 0) {
-        // 确保table.data是数组格式
-        table.data = result.data.data || result.data || [];
+      if (result.code === '200') {
+        // 适配新的数据格式
+        table.data = result.data.list || [];
+        pageData.total = result.data.total || 0;
+        pageData.page = result.data.pageNum || 1;
+        pageData.size = result.data.pageSize || 10;
       }
     } catch (error) {
       console.error('获取人员列表失败:', error);
@@ -139,7 +142,7 @@
   async function deleteApi(id) {
     try {
       const result = adminMockData.delete(id);
-      if (result.error === 0) {
+      if (result.code == '200') {
         getData();
       }
     } catch (error) {

+ 2 - 2
src/app/admin/views/auth/role/edit.vue

@@ -67,7 +67,7 @@
   async function getDetail(id) {
     try {
       const result = roleMockData.getDetail(id);
-      if (result.error === 0) {
+      if (result.code == '200') {
         form.model = { ...result.data };
 
         // 确保rules是数组格式,用于sa-access组件
@@ -118,7 +118,7 @@
             ? roleMockData.create(submitForm)
             : roleMockData.update(props.modal.params.id, submitForm);
 
-        if (result.error === 0) {
+        if (result.code == '200') {
           ElMessage.success(props.modal.params.type == 'add' ? '创建成功' : '更新成功');
           emit('modalCallBack', { event: 'confirm' });
         } else {

+ 4 - 4
src/app/admin/views/auth/role/index.vue

@@ -110,17 +110,17 @@
     try {
       let params = {
         page: pageData.page,
-        list_rows: pageData.list_rows,
+        size: pageData.size,
         order: table.order,
         sort: table.sort,
         ...searchParams,
       };
 
       const result = roleMockData.getList(params);
-      if (result.error === 0) {
+      if (result.code == '200') {
         table.data = result.data.data;
         pageData.page = result.data.current_page;
-        pageData.list_rows = result.data.per_page;
+        pageData.size = result.data.per_page;
         pageData.total = result.data.total;
       }
     } catch (error) {
@@ -172,7 +172,7 @@
   async function deleteRow(row) {
     try {
       const result = roleMockData.delete(row.id);
-      if (result.error === 0) {
+      if (result.code == '200') {
         ElMessage.success('删除成功');
         getData();
       } else {

+ 4 - 4
src/app/shop/admin/config/componenets/payConfig/edit.vue

@@ -242,8 +242,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await api.detail(id);
+    code == '200' && (form.model = data);
     loading.value = false;
   }
   // 表单关闭时提交
@@ -252,11 +252,11 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       let submitForm = cloneDeep(form.model);
-      const { error } =
+      const { code } =
         props.modal.params.type == 'add'
           ? await api.add(submitForm)
           : await api.edit(props.modal.params.id, submitForm);
-      if (error == 0) {
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 4 - 4
src/app/shop/admin/config/componenets/payConfig/index.vue

@@ -124,16 +124,16 @@
   // 获取
   async function getData() {
     loading.value = true;
-    const { error, data } = await api.list({
+    const { code, data } = await api.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       order: table.order,
       sort: table.sort,
     });
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.data;
       pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+      pageData.size = data.per_page;
       pageData.total = data.total;
     }
     loading.value = false;

+ 2 - 2
src/app/shop/admin/config/componenets/platform/edit.vue

@@ -306,8 +306,8 @@
     if (!validator) return;
     await validator.validate();
     let submitForm = cloneDeep(form.model);
-    const { error } = await api.platform(props.modal.params.platform, submitForm);
-    if (error == 0) {
+    const { code } = await api.platform(props.modal.params.platform, submitForm);
+    if (code == '200') {
       emit('modalCallBack', { event: 'confirm' });
     }
   }

+ 4 - 4
src/app/shop/admin/content/banner/edit.vue

@@ -99,8 +99,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await api.detail(id);
+    code == '200' && (form.model = data);
     loading.value = false;
   }
   // 表单关闭时提交
@@ -108,11 +108,11 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       let submitForm = cloneDeep(form.model);
-      const { error } =
+      const { code } =
         props.modal.params.type == 'add'
           ? await api.add(submitForm)
           : await api.edit(props.modal.params.id, submitForm);
-      if (error == 0) {
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 4 - 4
src/app/shop/admin/content/banner/index.vue

@@ -153,18 +153,18 @@
   async function getData(page, searchParams = {}) {
     if (page) pageData.page = page;
     loading.value = true;
-    const { error, data } = await api.list({
+    const { code, data } = await api.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       order: table.order,
       ...searchParams,
       sort: table.sort,
     });
     console.log('API 响应:', error, data);
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.data;
       pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+      pageData.size = data.per_page;
       pageData.total = data.total;
     }
     loading.value = false;

+ 4 - 4
src/app/shop/admin/content/notification/edit.vue

@@ -85,8 +85,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await api.detail(id);
+    code == '200' && (form.model = data);
     loading.value = false;
   }
   // 表单关闭时提交
@@ -94,11 +94,11 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       let submitForm = cloneDeep(form.model);
-      const { error } =
+      const { code } =
         props.modal.params.type == 'add'
           ? await api.add(submitForm)
           : await api.edit(props.modal.params.id, submitForm);
-      if (error == 0) {
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 4 - 4
src/app/shop/admin/content/notification/index.vue

@@ -140,18 +140,18 @@
   async function getData(page, searchParams = {}) {
     if (page) pageData.page = page;
     loading.value = true;
-    const { error, data } = await api.list({
+    const { code, data } = await api.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       order: table.order,
       ...searchParams,
       sort: table.sort,
     });
     console.log('API 响应:', error, data);
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.data;
       pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+      pageData.size = data.per_page;
       pageData.total = data.total;
     }
     loading.value = false;

+ 4 - 4
src/app/shop/admin/content/sms/edit.vue

@@ -86,8 +86,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await api.detail(id);
+    code == '200' && (form.model = data);
     loading.value = false;
   }
   // 表单关闭时提交
@@ -95,11 +95,11 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       let submitForm = cloneDeep(form.model);
-      const { error } =
+      const { code } =
         props.modal.params.type == 'add'
           ? await api.add(submitForm)
           : await api.edit(props.modal.params.id, submitForm);
-      if (error == 0) {
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 4 - 4
src/app/shop/admin/content/sms/index.vue

@@ -142,18 +142,18 @@
   async function getData(page, searchParams = {}) {
     if (page) pageData.page = page;
     loading.value = true;
-    const { error, data } = await api.list({
+    const { code, data } = await api.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       order: table.order,
       ...searchParams,
       sort: table.sort,
     });
     console.log('API 响应:', error, data);
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.data;
       pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+      pageData.size = data.per_page;
       pageData.total = data.total;
     }
     loading.value = false;

+ 2 - 2
src/app/shop/admin/dashboard/components/chart/index.vue

@@ -155,10 +155,10 @@
   });
 
   async function getChart() {
-    const { error, data } = await api.chart({
+    const { code, data } = await api.chart({
       date: chart.dateTime.join(' - '),
     });
-    if (error === 0) {
+    if (code == 200) {
       for (let key in statistics) {
         statistics[key].num = data[`${key}Num`];
       }

+ 2 - 2
src/app/shop/admin/dashboard/components/ranking/index.vue

@@ -21,8 +21,8 @@
   });
 
   async function getRanking() {
-    const { error, data } = await api.ranking();
-    if (error === 0) {
+    const { code, data } = await api.ranking();
+    if (code == 200) {
       state.goods = data.goods;
       state.hotSearch = data.hot_search;
     }

+ 2 - 2
src/app/shop/admin/dashboard/components/total/index.vue

@@ -60,8 +60,8 @@
   });
 
   async function getTotal() {
-    const { error, data } = await api.total();
-    if (error === 0) {
+    const { code, data } = await api.total();
+    if (code == 200) {
       state.total.agent.data = data.agent_data;
       // 分销 -PRO-
       // if (state.total?.agent) {

+ 1 - 1
src/app/shop/admin/data/express/express.js

@@ -33,7 +33,7 @@ export default function useExpress() {
     loading: false,
     pageData: {
       page: 1,
-      list_rows: 10,
+      size: 10,
       total: expressList.length,
     },
   });

+ 6 - 6
src/app/shop/admin/data/report/index.vue

@@ -156,8 +156,8 @@
 
   // 获取统计数据
   async function getStatsData() {
-    const { error, data } = await api.report.getStats();
-    if (error === 0) {
+    const { code, data } = await api.report.getStats();
+    if (code == 200) {
       Object.assign(statsData, data);
     }
   }
@@ -166,18 +166,18 @@
   async function getData(page, searchParams = {}) {
     if (page) pageData.page = page;
     loading.value = true;
-    const { error, data } = await api.report.list({
+    const { code, data } = await api.report.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       order: table.order,
       ...searchParams,
       sort: table.sort,
     });
     console.log('API 响应:', error, data);
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.data;
       pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+      pageData.size = data.per_page;
       pageData.total = data.total;
     }
     loading.value = false;

+ 1 - 1
src/app/shop/admin/finance/commission/detail.vue

@@ -173,7 +173,7 @@
     loading.value = true;
     try {
       const result = commissionMockData.getDetail(props.modal.params.id);
-      if (result.error === 0) {
+      if (result.code == '200') {
         commissionDetail.value = result.data;
       }
     } catch (error) {

+ 4 - 4
src/app/shop/admin/finance/commission/edit.vue

@@ -117,8 +117,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.commission.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await api.commission.detail(id);
+    code == '200' && (form.model = data);
     loading.value = false;
   }
   // 表单关闭时提交
@@ -126,11 +126,11 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       let submitForm = cloneDeep(form.model);
-      const { error } =
+      const { code } =
         props.modal.params.type == 'add'
           ? await api.commission.add(submitForm)
           : await api.commission.edit(props.modal.params.id, submitForm);
-      if (error == 0) {
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 4 - 4
src/app/shop/admin/finance/commission/index.vue

@@ -204,7 +204,7 @@
       // 处理时间范围参数
       let params = {
         page: pageData.page,
-        list_rows: pageData.list_rows,
+        size: pageData.size,
         order: table.order,
         sort: table.sort,
         ...searchParams,
@@ -218,10 +218,10 @@
       }
 
       const result = commissionMockData.getList(params);
-      if (result.error === 0) {
+      if (result.code == '200') {
         table.data = result.data.data;
         pageData.page = result.data.current_page;
-        pageData.list_rows = result.data.per_page;
+        pageData.size = result.data.per_page;
         pageData.total = result.data.total;
       }
     } catch (error) {
@@ -294,7 +294,7 @@
   function exportRecords() {
     try {
       const result = commissionMockData.export({});
-      if (result.error === 0) {
+      if (result.code == '200') {
         ElMessage.success('导出成功');
         // 这里可以触发文件下载
         console.log('导出文件:', result.data);

+ 1 - 1
src/app/shop/admin/finance/recharge/detail.vue

@@ -175,7 +175,7 @@
     loading.value = true;
     try {
       const result = rechargeMockData.getDetail(props.modal.params.id);
-      if (result.error === 0) {
+      if (result.code == '200') {
         rechargeDetail.value = result.data;
       }
     } catch (error) {

+ 4 - 4
src/app/shop/admin/finance/recharge/edit.vue

@@ -98,8 +98,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.recharge.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await api.recharge.detail(id);
+    code == '200' && (form.model = data);
     loading.value = false;
   }
   // 表单关闭时提交
@@ -107,11 +107,11 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       let submitForm = cloneDeep(form.model);
-      const { error } =
+      const { code } =
         props.modal.params.type == 'add'
           ? await api.recharge.add(submitForm)
           : await api.recharge.edit(props.modal.params.id, submitForm);
-      if (error == 0) {
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 4 - 4
src/app/shop/admin/finance/recharge/index.vue

@@ -193,7 +193,7 @@
       // 处理时间范围参数
       let params = {
         page: pageData.page,
-        list_rows: pageData.list_rows,
+        size: pageData.size,
         order: table.order,
         sort: table.sort,
         ...searchParams,
@@ -207,10 +207,10 @@
       }
 
       const result = rechargeMockData.getList(params);
-      if (result.error === 0) {
+      if (result.code == '200') {
         table.data = result.data.data;
         pageData.page = result.data.current_page;
-        pageData.list_rows = result.data.per_page;
+        pageData.size = result.data.per_page;
         pageData.total = result.data.total;
       }
     } catch (error) {
@@ -265,7 +265,7 @@
   function exportRecords() {
     try {
       const result = rechargeMockData.export({});
-      if (result.error === 0) {
+      if (result.code == '200') {
         ElMessage.success('导出成功');
         // 这里可以触发文件下载
         console.log('导出文件:', result.data);

+ 1 - 1
src/app/shop/admin/finance/withdraw/detail.vue

@@ -211,7 +211,7 @@
     loading.value = true;
     try {
       const result = withdrawMockData.getDetail(props.modal.params.id);
-      if (result.error === 0) {
+      if (result.code == '200') {
         withdrawDetail.value = result.data;
       }
     } catch (error) {

+ 2 - 2
src/app/shop/admin/finance/withdraw/edit.vue

@@ -109,8 +109,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.withdraw.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await api.withdraw.detail(id);
+    code == '200' && (form.model = data);
     loading.value = false;
   }
 

+ 4 - 4
src/app/shop/admin/finance/withdraw/index.vue

@@ -204,7 +204,7 @@
       // 处理时间范围参数
       let params = {
         page: pageData.page,
-        list_rows: pageData.list_rows,
+        size: pageData.size,
         order: table.order,
         sort: table.sort,
         ...searchParams,
@@ -218,10 +218,10 @@
       }
 
       const result = withdrawMockData.getList(params);
-      if (result.error === 0) {
+      if (result.code == '200') {
         table.data = result.data.data;
         pageData.page = result.data.current_page;
-        pageData.list_rows = result.data.per_page;
+        pageData.size = result.data.per_page;
         pageData.total = result.data.total;
       }
     } catch (error) {
@@ -277,7 +277,7 @@
   function exportRecords() {
     try {
       const result = withdrawMockData.export({});
-      if (result.error === 0) {
+      if (result.code == '200') {
         ElMessage.success('导出成功');
         // 这里可以触发文件下载
         console.log('导出文件:', result.data);

+ 9 - 10
src/app/shop/admin/goods/category/edit.vue

@@ -2,8 +2,8 @@
   <el-container>
     <el-main>
       <el-form :model="form.model" :rules="form.rules" ref="formRef" label-width="100px">
-        <el-form-item label="名称" prop="title">
-          <el-input v-model="form.model.title" placeholder="请填写商品分类名称"></el-input>
+        <el-form-item label="分类名称" prop="name">
+          <el-input v-model="form.model.name" placeholder="请填写商品分类名称"></el-input>
         </el-form-item>
         <el-form-item label="排序" prop="sort">
           <el-input v-model="form.model.sort" placeholder="请填写排序"></el-input>
@@ -30,20 +30,19 @@
   let formRef = ref(null);
   const form = reactive({
     model: {
-      title: '',
+      name: '',
       sort: '0',
     },
     rules: {
-      title: [{ required: true, message: '请填写商品分类名称', trigger: 'blur' }],
-      sort: [{ required: true, message: '请填写排序', trigger: 'blur' }],
+      name: [{ required: true, message: '请填写商品分类名称', trigger: 'blur' }],
     },
   });
   const loading = ref(false);
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.category.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await api.category.detail(id);
+    code === '200' && (form.model = data);
     loading.value = false;
   }
   // 表单关闭时提交
@@ -51,11 +50,11 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       let submitForm = cloneDeep(form.model);
-      const { error } =
+      const { code } =
         props.modal.params.type == 'add'
           ? await api.category.add(submitForm)
-          : await api.category.edit(props.modal.params.id, submitForm);
-      if (error == 0) {
+          : await api.category.edit(submitForm);
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 22 - 20
src/app/shop/admin/goods/category/index.vue

@@ -40,21 +40,26 @@
           <el-table-column label="分类名称" min-width="120">
             <template #default="scope">
               <span class="sa-table-line-1">
-                {{ scope.row.title || '-' }}
+                {{ scope.row.name || '-' }}
               </span>
             </template>
           </el-table-column>
+          <el-table-column label="排序" min-width="80" align="center">
+            <template #default="scope">
+              {{ scope.row.sort || 0 }}
+            </template>
+          </el-table-column>
           <el-table-column label="创建时间" min-width="160">
             <template #default="scope">
-              {{ scope.row.create_time || '-' }}
+              {{ scope.row.createTime || '-' }}
             </template>
           </el-table-column>
-          <el-table-column label="更新时间" min-width="160">
+          <el-table-column label="更新时间">
             <template #default="scope">
-              {{ scope.row.update_time || '-' }}
+              {{ scope.row.updateTime || '-' }}
             </template>
           </el-table-column>
-          <el-table-column fixed="right" label="操作" min-width="120">
+          <el-table-column fixed="right" label="操作">
             <template #default="scope">
               <el-button class="is-link" type="primary" @click="editRow(scope.row)">编辑</el-button>
               <el-popconfirm
@@ -121,18 +126,15 @@
   async function getData(page, searchParams = {}) {
     if (page) pageData.page = page;
     loading.value = true;
-    const { error, data } = await api.category.list({
+    const { code, data } = await api.category.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
-      order: table.order,
+      size: pageData.size,
       ...searchParams,
-      sort: table.sort,
     });
-    console.log('API 响应:', error, data);
-    if (error === 0) {
-      table.data = data.data;
-      pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+    if (code == 200) {
+      table.data = data.list;
+      pageData.page = data.pageNum;
+      pageData.size = data.pageSize;
       pageData.total = data.total;
     }
     loading.value = false;
@@ -149,12 +151,12 @@
   }
   // 分页/批量操作
   const batchHandleTools = [
-    {
-      type: 'delete',
-      label: '删除',
-      auth: 'shop.admin.category.delete',
-      class: 'danger',
-    },
+    // {
+    //   type: 'delete',
+    //   label: '删除',
+    //   auth: 'shop.admin.category.delete',
+    //   class: 'danger',
+    // },
   ];
   function addRow() {
     useModal(

+ 2 - 2
src/app/shop/admin/goods/category/select.vue

@@ -65,8 +65,8 @@
   // 获取分类数据
   async function getData() {
     try {
-      const { data, error } = await api.category.list();
-      if (error === 0) {
+      const { data, code } = await api.category.list();
+      if (code == 200) {
         categoryList.value = data || [];
       }
     } catch (error) {

+ 1 - 1
src/app/shop/admin/goods/goods.service.js

@@ -50,7 +50,7 @@ const api = {
       }),
   },
   category: {
-    ...CRUD('shop/admin/category_tag'),
+    ...CRUD('category'),
     select: (params) => SELECT('shop/admin/category_tag', params),
   },
 };

+ 3 - 3
src/app/shop/admin/goods/goods/edit.vue

@@ -886,7 +886,7 @@
   const saveGoods = async (data) => {
     try {
       const response = await api.goods.saveGoods(data);
-      if (response.error === 0) {
+      if (response.code == '200') {
         return response.data;
       } else {
         throw new Error(response.msg || '保存失败');
@@ -901,7 +901,7 @@
   const getCategoryData = async () => {
     try {
       const response = await api.goods.getType();
-      if (response.error === 0) {
+      if (response.code == '200') {
         // 只使用一级分类
         categoryOptions.value = response.data.categories;
       }
@@ -925,7 +925,7 @@
       // 这里调用获取商品详情接口
       console.log('加载商品数据:', id);
       const response = await api.goods.getGoodsDetail(id);
-      if (response.error === 0) {
+      if (response.code == '200') {
         // 将数据填充到表单中
         Object.assign(formData, response.data);
       }

+ 3 - 3
src/app/shop/admin/goods/goods/index.vue

@@ -276,7 +276,7 @@
 
       const response = await api.goods.list({
         page: pageData.page,
-        list_rows: pageData.list_rows,
+        size: pageData.size,
         ...search,
         order: table.order,
         sort: table.sort,
@@ -284,10 +284,10 @@
 
       console.log('API 响应:', response);
 
-      if (response && response.error === 0 && response.data) {
+      if (response && response.code == '200' && response.data) {
         table.data = response.data.data || [];
         pageData.page = response.data.current_page || 1;
-        pageData.list_rows = response.data.per_page || 10;
+        pageData.size = response.data.per_page || 10;
         pageData.total = response.data.total || 0;
       } else {
         table.data = [];

+ 4 - 4
src/app/shop/admin/goods/goods/select.vue

@@ -141,15 +141,15 @@
     try {
       const params = {
         page: pageData.page,
-        list_rows: pageData.list_rows,
+        size: pageData.size,
         ...searchParams,
       };
 
-      const { error, data } = await api.goods.list(params);
-      if (error === 0) {
+      const { code, data } = await api.goods.list(params);
+      if (code == 200) {
         table.list = data.data;
         pageData.page = data.current_page;
-        pageData.list_rows = data.per_page;
+        pageData.size = data.per_page;
         pageData.total = data.total;
 
         nextTick(() => {

+ 2 - 2
src/app/shop/admin/marketing/group/edit.vue

@@ -100,7 +100,7 @@
     try {
       // 使用mock数据
       const result = groupMockData.getDetail(id);
-      if (result.error === 0) {
+      if (result.code == '200') {
         form.model = { ...result.data };
       } else {
         ElMessage.error(result.msg);
@@ -129,7 +129,7 @@
           result = groupMockData.edit(props.modal.params.id, submitForm);
         }
 
-        if (result.error === 0) {
+        if (result.code == '200') {
           ElMessage.success(result.msg);
           emit('modalCallBack', { event: 'confirm' });
         } else {

+ 5 - 5
src/app/shop/admin/marketing/group/index.vue

@@ -224,8 +224,8 @@
 
       // 模拟分页
       const total = mockData.length;
-      const start = (pageData.page - 1) * pageData.list_rows;
-      const end = start + pageData.list_rows;
+      const start = (pageData.page - 1) * pageData.size;
+      const end = start + pageData.size;
       const paginatedData = mockData.slice(start, end);
 
       // 设置数据
@@ -319,7 +319,7 @@
       const goodsIds = goodsList.map((item) => item.id);
       const result = groupMockData.updateGoods(activityId, goodsIds, goodsList);
 
-      if (result.error === 0) {
+      if (result.code == '200') {
         ElMessage.success('商品设置成功');
         getData(); // 刷新列表
       } else {
@@ -335,7 +335,7 @@
   async function deleteRow(id) {
     try {
       const result = groupMockData.delete(id);
-      if (result.error === 0) {
+      if (result.code == '200') {
         ElMessage.success(result.msg);
         getData();
       } else {
@@ -371,7 +371,7 @@
   async function batchDeleteRows(ids) {
     try {
       const result = groupMockData.batchDelete(ids);
-      if (result.error === 0) {
+      if (result.code == '200') {
         ElMessage.success(result.msg);
         getData();
         table.selected = []; // 清空选中项

+ 2 - 2
src/app/shop/admin/order/aftersale/addLog.vue

@@ -42,11 +42,11 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       if (valid) {
-        const { error } = await api.aftersale.addLog(props.modal.params.id, {
+        const { code } = await api.aftersale.addLog(props.modal.params.id, {
           content: form.model.content,
           images: form.model.images,
         });
-        if (error == 0) {
+        if (code == '200') {
           emit('modalCallBack', { event: 'confirm' });
         }
       }

+ 2 - 2
src/app/shop/admin/order/aftersale/detail.vue

@@ -214,8 +214,8 @@
   });
 
   async function getDetail() {
-    const { error, data } = await api.aftersale.detail(props.modal.params.id);
-    error === 0 && (detail.data = data);
+    const { code, data } = await api.aftersale.detail(props.modal.params.id);
+    code == '200' && (detail.data = data);
   }
 
   function refuse(id) {

+ 4 - 4
src/app/shop/admin/order/aftersale/index.vue

@@ -303,15 +303,15 @@
         ...JSON.parse(search.search),
       }),
     };
-    const { error, data } = await api.aftersale.list({
+    const { code, data } = await api.aftersale.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       ...search,
     });
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.data;
       pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+      pageData.size = data.per_page;
       pageData.total = data.total;
     }
     loading.value = false;

+ 2 - 2
src/app/shop/admin/order/aftersale/refund.vue

@@ -46,8 +46,8 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       if (valid) {
-        const { error } = await api.aftersale.refund(props.modal.params.data.id, form.model);
-        if (error == 0) {
+        const { code } = await api.aftersale.refund(props.modal.params.data.id, form.model);
+        if (code == '200') {
           emit('modalCallBack', { event: 'confirm' });
         }
       }

+ 2 - 2
src/app/shop/admin/order/aftersale/refuse.vue

@@ -33,10 +33,10 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       if (valid) {
-        const { error } = await api.aftersale.refuse(props.modal.params.id, {
+        const { code } = await api.aftersale.refuse(props.modal.params.id, {
           refuse_msg: form.model.refuse_msg,
         });
-        if (error == 0) {
+        if (code == '200') {
           emit('modalCallBack', { event: 'confirm' });
         }
       }

+ 2 - 2
src/app/shop/admin/order/invoice/edit.vue

@@ -67,8 +67,8 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       let submitForm = cloneDeep(form.model);
-      const { error } = await api.invoice.confirm(props.modal.params.data.id, submitForm);
-      if (error == 0) {
+      const { code } = await api.invoice.confirm(props.modal.params.data.id, submitForm);
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 8 - 8
src/app/shop/admin/order/invoice/index.vue

@@ -124,10 +124,10 @@
                 scope.row.status == 'cancel'
                   ? 'sa-color--danger'
                   : scope.row.status == 'unpaid'
-                  ? 'sa-color--info'
-                  : scope.row.status == 'waiting'
-                  ? 'sa-color--warning'
-                  : 'sa-color--success'
+                    ? 'sa-color--info'
+                    : scope.row.status == 'waiting'
+                      ? 'sa-color--warning'
+                      : 'sa-color--success'
               "
             >
               {{ scope.row.status_text || '-' }}
@@ -315,17 +315,17 @@
       'user.nickname': 'like',
       'user.mobile': 'like',
     });
-    const { error, data } = await api.invoice.list({
+    const { code, data } = await api.invoice.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       order: table.order,
       sort: table.sort,
       ...search,
     });
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.data;
       pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+      pageData.size = data.per_page;
       pageData.total = data.total;
     }
     loading.value = false;

+ 3 - 3
src/app/shop/admin/order/order/batchDispatch.vue

@@ -115,7 +115,7 @@
           }
 
           let { error, data } = await api.order.dispatchByUpload(dispatchForm);
-          if (error == 0)
+          if (code == '200')
             useModal(
               OrderLoopDispatch,
               {
@@ -133,11 +133,11 @@
 
   // 批量发货
   async function onBatchDispatch() {
-    const { error, data } = await api.order.dispatch({
+    const { code, data } = await api.order.dispatch({
       order_ids: props.modal.params.order_ids,
       action: 'multiple',
     });
-    if (error == 0)
+    if (code == '200')
       useModal(
         OrderLoopDispatch,
         {

+ 10 - 10
src/app/shop/admin/order/order/detail.vue

@@ -220,8 +220,8 @@
 
   // 获取订单详情
   async function getOrderDetail() {
-    const { error, data } = await api.order.detail(props.modal.params.id);
-    if (error === 0) {
+    const { code, data } = await api.order.detail(props.modal.params.id);
+    if (code == 200) {
       state.orderDetail = data;
     }
   }
@@ -278,8 +278,8 @@
   // 联系用户
   async function onContactUser() {
     try {
-      const { error } = await api.order.contact(state.orderDetail.id);
-      if (error === 0) {
+      const { code } = await api.order.contact(state.orderDetail.id);
+      if (code == 200) {
         ElMessage.success('已发送联系信息');
       }
     } catch (err) {
@@ -290,8 +290,8 @@
   // 导出订单
   async function onExportOrder() {
     try {
-      const { error, data } = await api.order.export(state.orderDetail.id);
-      if (error === 0) {
+      const { code, data } = await api.order.export(state.orderDetail.id);
+      if (code == 200) {
         ElMessage.success('导出成功');
         if (data.download_url) {
           window.open(data.download_url);
@@ -305,8 +305,8 @@
   // 关闭订单
   async function onCloseOrder() {
     try {
-      const { error } = await api.order.close(state.orderDetail.id);
-      if (error === 0) {
+      const { code } = await api.order.close(state.orderDetail.id);
+      if (code == 200) {
         ElMessage.success('订单已关闭');
         getOrderDetail();
       }
@@ -324,8 +324,8 @@
   // 确认备注
   async function onConfirmMemo() {
     try {
-      const { error } = await api.order.editMemo(state.orderDetail.id, { memo: memoForm.data });
-      if (error === 0) {
+      const { code } = await api.order.editMemo(state.orderDetail.id, { memo: memoForm.data });
+      if (code == 200) {
         ElMessage.success('备注更新成功');
         memoForm.flag = false;
         getOrderDetail();

+ 6 - 6
src/app/shop/admin/order/order/dispatch.vue

@@ -276,7 +276,7 @@
           proxy.$refs.expressRef.validate(async (valid) => {
             if (valid) {
               state.sendLoading = true;
-              const { error } = await api.order.dispatch({
+              const { code } = await api.order.dispatch({
                 order_id: props.modal?.params?.params?.data?.id,
                 order_item_ids,
                 action: 'confirm',
@@ -284,33 +284,33 @@
                 express: express,
               });
               state.sendLoading = false;
-              if (error == 0) {
+              if (code == '200') {
                 emit('modalCallBack', { event: 'confirm' });
               }
             }
           });
       } else if (state.method == 'api') {
         state.sendLoading = true;
-        const { error } = await api.order.dispatch({
+        const { code } = await api.order.dispatch({
           order_id: props.modal?.params?.params?.data?.id,
           order_item_ids,
           action: 'confirm',
           method: 'api',
         });
         state.sendLoading = false;
-        if (error == 0) {
+        if (code == '200') {
           emit('modalCallBack', { event: 'confirm' });
         }
       }
     } else if (state.dispatch_type == 'custom') {
-      const { error } = await api.order.customDispatch({
+      const { code } = await api.order.customDispatch({
         order_id: props.modal?.params?.params?.data?.id,
         order_item_ids,
         custom_type: state.custom_type,
         custom_content: state.custom_content,
       });
       state.sendLoading = false;
-      if (error == 0) {
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     }

+ 2 - 2
src/app/shop/admin/order/order/fee.vue

@@ -53,8 +53,8 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       if (valid) {
-        const { error } = await api.order.changeFee(props.modal.params.id, form.model);
-        if (error == 0) {
+        const { code } = await api.order.changeFee(props.modal.params.id, form.model);
+        if (code == '200') {
           emit('modalCallBack', { event: 'confirm' });
         }
       }

+ 3 - 3
src/app/shop/admin/order/order/index.vue

@@ -318,7 +318,7 @@
 
       const response = await api.order.list({
         page: pageData.page,
-        list_rows: pageData.list_rows,
+        size: pageData.size,
         ...search,
         order: table.order,
         sort: table.sort,
@@ -326,10 +326,10 @@
 
       console.log('API 响应:', response);
 
-      if (response && response.error === 0 && response.data) {
+      if (response && response.code == '200' && response.data) {
         table.data = response.data.orders.data || [];
         pageData.page = response.data.orders.current_page || 1;
-        pageData.list_rows = response.data.orders.per_page || 10;
+        pageData.size = response.data.orders.per_page || 10;
         pageData.total = response.data.orders.total || 0;
       } else {
         table.data = [];

+ 9 - 9
src/app/shop/admin/order/order/loopDispatch.vue

@@ -172,13 +172,13 @@
     // 当前item
     loop.item = state.all[index];
 
-    const { error } = await dispatchApi(index);
+    const { code } = await dispatchApi(index);
 
     // 数据分组 0成功 !0失败 error已发货
-    if (error == 0) {
+    if (code == '200') {
       state.success.push(state.all[index]);
     }
-    if (error != 0) {
+    if (code != '200') {
       state.error.push(state.all[index]);
     }
 
@@ -192,16 +192,16 @@
     loop.item = state[state.status][index];
     let idx = state.all.findIndex((a) => a.order_id == loop.item.order_id);
 
-    const { error } = await dispatchApi(idx);
+    const { code } = await dispatchApi(idx);
 
-    if (error == 0) {
+    if (code == '200') {
       state.success.push(state.all[idx]);
       state.error.splice(index, 1);
     }
   }
 
   async function dispatchApi(index) {
-    const { error, msg, data } = await api.order.dispatch({
+    const { code, msg, data } = await api.order.dispatch({
       order_id: loop.item.order_id,
       order_item_ids: loop.item.order_item_ids,
       action: 'confirm',
@@ -209,10 +209,10 @@
       express: loop.item.express,
     });
 
-    state.all[index].dispatch_status = error;
+    state.all[index].dispatch_status = code;
     state.all[index].dispatch_status_text = msg;
 
-    if (error == 0 && props.modal.params.method == 'api') {
+    if (code == '200' && props.modal.params.method == 'api') {
       state.all[index].express = {
         name: data.name,
         code: data.code,
@@ -220,7 +220,7 @@
       };
     }
 
-    return { error };
+    return { code };
   }
 </script>
 <style lang="scss" scoped>

+ 2 - 2
src/app/shop/admin/order/order/manualOrder.vue

@@ -96,13 +96,13 @@
       if (valid) {
         loading.value = true;
         try {
-          const { error } = await api.order.manualOrderSubmit(form.id, {
+          const { code } = await api.order.manualOrderSubmit(form.id, {
             out_order_id: form.out_order_id,
             out_order_item_id: form.out_order_item_id,
             order_source: form.order_source,
           });
 
-          if (error === 0) {
+          if (code == 200) {
             ElMessage({
               message: '手动下单成功',
               type: 'success',

+ 4 - 4
src/app/shop/admin/order/order/refund.vue

@@ -56,16 +56,16 @@
       if (!valid) return;
       if (valid) {
         if (props.modal.params.type == 'order.fullRefund') {
-          const { error } = await api.order.fullRefund(props.modal.params.data.id, {
+          const { code } = await api.order.fullRefund(props.modal.params.data.id, {
             refund_type: form.model.refund_type,
           });
-          if (error == 0) {
+          if (code == '200') {
             emit('modalCallBack', { event: 'confirm' });
           }
         }
 
         if (props.modal.params.type == 'order.refund') {
-          const { error } = await api.order.refund(
+          const { code } = await api.order.refund(
             props.modal.params.data.id,
             props.modal.params.data.item_id,
             {
@@ -73,7 +73,7 @@
               refund_money: form.model.refund_money,
             },
           );
-          if (error == 0) {
+          if (code == '200') {
             emit('modalCallBack', { event: 'confirm' });
           }
         }

+ 4 - 4
src/app/shop/admin/order/setting/edit.vue

@@ -124,8 +124,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await api.detail(id);
+    code == '200' && (form.model = data);
     loading.value = false;
   }
   // 表单关闭时提交
@@ -133,11 +133,11 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       let submitForm = cloneDeep(form.model);
-      const { error } =
+      const { code } =
         props.modal.params.type == 'add'
           ? await api.add(submitForm)
           : await api.edit(props.modal.params.id, submitForm);
-      if (error == 0) {
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 4 - 4
src/app/shop/admin/order/setting/index.vue

@@ -128,18 +128,18 @@
   async function getData(page, searchParams = {}) {
     if (page) pageData.page = page;
     loading.value = true;
-    const { error, data } = await api.list({
+    const { code, data } = await api.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       order: table.order,
       ...searchParams,
       sort: table.sort,
     });
     console.log('API 响应:', error, data);
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.data;
       pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+      pageData.size = data.per_page;
       pageData.total = data.total;
     }
     loading.value = false;

+ 26 - 26
src/app/shop/admin/trade/order/index.vue

@@ -78,12 +78,12 @@
                   scope.row.status == 'completed'
                     ? 'sa-color--success'
                     : scope.row.status == 'closed'
-                    ? 'sa-color--danger'
-                    : scope.row.status == 'cancel'
-                    ? 'sa-color--info'
-                    : scope.row.status == 'unpaid'
-                    ? 'sa-color--warning'
-                    : ''
+                      ? 'sa-color--danger'
+                      : scope.row.status == 'cancel'
+                        ? 'sa-color--info'
+                        : scope.row.status == 'unpaid'
+                          ? 'sa-color--warning'
+                          : ''
                 "
               >
                 {{ scope.row.status_text }}
@@ -98,10 +98,10 @@
                     scope.row.pay_type_text == '支付宝'
                       ? 'ali'
                       : scope.row.pay_type_text == '微信支付'
-                      ? 'wechaticon'
-                      : scope.row.pay_type_text == '钱包支付'
-                      ? 'walleticon'
-                      : 'score'
+                        ? 'wechaticon'
+                        : scope.row.pay_type_text == '钱包支付'
+                          ? 'walleticon'
+                          : 'score'
                   }.png`"
                   class="pay-img sa-m-r-8"
                   v-if="scope.row.pay_type_text"
@@ -175,12 +175,12 @@
                 detailList.data.status == 'completed'
                   ? 'sa-color--success'
                   : detailList.data.status == 'closed'
-                  ? 'sa-color--danger'
-                  : detailList.data.status == 'cancel'
-                  ? 'sa-color--info'
-                  : detailList.data.status == 'unpaid'
-                  ? 'sa-color--warning'
-                  : ''
+                    ? 'sa-color--danger'
+                    : detailList.data.status == 'cancel'
+                      ? 'sa-color--info'
+                      : detailList.data.status == 'unpaid'
+                        ? 'sa-color--warning'
+                        : ''
               "
             >
               {{ detailList.data.status_text }}
@@ -194,10 +194,10 @@
                   detailList.data.pay_type_text == '支付宝'
                     ? 'ali'
                     : detailList.data.pay_type_text == '微信支付'
-                    ? 'wechaticon'
-                    : detailList.data.pay_type_text == '钱包支付'
-                    ? 'walleticon'
-                    : 'score'
+                      ? 'wechaticon'
+                      : detailList.data.pay_type_text == '钱包支付'
+                        ? 'walleticon'
+                        : 'score'
                 }.png`"
                 class="pay-img sa-m-r-8"
                 v-if="detailList.data.pay_type_text"
@@ -388,8 +388,8 @@
   //获取详情
   async function getDetail(id) {
     dialogDetail.value = true;
-    const { error, data } = await api.order.detail(id);
-    error === 0 && (detailList.data = data);
+    const { code, data } = await api.order.detail(id);
+    code == '200' && (detailList.data = data);
   }
   // 获取数据
   async function getData(page) {
@@ -403,15 +403,15 @@
       'user.mobile': 'like',
       create_time: 'range',
     });
-    const { error, data } = await api.order.list({
+    const { code, data } = await api.order.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       ...search,
     });
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.orders.data;
       pageData.page = data.orders.current_page;
-      pageData.list_rows = data.orders.per_page;
+      pageData.size = data.orders.per_page;
       pageData.total = data.orders.total;
       for (var key in statusList) {
         statusList[key].num = data[key];

+ 4 - 4
src/app/shop/admin/user/level/edit.vue

@@ -72,8 +72,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.level.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await api.level.detail(id);
+    code == '200' && (form.model = data);
     loading.value = false;
   }
   // 表单关闭时提交
@@ -81,11 +81,11 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       let submitForm = cloneDeep(form.model);
-      const { error } =
+      const { code } =
         props.modal.params.type == 'add'
           ? await api.level.add(submitForm)
           : await api.level.edit(props.modal.params.id, submitForm);
-      if (error == 0) {
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 4 - 4
src/app/shop/admin/user/level/index.vue

@@ -140,18 +140,18 @@
   async function getData(page, searchParams = {}) {
     if (page) pageData.page = page;
     loading.value = true;
-    const { error, data } = await api.level.list({
+    const { code, data } = await api.level.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       order: table.order,
       ...searchParams,
       sort: table.sort,
     });
     console.log('API 响应:', error, data);
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.data;
       pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+      pageData.size = data.per_page;
       pageData.total = data.total;
     }
     loading.value = false;

+ 4 - 4
src/app/shop/admin/user/list/edit.vue

@@ -110,8 +110,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.list.detail(id);
-    if (error === 0) {
+    const { code, data } = await api.list.detail(id);
+    if (code == 200) {
       // 处理头像数据
       if (data.avatar) {
         form.model.avatar = Array.isArray(data.avatar) ? data.avatar : [data.avatar];
@@ -151,11 +151,11 @@
         submitForm.permissions = submitForm.permissions;
       }
 
-      const { error } =
+      const { code } =
         props.modal.params.type == 'add'
           ? await api.list.add(submitForm)
           : await api.list.edit(props.modal.params.id, submitForm);
-      if (error == 0) {
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 4 - 4
src/app/shop/admin/user/list/index.vue

@@ -210,7 +210,7 @@
     // 构建查询参数
     const params = {
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       order: table.order,
       sort: table.sort,
       status: activeTab.value === 'all' ? '' : activeTab.value,
@@ -223,12 +223,12 @@
       params.end_time = searchParams.dateRange[1];
     }
 
-    const { error, data } = await api.list.list(params);
+    const { code, data } = await api.list.list(params);
     console.log('API 响应:', error, data);
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.data;
       pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+      pageData.size = data.per_page;
       pageData.total = data.total;
     }
     loading.value = false;

+ 4 - 4
src/app/shop/admin/user/tag/edit.vue

@@ -59,8 +59,8 @@
   // 获取详情
   async function getDetail(id) {
     loading.value = true;
-    const { error, data } = await api.tag.detail(id);
-    error === 0 && (form.model = data);
+    const { code, data } = await api.tag.detail(id);
+    code == '200' && (form.model = data);
     loading.value = false;
   }
   // 表单关闭时提交
@@ -68,11 +68,11 @@
     unref(formRef).validate(async (valid) => {
       if (!valid) return;
       let submitForm = cloneDeep(form.model);
-      const { error } =
+      const { code } =
         props.modal.params.type == 'add'
           ? await api.tag.add(submitForm)
           : await api.tag.edit(props.modal.params.id, submitForm);
-      if (error == 0) {
+      if (code == '200') {
         emit('modalCallBack', { event: 'confirm' });
       }
     });

+ 4 - 4
src/app/shop/admin/user/tag/index.vue

@@ -135,18 +135,18 @@
   async function getData(page, searchParams = {}) {
     if (page) pageData.page = page;
     loading.value = true;
-    const { error, data } = await api.tag.list({
+    const { code, data } = await api.tag.list({
       page: pageData.page,
-      list_rows: pageData.list_rows,
+      size: pageData.size,
       order: table.order,
       ...searchParams,
       sort: table.sort,
     });
     console.log('API 响应:', error, data);
-    if (error === 0) {
+    if (code == 200) {
       table.data = data.data;
       pageData.page = data.current_page;
-      pageData.list_rows = data.per_page;
+      pageData.size = data.per_page;
       pageData.total = data.total;
     }
     loading.value = false;

+ 1 - 1
src/sheep/components/sa-file/components/file-upload.vue

@@ -151,7 +151,7 @@
       formData,
     );
 
-    if (error == 0) {
+    if (code == '200') {
       elFile.status = 'success';
       elFile.url = data.fullurl;
       setTimeout(() => {

+ 6 - 6
src/sheep/components/sa-file/sa-filemanager.vue

@@ -164,7 +164,7 @@
     },
     pageData: {
       page: 1,
-      list_rows: 24,
+      size: 24,
       total: 0,
     },
     selected: [],
@@ -180,22 +180,22 @@
   }
 
   async function getFileGroup() {
-    const { error, data } = await adminApi.file.group.list();
-    if (error === 0) {
+    const { code, data } = await adminApi.file.group.list();
+    if (code == 200) {
       state.fileGroup = data;
     }
   }
 
   async function getFile() {
     state.loading = true;
-    const { error, data } = await adminApi.file.list({
+    const { code, data } = await adminApi.file.list({
       page: state.pageData.page,
-      list_rows: state.pageData.list_rows,
+      size: state.pageData.size,
       ...composeFilter(state.search, { filename: 'like' }),
       order: 'desc',
       sort: 'update_time',
     });
-    if (error === 0) {
+    if (code == 200) {
       state.fileList = data.data;
       state.pageData.total = data.total;
       state.pageData.page = data.current_page;

+ 3 - 3
src/sheep/components/sa-table/sa-pagination/index.global.vue

@@ -3,7 +3,7 @@
     class="sa-pagination"
     :small="small"
     v-model:currentPage="pageData.page"
-    v-model:page-size="pageData.list_rows"
+    v-model:page-size="pageData.size"
     :page-sizes="[10, 50, 100]"
     :layout="layout"
     :pager-count="5"
@@ -33,8 +33,8 @@
     },
   });
 
-  function changeSize(list_rows) {
-    props.pageData.list_rows = list_rows;
+  function changeSize(size) {
+    props.pageData.size = size;
     emit('updateFn');
   }
   function changeCurrent(page) {

+ 1 - 1
src/sheep/components/sa-table/sa-pagination/usePagination.js

@@ -3,7 +3,7 @@ import { reactive } from 'vue';
 const usePagination = () => {
   const pageData = reactive({
     page: 1,
-    list_rows: 10,
+    size: 10,
     total: 0,
   });
   return { pageData };

+ 1 - 1
src/sheep/components/sa-uploader/sa-upload-image.global.vue

@@ -277,7 +277,7 @@
   const uploadFile = async (file) => {
     try {
       const response = await adminApi.file.upload({}, file);
-      if (response.error === 0) {
+      if (response.code == '200') {
         return {
           success: true,
           url: response.data.url,

+ 7 - 7
src/sheep/components/sa-uploader/uploader-action.vue

@@ -12,9 +12,9 @@
           }"
         >
           <el-icon :style="{ 'font-size': size / 3 + 'px' }">
-              <Plus />
-            </el-icon>
-                    </div>
+            <Plus />
+          </el-icon>
+        </div>
       </slot>
     </div>
     <template v-if="action == 'directly'">
@@ -103,11 +103,11 @@
     } else if (props.action == 'directly') {
       var formData = new FormData();
       formData.append('file', file.file);
-      const { error, data } = await admin.file.upload(
+      const { code, data } = await admin.file.upload(
         { group: props.group, savelog: props.savelog },
         formData,
       );
-      if (error == 0) props.urlList.push(data.path);
+      if (code == '200') props.urlList.push(data.path);
       emit('action', props.urlList);
       emit('success', data);
     }
@@ -123,11 +123,11 @@
       file.forEach(async (f) => {
         var formData = new FormData();
         formData.append('file', f);
-        const { error, data } = await admin.file.upload(
+        const { code, data } = await admin.file.upload(
           { group: props.group, savelog: props.savelog },
           formData,
         );
-        if (error == 0) props.urlList.push(data.path);
+        if (code == '200') props.urlList.push(data.path);
       });
 
       emit('action', props.urlList);

+ 2 - 2
src/sheep/components/sa-uploader/uploader-cert.vue

@@ -32,8 +32,8 @@
   async function uploadFile(file) {
     let formData = new FormData();
     formData.append('file', file.file);
-    const { error, data } = await adminApi.file.upload({}, formData);
-    if (error == 0) {
+    const { code, data } = await adminApi.file.upload({}, formData);
+    if (code == '200') {
       emit('updateValue', data.path);
     }
   }

+ 3 - 3
src/sheep/local-data/admin.js

@@ -4,7 +4,7 @@
 
 // 系统初始化数据
 const initData = {
-  error: 0,
+  code: '200',
   msg: '获取成功',
   data: {
     name: 'bandhuBuy',
@@ -19,7 +19,7 @@ const initData = {
 
 // 登录配置数据
 const loginConfigData = {
-  error: 0,
+  code: '200',
   msg: '获取成功',
   data: {
     background: '/storage/default/20250227/8fdd538e05f5ad15402f5a66fe595621.jpg',
@@ -29,7 +29,7 @@ const loginConfigData = {
 
 // 菜单权限数据 - 二级菜单结构
 const menuRulesData = {
-  error: 0,
+  code: '200',
   msg: '获取成功',
   data: {
     menu: [

+ 50 - 24
src/sheep/mock/admin.js

@@ -102,7 +102,7 @@ export const adminMockData = {
 
   // 获取列表数据
   getList(params = {}) {
-    const { page = 1, list_rows = 10, username = '', mobile = '', role_name = '' } = params;
+    const { page = 1, size = 10, username = '', mobile = '', role_name = '' } = params;
 
     let filteredData = this.list;
 
@@ -123,11 +123,37 @@ export const adminMockData = {
       filteredData = filteredData.filter((item) => item.role_name.includes(role_name));
     }
 
-    // 简化返回,直接返回数组数据
+    // 分页处理
+    const total = filteredData.length;
+    const startIndex = (page - 1) * size;
+    const endIndex = startIndex + size;
+    const list = filteredData.slice(startIndex, endIndex);
+
     return {
-      error: 0,
-      msg: '获取成功',
-      data: filteredData,
+      code: '200',
+      message: '操作成功',
+      data: {
+        list: list,
+        total: total,
+        pageNum: page,
+        pageSize: size,
+        pages: Math.ceil(total / size),
+        size: list.length,
+        startRow: startIndex + 1,
+        endRow: startIndex + list.length,
+        hasNextPage: page < Math.ceil(total / size),
+        hasPreviousPage: page > 1,
+        isFirstPage: page === 1,
+        isLastPage: page >= Math.ceil(total / size),
+        firstPage: 1,
+        lastPage: Math.ceil(total / size),
+        navigatePages: 8,
+        navigatepageNums: [],
+        navigateFirstPage: 1,
+        navigateLastPage: Math.ceil(total / size),
+        nextPage: page < Math.ceil(total / size) ? page + 1 : 0,
+        prePage: page > 1 ? page - 1 : 0,
+      },
     };
   },
 
@@ -136,14 +162,14 @@ export const adminMockData = {
     const item = this.list.find((item) => item.id == id);
     if (item) {
       return {
-        error: 0,
-        msg: '获取成功',
+        code: '200',
+        message: '操作成功',
         data: item,
       };
     } else {
       return {
-        error: 1,
-        msg: '人员不存在',
+        code: '500',
+        message: '人员不存在',
         data: null,
       };
     }
@@ -168,8 +194,8 @@ export const adminMockData = {
     this.list.push(newItem);
 
     return {
-      error: 0,
-      msg: '新增成功',
+      code: '200',
+      message: '新增成功',
       data: newItem,
     };
   },
@@ -185,14 +211,14 @@ export const adminMockData = {
       };
 
       return {
-        error: 0,
-        msg: '编辑成功',
+        code: '200',
+        message: '编辑成功',
         data: this.list[index],
       };
     } else {
       return {
-        error: 1,
-        msg: '人员不存在',
+        code: '500',
+        message: '人员不存在',
         data: null,
       };
     }
@@ -204,14 +230,14 @@ export const adminMockData = {
     if (index !== -1) {
       this.list.splice(index, 1);
       return {
-        error: 0,
-        msg: '删除成功',
+        code: '200',
+        message: '删除成功',
         data: null,
       };
     } else {
       return {
-        error: 1,
-        msg: '人员不存在',
+        code: '500',
+        message: '人员不存在',
         data: null,
       };
     }
@@ -222,25 +248,25 @@ export default {
   /**
    * 人员列表接口
    */
-  list: (params) => adminMockData.getList(params),
+  'admin/list': (data) => adminMockData.getList(data),
 
   /**
    * 人员详情接口
    */
-  detail: (id) => adminMockData.getDetail(id),
+  'admin/detail': (data) => adminMockData.getDetail(data.id),
 
   /**
    * 新增人员接口
    */
-  add: (data) => adminMockData.add(data),
+  'admin/add': (data) => adminMockData.add(data),
 
   /**
    * 编辑人员接口
    */
-  edit: (id, data) => adminMockData.edit(id, data),
+  'admin/edit': (data) => adminMockData.edit(data.id, data),
 
   /**
    * 删除人员接口
    */
-  delete: (id) => adminMockData.delete(id),
+  'admin/delete': (data) => adminMockData.delete(data.id),
 };

+ 2 - 2
src/sheep/mock/category.js

@@ -102,7 +102,7 @@ const sortCategories = (categories, sort, order) => {
 export default {
   // 获取分类列表
   'GET /admin/shop/admin/category_tag': (req, res) => {
-    const { page = 1, list_rows = 10, sort = 'id', order = 'desc', name = '' } = req.query;
+    const { page = 1, size = 10, sort = 'id', order = 'desc', name = '' } = req.query;
 
     // 搜索过滤
     let filtered = filterCategories(mockCategories, { name });
@@ -111,7 +111,7 @@ export default {
     filtered = sortCategories(filtered, sort, order);
 
     // 分页
-    const result = paginate(filtered, parseInt(page), parseInt(list_rows));
+    const result = paginate(filtered, parseInt(page), parseInt(size));
 
     res.json({
       error: 0,

+ 14 - 18
src/sheep/mock/commission.js

@@ -104,7 +104,7 @@ export const commissionMockData = {
   getList(params = {}) {
     const {
       page = 1,
-      list_rows = 10,
+      size = 10,
       username = '',
       phone = '',
       commission_no = '',
@@ -118,30 +118,26 @@ export const commissionMockData = {
 
     // 搜索过滤
     if (username) {
-      filteredData = filteredData.filter(item => 
-        item.username.toLowerCase().includes(username.toLowerCase())
+      filteredData = filteredData.filter((item) =>
+        item.username.toLowerCase().includes(username.toLowerCase()),
       );
     }
     if (phone) {
-      filteredData = filteredData.filter(item => 
-        item.phone.includes(phone)
-      );
+      filteredData = filteredData.filter((item) => item.phone.includes(phone));
     }
     if (commission_no) {
-      filteredData = filteredData.filter(item => 
-        item.commission_no.includes(commission_no)
-      );
+      filteredData = filteredData.filter((item) => item.commission_no.includes(commission_no));
     }
     if (status && status !== 'all') {
-      filteredData = filteredData.filter(item => item.status === status);
+      filteredData = filteredData.filter((item) => item.status === status);
     }
     if (type) {
-      filteredData = filteredData.filter(item => item.type === type);
+      filteredData = filteredData.filter((item) => item.type === type);
     }
 
     // 时间过滤
     if (start_time && end_time) {
-      filteredData = filteredData.filter(item => {
+      filteredData = filteredData.filter((item) => {
         const itemTime = new Date(item.create_time);
         const startTime = new Date(start_time);
         const endTime = new Date(end_time);
@@ -151,8 +147,8 @@ export const commissionMockData = {
 
     // 分页
     const total = filteredData.length;
-    const startIndex = (page - 1) * list_rows;
-    const endIndex = startIndex + list_rows;
+    const startIndex = (page - 1) * size;
+    const endIndex = startIndex + size;
     const data = filteredData.slice(startIndex, endIndex);
 
     return {
@@ -161,16 +157,16 @@ export const commissionMockData = {
       data: {
         data,
         total,
-        per_page: list_rows,
+        per_page: size,
         current_page: page,
-        last_page: Math.ceil(total / list_rows),
+        last_page: Math.ceil(total / size),
       },
     };
   },
 
   // 获取详情数据
   getDetail(id) {
-    const item = this.list.find(item => item.id == id);
+    const item = this.list.find((item) => item.id == id);
     if (!item) {
       return {
         error: 1,
@@ -197,7 +193,7 @@ export const commissionMockData = {
 
   // 导出数据
   export(params = {}) {
-    const data = this.getList({ ...params, list_rows: 1000 });
+    const data = this.getList({ ...params, size: 1000 });
     return {
       error: 0,
       msg: '导出成功',

+ 24 - 0
src/sheep/mock/data/profile.js

@@ -0,0 +1,24 @@
+// 用户个人信息mock数据
+export const profileData = {
+  id: 1,
+  account: 'admin',
+  nickname: '管理员',
+  avatar: 'https://mall-oss.trust-will.com/static/avatar/default.png',
+  email: 'admin@example.com',
+  mobile: '13800138000',
+  role_id: 1,
+  role: {
+    id: 1,
+    name: '超级管理员',
+    description: '系统最高权限',
+    rules: '*',
+  },
+  last_login_time: '2025-01-15 10:30:00',
+  last_login_ip: '192.168.1.1',
+  create_time: '2025-01-01 00:00:00',
+  update_time: '2025-01-15 10:30:00',
+  status: 'normal',
+  token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwibmFtZSI6ImFkbWluIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c',
+};
+
+export default profileData;

+ 115 - 0
src/sheep/mock/handlers/admin.js

@@ -0,0 +1,115 @@
+import { http, HttpResponse } from 'msw';
+import adminMockData from '../admin.js';
+import profileData from '../data/profile.js';
+
+// 人员管理相关的mock处理器
+export const adminHandlers = [
+  // 人员列表
+  http.post('*/admin/list', async ({ request }) => {
+    const data = await request.json();
+    const result = adminMockData['admin/list'](data);
+    return HttpResponse.json(result);
+  }),
+
+  // 人员详情
+  http.post('*/admin/detail', async ({ request }) => {
+    const data = await request.json();
+    const result = adminMockData['admin/detail'](data);
+    return HttpResponse.json(result);
+  }),
+
+  // 新增人员
+  http.post('*/admin/add', async ({ request }) => {
+    const data = await request.json();
+    const result = adminMockData['admin/add'](data);
+    return HttpResponse.json(result);
+  }),
+
+  // 编辑人员
+  http.post('*/admin/edit', async ({ request }) => {
+    const data = await request.json();
+    const result = adminMockData['admin/edit'](data);
+    return HttpResponse.json(result);
+  }),
+
+  // 删除人员
+  http.post('*/admin/delete', async ({ request }) => {
+    const data = await request.json();
+    const result = adminMockData['admin/delete'](data);
+    return HttpResponse.json(result);
+  }),
+
+  // 获取个人信息
+  http.get('*/admin/index/profile', () => {
+    return HttpResponse.json({
+      code: '200',
+      message: '操作成功',
+      data: profileData,
+    });
+  }),
+
+  // 更新个人信息
+  http.post('*/admin/index/update', async ({ request }) => {
+    const data = await request.json();
+    // 更新profile数据
+    Object.assign(profileData, data, {
+      update_time: new Date().toLocaleString('zh-CN'),
+    });
+
+    return HttpResponse.json({
+      code: '200',
+      message: '更新成功',
+      data: profileData,
+    });
+  }),
+
+  // 登录接口
+  http.post('*/admin/index/login', async ({ request }) => {
+    const data = await request.json();
+
+    // 简单验证
+    if (data.account === 'admin' && data.password === '123456') {
+      return HttpResponse.json({
+        code: '200',
+        message: '登录成功',
+        data: {
+          token: profileData.token,
+          userInfo: profileData,
+        },
+      });
+    } else {
+      return HttpResponse.json({
+        code: '500',
+        message: '用户名或密码错误',
+        data: null,
+      });
+    }
+  }),
+
+  // 登出接口
+  http.post('*/admin/index/logout', () => {
+    return HttpResponse.json({
+      code: '200',
+      message: '登出成功',
+      data: null,
+    });
+  }),
+
+  // 获取菜单权限
+  http.get('*/admin/index/rules', () => {
+    return HttpResponse.json({
+      code: '200',
+      message: '操作成功',
+      data: ['*'], // 所有权限
+    });
+  }),
+
+  // 清空缓存
+  http.post('*/admin/index/clearCache', () => {
+    return HttpResponse.json({
+      code: '200',
+      message: '缓存清空成功',
+      data: null,
+    });
+  }),
+];

+ 280 - 258
src/sheep/mock/handlers/category.js

@@ -1,258 +1,280 @@
-/**
- * 商品分类 Mock 处理器
- */
-import { http, HttpResponse } from 'msw';
-
-// 生成分类数据
-const generateCategories = (count = 20) => {
-  const categories = [];
-  const categoryNames = [
-    '电子产品',
-    '服装鞋帽',
-    '家居用品',
-    '美妆护肤',
-    '食品饮料',
-    '运动户外',
-    '图书音像',
-    '母婴用品',
-    '汽车用品',
-    '办公用品',
-    '珠宝首饰',
-    '手机数码',
-    '家用电器',
-    '箱包皮具',
-    '玩具乐器',
-    '医疗保健',
-    '五金工具',
-    '建材装修',
-    '农资园艺',
-    '宠物用品',
-  ];
-
-  for (let i = 1; i <= count; i++) {
-    const createTime = new Date(Date.now() - Math.random() * 365 * 24 * 60 * 60 * 1000);
-    const updateTime = new Date(createTime.getTime() + Math.random() * 30 * 24 * 60 * 60 * 1000);
-
-    categories.push({
-      id: i,
-      title: categoryNames[i - 1] || `分类${i}`,
-      sort: Math.floor(Math.random() * 100),
-      status: Math.random() > 0.2 ? 1 : 0, // 80% 启用
-      create_time: createTime.toISOString().slice(0, 19).replace('T', ' '),
-      update_time: updateTime.toISOString().slice(0, 19).replace('T', ' '),
-    });
-  }
-
-  return categories.sort((a, b) => b.id - a.id); // 按ID倒序
-};
-
-// 模拟数据
-let mockCategories = generateCategories(20);
-
-// 分页函数
-const paginate = (data, page = 1, perPage = 10) => {
-  const start = (page - 1) * perPage;
-  const end = start + perPage;
-  const paginatedData = data.slice(start, end);
-
-  return {
-    data: paginatedData,
-    current_page: page,
-    per_page: perPage,
-    total: data.length,
-    last_page: Math.ceil(data.length / perPage),
-  };
-};
-
-// 搜索过滤函数
-const filterCategories = (categories, searchParams) => {
-  let filtered = [...categories];
-
-  // 按名称搜索
-  if (searchParams.name) {
-    filtered = filtered.filter((item) =>
-      item.title.toLowerCase().includes(searchParams.name.toLowerCase()),
-    );
-  }
-
-  return filtered;
-};
-
-// 排序函数
-const sortCategories = (categories, sort, order) => {
-  if (!sort) return categories;
-
-  return [...categories].sort((a, b) => {
-    let aVal = a[sort];
-    let bVal = b[sort];
-
-    // 处理数字类型
-    if (sort === 'id' || sort === 'sort') {
-      aVal = Number(aVal);
-      bVal = Number(bVal);
-    }
-
-    if (order === 'asc') {
-      return aVal > bVal ? 1 : -1;
-    } else {
-      return aVal < bVal ? 1 : -1;
-    }
-  });
-};
-
-export const categoryHandlers = [
-  // 获取分类列表
-  http.get('https://shop.trust-will.com/shop/admin/category_tag', ({ request }) => {
-    const url = new URL(request.url);
-    const page = parseInt(url.searchParams.get('page') || '1');
-    const list_rows = parseInt(url.searchParams.get('list_rows') || '10');
-    const sort = url.searchParams.get('sort') || 'id';
-    const order = url.searchParams.get('order') || 'desc';
-    const name = url.searchParams.get('name') || '';
-
-    // 搜索过滤
-    let filtered = filterCategories(mockCategories, { name });
-
-    // 排序
-    filtered = sortCategories(filtered, sort, order);
-
-    // 分页
-    const result = paginate(filtered, page, list_rows);
-
-    return HttpResponse.json({
-      error: 0,
-      msg: 'success',
-      data: result,
-    });
-  }),
-
-  // 获取分类详情
-  http.get('https://shop.trust-will.com/shop/admin/category_tag/:id', ({ params }) => {
-    const { id } = params;
-    const category = mockCategories.find((item) => item.id == id);
-
-    if (category) {
-      return HttpResponse.json({
-        error: 0,
-        msg: 'success',
-        data: category,
-      });
-    } else {
-      return HttpResponse.json({
-        error: 1,
-        msg: '分类不存在',
-        data: null,
-      });
-    }
-  }),
-
-  // 新增分类
-  http.post('https://shop.trust-will.com/shop/admin/category_tag', async ({ request }) => {
-    const body = await request.json();
-    const { title, sort = 0 } = body;
-
-    if (!title) {
-      return HttpResponse.json({
-        error: 1,
-        msg: '分类名称不能为空',
-        data: null,
-      });
-    }
-
-    const newId = Math.max(...mockCategories.map((item) => item.id)) + 1;
-    const now = new Date().toISOString().slice(0, 19).replace('T', ' ');
-
-    const newCategory = {
-      id: newId,
-      title,
-      sort: parseInt(sort),
-      status: 1,
-      create_time: now,
-      update_time: now,
-    };
-
-    mockCategories.unshift(newCategory);
-
-    return HttpResponse.json({
-      error: 0,
-      msg: '添加成功',
-      data: newCategory,
-    });
-  }),
-
-  // 编辑分类
-  http.put(
-    'https://shop.trust-will.com/shop/admin/category_tag/:id',
-    async ({ params, request }) => {
-      const { id } = params;
-      const body = await request.json();
-      const { title, sort } = body;
-
-      const index = mockCategories.findIndex((item) => item.id == id);
-
-      if (index === -1) {
-        return HttpResponse.json({
-          error: 1,
-          msg: '分类不存在',
-          data: null,
-        });
-      }
-
-      if (!title) {
-        return HttpResponse.json({
-          error: 1,
-          msg: '分类名称不能为空',
-          data: null,
-        });
-      }
-
-      const now = new Date().toISOString().slice(0, 19).replace('T', ' ');
-
-      mockCategories[index] = {
-        ...mockCategories[index],
-        title,
-        sort: parseInt(sort || 0),
-        update_time: now,
-      };
-
-      return HttpResponse.json({
-        error: 0,
-        msg: '更新成功',
-        data: mockCategories[index],
-      });
-    },
-  ),
-
-  // 删除分类
-  http.delete('https://shop.trust-will.com/shop/admin/category_tag/:id', ({ params }) => {
-    const { id } = params;
-    const ids = id.split(',').map((item) => parseInt(item));
-
-    // 批量删除
-    mockCategories = mockCategories.filter((item) => !ids.includes(item.id));
-
-    return HttpResponse.json({
-      error: 0,
-      msg: '删除成功',
-      data: null,
-    });
-  }),
-
-  // 获取分类选择列表(用于其他模块选择分类)
-  http.get('https://shop.trust-will.com/shop/admin/category_tag/select', () => {
-    const selectData = mockCategories
-      .filter((item) => item.status === 1)
-      .map((item) => ({
-        value: item.id,
-        label: item.title,
-        sort: item.sort,
-      }))
-      .sort((a, b) => a.sort - b.sort);
-
-    return HttpResponse.json({
-      error: 0,
-      msg: 'success',
-      data: selectData,
-    });
-  }),
-];
+// /**
+//  * 商品分类 Mock 处理器
+//  */
+// import { http, HttpResponse } from 'msw';
+
+// // 生成分类数据
+// const generateCategories = (count = 20) => {
+//   const categories = [];
+//   const categoryNames = [
+//     '电子产品',
+//     '服装鞋帽',
+//     '家居用品',
+//     '美妆护肤',
+//     '食品饮料',
+//     '运动户外',
+//     '图书音像',
+//     '母婴用品',
+//     '汽车用品',
+//     '办公用品',
+//     '珠宝首饰',
+//     '手机数码',
+//     '家用电器',
+//     '箱包皮具',
+//     '玩具乐器',
+//     '医疗保健',
+//     '五金工具',
+//     '建材装修',
+//     '农资园艺',
+//     '宠物用品',
+//   ];
+
+//   for (let i = 1; i <= count; i++) {
+//     const createTime = new Date(Date.now() - Math.random() * 365 * 24 * 60 * 60 * 1000);
+//     const updateTime = new Date(createTime.getTime() + Math.random() * 30 * 24 * 60 * 60 * 1000);
+
+//     categories.push({
+//       id: i,
+//       title: categoryNames[i - 1] || `分类${i}`,
+//       sort: Math.floor(Math.random() * 100),
+//       status: Math.random() > 0.2 ? 1 : 0, // 80% 启用
+//       create_time: createTime.toISOString().slice(0, 19).replace('T', ' '),
+//       update_time: updateTime.toISOString().slice(0, 19).replace('T', ' '),
+//     });
+//   }
+
+//   return categories.sort((a, b) => b.id - a.id); // 按ID倒序
+// };
+
+// // 模拟数据
+// let mockCategories = generateCategories(20);
+
+// // 分页函数
+// const paginate = (data, page = 1, perPage = 10) => {
+//   const start = (page - 1) * perPage;
+//   const end = start + perPage;
+//   const paginatedData = data.slice(start, end);
+
+//   return {
+//     data: paginatedData,
+//     current_page: page,
+//     per_page: perPage,
+//     total: data.length,
+//     last_page: Math.ceil(data.length / perPage),
+//   };
+// };
+
+// // 搜索过滤函数
+// const filterCategories = (categories, searchParams) => {
+//   let filtered = [...categories];
+
+//   // 按名称搜索
+//   if (searchParams.name) {
+//     filtered = filtered.filter((item) =>
+//       item.title.toLowerCase().includes(searchParams.name.toLowerCase()),
+//     );
+//   }
+
+//   return filtered;
+// };
+
+// // 排序函数
+// const sortCategories = (categories, sort, order) => {
+//   if (!sort) return categories;
+
+//   return [...categories].sort((a, b) => {
+//     let aVal = a[sort];
+//     let bVal = b[sort];
+
+//     // 处理数字类型
+//     if (sort === 'id' || sort === 'sort') {
+//       aVal = Number(aVal);
+//       bVal = Number(bVal);
+//     }
+
+//     if (order === 'asc') {
+//       return aVal > bVal ? 1 : -1;
+//     } else {
+//       return aVal < bVal ? 1 : -1;
+//     }
+//   });
+// };
+
+// export const categoryHandlers = [
+//   // 获取分类列表
+//   http.post('*/category/list', async ({ request }) => {
+//     const data = await request.json();
+//     const { page = 1, size = 10, sort = 'id', order = 'desc', name = '' } = data;
+
+//     // 搜索过滤
+//     let filtered = filterCategories(mockCategories, { name });
+
+//     // 排序
+//     filtered = sortCategories(filtered, sort, order);
+
+//     // 分页处理
+//     const total = filtered.length;
+//     const startIndex = (page - 1) * size;
+//     const endIndex = startIndex + size;
+//     const list = filtered.slice(startIndex, endIndex);
+
+//     return HttpResponse.json({
+//       code: '200',
+//       message: '操作成功',
+//       data: {
+//         list: list,
+//         total: total,
+//         pageNum: page,
+//         pageSize: size,
+//         pages: Math.ceil(total / size),
+//         size: list.length,
+//         startRow: startIndex + 1,
+//         endRow: startIndex + list.length,
+//         hasNextPage: page < Math.ceil(total / size),
+//         hasPreviousPage: page > 1,
+//         isFirstPage: page === 1,
+//         isLastPage: page >= Math.ceil(total / size),
+//         firstPage: 1,
+//         lastPage: Math.ceil(total / size),
+//         navigatePages: 8,
+//         navigatepageNums: [],
+//         navigateFirstPage: 1,
+//         navigateLastPage: Math.ceil(total / size),
+//         nextPage: page < Math.ceil(total / size) ? page + 1 : 0,
+//         prePage: page > 1 ? page - 1 : 0,
+//       },
+//     });
+//   }),
+
+//   // 获取分类详情
+//   http.post('*/category/detail', async ({ request }) => {
+//     const data = await request.json();
+//     const { id } = data;
+//     const category = mockCategories.find((item) => item.id == id);
+
+//     if (category) {
+//       return HttpResponse.json({
+//         code: '200',
+//         message: '操作成功',
+//         data: category,
+//       });
+//     } else {
+//       return HttpResponse.json({
+//         code: '500',
+//         message: '分类不存在',
+//         data: null,
+//       });
+//     }
+//   }),
+
+//   // 新增分类
+//   http.post('*/category/add', async ({ request }) => {
+//     const body = await request.json();
+//     const { title, sort = 0 } = body;
+
+//     if (!title) {
+//       return HttpResponse.json({
+//         code: '500',
+//         message: '分类名称不能为空',
+//         data: null,
+//       });
+//     }
+
+//     const newId = Math.max(...mockCategories.map((item) => item.id)) + 1;
+//     const now = new Date().toISOString().slice(0, 19).replace('T', ' ');
+
+//     const newCategory = {
+//       id: newId,
+//       title,
+//       sort: parseInt(sort),
+//       status: 1,
+//       create_time: now,
+//       update_time: now,
+//     };
+
+//     mockCategories.unshift(newCategory);
+
+//     return HttpResponse.json({
+//       code: '200',
+//       message: '添加成功',
+//       data: newCategory,
+//     });
+//   }),
+
+//   // 编辑分类
+//   http.put(
+//     'https://shop.trust-will.com/shop/admin/category_tag/:id',
+//     async ({ params, request }) => {
+//       const { id } = params;
+//       const body = await request.json();
+//       const { title, sort } = body;
+
+//       const index = mockCategories.findIndex((item) => item.id == id);
+
+//       if (index === -1) {
+//         return HttpResponse.json({
+//           error: 1,
+//           msg: '分类不存在',
+//           data: null,
+//         });
+//       }
+
+//       if (!title) {
+//         return HttpResponse.json({
+//           error: 1,
+//           msg: '分类名称不能为空',
+//           data: null,
+//         });
+//       }
+
+//       const now = new Date().toISOString().slice(0, 19).replace('T', ' ');
+
+//       mockCategories[index] = {
+//         ...mockCategories[index],
+//         title,
+//         sort: parseInt(sort || 0),
+//         update_time: now,
+//       };
+
+//       return HttpResponse.json({
+//         error: 0,
+//         msg: '更新成功',
+//         data: mockCategories[index],
+//       });
+//     },
+//   ),
+
+//   // 删除分类
+//   http.delete('https://shop.trust-will.com/shop/admin/category_tag/:id', ({ params }) => {
+//     const { id } = params;
+//     const ids = id.split(',').map((item) => parseInt(item));
+
+//     // 批量删除
+//     mockCategories = mockCategories.filter((item) => !ids.includes(item.id));
+
+//     return HttpResponse.json({
+//       error: 0,
+//       msg: '删除成功',
+//       data: null,
+//     });
+//   }),
+
+//   // 获取分类选择列表(用于其他模块选择分类)
+//   http.get('https://shop.trust-will.com/shop/admin/category_tag/select', () => {
+//     const selectData = mockCategories
+//       .filter((item) => item.status === 1)
+//       .map((item) => ({
+//         value: item.id,
+//         label: item.title,
+//         sort: item.sort,
+//       }))
+//       .sort((a, b) => a.sort - b.sort);
+
+//     return HttpResponse.json({
+//       error: 0,
+//       msg: 'success',
+//       data: selectData,
+//     });
+//   }),
+// ];
+export const categoryHandlers = [];

+ 36 - 27
src/sheep/mock/handlers/commission.js

@@ -7,7 +7,7 @@ export const commissionHandlers = [
     const url = new URL(request.url);
     const params = {
       page: parseInt(url.searchParams.get('page') || '1'),
-      list_rows: parseInt(url.searchParams.get('list_rows') || '10'),
+      size: parseInt(url.searchParams.get('size') || '10'),
       username: url.searchParams.get('username') || '',
       phone: url.searchParams.get('phone') || '',
       commission_no: url.searchParams.get('commission_no') || '',
@@ -49,17 +49,20 @@ export const commissionHandlers = [
   }),
 
   // 更新佣金记录
-  http.put('https://shop.trust-will.com/shop/admin/finance/commission/:id', async ({ params, request }) => {
-    const body = await request.json();
-    return HttpResponse.json({
-      error: 0,
-      msg: '更新成功',
-      data: {
-        id: params.id,
-        ...body,
-      },
-    });
-  }),
+  http.put(
+    'https://shop.trust-will.com/shop/admin/finance/commission/:id',
+    async ({ params, request }) => {
+      const body = await request.json();
+      return HttpResponse.json({
+        error: 0,
+        msg: '更新成功',
+        data: {
+          id: params.id,
+          ...body,
+        },
+      });
+    },
+  ),
 
   // 删除佣金记录
   http.delete('https://shop.trust-will.com/shop/admin/finance/commission/:id', ({ params }) => {
@@ -71,21 +74,27 @@ export const commissionHandlers = [
   }),
 
   // 结算佣金
-  http.post('https://shop.trust-will.com/shop/admin/finance/commission/:id/settle', ({ params }) => {
-    return HttpResponse.json({
-      error: 0,
-      msg: '结算成功',
-      data: null,
-    });
-  }),
+  http.post(
+    'https://shop.trust-will.com/shop/admin/finance/commission/:id/settle',
+    ({ params }) => {
+      return HttpResponse.json({
+        error: 0,
+        msg: '结算成功',
+        data: null,
+      });
+    },
+  ),
 
   // 批量结算佣金
-  http.post('https://shop.trust-will.com/shop/admin/finance/commission/batch-settle', async ({ request }) => {
-    const body = await request.json();
-    return HttpResponse.json({
-      error: 0,
-      msg: '批量结算成功',
-      data: null,
-    });
-  }),
+  http.post(
+    'https://shop.trust-will.com/shop/admin/finance/commission/batch-settle',
+    async ({ request }) => {
+      const body = await request.json();
+      return HttpResponse.json({
+        error: 0,
+        msg: '批量结算成功',
+        data: null,
+      });
+    },
+  ),
 ];

+ 1 - 1
src/sheep/mock/handlers/goods.js

@@ -198,7 +198,7 @@ export const goodsHandlers = [
     const url = new URL(request.url);
     const status = url.searchParams.get('status') || 'all';
     const page = parseInt(url.searchParams.get('page')) || 1;
-    const per_page = parseInt(url.searchParams.get('list_rows')) || 10;
+    const per_page = parseInt(url.searchParams.get('size')) || 10;
 
     let filteredData = goodsList.data;
 

+ 2 - 1
src/sheep/mock/handlers/index.js

@@ -9,6 +9,7 @@ import { orderHandlers } from './order.js';
 import { userHandlers } from './user.js';
 import { commissionHandlers } from './commission.js';
 import { roleHandlers } from './role.js';
+import { adminHandlers } from './admin.js';
 
 // 合并所有处理器
 export const handlers = [
@@ -20,8 +21,8 @@ export const handlers = [
   ...userHandlers,
   ...commissionHandlers,
   ...roleHandlers,
+  ...adminHandlers,
   // 后续可以添加更多处理器
-  // ...adminHandlers,
 ];
 
 export default handlers;

+ 28 - 31
src/sheep/mock/handlers/order.js

@@ -7,37 +7,34 @@ import { orderDetailResponse } from '../data/order-detail.js';
 import { createSuccessResponse, createErrorResponse } from '../utils.js';
 
 // 订单列表接口
-const orderListHandler = http.get(
-  'https://shop.trust-will.com/shop/admin/order/order',
-  ({ request }) => {
-    const url = new URL(request.url);
-    const page = parseInt(url.searchParams.get('page')) || 1;
-    const listRows = parseInt(url.searchParams.get('list_rows')) || 10;
-    const status = url.searchParams.get('status') || 'all';
-
-    // 生成订单数据
-    const orders = generateOrderList(page, listRows);
-
-    // 根据状态过滤数据
-    let filteredOrders = orders;
-    if (status !== 'all') {
-      filteredOrders = orders.filter((order) => order.status === status);
-    }
-
-    const response = {
-      orders: {
-        current_page: page,
-        per_page: listRows,
-        total: 100,
-        last_page: Math.ceil(100 / listRows),
-        data: filteredOrders,
-      },
-      ...orderStats,
-    };
-
-    return HttpResponse.json(createSuccessResponse(response));
-  },
-);
+const orderListHandler = http.get('*/order/list', ({ request }) => {
+  const url = new URL(request.url);
+  const page = parseInt(url.searchParams.get('page')) || 1;
+  const listRows = parseInt(url.searchParams.get('size')) || 10;
+  const status = url.searchParams.get('status') || 'all';
+
+  // 生成订单数据
+  const orders = generateOrderList(page, listRows);
+
+  // 根据状态过滤数据
+  let filteredOrders = orders;
+  if (status !== 'all') {
+    filteredOrders = orders.filter((order) => order.status === status);
+  }
+
+  const response = {
+    orders: {
+      current_page: page,
+      per_page: listRows,
+      total: 100,
+      last_page: Math.ceil(100 / listRows),
+      data: filteredOrders,
+    },
+    ...orderStats,
+  };
+
+  return HttpResponse.json(createSuccessResponse(response));
+});
 
 // 订单类型接口
 const orderTypeHandler = http.get(

+ 20 - 27
src/sheep/mock/handlers/role.js

@@ -3,52 +3,45 @@ import { roleMockData } from '../role.js';
 
 export const roleHandlers = [
   // 获取角色列表
-  http.get('https://shop.trust-will.com/admin/auth/role', ({ request }) => {
-    const url = new URL(request.url);
-    const params = {
-      page: parseInt(url.searchParams.get('page') || '1'),
-      list_rows: parseInt(url.searchParams.get('list_rows') || '10'),
-      name: url.searchParams.get('name') || '',
-      status: url.searchParams.get('status') || 'all',
-      order: url.searchParams.get('order') || '',
-      sort: url.searchParams.get('sort') || '',
-    };
-
-    const result = roleMockData.getList(params);
+  http.post('*/role/list', async ({ request }) => {
+    const data = await request.json();
+    const result = roleMockData.getList(data);
     return HttpResponse.json(result);
   }),
 
   // 获取角色详情
-  http.get('https://shop.trust-will.com/admin/auth/role/:id', ({ params }) => {
-    const result = roleMockData.getDetail(params.id);
+  http.post('*/role/detail', async ({ request }) => {
+    const data = await request.json();
+    const result = roleMockData.getDetail(data.id);
     return HttpResponse.json(result);
   }),
 
   // 创建角色
-  http.post('https://shop.trust-will.com/admin/auth/role', async ({ request }) => {
-    const body = await request.json();
-    const result = roleMockData.create(body);
+  http.post('*/role/add', async ({ request }) => {
+    const data = await request.json();
+    const result = roleMockData.create(data);
     return HttpResponse.json(result);
   }),
 
   // 更新角色
-  http.put('https://shop.trust-will.com/admin/auth/role/:id', async ({ params, request }) => {
-    const body = await request.json();
-    const result = roleMockData.update(params.id, body);
+  http.post('*/role/edit', async ({ request }) => {
+    const data = await request.json();
+    const result = roleMockData.update(data.id, data);
     return HttpResponse.json(result);
   }),
 
   // 删除角色
-  http.delete('https://shop.trust-will.com/admin/auth/role/:id', ({ params }) => {
-    const result = roleMockData.delete(params.id);
+  http.post('*/role/delete', async ({ request }) => {
+    const data = await request.json();
+    const result = roleMockData.delete(data.id);
     return HttpResponse.json(result);
   }),
 
   // 获取角色选择列表(用于级联选择)
-  http.get('https://shop.trust-will.com/admin/auth/role/select', () => {
+  http.post('*/role/select', async ({ request }) => {
     const selectData = roleMockData.list
-      .filter(item => item.status === 'normal')
-      .map(item => ({
+      .filter((item) => item.status === 'normal')
+      .map((item) => ({
         id: item.id,
         name: item.name,
         value: item.id,
@@ -56,8 +49,8 @@ export const roleHandlers = [
       }));
 
     return HttpResponse.json({
-      error: 0,
-      msg: 'success',
+      code: '200',
+      message: '操作成功',
       data: selectData,
     });
   }),

+ 7 - 7
src/sheep/mock/handlers/user.js

@@ -77,7 +77,7 @@ export const userHandlers = [
   http.get('https://shop.trust-will.com/shop/admin/user/list', ({ request }) => {
     const url = new URL(request.url);
     const page = parseInt(url.searchParams.get('page') || '1');
-    const pageSize = parseInt(url.searchParams.get('list_rows') || '10');
+    const pageSize = parseInt(url.searchParams.get('size') || '10');
     const username = url.searchParams.get('username') || '';
     const mobile = url.searchParams.get('mobile') || '';
     const status = url.searchParams.get('status') || '';
@@ -236,7 +236,7 @@ export const userHandlers = [
   http.get('https://shop.trust-will.com/shop/admin/user/list/:id/orders', ({ params, request }) => {
     const url = new URL(request.url);
     const page = parseInt(url.searchParams.get('page') || '1');
-    const pageSize = parseInt(url.searchParams.get('list_rows') || '10');
+    const pageSize = parseInt(url.searchParams.get('size') || '10');
 
     // 生成订单数据
     const orders = Array.from({ length: 20 }, (_, index) => ({
@@ -273,7 +273,7 @@ export const userHandlers = [
     ({ params, request }) => {
       const url = new URL(request.url);
       const page = parseInt(url.searchParams.get('page') || '1');
-      const pageSize = parseInt(url.searchParams.get('list_rows') || '10');
+      const pageSize = parseInt(url.searchParams.get('size') || '10');
 
       const subordinates = Array.from({ length: 15 }, (_, index) => ({
         id: index + 1,
@@ -299,7 +299,7 @@ export const userHandlers = [
     ({ params, request }) => {
       const url = new URL(request.url);
       const page = parseInt(url.searchParams.get('page') || '1');
-      const pageSize = parseInt(url.searchParams.get('list_rows') || '10');
+      const pageSize = parseInt(url.searchParams.get('size') || '10');
 
       const commissions = Array.from({ length: 25 }, (_, index) => ({
         commission_id: `COM${String(index + 1).padStart(6, '0')}`,
@@ -326,7 +326,7 @@ export const userHandlers = [
     ({ params, request }) => {
       const url = new URL(request.url);
       const page = parseInt(url.searchParams.get('page') || '1');
-      const pageSize = parseInt(url.searchParams.get('list_rows') || '10');
+      const pageSize = parseInt(url.searchParams.get('size') || '10');
 
       const recharges = Array.from({ length: 18 }, (_, index) => ({
         id: index + 1,
@@ -355,7 +355,7 @@ export const userHandlers = [
     ({ params, request }) => {
       const url = new URL(request.url);
       const page = parseInt(url.searchParams.get('page') || '1');
-      const pageSize = parseInt(url.searchParams.get('list_rows') || '10');
+      const pageSize = parseInt(url.searchParams.get('size') || '10');
 
       const withdraws = Array.from({ length: 12 }, (_, index) => ({
         id: index + 1,
@@ -388,7 +388,7 @@ export const userHandlers = [
     ({ params, request }) => {
       const url = new URL(request.url);
       const page = parseInt(url.searchParams.get('page') || '1');
-      const pageSize = parseInt(url.searchParams.get('list_rows') || '10');
+      const pageSize = parseInt(url.searchParams.get('size') || '10');
 
       const addresses = Array.from({ length: 5 }, (_, index) => ({
         id: index + 1,

+ 26 - 11
src/sheep/mock/recharge.js

@@ -187,21 +187,36 @@ export const rechargeMockData = {
 
     // 分页
     const page = parseInt(params.page) || 1;
-    const listRows = parseInt(params.list_rows) || 10;
+    const listRows = parseInt(params.size) || 10;
     const total = filteredList.length;
     const start = (page - 1) * listRows;
     const end = start + listRows;
     const data = filteredList.slice(start, end);
 
     return {
-      error: 0,
-      msg: '获取成功',
+      code: '200',
+      message: '操作成功',
       data: {
-        data: data,
-        current_page: page,
-        per_page: listRows,
+        list: data,
         total: total,
-        last_page: Math.ceil(total / listRows),
+        pageNum: page,
+        pageSize: listRows,
+        pages: Math.ceil(total / listRows),
+        size: data.length,
+        startRow: start + 1,
+        endRow: start + data.length,
+        hasNextPage: page < Math.ceil(total / listRows),
+        hasPreviousPage: page > 1,
+        isFirstPage: page === 1,
+        isLastPage: page >= Math.ceil(total / listRows),
+        firstPage: 1,
+        lastPage: Math.ceil(total / listRows),
+        navigatePages: 8,
+        navigatepageNums: [],
+        navigateFirstPage: 1,
+        navigateLastPage: Math.ceil(total / listRows),
+        nextPage: page < Math.ceil(total / listRows) ? page + 1 : 0,
+        prePage: page > 1 ? page - 1 : 0,
       },
     };
   },
@@ -210,16 +225,16 @@ export const rechargeMockData = {
   getDetail: (id) => {
     const item = rechargeMockData.list.find((item) => item.id == id);
     return item
-      ? { error: 0, msg: '获取成功', data: { ...item } }
-      : { error: 1, msg: '记录不存在', data: null };
+      ? { code: '200', message: '操作成功', data: { ...item } }
+      : { code: '500', message: '记录不存在', data: null };
   },
 
   // 导出记录
   export: (params) => {
     // 模拟导出功能
     return {
-      error: 0,
-      msg: '导出成功',
+      code: '200',
+      message: '导出成功',
       data: {
         download_url: 'https://example.com/export/recharge_records.xlsx',
         filename: `充值记录_${new Date().toISOString().slice(0, 10)}.xlsx`,

+ 39 - 24
src/sheep/mock/role.js

@@ -152,7 +152,7 @@ export const roleMockData = {
 
   // 获取列表数据
   getList(params = {}) {
-    const { page = 1, list_rows = 10, name = '', status = 'all' } = params;
+    const { page = 1, size = 10, name = '', status = 'all' } = params;
 
     let filteredData = [...this.list];
 
@@ -170,19 +170,34 @@ export const roleMockData = {
 
     // 分页
     const total = filteredData.length;
-    const startIndex = (page - 1) * list_rows;
-    const endIndex = startIndex + list_rows;
+    const startIndex = (page - 1) * size;
+    const endIndex = startIndex + size;
     const data = filteredData.slice(startIndex, endIndex);
 
     return {
-      error: 0,
-      msg: 'success',
+      code: '200',
+      message: '操作成功',
       data: {
-        data,
-        total,
-        per_page: list_rows,
-        current_page: page,
-        last_page: Math.ceil(total / list_rows),
+        list: data,
+        total: total,
+        pageNum: page,
+        pageSize: size,
+        pages: Math.ceil(total / size),
+        size: data.length,
+        startRow: startIndex + 1,
+        endRow: startIndex + data.length,
+        hasNextPage: page < Math.ceil(total / size),
+        hasPreviousPage: page > 1,
+        isFirstPage: page === 1,
+        isLastPage: page >= Math.ceil(total / size),
+        firstPage: 1,
+        lastPage: Math.ceil(total / size),
+        navigatePages: 8,
+        navigatepageNums: [],
+        navigateFirstPage: 1,
+        navigateLastPage: Math.ceil(total / size),
+        nextPage: page < Math.ceil(total / size) ? page + 1 : 0,
+        prePage: page > 1 ? page - 1 : 0,
       },
     };
   },
@@ -192,15 +207,15 @@ export const roleMockData = {
     const item = this.list.find((item) => item.id == id);
     if (!item) {
       return {
-        error: 1,
-        msg: '记录不存在',
+        code: '500',
+        message: '记录不存在',
         data: null,
       };
     }
 
     return {
-      error: 0,
-      msg: 'success',
+      code: '200',
+      message: '操作成功',
       data: item,
     };
   },
@@ -216,8 +231,8 @@ export const roleMockData = {
     this.list.unshift(newRole);
 
     return {
-      error: 0,
-      msg: '创建成功',
+      code: '200',
+      message: '创建成功',
       data: newRole,
     };
   },
@@ -227,8 +242,8 @@ export const roleMockData = {
     const index = this.list.findIndex((item) => item.id == id);
     if (index === -1) {
       return {
-        error: 1,
-        msg: '记录不存在',
+        code: '500',
+        message: '记录不存在',
         data: null,
       };
     }
@@ -240,8 +255,8 @@ export const roleMockData = {
     };
 
     return {
-      error: 0,
-      msg: '更新成功',
+      code: '200',
+      message: '更新成功',
       data: this.list[index],
     };
   },
@@ -251,16 +266,16 @@ export const roleMockData = {
     const index = this.list.findIndex((item) => item.id == id);
     if (index === -1) {
       return {
-        error: 1,
-        msg: '记录不存在',
+        code: '500',
+        message: '记录不存在',
         data: null,
       };
     }
 
     this.list.splice(index, 1);
     return {
-      error: 0,
-      msg: '删除成功',
+      code: '200',
+      message: '删除成功',
       data: null,
     };
   },

+ 2 - 2
src/sheep/mock/utils.js

@@ -77,9 +77,9 @@ export const createSuccessResponse = (data = null, msg = '操作成功') => {
  * @param {*} data 响应数据
  * @returns {Object}
  */
-export const createErrorResponse = (msg, error = 1, data = null) => {
+export const createErrorResponse = (msg, code = 1, data = null) => {
   return {
-    error,
+    code,
     msg,
     data,
   };

+ 23 - 24
src/sheep/mock/withdraw.js

@@ -155,48 +155,46 @@ export const withdrawMockData = {
   // 分页查询方法
   getList: (params) => {
     let filteredList = [...withdrawMockData.list];
-    
+
     // 搜索过滤
     if (params.username) {
-      filteredList = filteredList.filter(item => 
-        item.username.toLowerCase().includes(params.username.toLowerCase())
+      filteredList = filteredList.filter((item) =>
+        item.username.toLowerCase().includes(params.username.toLowerCase()),
       );
     }
-    
+
     if (params.phone) {
-      filteredList = filteredList.filter(item => 
-        item.phone.includes(params.phone)
-      );
+      filteredList = filteredList.filter((item) => item.phone.includes(params.phone));
     }
-    
+
     if (params.order_no) {
-      filteredList = filteredList.filter(item => 
-        item.order_no.toLowerCase().includes(params.order_no.toLowerCase())
+      filteredList = filteredList.filter((item) =>
+        item.order_no.toLowerCase().includes(params.order_no.toLowerCase()),
       );
     }
-    
+
     if (params.status && params.status !== 'all') {
-      filteredList = filteredList.filter(item => item.status === params.status);
+      filteredList = filteredList.filter((item) => item.status === params.status);
     }
-    
+
     // 时间范围过滤
     if (params.start_time && params.end_time) {
-      filteredList = filteredList.filter(item => {
+      filteredList = filteredList.filter((item) => {
         const createTime = new Date(item.create_time);
         const startTime = new Date(params.start_time);
         const endTime = new Date(params.end_time);
         return createTime >= startTime && createTime <= endTime;
       });
     }
-    
+
     // 分页
     const page = parseInt(params.page) || 1;
-    const listRows = parseInt(params.list_rows) || 10;
+    const listRows = parseInt(params.size) || 10;
     const total = filteredList.length;
     const start = (page - 1) * listRows;
     const end = start + listRows;
     const data = filteredList.slice(start, end);
-    
+
     return {
       error: 0,
       msg: '获取成功',
@@ -206,15 +204,16 @@ export const withdrawMockData = {
         per_page: listRows,
         total: total,
         last_page: Math.ceil(total / listRows),
-      }
+      },
     };
   },
 
   // 获取详情
   getDetail: (id) => {
-    const item = withdrawMockData.list.find(item => item.id == id);
-    return item ? { error: 0, msg: '获取成功', data: {...item} } 
-                : { error: 1, msg: '记录不存在', data: null };
+    const item = withdrawMockData.list.find((item) => item.id == id);
+    return item
+      ? { error: 0, msg: '获取成功', data: { ...item } }
+      : { error: 1, msg: '记录不存在', data: null };
   },
 
   // 导出记录
@@ -225,8 +224,8 @@ export const withdrawMockData = {
       msg: '导出成功',
       data: {
         download_url: 'https://example.com/export/withdraw_records.xlsx',
-        filename: `提款记录_${new Date().toISOString().slice(0, 10)}.xlsx`
-      }
+        filename: `提款记录_${new Date().toISOString().slice(0, 10)}.xlsx`,
+      },
     };
-  }
+  },
 };

+ 20 - 11
src/sheep/request/crud.js

@@ -1,22 +1,30 @@
 import { request } from './index';
 
 // 查看列表
-export const LIST = (url, params) =>
-  request({
-    url,
-    params,
+export const LIST = (url, data) => {
+  // 分离分页参数和其他参数
+  const { page, size, ...otherParams } = data;
+
+  return request({
+    url: url + `/list`,
+    method: 'POST',
+    params: { page, size }, // 分页参数放在params中
+    data: otherParams, // 其他参数放在data中
   });
+};
 
 // 查看详情
 export const DETAIL = (url, id) =>
   request({
-    url: url + `/${id}`,
+    url: url + `/detail`,
+    method: 'POST',
+    params: { id },
   });
 
 // 新增
 export const ADD = (url, data) =>
   request({
-    url,
+    url: url + '/add',
     method: 'POST',
     data,
     options: {
@@ -25,10 +33,10 @@ export const ADD = (url, data) =>
   });
 
 // 编辑&更新
-export const EDIT = (url, id, data) =>
+export const EDIT = (url, data) =>
   request({
-    url: url + `/${id}`,
-    method: 'PUT',
+    url: url + `/update`,
+    method: 'POST',
     data,
     options: {
       showSuccessMessage: true,
@@ -38,8 +46,9 @@ export const EDIT = (url, id, data) =>
 // 删除(软删除/真实删除)
 export const DELETE = (url, id) =>
   request({
-    url: url + `/${id}`,
-    method: 'DELETE',
+    url: url + `/delete`,
+    method: 'POST',
+    params: { id },
     options: {
       showSuccessMessage: true,
     },

+ 1 - 1
src/sheep/request/index.js

@@ -63,7 +63,7 @@ request.interceptors.response.use(
     if (response.config.responseType === 'blob' && response.data.size > 0) {
       return Promise.resolve(response);
     }
-    if (response.data.error !== 0) {
+    if (response.data.code !== '200') {
       if (response.config.options.showErrorMessage)
         ElMessage.error(response.data.msg || '操作失败');
     } else {

+ 2 - 2
src/sheep/views/login/index.vue

@@ -156,10 +156,10 @@
       if (!valid) return;
       loginLoading.value = true;
       let submit = form.data;
-      const { error } = await accountStore.login(submit);
+      const { code } = await accountStore.login(submit);
       console.log(error);
       loginLoading.value = false;
-      if (error == 0) {
+      if (code == '200') {
         storage.set('lastLogin', login.last);
         await appStore.appLoad();
         router.push('/');

+ 7 - 0
vite.config.js

@@ -45,6 +45,13 @@ export default (command, mode) => {
       hmr: {
         overlay: true,
       },
+      proxy: {
+        '/mall': {
+          target: 'http://192.168.0.107:8101/',
+          changeOrigin: true,
+          // rewrite: (path) => path.replace(new RegExp(`^${API_BASE_URL}`), '/klk'),
+        },
+      },
     },
     build: {
       chunkSizeWarningLimit: 2000,