فهرست منبع

feat: fix propOptions to fallback

gemercheung 1 سال پیش
والد
کامیت
d710346373
100فایلهای تغییر یافته به همراه4274 افزوده شده و 15798 حذف شده
  1. 0 14
      .pnpm-debug.log
  2. 2 2
      .vscode/settings.json
  3. 7 4
      mock/sys/user.ts
  4. 4 4
      package.json
  5. 0 11731
      pnpm-lock.yaml
  6. 5 5
      src/App.vue
  7. 58 61
      src/api/account/index.ts
  8. 15 14
      src/api/customer/index.ts
  9. 9 8
      src/api/demo/error.ts
  10. 4 4
      src/api/device/index.ts
  11. 1 1
      src/api/device/model.ts
  12. 44 44
      src/api/equity/index.ts
  13. 1 1
      src/api/equity/model.ts
  14. 24 25
      src/api/finance/index.ts
  15. 31 31
      src/api/home/index.ts
  16. 128 128
      src/api/operate/index.ts
  17. 9 9
      src/api/operate/model.ts
  18. 96 90
      src/api/product/index.ts
  19. 3 4
      src/api/product/model.ts
  20. 15 15
      src/api/staff/list.ts
  21. 23 24
      src/api/statistics/index.ts
  22. 1 1
      src/api/sys/model/systemModel.ts
  23. 3 3
      src/api/sys/model/userModel.ts
  24. 4 4
      src/api/sys/system.ts
  25. 6 6
      src/api/sys/user.ts
  26. 1 1
      src/components/Application/src/AppLocalePicker.vue
  27. 1 1
      src/components/Application/src/AppLogo.vue
  28. 7 5
      src/components/Form/src/components/FormItem.vue
  29. 8 2
      src/components/Form/src/hooks/useForm.ts
  30. 2 2
      src/components/Form/src/hooks/useFormEvents.ts
  31. 1 12
      src/components/Icon/src/IconPicker.vue
  32. 3 1
      src/components/Table/src/components/TableImg.vue
  33. 3 1
      src/components/Tinymce/src/Editor.vue
  34. 1 1
      src/components/Tinymce/src/ImgUpload.vue
  35. 6 1
      src/components/Tree/src/Tree.vue
  36. 2 2
      src/components/Upload/src/FileList.vue
  37. 10 10
      src/components/Upload/src/UploadModal.vue
  38. 5 5
      src/components/Upload/src/UploadPreviewModal.vue
  39. 7 6
      src/components/Upload/src/data.tsx
  40. 7 7
      src/components/Upload/src/helper.ts
  41. 1 1
      src/layouts/default/header/components/Breadcrumb.vue
  42. 4 4
      src/layouts/default/header/components/user-dropdown/index.vue
  43. 29 27
      src/layouts/default/header/components/user-dropdown/setpaswordModal.vue
  44. 1 0
      src/locales/lang/en/routes/scene.ts
  45. 1 0
      src/locales/lang/zh-CN/routes/scene.ts
  46. 1 1
      src/locales/lang/zh_CN.ts
  47. 3 3
      src/router/helper/routeHelper.ts
  48. 1 1
      src/router/routes/modules/device.ts
  49. 1 1
      src/router/routes/modules/home.ts
  50. 1 1
      src/router/routes/modules/spares.ts
  51. 11 6
      src/router/routes/modules/work.ts
  52. 11 11
      src/store/modules/other.ts
  53. 6 6
      src/store/modules/permission.ts
  54. 16 15
      src/store/modules/user.ts
  55. 39 29
      src/utils/file/download.ts
  56. 22 21
      src/utils/http/axios/Axios.ts
  57. 16 15
      src/utils/http/axios/index.ts
  58. 37 30
      src/utils/index.ts
  59. 10 10
      src/utils/treeUtils.ts
  60. 14 6
      src/views/Accounting/ListModal.vue
  61. 1 1
      src/views/Accounting/index.vue
  62. 1 1
      src/views/U8Sending/index.vue
  63. 126 123
      src/views/dashboard/analysis/components/lineEcharts.vue
  64. 40 40
      src/views/dashboard/analysis/components/lineEcharts2.vue
  65. 44 44
      src/views/dashboard/analysis/components/orderEchart.vue
  66. 6 6
      src/views/dashboard/analysis/components/props.ts
  67. 203 173
      src/views/dashboard/analysis/index.vue
  68. 2 1
      src/views/dashboard/test/index.vue
  69. 5 5
      src/views/device/OutflowModal.vue
  70. 7 7
      src/views/device/batchPutModal.vue
  71. 192 185
      src/views/device/detailsMoadl.vue
  72. 275 266
      src/views/device/index.vue
  73. 14 14
      src/views/device/putModal.vue
  74. 78 64
      src/views/equity/DownModal.vue
  75. 110 89
      src/views/equity/EditModal.vue
  76. 289 286
      src/views/equity/InvoiceModal.vue
  77. 63 64
      src/views/equity/index.vue
  78. 77 67
      src/views/finance/EditModal.vue
  79. 108 103
      src/views/finance/InvoiceModal.vue
  80. 3 3
      src/views/finance/data.tsx
  81. 181 173
      src/views/finance/index.vue
  82. 120 94
      src/views/home/condition.vue
  83. 169 169
      src/views/home/faultType.vue
  84. 12 13
      src/views/home/index.vue
  85. 130 130
      src/views/home/lineEcharts.vue
  86. 45 39
      src/views/home/orderEchart.vue
  87. 122 121
      src/views/home/pieEchart.vue
  88. 6 6
      src/views/home/props.ts
  89. 61 52
      src/views/invoice/EditModal.vue
  90. 79 76
      src/views/invoice/InvoiceModal.vue
  91. 21 21
      src/views/invoice/data.tsx
  92. 46 44
      src/views/invoice/index.vue
  93. 196 184
      src/views/loglist/index.vue
  94. 377 377
      src/views/scene/list.vue
  95. 15 17
      src/views/scene/sxz.vue
  96. 15 17
      src/views/scene/viewKankan.vue
  97. 81 81
      src/views/spares/RoleDrawer.vue
  98. 156 155
      src/views/spares/detail.vue
  99. 16 9
      src/views/spares/list.vue
  100. 0 0
      src/views/spares/orderEntryModal.vue

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 14
.pnpm-debug.log


+ 2 - 2
.vscode/settings.json

@@ -90,11 +90,11 @@
     "editor.defaultFormatter": "esbenp.prettier-vscode"
     "editor.defaultFormatter": "esbenp.prettier-vscode"
   },
   },
   "editor.codeActionsOnSave": {
   "editor.codeActionsOnSave": {
-    "source.fixAll.eslint": true
+    "source.fixAll.eslint": "explicit"
   },
   },
   "[vue]": {
   "[vue]": {
     "editor.codeActionsOnSave": {
     "editor.codeActionsOnSave": {
-      "source.fixAll.eslint": false
+      "source.fixAll.eslint": "never"
     }
     }
   },
   },
   "i18n-ally.localesPaths": ["src/locales/lang"],
   "i18n-ally.localesPaths": ["src/locales/lang"],

+ 7 - 4
mock/sys/user.ts

@@ -10,7 +10,8 @@ export function createFakeUserList() {
       avatar: 'https://q1.qlogo.cn/g?b=qq&nk=190848757&s=640',
       avatar: 'https://q1.qlogo.cn/g?b=qq&nk=190848757&s=640',
       desc: 'manager',
       desc: 'manager',
       password: '123456',
       password: '123456',
-      token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsImRldmljZSI6ImRlZmF1bHQtZGV2aWNlIiwiZWZmIjotMSwicm5TdHIiOiJ6ZjI5a0k2V3RuaXZWeUMzall6NTRzM2ZVSVdSNEdUNSIsInVzZXJJZCI6MSwiaXNBZG1pbiI6MSwidXNlck5hbWUiOiJzdXBlci1hZG1pbiIsIm5pY2tOYW1lIjoic3VwZXItYWRtaW4ifQ.6Ax289ca_YfMnTs9Q5DtBIE3iVfD4cgVVnSRjeXfOuI',
+      token:
+        'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsImRldmljZSI6ImRlZmF1bHQtZGV2aWNlIiwiZWZmIjotMSwicm5TdHIiOiJ6ZjI5a0k2V3RuaXZWeUMzall6NTRzM2ZVSVdSNEdUNSIsInVzZXJJZCI6MSwiaXNBZG1pbiI6MSwidXNlck5hbWUiOiJzdXBlci1hZG1pbiIsIm5pY2tOYW1lIjoic3VwZXItYWRtaW4ifQ.6Ax289ca_YfMnTs9Q5DtBIE3iVfD4cgVVnSRjeXfOuI',
       homePath: '/dashboard/analysis',
       homePath: '/dashboard/analysis',
       roles: [
       roles: [
         {
         {
@@ -26,7 +27,8 @@ export function createFakeUserList() {
       realName: 'test user',
       realName: 'test user',
       avatar: 'https://q1.qlogo.cn/g?b=qq&nk=339449197&s=640',
       avatar: 'https://q1.qlogo.cn/g?b=qq&nk=339449197&s=640',
       desc: 'tester',
       desc: 'tester',
-      token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsImRldmljZSI6ImRlZmF1bHQtZGV2aWNlIiwiZWZmIjotMSwicm5TdHIiOiJ6ZjI5a0k2V3RuaXZWeUMzall6NTRzM2ZVSVdSNEdUNSIsInVzZXJJZCI6MSwiaXNBZG1pbiI6MSwidXNlck5hbWUiOiJzdXBlci1hZG1pbiIsIm5pY2tOYW1lIjoic3VwZXItYWRtaW4ifQ.6Ax289ca_YfMnTs9Q5DtBIE3iVfD4cgVVnSRjeXfOuI',
+      token:
+        'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsImRldmljZSI6ImRlZmF1bHQtZGV2aWNlIiwiZWZmIjotMSwicm5TdHIiOiJ6ZjI5a0k2V3RuaXZWeUMzall6NTRzM2ZVSVdSNEdUNSIsInVzZXJJZCI6MSwiaXNBZG1pbiI6MSwidXNlck5hbWUiOiJzdXBlci1hZG1pbiIsIm5pY2tOYW1lIjoic3VwZXItYWRtaW4ifQ.6Ax289ca_YfMnTs9Q5DtBIE3iVfD4cgVVnSRjeXfOuI',
       homePath: '/dashboard/workbench',
       homePath: '/dashboard/workbench',
       roles: [
       roles: [
         {
         {
@@ -42,7 +44,8 @@ export function createFakeUserList() {
       realName: 'test user',
       realName: 'test user',
       avatar: 'https://q1.qlogo.cn/g?b=qq&nk=339449197&s=640',
       avatar: 'https://q1.qlogo.cn/g?b=qq&nk=339449197&s=640',
       desc: 'tester',
       desc: 'tester',
-      token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsImRldmljZSI6ImRlZmF1bHQtZGV2aWNlIiwiZWZmIjotMSwicm5TdHIiOiJ6ZjI5a0k2V3RuaXZWeUMzall6NTRzM2ZVSVdSNEdUNSIsInVzZXJJZCI6MSwiaXNBZG1pbiI6MSwidXNlck5hbWUiOiJzdXBlci1hZG1pbiIsIm5pY2tOYW1lIjoic3VwZXItYWRtaW4ifQ.6Ax289ca_YfMnTs9Q5DtBIE3iVfD4cgVVnSRjeXfOuI',
+      token:
+        'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsImRldmljZSI6ImRlZmF1bHQtZGV2aWNlIiwiZWZmIjotMSwicm5TdHIiOiJ6ZjI5a0k2V3RuaXZWeUMzall6NTRzM2ZVSVdSNEdUNSIsInVzZXJJZCI6MSwiaXNBZG1pbiI6MSwidXNlck5hbWUiOiJzdXBlci1hZG1pbiIsIm5pY2tOYW1lIjoic3VwZXItYWRtaW4ifQ.6Ax289ca_YfMnTs9Q5DtBIE3iVfD4cgVVnSRjeXfOuI',
       homePath: '/dashboard/workbench',
       homePath: '/dashboard/workbench',
       roles: [
       roles: [
         {
         {
@@ -67,7 +70,7 @@ export default [
     method: 'post',
     method: 'post',
     response: ({ body }) => {
     response: ({ body }) => {
       const { username, password } = body;
       const { username, password } = body;
-      console.log('token',body)
+      console.log('token', body);
       const checkUser = createFakeUserList().find(
       const checkUser = createFakeUserList().find(
         (item) => item.username === username && password === item.password,
         (item) => item.username === username && password === item.password,
       );
       );

+ 4 - 4
package.json

@@ -127,7 +127,7 @@
     "vite": "^2.6.13",
     "vite": "^2.6.13",
     "vite-plugin-compression": "^0.3.5",
     "vite-plugin-compression": "^0.3.5",
     "vite-plugin-html": "^2.1.1",
     "vite-plugin-html": "^2.1.1",
-    "vite-plugin-imagemin": "^0.4.6",
+    "vite-plugin-imagemin": "^0.6.1",
     "vite-plugin-mock": "^2.9.6",
     "vite-plugin-mock": "^2.9.6",
     "vite-plugin-purge-icons": "^0.7.0",
     "vite-plugin-purge-icons": "^0.7.0",
     "vite-plugin-pwa": "^0.11.3",
     "vite-plugin-pwa": "^0.11.3",
@@ -140,9 +140,9 @@
     "vue-tsc": "^0.28.10"
     "vue-tsc": "^0.28.10"
   },
   },
   "resolutions": {
   "resolutions": {
-    "//": "Used to install imagemin dependencies, because imagemin may not be installed in China. If it is abroad, you can delete it",
-    "bin-wrapper": "npm:bin-wrapper-china",
-    "rollup": "^2.56.3"
+    "bin-wrapper": "npm:bin-wrapper-china@0.1.0",
+    "rollup": "^2.56.3",
+    "gifsicle": "5.2.0"
   },
   },
   "config": {
   "config": {
     "commitizen": {
     "commitizen": {

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 11731
pnpm-lock.yaml


+ 5 - 5
src/App.vue

@@ -20,10 +20,10 @@
 </script>
 </script>
 
 
 <style lang="less">
 <style lang="less">
-.desc-wrap-BasicTable {
-  background-color: #f0f2f5;
-  .vben-basic-table-form-container {
-    padding: 0;
+  .desc-wrap-BasicTable {
+    background-color: #f0f2f5;
+    .vben-basic-table-form-container {
+      padding: 0;
+    }
   }
   }
-}
 </style>
 </style>

+ 58 - 61
src/api/account/index.ts

@@ -1,8 +1,5 @@
 import { defHttp } from '/@/utils/http/axios';
 import { defHttp } from '/@/utils/http/axios';
-import {
-  PageParams,
-  userList,
-} from './model';
+import { PageParams, userList } from './model';
 import { Result } from '/#/axios';
 import { Result } from '/#/axios';
 
 
 enum Api {
 enum Api {
@@ -33,78 +30,78 @@ export const ListApi = (params: PageParams) =>
 
 
 //权益详情
 //权益详情
 export const DetailsApi = (params: PageParams) =>
 export const DetailsApi = (params: PageParams) =>
-defHttp.post<userList>({
-  url: Api.getIncrementListByUserId,
-  params: params,
-  // data: params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
+  defHttp.post<userList>({
+    url: Api.getIncrementListByUserId,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
 //权益延期
 //权益延期
 export const IncrementDelayApi = (params: PageParams) =>
 export const IncrementDelayApi = (params: PageParams) =>
-defHttp.post<userList>({
-  url: Api.IncrementDelay,
-  params: params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
+  defHttp.post<userList>({
+    url: Api.IncrementDelay,
+    params: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
 //权益延期
 //权益延期
 export const dincrementList = (params: PageParams) =>
 export const dincrementList = (params: PageParams) =>
-defHttp.get<userList>({
-  url: Api.allList,
-  params: params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
+  defHttp.get<userList>({
+    url: Api.allList,
+    params: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
 //添加用户权益
 //添加用户权益
 export const AddUserIncrementApi = (params: PageParams) =>
 export const AddUserIncrementApi = (params: PageParams) =>
-defHttp.post<userList>({
-  url: Api.addUserIncrement,
-  params: params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
+  defHttp.post<userList>({
+    url: Api.addUserIncrement,
+    params: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
 //加用户下载次数
 //加用户下载次数
 export const AddDownNumApi = (params: PageParams) =>
 export const AddDownNumApi = (params: PageParams) =>
-defHttp.post<userList>({
-  url: Api.addDownNum,
-  params: params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
+  defHttp.post<userList>({
+    url: Api.addDownNum,
+    params: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
 //获取相机详情
 //获取相机详情
 export const GetCameraDetailApi = (params: PageParams) =>
 export const GetCameraDetailApi = (params: PageParams) =>
-defHttp.post<userList>({
-  url: Api.getCameraDetail,
-  params: params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
+  defHttp.post<userList>({
+    url: Api.getCameraDetail,
+    params: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
 //相机解绑
 //相机解绑
 export const UnbindCameraApi = (params: PageParams) =>
 export const UnbindCameraApi = (params: PageParams) =>
-defHttp.get<userList>({
-  url: Api.unbindCamera,
-  params: params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
+  defHttp.get<userList>({
+    url: Api.unbindCamera,
+    params: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });

+ 15 - 14
src/api/customer/index.ts

@@ -67,24 +67,25 @@ export const downTemplate = (params: companyExcelParams) =>
     method: 'GET',
     method: 'GET',
     url: Api.downTemplate,
     url: Api.downTemplate,
     params: params,
     params: params,
-    // data: params, 
-    fileName:params.type == 0?'入库模板.xlsx':params.type == 1?'出库模板.xlsx':'客户关联模板.xlsx',
+    // data: params,
+    fileName:
+      params.type == 0 ? '入库模板.xlsx' : params.type == 1 ? '出库模板.xlsx' : '客户关联模板.xlsx',
     headers: {
     headers: {
       // @ts-ignore
       // @ts-ignore
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
-    responseType: 'blob'
+    responseType: 'blob',
   });
   });
 
 
 export function companyUploadExcel(
 export function companyUploadExcel(
-    params: UploadFileParams,
-    onUploadProgress: (progressEvent: ProgressEvent) => void,
-  ) {
-    return defHttp.uploadFile<Result>(
-      {
-        url: Api.companyUploadExcel,
-        onUploadProgress,
-      },
-      params,
-    );
-   }
+  params: UploadFileParams,
+  onUploadProgress: (progressEvent: ProgressEvent) => void,
+) {
+  return defHttp.uploadFile<Result>(
+    {
+      url: Api.companyUploadExcel,
+      onUploadProgress,
+    },
+    params,
+  );
+}

+ 9 - 8
src/api/demo/error.ts

@@ -9,11 +9,12 @@ enum Api {
  * @description: Trigger ajax error
  * @description: Trigger ajax error
  */
  */
 
 
-export const fireErrorApi = (params) => defHttp.post({ 
-  url: Api.Error,
-  params: params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
+export const fireErrorApi = (params) =>
+  defHttp.post({
+    url: Api.Error,
+    params: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });

+ 4 - 4
src/api/device/index.ts

@@ -1,5 +1,5 @@
 import { defHttp } from '/@/utils/http/axios';
 import { defHttp } from '/@/utils/http/axios';
-import { PageParams} from './model';
+import { PageParams } from './model';
 import { Result } from '/#/axios';
 import { Result } from '/#/axios';
 
 
 enum Api {
 enum Api {
@@ -32,7 +32,7 @@ export const cameraDelete = (params: PageParams) =>
     },
     },
   });
   });
 
 
-  export const cameraUpdate = (params: PageParams) =>
+export const cameraUpdate = (params: PageParams) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: Api.getUpdate,
     url: Api.getUpdate,
     params: params,
     params: params,
@@ -43,7 +43,7 @@ export const cameraDelete = (params: PageParams) =>
     },
     },
   });
   });
 
 
-  export const cameraOut = (params: PageParams) =>
+export const cameraOut = (params: PageParams) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: Api.getOut,
     url: Api.getOut,
     params: params,
     params: params,
@@ -63,4 +63,4 @@ export const cameraIn = (params: PageParams) =>
       // @ts-ignore
       // @ts-ignore
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
-});
+  });

+ 1 - 1
src/api/device/model.ts

@@ -2,4 +2,4 @@ import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel';
 /**
 /**
  * @description: Request list interface parameters
  * @description: Request list interface parameters
  */
  */
-export type PageParams = BasicPageParams;
+export type PageParams = BasicPageParams;

+ 44 - 44
src/api/equity/index.ts

@@ -1,5 +1,5 @@
 import { defHttp } from '/@/utils/http/axios';
 import { defHttp } from '/@/utils/http/axios';
-import { listParams, checkParams, dincrementResult } from './model'
+import { listParams, checkParams, dincrementResult } from './model';
 import { Result } from '/#/axios';
 import { Result } from '/#/axios';
 
 
 enum Api {
 enum Api {
@@ -10,10 +10,10 @@ enum Api {
   allList = '/service/agent/incrementType/allList',
   allList = '/service/agent/incrementType/allList',
   addDowm = '/service/agent/down/add',
   addDowm = '/service/agent/down/add',
   dowmList = '/service/agent/down/list',
   dowmList = '/service/agent/down/list',
-  cameraIncrementLog = '/service/sale/operLog/pageOperLog'
+  cameraIncrementLog = '/service/sale/operLog/pageOperLog',
 }
 }
 
 
-export const listApi = (params:listParams) =>
+export const listApi = (params: listParams) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: Api.listApi,
     url: Api.listApi,
     params: params,
     params: params,
@@ -24,7 +24,7 @@ export const listApi = (params:listParams) =>
     },
     },
   });
   });
 
 
-export const dowmListApi = (params:listParams) =>
+export const dowmListApi = (params: listParams) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: Api.dowmList,
     url: Api.dowmList,
     params: params,
     params: params,
@@ -35,7 +35,7 @@ export const dowmListApi = (params:listParams) =>
     },
     },
   });
   });
 
 
-export const addApi = (params:checkParams) =>
+export const addApi = (params: checkParams) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: Api.incrementAdd,
     url: Api.incrementAdd,
     params: params,
     params: params,
@@ -48,15 +48,15 @@ export const addApi = (params:checkParams) =>
 
 
 //权益延期
 //权益延期
 export const dincrementList = (params) =>
 export const dincrementList = (params) =>
-defHttp.get<dincrementResult>({
-  url: Api.allList,
-  params: params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
-export const renewApi = (params:checkParams) =>
+  defHttp.get<dincrementResult>({
+    url: Api.allList,
+    params: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const renewApi = (params: checkParams) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: Api.incrementRenew,
     url: Api.incrementRenew,
     params: params,
     params: params,
@@ -67,35 +67,35 @@ export const renewApi = (params:checkParams) =>
     },
     },
   });
   });
 
 
-export const checkUserName = (params:checkParams) =>
-    defHttp.get<Result>({
-      url: Api.checkUserName,
-      params: params,
-      // data: params,
-      headers: {
-        // @ts-ignore
-        ignoreCancelToken: true,
-      },
-});
+export const checkUserName = (params: checkParams) =>
+  defHttp.get<Result>({
+    url: Api.checkUserName,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
-export const addDowm = (params:checkParams) =>
-    defHttp.post<Result>({
-      url: Api.addDowm,
-      params: params,
-      // data: params,
-      headers: {
-        // @ts-ignore
-        ignoreCancelToken: true,
-      },
-});
+export const addDowm = (params: checkParams) =>
+  defHttp.post<Result>({
+    url: Api.addDowm,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
-export const cameraIncrementLog = (params:checkParams) =>
-    defHttp.post<Result>({
-      url: Api.cameraIncrementLog,
-      params: params,
-      // data: params,
-      headers: {
-        // @ts-ignore
-        ignoreCancelToken: true,
-      },
-});
+export const cameraIncrementLog = (params: checkParams) =>
+  defHttp.post<Result>({
+    url: Api.cameraIncrementLog,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });

+ 1 - 1
src/api/equity/model.ts

@@ -13,4 +13,4 @@ export interface checkParams {
 }
 }
 export interface dincrementResult {
 export interface dincrementResult {
   list: [any];
   list: [any];
-}
+}

+ 24 - 25
src/api/finance/index.ts

@@ -13,42 +13,41 @@ enum Api {
  * @description: Get sample list value
  * @description: Get sample list value
  */
  */
 
 
- interface logDataResule {
+interface logDataResule {
   lastDownNum: number;
   lastDownNum: number;
   lastHighNum: number;
   lastHighNum: number;
   lastMajorNum: number;
   lastMajorNum: number;
 }
 }
- export const logData = (params) =>
- defHttp.get<logDataResule>({
-   url: Api.logData,
-   params: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
+export const logData = (params) =>
+  defHttp.get<logDataResule>({
+    url: Api.logData,
+    params: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
- 
- export const logList = (params) =>
- defHttp.post<Result>({
-   url: Api.logList,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
+export const logList = (params) =>
+  defHttp.post<Result>({
+    url: Api.logList,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
- export const DownExport = (params) =>
+export const DownExport = (params) =>
   defHttp.downloadFile<FileStream>({
   defHttp.downloadFile<FileStream>({
     url: Api.export + `?lang=${params.lang}`,
     url: Api.export + `?lang=${params.lang}`,
     params: params,
     params: params,
-    fileName:t('routes.equity.listTitle')+'.xlsx',
+    fileName: t('routes.equity.listTitle') + '.xlsx',
     // data: params,
     // data: params,
     headers: {
     headers: {
       // @ts-ignore
       // @ts-ignore
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
-    responseType: 'blob'
-  });
+    responseType: 'blob',
+  });

+ 31 - 31
src/api/home/index.ts

@@ -1,7 +1,7 @@
 import { defHttp } from '/@/utils/http/axios';
 import { defHttp } from '/@/utils/http/axios';
 import { PageParams, ListGetResultModel, DelParams, roleParams, companyExcelParams } from './model';
 import { PageParams, ListGetResultModel, DelParams, roleParams, companyExcelParams } from './model';
 import { Result, FileStream } from '/#/axios';
 import { Result, FileStream } from '/#/axios';
-let qjurl = window.location.host == 'v4-uat.4dkankan.com'?'https://test.4dkankan.com':''
+const qjurl = window.location.host == 'v4-uat.4dkankan.com' ? 'https://test.4dkankan.com' : '';
 enum Api {
 enum Api {
   buryPointList = '/service/sale/buryPoint/list',
   buryPointList = '/service/sale/buryPoint/list',
   buryPointAdd = '/service/sale/buryPoint/add',
   buryPointAdd = '/service/sale/buryPoint/add',
@@ -37,7 +37,7 @@ export const buryPointList = (params: PageParams) =>
     },
     },
   });
   });
 
 
-  export const buryPointAdd = (params: PageParams) =>
+export const buryPointAdd = (params: PageParams) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: Api.buryPointAdd,
     url: Api.buryPointAdd,
     params,
     params,
@@ -47,7 +47,7 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  export const buryPointDlt = (params: PageParams) =>
+export const buryPointDlt = (params: PageParams) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: Api.buryPointDlt,
     url: Api.buryPointDlt,
     params,
     params,
@@ -57,7 +57,7 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  export const userTotal = () =>
+export const userTotal = () =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.userTotal,
     url: Api.userTotal,
     headers: {
     headers: {
@@ -65,7 +65,7 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  export const userTrend = (params) =>
+export const userTrend = (params) =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.userTrend,
     url: Api.userTrend,
     params,
     params,
@@ -75,7 +75,7 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  export const orderTotal = () =>
+export const orderTotal = () =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.orderTotal,
     url: Api.orderTotal,
     headers: {
     headers: {
@@ -83,8 +83,8 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  
-  export const orderTrend = (params) =>
+
+export const orderTrend = (params) =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.orderTrend,
     url: Api.orderTrend,
     params,
     params,
@@ -94,8 +94,8 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  
-  export const cameraTrend = (params) =>
+
+export const cameraTrend = (params) =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.cameraTrend,
     url: Api.cameraTrend,
     params,
     params,
@@ -105,8 +105,8 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  
-  export const sceneTotal = () =>
+
+export const sceneTotal = () =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.sceneTotal,
     url: Api.sceneTotal,
     headers: {
     headers: {
@@ -114,8 +114,8 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  
-  export const sceneTrend = (params) =>
+
+export const sceneTrend = (params) =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.sceneTrend,
     url: Api.sceneTrend,
     params,
     params,
@@ -125,21 +125,21 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  
-  export const workType = (params) =>
+
+export const workType = (params) =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.workType,
     url: Api.workType,
     params,
     params,
     data: params,
     data: params,
   });
   });
-    
-  export const workTrend = (params) =>
+
+export const workTrend = (params) =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.workTrend,
     url: Api.workTrend,
     params,
     params,
     data: params,
     data: params,
-  });    
-  export const qjuserTrend = (params) =>
+  });
+export const qjuserTrend = (params) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: qjurl + Api.qjuserTrend,
     url: qjurl + Api.qjuserTrend,
     params,
     params,
@@ -149,8 +149,8 @@ export const buryPointList = (params: PageParams) =>
       appId: 'BDA385EC848C1A425F746869011C8D23',
       appId: 'BDA385EC848C1A425F746869011C8D23',
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
-  });    
-  export const volumeTrend = (params) =>
+  });
+export const volumeTrend = (params) =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.volumeTrend,
     url: Api.volumeTrend,
     params,
     params,
@@ -161,41 +161,41 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  export const cameraExport = (params) =>
+export const cameraExport = (params) =>
   defHttp.downloadFile<FileStream>({
   defHttp.downloadFile<FileStream>({
     url: Api.cameraExport,
     url: Api.cameraExport,
     params: params,
     params: params,
     // data: params,
     // data: params,
-    fileName:'相机订单.xlsx',
+    fileName: '相机订单.xlsx',
     headers: {
     headers: {
       // @ts-ignore
       // @ts-ignore
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
-    responseType: 'blob'
+    responseType: 'blob',
   });
   });
 
 
-  export const downExport = (params) =>
+export const downExport = (params) =>
   defHttp.downloadFile<FileStream>({
   defHttp.downloadFile<FileStream>({
     url: Api.downExport,
     url: Api.downExport,
     params: params,
     params: params,
     // data: params,
     // data: params,
-    fileName:'下载订单.xlsx',
+    fileName: '下载订单.xlsx',
     headers: {
     headers: {
       // @ts-ignore
       // @ts-ignore
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
-    responseType: 'blob'
+    responseType: 'blob',
   });
   });
 
 
-  export const incrementExport = (params) =>
+export const incrementExport = (params) =>
   defHttp.downloadFile<FileStream>({
   defHttp.downloadFile<FileStream>({
     url: Api.incrementExport,
     url: Api.incrementExport,
     params: params,
     params: params,
-    fileName:'权益订单.xlsx',
+    fileName: '权益订单.xlsx',
     // data: params,
     // data: params,
     headers: {
     headers: {
       // @ts-ignore
       // @ts-ignore
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
-    responseType: 'blob'
+    responseType: 'blob',
   });
   });

+ 128 - 128
src/api/operate/index.ts

@@ -51,130 +51,130 @@ enum Api {
   sceneApplyHandle = '/service/sale/sceneApply/handle',
   sceneApplyHandle = '/service/sale/sceneApply/handle',
   getInfoMail = '/service/sale/getInfo',
   getInfoMail = '/service/sale/getInfo',
   updateMail = '/service/sale/update',
   updateMail = '/service/sale/update',
-  caseaddOrUpdate='/service/sale/case/addOrUpdate',
+  caseaddOrUpdate = '/service/sale/case/addOrUpdate',
   caseList = '/service/sale/case/list',
   caseList = '/service/sale/case/list',
-  caseDel='/service/sale/case/del',
-  caseRelease='/service/sale/case/isShow',
-  caseWithdraw='/service/sale/case/release',
+  caseDel = '/service/sale/case/del',
+  caseRelease = '/service/sale/case/isShow',
+  caseWithdraw = '/service/sale/case/release',
 }
 }
 
 
 /**
 /**
  * @description: Get sample list value
  * @description: Get sample list value
  */
  */
 
 
- export const agentAuditList = (params: PageParams) =>
- defHttp.post<RentListGetResultModel>({
-   url: Api.agentAuditList,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
- export const agentAuditHandle = (params: PageParams) =>
- defHttp.post<RentListGetResultModel>({
-   url: Api.agentAuditHandle,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
- export const sendEmail = (params: PageParams) =>
- defHttp.post<RentListGetResultModel>({
-   url: Api.sendEmail,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
- export const sceneApplyList = (params: PageParams) =>
- defHttp.post<RentListGetResultModel>({
-   url: Api.sceneApplyList,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
- export const sceneApplyHandle = (params: PageParams) =>
- defHttp.post<RentListGetResultModel>({
-   url: Api.sceneApplyHandle,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
- 
- export const caseListApi = (params: PageParams) =>
- defHttp.post<RentListGetResultModel>({
-   url: Api.caseList,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
- 
- export const caseaddOrUpdateApi = (params: PageParams) =>
- defHttp.post<RentListGetResultModel>({
-   url: Api.caseaddOrUpdate,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
-  
- export const casePublicApi = (params: PageParams) =>
- defHttp.get<RentListGetResultModel>({
-   url: Api.caseWithdraw,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
- export const caseReleaseApi = (params: PageParams) =>
- defHttp.get<RentListGetResultModel>({
-   url: Api.caseRelease,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
- export const caseDelApi = (params: PageParams) =>
- defHttp.post<RentListGetResultModel>({
-   url: Api.caseDel,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
- export const ListApi = (params: PageParams) =>
- defHttp.post<RentListGetResultModel>({
-   url: Api.pageList,
-   params: params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
+export const agentAuditList = (params: PageParams) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.agentAuditList,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const agentAuditHandle = (params: PageParams) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.agentAuditHandle,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const sendEmail = (params: PageParams) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.sendEmail,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const sceneApplyList = (params: PageParams) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.sceneApplyList,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const sceneApplyHandle = (params: PageParams) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.sceneApplyHandle,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
+export const caseListApi = (params: PageParams) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.caseList,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
+export const caseaddOrUpdateApi = (params: PageParams) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.caseaddOrUpdate,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
+export const casePublicApi = (params: PageParams) =>
+  defHttp.get<RentListGetResultModel>({
+    url: Api.caseWithdraw,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const caseReleaseApi = (params: PageParams) =>
+  defHttp.get<RentListGetResultModel>({
+    url: Api.caseRelease,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const caseDelApi = (params: PageParams) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.caseDel,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const ListApi = (params: PageParams) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.pageList,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 //显示隐藏
 //显示隐藏
 export const NewDisplay = (params: PageParams) =>
 export const NewDisplay = (params: PageParams) =>
   defHttp.post<RentListGetResultModel>({
   defHttp.post<RentListGetResultModel>({
@@ -341,17 +341,17 @@ export const sceneDelete = (params: sceneControlParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  
+
 export const qjsceneDelete = (params: overallDelete) =>
 export const qjsceneDelete = (params: overallDelete) =>
-defHttp.post<Result>({
-  url: Api.qjsceneDelete,
-  params: params,
-  // data: params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
+  defHttp.post<Result>({
+    url: Api.qjsceneDelete,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 export const checkDownLoad = (params: sceneControlParams) =>
 export const checkDownLoad = (params: sceneControlParams) =>
   defHttp.get<checkDownLoadResult>({
   defHttp.get<checkDownLoadResult>({
     url: Api.checkDownLoad,
     url: Api.checkDownLoad,
@@ -462,4 +462,4 @@ export const intercomMessageHandle = (params: updateParams) =>
       // @ts-ignore
       // @ts-ignore
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
-  });
+  });

+ 9 - 9
src/api/operate/model.ts

@@ -27,22 +27,22 @@ export interface sceneMoveParams {
 export interface sceneControlParams {
 export interface sceneControlParams {
   num: string;
   num: string;
 }
 }
-export interface ResultDetail{
-  content: string,
-  coverImageUrl: string,
-  createTime: string,
+export interface ResultDetail {
+  content: string;
+  coverImageUrl: string;
+  createTime: string;
   createrId: number;
   createrId: number;
   display: number;
   display: number;
   id: number;
   id: number;
   isPublic: number;
   isPublic: number;
   isTop: number;
   isTop: number;
   newType: number;
   newType: number;
-  publicTime: string,
-  source: string,
+  publicTime: string;
+  source: string;
   tbStatus: number;
   tbStatus: number;
-  title: string,
-  topTime: string,
-  updateTime: string,
+  title: string;
+  topTime: string;
+  updateTime: string;
   updaterId: number;
   updaterId: number;
 }
 }
 export interface addCameraParams {
 export interface addCameraParams {

+ 96 - 90
src/api/product/index.ts

@@ -1,6 +1,13 @@
 import { defHttp } from '/@/utils/http/axios';
 import { defHttp } from '/@/utils/http/axios';
-import { PageParams, RentListGetResultModel,InvoiceListResul, addCameraParams, updateParams,getItemParams } from './model';
-import { Result,UploadFileParams } from '/#/axios';
+import {
+  PageParams,
+  RentListGetResultModel,
+  InvoiceListResul,
+  addCameraParams,
+  updateParams,
+  getItemParams,
+} from './model';
+import { Result, UploadFileParams } from '/#/axios';
 import { ContentTypeEnum } from '/@/enums/httpEnum';
 import { ContentTypeEnum } from '/@/enums/httpEnum';
 
 
 enum Api {
 enum Api {
@@ -20,7 +27,7 @@ enum Api {
   appFileUpload = '/service/sale/appFile/upload',
   appFileUpload = '/service/sale/appFile/upload',
   spaceSdkDelete = '/service/sale/spaceSdk/delete',
   spaceSdkDelete = '/service/sale/spaceSdk/delete',
   appFileList = '/service/sale/appFile/list',
   appFileList = '/service/sale/appFile/list',
-  appFileDelete = '/service/sale/appFile/delete'
+  appFileDelete = '/service/sale/appFile/delete',
 }
 }
 
 
 /**
 /**
@@ -41,43 +48,42 @@ export const CameraList = (params: PageParams) =>
 /**
 /**
  * @description: 新增固件
  * @description: 新增固件
  */
  */
-export const AddAndUpload = (params: PageParams) =>{
+export const AddAndUpload = (params: PageParams) => {
   return defHttp.uploadFile<Result>(
   return defHttp.uploadFile<Result>(
     {
     {
       url: Api.addAndUpload,
       url: Api.addAndUpload,
     },
     },
-    params
+    params,
   );
   );
-}
+};
 /**
 /**
  * @description: 编辑固件
  * @description: 编辑固件
  */
  */
 
 
 export const EditAndUpload = (params: PageParams) =>
 export const EditAndUpload = (params: PageParams) =>
-defHttp.post<Result>({
-  url: Api.editAndUpload,
-  params,
-  // data: params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
-
+  defHttp.post<Result>({
+    url: Api.editAndUpload,
+    params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
 /**
 /**
  * @description: 删除固件
  * @description: 删除固件
  */
  */
- export const DelAndUpload = (params: PageParams) =>
- defHttp.post<Result>({
-   url: Api.delAndUpload,
-   params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
+export const DelAndUpload = (params: PageParams) =>
+  defHttp.post<Result>({
+    url: Api.delAndUpload,
+    params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
 export const SpaceSdkOnline = (params: PageParams) =>
 export const SpaceSdkOnline = (params: PageParams) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
@@ -104,76 +110,76 @@ export const SpaceSdkUpdate = (params: PageParams) =>
 /**
 /**
  * @description: SDK list
  * @description: SDK list
  */
  */
- export const SpaceSdkList = (params: PageParams) =>
- defHttp.post<Result>({
-   url: Api.spaceSdkList,
-   params,
-   // data: params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
+export const SpaceSdkList = (params: PageParams) =>
+  defHttp.post<Result>({
+    url: Api.spaceSdkList,
+    params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
 export const SpaceSdkTop = (params: addCameraParams) =>
 export const SpaceSdkTop = (params: addCameraParams) =>
- defHttp.post<RentListGetResultModel>({
-   url: Api.spaceSdkTop,
-   params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
+  defHttp.post<RentListGetResultModel>({
+    url: Api.spaceSdkTop,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
 export const SpaceSdkDelete = (params: updateParams) =>
 export const SpaceSdkDelete = (params: updateParams) =>
- defHttp.post<Result>({
-   url: Api.spaceSdkDelete,
-   params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
+  defHttp.post<Result>({
+    url: Api.spaceSdkDelete,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 //app 管理
 //app 管理
 export const AppFileAdd = (params: updateParams) =>
 export const AppFileAdd = (params: updateParams) =>
- defHttp.post<Result>({
-   url: Api.appFileAdd,
-   params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
+  defHttp.post<Result>({
+    url: Api.appFileAdd,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
- export const AppFileAgentList = (params: updateParams) =>
- defHttp.get<Result>({
-   url: Api.appFileAgentList,
-   params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
+export const AppFileAgentList = (params: updateParams) =>
+  defHttp.get<Result>({
+    url: Api.appFileAgentList,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 
 export const AppFileList = (params: updateParams) =>
 export const AppFileList = (params: updateParams) =>
- defHttp.post<Result>({
-   url: Api.appFileList,
-   params,
-   headers: {
-     // @ts-ignore
-     ignoreCancelToken: true,
-   },
- });
- 
+  defHttp.post<Result>({
+    url: Api.appFileList,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
 export const AppFileDelete = (params: updateParams) =>
 export const AppFileDelete = (params: updateParams) =>
-defHttp.post<Result>({
-  url: Api.appFileDelete,
-  params,
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
+  defHttp.post<Result>({
+    url: Api.appFileDelete,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 //上传文件
 //上传文件
 export function SpaceSdkUpload(
 export function SpaceSdkUpload(
   params: UploadFileParams,
   params: UploadFileParams,
@@ -186,7 +192,7 @@ export function SpaceSdkUpload(
     },
     },
     params,
     params,
   );
   );
- }
+}
 export function uploadApi(
 export function uploadApi(
   params: UploadFileParams,
   params: UploadFileParams,
   onUploadProgress: (progressEvent: ProgressEvent) => void,
   onUploadProgress: (progressEvent: ProgressEvent) => void,
@@ -198,8 +204,8 @@ export function uploadApi(
     },
     },
     params,
     params,
   );
   );
- }
- 
+}
+
 export function AppFileUpload(
 export function AppFileUpload(
   params: UploadFileParams,
   params: UploadFileParams,
   onUploadProgress: (progressEvent: ProgressEvent) => void,
   onUploadProgress: (progressEvent: ProgressEvent) => void,
@@ -211,4 +217,4 @@ export function AppFileUpload(
     },
     },
     params,
     params,
   );
   );
- }
+}

+ 3 - 4
src/api/product/model.ts

@@ -74,7 +74,7 @@ export interface DeviceListItem {
 
 
 export interface InvoiceList {
 export interface InvoiceList {
   orderSn: string;
   orderSn: string;
-  payTimeStart	: string;
+  payTimeStart: string;
   payTimeEnd: string;
   payTimeEnd: string;
   invoiceTimeStart: string;
   invoiceTimeStart: string;
   invoiceTimeEnd: string;
   invoiceTimeEnd: string;
@@ -84,9 +84,8 @@ export interface InvoiceList {
   pageNum: number;
   pageNum: number;
 }
 }
 
 
-
-export type InvoiceListResul = BasicPageParams<InvoiceList>
+export type InvoiceListResul = BasicPageParams<InvoiceList>;
 /**
 /**
  * @description: Request list return value
  * @description: Request list return value
  */
  */
-export type RentListGetResultModel = BasicFetchResult<DeviceListItem>;
+export type RentListGetResultModel = BasicFetchResult<DeviceListItem>;

+ 15 - 15
src/api/staff/list.ts

@@ -35,11 +35,11 @@ export const clean = (params) =>
   });
   });
 
 
 export function updatePasswordApi(params) {
 export function updatePasswordApi(params) {
-    return defHttp.post<Result>(
-      { url: Api.updatePassword, params },
-      // { errorMessageMode: 'none' },
-    );
-} 
+  return defHttp.post<Result>(
+    { url: Api.updatePassword, params },
+    // { errorMessageMode: 'none' },
+  );
+}
 export const staffListApi = (params: PageParams) =>
 export const staffListApi = (params: PageParams) =>
   defHttp.post<ListGetResultModel>({
   defHttp.post<ListGetResultModel>({
     url: Api.pageList,
     url: Api.pageList,
@@ -118,7 +118,7 @@ export const checkUserApi = (params) =>
     },
     },
   });
   });
 
 
-  export const UserListApi = (params) =>
+export const UserListApi = (params) =>
   defHttp.get<boolean>({
   defHttp.get<boolean>({
     url: Api.userList,
     url: Api.userList,
     params,
     params,
@@ -130,17 +130,17 @@ export const checkUserApi = (params) =>
   });
   });
 
 
 export const saveApi = (params) =>
 export const saveApi = (params) =>
-defHttp.post<Result>({
-  url: Api.staffSave,
-  params:{
+  defHttp.post<Result>({
+    url: Api.staffSave,
+    params: {
       ...params,
       ...params,
       // password: encodeStr(window.btoa(params.password))
       // password: encodeStr(window.btoa(params.password))
-  },
-  headers: {
-    // @ts-ignore
-    ignoreCancelToken: true,
-  },
-});
+    },
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 export const updateApi = (params) =>
 export const updateApi = (params) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: Api.update,
     url: Api.update,

+ 23 - 24
src/api/statistics/index.ts

@@ -33,7 +33,7 @@ export const buryPointList = (params: PageParams) =>
     },
     },
   });
   });
 
 
-  export const buryPointAdd = (params: PageParams) =>
+export const buryPointAdd = (params: PageParams) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: Api.buryPointAdd,
     url: Api.buryPointAdd,
     params,
     params,
@@ -43,7 +43,7 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  export const buryPointDlt = (params: PageParams) =>
+export const buryPointDlt = (params: PageParams) =>
   defHttp.post<Result>({
   defHttp.post<Result>({
     url: Api.buryPointDlt,
     url: Api.buryPointDlt,
     params,
     params,
@@ -53,7 +53,7 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  export const userTotal = () =>
+export const userTotal = () =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.userTotal,
     url: Api.userTotal,
     headers: {
     headers: {
@@ -61,7 +61,7 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  export const userTrend = (params) =>
+export const userTrend = (params) =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.userTrend,
     url: Api.userTrend,
     params,
     params,
@@ -71,7 +71,7 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  export const orderTotal = () =>
+export const orderTotal = () =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.orderTotal,
     url: Api.orderTotal,
     headers: {
     headers: {
@@ -79,8 +79,8 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  
-  export const orderTrend = (params) =>
+
+export const orderTrend = (params) =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.orderTrend,
     url: Api.orderTrend,
     params,
     params,
@@ -90,8 +90,8 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  
-  export const cameraTrend = (params) =>
+
+export const cameraTrend = (params) =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.cameraTrend,
     url: Api.cameraTrend,
     params,
     params,
@@ -101,8 +101,8 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  
-  export const sceneTotal = () =>
+
+export const sceneTotal = () =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.sceneTotal,
     url: Api.sceneTotal,
     headers: {
     headers: {
@@ -110,8 +110,8 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  
-  export const sceneTrend = (params) =>
+
+export const sceneTrend = (params) =>
   defHttp.get<Result>({
   defHttp.get<Result>({
     url: Api.sceneTrend,
     url: Api.sceneTrend,
     params,
     params,
@@ -121,43 +121,42 @@ export const buryPointList = (params: PageParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
-  
-    
-  export const cameraExport = (params) =>
+
+export const cameraExport = (params) =>
   defHttp.downloadFile<FileStream>({
   defHttp.downloadFile<FileStream>({
     url: Api.cameraExport,
     url: Api.cameraExport,
     params: params,
     params: params,
     // data: params,
     // data: params,
-    fileName:'相机订单.xlsx',
+    fileName: '相机订单.xlsx',
     headers: {
     headers: {
       // @ts-ignore
       // @ts-ignore
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
-    responseType: 'blob'
+    responseType: 'blob',
   });
   });
 
 
-  export const downExport = (params) =>
+export const downExport = (params) =>
   defHttp.downloadFile<FileStream>({
   defHttp.downloadFile<FileStream>({
     url: Api.downExport,
     url: Api.downExport,
     params: params,
     params: params,
     // data: params,
     // data: params,
-    fileName:'下载订单.xlsx',
+    fileName: '下载订单.xlsx',
     headers: {
     headers: {
       // @ts-ignore
       // @ts-ignore
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
-    responseType: 'blob'
+    responseType: 'blob',
   });
   });
 
 
-  export const incrementExport = (params) =>
+export const incrementExport = (params) =>
   defHttp.downloadFile<FileStream>({
   defHttp.downloadFile<FileStream>({
     url: Api.incrementExport,
     url: Api.incrementExport,
     params: params,
     params: params,
-    fileName:'权益订单.xlsx',
+    fileName: '权益订单.xlsx',
     // data: params,
     // data: params,
     headers: {
     headers: {
       // @ts-ignore
       // @ts-ignore
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
-    responseType: 'blob'
+    responseType: 'blob',
   });
   });

+ 1 - 1
src/api/sys/model/systemModel.ts

@@ -38,7 +38,7 @@ export type DeptParams = {
 };
 };
 export type RoleIdParams = {
 export type RoleIdParams = {
   roleId?: number;
   roleId?: number;
-}
+};
 export type MenuParams = {
 export type MenuParams = {
   icon: string;
   icon: string;
   name: string;
   name: string;

+ 3 - 3
src/api/sys/model/userModel.ts

@@ -23,8 +23,8 @@ export interface LoginResultModel {
   roleName: string;
   roleName: string;
   userName: string;
   userName: string;
   roleId: number;
   roleId: number;
-  agent:UserAgent;
-  user:UserInfo;
+  agent: UserAgent;
+  user: UserInfo;
 }
 }
 
 
 /**
 /**
@@ -45,5 +45,5 @@ export interface GetUserInfoModel {
   desc?: string;
   desc?: string;
   // 权限
   // 权限
   roleId: number;
   roleId: number;
-  agent:UserAgent;
+  agent: UserAgent;
 }
 }

+ 4 - 4
src/api/sys/system.ts

@@ -18,7 +18,7 @@ import {
 import { Result } from '/#/axios';
 import { Result } from '/#/axios';
 import { defHttp } from '/@/utils/http/axios';
 import { defHttp } from '/@/utils/http/axios';
 import { TreeMenuNode } from '/@/utils/treeUtils';
 import { TreeMenuNode } from '/@/utils/treeUtils';
-  // import { ContentTypeEnum } from '/@/enums/httpEnum';
+// import { ContentTypeEnum } from '/@/enums/httpEnum';
 // sys/user/list
 // sys/user/list
 // /sys/role/list
 // /sys/role/list
 // sys/menu/queryAll
 // sys/menu/queryAll
@@ -80,13 +80,13 @@ export const getMenuIdsByRoleId = (params?: RoleIdParams) =>
   defHttp.get<MenuListGetResultModel>({
   defHttp.get<MenuListGetResultModel>({
     url: Api.getMenuIdsByRoleId,
     url: Api.getMenuIdsByRoleId,
     params,
     params,
-});
+  });
 export const getMenuList = (params?: RoleIdParams) =>
 export const getMenuList = (params?: RoleIdParams) =>
   defHttp.post<MenuListGetResultModel>({
   defHttp.post<MenuListGetResultModel>({
     url: Api.MenuList,
     url: Api.MenuList,
     params: {
     params: {
-      pageNum:1,
-      pageSize:100,
+      pageNum: 1,
+      pageSize: 100,
     },
     },
   });
   });
 //menu
 //menu

+ 6 - 6
src/api/sys/user.ts

@@ -20,13 +20,13 @@ export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal')
   return defHttp.post<LoginResultModel>(
   return defHttp.post<LoginResultModel>(
     {
     {
       url: Api.Login,
       url: Api.Login,
-      params:{
+      params: {
         ...params,
         ...params,
-        phoneNum:params.username,
-        userName:params.username,
-        username:params.username,
-        password: encodeStr(window.btoa(params.password))
-    },
+        phoneNum: params.username,
+        userName: params.username,
+        username: params.username,
+        password: encodeStr(window.btoa(params.password)),
+      },
     },
     },
     {
     {
       errorMessageMode: mode,
       errorMessageMode: mode,

+ 1 - 1
src/components/Application/src/AppLocalePicker.vue

@@ -60,7 +60,7 @@
   }
   }
 
 
   function handleMenuEvent(menu: DropMenu) {
   function handleMenuEvent(menu: DropMenu) {
-    console.log('handleMenuEvent',menu)
+    console.log('handleMenuEvent', menu);
     if (unref(getLocale) === menu.event) {
     if (unref(getLocale) === menu.event) {
       return;
       return;
     }
     }

+ 1 - 1
src/components/Application/src/AppLogo.vue

@@ -4,7 +4,7 @@
 -->
 -->
 <template>
 <template>
   <div class="anticon" :class="getAppLogoClass" @click="goHome">
   <div class="anticon" :class="getAppLogoClass" @click="goHome">
-    <img :src="isEn?logoEn:logo" />
+    <img :src="isEn ? logoEn : logo" />
     <!-- <div class="ml-2 truncate md:opacity-100" :class="getTitleClass" v-show="showTitle">
     <!-- <div class="ml-2 truncate md:opacity-100" :class="getTitleClass" v-show="showTitle">
       {{ title }}
       {{ title }}
     </div> -->
     </div> -->

+ 7 - 5
src/components/Form/src/components/FormItem.vue

@@ -47,8 +47,10 @@
         type: Object as PropType<FormActionType>,
         type: Object as PropType<FormActionType>,
       },
       },
       validateFields: {
       validateFields: {
-      type: Function as PropType<(nameList?: NamePath[], options?: ValidateOptions) => Promise<void> >,
-      default: null,
+        type: Function as PropType<
+          (nameList?: NamePath[], options?: ValidateOptions) => Promise<void>
+        >,
+        default: null,
       },
       },
     },
     },
     setup(props, { slots }) {
     setup(props, { slots }) {
@@ -246,10 +248,10 @@
             props.setFormModel(field, value);
             props.setFormModel(field, value);
             // 这个也要添加
             // 这个也要添加
             props.validateFields([field], { triggerName: 'change' }).catch(() => {});
             props.validateFields([field], { triggerName: 'change' }).catch(() => {});
-            },
-            onBlur: () => {
+          },
+          onBlur: () => {
             props.validateFields([field], { triggerName: 'blur' }).catch(() => {});
             props.validateFields([field], { triggerName: 'blur' }).catch(() => {});
-            },
+          },
         };
         };
         const Comp = componentMap.get(component) as ReturnType<typeof defineComponent>;
         const Comp = componentMap.get(component) as ReturnType<typeof defineComponent>;
 
 

+ 8 - 2
src/components/Form/src/hooks/useForm.ts

@@ -6,7 +6,10 @@ import { isProdMode } from '/@/utils/env';
 import { error } from '/@/utils/log';
 import { error } from '/@/utils/log';
 import { getDynamicProps } from '/@/utils';
 import { getDynamicProps } from '/@/utils';
 
 
-export declare type ValidateFields = (nameList?: NamePath[],options?: ValidateOptions,) => Promise<Recordable>;
+export declare type ValidateFields = (
+  nameList?: NamePath[],
+  options?: ValidateOptions,
+) => Promise<Recordable>;
 
 
 type Props = Partial<DynamicProps<FormProps>>;
 type Props = Partial<DynamicProps<FormProps>>;
 
 
@@ -112,7 +115,10 @@ export function useForm(props?: Props): UseFormReturnType {
       return form.validate(nameList);
       return form.validate(nameList);
     },
     },
 
 
-    validateFields: async (nameList?: NamePath[], options?: ValidateOptions): Promise<Recordable> => {
+    validateFields: async (
+      nameList?: NamePath[],
+      options?: ValidateOptions,
+    ): Promise<Recordable> => {
       const form = await getForm();
       const form = await getForm();
       return form.validateFields(nameList, options);
       return form.validateFields(nameList, options);
     },
     },

+ 2 - 2
src/components/Form/src/hooks/useFormEvents.ts

@@ -22,7 +22,7 @@ interface UseFormActionContext {
 export declare type ValidateFields = (
 export declare type ValidateFields = (
   nameList?: NamePath[],
   nameList?: NamePath[],
   options?: ValidateOptions,
   options?: ValidateOptions,
-  ) => Promise<void>;
+) => Promise<void>;
 export function useFormEvents({
 export function useFormEvents({
   emit,
   emit,
   getProps,
   getProps,
@@ -216,7 +216,7 @@ export function useFormEvents({
 
 
   async function validateFields(nameList?: NamePath[], options?: ValidateOptions | undefined) {
   async function validateFields(nameList?: NamePath[], options?: ValidateOptions | undefined) {
     return unref(formElRef)?.validateFields(nameList, options);
     return unref(formElRef)?.validateFields(nameList, options);
-    }
+  }
 
 
   async function validate(nameList?: NamePath[] | undefined) {
   async function validate(nameList?: NamePath[] | undefined) {
     return await unref(formElRef)?.validate(nameList);
     return await unref(formElRef)?.validate(nameList);

+ 1 - 12
src/components/Icon/src/IconPicker.vue

@@ -31,18 +31,7 @@
                   v-for="icon in getPaginationList"
                   v-for="icon in getPaginationList"
                   :key="icon"
                   :key="icon"
                   :class="currentSelect === icon ? 'border border-primary' : ''"
                   :class="currentSelect === icon ? 'border border-primary' : ''"
-                  class="
-                    p-2
-                    w-1/8
-                    cursor-pointer
-                    mr-1
-                    mt-1
-                    flex
-                    justify-center
-                    items-center
-                    border border-solid
-                    hover:border-primary
-                  "
+                  class="p-2 w-1/8 cursor-pointer mr-1 mt-1 flex justify-center items-center border border-solid hover:border-primary"
                   @click="handleClick(icon)"
                   @click="handleClick(icon)"
                   :title="icon"
                   :title="icon"
                 >
                 >

+ 3 - 1
src/components/Table/src/components/TableImg.vue

@@ -59,7 +59,9 @@
       const getWrapStyle = computed((): CSSProperties => {
       const getWrapStyle = computed((): CSSProperties => {
         const { size, adaptations } = props;
         const { size, adaptations } = props;
         const s = `${size}px`;
         const s = `${size}px`;
-        return adaptations?{height: 'auto', width: 'auto',maxWidth:'100%'}:{ height:s, width:s };
+        return adaptations
+          ? { height: 'auto', width: 'auto', maxWidth: '100%' }
+          : { height: s, width: s };
       });
       });
 
 
       const { prefixCls } = useDesign('basic-table-img');
       const { prefixCls } = useDesign('basic-table-img');

+ 3 - 1
src/components/Tinymce/src/Editor.vue

@@ -304,7 +304,9 @@
           return;
           return;
         }
         }
         const content = editor?.getContent() ?? '';
         const content = editor?.getContent() ?? '';
-        const val = content?.replace(getUploadingImgName(name), `<img src="${url}" style="width:100%" />`) ?? '';
+        const val =
+          content?.replace(getUploadingImgName(name), `<img src="${url}" style="width:100%" />`) ??
+          '';
         setValue(editor, val);
         setValue(editor, val);
       }
       }
 
 

+ 1 - 1
src/components/Tinymce/src/ImgUpload.vue

@@ -54,7 +54,7 @@
         const status = file?.status;
         const status = file?.status;
         const url = file?.response?.url || file?.response?.data;
         const url = file?.response?.url || file?.response?.data;
         const name = file?.name;
         const name = file?.name;
-        console.log(info,'info')
+        console.log(info, 'info');
         if (status === 'uploading') {
         if (status === 'uploading') {
           if (!uploading) {
           if (!uploading) {
             emit('uploading', name);
             emit('uploading', name);

+ 6 - 1
src/components/Tree/src/Tree.vue

@@ -415,7 +415,12 @@
           );
           );
 
 
           return (
           return (
-            <Tree.TreeNode {...propsData} showCheckedStrategy="TreeSelect.SHOW_ALL" node={toRaw(item)} key={get(item, keyField)}>
+            <Tree.TreeNode
+              {...propsData}
+              showCheckedStrategy="TreeSelect.SHOW_ALL"
+              node={toRaw(item)}
+              key={get(item, keyField)}
+            >
               {{
               {{
                 title: () => (
                 title: () => (
                   <span
                   <span

+ 2 - 2
src/components/Upload/src/FileList.vue

@@ -12,7 +12,7 @@
       watch(
       watch(
         () => props.dataSource,
         () => props.dataSource,
         () => {
         () => {
-          console.log('dataSource',props)
+          console.log('dataSource', props);
           nextTick(() => {
           nextTick(() => {
             modalFn?.redoModalHeight?.();
             modalFn?.redoModalHeight?.();
           });
           });
@@ -21,7 +21,7 @@
       return () => {
       return () => {
         const { columns, actionColumn, dataSource } = props;
         const { columns, actionColumn, dataSource } = props;
         const columnList = [...columns, actionColumn];
         const columnList = [...columns, actionColumn];
-        console.log('createPreviewActionColumn',columnList,dataSource)
+        console.log('createPreviewActionColumn', columnList, dataSource);
         return (
         return (
           <table class="file-table">
           <table class="file-table">
             <colgroup>
             <colgroup>

+ 10 - 10
src/components/Upload/src/UploadModal.vue

@@ -272,8 +272,8 @@
       }
       }
       // 点击开始上传
       // 点击开始上传
       async function handleStartUpload() {
       async function handleStartUpload() {
-        const { maxNumber,fileFlow } = props;
-        console.log('fileListRef',fileListRef.value,'props',props)
+        const { maxNumber, fileFlow } = props;
+        console.log('fileListRef', fileListRef.value, 'props', props);
         if ((fileListRef.value.length + props.previewFileList?.length ?? 0) > maxNumber) {
         if ((fileListRef.value.length + props.previewFileList?.length ?? 0) > maxNumber) {
           return createMessage.warning(t('component.upload.maxNumber', [maxNumber]));
           return createMessage.warning(t('component.upload.maxNumber', [maxNumber]));
         }
         }
@@ -284,10 +284,10 @@
             fileListRef.value.filter((item) => item.status !== UploadResultStatus.SUCCESS) || [];
             fileListRef.value.filter((item) => item.status !== UploadResultStatus.SUCCESS) || [];
           const data = await Promise.all(
           const data = await Promise.all(
             uploadFileList.map((item) => {
             uploadFileList.map((item) => {
-              if(fileFlow){
+              if (fileFlow) {
                 return uploadFileFlow(item);
                 return uploadFileFlow(item);
-              }else{
-              return uploadApiByItem(item);
+              } else {
+                return uploadApiByItem(item);
               }
               }
             }),
             }),
           );
           );
@@ -304,7 +304,7 @@
 
 
       //   点击保存
       //   点击保存
       function handleOk() {
       function handleOk() {
-        const { maxNumber,fileFlow  } = props;
+        const { maxNumber, fileFlow } = props;
 
 
         if (fileListRef.value.length > maxNumber) {
         if (fileListRef.value.length > maxNumber) {
           return createMessage.warning(t('component.upload.maxNumber', [maxNumber]));
           return createMessage.warning(t('component.upload.maxNumber', [maxNumber]));
@@ -317,12 +317,12 @@
         for (const item of fileListRef.value) {
         for (const item of fileListRef.value) {
           const { status, responseData } = item;
           const { status, responseData } = item;
           if (status === UploadResultStatus.SUCCESS && responseData) {
           if (status === UploadResultStatus.SUCCESS && responseData) {
-            if(fileFlow){
+            if (fileFlow) {
               fileList.push({
               fileList.push({
-                name:responseData.name,
-                url:item.thumbUrl,
+                name: responseData.name,
+                url: item.thumbUrl,
               });
               });
-            }else{
+            } else {
               fileList.push(responseData);
               fileList.push(responseData);
             }
             }
           }
           }

+ 5 - 5
src/components/Upload/src/UploadPreviewModal.vue

@@ -35,15 +35,15 @@
         () => props.value,
         () => props.value,
         (value) => {
         (value) => {
           if (!isArray(value)) value = [];
           if (!isArray(value)) value = [];
-          const fileFlow = props.fileFlow
+          const fileFlow = props.fileFlow;
           fileListRef.value = value
           fileListRef.value = value
             .filter((item) => !!item)
             .filter((item) => !!item)
             .map((item) => {
             .map((item) => {
-            console.log('uploadApiitem',item)
+              console.log('uploadApiitem', item);
               return {
               return {
-                url: fileFlow?item.url:item,
-                type: fileFlow?'':item.split('.').pop() || '',
-                name: fileFlow?item.name:item.split('/').pop() || '',
+                url: fileFlow ? item.url : item,
+                type: fileFlow ? '' : item.split('.').pop() || '',
+                name: fileFlow ? item.name : item.split('/').pop() || '',
               };
               };
             });
             });
         },
         },

+ 7 - 6
src/components/Upload/src/data.tsx

@@ -2,7 +2,8 @@ import type { BasicColumn, ActionItem } from '/@/components/Table';
 import { FileItem, PreviewFileItem, UploadResultStatus } from './typing';
 import { FileItem, PreviewFileItem, UploadResultStatus } from './typing';
 import {
 import {
   // checkImgType,
   // checkImgType,
-  isImgTypeByName,validateBase64
+  isImgTypeByName,
+  validateBase64,
 } from './helper';
 } from './helper';
 import { Progress, Tag } from 'ant-design-vue';
 import { Progress, Tag } from 'ant-design-vue';
 import TableAction from '/@/components/Table/src/components/TableAction.vue';
 import TableAction from '/@/components/Table/src/components/TableAction.vue';
@@ -110,10 +111,10 @@ export function createPreviewColumns(): BasicColumn[] {
       title: t('component.upload.legend'),
       title: t('component.upload.legend'),
       width: 100,
       width: 100,
       customRender: ({ record }) => {
       customRender: ({ record }) => {
-        console.log('record',record)
+        console.log('record', record);
         const { url } = (record as PreviewFileItem) || {};
         const { url } = (record as PreviewFileItem) || {};
-        if(validateBase64(url)){
-          return <ThumbUrl fileUrl={url} />
+        if (validateBase64(url)) {
+          return <ThumbUrl fileUrl={url} />;
         }
         }
         return isImgTypeByName(url) && <ThumbUrl fileUrl={url} />;
         return isImgTypeByName(url) && <ThumbUrl fileUrl={url} />;
       },
       },
@@ -139,7 +140,7 @@ export function createPreviewActionColumn({
     dataIndex: 'action',
     dataIndex: 'action',
     fixed: false,
     fixed: false,
     customRender: ({ record }) => {
     customRender: ({ record }) => {
-      console.log('record',record)
+      console.log('record', record);
       const actions: ActionItem[] = [
       const actions: ActionItem[] = [
         {
         {
           label: t('component.upload.del'),
           label: t('component.upload.del'),
@@ -148,7 +149,7 @@ export function createPreviewActionColumn({
         },
         },
         {
         {
           label: t('component.upload.download'),
           label: t('component.upload.download'),
-          ifShow:false,
+          ifShow: false,
           onClick: handleDownload.bind(null, record),
           onClick: handleDownload.bind(null, record),
         },
         },
       ];
       ];

+ 7 - 7
src/components/Upload/src/helper.ts

@@ -11,9 +11,9 @@ export function checkImgType(file: File) {
 }
 }
 
 
 export function isImgTypeByName(name: string) {
 export function isImgTypeByName(name: string) {
-  console.log('isImgTypeByName',name)
-  if(!name){
-    return false
+  console.log('isImgTypeByName', name);
+  if (!name) {
+    return false;
   }
   }
   // return /\.(jpg|jpeg|png|gif)$/i.test(name);
   // return /\.(jpg|jpeg|png|gif)$/i.test(name);
   // return /\.(jpg|jpeg|png|gif)$/i.test(name.split('?').shift());
   // return /\.(jpg|jpeg|png|gif)$/i.test(name.split('?').shift());
@@ -21,10 +21,10 @@ export function isImgTypeByName(name: string) {
 }
 }
 
 
 // 校验内容是否包含base64格式的图片
 // 校验内容是否包含base64格式的图片
-export function validateBase64(str){
-  let imgReg = RegExp(/data:image\/.*;base64,/)
-  const res = imgReg.test(str)
-  return res
+export function validateBase64(str) {
+  const imgReg = RegExp(/data:image\/.*;base64,/);
+  const res = imgReg.test(str);
+  return res;
 }
 }
 
 
 export function getBase64WithFile(file: File) {
 export function getBase64WithFile(file: File) {

+ 1 - 1
src/layouts/default/header/components/Breadcrumb.vue

@@ -110,7 +110,7 @@
       function handleClick(route: RouteLocationMatched, paths: string[], e: Event) {
       function handleClick(route: RouteLocationMatched, paths: string[], e: Event) {
         e?.preventDefault();
         e?.preventDefault();
         const { children, redirect, meta } = route;
         const { children, redirect, meta } = route;
-        console.log('handleClick',route)
+        console.log('handleClick', route);
         if (children?.length && !redirect) {
         if (children?.length && !redirect) {
           e?.stopPropagation();
           e?.stopPropagation();
           return;
           return;

+ 4 - 4
src/layouts/default/header/components/user-dropdown/index.vue

@@ -78,9 +78,9 @@
       const userStore = useUserStore();
       const userStore = useUserStore();
       const { createConfirm } = useMessage();
       const { createConfirm } = useMessage();
       const getUserInfo = computed(() => {
       const getUserInfo = computed(() => {
-        const { head, desc ,nickName } = userStore.getUserInfo || {};
-        let realName = nickName
-        return { realName:realName, avatar: head || headerImg, desc };
+        const { head, desc, nickName } = userStore.getUserInfo || {};
+        let realName = nickName;
+        return { realName: realName, avatar: head || headerImg, desc };
       });
       });
 
 
       const [register, { openModal }] = useModal();
       const [register, { openModal }] = useModal();
@@ -101,7 +101,7 @@
           title: '警告',
           title: '警告',
           content: `此操作将对当前账号修改密码, 修改成功后将会退出当前账号,是否继续?`,
           content: `此操作将对当前账号修改密码, 修改成功后将会退出当前账号,是否继续?`,
           onOk: async () => {
           onOk: async () => {
-            openPasswordModal(true,{});
+            openPasswordModal(true, {});
           },
           },
         });
         });
         // openWindow(DOC_URL);
         // openWindow(DOC_URL);

+ 29 - 27
src/layouts/default/header/components/user-dropdown/setpaswordModal.vue

@@ -48,9 +48,9 @@
           labelWidth: 120,
           labelWidth: 120,
           required: true,
           required: true,
           colProps: { span: 18 },
           colProps: { span: 18 },
-          componentProps:{
-            readonly:preventAutoFill.value,
-          }
+          componentProps: {
+            readonly: preventAutoFill.value,
+          },
         },
         },
         {
         {
           field: 'password',
           field: 'password',
@@ -76,11 +76,11 @@
               trigger: 'change',
               trigger: 'change',
             },
             },
           ],
           ],
-          componentProps:{
+          componentProps: {
             maxLength: 16,
             maxLength: 16,
             minLength: 8,
             minLength: 8,
-            readonly:preventAutoFill.value,
-            placeholder:"请输入8-16位数字、字母大小写组合"
+            readonly: preventAutoFill.value,
+            placeholder: '请输入8-16位数字、字母大小写组合',
           },
           },
           colProps: { span: 18 },
           colProps: { span: 18 },
         },
         },
@@ -109,34 +109,36 @@
       });
       });
 
 
       function onDataReceive(data) {
       function onDataReceive(data) {
-        preventAutoFill.value = false
-        setTimeout(()=>{
-          updateSchema([{
-            field: 'oldPassword',
-            componentProps:{
-              readonly:false,
-            }
-          },{
-            field: 'password',
-            componentProps:{
-              readonly:false,
-            }
-          }])
-        },500)
+        preventAutoFill.value = false;
+        setTimeout(() => {
+          updateSchema([
+            {
+              field: 'oldPassword',
+              componentProps: {
+                readonly: false,
+              },
+            },
+            {
+              field: 'password',
+              componentProps: {
+                readonly: false,
+              },
+            },
+          ]);
+        }, 500);
         setFieldsValue({
         setFieldsValue({
           id: data.id,
           id: data.id,
         });
         });
-
       }
       }
       async function handSubmit() {
       async function handSubmit() {
-        console.log('getUserInfo',getUserInfo)
-        const { id } = getUserInfo
-        const { password,oldPassword } = await validate();
-        await updatePasswordApi({ 
-          id, 
+        console.log('getUserInfo', getUserInfo);
+        const { id } = getUserInfo;
+        const { password, oldPassword } = await validate();
+        await updatePasswordApi({
+          id,
           newPassword: encodeStr(window.btoa(password)),
           newPassword: encodeStr(window.btoa(password)),
           oldPassword: encodeStr(window.btoa(oldPassword)),
           oldPassword: encodeStr(window.btoa(oldPassword)),
-         });
+        });
         createMessage.success(t('common.optSuccess'));
         createMessage.success(t('common.optSuccess'));
         resetFields();
         resetFields();
         userStore.confirmLoginOut();
         userStore.confirmLoginOut();

+ 1 - 0
src/locales/lang/en/routes/scene.ts

@@ -4,6 +4,7 @@ export default {
     1: '4DMinion',
     1: '4DMinion',
     2: '4DMega',
     2: '4DMega',
     3: '4DKanKan Lite',
     3: '4DKanKan Lite',
+    4: '4DMeta',
   },
   },
   transfer: 'transfer',
   transfer: 'transfer',
   copy: 'copy',
   copy: 'copy',

+ 1 - 0
src/locales/lang/zh-CN/routes/scene.ts

@@ -4,6 +4,7 @@ export default {
     1: '四维看见',
     1: '四维看见',
     2: '四维深时',
     2: '四维深时',
     3: '四维双目Lite',
     3: '四维双目Lite',
+    4: '四维深光',
   },
   },
   transfer: '迁移',
   transfer: '迁移',
   copy: '复制',
   copy: '复制',

+ 1 - 1
src/locales/lang/zh_CN.ts

@@ -3,7 +3,7 @@ import antdLocale from 'ant-design-vue/es/locale/zh_CN';
 import momentLocale from 'moment/dist/locale/zh-cn';
 import momentLocale from 'moment/dist/locale/zh-cn';
 
 
 const modules = import.meta.globEager('./zh-CN/**/*.ts');
 const modules = import.meta.globEager('./zh-CN/**/*.ts');
-console.log('modules',modules)
+console.log('modules', modules);
 export default {
 export default {
   message: {
   message: {
     ...genMessage(modules, 'zh-CN'),
     ...genMessage(modules, 'zh-CN'),

+ 3 - 3
src/router/helper/routeHelper.ts

@@ -51,7 +51,7 @@ function dynamicImport(
     const endFlag = component.endsWith('.vue') || component.endsWith('.tsx');
     const endFlag = component.endsWith('.vue') || component.endsWith('.tsx');
     const startIndex = startFlag ? 0 : 1;
     const startIndex = startFlag ? 0 : 1;
     const lastIndex = endFlag ? k.length : k.lastIndexOf('.');
     const lastIndex = endFlag ? k.length : k.lastIndexOf('.');
-  return k.substring(startIndex, lastIndex) === component;
+    return k.substring(startIndex, lastIndex) === component;
   });
   });
   if (matchKeys?.length === 1) {
   if (matchKeys?.length === 1) {
     const matchKey = matchKeys[0];
     const matchKey = matchKeys[0];
@@ -75,7 +75,7 @@ export function transformObjToRoute<T = AppRouteModule>(routeList: AppRouteModul
       if (component.toUpperCase() === 'LAYOUT') {
       if (component.toUpperCase() === 'LAYOUT') {
         route.component = LayoutMap.get(component.toUpperCase());
         route.component = LayoutMap.get(component.toUpperCase());
         const meta = route.meta || {};
         const meta = route.meta || {};
-        meta.orderNo = route.sort
+        meta.orderNo = route.sort;
         route.meta = meta;
         route.meta = meta;
       } else {
       } else {
         route.children = [cloneDeep(route)];
         route.children = [cloneDeep(route)];
@@ -83,7 +83,7 @@ export function transformObjToRoute<T = AppRouteModule>(routeList: AppRouteModul
         route.name = `${route.name}Parent`;
         route.name = `${route.name}Parent`;
         route.path = '';
         route.path = '';
         const meta = route.meta || {};
         const meta = route.meta || {};
-        meta.orderNo = route.sort
+        meta.orderNo = route.sort;
         meta.single = true;
         meta.single = true;
         meta.affix = false;
         meta.affix = false;
         route.meta = meta;
         route.meta = meta;

+ 1 - 1
src/router/routes/modules/device.ts

@@ -26,4 +26,4 @@ export const Device: AppRouteRecordRaw = {
     },
     },
   ],
   ],
 };
 };
-export default Device;
+export default Device;

+ 1 - 1
src/router/routes/modules/home.ts

@@ -26,4 +26,4 @@ export const Home: AppRouteRecordRaw = {
     },
     },
   ],
   ],
 };
 };
-export default Home;
+export default Home;

+ 1 - 1
src/router/routes/modules/spares.ts

@@ -26,4 +26,4 @@ export const Spares: AppRouteRecordRaw = {
     },
     },
   ],
   ],
 };
 };
-export default Spares;
+export default Spares;

+ 11 - 6
src/router/routes/modules/work.ts

@@ -23,7 +23,8 @@ export const Spares: AppRouteRecordRaw = {
         hideBreadcrumb: true,
         hideBreadcrumb: true,
         // icon: 'codicon:device-camera',
         // icon: 'codicon:device-camera',
       },
       },
-    },{
+    },
+    {
       path: 'repairspares',
       path: 'repairspares',
       name: 'RepairSpares',
       name: 'RepairSpares',
       component: () => import('/@/views/spares/list.vue'),
       component: () => import('/@/views/spares/list.vue'),
@@ -32,7 +33,8 @@ export const Spares: AppRouteRecordRaw = {
         hideBreadcrumb: true,
         hideBreadcrumb: true,
         // icon: 'codicon:device-camera',
         // icon: 'codicon:device-camera',
       },
       },
-    },{
+    },
+    {
       path: 'repair',
       path: 'repair',
       name: 'RepairList',
       name: 'RepairList',
       component: () => import('/@/views/spares/list.vue'),
       component: () => import('/@/views/spares/list.vue'),
@@ -41,7 +43,8 @@ export const Spares: AppRouteRecordRaw = {
         hideBreadcrumb: true,
         hideBreadcrumb: true,
         // icon: 'codicon:device-camera',
         // icon: 'codicon:device-camera',
       },
       },
-    },{
+    },
+    {
       path: 'detail/:id',
       path: 'detail/:id',
       name: 'DetailIndex',
       name: 'DetailIndex',
       component: () => import('/@/views/spares/detail.vue'),
       component: () => import('/@/views/spares/detail.vue'),
@@ -51,7 +54,8 @@ export const Spares: AppRouteRecordRaw = {
         hideMenu: true,
         hideMenu: true,
         // icon: 'codicon:device-camera',
         // icon: 'codicon:device-camera',
       },
       },
-    },{
+    },
+    {
       path: 'query',
       path: 'query',
       name: 'WorkQuery',
       name: 'WorkQuery',
       component: () => import('/@/views/work/query.vue'),
       component: () => import('/@/views/work/query.vue'),
@@ -60,7 +64,8 @@ export const Spares: AppRouteRecordRaw = {
         hideBreadcrumb: true,
         hideBreadcrumb: true,
         // icon: 'codicon:device-camera',
         // icon: 'codicon:device-camera',
       },
       },
-    },{
+    },
+    {
       path: 'aftermarket',
       path: 'aftermarket',
       name: 'WorkAftermarket',
       name: 'WorkAftermarket',
       component: () => import('/@/views/work/aftermarket.vue'),
       component: () => import('/@/views/work/aftermarket.vue'),
@@ -72,4 +77,4 @@ export const Spares: AppRouteRecordRaw = {
     },
     },
   ],
   ],
 };
 };
-export default Spares;
+export default Spares;

+ 11 - 11
src/store/modules/other.ts

@@ -13,34 +13,34 @@ interface LockState {
 export const otherInfoStore = defineStore({
 export const otherInfoStore = defineStore({
   id: 'other-info',
   id: 'other-info',
   state: (): LockState => ({
   state: (): LockState => ({
-    overviewInfo:  {},
+    overviewInfo: {},
   }),
   }),
   getters: {
   getters: {
     getOverviewInfo(): OverviewInfo | null {
     getOverviewInfo(): OverviewInfo | null {
-      if(JSON.stringify(this.overviewInfo) == "{}"){
-        let jsonInfo = sessionStorage.getItem('overviewInfo')
-        return jsonInfo?JSON.parse(jsonInfo):{}
-      }else{
-        return this.overviewInfo
+      if (JSON.stringify(this.overviewInfo) == '{}') {
+        const jsonInfo = sessionStorage.getItem('overviewInfo');
+        return jsonInfo ? JSON.parse(jsonInfo) : {};
+      } else {
+        return this.overviewInfo;
       }
       }
     },
     },
   },
   },
   actions: {
   actions: {
     setOverviewInfo(info: OverviewInfo) {
     setOverviewInfo(info: OverviewInfo) {
       this.overviewInfo = info;
       this.overviewInfo = info;
-      console.log('getOverviewInfo',this.overviewInfo,info)
-      sessionStorage.setItem('overviewInfo',JSON.stringify(this.overviewInfo))
+      console.log('getOverviewInfo', this.overviewInfo, info);
+      sessionStorage.setItem('overviewInfo', JSON.stringify(this.overviewInfo));
     },
     },
     resetLockInfo() {
     resetLockInfo() {
       Persistent.removeLocal(LOCK_INFO_KEY, true);
       Persistent.removeLocal(LOCK_INFO_KEY, true);
       this.overviewInfo = null;
       this.overviewInfo = null;
     },
     },
-    async updateOverviewInfo(){
-      if(this.getOverviewInfo.id){
+    async updateOverviewInfo() {
+      if (this.getOverviewInfo.id) {
         const overviewInfo = await this.getUserInfoAction();
         const overviewInfo = await this.getUserInfoAction();
         this.setOverviewInfo({
         this.setOverviewInfo({
           ...overviewInfo,
           ...overviewInfo,
-        })
+        });
       }
       }
     },
     },
     // Unlock
     // Unlock

+ 6 - 6
src/store/modules/permission.ts

@@ -27,7 +27,7 @@ import { intersection } from 'lodash-es';
 
 
 interface PermissionState {
 interface PermissionState {
   // Permission code list
   // Permission code list
-  permCodeList: string[] ;
+  permCodeList: string[];
   // Whether the route has been dynamically added
   // Whether the route has been dynamically added
   isDynamicAddedRoute: boolean;
   isDynamicAddedRoute: boolean;
   // To trigger a menu update
   // To trigger a menu update
@@ -70,7 +70,7 @@ export const usePermissionStore = defineStore({
     setPermCodeList(codeList: string[]) {
     setPermCodeList(codeList: string[]) {
       this.permCodeList = codeList;
       this.permCodeList = codeList;
     },
     },
-    getCheckPerm(value:string|string[]): boolean{
+    getCheckPerm(value: string | string[]): boolean {
       const permCodeList = this.permCodeList;
       const permCodeList = this.permCodeList;
       if (!value) {
       if (!value) {
         return false;
         return false;
@@ -78,7 +78,7 @@ export const usePermissionStore = defineStore({
       if (!isArray(value)) {
       if (!isArray(value)) {
         return permCodeList?.includes(value);
         return permCodeList?.includes(value);
       }
       }
-      return (intersection(value, permCodeList)).length > 0;
+      return intersection(value, permCodeList).length > 0;
     },
     },
     setBackMenuList(list: Menu[]) {
     setBackMenuList(list: Menu[]) {
       this.backMenuList = list;
       this.backMenuList = list;
@@ -104,11 +104,11 @@ export const usePermissionStore = defineStore({
     },
     },
     async changePermissionCode() {
     async changePermissionCode() {
       const codeList = await getPermCode();
       const codeList = await getPermCode();
-      const permsList = codeList.map(ele => ele.perms)
+      const permsList = codeList.map((ele) => ele.perms);
       this.setPermCodeList(permsList);
       this.setPermCodeList(permsList);
     },
     },
     async buildRoutesAction(): Promise<AppRouteRecordRaw[]> {
     async buildRoutesAction(): Promise<AppRouteRecordRaw[]> {
-      console.log('buildRoutesAction')
+      console.log('buildRoutesAction');
       const { t } = useI18n();
       const { t } = useI18n();
       const userStore = useUserStore();
       const userStore = useUserStore();
       const appStore = useAppStoreWithOut();
       const appStore = useAppStoreWithOut();
@@ -159,7 +159,7 @@ export const usePermissionStore = defineStore({
         }
         }
         return;
         return;
       };
       };
-      console.log('buildRoutesAction',permissionMode)
+      console.log('buildRoutesAction', permissionMode);
       switch (permissionMode) {
       switch (permissionMode) {
         case PermissionModeEnum.ROLE:
         case PermissionModeEnum.ROLE:
           routes = filter(asyncRoutes, routeFilter);
           routes = filter(asyncRoutes, routeFilter);

+ 16 - 15
src/store/modules/user.ts

@@ -32,7 +32,8 @@ export const useUserStore = defineStore({
     // user info
     // user info
     userInfo: null,
     userInfo: null,
     // token
     // token
-    token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsImRldmljZSI6ImRlZmF1bHQtZGV2aWNlIiwiZWZmIjotMSwicm5TdHIiOiJnOVE0dXNjRnBYc0JoWUtsTlpoS3lJZWo1SHFGNzZmRCIsInVzZXJJZCI6MSwiaXNBZG1pbiI6MSwidXNlck5hbWUiOiJzdXBlci1hZG1pbiIsIm5pY2tOYW1lIjoi6LaF57qn566h55CG5ZGYIn0.2zKzeog-rzCV6-t_JaEg0zFfZM-pKJNnrqSxnVp2fgo',
+    token:
+      'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsImRldmljZSI6ImRlZmF1bHQtZGV2aWNlIiwiZWZmIjotMSwicm5TdHIiOiJnOVE0dXNjRnBYc0JoWUtsTlpoS3lJZWo1SHFGNzZmRCIsInVzZXJJZCI6MSwiaXNBZG1pbiI6MSwidXNlck5hbWUiOiJzdXBlci1hZG1pbiIsIm5pY2tOYW1lIjoi6LaF57qn566h55CG5ZGYIn0.2zKzeog-rzCV6-t_JaEg0zFfZM-pKJNnrqSxnVp2fgo',
     // roleList
     // roleList
     roleList: [],
     roleList: [],
     // Whether the login expired
     // Whether the login expired
@@ -40,7 +41,7 @@ export const useUserStore = defineStore({
     // Last fetch time
     // Last fetch time
     lastUpdateTime: 0,
     lastUpdateTime: 0,
     // 经销商信息
     // 经销商信息
-    agent: null
+    agent: null,
   }),
   }),
   getters: {
   getters: {
     getUserInfo(): UserInfo {
     getUserInfo(): UserInfo {
@@ -71,8 +72,8 @@ export const useUserStore = defineStore({
       this.roleList = roleList;
       this.roleList = roleList;
       setAuthCache(ROLES_KEY, roleList);
       setAuthCache(ROLES_KEY, roleList);
     },
     },
-    setAgent(agent: UserAgent){
-      console.log('setAgent',agent)
+    setAgent(agent: UserAgent) {
+      console.log('setAgent', agent);
       this.agent = agent;
       this.agent = agent;
       setAuthCache(AGENT_KEY, agent);
       setAuthCache(AGENT_KEY, agent);
     },
     },
@@ -101,16 +102,16 @@ export const useUserStore = defineStore({
     ): Promise<GetUserInfoModel | null> {
     ): Promise<GetUserInfoModel | null> {
       try {
       try {
         const { goHome = true, mode, ...loginParams } = params;
         const { goHome = true, mode, ...loginParams } = params;
-        console.log('setSessionTimeout',goHome)
-      const data = await loginApi(loginParams, mode);
-      console.log('Aa123456',data)
+        console.log('setSessionTimeout', goHome);
+        const data = await loginApi(loginParams, mode);
+        console.log('Aa123456', data);
         const { token, user } = data;
         const { token, user } = data;
         this.setToken(token);
         this.setToken(token);
         this.setUserInfo({
         this.setUserInfo({
-          userId:data.id,
+          userId: data.id,
           realName: data.nickName,
           realName: data.nickName,
-          username:data.userName,
-          avatar:data.head||'https://q1.qlogo.cn/g?b=qq&nk=339449197&s=640',
+          username: data.userName,
+          avatar: data.head || 'https://q1.qlogo.cn/g?b=qq&nk=339449197&s=640',
           // roles:[data.roleId],
           // roles:[data.roleId],
         });
         });
         // save token
         // save token
@@ -144,16 +145,16 @@ export const useUserStore = defineStore({
     async getUserInfoAction(): Promise<UserInfo | null> {
     async getUserInfoAction(): Promise<UserInfo | null> {
       if (!this.getToken) return null;
       if (!this.getToken) return null;
       const userInfo = await getUserInfo();
       const userInfo = await getUserInfo();
-      console.log('home/userInfo',userInfo)
+      console.log('home/userInfo', userInfo);
       const { roleId, agent = null } = userInfo;
       const { roleId, agent = null } = userInfo;
-      this.setAgent(agent)
-      if (isArray(roleId)) { 
+      this.setAgent(agent);
+      if (isArray(roleId)) {
         const roleList = roleId.map((item) => item.value) as RoleEnum[];
         const roleList = roleId.map((item) => item.value) as RoleEnum[];
         this.setRoleList(roleList);
         this.setRoleList(roleList);
-      }else if(roleId) {
+      } else if (roleId) {
         userInfo.roles = [roleId];
         userInfo.roles = [roleId];
         this.setRoleList([]);
         this.setRoleList([]);
-      }else{
+      } else {
         userInfo.roles = [];
         userInfo.roles = [];
         this.setRoleList([]);
         this.setRoleList([]);
       }
       }

+ 39 - 29
src/utils/file/download.ts

@@ -1,45 +1,55 @@
 import { openWindow } from '..';
 import { openWindow } from '..';
 import { dataURLtoBlob, urlToBase64 } from './base64Conver';
 import { dataURLtoBlob, urlToBase64 } from './base64Conver';
-import * as XLSX from 'xlsx' // Vue3 版本
-import fs from 'file-saver'
+import * as XLSX from 'xlsx'; // Vue3 版本
+import fs from 'file-saver';
 /**
 /**
  * Download online pictures
  * Download online pictures
  * @param data
  * @param data
  * @param filename
  * @param filename
  */
  */
- export function exportElsxFile(json, fields, filename = '表格.xlsx') {
-  json.forEach(item => {
-      for (let i in item) {
-          if (fields.hasOwnProperty(i)) {
-              item[fields[i]] = item[i];
-          }
-          delete item[i]; //删除原先的对象属性
+export function exportElsxFile(json, fields, filename = '表格.xlsx') {
+  json.forEach((item) => {
+    for (const i in item) {
+      if (fields.hasOwnProperty(i)) {
+        item[fields[i]] = item[i];
       }
       }
-  })
+      delete item[i]; //删除原先的对象属性
+    }
+  });
 
 
-  let sheetName = filename //excel的文件名称
-  let wb = XLSX.utils.book_new()  //工作簿对象包含一SheetNames数组,以及一个表对象映射表名称到表对象。XLSX.utils.book_new实用函数创建一个新的工作簿对象。
-  let ws = XLSX.utils.json_to_sheet(json, { header: Object.values(fields) }) //将JS对象数组转换为工作表。
-  wb.SheetNames.push(sheetName)
-  wb.Sheets[sheetName] = ws
-  const defaultCellStyle = { font: { name: "Verdana", sz: 13, color: "FF00FF88" }, fill: { fgColor: { rgb: "FFFFAA00" } } };//设置表格的样式
-  let wopts = { bookType: 'xlsx', bookSST: false, type: 'binary', cellStyles: true, defaultCellStyle: defaultCellStyle, showGridLines: false }  //写入的样式
-  let wbout = XLSX.write(wb, wopts)
-  let blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' })
-  fs.saveAs(blob, filename + '.xlsx')
+  const sheetName = filename; //excel的文件名称
+  const wb = XLSX.utils.book_new(); //工作簿对象包含一SheetNames数组,以及一个表对象映射表名称到表对象。XLSX.utils.book_new实用函数创建一个新的工作簿对象。
+  const ws = XLSX.utils.json_to_sheet(json, { header: Object.values(fields) }); //将JS对象数组转换为工作表。
+  wb.SheetNames.push(sheetName);
+  wb.Sheets[sheetName] = ws;
+  const defaultCellStyle = {
+    font: { name: 'Verdana', sz: 13, color: 'FF00FF88' },
+    fill: { fgColor: { rgb: 'FFFFAA00' } },
+  }; //设置表格的样式
+  const wopts = {
+    bookType: 'xlsx',
+    bookSST: false,
+    type: 'binary',
+    cellStyles: true,
+    defaultCellStyle: defaultCellStyle,
+    showGridLines: false,
+  }; //写入的样式
+  const wbout = XLSX.write(wb, wopts);
+  const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' });
+  fs.saveAs(blob, filename + '.xlsx');
 }
 }
-const s2ab = s => {
+const s2ab = (s) => {
   if (typeof ArrayBuffer !== 'undefined') {
   if (typeof ArrayBuffer !== 'undefined') {
-      var buf = new ArrayBuffer(s.length)
-      var view = new Uint8Array(buf)
-      for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff
-      return buf
+    var buf = new ArrayBuffer(s.length);
+    const view = new Uint8Array(buf);
+    for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
+    return buf;
   } else {
   } else {
-      var buf = new Array(s.length);
-      for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
-      return buf;
+    var buf = new Array(s.length);
+    for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xff;
+    return buf;
   }
   }
-}
+};
 
 
 /**
 /**
  * Download online pictures
  * Download online pictures

+ 22 - 21
src/utils/http/axios/Axios.ts

@@ -10,7 +10,7 @@ import { cloneDeep } from 'lodash-es';
 import { ContentTypeEnum } from '/@/enums/httpEnum';
 import { ContentTypeEnum } from '/@/enums/httpEnum';
 import { RequestEnum } from '/@/enums/httpEnum';
 import { RequestEnum } from '/@/enums/httpEnum';
 const { createMessage } = useMessage();
 const { createMessage } = useMessage();
-import { downloadByData } from '/@/utils/file/download'
+import { downloadByData } from '/@/utils/file/download';
 
 
 export * from './axiosTransform';
 export * from './axiosTransform';
 
 
@@ -129,14 +129,14 @@ export class VAxios {
     const customFilename = params.name || 'file';
     const customFilename = params.name || 'file';
     if (params.filename) {
     if (params.filename) {
       formData.append(customFilename, params.file, params.filename);
       formData.append(customFilename, params.file, params.filename);
-    }else {
-      formData.append(customFilename, params.file || params.data && params.data.file);
+    } else {
+      formData.append(customFilename, params.file || (params.data && params.data.file));
     }
     }
     if (params.data) {
     if (params.data) {
       Object.keys(params.data).forEach((key) => {
       Object.keys(params.data).forEach((key) => {
         const value = params.data![key];
         const value = params.data![key];
-        if(key == 'file' && !params.filename){
-          return
+        if (key == 'file' && !params.filename) {
+          return;
         }
         }
         if (Array.isArray(value)) {
         if (Array.isArray(value)) {
           value.forEach((item) => {
           value.forEach((item) => {
@@ -144,7 +144,7 @@ export class VAxios {
           });
           });
           return;
           return;
         }
         }
-        if(params.data![key] == undefined){
+        if (params.data![key] == undefined) {
           formData.append(key, '');
           formData.append(key, '');
           return;
           return;
         }
         }
@@ -197,11 +197,10 @@ export class VAxios {
     });
     });
   }
   }
 
 
-  
   /**
   /**
    * @description:  File Upload
    * @description:  File Upload
    */
    */
-   downloadFile<T = any>(config: AxiosRequestConfig) {
+  downloadFile<T = any>(config: AxiosRequestConfig) {
     let conf: CreateAxiosOptions = cloneDeep(config);
     let conf: CreateAxiosOptions = cloneDeep(config);
     const { requestOptions } = this.options;
     const { requestOptions } = this.options;
     const transform = this.getTransform();
     const transform = this.getTransform();
@@ -214,32 +213,34 @@ export class VAxios {
 
 
     conf = this.supportFormData(conf);
     conf = this.supportFormData(conf);
     // return new Promise((resolve, reject) => {
     // return new Promise((resolve, reject) => {
-      this.axiosInstance
+    this.axiosInstance
       .request<any, AxiosResponse<Result>>(conf)
       .request<any, AxiosResponse<Result>>(conf)
       .then((res: AxiosResponse<Result>) => {
       .then((res: AxiosResponse<Result>) => {
-        const resData = res.data
-        const fileReader = new FileReader()
+        const resData = res.data;
+        const fileReader = new FileReader();
         fileReader.onloadend = () => {
         fileReader.onloadend = () => {
           // 此处两种判断返回信息的方法可选其一
           // 此处两种判断返回信息的方法可选其一
           // 方法一:
           // 方法一:
           try {
           try {
-            const jsonData = JSON.parse(fileReader.result) // 说明是普通对象数据,后台转换失败
+            const jsonData = JSON.parse(fileReader.result); // 说明是普通对象数据,后台转换失败
             // 后台信息
             // 后台信息
             createMessage.error(jsonData.message);
             createMessage.error(jsonData.message);
-          } catch (err) { // 解析成对象失败,说明是正常的文件流
+          } catch (err) {
+            // 解析成对象失败,说明是正常的文件流
             // 下载文件
             // 下载文件
-            downloadByData(resData,config.fileName)
+            downloadByData(resData, config.fileName);
           }
           }
-        }
-        fileReader.readAsText(resData)
-      }).catch((e: Error | AxiosError) => {    
+        };
+        fileReader.readAsText(resData);
+      })
+      .catch((e: Error | AxiosError) => {
         if (requestCatchHook && isFunction(requestCatchHook)) {
         if (requestCatchHook && isFunction(requestCatchHook)) {
           requestCatchHook(e, opt);
           requestCatchHook(e, opt);
           return;
           return;
-        }    
-        console.log('Error',e)
+        }
+        console.log('Error', e);
         // reject(e);
         // reject(e);
-      });;
+      });
     // })
     // })
   }
   }
   // support form-data
   // support form-data
@@ -287,7 +288,7 @@ export class VAxios {
 
 
     const { beforeRequestHook, requestCatchHook, transformRequestHook } = transform || {};
     const { beforeRequestHook, requestCatchHook, transformRequestHook } = transform || {};
     if (beforeRequestHook && isFunction(beforeRequestHook)) {
     if (beforeRequestHook && isFunction(beforeRequestHook)) {
-    conf = beforeRequestHook(conf, opt);
+      conf = beforeRequestHook(conf, opt);
     }
     }
     conf.requestOptions = opt;
     conf.requestOptions = opt;
     conf = this.supportFormData(conf);
     conf = this.supportFormData(conf);

+ 16 - 15
src/utils/http/axios/index.ts

@@ -52,9 +52,10 @@ const transform: AxiosTransform = {
     const { code, result, message } = data;
     const { code, result, message } = data;
 
 
     // 这里逻辑可以根据项目进行修改
     // 这里逻辑可以根据项目进行修改
-    const hasSuccess = data && Reflect.has(data, 'code') && (code === ResultEnum.SUCCESS || code == 0);
+    const hasSuccess =
+      data && Reflect.has(data, 'code') && (code === ResultEnum.SUCCESS || code == 0);
     if (hasSuccess) {
     if (hasSuccess) {
-      return result ||  data.data;
+      return result || data.data;
     }
     }
 
 
     // 在此处根据自己项目的实际情况对不同的code执行不同的操作
     // 在此处根据自己项目的实际情况对不同的code执行不同的操作
@@ -70,7 +71,7 @@ const transform: AxiosTransform = {
       default:
       default:
         // if(code){
         // if(code){
         //   timeoutMsg = t(`code.apiCode.${code}`);
         //   timeoutMsg = t(`code.apiCode.${code}`);
-        // }else 
+        // }else
         if (message) {
         if (message) {
           timeoutMsg = message;
           timeoutMsg = message;
         }
         }
@@ -138,19 +139,19 @@ const transform: AxiosTransform = {
    */
    */
   requestInterceptors: (config, options) => {
   requestInterceptors: (config, options) => {
     // 请求之前处理config
     // 请求之前处理config
-    const token = getcookie('token')   
-      //获取cookie
-      function getcookie(name){
-        var myname = name + "=";
-        var ca = document.cookie.split(";");
-        for(var i = 0; i<ca.length; i++){
-            var c = ca[i].trim();//去掉字符串首尾空格。 
-            if(c.indexOf(myname) == 0){
-                return c.substring(myname.length,c.length);
-            }
+    const token = getcookie('token');
+    //获取cookie
+    function getcookie(name) {
+      const myname = name + '=';
+      const ca = document.cookie.split(';');
+      for (let i = 0; i < ca.length; i++) {
+        const c = ca[i].trim(); //去掉字符串首尾空格。
+        if (c.indexOf(myname) == 0) {
+          return c.substring(myname.length, c.length);
         }
         }
-        return "";
-    };
+      }
+      return '';
+    }
     if (token && (config as Recordable)?.requestOptions?.withToken !== false) {
     if (token && (config as Recordable)?.requestOptions?.withToken !== false) {
       // jwt token
       // jwt token
       (config as Recordable).headers.Authorization = options.authenticationScheme
       (config as Recordable).headers.Authorization = options.authenticationScheme

+ 37 - 30
src/utils/index.ts

@@ -92,35 +92,42 @@ export const withInstall = <T>(component: T, alias?: string) => {
 
 
 // 禁止输入表情包
 // 禁止输入表情包
 export const isEmojiCharacter = (substring) => {
 export const isEmojiCharacter = (substring) => {
-  for ( var i = 0; i < substring.length; i++) {
-      var hs = substring.charCodeAt(i);
-      if (0xd800 <= hs && hs <= 0xdbff) {
-          if (substring.length > 1) {
-              var ls = substring.charCodeAt(i + 1);
-              var uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
-              if (0x1d000 <= uc && uc <= 0x1f77f) {
-                  return true;
-              }
-          }
-      } else if (substring.length > 1) {
-          var ls = substring.charCodeAt(i + 1);
-          if (ls == 0x20e3) {
-              return true;
-          }
-      } else {
-          if (0x2100 <= hs && hs <= 0x27ff) {
-              return true;
-          } else if (0x2B05 <= hs && hs <= 0x2b07) {
-              return true;
-          } else if (0x2934 <= hs && hs <= 0x2935) {
-              return true;
-          } else if (0x3297 <= hs && hs <= 0x3299) {
-              return true;
-          } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030
-              || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b
-              || hs == 0x2b50) {
-              return true;
-          }
+  for (let i = 0; i < substring.length; i++) {
+    const hs = substring.charCodeAt(i);
+    if (0xd800 <= hs && hs <= 0xdbff) {
+      if (substring.length > 1) {
+        var ls = substring.charCodeAt(i + 1);
+        const uc = (hs - 0xd800) * 0x400 + (ls - 0xdc00) + 0x10000;
+        if (0x1d000 <= uc && uc <= 0x1f77f) {
+          return true;
+        }
       }
       }
+    } else if (substring.length > 1) {
+      var ls = substring.charCodeAt(i + 1);
+      if (ls == 0x20e3) {
+        return true;
+      }
+    } else {
+      if (0x2100 <= hs && hs <= 0x27ff) {
+        return true;
+      } else if (0x2b05 <= hs && hs <= 0x2b07) {
+        return true;
+      } else if (0x2934 <= hs && hs <= 0x2935) {
+        return true;
+      } else if (0x3297 <= hs && hs <= 0x3299) {
+        return true;
+      } else if (
+        hs == 0xa9 ||
+        hs == 0xae ||
+        hs == 0x303d ||
+        hs == 0x3030 ||
+        hs == 0x2b55 ||
+        hs == 0x2b1c ||
+        hs == 0x2b1b ||
+        hs == 0x2b50
+      ) {
+        return true;
+      }
+    }
   }
   }
-}
+};

+ 10 - 10
src/utils/treeUtils.ts

@@ -55,18 +55,18 @@ export function getTreeId(treeNodes: TreeMenuNode[]): number[] {
   // 如果明确节点是顺序可以保证先父后子,可以省去这次遍历,在后面边遍历过程中填充查找表
   // 如果明确节点是顺序可以保证先父后子,可以省去这次遍历,在后面边遍历过程中填充查找表
   // const nodesMap = new Map<number, TreeNode>(treeNodes.map((node) => [node.id, node]));
   // const nodesMap = new Map<number, TreeNode>(treeNodes.map((node) => [node.id, node]));
   // 引入虚拟根节点来统一实现 parent 始终有效,避免空判断
   // 引入虚拟根节点来统一实现 parent 始终有效,避免空判断
-  let TreeIdList:number[] =  []
-  function getTreeIdList(list:TreeMenuNode[]) {
-    return list.map(ele => {
-      if(ele.children && ele.children.length){
-        getTreeIdList(ele.children)
-      }else{
-        TreeIdList.push(ele.id)
+  const TreeIdList: number[] = [];
+  function getTreeIdList(list: TreeMenuNode[]) {
+    return list.map((ele) => {
+      if (ele.children && ele.children.length) {
+        getTreeIdList(ele.children);
+      } else {
+        TreeIdList.push(ele.id);
       }
       }
-    })
+    });
   }
   }
-  getTreeIdList(treeNodes)
-  console.log('TreeIdList',TreeIdList,treeNodes)
+  getTreeIdList(treeNodes);
+  console.log('TreeIdList', TreeIdList, treeNodes);
   return TreeIdList ?? [];
   return TreeIdList ?? [];
 }
 }
 
 

+ 14 - 6
src/views/Accounting/ListModal.vue

@@ -16,7 +16,15 @@
         </template>
         </template>
         <template #img="{ model }">
         <template #img="{ model }">
           <PreviewGroup>
           <PreviewGroup>
-            <Image style="overflow: hidden;height: 100%;object-fit: cover;margin-right:10px" :height="80" :width="80" v-for="item in model.payImgArray" :key="item" :src="item" :size="200" />
+            <Image
+              style="overflow: hidden; height: 100%; object-fit: cover; margin-right: 10px"
+              :height="80"
+              :width="80"
+              v-for="item in model.payImgArray"
+              :key="item"
+              :src="item"
+              :size="200"
+            />
           </PreviewGroup>
           </PreviewGroup>
         </template>
         </template>
       </BasicForm>
       </BasicForm>
@@ -43,7 +51,7 @@
   import { uploadApi } from '/@/api/product/index';
   import { uploadApi } from '/@/api/product/index';
   const { t } = useI18n();
   const { t } = useI18n();
   export default defineComponent({
   export default defineComponent({
-    components: { BasicModal, BasicForm, Image, PreviewGroup: Image.PreviewGroup, },
+    components: { BasicModal, BasicForm, Image, PreviewGroup: Image.PreviewGroup },
     props: {
     props: {
       userData: { type: Object },
       userData: { type: Object },
     },
     },
@@ -214,7 +222,7 @@
   });
   });
 </script>
 </script>
 <style lang="less">
 <style lang="less">
-.ant-image {
-  margin-right: 10px;
-}
-</style>
+  .ant-image {
+    margin-right: 10px;
+  }
+</style>

+ 1 - 1
src/views/Accounting/index.vue

@@ -48,7 +48,7 @@
   import partsListModal from './ListModal.vue';
   import partsListModal from './ListModal.vue';
   import { useModal } from '/@/components/Modal';
   import { useModal } from '/@/components/Modal';
   import { useRouter } from 'vue-router';
   import { useRouter } from 'vue-router';
-  import { checkAccountList } from '/@/api/spares';//getByRoleType
+  import { checkAccountList } from '/@/api/spares'; //getByRoleType
   export default defineComponent({
   export default defineComponent({
     name: '维修备件管理',
     name: '维修备件管理',
     components: {
     components: {

+ 1 - 1
src/views/U8Sending/index.vue

@@ -49,7 +49,7 @@
   import partsListModal from './ListModal.vue';
   import partsListModal from './ListModal.vue';
   import { useModal } from '/@/components/Modal';
   import { useModal } from '/@/components/Modal';
   import { useRouter } from 'vue-router';
   import { useRouter } from 'vue-router';
-  import { u8ListList } from '/@/api/spares';//getByRoleType
+  import { u8ListList } from '/@/api/spares'; //getByRoleType
   export default defineComponent({
   export default defineComponent({
     name: '维修备件管理',
     name: '维修备件管理',
     components: {
     components: {

+ 126 - 123
src/views/dashboard/analysis/components/lineEcharts.vue

@@ -2,51 +2,55 @@
   <Card title="近半年用户新增趋势" :loading="loading">
   <Card title="近半年用户新增趋势" :loading="loading">
     <template #extra>
     <template #extra>
       <div class="condition">
       <div class="condition">
-          <div class="selct" style="display: inline-block;">
-            <span style="margin-right:15px">颗粒度</span>
-            <Select
+        <div class="selct" style="display: inline-block">
+          <span style="margin-right: 15px">颗粒度</span>
+          <Select
             v-model:value="value"
             v-model:value="value"
-            style="width: 100px;margin-right:30px"
+            style="width: 100px; margin-right: 30px"
             placeholder="请选择颗粒度"
             placeholder="请选择颗粒度"
             :options="options"
             :options="options"
             @change="handleChange"
             @change="handleChange"
-          ></Select>
-          </div>
-          <a-button type="primary" @click="handleExport" >导出</a-button>
+          />
+        </div>
+        <a-button type="primary" @click="handleExport">导出</a-button>
       </div>
       </div>
     </template>
     </template>
     <div ref="chartRef1" :style="{ width, height }"></div>
     <div ref="chartRef1" :style="{ width, height }"></div>
   </Card>
   </Card>
 </template>
 </template>
 <script lang="ts" setup>
 <script lang="ts" setup>
-import type { SelectProps } from 'ant-design-vue';
-import { Ref, ref, watch } from 'vue';
-import { Card, Select } from 'ant-design-vue';
-import { useECharts } from '/@/hooks/web/useECharts';
-const colorList = ['#38a0ff', '#73DDFF', '#fe9a8b', '#F56948', '#9E87FF'];
-const shadowColor = ['rgba(158,135,255, 0.3)','rgba(115,221,255, 0.3)','rgba(254,154,139, 0.3)']
-const emit = defineEmits(["alertSome"])
-import { exportElsxFile, } from '/@/utils/file/download';
-const props = defineProps({
-  loading: Boolean,
-  width: {
-    type: String as PropType<string>,
-    default: '100%',
-  },
-  height: {
-    type: String as PropType<string>,
-    default: '300px',
-  },
-  propsData:{
-    type:Object,
-    default:{
-      xData:['北京', '上海', '广州', '深圳', '香港', '澳门', '台湾'],
-      yData:[10, 10, 30, 12, 15, 3, 7],
-    }
-  }
-});
-const value = ref('0');
-const options = ref<SelectProps['options']>([
+  import type { SelectProps } from 'ant-design-vue';
+  import { Ref, ref, watch } from 'vue';
+  import { Card, Select } from 'ant-design-vue';
+  import { useECharts } from '/@/hooks/web/useECharts';
+  const colorList = ['#38a0ff', '#73DDFF', '#fe9a8b', '#F56948', '#9E87FF'];
+  const shadowColor = [
+    'rgba(158,135,255, 0.3)',
+    'rgba(115,221,255, 0.3)',
+    'rgba(254,154,139, 0.3)',
+  ];
+  const emit = defineEmits(['alertSome']);
+  import { exportElsxFile } from '/@/utils/file/download';
+  const props = defineProps({
+    loading: Boolean,
+    width: {
+      type: String as PropType<string>,
+      default: '100%',
+    },
+    height: {
+      type: String as PropType<string>,
+      default: '300px',
+    },
+    propsData: {
+      type: Object,
+      default: {
+        xData: ['北京', '上海', '广州', '深圳', '香港', '澳门', '台湾'],
+        yData: [10, 10, 30, 12, 15, 3, 7],
+      },
+    },
+  });
+  const value = ref('0');
+  const options = ref<SelectProps['options']>([
     {
     {
       value: '0',
       value: '0',
       label: '日',
       label: '日',
@@ -59,107 +63,106 @@ const options = ref<SelectProps['options']>([
       value: '2',
       value: '2',
       label: '月',
       label: '月',
     },
     },
-    ]);
-const chartRef1 = ref<HTMLDivElement | null>(null);
-const { setOptions } = useECharts(chartRef1 as Ref<HTMLDivElement>);
-function handleChange(val){
-    emit('change',{type:'user',value:val})
-}
-function handleExport(){
-  console.log('props',props.propsData)
-  let fields  = {
-    'time':'日期',
-    'num':'数量',
+  ]);
+  const chartRef1 = ref<HTMLDivElement | null>(null);
+  const { setOptions } = useECharts(chartRef1 as Ref<HTMLDivElement>);
+  function handleChange(val) {
+    emit('change', { type: 'user', value: val });
   }
   }
-    let data = props.propsData.xData.map((ele,index) => {
+  function handleExport() {
+    console.log('props', props.propsData);
+    let fields = {
+      time: '日期',
+      num: '数量',
+    };
+    let data = props.propsData.xData.map((ele, index) => {
       return {
       return {
-        'time':ele,
-        'num':props.propsData.yData && props.propsData.yData[index] || 0,
-      }
-    })
-    exportElsxFile(data, fields,'用户趋势')
-}
-watch(
-  () => props.propsData,
-  (propsData) => {
-    setOptions({
-      tooltip: {
-        trigger: 'axis',
-        axisPointer: {
-          label: {
-            show: true,
-            backgroundColor: '#fff',
-            color: '#556677',
-            borderColor: 'rgba(0,0,0,0)',
-            shadowColor: 'rgba(0,0,0,0)',
-            shadowOffsetY: 0,
+        time: ele,
+        num: (props.propsData.yData && props.propsData.yData[index]) || 0,
+      };
+    });
+    exportElsxFile(data, fields, '用户趋势');
+  }
+  watch(
+    () => props.propsData,
+    (propsData) => {
+      setOptions({
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            label: {
+              show: true,
+              backgroundColor: '#fff',
+              color: '#556677',
+              borderColor: 'rgba(0,0,0,0)',
+              shadowColor: 'rgba(0,0,0,0)',
+              shadowOffsetY: 0,
+            },
+            lineStyle: {
+              width: 0,
+            },
           },
           },
-          lineStyle: {
-            width: 0,
+          backgroundColor: '#fff',
+          textStyle: {
+            color: '#5c6c7c',
           },
           },
+          padding: [10, 10],
+          extraCssText: 'box-shadow: 1px 0 2px 0 rgba(163,163,163,0.5)',
         },
         },
-        backgroundColor: '#fff',
-        textStyle: {
-          color: '#5c6c7c',
-        },
-        padding: [10, 10],
-        extraCssText: 'box-shadow: 1px 0 2px 0 rgba(163,163,163,0.5)',
-      },
 
 
-      xAxis: {
+        xAxis: {
           type: 'category',
           type: 'category',
           data: propsData.xData,
           data: propsData.xData,
-         
         },
         },
-      yAxis: [
-        {
-          type: 'value',
-          axisTick: {
-            show: false,
-          },
-          splitLine: {
-            show: true,
-            lineStyle: {
-              color: ['#f1f4f8'],
-              width: 1,
-              type: 'solid',
+        yAxis: [
+          {
+            type: 'value',
+            axisTick: {
+              show: false,
             },
             },
-          },
-          axisLabel: {
-            textStyle: {
-              color: '#556677',
+            splitLine: {
+              show: true,
+              lineStyle: {
+                color: ['#f1f4f8'],
+                width: 1,
+                type: 'solid',
+              },
+            },
+            axisLabel: {
+              textStyle: {
+                color: '#556677',
+              },
+              formatter: '{value}',
+            },
+            axisLine: {
+              show: false,
+              lineStyle: {
+                color: '#DCE2E8',
+              },
             },
             },
-            formatter: '{value}',
           },
           },
-          axisLine: {
-            show: false,
+        ],
+        series: [
+          {
+            name: 'Adidas',
+            type: 'line',
+            data: propsData.yData,
+            symbolSize: 1,
+            smooth: true,
+            symbol: 'none', //加这个
+            // yAxisIndex: 0,
+            showSymbol: false,
             lineStyle: {
             lineStyle: {
-              color: '#DCE2E8',
+              width: 2,
+              color: colorList[0],
+              shadowColor: shadowColor[0],
+              shadowBlur: 10,
+              shadowOffsetY: 20,
             },
             },
           },
           },
-        },
-      ],
-      series: [
-        {
-          name: 'Adidas',
-          type: 'line',
-          data: propsData.yData,
-          symbolSize: 1,
-          smooth: true,
-          symbol:'none', //加这个
-          // yAxisIndex: 0,
-          showSymbol: false,
-          lineStyle: {
-            width: 2,
-            color: colorList[0],
-            shadowColor: shadowColor[0],
-            shadowBlur: 10,
-            shadowOffsetY: 20,
-          },
-        },
-      ],
-    });
-  },
-  { immediate: true,deep:true },
-);
+        ],
+      });
+    },
+    { immediate: true, deep: true },
+  );
 </script>
 </script>

+ 40 - 40
src/views/dashboard/analysis/components/lineEcharts2.vue

@@ -2,20 +2,20 @@
   <Card title="近半年线上订单趋势" :loading="loading">
   <Card title="近半年线上订单趋势" :loading="loading">
     <template #extra>
     <template #extra>
       <div class="condition">
       <div class="condition">
-          <div class="selct" style="display: inline-block;">
-            <span style="margin-right:15px">颗粒度</span>
-            <Select
+        <div class="selct" style="display: inline-block">
+          <span style="margin-right: 15px">颗粒度</span>
+          <Select
             v-model:value="value"
             v-model:value="value"
-            style="width: 100px;margin-right:30px"
+            style="width: 100px; margin-right: 30px"
             placeholder="请选择颗粒度"
             placeholder="请选择颗粒度"
             :options="options"
             :options="options"
             @change="handleChange"
             @change="handleChange"
-          ></Select>
-          </div>
-          <a-button type="primary" @click="handleExport">导出</a-button>
+          />
+        </div>
+        <a-button type="primary" @click="handleExport">导出</a-button>
       </div>
       </div>
     </template>
     </template>
-      <div ref="chartRef" :style="{ height, width }"></div>
+    <div ref="chartRef" :style="{ height, width }"></div>
   </Card>
   </Card>
 </template>
 </template>
 <script lang="ts">
 <script lang="ts">
@@ -27,9 +27,9 @@
   import { ref, Ref, watch, defineEmits } from 'vue';
   import { ref, Ref, watch, defineEmits } from 'vue';
   // import type { dataItemType } from './props';
   // import type { dataItemType } from './props';
   import { useECharts } from '/@/hooks/web/useECharts';
   import { useECharts } from '/@/hooks/web/useECharts';
-  import { exportElsxFile, } from '/@/utils/file/download';
+  import { exportElsxFile } from '/@/utils/file/download';
   const props = defineProps({
   const props = defineProps({
-  loading: Boolean,
+    loading: Boolean,
     ...basicProps,
     ...basicProps,
   });
   });
   const value = ref('0');
   const value = ref('0');
@@ -46,36 +46,36 @@
       value: '2',
       value: '2',
       label: '月',
       label: '月',
     },
     },
-    ]);
-  const emit = defineEmits(["alertSome"])
+  ]);
+  const emit = defineEmits(['alertSome']);
   const downOrderData = ref<number[]>([]);
   const downOrderData = ref<number[]>([]);
   const incrementOrderData = ref<number[]>([]);
   const incrementOrderData = ref<number[]>([]);
   const partsOrderData = ref<number[]>([]);
   const partsOrderData = ref<number[]>([]);
   const yixStringData = ref<string[]>([]);
   const yixStringData = ref<string[]>([]);
-  const echartTypr = ref('line')
-  const nameList = ref<string[]>(['下载订单','权益订单','配件订单']);
+  const echartTypr = ref('line');
+  const nameList = ref<string[]>(['下载订单', '权益订单', '配件订单']);
   const maxSize = ref(0);
   const maxSize = ref(0);
   const chartRef = ref<HTMLDivElement | null>(null);
   const chartRef = ref<HTMLDivElement | null>(null);
   const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
   const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
-  function handleChange(val){
-    emit('change',{type:'order',value:val})
+  function handleChange(val) {
+    emit('change', { type: 'order', value: val });
   }
   }
-  function handleExport(){
-    let fields  = {
-    'time':'日期',
-    'd':'下载订单',
-    'e':'权益订单',
-    'p':'配件订单',
-  }
-    let data = yixStringData.value.map((ele,index) => {
+  function handleExport() {
+    let fields = {
+      time: '日期',
+      d: '下载订单',
+      e: '权益订单',
+      p: '配件订单',
+    };
+    let data = yixStringData.value.map((ele, index) => {
       return {
       return {
-        'time':ele,
-        'd':downOrderData.value && downOrderData.value[index] || 0,
-        'e':incrementOrderData.value && incrementOrderData.value[index] || 0,
-        'p':partsOrderData.value && partsOrderData.value[index] || 0,
-      }
-    })
-    exportElsxFile(data, fields,'订单趋势')
+        time: ele,
+        d: (downOrderData.value && downOrderData.value[index]) || 0,
+        e: (incrementOrderData.value && incrementOrderData.value[index]) || 0,
+        p: (partsOrderData.value && partsOrderData.value[index]) || 0,
+      };
+    });
+    exportElsxFile(data, fields, '订单趋势');
   }
   }
   function handlesetOptions() {
   function handlesetOptions() {
     setOptions({
     setOptions({
@@ -129,19 +129,19 @@
     });
     });
   }
   }
   // props.viewStatics,
   // props.viewStatics,
-  
+
   watch(
   watch(
     () => props.echartData,
     () => props.echartData,
     (echartData) => {
     (echartData) => {
-      downOrderData.value = echartData.downOrder ||[]
-      incrementOrderData.value = echartData.incrementOrder ||[]
-      partsOrderData.value = echartData.partOrder ||[]
-      yixStringData.value = echartData.xdata ||[]
-      if(echartData.nameList){
-        nameList.value = echartData.nameList
+      downOrderData.value = echartData.downOrder || [];
+      incrementOrderData.value = echartData.incrementOrder || [];
+      partsOrderData.value = echartData.partOrder || [];
+      yixStringData.value = echartData.xdata || [];
+      if (echartData.nameList) {
+        nameList.value = echartData.nameList;
       }
       }
-      if(echartData.echartTypr){
-        echartTypr.value = echartData.echartTypr
+      if (echartData.echartTypr) {
+        echartTypr.value = echartData.echartTypr;
       }
       }
       const maxNumber = Math.max(...echartData.downOrder.concat(echartData.incrementOrder));
       const maxNumber = Math.max(...echartData.downOrder.concat(echartData.incrementOrder));
       const pow = Math.pow(10, maxNumber.toString().length - 1);
       const pow = Math.pow(10, maxNumber.toString().length - 1);

+ 44 - 44
src/views/dashboard/analysis/components/orderEchart.vue

@@ -1,18 +1,18 @@
 <template>
 <template>
-  <Card :title="title||'订单数据统计'">
+  <Card :title="title || '订单数据统计'">
     <template #extra>
     <template #extra>
       <div class="condition">
       <div class="condition">
-          <div class="selct" style="display: inline-block;">
-            <span style="margin-right:15px">颗粒度</span>
-            <Select
+        <div class="selct" style="display: inline-block">
+          <span style="margin-right: 15px">颗粒度</span>
+          <Select
             v-model:value="value"
             v-model:value="value"
-            style="width: 100px;margin-right:30px"
+            style="width: 100px; margin-right: 30px"
             placeholder="请选择颗粒度"
             placeholder="请选择颗粒度"
             :options="options"
             :options="options"
             @change="handleChange"
             @change="handleChange"
-          ></Select>
-          </div>
-          <a-button type="primary" @click="handleExport">导出</a-button>
+          />
+        </div>
+        <a-button type="primary" @click="handleExport">导出</a-button>
       </div>
       </div>
     </template>
     </template>
     <div ref="chartRef" :style="{ height, width }"></div>
     <div ref="chartRef" :style="{ height, width }"></div>
@@ -24,9 +24,9 @@
   import { Card, DatePicker, Select } from 'ant-design-vue';
   import { Card, DatePicker, Select } from 'ant-design-vue';
   import { ref, Ref, watch, defineEmits } from 'vue';
   import { ref, Ref, watch, defineEmits } from 'vue';
   import { useECharts } from '/@/hooks/web/useECharts';
   import { useECharts } from '/@/hooks/web/useECharts';
-  import { exportElsxFile, } from '/@/utils/file/download';
+  import { exportElsxFile } from '/@/utils/file/download';
   const props = defineProps({
   const props = defineProps({
-  loading: Boolean,
+    loading: Boolean,
     ...basicProps,
     ...basicProps,
   });
   });
   const value = ref('0');
   const value = ref('0');
@@ -43,41 +43,41 @@
       value: '2',
       value: '2',
       label: '月',
       label: '月',
     },
     },
-    ]);
-  const emit = defineEmits(["alertSome"])
+  ]);
+  const emit = defineEmits(['alertSome']);
   const kjList = ref<number[]>([]);
   const kjList = ref<number[]>([]);
   const kkList = ref<number[]>([]);
   const kkList = ref<number[]>([]);
   const ssList = ref<number[]>([]);
   const ssList = ref<number[]>([]);
   const ssobjList = ref<number[]>([]);
   const ssobjList = ref<number[]>([]);
   const yixStringData = ref<string[]>([]);
   const yixStringData = ref<string[]>([]);
-  const echartTypr = ref('line')
-  const nameList = ref<string[]>(['看见场景','看看场景','深时场景','深时obj']);
+  const echartTypr = ref('line');
+  const nameList = ref<string[]>(['看见场景', '看看场景', '深时场景', '深时obj']);
   const maxSize = ref(0);
   const maxSize = ref(0);
   const chartRef = ref<HTMLDivElement | null>(null);
   const chartRef = ref<HTMLDivElement | null>(null);
-  const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>)
+  const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
 
 
-  function handleChange(val){
-    emit('change',{type:'scene',value:val})
+  function handleChange(val) {
+    emit('change', { type: 'scene', value: val });
   }
   }
-  
-  function handleExport(){
-    let fields  = {
-    'time':'日期',
-    'kj':'看见场景',
-    'kk':'看看场景',
-    'ss':'深时场景',
-    'dy':'深时obj',
-  }
-    let data = yixStringData.value.map((ele,index) => {
+
+  function handleExport() {
+    let fields = {
+      time: '日期',
+      kj: '看见场景',
+      kk: '看看场景',
+      ss: '深时场景',
+      dy: '深时obj',
+    };
+    let data = yixStringData.value.map((ele, index) => {
       return {
       return {
-        'time':ele,
-        'kj':kjList.value && kjList.value[index] || 0,
-        'kk':kkList.value && kkList.value[index] || 0,
-        'ss':ssList.value && ssList.value[index] || 0,
-        'dy':ssobjList.value && ssobjList.value[index] || 0,
-      }
-    })
-    exportElsxFile(data,fields,'场景趋势')
+        time: ele,
+        kj: (kjList.value && kjList.value[index]) || 0,
+        kk: (kkList.value && kkList.value[index]) || 0,
+        ss: (ssList.value && ssList.value[index]) || 0,
+        dy: (ssobjList.value && ssobjList.value[index]) || 0,
+      };
+    });
+    exportElsxFile(data, fields, '场景趋势');
   }
   }
 
 
   function handlesetOptions() {
   function handlesetOptions() {
@@ -141,16 +141,16 @@
   watch(
   watch(
     () => props.echartData,
     () => props.echartData,
     (echartData) => {
     (echartData) => {
-      kjList.value = echartData.kjList ||[]
-      kkList.value = echartData.kkList ||[]
-      ssList.value = echartData.ssList ||[]
-      ssobjList.value = echartData.ssobjList ||[]
-      yixStringData.value = echartData.xdata ||[]
-      if(echartData.nameList){
-        nameList.value = echartData.nameList
+      kjList.value = echartData.kjList || [];
+      kkList.value = echartData.kkList || [];
+      ssList.value = echartData.ssList || [];
+      ssobjList.value = echartData.ssobjList || [];
+      yixStringData.value = echartData.xdata || [];
+      if (echartData.nameList) {
+        nameList.value = echartData.nameList;
       }
       }
-      if(echartData.echartTypr){
-        echartTypr.value = echartData.echartTypr
+      if (echartData.echartTypr) {
+        echartTypr.value = echartData.echartTypr;
       }
       }
       // const maxNumber = Math.max(...echartData.downOrder.concat(echartData.incrementOrder));
       // const maxNumber = Math.max(...echartData.downOrder.concat(echartData.incrementOrder));
       // const pow = Math.pow(10, maxNumber.toString().length - 1);
       // const pow = Math.pow(10, maxNumber.toString().length - 1);

+ 6 - 6
src/views/dashboard/analysis/components/props.ts

@@ -13,12 +13,12 @@ export type echartData = {
   downOrder: number[];
   downOrder: number[];
   incrementOrder: number[];
   incrementOrder: number[];
   partOrder: number[];
   partOrder: number[];
-  nameList?:string[];
-  kjList?:number[];
-  kkList?:number[];
-  ssList?:number[];
-  ssobjList?:number[];
-  echartTypr?:string;
+  nameList?: string[];
+  kjList?: number[];
+  kkList?: number[];
+  ssList?: number[];
+  ssobjList?: number[];
+  echartTypr?: string;
 };
 };
 export const basicProps = {
 export const basicProps = {
   width: {
   width: {

+ 203 - 173
src/views/dashboard/analysis/index.vue

@@ -9,9 +9,21 @@
         :propsData="echartData"
         :propsData="echartData"
         @export="handleExport"
         @export="handleExport"
       />
       />
-      <lineEcharts2 name="chartRef2" class="md:w-1/2 mx-4 w-full" @export="handleExport"  @change="Search" :echartData="orderData"  />
+      <lineEcharts2
+        name="chartRef2"
+        class="md:w-1/2 mx-4 w-full"
+        @export="handleExport"
+        @change="Search"
+        :echartData="orderData"
+      />
     </div>
     </div>
-    <sceneEchart title="近半年场景新增趋势" class="!my-4 enter-y" @export="handleExport" @change="Search" :echartData="scenetData" />
+    <sceneEchart
+      title="近半年场景新增趋势"
+      class="!my-4 enter-y"
+      @export="handleExport"
+      @change="Search"
+      :echartData="scenetData"
+    />
     <!-- <SiteAnalysis class="!my-4 enter-y" :loading="loading" /> -->
     <!-- <SiteAnalysis class="!my-4 enter-y" :loading="loading" /> -->
     <!-- <div class="md:flex enter-y">
     <!-- <div class="md:flex enter-y">
       <VisitRadar class="md:w-1/3 w-full" :loading="loading" />
       <VisitRadar class="md:w-1/3 w-full" :loading="loading" />
@@ -21,188 +33,206 @@
   </div>
   </div>
 </template>
 </template>
 <script lang="ts" setup>
 <script lang="ts" setup>
-import { ref, onMounted, reactive } from 'vue';
-import { userTotal, orderTotal, orderTrend,userTrend,sceneTrend, cameraExport, downExport, incrementExport } from '/@/api/statistics/index';
-import GrowCard from './components/GrowCard.vue';
-import SiteAnalysis from './components/SiteAnalysis.vue';
-import sceneEchart from './components/orderEchart.vue';
-import VisitSource from './components/VisitSource.vue';
-import VisitRadar from './components/VisitRadar.vue';
-import lineEcharts from './components/lineEcharts.vue';
-import lineEcharts2 from './components/lineEcharts2.vue';
-import SalesProductPie from './components/SalesProductPie.vue';
-import { Row, Col } from 'ant-design-vue';
-const loading = ref(true);
-interface GrowCardItem {
-  icon: string;
-  title: string;
-  value: number;
-  unit: string;
-  color: string;
-  action: string;
-}
-const exportData = reactive({
-  orderData:[],
-  sceneData:[],
-  cameraData:[],
-})
-const orderData = reactive({
-    xdata:[],
-    downOrder:[],
-    incrementOrder:[],
-    partOrder:[],
-  })
-const echartData = reactive({
-    xData:[],
-    yData:[],
-  })
-const scenetData = reactive({
-    xdata:[],
-    kjList:[],
-    kkList:[],
-    ssList:[],
-    ssobjList:[],
-    echartTypr:'bar',
-  })
-const SearchData = reactive({
-    startTime:'',
-    endTime:'',
-    orderType:0,
-    sceneType:0,
-    userType:0,
-  })
-onMounted(() => {
-  getData();
-  getAddUser();
-  getOrder()
-  getSceneList()
-});
-const growCardList = ref<GrowCardItem[]>([]);
-async function getData() {
-  try {
-    loading.value = true;
-    const { totalUserCount, preMonthAddCount, todayAddCount, todayActiveCount } = await userTotal();
-    const { preMonThPowCount, preMonThDownCount, preMonThPartCount } = await orderTotal();
-    let list = [
-      {
-        title: '累计用户',
-        // icon: 'fa6-solid:users-gear',
-        icon: 'visit-count|svg',
-        value: totalUserCount || 0,
-        unit: '人',
-        color: 'green',
-        action: '年',
-      },
-      {
-        title: '上月新增用户',
-        icon: 'akar-icons:person-add',
-        value: preMonthAddCount || 0,
-        unit: '人',
-        color: 'blue',
-        action: '月',
-      },
-      {
-        title: '今日新增用户',
-        icon: 'carbon:user-role',
-        value: todayAddCount || 0,
-        unit: '人',
-        color: 'orange',
-        action: '日',
-      },
-      {
-        title: '上月权益订单数',
-        icon: 'fxemoji:notchedrightsemi3dot',
-        value: preMonThPowCount,
-        unit: '笔',
-        color: 'blue',
-        action: '月',
-      },
-      {
-        title: '上月下载订单数',
-        icon: 'download-count|svg',
-        value: preMonThDownCount,
-        unit: '笔',
-        color: 'orange',
-        action: '月',
-      },
-      {
-        title: '上月配件订单数',
-        icon: 'transaction|svg',
-        value: preMonThPartCount,
-        unit: '人',
-        color: 'blue',
-        action: '月',
-      },
-    ];
-    growCardList.value = list;
-    loading.value = false;
-  } catch (error) {
-    loading.value = false;
+  import { ref, onMounted, reactive } from 'vue';
+  import {
+    userTotal,
+    orderTotal,
+    orderTrend,
+    userTrend,
+    sceneTrend,
+    cameraExport,
+    downExport,
+    incrementExport,
+  } from '/@/api/statistics/index';
+  import GrowCard from './components/GrowCard.vue';
+  import SiteAnalysis from './components/SiteAnalysis.vue';
+  import sceneEchart from './components/orderEchart.vue';
+  import VisitSource from './components/VisitSource.vue';
+  import VisitRadar from './components/VisitRadar.vue';
+  import lineEcharts from './components/lineEcharts.vue';
+  import lineEcharts2 from './components/lineEcharts2.vue';
+  import SalesProductPie from './components/SalesProductPie.vue';
+  import { Row, Col } from 'ant-design-vue';
+  const loading = ref(true);
+  interface GrowCardItem {
+    icon: string;
+    title: string;
+    value: number;
+    unit: string;
+    color: string;
+    action: string;
+  }
+  const exportData = reactive({
+    orderData: [],
+    sceneData: [],
+    cameraData: [],
+  });
+  const orderData = reactive({
+    xdata: [],
+    downOrder: [],
+    incrementOrder: [],
+    partOrder: [],
+  });
+  const echartData = reactive({
+    xData: [],
+    yData: [],
+  });
+  const scenetData = reactive({
+    xdata: [],
+    kjList: [],
+    kkList: [],
+    ssList: [],
+    ssobjList: [],
+    echartTypr: 'bar',
+  });
+  const SearchData = reactive({
+    startTime: '',
+    endTime: '',
+    orderType: 0,
+    sceneType: 0,
+    userType: 0,
+  });
+  onMounted(() => {
+    getData();
+    getAddUser();
+    getOrder();
+    getSceneList();
+  });
+  const growCardList = ref<GrowCardItem[]>([]);
+  async function getData() {
+    try {
+      loading.value = true;
+      const { totalUserCount, preMonthAddCount, todayAddCount, todayActiveCount } =
+        await userTotal();
+      const { preMonThPowCount, preMonThDownCount, preMonThPartCount } = await orderTotal();
+      let list = [
+        {
+          title: '累计用户',
+          // icon: 'fa6-solid:users-gear',
+          icon: 'visit-count|svg',
+          value: totalUserCount || 0,
+          unit: '人',
+          color: 'green',
+          action: '年',
+        },
+        {
+          title: '上月新增用户',
+          icon: 'akar-icons:person-add',
+          value: preMonthAddCount || 0,
+          unit: '人',
+          color: 'blue',
+          action: '月',
+        },
+        {
+          title: '今日新增用户',
+          icon: 'carbon:user-role',
+          value: todayAddCount || 0,
+          unit: '人',
+          color: 'orange',
+          action: '日',
+        },
+        {
+          title: '上月权益订单数',
+          icon: 'fxemoji:notchedrightsemi3dot',
+          value: preMonThPowCount,
+          unit: '笔',
+          color: 'blue',
+          action: '月',
+        },
+        {
+          title: '上月下载订单数',
+          icon: 'download-count|svg',
+          value: preMonThDownCount,
+          unit: '笔',
+          color: 'orange',
+          action: '月',
+        },
+        {
+          title: '上月配件订单数',
+          icon: 'transaction|svg',
+          value: preMonThPartCount,
+          unit: '人',
+          color: 'blue',
+          action: '月',
+        },
+      ];
+      growCardList.value = list;
+      loading.value = false;
+    } catch (error) {
+      loading.value = false;
+    }
+  }
+  async function getAddUser() {
+    let xdata = [],
+      yData = [];
+    const data = await userTrend({ ...SearchData, type: SearchData.userType });
+    data.map((ele) => {
+      xdata.push(ele.groupKey);
+      yData.push(ele.count);
+    });
+    echartData.xData = xdata;
+    echartData.yData = yData;
   }
   }
-}
-async function getAddUser() {
-  let xdata = [], yData=[]
-    const data = await userTrend({...SearchData,type:SearchData.userType});
-    data.map(ele => {
-      xdata.push(ele.groupKey)
-      yData.push(ele.count)
-    })
-    echartData.xData = xdata
-    echartData.yData = yData
-}
-
 
 
-async function getOrder() {
-    let downlist = [],xdata = []
-    const {downOrder,incrementOrder,partOrder} = await orderTrend({...SearchData,type:SearchData.orderType});
-    downOrder.map(ele => {
-      xdata.push(ele.groupKey)
-      downlist.push(ele.count)
-    })
-    orderData.xdata = xdata
-    orderData.downOrder = downlist
-    orderData.incrementOrder = incrementOrder.map(ele => ele.count)
-    orderData.partOrder = partOrder &&partOrder.map(ele => ele.count)|| []
+  async function getOrder() {
+    let downlist = [],
+      xdata = [];
+    const { downOrder, incrementOrder, partOrder } = await orderTrend({
+      ...SearchData,
+      type: SearchData.orderType,
+    });
+    downOrder.map((ele) => {
+      xdata.push(ele.groupKey);
+      downlist.push(ele.count);
+    });
+    orderData.xdata = xdata;
+    orderData.downOrder = downlist;
+    orderData.incrementOrder = incrementOrder.map((ele) => ele.count);
+    orderData.partOrder = (partOrder && partOrder.map((ele) => ele.count)) || [];
   }
   }
   async function getSceneList() {
   async function getSceneList() {
-    let downlist = [],xdata = []
-    const {kjList,kkList,ssList,ssobjList} = await sceneTrend({...SearchData,type:SearchData.sceneType});
-    kjList.map(ele => {
-      xdata.push(ele.groupKey)
-      downlist.push(ele.count)
-    })
-    scenetData.xdata = xdata
-    scenetData.kjList = downlist
-    scenetData.kkList = kkList.map(ele => ele.count)
-    scenetData.ssList = ssList &&ssList.map(ele => ele.count)|| []
-    scenetData.ssobjList = ssobjList.map(ele => ele.count)|| []
+    let downlist = [],
+      xdata = [];
+    const { kjList, kkList, ssList, ssobjList } = await sceneTrend({
+      ...SearchData,
+      type: SearchData.sceneType,
+    });
+    kjList.map((ele) => {
+      xdata.push(ele.groupKey);
+      downlist.push(ele.count);
+    });
+    scenetData.xdata = xdata;
+    scenetData.kjList = downlist;
+    scenetData.kkList = kkList.map((ele) => ele.count);
+    scenetData.ssList = (ssList && ssList.map((ele) => ele.count)) || [];
+    scenetData.ssobjList = ssobjList.map((ele) => ele.count) || [];
   }
   }
-  function handleExport(val){
-    console.log('handleExport',val)
+  function handleExport(val) {
+    console.log('handleExport', val);
     let obj = {
     let obj = {
-      'user':cameraExport,
-      'order':incrementExport,
-      'scene':downExport,
-    }
+      user: cameraExport,
+      order: incrementExport,
+      scene: downExport,
+    };
   }
   }
 
 
-  function Search(val){
-    const {value,type} = val
-    console.log('handleChange',value,type)
-    if(type){
-      switch(type){
+  function Search(val) {
+    const { value, type } = val;
+    console.log('handleChange', value, type);
+    if (type) {
+      switch (type) {
         case 'user':
         case 'user':
-        SearchData.userType = value
-        getAddUser()
-        break;
+          SearchData.userType = value;
+          getAddUser();
+          break;
         case 'order':
         case 'order':
-        SearchData.orderType = value
-        getOrder()
-        break;
+          SearchData.orderType = value;
+          getOrder();
+          break;
         case 'scene':
         case 'scene':
-        SearchData.sceneType = value
-        getSceneList()
-        break;
+          SearchData.sceneType = value;
+          getSceneList();
+          break;
       }
       }
     }
     }
   }
   }

+ 2 - 1
src/views/dashboard/test/index.vue

@@ -1,5 +1,6 @@
 <template>
 <template>
-  <Card title="转化率" :loading="loading">cdesssss 
+  <Card title="转化率" :loading="loading"
+    >cdesssss
     <div ref="chartRef" :style="{ width, height }"></div>
     <div ref="chartRef" :style="{ width, height }"></div>
   </Card>
   </Card>
 </template>
 </template>

+ 5 - 5
src/views/device/OutflowModal.vue

@@ -23,7 +23,7 @@
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { useMessage } from '/@/hooks/web/useMessage';
-  import { downloadByData } from '/@/utils/file/download'
+  import { downloadByData } from '/@/utils/file/download';
   // import { sceneMove } from '/@/api/operate';
   // import { sceneMove } from '/@/api/operate';
   import { companyUploadExcel, downTemplate } from '/@/api/customer';
   import { companyUploadExcel, downTemplate } from '/@/api/customer';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useI18n } from '/@/hooks/web/useI18n';
@@ -99,9 +99,9 @@
           const params = await validate();
           const params = await validate();
           const apiData = {
           const apiData = {
             file: fileFlow.file,
             file: fileFlow.file,
-            data:{
+            data: {
               type: 1,
               type: 1,
-            }
+            },
           };
           };
           const res = await companyUploadExcel(apiData);
           const res = await companyUploadExcel(apiData);
           console.log('res', res);
           console.log('res', res);
@@ -118,8 +118,8 @@
       }
       }
       async function getTemplate() {
       async function getTemplate() {
         try {
         try {
-          const res:BlobPart = await downTemplate({ type: 1 });
-          downloadByData(res.data,'出库模板.xlsx')
+          const res: BlobPart = await downTemplate({ type: 1 });
+          downloadByData(res.data, '出库模板.xlsx');
         } catch (error) {
         } catch (error) {
           console.log('not passing', error);
           console.log('not passing', error);
         }
         }

+ 7 - 7
src/views/device/batchPutModal.vue

@@ -26,7 +26,7 @@
   // import { sceneMove } from '/@/api/operate';
   // import { sceneMove } from '/@/api/operate';
   import { companyUploadExcel, downTemplate } from '/@/api/customer';
   import { companyUploadExcel, downTemplate } from '/@/api/customer';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useI18n } from '/@/hooks/web/useI18n';
-  import { downloadByData } from '/@/utils/file/download'
+  import { downloadByData } from '/@/utils/file/download';
   const { t } = useI18n();
   const { t } = useI18n();
   export default defineComponent({
   export default defineComponent({
     components: { BasicModal, BasicForm },
     components: { BasicModal, BasicForm },
@@ -97,14 +97,14 @@
           const params = await validate();
           const params = await validate();
           const apiData = {
           const apiData = {
             file: fileFlow.file,
             file: fileFlow.file,
-            data:{
+            data: {
               type: 0,
               type: 0,
-            }
+            },
           };
           };
           const res = await companyUploadExcel(apiData);
           const res = await companyUploadExcel(apiData);
           closeModal();
           closeModal();
           resetFields();
           resetFields();
-          createMessage.success( res || '导入成功');
+          createMessage.success(res || '导入成功');
         } catch (error) {
         } catch (error) {
           console.log('not passing', error);
           console.log('not passing', error);
         }
         }
@@ -115,9 +115,9 @@
       }
       }
       async function getTemplate() {
       async function getTemplate() {
         try {
         try {
-          const res:BlobPart = await downTemplate({ type: 0 });
-          console.log('downTemplate',res)
-          downloadByData(res.data,'入库模板.xlsx')
+          const res: BlobPart = await downTemplate({ type: 0 });
+          console.log('downTemplate', res);
+          downloadByData(res.data, '入库模板.xlsx');
         } catch (error) {
         } catch (error) {
           console.log('not passing', error);
           console.log('not passing', error);
         }
         }

+ 192 - 185
src/views/device/detailsMoadl.vue

@@ -18,205 +18,212 @@
   </BasicModal>
   </BasicModal>
 </template>
 </template>
 <script lang="ts">
 <script lang="ts">
-import { defineComponent, ref, onMounted, reactive } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { companyList } from '/@/api/customer';
-// import { sceneMove } from '/@/api/operate';
-import { downTemplate } from '/@/api/customer';
-import { cameraParam, cameraUpdate, cameraOut } from '/@/api/device';
-import { CameraList } from '/@/api/order';
-import { useI18n } from '/@/hooks/web/useI18n';
-const { t } = useI18n();
-interface Option {
-  value: string;
-}
+  import { defineComponent, ref, onMounted, reactive } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { companyList } from '/@/api/customer';
+  // import { sceneMove } from '/@/api/operate';
+  import { downTemplate } from '/@/api/customer';
+  import { cameraParam, cameraUpdate, cameraOut } from '/@/api/device';
+  import { CameraList } from '/@/api/order';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  const { t } = useI18n();
+  interface Option {
+    value: string;
+  }
 
 
-export default defineComponent({
-  components: { BasicModal, BasicForm },
-  props: {
-    userData: { type: Object },
-  },
-  emits: ['update'],
-  setup(_, { emit }) {
-    const modelRef = ref({
-      isUpdate:false,
-    });
-    const title = ref('设备出库');
-    const optionsOrderSn = ref<Option[]>([]);
-    const optionsName = ref<Option[]>([]);
-    const fileFlow = reactive({
-      file: null,
-    });
-    const { createMessage } = useMessage();
-    const schemas: FormSchema[] = [
-      {
-        field: 'id',
-        component: 'Input',
-        label: 'id',
-        show: false,
-      },
-      {
-        field: 'outType',
-        component: 'Select',
-        label: '出库类型',
-        required: true,
-        colProps: {
-          span: 18,
-        },
-        componentProps: {
-          options: [
-            {
-              label: t('routes.product.outType.0'),
-              value: '0',
-              key: '0',
-            },
-            {
-              label: t('routes.product.outType.1'),
-              value: '1',
-              key: '1',
-            },
-            {
-              label: t('routes.product.outType.2'),
-              value: 2,
-              key: '2',
-            },
-            {
-              label: t('routes.product.outType.3'),
-              value: '3',
-              key: '3',
-            },
-          ],
-        },
-      },
-      {
-        field: 'companyName',
-        component: 'AutoComplete',
-        label: '客户名称',
-        colProps: {
-          span: 18,
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update'],
+    setup(_, { emit }) {
+      const modelRef = ref({
+        isUpdate: false,
+      });
+      const title = ref('设备出库');
+      const optionsOrderSn = ref<Option[]>([]);
+      const optionsName = ref<Option[]>([]);
+      const fileFlow = reactive({
+        file: null,
+      });
+      const { createMessage } = useMessage();
+      const schemas: FormSchema[] = [
+        {
+          field: 'id',
+          component: 'Input',
+          label: 'id',
+          show: false,
         },
         },
-        componentProps: {
-          filterOption: onFilterOption,
-          onSearch: async (searchText: string) => {
-            const {list} = await companyList({ companyName: searchText });
-            let optionsList = list.map((ele) => { return { ...ele,value: ele.companyName }; }) || []
-            console.log('paramList',optionsList)
-            optionsName.value = optionsList || [];
-            updateSchema({
-              field: 'companyName',
-              componentProps:{
-                options: optionsName.value,
-              },
-            })
+        {
+          field: 'outType',
+          component: 'Select',
+          label: '出库类型',
+          required: true,
+          colProps: {
+            span: 18,
           },
           },
-          onChange: (data) => {
-            console.log('data', data);
+          componentProps: {
+            options: [
+              {
+                label: t('routes.product.outType.0'),
+                value: '0',
+                key: '0',
+              },
+              {
+                label: t('routes.product.outType.1'),
+                value: '1',
+                key: '1',
+              },
+              {
+                label: t('routes.product.outType.2'),
+                value: 2,
+                key: '2',
+              },
+              {
+                label: t('routes.product.outType.3'),
+                value: '3',
+                key: '3',
+              },
+            ],
           },
           },
         },
         },
-      },
-      {
-        field: 'orderSn',
-        component: 'AutoComplete',
-        label: '订单号',
-        colProps: {
-          span: 18,
+        {
+          field: 'companyName',
+          component: 'AutoComplete',
+          label: '客户名称',
+          colProps: {
+            span: 18,
+          },
+          componentProps: {
+            filterOption: onFilterOption,
+            onSearch: async (searchText: string) => {
+              const { list } = await companyList({ companyName: searchText });
+              let optionsList =
+                list.map((ele) => {
+                  return { ...ele, value: ele.companyName };
+                }) || [];
+              console.log('paramList', optionsList);
+              optionsName.value = optionsList || [];
+              updateSchema({
+                field: 'companyName',
+                componentProps: {
+                  options: optionsName.value,
+                },
+              });
+            },
+            onChange: (data) => {
+              console.log('data', data);
+            },
+          },
         },
         },
-        componentProps: {
-          options: optionsOrderSn.value,
-          filterOption: onFilterOption,
-          onSearch: async (searchText: string) => {
-            const { list } = await CameraList({ orderSn: searchText });
-            optionsOrderSn.value = !searchText ? [] : list.map((ele) => { return { value: ele.orderSn }; });
-            updateSchema({
-              field: 'orderSn',
-              componentProps:{
-                options: optionsOrderSn.value,
-              },
-            })
+        {
+          field: 'orderSn',
+          component: 'AutoComplete',
+          label: '订单号',
+          colProps: {
+            span: 18,
           },
           },
-          onChange: (data) => {
-            console.log('data', data);
+          componentProps: {
+            options: optionsOrderSn.value,
+            filterOption: onFilterOption,
+            onSearch: async (searchText: string) => {
+              const { list } = await CameraList({ orderSn: searchText });
+              optionsOrderSn.value = !searchText
+                ? []
+                : list.map((ele) => {
+                    return { value: ele.orderSn };
+                  });
+              updateSchema({
+                field: 'orderSn',
+                componentProps: {
+                  options: optionsOrderSn.value,
+                },
+              });
+            },
+            onChange: (data) => {
+              console.log('data', data);
+            },
           },
           },
         },
         },
-      },
-    ];
-    const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
-      labelWidth: 120,
-      schemas,
-      showActionButtonGroup: false,
-      actionColOptions: {
-        span: 24,
-      },
-    });
-    onMounted(() => {});
-    let addListFunc = () => {};
-    const [register, { closeModal }] = useModalInner((data) => {
-      // console.log(data);
-      data && onDataReceive(data);
-    });
-
-    function onDataReceive(data) {
-      modelRef.value = data;
-      title.value = data.isUpdate?'编辑':'设备出库'
-      console.log('onDataReceive', data);
-      const { outType } = data;
-      let obj = t('routes.product.outType')
-      resetFields();
-      setFieldsValue({
-        type: obj[outType],
-        ...data,
+      ];
+      const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
+        labelWidth: 120,
+        schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+      onMounted(() => {});
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        // console.log(data);
+        data && onDataReceive(data);
       });
       });
-    }
 
 
-    const handleSubmit = async () => {
-      const apiUrl = modelRef.value.isUpdate?cameraUpdate:cameraOut
-      try {
-        const params = await validate();
-        console.log('params', params);
-        const res = await apiUrl(params);
-        console.log('res', res);
-        closeModal();
+      function onDataReceive(data) {
+        modelRef.value = data;
+        title.value = data.isUpdate ? '编辑' : '设备出库';
+        console.log('onDataReceive', data);
+        const { outType } = data;
+        let obj = t('routes.product.outType');
         resetFields();
         resetFields();
-        createMessage.success(t('common.optSuccess'));
-        emit('update');
-      } catch (error) {
-        console.log('not passing', error);
+        setFieldsValue({
+          type: obj[outType],
+          ...data,
+        });
       }
       }
-    };
-    function onFilterOption(inputText: string, option: Option) {
-      return option.value.toUpperCase().indexOf(inputText.toUpperCase()) >= 0;
-    }
 
 
-    function handleVisibleChange(v) {
-      // console.log(v);
-      // v && props.userData && nextTick(() => onDataReceive(props.userData));
-    }
+      const handleSubmit = async () => {
+        const apiUrl = modelRef.value.isUpdate ? cameraUpdate : cameraOut;
+        try {
+          const params = await validate();
+          console.log('params', params);
+          const res = await apiUrl(params);
+          console.log('res', res);
+          closeModal();
+          resetFields();
+          createMessage.success(t('common.optSuccess'));
+          emit('update');
+        } catch (error) {
+          console.log('not passing', error);
+        }
+      };
+      function onFilterOption(inputText: string, option: Option) {
+        return option.value.toUpperCase().indexOf(inputText.toUpperCase()) >= 0;
+      }
+
+      function handleVisibleChange(v) {
+        // console.log(v);
+        // v && props.userData && nextTick(() => onDataReceive(props.userData));
+      }
 
 
-    async function getTemplate() {
-      try {
-        const res = await downTemplate({ type: 2 });
-        console.log('res', res);
-      } catch (error) {
-        console.log('not passing', error);
+      async function getTemplate() {
+        try {
+          const res = await downTemplate({ type: 2 });
+          console.log('res', res);
+        } catch (error) {
+          console.log('not passing', error);
+        }
       }
       }
-    }
-    return {
-      register,
-      schemas,
-      registerForm,
-      model: modelRef,
-      title,
-      fileFlow,
-      handleVisibleChange,
-      onFilterOption,
-      handleSubmit,
-      addListFunc,
-      resetFields,
-      t,
-      getTemplate,
-    };
-  },
-});
+      return {
+        register,
+        schemas,
+        registerForm,
+        model: modelRef,
+        title,
+        fileFlow,
+        handleVisibleChange,
+        onFilterOption,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        t,
+        getTemplate,
+      };
+    },
+  });
 </script>
 </script>

+ 275 - 266
src/views/device/index.vue

@@ -1,304 +1,313 @@
 <template>
 <template>
   <PageWrapper contentBackground>
   <PageWrapper contentBackground>
     <div class="desc-wrap-BasicTable">
     <div class="desc-wrap-BasicTable">
-      <BasicTable @register="registerTable"> </BasicTable>
+      <BasicTable @register="registerTable" />
     </div>
     </div>
   </PageWrapper>
   </PageWrapper>
 </template>
 </template>
 <script lang="ts">
 <script lang="ts">
-import { defineComponent, h, onMounted, computed } from 'vue';
-import {
-  BasicTable,
-  useTable,
-  TableAction,
-  BasicColumn,
-  TableImg,
-  FormProps,
-} from '/@/components/Table';
-import { PageWrapper } from '/@/components/Page';
-import { Descriptions } from 'ant-design-vue';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { cameraList } from '/@/api/customer';
-import { cameraDelete } from '/@/api/device';
-import { useRouter } from 'vue-router';
-import { UnbindCameraApi } from '/@/api/account';
-import { usePermissionStore } from '/@/store/modules/permission';
-import { useLocaleStore } from '/@/store/modules/locale';
-import { dincrementList } from '/@/api/equity';
-export default defineComponent({
-  components: {
+  import { defineComponent, h, onMounted, computed } from 'vue';
+  import {
     BasicTable,
     BasicTable,
+    useTable,
     TableAction,
     TableAction,
-    PageWrapper,
+    BasicColumn,
     TableImg,
     TableImg,
-    [Descriptions.name]: Descriptions,
-    [Descriptions.Item.name]: Descriptions.Item,
-  },
-  setup() {
-    const { t } = useI18n();
-    const { createMessage, createConfirm } = useMessage();
-    const permissionStore = usePermissionStore();
-    const { getCheckPerm } = permissionStore;
-    const router = useRouter();
-    const localeStore = useLocaleStore();
-    const isEn = computed(() => localeStore.getLocale === 'en');
-    const companyId: Number = router.currentRoute.value.params.id - 0;
-    onMounted(() => {
-      // console.log(router.currentRoute.value.params.id);
-    });
-    const columns: BasicColumn[] = [
-      {
-        title: t('routes.device.snCode'),
-        dataIndex: 'snCode',
-        width: 180,
-      },
-      {
-        title: t('routes.device.wifiName'),
-        dataIndex: 'wifiName',
-        width: 150,
-      },
-      {
-        title: t('routes.device.deviceType'),
-        dataIndex: 'type',
-        ellipsis: false,
-        width: 100,
-        customRender: ({ record }) => {
-          let typeObj = {
-            '0': t('routes.device.type.0'),
-            '1': t('routes.device.type.1'),
-            '2': t('routes.device.type.2'),
-            '9': t('routes.device.type.9'),
-            '10': t('routes.device.type.10'),
-          };
-          return typeObj[record.type];
+    FormProps,
+  } from '/@/components/Table';
+  import { PageWrapper } from '/@/components/Page';
+  import { Descriptions } from 'ant-design-vue';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { cameraList } from '/@/api/customer';
+  import { cameraDelete } from '/@/api/device';
+  import { useRouter } from 'vue-router';
+  import { UnbindCameraApi } from '/@/api/account';
+  import { usePermissionStore } from '/@/store/modules/permission';
+  import { useLocaleStore } from '/@/store/modules/locale';
+  import { dincrementList } from '/@/api/equity';
+  export default defineComponent({
+    components: {
+      BasicTable,
+      TableAction,
+      PageWrapper,
+      TableImg,
+      [Descriptions.name]: Descriptions,
+      [Descriptions.Item.name]: Descriptions.Item,
+    },
+    setup() {
+      const { t } = useI18n();
+      const { createMessage, createConfirm } = useMessage();
+      const permissionStore = usePermissionStore();
+      const { getCheckPerm } = permissionStore;
+      const router = useRouter();
+      const localeStore = useLocaleStore();
+      const isEn = computed(() => localeStore.getLocale === 'en');
+      const companyId: Number = router.currentRoute.value.params.id - 0;
+      onMounted(() => {
+        // console.log(router.currentRoute.value.params.id);
+      });
+      const columns: BasicColumn[] = [
+        {
+          title: t('routes.device.snCode'),
+          dataIndex: 'snCode',
+          width: 180,
         },
         },
-      },
-
-      {
-        title: t('routes.device.activatedTime'),
-        dataIndex: 'activatedTime',
-        width: 180,
-      },
-      {
-        title: t('routes.equity.Type'),
-        dataIndex: 'validTimeType',
-        width: 180,
-        customRender({ record }) {
-          return record.validTimeType==0 ?t('routes.equity.equityType.0'):record.validTimeType==1? t('routes.equity.equityType.3') : t('routes.device.NoBind');
+        {
+          title: t('routes.device.wifiName'),
+          dataIndex: 'wifiName',
+          width: 150,
         },
         },
-      },
-      {
-        title: t('routes.device.statusName'),
-        dataIndex: 'incrementStatus',
-        customRender({ record }) {
-          if(record.incrementStatus == -1){
-            return '-'
-          }else{
-            return record.incrementStatus==0? t('routes.device.status.0') : t('routes.device.status.1');
-          }
+        {
+          title: t('routes.device.deviceType'),
+          dataIndex: 'type',
+          ellipsis: false,
+          width: 100,
+          customRender: ({ record }) => {
+            let typeObj = {
+              '0': t('routes.device.type.0'),
+              '1': t('routes.device.type.1'),
+              '2': t('routes.device.type.2'),
+              '9': t('routes.device.type.9'),
+              '10': t('routes.device.type.10'),
+            };
+            return typeObj[record.type];
+          },
         },
         },
-        width: 180,
-      },
-      {
-        title: t('routes.device.userName'),
-        dataIndex: 'userName',
-        width: 180,
-        customRender({ record }) {
-          return record.userName ? record.userName : '-';
+
+        {
+          title: t('routes.device.activatedTime'),
+          dataIndex: 'activatedTime',
+          width: 180,
         },
         },
-      },
-    ];
-    const searchForm: Partial<FormProps> = {
-      labelWidth: 120,
-      autoAdvancedLine:1,
-      actionColOptions: {
-        span: 24,
-      },
-      schemas: [
         {
         {
-          field: 'snCode',
-          component: 'Input',
-          label: t('routes.device.snCode'),
-          colProps: {
-            xl: 8,
-            xxl: 8,
+          title: t('routes.equity.Type'),
+          dataIndex: 'validTimeType',
+          width: 180,
+          customRender({ record }) {
+            return record.validTimeType == 0
+              ? t('routes.equity.equityType.0')
+              : record.validTimeType == 1
+              ? t('routes.equity.equityType.3')
+              : t('routes.device.NoBind');
           },
           },
         },
         },
         {
         {
-          field: 'type',
-          component: 'Select',
-          label: t('routes.device.deviceType'),
-          colProps: {
-            xl: 8,
-            xxl: 8,
-          },
-          componentProps: {
-            options: [
-              {
-                //   label: t('routes.device.type.0'),
-                //   value: 0,
-                //   key: '0',
-                // },{
-                label: t('routes.device.type.1'),
-                value: 1,
-                key: '1',
-              },
-              {
-                label: t('routes.device.type.2'),
-                value: 9,
-                key: '9',
-              },
-              {
-                label: t('routes.device.type.3'),
-                value: 10,
-                key: '10',
-              },
-            ],
+          title: t('routes.device.statusName'),
+          dataIndex: 'incrementStatus',
+          customRender({ record }) {
+            if (record.incrementStatus == -1) {
+              return '-';
+            } else {
+              return record.incrementStatus == 0
+                ? t('routes.device.status.0')
+                : t('routes.device.status.1');
+            }
           },
           },
+          width: 180,
         },
         },
         {
         {
-          field: 'userName',
-          component: 'Input',
-          label: t('routes.device.userName'),
-          colProps: {
-            xl: 8,
-            xxl: 8,
+          title: t('routes.device.userName'),
+          dataIndex: 'userName',
+          width: 180,
+          customRender({ record }) {
+            return record.userName ? record.userName : '-';
           },
           },
         },
         },
-        {
-          field: 'incrementTypeId',
-          component: 'ApiSelect',
-          label: t('routes.equity.Type'),
-          componentProps: {
-            maxLength: 50,
-            api: async function () {
-              const list = await dincrementList();
-              return list.map((ele) => {
-                return { name: t(`routes.finance.equityType.${ele.validTimeType}`), value: ele.id };
-              });
+      ];
+      const searchForm: Partial<FormProps> = {
+        labelWidth: 120,
+        autoAdvancedLine: 1,
+        actionColOptions: {
+          span: 24,
+        },
+        schemas: [
+          {
+            field: 'snCode',
+            component: 'Input',
+            label: t('routes.device.snCode'),
+            colProps: {
+              xl: 8,
+              xxl: 8,
             },
             },
-            numberToString: true,
-            labelField: 'name',
-            valueField: 'value',
-            immediate: true,
           },
           },
-          colProps: {
-            xl: 8,
-            xxl: 8,
+          {
+            field: 'type',
+            component: 'Select',
+            label: t('routes.device.deviceType'),
+            colProps: {
+              xl: 8,
+              xxl: 8,
+            },
+            componentProps: {
+              options: [
+                {
+                  //   label: t('routes.device.type.0'),
+                  //   value: 0,
+                  //   key: '0',
+                  // },{
+                  label: t('routes.device.type.1'),
+                  value: 1,
+                  key: '1',
+                },
+                {
+                  label: t('routes.device.type.2'),
+                  value: 9,
+                  key: '9',
+                },
+                {
+                  label: t('routes.device.type.3'),
+                  value: 10,
+                  key: '10',
+                },
+              ],
+            },
           },
           },
-        },
-        {
-          field: 'incrementStatus',
-          component: 'Select',
-          label: t('routes.device.statusName'),
-          colProps: {
-            xl: 8,
-            xxl: 8,
+          {
+            field: 'userName',
+            component: 'Input',
+            label: t('routes.device.userName'),
+            colProps: {
+              xl: 8,
+              xxl: 8,
+            },
           },
           },
-          componentProps: {
-            options: [
-              {
-                label: t('routes.device.status.0'),
-                value: '0',
-                key: '0',
+          {
+            field: 'incrementTypeId',
+            component: 'ApiSelect',
+            label: t('routes.equity.Type'),
+            componentProps: {
+              maxLength: 50,
+              api: async function () {
+                const list = await dincrementList();
+                return list.map((ele) => {
+                  return {
+                    name: t(`routes.finance.equityType.${ele.validTimeType}`),
+                    value: ele.id,
+                  };
+                });
               },
               },
-              {
-                label: t('routes.device.status.1'),
-                value: '1',
-                key: '1',
-              },
-            ],
+              numberToString: true,
+              labelField: 'name',
+              valueField: 'value',
+              immediate: true,
+            },
+            colProps: {
+              xl: 8,
+              xxl: 8,
+            },
           },
           },
-        },
-        {
-          field: 'bindStatus',
-          component: 'Select',
-          label: t('routes.device.bindStatus'),
-          colProps: {
-            xl: 8,
-            xxl: 8,
+          {
+            field: 'incrementStatus',
+            component: 'Select',
+            label: t('routes.device.statusName'),
+            colProps: {
+              xl: 8,
+              xxl: 8,
+            },
+            componentProps: {
+              options: [
+                {
+                  label: t('routes.device.status.0'),
+                  value: '0',
+                  key: '0',
+                },
+                {
+                  label: t('routes.device.status.1'),
+                  value: '1',
+                  key: '1',
+                },
+              ],
+            },
           },
           },
-          componentProps: {
-            options: [
-              {
-                label: t('routes.device.status.2'),
-                value: '1',
-                key: '1',
-              },
-              {
-                label: t('routes.device.status.3'),
-                value: '0',
-                key: '0',
-              },
-            ],
+          {
+            field: 'bindStatus',
+            component: 'Select',
+            label: t('routes.device.bindStatus'),
+            colProps: {
+              xl: 8,
+              xxl: 8,
+            },
+            componentProps: {
+              options: [
+                {
+                  label: t('routes.device.status.2'),
+                  value: '1',
+                  key: '1',
+                },
+                {
+                  label: t('routes.device.status.3'),
+                  value: '0',
+                  key: '0',
+                },
+              ],
+            },
           },
           },
+        ],
+      };
+      const [registerTable, { reload }] = useTable({
+        api: cameraList,
+        columns: columns,
+        searchInfo: { companyId },
+        useSearchForm: true,
+        formConfig: searchForm,
+        showTableSetting: true,
+        showIndexColumn: false,
+        rowKey: 'id',
+        beforeFetch: (T) => {
+          if (T.ctivated) {
+            T.activatedStartTime = T.ctivated[0];
+            T.activatedEndTime = T.ctivated[1];
+          }
+          return T;
         },
         },
-      ],
-    };
-    const [registerTable, { reload }] = useTable({
-      api: cameraList,
-      columns: columns,
-      searchInfo: { companyId },
-      useSearchForm: true,
-      formConfig: searchForm,
-      showTableSetting: true,
-      showIndexColumn: false,
-      rowKey: 'id',
-      beforeFetch: (T) => {
-        if (T.ctivated) {
-          T.activatedStartTime = T.ctivated[0];
-          T.activatedEndTime = T.ctivated[1];
-        }
-        return T;
-      },
-      fetchSetting: {
-        pageField: 'pageNum',
-        sizeField: 'pageSize',
-        listField: 'list',
-        totalField: 'total',
-      },
-      canResize: false,
-    });
-    async function handleUnbind(record: Recordable) {
-      createConfirm({
-        iconType: 'warning',
-        title: () => h('span', t('common.optSuccess')),
-        content: '解绑后用户将看不到该相机拍摄的场景。<br/>确定解绑吗?',
-        onOk: async () => {
-          await UnbindCameraApi({ cameraId: record.id });
-          createMessage.success(t('common.optSuccess'));
-          reload();
-        },
-      });
-    }
-    async function handleDelete(record: Recordable) {
-      createConfirm({
-        iconType: 'warning',
-        title: () => h('span', t('common.optSuccess')),
-        content: '删除设备后需要重新入库<br/>确定删除吗?',
-        onOk: async () => {
-          await cameraDelete({ id: record.id });
-          createMessage.success(t('common.optSuccess'));
-          reload();
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
         },
         },
+        canResize: false,
       });
       });
-    }
-    return {
-      registerTable,
-      handleUnbind,
-      reload,
-      handleDelete,
-      getCheckPerm,
-    };
-  },
-});
+      async function handleUnbind(record: Recordable) {
+        createConfirm({
+          iconType: 'warning',
+          title: () => h('span', t('common.optSuccess')),
+          content: '解绑后用户将看不到该相机拍摄的场景。<br/>确定解绑吗?',
+          onOk: async () => {
+            await UnbindCameraApi({ cameraId: record.id });
+            createMessage.success(t('common.optSuccess'));
+            reload();
+          },
+        });
+      }
+      async function handleDelete(record: Recordable) {
+        createConfirm({
+          iconType: 'warning',
+          title: () => h('span', t('common.optSuccess')),
+          content: '删除设备后需要重新入库<br/>确定删除吗?',
+          onOk: async () => {
+            await cameraDelete({ id: record.id });
+            createMessage.success(t('common.optSuccess'));
+            reload();
+          },
+        });
+      }
+      return {
+        registerTable,
+        handleUnbind,
+        reload,
+        handleDelete,
+        getCheckPerm,
+      };
+    },
+  });
 </script>
 </script>
 <style lang="less" scoped>
 <style lang="less" scoped>
-.desc-wrap-BasicTable {
-  background-color: #f0f2f5;
-  .vben-basic-table-form-container {
-    padding: 0;
+  .desc-wrap-BasicTable {
+    background-color: #f0f2f5;
+    .vben-basic-table-form-container {
+      padding: 0;
+    }
   }
   }
-}
 </style>
 </style>

+ 14 - 14
src/views/device/putModal.vue

@@ -22,7 +22,7 @@
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { useMessage } from '/@/hooks/web/useMessage';
-  import { cameraIn } from '/@/api/device'
+  import { cameraIn } from '/@/api/device';
   import { companyUploadExcel, downTemplate } from '/@/api/customer';
   import { companyUploadExcel, downTemplate } from '/@/api/customer';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useI18n } from '/@/hooks/web/useI18n';
   const { t } = useI18n();
   const { t } = useI18n();
@@ -31,7 +31,7 @@
     props: {
     props: {
       userData: { type: Object },
       userData: { type: Object },
     },
     },
-    emits: ['update',],
+    emits: ['update'],
     setup(_, { emit }) {
     setup(_, { emit }) {
       const modelRef = ref({});
       const modelRef = ref({});
       const fileFlow = reactive({
       const fileFlow = reactive({
@@ -46,7 +46,7 @@
           colProps: {
           colProps: {
             span: 18,
             span: 18,
           },
           },
-          helpMessage:'wifi名称需包含前缀,如“4DKKPRO_”、“4DKKMI_”、“4DSS_”、“4DKK_”。',
+          helpMessage: 'wifi名称需包含前缀,如“4DKKPRO_”、“4DKKMI_”、“4DSS_”、“4DKK_”。',
           rules: [
           rules: [
             {
             {
               required: true,
               required: true,
@@ -56,20 +56,22 @@
                 if (!value) {
                 if (!value) {
                   return Promise.reject('请输入wifi名称');
                   return Promise.reject('请输入wifi名称');
                 }
                 }
-                var list:string[] = ['4DKKPRO_','4DKKMI_','4DSS_','4DKK_'];
-                const some = list.some(item=>{
-                  return value.indexOf(item) != -1
-                })
-                console.log('validator',some)
-                if(!some){
-                  return Promise.reject('wifi名称需包含前缀,如“4DKKPRO_”、“4DKKMI_”、“4DSS_”、“4DKK_”。');
+                var list: string[] = ['4DKKPRO_', '4DKKMI_', '4DSS_', '4DKK_'];
+                const some = list.some((item) => {
+                  return value.indexOf(item) != -1;
+                });
+                console.log('validator', some);
+                if (!some) {
+                  return Promise.reject(
+                    'wifi名称需包含前缀,如“4DKKPRO_”、“4DKKMI_”、“4DSS_”、“4DKK_”。',
+                  );
                 }
                 }
                 return Promise.resolve();
                 return Promise.resolve();
               },
               },
               trigger: 'change',
               trigger: 'change',
             },
             },
           ],
           ],
-        }
+        },
       ];
       ];
       const [registerForm, { validate, resetFields, setFieldsValue }] = useForm({
       const [registerForm, { validate, resetFields, setFieldsValue }] = useForm({
         labelWidth: 120,
         labelWidth: 120,
@@ -93,9 +95,7 @@
           type: data.sceneName,
           type: data.sceneName,
         });
         });
       }
       }
-      function handleVisibleChange() {
-
-      }
+      function handleVisibleChange() {}
 
 
       const handleSubmit = async () => {
       const handleSubmit = async () => {
         try {
         try {

+ 78 - 64
src/views/equity/DownModal.vue

@@ -11,10 +11,16 @@
     <div class="pt-2px pr-3px">
     <div class="pt-2px pr-3px">
       <BasicForm @register="registerForm">
       <BasicForm @register="registerForm">
         <template #text="{ model, field }">
         <template #text="{ model, field }">
-          {{ model[field]  }}
+          {{ model[field] }}
         </template>
         </template>
         <template #img="{ model }">
         <template #img="{ model }">
-          <TableImg v-if="model.invoiceUrl" :size="200" :adaptations="true" :simpleShow="true" :imgList="[model.invoiceUrl]" />
+          <TableImg
+            v-if="model.invoiceUrl"
+            :size="200"
+            :adaptations="true"
+            :simpleShow="true"
+            :imgList="[model.invoiceUrl]"
+          />
         </template>
         </template>
       </BasicForm>
       </BasicForm>
     </div>
     </div>
@@ -31,7 +37,7 @@
   import { uploadApi } from '/@/api/product/index';
   import { uploadApi } from '/@/api/product/index';
   import { ResultEnum } from '/@/enums/httpEnum';
   import { ResultEnum } from '/@/enums/httpEnum';
   import dayjs from 'dayjs';
   import dayjs from 'dayjs';
-  import { checkUserName, addDowm } from '/@/api/equity'
+  import { checkUserName, addDowm } from '/@/api/equity';
   import { useUserStore } from '/@/store/modules/user';
   import { useUserStore } from '/@/store/modules/user';
 
 
   const { t } = useI18n();
   const { t } = useI18n();
@@ -43,69 +49,72 @@
     emits: ['update', 'register'],
     emits: ['update', 'register'],
     setup(props, { emit }) {
     setup(props, { emit }) {
       const fileFlow = reactive({
       const fileFlow = reactive({
-        file:null,
-        type:2,//2-普通发票,3-专用发票
-      })
+        file: null,
+        type: 2, //2-普通发票,3-专用发票
+      });
       const userStore = useUserStore();
       const userStore = useUserStore();
       const agent = computed(() => userStore.getAgent);
       const agent = computed(() => userStore.getAgent);
       const { createMessage } = useMessage();
       const { createMessage } = useMessage();
       const schemas: FormSchema[] = [
       const schemas: FormSchema[] = [
         {
         {
-            field: 'userName',
-            component: 'Input',
-            label: t('routes.equity.userName'),
-            required: true,
-            componentProps: {
-              autoComplete:'off',
-              // readonly:preventAutoFill.value
-            },
-            rules: [
-              {
-                required: true,
-                // @ts-ignore
-                validator: async (rule, value) => {
-                  console.log('value',value)
-                  const regEmail = /^(.+)@(.+)$/
-                  const regPos = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/; // 非中文
-                  if (!value) {
-                    return Promise.reject(t('routes.equity.rules.userName'));
-                  }
-                  if (!(regPos.test(value) || regEmail.test(value))) {
-                    /* eslint-disable-next-line */
+          field: 'userName',
+          component: 'Input',
+          label: t('routes.equity.userName'),
+          required: true,
+          componentProps: {
+            autoComplete: 'off',
+            // readonly:preventAutoFill.value
+          },
+          rules: [
+            {
+              required: true,
+              // @ts-ignore
+              validator: async (rule, value) => {
+                console.log('value', value);
+                const regEmail = /^(.+)@(.+)$/;
+                const regPos = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/; // 非中文
+                if (!value) {
+                  return Promise.reject(t('routes.equity.rules.userName'));
+                }
+                if (!(regPos.test(value) || regEmail.test(value))) {
+                  /* eslint-disable-next-line */
                     return Promise.reject(t('routes.equity.rules.userName1'));
                     return Promise.reject(t('routes.equity.rules.userName1'));
-                  }
-                  const res = await checkUserName({userName:value})
-                  if(!res){
-                    return Promise.reject(t('routes.equity.rules.userName2'));
-                  }
-                  return Promise.resolve();
-                },
-                trigger: 'change',
+                }
+                const res = await checkUserName({ userName: value });
+                if (!res) {
+                  return Promise.reject(t('routes.equity.rules.userName2'));
+                }
+                return Promise.resolve();
               },
               },
-            ],
-            colProps: {
-              span: 16,
-            },
-        },{
-            field: 'count',
-            component: 'InputNumber',
-            label: t('routes.equity.addcount'),
-            required: true,
-            suffix:`${t('routes.equity.syks')} ${agent.value.downSubNum} ${t('routes.equity.unit.2')}`,
-            // defaultValue:1,
-            componentProps:{
-              max:agent.value.downSubNum,
-              min:1,
-            },
-            colProps: {
-              span: 23,
+              trigger: 'change',
             },
             },
+          ],
+          colProps: {
+            span: 16,
+          },
+        },
+        {
+          field: 'count',
+          component: 'InputNumber',
+          label: t('routes.equity.addcount'),
+          required: true,
+          suffix: `${t('routes.equity.syks')} ${agent.value.downSubNum} ${t(
+            'routes.equity.unit.2',
+          )}`,
+          // defaultValue:1,
+          componentProps: {
+            max: agent.value.downSubNum,
+            min: 1,
           },
           },
+          colProps: {
+            span: 23,
+          },
+        },
       ];
       ];
 
 
       const [registerForm, { validate, resetFields, updateSchema }] = useForm({
       const [registerForm, { validate, resetFields, updateSchema }] = useForm({
         labelWidth: 120,
         labelWidth: 120,
-        schemas:schemas,
+        schemas: schemas,
         showActionButtonGroup: false,
         showActionButtonGroup: false,
         actionColOptions: {
         actionColOptions: {
           span: 24,
           span: 24,
@@ -116,23 +125,28 @@
       const [register, { closeModal }] = useModalInner((data) => {
       const [register, { closeModal }] = useModalInner((data) => {
         resetFields();
         resetFields();
         updateSchema([
         updateSchema([
-          {field: 'count',suffix:`${t('routes.equity.syks')} ${agent.value.downSubNum} ${t('routes.equity.unit.2')}`,
-            componentProps:{
-              max:agent.value.downSubNum,
-              min:1,
-            },}
-        ])
+          {
+            field: 'count',
+            suffix: `${t('routes.equity.syks')} ${agent.value.downSubNum} ${t(
+              'routes.equity.unit.2',
+            )}`,
+            componentProps: {
+              max: agent.value.downSubNum,
+              min: 1,
+            },
+          },
+        ]);
         // data && onDataReceive(data);
         // data && onDataReceive(data);
       });
       });
       async function onDataReceive() {
       async function onDataReceive() {
         resetFields();
         resetFields();
       }
       }
       const handleSubmit = async () => {
       const handleSubmit = async () => {
-          const values = await validate();
-          const res = await addDowm(values)
-          console.log('res',res)
-          closeModal();
-          emit('update',true);
+        const values = await validate();
+        const res = await addDowm(values);
+        console.log('res', res);
+        closeModal();
+        emit('update', true);
       };
       };
       function handleVisibleChange(v) {
       function handleVisibleChange(v) {
         v && props.userData && nextTick(() => onDataReceive(props.userData));
         v && props.userData && nextTick(() => onDataReceive(props.userData));

+ 110 - 89
src/views/equity/EditModal.vue

@@ -11,10 +11,16 @@
     <div class="pt-2px pr-3px">
     <div class="pt-2px pr-3px">
       <BasicForm @register="registerForm">
       <BasicForm @register="registerForm">
         <template #text="{ model, field }">
         <template #text="{ model, field }">
-          {{ model[field]  }}
+          {{ model[field] }}
         </template>
         </template>
         <template #img="{ model }">
         <template #img="{ model }">
-          <TableImg v-if="model.invoiceUrl" :size="200" :adaptations="true" :simpleShow="true" :imgList="[model.invoiceUrl]" />
+          <TableImg
+            v-if="model.invoiceUrl"
+            :size="200"
+            :adaptations="true"
+            :simpleShow="true"
+            :imgList="[model.invoiceUrl]"
+          />
         </template>
         </template>
       </BasicForm>
       </BasicForm>
     </div>
     </div>
@@ -41,76 +47,83 @@
     emits: ['update', 'register'],
     emits: ['update', 'register'],
     setup(props, { emit }) {
     setup(props, { emit }) {
       const fileFlow = reactive({
       const fileFlow = reactive({
-        file:null,
-        type:2,//2-普通发票,3-专用发票
+        file: null,
+        type: 2, //2-普通发票,3-专用发票
         validTimeType: 0,
         validTimeType: 0,
-        incrementEndTime:'',
-      })
+        incrementEndTime: '',
+      });
       const { createMessage } = useMessage();
       const { createMessage } = useMessage();
       const userStore = useUserStore();
       const userStore = useUserStore();
       const agent = computed(() => userStore.getAgent);
       const agent = computed(() => userStore.getAgent);
       const schemas: FormSchema[] = [
       const schemas: FormSchema[] = [
-          {
-            field: 'userName',
-            component: 'Input',
-            label: t('routes.equity.userName'),
-            slot: 'text',
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'id',
-            component: 'Input',
-            label: t('routes.equity.id'),
-            slot: 'text',
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'totalTime',            
-            component: 'Select',
-            label: t('routes.equity.totalTime'),
-            required: true,
-            suffix:`${t('routes.equity.syks')} ${agent.value.majorSubNum} ${t('routes.equity.unit.1')}`,
-            defaultValue:1,
-            itemProps: {
-              validateTrigger: 'onBlur',
-            },
-            componentProps: {
-              options:[],
-              listHeight: 150,
-              onChange:(value)=>{
-                setFieldsValue({
-                  incrementEndTime:dayjs(fileFlow.incrementEndTime || new Date()).add(value,fileFlow.validTimeType == 0?'year':'month').format('YYYY-MM-DD')
-                });
-              }
-            },
-            colProps: {
-              span: 19,
-            },
-          },{
-            field: 'incrementEndTime',
-            component: 'DatePicker',
-            label: t('routes.equity.expiryTime'),
-            required: true,
-            defaultValue:dayjs().add(1,'year').format('YYYY-MM-DD'),
-            componentProps: {
-              disabled:true,
-              valueFormat: 'YYYY-MM-DD',
-              format: 'YYYY-MM-DD',
-              disabledDate: (current) => {
-                return current && current < dayjs().endOf('day');
-              },
+        {
+          field: 'userName',
+          component: 'Input',
+          label: t('routes.equity.userName'),
+          slot: 'text',
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'id',
+          component: 'Input',
+          label: t('routes.equity.id'),
+          slot: 'text',
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'totalTime',
+          component: 'Select',
+          label: t('routes.equity.totalTime'),
+          required: true,
+          suffix: `${t('routes.equity.syks')} ${agent.value.majorSubNum} ${t(
+            'routes.equity.unit.1',
+          )}`,
+          defaultValue: 1,
+          itemProps: {
+            validateTrigger: 'onBlur',
+          },
+          componentProps: {
+            options: [],
+            listHeight: 150,
+            onChange: (value) => {
+              setFieldsValue({
+                incrementEndTime: dayjs(fileFlow.incrementEndTime || new Date())
+                  .add(value, fileFlow.validTimeType == 0 ? 'year' : 'month')
+                  .format('YYYY-MM-DD'),
+              });
             },
             },
-            colProps: {
-              span: 22,
+          },
+          colProps: {
+            span: 19,
+          },
+        },
+        {
+          field: 'incrementEndTime',
+          component: 'DatePicker',
+          label: t('routes.equity.expiryTime'),
+          required: true,
+          defaultValue: dayjs().add(1, 'year').format('YYYY-MM-DD'),
+          componentProps: {
+            disabled: true,
+            valueFormat: 'YYYY-MM-DD',
+            format: 'YYYY-MM-DD',
+            disabledDate: (current) => {
+              return current && current < dayjs().endOf('day');
             },
             },
-          }
+          },
+          colProps: {
+            span: 22,
+          },
+        },
       ];
       ];
 
 
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
         labelWidth: 120,
         labelWidth: 120,
-        schemas:schemas,
+        schemas: schemas,
         showActionButtonGroup: false,
         showActionButtonGroup: false,
         actionColOptions: {
         actionColOptions: {
           span: 24,
           span: 24,
@@ -124,47 +137,55 @@
       async function onDataReceive(data) {
       async function onDataReceive(data) {
         resetFields();
         resetFields();
         // let detail = await InvoiceDetail({id:data.id})
         // let detail = await InvoiceDetail({id:data.id})
-        console.log('data',data)
-        fileFlow.type = data.type
-        fileFlow.validTimeType = data.validTimeType
-        fileFlow.incrementEndTime = data.incrementEndTime
-        updateSchema([{
-                  field: 'totalTime',
-                  suffix:`${t('routes.equity.syks')} ${data.validTimeType == 1?agent.value.highSubNum:agent.value.majorSubNum} ${data.validTimeType == 1?t('routes.equity.unit.-2'):t('routes.equity.unit.-1')}`, 
-                  componentProps: {
-                    options: timeOption(data.validTimeType)
-                  },
-                }])
+        console.log('data', data);
+        fileFlow.type = data.type;
+        fileFlow.validTimeType = data.validTimeType;
+        fileFlow.incrementEndTime = data.incrementEndTime;
+        updateSchema([
+          {
+            field: 'totalTime',
+            suffix: `${t('routes.equity.syks')} ${
+              data.validTimeType == 1 ? agent.value.highSubNum : agent.value.majorSubNum
+            } ${data.validTimeType == 1 ? t('routes.equity.unit.-2') : t('routes.equity.unit.-1')}`,
+            componentProps: {
+              options: timeOption(data.validTimeType),
+            },
+          },
+        ]);
         setFieldsValue({
         setFieldsValue({
           ...data,
           ...data,
-          incrementEndTime:dayjs(data.isExpired == 1?new Date():data.incrementEndTime).add(1,data.validTimeType == 0?'year':'month').format('YYYY-MM-DD')
+          incrementEndTime: dayjs(data.isExpired == 1 ? new Date() : data.incrementEndTime)
+            .add(1, data.validTimeType == 0 ? 'year' : 'month')
+            .format('YYYY-MM-DD'),
         });
         });
       }
       }
       function timeOption(incrementTypeId) {
       function timeOption(incrementTypeId) {
-        let list = []
-        let timeVal = incrementTypeId == 1?agent.value.highSubNum:agent.value.majorSubNum
-        let value = 10, unit = t('routes.equity.unit.-1')
-        if(incrementTypeId == 1){//高级会员月
-          value = timeVal>12?12:timeVal
-          unit = t('routes.equity.unit.-3')
-        }else{
-          value = timeVal>10?10:timeVal
+        let list = [];
+        let timeVal = incrementTypeId == 1 ? agent.value.highSubNum : agent.value.majorSubNum;
+        let value = 10,
+          unit = t('routes.equity.unit.-1');
+        if (incrementTypeId == 1) {
+          //高级会员月
+          value = timeVal > 12 ? 12 : timeVal;
+          unit = t('routes.equity.unit.-3');
+        } else {
+          value = timeVal > 10 ? 10 : timeVal;
         }
         }
         for (let index = 1; index <= value; index++) {
         for (let index = 1; index <= value; index++) {
           list.push({
           list.push({
-            label: index+unit,
+            label: index + unit,
             value: index,
             value: index,
             key: index,
             key: index,
-          })
+          });
         }
         }
-        return list
+        return list;
       }
       }
       const handleSubmit = async () => {
       const handleSubmit = async () => {
-          const params = await validate();
-          await renewApi(params);
-          createMessage.success(t('common.optSuccess'));
-          closeModal();
-          emit('update',true);
+        const params = await validate();
+        await renewApi(params);
+        createMessage.success(t('common.optSuccess'));
+        closeModal();
+        emit('update', true);
       };
       };
       function handleVisibleChange(v) {
       function handleVisibleChange(v) {
         v && props.userData && nextTick(() => onDataReceive(props.userData));
         v && props.userData && nextTick(() => onDataReceive(props.userData));

+ 289 - 286
src/views/equity/InvoiceModal.vue

@@ -15,232 +15,234 @@
   </BasicModal>
   </BasicModal>
 </template>
 </template>
 <script lang="ts">
 <script lang="ts">
-import { defineComponent, nextTick, onMounted, reactive, computed } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { dincrementList, checkUserName, addApi } from '/@/api/equity';
-import { useUserStore } from '/@/store/modules/user';
-import dayjs from 'dayjs';
+  import { defineComponent, nextTick, onMounted, reactive, computed } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { dincrementList, checkUserName, addApi } from '/@/api/equity';
+  import { useUserStore } from '/@/store/modules/user';
+  import dayjs from 'dayjs';
 
 
-const { t } = useI18n();
-export default defineComponent({
-  components: { BasicModal, BasicForm },
-  props: {
-    userData: { type: Object },
-  },
-  emits: ['update', 'register'],
-  setup(props, { emit }) {
-    const fileFlow = reactive({
-      file: null,
-      type: 2, //2-普通发票,3-专用发票
-      validTimeType: 0,
-    });
-    const userStore = useUserStore();
-    const { createMessage } = useMessage();
-    const agent = computed(() => userStore.getAgent);
-    const schemas: FormSchema[] = [
-      {
-        field: 'userName',
-        component: 'Input',
-        label: t('routes.equity.userName'),
-        required: true,
-        componentProps: {
-          autoComplete: 'off',
-          style: 'width:200px',
-          // readonly:preventAutoFill.value
-        },
-        rules: [
-          {
-            required: true,
-            // @ts-ignore
-            validator: async (rule, value) => {
-              console.log('value', value);
-              const regEmail = /^(.+)@(.+)$/;
-              const regPos = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/; // 非中文
-              if (!value) {
-                return Promise.reject(t('routes.equity.rules.userName'));
-              }
-              if (!(regPos.test(value) || regEmail.test(value))) {
-                /* eslint-disable-next-line */
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update', 'register'],
+    setup(props, { emit }) {
+      const fileFlow = reactive({
+        file: null,
+        type: 2, //2-普通发票,3-专用发票
+        validTimeType: 0,
+      });
+      const userStore = useUserStore();
+      const { createMessage } = useMessage();
+      const agent = computed(() => userStore.getAgent);
+      const schemas: FormSchema[] = [
+        {
+          field: 'userName',
+          component: 'Input',
+          label: t('routes.equity.userName'),
+          required: true,
+          componentProps: {
+            autoComplete: 'off',
+            style: 'width:200px',
+            // readonly:preventAutoFill.value
+          },
+          rules: [
+            {
+              required: true,
+              // @ts-ignore
+              validator: async (rule, value) => {
+                console.log('value', value);
+                const regEmail = /^(.+)@(.+)$/;
+                const regPos = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/; // 非中文
+                if (!value) {
+                  return Promise.reject(t('routes.equity.rules.userName'));
+                }
+                if (!(regPos.test(value) || regEmail.test(value))) {
+                  /* eslint-disable-next-line */
                 return Promise.reject(t('routes.equity.rules.userName1'));
                 return Promise.reject(t('routes.equity.rules.userName1'));
-              }
-              // useThrottleFn(handleSplitLeftMenu, 50);
-              const res = await checkUserName({ userName: value });
-              //await checkUserName({userName:value})
-              // useThrottleFn(,50)()
-              console.log('validator', res);
-              if (!res) {
-                return Promise.reject(t('routes.equity.rules.userName2'));
-              }
-              return Promise.resolve();
+                }
+                // useThrottleFn(handleSplitLeftMenu, 50);
+                const res = await checkUserName({ userName: value });
+                //await checkUserName({userName:value})
+                // useThrottleFn(,50)()
+                console.log('validator', res);
+                if (!res) {
+                  return Promise.reject(t('routes.equity.rules.userName2'));
+                }
+                return Promise.resolve();
+              },
+              trigger: 'blur',
             },
             },
-            trigger: 'blur',
+          ],
+          colProps: {
+            span: 19,
           },
           },
-        ],
-        colProps: {
-          span: 19,
         },
         },
-      },
-      {
-        field: 'incrementTypeId',
-        component: 'ApiSelect',
-        label: t('routes.equity.Type'),
-        required: true,
-        componentProps: {
-          maxLength: 50,
-          style: 'width:200px',
-          api: async function () {
-            const list = await dincrementList();
-            return list.map((ele) => {
-              return { name: t(`routes.finance.equityType.${ele.validTimeType}`), value: ele.id };
-            });
-          },
-          numberToString: true,
-          labelField: 'name',
-          valueField: 'value',
-          immediate: true,
-          params: {
-            agentName: '',
-          },
-          onChange: (value) => {
-            let { totalTime, count = 1 } = getFieldsValue();
-            updateSchema([
-              {
-                field: 'incrementTypeId',
-                suffix: `${t('routes.equity.syks')} ${
-                  value == 3 ? agent.value.highSubNum : agent.value.majorSubNum
-                } ${value == 3 ? t('routes.equity.unit.-2') : t('routes.equity.unit.-1')}`,
-              },
-              {
-                field: 'count',
-                componentProps: {
-                  max: value == 3 ? agent.value.highSubNum : agent.value.majorSubNum,
-                  min: 1,
+        {
+          field: 'incrementTypeId',
+          component: 'ApiSelect',
+          label: t('routes.equity.Type'),
+          required: true,
+          componentProps: {
+            maxLength: 50,
+            style: 'width:200px',
+            api: async function () {
+              const list = await dincrementList();
+              return list.map((ele) => {
+                return { name: t(`routes.finance.equityType.${ele.validTimeType}`), value: ele.id };
+              });
+            },
+            numberToString: true,
+            labelField: 'name',
+            valueField: 'value',
+            immediate: true,
+            params: {
+              agentName: '',
+            },
+            onChange: (value) => {
+              let { totalTime, count = 1 } = getFieldsValue();
+              updateSchema([
+                {
+                  field: 'incrementTypeId',
+                  suffix: `${t('routes.equity.syks')} ${
+                    value == 3 ? agent.value.highSubNum : agent.value.majorSubNum
+                  } ${value == 3 ? t('routes.equity.unit.-2') : t('routes.equity.unit.-1')}`,
                 },
                 },
-              },
-              {
-                field: 'totalTime',
-                suffix:
-                  totalTime && count
-                    ? `${t('routes.equity.jjxs')} ${totalTime * count} ${
-                        value == 3 ? t('routes.equity.unit.-2') : t('routes.equity.unit.-1')
-                      }`
-                    : '',
-                componentProps: {
-                  options: timeOption(value),
+                {
+                  field: 'count',
+                  componentProps: {
+                    max: value == 3 ? agent.value.highSubNum : agent.value.majorSubNum,
+                    min: 1,
+                  },
                 },
                 },
-              },
-            ]);
-            setFieldsValue({
-              count: 1,
-              incrementEndTime: dayjs()
-                .add(totalTime ? totalTime : 1, value != '3' ? 'year' : 'month')
-                .format('YYYY-MM-DD'),
-            });
+                {
+                  field: 'totalTime',
+                  suffix:
+                    totalTime && count
+                      ? `${t('routes.equity.jjxs')} ${totalTime * count} ${
+                          value == 3 ? t('routes.equity.unit.-2') : t('routes.equity.unit.-1')
+                        }`
+                      : '',
+                  componentProps: {
+                    options: timeOption(value),
+                  },
+                },
+              ]);
+              setFieldsValue({
+                count: 1,
+                incrementEndTime: dayjs()
+                  .add(totalTime ? totalTime : 1, value != '3' ? 'year' : 'month')
+                  .format('YYYY-MM-DD'),
+              });
+            },
           },
           },
-        },
-        colProps: {
-          span: 23,
-        },
-      },
-      {
-        field: 'count',
-        component: 'InputNumber',
-        label: t('routes.equity.countNumber'),
-        required: true,
-        // suffix:`${t('routes.equity.syks')} ${agent.value.majorSubNum} ${t('routes.equity.unit.1')}`,
-        defaultValue: 1,
-        itemProps: {
-          validateTrigger: 'change',
-        },
-        componentProps: {
-          max: agent.value.majorSubNum,
-          min: 1,
-          onChange: (value) => {
-            let { incrementTypeId, totalTime } = getFieldsValue();
-            console.log('totalTime', totalTime);
-            updateSchema([
-              {
-                field: 'totalTime',
-                suffix:
-                  totalTime && value
-                    ? `${t('routes.equity.jjxs')} ${value * totalTime} ${
-                        incrementTypeId == 3
-                          ? t('routes.equity.unit.-2')
-                          : t('routes.equity.unit.-1')
-                      }`
-                    : '',
-              },
-            ]);
+          colProps: {
+            span: 23,
           },
           },
         },
         },
-        colProps: {
-          span: 24,
-        },
-      },
-      {
-        field: 'totalTime',
-        component: 'Select',
-        label: t('routes.equity.totalTime'),
-        required: true,
-        itemProps: {
-          validateTrigger: 'change',
+        {
+          field: 'count',
+          component: 'InputNumber',
+          label: t('routes.equity.countNumber'),
+          required: true,
+          // suffix:`${t('routes.equity.syks')} ${agent.value.majorSubNum} ${t('routes.equity.unit.1')}`,
+          defaultValue: 1,
+          itemProps: {
+            validateTrigger: 'change',
+          },
+          componentProps: {
+            max: agent.value.majorSubNum,
+            min: 1,
+            onChange: (value) => {
+              let { incrementTypeId, totalTime } = getFieldsValue();
+              console.log('totalTime', totalTime);
+              updateSchema([
+                {
+                  field: 'totalTime',
+                  suffix:
+                    totalTime && value
+                      ? `${t('routes.equity.jjxs')} ${value * totalTime} ${
+                          incrementTypeId == 3
+                            ? t('routes.equity.unit.-2')
+                            : t('routes.equity.unit.-1')
+                        }`
+                      : '',
+                },
+              ]);
+            },
+          },
+          colProps: {
+            span: 24,
+          },
         },
         },
-        componentProps: {
-          options: [],
-          listHeight: 150,
-          style: 'width:200px',
-          onChange: (value) => {
-            let { incrementTypeId, count = 1 } = getFieldsValue();
+        {
+          field: 'totalTime',
+          component: 'Select',
+          label: t('routes.equity.totalTime'),
+          required: true,
+          itemProps: {
+            validateTrigger: 'change',
+          },
+          componentProps: {
+            options: [],
+            listHeight: 150,
+            style: 'width:200px',
+            onChange: (value) => {
+              let { incrementTypeId, count = 1 } = getFieldsValue();
 
 
-            updateSchema([
-              {
-                field: 'totalTime',
-                suffix:
-                  value && count
-                    ? `${t('routes.equity.jjxs')} ${value * count} ${
-                        incrementTypeId == 3
-                          ? t('routes.equity.unit.-2')
-                          : t('routes.equity.unit.-1')
-                      }`
-                    : '',
-              },
-            ]);
-            setFieldsValue({
-              incrementEndTime: dayjs(fileFlow.incrementEndTime || new Date())
-                .add(value, incrementTypeId != 3 ? 'year' : 'month')
-                .format('YYYY-MM-DD'),
-            });
+              updateSchema([
+                {
+                  field: 'totalTime',
+                  suffix:
+                    value && count
+                      ? `${t('routes.equity.jjxs')} ${value * count} ${
+                          incrementTypeId == 3
+                            ? t('routes.equity.unit.-2')
+                            : t('routes.equity.unit.-1')
+                        }`
+                      : '',
+                },
+              ]);
+              setFieldsValue({
+                incrementEndTime: dayjs(fileFlow.incrementEndTime || new Date())
+                  .add(value, incrementTypeId != 3 ? 'year' : 'month')
+                  .format('YYYY-MM-DD'),
+              });
+            },
           },
           },
-        },
-        colProps: {
-          span: 23,
-        },
-      },
-      {
-        field: 'incrementEndTime',
-        component: 'DatePicker',
-        label: t('routes.equity.expiryTime'),
-        required: true,
-        defaultValue: dayjs().add(1, 'year').format('YYYY-MM-DD'),
-        componentProps: {
-          disabled: true,
-          valueFormat: 'YYYY-MM-DD',
-          format: 'YYYY-MM-DD',
-          disabledDate: (current) => {
-            return current && current < dayjs().endOf('day');
+          colProps: {
+            span: 23,
           },
           },
         },
         },
-        colProps: {
-          span: 24,
+        {
+          field: 'incrementEndTime',
+          component: 'DatePicker',
+          label: t('routes.equity.expiryTime'),
+          required: true,
+          defaultValue: dayjs().add(1, 'year').format('YYYY-MM-DD'),
+          componentProps: {
+            disabled: true,
+            valueFormat: 'YYYY-MM-DD',
+            format: 'YYYY-MM-DD',
+            disabledDate: (current) => {
+              return current && current < dayjs().endOf('day');
+            },
+          },
+          colProps: {
+            span: 24,
+          },
         },
         },
-      },
-    ];
+      ];
 
 
-    const [registerForm, { validate, resetFields, setFieldsValue, updateSchema, getFieldsValue }] =
-      useForm({
+      const [
+        registerForm,
+        { validate, resetFields, setFieldsValue, updateSchema, getFieldsValue },
+      ] = useForm({
         labelWidth: 120,
         labelWidth: 120,
         schemas: schemas,
         schemas: schemas,
         showActionButtonGroup: false,
         showActionButtonGroup: false,
@@ -248,86 +250,87 @@ export default defineComponent({
           span: 24,
           span: 24,
         },
         },
       });
       });
-    onMounted(() => {});
-    let addListFunc = () => {};
-    const [register, { closeModal }] = useModalInner((data) => {
-      data && onDataReceive(data);
-    });
+      onMounted(() => {});
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        data && onDataReceive(data);
+      });
 
 
-    function onDataReceive(data) {
-      resetFields();
-      console.log('validTimeType', data);
-      fileFlow.type = data.type;
-      fileFlow.validTimeType = data.validTimeType;
-      setFieldsValue(data);
-      updateSchema([
-        { field: 'shipNum', ifShow: fileFlow.type == 3 },
-        { field: 'email', ifShow: fileFlow.type == 2 },
-        { field: 'file', ifShow: fileFlow.type == 2 },
-        { field: 'incrementTypeId', suffix: '' },
-        { field: 'totalTime', suffix: '' },
-        {
-          field: 'count',
-          componentProps: {
-            max: agent.value.majorSubNum,
-            min: 1,
+      function onDataReceive(data) {
+        resetFields();
+        console.log('validTimeType', data);
+        fileFlow.type = data.type;
+        fileFlow.validTimeType = data.validTimeType;
+        setFieldsValue(data);
+        updateSchema([
+          { field: 'shipNum', ifShow: fileFlow.type == 3 },
+          { field: 'email', ifShow: fileFlow.type == 2 },
+          { field: 'file', ifShow: fileFlow.type == 2 },
+          { field: 'incrementTypeId', suffix: '' },
+          { field: 'totalTime', suffix: '' },
+          {
+            field: 'count',
+            componentProps: {
+              max: agent.value.majorSubNum,
+              min: 1,
+            },
           },
           },
-        },
-      ]);
-    }
-    const handleSubmit = async () => {
-      // try {
-      const params = await validate();
-      console.log('params', params);
-      let timeVal = params.incrementTypeId == 3 ? agent.value.highSubNum : agent.value.majorSubNum;
-      if (params.count * params.totalTime > timeVal) {
-        createMessage.error(t('routes.equity.totalMessge'));
-        return;
+        ]);
       }
       }
-      await addApi(params);
-      closeModal();
-      resetFields();
-      createMessage.success(t('common.optSuccess'));
-      emit('update', true);
-      // } catch (error) {
-      //   console.log('not passing', error);
-      // }
-    };
-    function handleVisibleChange(v) {
-      v && props.userData && nextTick(() => onDataReceive(props.userData));
-    }
-    function timeOption(incrementTypeId) {
-      let list = [];
-      let timeVal = incrementTypeId == 3 ? agent.value.highSubNum : agent.value.majorSubNum;
-      let value = 10,
-        unit = t('routes.equity.unit.-1');
-      if (incrementTypeId == 3) {
-        //高级会员月
-        value = timeVal > 12 ? 12 : timeVal;
-        unit = t('routes.equity.unit.-3');
-      } else {
-        value = timeVal > 10 ? 10 : timeVal;
+      const handleSubmit = async () => {
+        // try {
+        const params = await validate();
+        console.log('params', params);
+        let timeVal =
+          params.incrementTypeId == 3 ? agent.value.highSubNum : agent.value.majorSubNum;
+        if (params.count * params.totalTime > timeVal) {
+          createMessage.error(t('routes.equity.totalMessge'));
+          return;
+        }
+        await addApi(params);
+        closeModal();
+        resetFields();
+        createMessage.success(t('common.optSuccess'));
+        emit('update', true);
+        // } catch (error) {
+        //   console.log('not passing', error);
+        // }
+      };
+      function handleVisibleChange(v) {
+        v && props.userData && nextTick(() => onDataReceive(props.userData));
       }
       }
-      for (let index = 1; index <= value; index++) {
-        list.push({
-          label: index + unit,
-          value: index,
-          key: index,
-        });
+      function timeOption(incrementTypeId) {
+        let list = [];
+        let timeVal = incrementTypeId == 3 ? agent.value.highSubNum : agent.value.majorSubNum;
+        let value = 10,
+          unit = t('routes.equity.unit.-1');
+        if (incrementTypeId == 3) {
+          //高级会员月
+          value = timeVal > 12 ? 12 : timeVal;
+          unit = t('routes.equity.unit.-3');
+        } else {
+          value = timeVal > 10 ? 10 : timeVal;
+        }
+        for (let index = 1; index <= value; index++) {
+          list.push({
+            label: index + unit,
+            value: index,
+            key: index,
+          });
+        }
+        return list;
       }
       }
-      return list;
-    }
-    return {
-      register,
-      registerForm,
-      fileFlow,
-      handleVisibleChange,
-      handleSubmit,
-      addListFunc,
-      resetFields,
-      timeOption,
-      t,
-    };
-  },
-});
+      return {
+        register,
+        registerForm,
+        fileFlow,
+        handleVisibleChange,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        timeOption,
+        t,
+      };
+    },
+  });
 </script>
 </script>

+ 63 - 64
src/views/equity/index.vue

@@ -2,37 +2,37 @@
   <PageWrapper contentBackground>
   <PageWrapper contentBackground>
     <template #footer>
     <template #footer>
       <a-tabs v-model:activeKey="incrementTypeId" @change="changeTable">
       <a-tabs v-model:activeKey="incrementTypeId" @change="changeTable">
-        <a-tab-pane :key="0" :tab="t('routes.equity.incrementType.0')" >
-        </a-tab-pane>
-        <a-tab-pane :key="1" :tab="t('routes.equity.incrementType.1')" >
-        </a-tab-pane>
+        <a-tab-pane :key="0" :tab="t('routes.equity.incrementType.0')" />
+        <a-tab-pane :key="1" :tab="t('routes.equity.incrementType.1')" />
       </a-tabs>
       </a-tabs>
-      </template>
-      
-      <div class="desc-wrap-BasicTable">
-            <BasicTable v-if="!incrementTypeId" @register="registerTable">
-              <template #toolbar>
-                <a-button type="primary" @click="handleInvoice"> {{t('routes.equity.add')}}</a-button>
-              </template>
-              <template #action="{ record }">
-                  <TableAction
-                    stopButtonPropagation
-                    :actions="[
-                      {
-                        label: t('routes.equity.renew'),
-                        //icon: 'la:file-invoice-dollar',
-                        onClick: headleDetails.bind(null, record),
-                      }
-                    ]"
-                  />
-              </template>
-            </BasicTable>
-            <BasicTable v-else @register="registerDownTable">
-              <template #toolbar>
-                <a-button type="primary" @click="handleInvoice"> {{t('routes.equity.addDowm')}}</a-button>
-              </template>
-            </BasicTable>
-          </div>
+    </template>
+
+    <div class="desc-wrap-BasicTable">
+      <BasicTable v-if="!incrementTypeId" @register="registerTable">
+        <template #toolbar>
+          <a-button type="primary" @click="handleInvoice"> {{ t('routes.equity.add') }}</a-button>
+        </template>
+        <template #action="{ record }">
+          <TableAction
+            stopButtonPropagation
+            :actions="[
+              {
+                label: t('routes.equity.renew'),
+                //icon: 'la:file-invoice-dollar',
+                onClick: headleDetails.bind(null, record),
+              },
+            ]"
+          />
+        </template>
+      </BasicTable>
+      <BasicTable v-else @register="registerDownTable">
+        <template #toolbar>
+          <a-button type="primary" @click="handleInvoice">
+            {{ t('routes.equity.addDowm') }}</a-button
+          >
+        </template>
+      </BasicTable>
+    </div>
     <AddModal @update="reload" @register="registerAddModal" />
     <AddModal @update="reload" @register="registerAddModal" />
     <EditModal @register="registerEditModal" @update="reload" />
     <EditModal @register="registerEditModal" @update="reload" />
     <DownModal @register="registerDownModal" @update="reload" />
     <DownModal @register="registerDownModal" @update="reload" />
@@ -43,14 +43,14 @@
   import { BasicTable, useTable, TableAction, TableImg } from '/@/components/Table';
   import { BasicTable, useTable, TableAction, TableImg } from '/@/components/Table';
   import { PageWrapper } from '/@/components/Page';
   import { PageWrapper } from '/@/components/Page';
   import { useModal } from '/@/components/Modal';
   import { useModal } from '/@/components/Modal';
-  import { Descriptions,Tabs } from 'ant-design-vue';
+  import { Descriptions, Tabs } from 'ant-design-vue';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useI18n } from '/@/hooks/web/useI18n';
-  import { listApi, dowmListApi } from '/@/api/equity'
+  import { listApi, dowmListApi } from '/@/api/equity';
   import { useUserStore } from '/@/store/modules/user';
   import { useUserStore } from '/@/store/modules/user';
-  import { searchForm, columns, columnsDown, DownSchemas } from './data'
+  import { searchForm, columns, columnsDown, DownSchemas } from './data';
   import AddModal from './InvoiceModal.vue';
   import AddModal from './InvoiceModal.vue';
   import EditModal from './EditModal.vue';
   import EditModal from './EditModal.vue';
-  import DownModal from './DownModal.vue'
+  import DownModal from './DownModal.vue';
   import { usePermissionStore } from '/@/store/modules/permission';
   import { usePermissionStore } from '/@/store/modules/permission';
   interface apiDataParam {
   interface apiDataParam {
     orderSn?: string;
     orderSn?: string;
@@ -62,12 +62,12 @@
     sortBy?: string;
     sortBy?: string;
   }
   }
   export default defineComponent({
   export default defineComponent({
-    components: { 
+    components: {
       AddModal,
       AddModal,
       EditModal,
       EditModal,
       DownModal,
       DownModal,
-      BasicTable, 
-      TableAction, 
+      BasicTable,
+      TableAction,
       PageWrapper,
       PageWrapper,
       TableImg,
       TableImg,
       [Descriptions.name]: Descriptions,
       [Descriptions.name]: Descriptions,
@@ -79,7 +79,7 @@
       const { t } = useI18n();
       const { t } = useI18n();
       const userStore = useUserStore();
       const userStore = useUserStore();
       const permissionStore = usePermissionStore();
       const permissionStore = usePermissionStore();
-      const { getUserInfoAction } = userStore
+      const { getUserInfoAction } = userStore;
       const agent = computed(() => userStore.getAgent);
       const agent = computed(() => userStore.getAgent);
       const { getCheckPerm } = permissionStore;
       const { getCheckPerm } = permissionStore;
       const incrementTypeId = ref<number>(0); //0看看 、1看见、2深时
       const incrementTypeId = ref<number>(0); //0看看 、1看见、2深时
@@ -95,7 +95,7 @@
       const [registerAddModal, { openModal: openAddModal }] = useModal();
       const [registerAddModal, { openModal: openAddModal }] = useModal();
       const [registerDownModal, { openModal: openDownModal }] = useModal();
       const [registerDownModal, { openModal: openDownModal }] = useModal();
       const [registerEditModal, { openModal: openEditModal }] = useModal();
       const [registerEditModal, { openModal: openEditModal }] = useModal();
-      const [registerTable, { reload:reloadEqiuty }] = useTable({
+      const [registerTable, { reload: reloadEqiuty }] = useTable({
         api: listApi,
         api: listApi,
         title: '',
         title: '',
         // titleHelpMessage: ['已启用expandRowByClick', '已启用stopButtonPropagation'],
         // titleHelpMessage: ['已启用expandRowByClick', '已启用stopButtonPropagation'],
@@ -103,7 +103,7 @@
         useSearchForm: true,
         useSearchForm: true,
         formConfig: searchForm,
         formConfig: searchForm,
         showTableSetting: true,
         showTableSetting: true,
-        showIndexColumn:false,
+        showIndexColumn: false,
         // searchInfo: { incrementTypeId:0 },
         // searchInfo: { incrementTypeId:0 },
         rowKey: 'id',
         rowKey: 'id',
         fetchSetting: {
         fetchSetting: {
@@ -121,7 +121,7 @@
         },
         },
         canResize: false,
         canResize: false,
       });
       });
-      const [registerDownTable, { reload:reloadDown }] = useTable({
+      const [registerDownTable, { reload: reloadDown }] = useTable({
         api: dowmListApi,
         api: dowmListApi,
         title: '',
         title: '',
         // titleHelpMessage: ['已启用expandRowByClick', '已启用stopButtonPropagation'],
         // titleHelpMessage: ['已启用expandRowByClick', '已启用stopButtonPropagation'],
@@ -129,8 +129,8 @@
         useSearchForm: true,
         useSearchForm: true,
         formConfig: DownSchemas,
         formConfig: DownSchemas,
         showTableSetting: true,
         showTableSetting: true,
-        showIndexColumn:false,
-        searchInfo: { incrementTypeId:1 },
+        showIndexColumn: false,
+        searchInfo: { incrementTypeId: 1 },
         rowKey: 'id',
         rowKey: 'id',
         fetchSetting: {
         fetchSetting: {
           pageField: 'pageNum',
           pageField: 'pageNum',
@@ -144,36 +144,35 @@
         console.log('点击了删除', record);
         console.log('点击了删除', record);
       }
       }
       function handleInvoice(record: Recordable) {
       function handleInvoice(record: Recordable) {
-        if(incrementTypeId.value == 0){
+        if (incrementTypeId.value == 0) {
           openAddModal(true, {
           openAddModal(true, {
             ...record,
             ...record,
           });
           });
-        }else{
+        } else {
           openDownModal(true, {
           openDownModal(true, {
             ...record,
             ...record,
           });
           });
         }
         }
       }
       }
-    function handleEdit(record: Recordable) {
-      console.log('record', record);
-    }
-    function headleDetails(record: Recordable) {
-      console.log('record', record);
-      openEditModal(true, {
-        ...record,
-      });
-    }
-    function reload(value){
-      if(value){
-        getUserInfoAction()
+      function handleEdit(record: Recordable) {
+        console.log('record', record);
       }
       }
-      if(incrementTypeId.value == 0){
-        reloadEqiuty()
-      }else{
-        reloadDown()
+      function headleDetails(record: Recordable) {
+        console.log('record', record);
+        openEditModal(true, {
+          ...record,
+        });
+      }
+      function reload(value) {
+        if (value) {
+          getUserInfoAction();
+        }
+        if (incrementTypeId.value == 0) {
+          reloadEqiuty();
+        } else {
+          reloadDown();
+        }
       }
       }
-
-    }
       return {
       return {
         registerTable,
         registerTable,
         registerDownTable,
         registerDownTable,
@@ -193,4 +192,4 @@
       };
       };
     },
     },
   });
   });
-</script>
+</script>

+ 77 - 67
src/views/finance/EditModal.vue

@@ -13,10 +13,16 @@
     <div class="pt-2px pr-3px">
     <div class="pt-2px pr-3px">
       <BasicForm @register="registerForm">
       <BasicForm @register="registerForm">
         <template #text="{ model, field }">
         <template #text="{ model, field }">
-          {{ model[field]  }}
+          {{ model[field] }}
         </template>
         </template>
         <template #img="{ model }">
         <template #img="{ model }">
-          <TableImg v-if="model.invoiceUrl" :size="200" :adaptations="true" :simpleShow="true" :imgList="[model.invoiceUrl]" />
+          <TableImg
+            v-if="model.invoiceUrl"
+            :size="200"
+            :adaptations="true"
+            :simpleShow="true"
+            :imgList="[model.invoiceUrl]"
+          />
         </template>
         </template>
       </BasicForm>
       </BasicForm>
     </div>
     </div>
@@ -42,71 +48,75 @@
     emits: ['update', 'register'],
     emits: ['update', 'register'],
     setup(props, { emit }) {
     setup(props, { emit }) {
       const fileFlow = reactive({
       const fileFlow = reactive({
-        file:null,
-        type:2,//2-普通发票,3-专用发票
-      })
+        file: null,
+        type: 2, //2-普通发票,3-专用发票
+      });
       const { createMessage } = useMessage();
       const { createMessage } = useMessage();
       const schemas: FormSchema[] = [
       const schemas: FormSchema[] = [
-          {
-            field: 'id',
-            component: 'Input',
-            show:false,
-            label: '发票编号',
-            required: true,
+        {
+          field: 'id',
+          component: 'Input',
+          show: false,
+          label: '发票编号',
+          required: true,
+        },
+        {
+          field: 'email',
+          component: 'Input',
+          label: '邮箱',
+          slot: 'text',
+          ifShow: fileFlow.type == 2,
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'invoiceNum',
+          component: 'Input',
+          label: '发票编号',
+          slot: 'text',
+          required: true,
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'invoiceUrl',
+          component: 'Upload',
+          label: '电子发票',
+          ifShow: fileFlow.type == 2,
+          required: true,
+          slot: 'img',
+          colProps: {
+            span: 22,
           },
           },
-          {
-            field: 'email',
-            component: 'Input',
-            label: '邮箱',
-            slot: 'text',
-            ifShow:fileFlow.type == 2,
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'invoiceNum',
-            component: 'Input',
-            label: '发票编号',
-            slot: 'text',
-            required: true,
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'invoiceUrl',
-            component: 'Upload',
-            label: '电子发票',
-            ifShow:fileFlow.type == 2,
-            required: true,
-            slot: 'img',
-            colProps: {
-              span: 22,
-            },
-          },{
-            field: 'invoiceNum',
-            component: 'Input',
-            label: '发票编号',
-            required: true,
-            slot: 'text',
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'shipNum',
-            component: 'Input',
-            ifShow:fileFlow.type == 3,
-            slot: 'text',
-            label: '快递单号',
-            required: true,
-            colProps: {
-              span: 24,
-            },
+        },
+        {
+          field: 'invoiceNum',
+          component: 'Input',
+          label: '发票编号',
+          required: true,
+          slot: 'text',
+          colProps: {
+            span: 24,
           },
           },
+        },
+        {
+          field: 'shipNum',
+          component: 'Input',
+          ifShow: fileFlow.type == 3,
+          slot: 'text',
+          label: '快递单号',
+          required: true,
+          colProps: {
+            span: 24,
+          },
+        },
       ];
       ];
 
 
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
         labelWidth: 120,
         labelWidth: 120,
-        schemas:schemas,
+        schemas: schemas,
         showActionButtonGroup: false,
         showActionButtonGroup: false,
         actionColOptions: {
         actionColOptions: {
           span: 24,
           span: 24,
@@ -119,21 +129,21 @@
       });
       });
       async function onDataReceive(data) {
       async function onDataReceive(data) {
         resetFields();
         resetFields();
-        let detail = await InvoiceDetail({id:data.id})
-        fileFlow.type = data.type
+        let detail = await InvoiceDetail({ id: data.id });
+        fileFlow.type = data.type;
         setFieldsValue({
         setFieldsValue({
           ...data,
           ...data,
           ...detail,
           ...detail,
         });
         });
         updateSchema([
         updateSchema([
-          {field: 'shipNum',ifShow:fileFlow.type == 3,},
-          {field: 'email',ifShow:fileFlow.type == 2,},
-          {field: 'invoiceUrl',ifShow:fileFlow.type == 2,},
-        ])
+          { field: 'shipNum', ifShow: fileFlow.type == 3 },
+          { field: 'email', ifShow: fileFlow.type == 2 },
+          { field: 'invoiceUrl', ifShow: fileFlow.type == 2 },
+        ]);
       }
       }
       const handleSubmit = async () => {
       const handleSubmit = async () => {
-          closeModal();
-          emit('update');
+        closeModal();
+        emit('update');
       };
       };
       function handleVisibleChange(v) {
       function handleVisibleChange(v) {
         v && props.userData && nextTick(() => onDataReceive(props.userData));
         v && props.userData && nextTick(() => onDataReceive(props.userData));

+ 108 - 103
src/views/finance/InvoiceModal.vue

@@ -10,9 +10,7 @@
   >
   >
     <div class="pt-2px pr-3px">
     <div class="pt-2px pr-3px">
       <BasicForm @register="registerForm">
       <BasicForm @register="registerForm">
-        <template #text="{ model, field }">
-          {{ model[field]  }}{{fileFlow.type}}
-        </template>
+        <template #text="{ model, field }"> {{ model[field] }}{{ fileFlow.type }} </template>
       </BasicForm>
       </BasicForm>
     </div>
     </div>
   </BasicModal>
   </BasicModal>
@@ -36,98 +34,102 @@
     emits: ['update', 'register'],
     emits: ['update', 'register'],
     setup(props, { emit }) {
     setup(props, { emit }) {
       const fileFlow = reactive({
       const fileFlow = reactive({
-        file:null,
-        type:2,//2-普通发票,3-专用发票
-      })
-      const okText = ref('发送')
+        file: null,
+        type: 2, //2-普通发票,3-专用发票
+      });
+      const okText = ref('发送');
       const { createMessage } = useMessage();
       const { createMessage } = useMessage();
       const schemas: FormSchema[] = [
       const schemas: FormSchema[] = [
-          {
-            field: 'id',
-            component: 'Input',
-            show:false,
-            label: '发票编号',
-            required: true,
+        {
+          field: 'id',
+          component: 'Input',
+          show: false,
+          label: '发票编号',
+          required: true,
+        },
+        {
+          field: 'email',
+          component: 'Input',
+          label: '邮箱',
+          slot: 'text',
+          ifShow: fileFlow.type == 2,
+          componentProps: {
+            maxLength: 50,
           },
           },
-          {
-            field: 'email',
-            component: 'Input',
-            label: '邮箱',
-            slot: 'text',
-            ifShow:fileFlow.type == 2,
-            componentProps: {
-              maxLength: 50,
-            },
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'invoiceNum',
-            component: 'Input',
-            label: '发票编号',
-            required: true,
-            componentProps: {
-              maxLength: 50,
-            },
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'file',
-            component: 'Upload',
-            label: '电子发票',
-            ifShow:fileFlow.type == 2,
-            required: true,
-            rules: [{ required: true, message: t('common.uploadMessge') }],
-            itemProps: {
-              validateTrigger: 'onBlur',
-            },
-            componentProps: {
-              api: uploadApi,
-              fileFlow:true,
-              maxNumber: 1,
-              maxSize: 1000,
-              accept: ['jpeg','jpg','png'],
-              afterFetch: function (data) {
-                console.log('url',data)
-                // Reflect.set(data, 'url', data.file);
-                fileFlow.file = data.file
-                return data;
-              },
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'invoiceNum',
+          component: 'Input',
+          label: '发票编号',
+          required: true,
+          componentProps: {
+            maxLength: 50,
+          },
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'file',
+          component: 'Upload',
+          label: '电子发票',
+          ifShow: fileFlow.type == 2,
+          required: true,
+          rules: [{ required: true, message: t('common.uploadMessge') }],
+          itemProps: {
+            validateTrigger: 'onBlur',
+          },
+          componentProps: {
+            api: uploadApi,
+            fileFlow: true,
+            maxNumber: 1,
+            maxSize: 1000,
+            accept: ['jpeg', 'jpg', 'png'],
+            afterFetch: function (data) {
+              console.log('url', data);
+              // Reflect.set(data, 'url', data.file);
+              fileFlow.file = data.file;
+              return data;
             },
             },
+          },
 
 
-            colProps: {
-              span: 22,
-            },
-          },{
-            field: 'invoiceNum',
-            component: 'Input',
-            label: '发票编号',
-            required: true,
-            componentProps: {
-              maxLength: 50,
-            },
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'shipNum',
-            component: 'Input',
-            ifShow:fileFlow.type == 3,
-            label: '快递单号',
-            componentProps: {
-              maxLength: 50,
-            },
-            required: true,
-            colProps: {
-              span: 24,
-            },
+          colProps: {
+            span: 22,
           },
           },
+        },
+        {
+          field: 'invoiceNum',
+          component: 'Input',
+          label: '发票编号',
+          required: true,
+          componentProps: {
+            maxLength: 50,
+          },
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'shipNum',
+          component: 'Input',
+          ifShow: fileFlow.type == 3,
+          label: '快递单号',
+          componentProps: {
+            maxLength: 50,
+          },
+          required: true,
+          colProps: {
+            span: 24,
+          },
+        },
       ];
       ];
 
 
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
         labelWidth: 120,
         labelWidth: 120,
-        schemas:schemas,
+        schemas: schemas,
         showActionButtonGroup: false,
         showActionButtonGroup: false,
         actionColOptions: {
         actionColOptions: {
           span: 24,
           span: 24,
@@ -140,31 +142,34 @@
       });
       });
       function onDataReceive(data) {
       function onDataReceive(data) {
         resetFields();
         resetFields();
-        fileFlow.type = data.type
+        fileFlow.type = data.type;
         setFieldsValue(data);
         setFieldsValue(data);
-        okText.value = fileFlow.type == 2?'发送':'确认'
+        okText.value = fileFlow.type == 2 ? '发送' : '确认';
         updateSchema([
         updateSchema([
-          {field: 'shipNum',ifShow:fileFlow.type == 3,},
-          {field: 'email',ifShow:fileFlow.type == 2,},
-          {field: 'file',ifShow:fileFlow.type == 2,},
-        ])
+          { field: 'shipNum', ifShow: fileFlow.type == 3 },
+          { field: 'email', ifShow: fileFlow.type == 2 },
+          { field: 'file', ifShow: fileFlow.type == 2 },
+        ]);
       }
       }
       const handleSubmit = async () => {
       const handleSubmit = async () => {
         try {
         try {
           const params = await validate();
           const params = await validate();
           const apiData = {
           const apiData = {
-            data:fileFlow.type == 3?{
-              id:params.id,
-              invoiceNum:params.invoiceNum,
-              shipNum:params.shipNum,
-            }:{
-              id:params.id,
-              invoiceNum:params.invoiceNum,
-              file:fileFlow.file,
-            // file:params.file[0],
-            }
-          }
-          console.log('res', apiData,params);
+            data:
+              fileFlow.type == 3
+                ? {
+                    id: params.id,
+                    invoiceNum: params.invoiceNum,
+                    shipNum: params.shipNum,
+                  }
+                : {
+                    id: params.id,
+                    invoiceNum: params.invoiceNum,
+                    file: fileFlow.file,
+                    // file:params.file[0],
+                  },
+          };
+          console.log('res', apiData, params);
           await InvoiceRegister(apiData);
           await InvoiceRegister(apiData);
           closeModal();
           closeModal();
           resetFields();
           resetFields();

+ 3 - 3
src/views/finance/data.tsx

@@ -63,7 +63,7 @@ export const columns: BasicColumn[] = [
     // slots: { customRender: 'orderStatus' },
     // slots: { customRender: 'orderStatus' },
     width: 120,
     width: 120,
     customRender: ({ record }) => {
     customRender: ({ record }) => {
-      return record.type == 2?'-':record.totalTime;
+      return record.type == 2 ? '-' : record.totalTime;
     },
     },
   },
   },
   {
   {
@@ -83,12 +83,12 @@ export const searchForm: Partial<FormProps> = {
       field: 'type',
       field: 'type',
       label: t('routes.equity.Type'),
       label: t('routes.equity.Type'),
       component: 'ApiSelect',
       component: 'ApiSelect',
-      labelWidth:70,
+      labelWidth: 70,
       componentProps: {
       componentProps: {
         maxLength: 50,
         maxLength: 50,
         api: async function () {
         api: async function () {
           const list = await dincrementList();
           const list = await dincrementList();
-          let optionList = [];
+          const optionList = [];
           list.map((ele) => {
           list.map((ele) => {
             optionList.push({
             optionList.push({
               name: t(`routes.finance.equityType.${ele.validTimeType}`),
               name: t(`routes.finance.equityType.${ele.validTimeType}`),

+ 181 - 173
src/views/finance/index.vue

@@ -3,7 +3,9 @@
     <GrowCard :loading="loading" class="enter-y" :list="growCardList" />
     <GrowCard :loading="loading" class="enter-y" :list="growCardList" />
     <BasicTable @register="registerTable">
     <BasicTable @register="registerTable">
       <template #toolbar>
       <template #toolbar>
-        <a-button type="primary" @click="exportExcel" > {{t('routes.equity.exportExcel')}}</a-button>
+        <a-button type="primary" @click="exportExcel">
+          {{ t('routes.equity.exportExcel') }}</a-button
+        >
       </template>
       </template>
     </BasicTable>
     </BasicTable>
     <AddModal @update="reload" @register="registerAddModal" />
     <AddModal @update="reload" @register="registerAddModal" />
@@ -11,180 +13,186 @@
   </div>
   </div>
 </template>
 </template>
 <script lang="ts">
 <script lang="ts">
-import { defineComponent, h, reactive, ref, onMounted, computed } from 'vue';
-import GrowCard from '../dashboard/analysis/components/GrowCard.vue';
-import { BasicTable, useTable, TableAction, TableImg } from '/@/components/Table';
-import { PageWrapper } from '/@/components/Page';
-import { useModal } from '/@/components/Modal';
-import { Descriptions } from 'ant-design-vue';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { logData, logList, DownExport } from '/@/api/finance';
-import { searchForm, columns } from './data';
-import AddModal from './InvoiceModal.vue';
-import EditModal from './EditModal.vue';
-import { usePermissionStore } from '/@/store/modules/permission';
-import { useLocaleStore } from '/@/store/modules/locale';
+  import { defineComponent, h, reactive, ref, onMounted, computed } from 'vue';
+  import GrowCard from '../dashboard/analysis/components/GrowCard.vue';
+  import { BasicTable, useTable, TableAction, TableImg } from '/@/components/Table';
+  import { PageWrapper } from '/@/components/Page';
+  import { useModal } from '/@/components/Modal';
+  import { Descriptions } from 'ant-design-vue';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { logData, logList, DownExport } from '/@/api/finance';
+  import { searchForm, columns } from './data';
+  import AddModal from './InvoiceModal.vue';
+  import EditModal from './EditModal.vue';
+  import { usePermissionStore } from '/@/store/modules/permission';
+  import { useLocaleStore } from '/@/store/modules/locale';
 
 
-interface apiDataParam {
-  orderSn?: string;
-  payTimeStart?: string;
-  payTimeEnd?: string;
-  invoiceTimeStart?: string;
-  invoiceTimeEnd?: string;
-  orderBy?: string;
-  sortBy?: string;
-}
-interface GrowCardItem {
-  icon: string;
-  title: string;
-  value: number;
-  unit: string;
-  color: string;
-  action: string;
-}
-export default defineComponent({
-  components: {
-    AddModal,
-    GrowCard,
-    EditModal,
-    BasicTable,
-    TableAction,
-    PageWrapper,
-    TableImg,
-    [Descriptions.name]: Descriptions,
-    [Descriptions.Item.name]: Descriptions.Item,
-  },
-  setup() {
-    const { t } = useI18n();
-    const loading = ref(true);
-    const growCardList = ref<GrowCardItem[]>([]);
-    const localeStore = useLocaleStore();
-    const isEn = computed(() => localeStore.getLocale === 'en');
-    onMounted(async () => {
-      const {lastDownNum = 0,lastHighNum = 0,lastMajorNum = 0} = await logData({})
-      loading.value = false
-      growCardList.value = [{
-        title: t('routes.equity.CardMajorNum'),
-        // icon: 'fa6-solid:users-gear',
-        icon: 'visit-count|svg',
-        value: lastMajorNum || 0,
-        unit: t('routes.equity.unit.-1'),
-        color: 'blue',
-        action: t('routes.equity.unit.-2'),
-      },
-      {
-        title:  t('routes.equity.CardHighNum'),
-        icon: 'akar-icons:person-add',
-        value: lastHighNum || 0,
-        unit: t('routes.equity.unit.-2'),
-        color: 'blue',
-        action: t('routes.equity.unit.-2'),
-      },
-      {
-        title: t('routes.equity.CardDownNum'),
-        icon: 'carbon:user-role',
-        value: lastDownNum || 0,
-        unit: t('routes.equity.unit.2'),
-        color: 'blue',
-        action: t('routes.equity.unit.-2'),
-      },]
-    });
-    const permissionStore = usePermissionStore();
-    const { getCheckPerm } = permissionStore;
-    const apiData = reactive<apiDataParam>({
-      orderSn: '',
-      payTimeStart: '',
-      payTimeEnd: '',
-      invoiceTimeStart: '',
-      invoiceTimeEnd: '',
-      orderBy: '',
-      sortBy: '',
-    });
-    const { createMessage, createConfirm } = useMessage();
-    const [registerAddModal, { openModal: openAddModal }] = useModal();
-    const [registerEditModal, { openModal: openEditModal }] = useModal();
-    const [registerTable, { reload }] = useTable({
-      api: logList,
-      title: t('routes.equity.listTitle'),
-      titleHelpMessage: [t('routes.equity.titleHelpMessage.1'), t('routes.equity.titleHelpMessage.2'),t('routes.equity.titleHelpMessage.3'),],
-      columns: columns,
-      useSearchForm: true,
-      formConfig: searchForm,
-      showTableSetting: true,
-      showIndexColumn: false,
-      rowKey: 'id',
-      beforeFetch: (params) => {
-        let searchData = {
-          orderSn: params.orderSn,
-          payTimeStart: params.payTime && params.payTime[0],
-          payTimeEnd: params.payTime && params.payTime[1],
-          invoiceTimeStart: params.invoiceTime && params.invoiceTime[0],
-          invoiceTimeEnd: params.invoiceTime && params.invoiceTime[1],
-        };
-        apiData.orderSn = searchData.orderSn;
-        apiData.payTimeStart = searchData.payTimeStart;
-        apiData.payTimeEnd = searchData.payTimeEnd;
-        apiData.invoiceTimeStart = searchData.invoiceTimeStart;
-        apiData.invoiceTimeEnd = searchData.invoiceTimeEnd;
-        return {
-          ...params,
-          ...searchData,
-        };
-      },
-      fetchSetting: {
-        pageField: 'pageNum',
-        sizeField: 'pageSize',
-        listField: 'list',
-        totalField: 'total',
-      },
-      canResize: false,
-    });
-    function handleDelete(record: Recordable) {
-      console.log('点击了删除', record);
-    }
-    function handleInvoice(record: Recordable) {
-      openAddModal(true, {
-        ...record,
+  interface apiDataParam {
+    orderSn?: string;
+    payTimeStart?: string;
+    payTimeEnd?: string;
+    invoiceTimeStart?: string;
+    invoiceTimeEnd?: string;
+    orderBy?: string;
+    sortBy?: string;
+  }
+  interface GrowCardItem {
+    icon: string;
+    title: string;
+    value: number;
+    unit: string;
+    color: string;
+    action: string;
+  }
+  export default defineComponent({
+    components: {
+      AddModal,
+      GrowCard,
+      EditModal,
+      BasicTable,
+      TableAction,
+      PageWrapper,
+      TableImg,
+      [Descriptions.name]: Descriptions,
+      [Descriptions.Item.name]: Descriptions.Item,
+    },
+    setup() {
+      const { t } = useI18n();
+      const loading = ref(true);
+      const growCardList = ref<GrowCardItem[]>([]);
+      const localeStore = useLocaleStore();
+      const isEn = computed(() => localeStore.getLocale === 'en');
+      onMounted(async () => {
+        const { lastDownNum = 0, lastHighNum = 0, lastMajorNum = 0 } = await logData({});
+        loading.value = false;
+        growCardList.value = [
+          {
+            title: t('routes.equity.CardMajorNum'),
+            // icon: 'fa6-solid:users-gear',
+            icon: 'visit-count|svg',
+            value: lastMajorNum || 0,
+            unit: t('routes.equity.unit.-1'),
+            color: 'blue',
+            action: t('routes.equity.unit.-2'),
+          },
+          {
+            title: t('routes.equity.CardHighNum'),
+            icon: 'akar-icons:person-add',
+            value: lastHighNum || 0,
+            unit: t('routes.equity.unit.-2'),
+            color: 'blue',
+            action: t('routes.equity.unit.-2'),
+          },
+          {
+            title: t('routes.equity.CardDownNum'),
+            icon: 'carbon:user-role',
+            value: lastDownNum || 0,
+            unit: t('routes.equity.unit.2'),
+            color: 'blue',
+            action: t('routes.equity.unit.-2'),
+          },
+        ];
       });
       });
-    }
-    function handleEdit(record: Recordable) {
-      console.log('record', record);
-    }
-    function headleDetails(record: Recordable) {
-      console.log('record', record);
-      openEditModal(true, {
-        ...record,
+      const permissionStore = usePermissionStore();
+      const { getCheckPerm } = permissionStore;
+      const apiData = reactive<apiDataParam>({
+        orderSn: '',
+        payTimeStart: '',
+        payTimeEnd: '',
+        invoiceTimeStart: '',
+        invoiceTimeEnd: '',
+        orderBy: '',
+        sortBy: '',
       });
       });
-    }
-    function exportExcel() {
-      createConfirm({
-        iconType: 'warning',
-        title: () => h('span', t('common.reminder')),
-        content: () => h('span', t('routes.equity.excelTitle')),
-        onOk: async () => {
-          await DownExport({
-            ...apiData,
-            lang:isEn.value?'en':'cn'
-          });
+      const { createMessage, createConfirm } = useMessage();
+      const [registerAddModal, { openModal: openAddModal }] = useModal();
+      const [registerEditModal, { openModal: openEditModal }] = useModal();
+      const [registerTable, { reload }] = useTable({
+        api: logList,
+        title: t('routes.equity.listTitle'),
+        titleHelpMessage: [
+          t('routes.equity.titleHelpMessage.1'),
+          t('routes.equity.titleHelpMessage.2'),
+          t('routes.equity.titleHelpMessage.3'),
+        ],
+        columns: columns,
+        useSearchForm: true,
+        formConfig: searchForm,
+        showTableSetting: true,
+        showIndexColumn: false,
+        rowKey: 'id',
+        beforeFetch: (params) => {
+          let searchData = {
+            orderSn: params.orderSn,
+            payTimeStart: params.payTime && params.payTime[0],
+            payTimeEnd: params.payTime && params.payTime[1],
+            invoiceTimeStart: params.invoiceTime && params.invoiceTime[0],
+            invoiceTimeEnd: params.invoiceTime && params.invoiceTime[1],
+          };
+          apiData.orderSn = searchData.orderSn;
+          apiData.payTimeStart = searchData.payTimeStart;
+          apiData.payTimeEnd = searchData.payTimeEnd;
+          apiData.invoiceTimeStart = searchData.invoiceTimeStart;
+          apiData.invoiceTimeEnd = searchData.invoiceTimeEnd;
+          return {
+            ...params,
+            ...searchData,
+          };
         },
         },
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
+        },
+        canResize: false,
       });
       });
-    }
-    return {
-      registerTable,
-      handleDelete,
-      registerAddModal,
-      registerEditModal,
-      handleInvoice,
-      exportExcel,
-      handleEdit,
-      headleDetails,
-      reload,
-      getCheckPerm,
-      loading,
-      growCardList,
-      t,
-    };
-  },
-});
-</script>
+      function handleDelete(record: Recordable) {
+        console.log('点击了删除', record);
+      }
+      function handleInvoice(record: Recordable) {
+        openAddModal(true, {
+          ...record,
+        });
+      }
+      function handleEdit(record: Recordable) {
+        console.log('record', record);
+      }
+      function headleDetails(record: Recordable) {
+        console.log('record', record);
+        openEditModal(true, {
+          ...record,
+        });
+      }
+      function exportExcel() {
+        createConfirm({
+          iconType: 'warning',
+          title: () => h('span', t('common.reminder')),
+          content: () => h('span', t('routes.equity.excelTitle')),
+          onOk: async () => {
+            await DownExport({
+              ...apiData,
+              lang: isEn.value ? 'en' : 'cn',
+            });
+          },
+        });
+      }
+      return {
+        registerTable,
+        handleDelete,
+        registerAddModal,
+        registerEditModal,
+        handleInvoice,
+        exportExcel,
+        handleEdit,
+        headleDetails,
+        reload,
+        getCheckPerm,
+        loading,
+        growCardList,
+        t,
+      };
+    },
+  });
+</script>

+ 120 - 94
src/views/home/condition.vue

@@ -2,17 +2,25 @@
   <div class="condition">
   <div class="condition">
     <div class="selct" style="display: inline-block">
     <div class="selct" style="display: inline-block">
       <!-- <span style="margin-right:15px"></span> -->
       <!-- <span style="margin-right:15px"></span> -->
-      <Select v-if="!cameraType"
+      <Select
+        v-if="!cameraType"
         v-model:value="type"
         v-model:value="type"
         style="width: 100px; margin-right: 15px"
         style="width: 100px; margin-right: 15px"
         placeholder="请选择类型"
         placeholder="请选择类型"
         :options="typeOptions"
         :options="typeOptions"
         @change="handleType"
         @change="handleType"
-      ></Select>
+      />
     </div>
     </div>
 
 
-    <div class="selct" style="display: inline-block; margin-right: 15px;width: 220px;">
-      <RangePicker v-model:value="selectTime" @calendarChange="calendarPriceRangeChange" valueFormat="YYYY-MM-DD" :disabled-date="disabledDate" format="YYYY-MM-DD" @change="handleTime"/>
+    <div class="selct" style="display: inline-block; margin-right: 15px; width: 220px">
+      <RangePicker
+        v-model:value="selectTime"
+        @calendarChange="calendarPriceRangeChange"
+        valueFormat="YYYY-MM-DD"
+        :disabled-date="disabledDate"
+        format="YYYY-MM-DD"
+        @change="handleTime"
+      />
     </div>
     </div>
 
 
     <div class="selct" style="display: inline-block" v-if="!typeShow">
     <div class="selct" style="display: inline-block" v-if="!typeShow">
@@ -23,106 +31,124 @@
         placeholder="请选择颗粒度"
         placeholder="请选择颗粒度"
         :options="options"
         :options="options"
         @change="handleData"
         @change="handleData"
-      ></Select>
+      />
     </div>
     </div>
     <a-button type="primary" @click="but">导出</a-button>
     <a-button type="primary" @click="but">导出</a-button>
   </div>
   </div>
 </template>
 </template>
 <script lang="ts" setup>
 <script lang="ts" setup>
-import { ref, Ref, defineEmits } from 'vue';
-const emit = defineEmits(["alertSome"])
-import { Select, DatePicker } from 'ant-design-vue';
-const { RangePicker } = DatePicker;
-// import type { dataItemType } from './props';
-import type { Dayjs } from 'dayjs';
-import dayjs from 'dayjs';
-const props = defineProps({
-  loading: Boolean,
-  typeShow: Boolean,
-  type: String,
-  timeType: String,
-  name:Object,
-  selectTimeType:Number,
-  cameraType:Boolean,
-});
+  import { ref, Ref, defineEmits } from 'vue';
+  const emit = defineEmits(['alertSome', 'change', 'expor']);
+  import { Select, DatePicker } from 'ant-design-vue';
+  const { RangePicker } = DatePicker;
+  // import type { dataItemType } from './props';
+  import type { Dayjs } from 'dayjs';
+  import dayjs from 'dayjs';
+  const props = defineProps({
+    loading: Boolean,
+    typeShow: Boolean,
+    type: String,
+    timeType: String,
+    name: Object,
+    selectTimeType: Number,
+    cameraType: Boolean,
+  });
+
 
 
-type RangeValue = [Dayjs, Dayjs];
-const picker = ref('date');
-const type = ref(props.timeType ||'0');
-const value = ref(props.type ||'2');
-const isUserDate =ref(false);
-const selectPriceDate = ref(dayjs().subtract(6,'month').format('YYYY-MM-DD'))
-const selectTime = ref<RangeValue>([dayjs().subtract(props.selectTimeType == 1 ? 1:6,'month').format('YYYY-MM-DD'), dayjs().format('YYYY-MM-DD')]);
-const options = ref<SelectProps['options']>([
-  {
-    value: '0',
-    label: '日',
-  },
-  {
-    value: '1',
-    label: '周',
-  },
-  {
-    value: '2',
-    label: '月',
-  },
-]);
-const disabledDate = (current: Dayjs) => {
-    if(selectPriceDate.value){
-        return current >dayjs(selectPriceDate.value).add(2,'year')  || current < dayjs(selectPriceDate.value).subtract(2,'year')
-    }else{
-        return false
+  type RangeValue = [Dayjs, Dayjs];
+  const picker = ref('date');
+  const type = ref(props.timeType || '0');
+  const value = ref(props.type || '2');
+  const isUserDate = ref(false);
+  const selectPriceDate = ref(dayjs().subtract(6, 'month').format('YYYY-MM-DD'));
+  const selectTime = ref<RangeValue>([
+    dayjs()
+      .subtract(props.selectTimeType == 1 ? 1 : 6, 'month')
+      .format('YYYY-MM-DD'),
+    dayjs().format('YYYY-MM-DD'),
+  ]);
+  const options = ref<SelectProps['options']>([
+    {
+      value: '0',
+      label: '日',
+    },
+    {
+      value: '1',
+      label: '周',
+    },
+    {
+      value: '2',
+      label: '月',
+    },
+  ]);
+  const disabledDate = (current: Dayjs) => {
+    if (selectPriceDate.value) {
+      return (
+        current > dayjs(selectPriceDate.value).add(2, 'year') ||
+        current < dayjs(selectPriceDate.value).subtract(2, 'year')
+      );
+    } else {
+      return false;
+    }
+  };
+  const typeOptions = ref<SelectProps['options']>([
+    {
+      value: '0',
+      label: (props.name && props.name[0]) || '四维看看',
+    },
+    {
+      value: '1',
+      label: (props.name && props.name[1]) || '四维看见',
+    },
+    {
+      value: '2',
+      label: (props.name && props.name[2]) || '四维深时',
+    },
+    {
+      value: '3',
+      label: (props.name && props.name[3]) || '四维深光',
+    },
+  ]);
+  function calendarPriceRangeChange(date) {
+    selectPriceDate.value = date[0];
+  }
+  function handleData(val) {
+    value.value = val;
+    if (!isUserDate.value) {
+      selectTime.value = [
+        dayjs()
+          .subtract(value.value == '0' ? 1 : 6, 'month')
+          .format('YYYY-MM-DD'),
+        dayjs().format('YYYY-MM-DD'),
+      ];
     }
     }
-};
-const typeOptions = ref<SelectProps['options']>([
-  {
-    value: '0',
-    label: props.name && props.name[0] || '四维看看',
-  },
-  {
-    value: '1',
-    label: props.name && props.name[1] || '四维看见',
-  },
-  {
-    value: '2',
-    label: props.name && props.name[2] || '四维深时',
-  },
-]);
-function calendarPriceRangeChange(date){
-  selectPriceDate.value = date[0]
-}
-function handleData(val) {
-  value.value = val
-  if(!isUserDate.value){
-    selectTime.value = [dayjs().subtract(value.value == '0' ? 1:6,'month').format('YYYY-MM-DD'), dayjs().format('YYYY-MM-DD')];
+    output();
   }
   }
-  output()
-}
 
 
-function handleType(val) {
-  type.value = val
-  output()
-}
+  function handleType(val) {
+    type.value = val;
+    output();
+  }
 
 
-function handleTime(val) {
-  selectTime.value = val
-  isUserDate.value = true
-  output()
-}
-function but(){
-  if(!props.typeShow){
-    emit('expor',type)
-  }else{
-    emit('expor')
+  function handleTime(val) {
+    selectTime.value = val;
+    isUserDate.value = true;
+    output();
+  }
+  function but() {
+    if (!props.typeShow) {
+      emit('expor', type);
+    } else {
+      emit('expor');
+    }
   }
   }
-}
-function output(){
-  let data = {
-    startTime:selectTime.value[0],
-    endTime:selectTime.value[1],
-    type:value.value,
-    cameraType:type.value,
+  function output() {
+    let data = {
+      startTime: selectTime.value[0],
+      endTime: selectTime.value[1],
+      type: value.value,
+      cameraType: type.value,
+    };
+    emit('change', data);
   }
   }
-  emit('change',data)
-}
 </script>
 </script>

+ 169 - 169
src/views/home/faultType.vue

@@ -7,187 +7,187 @@
   </Card>
   </Card>
 </template>
 </template>
 <script lang="ts" setup>
 <script lang="ts" setup>
-import condition from './condition.vue';
-import { Card } from 'ant-design-vue';
-import { ref, Ref, onMounted, reactive } from 'vue';
-import { exportElsxFile } from '/@/utils/file/download';
-import dayjs from 'dayjs';
-import { workTrend } from '/@/api/home/index';
-import { useECharts } from '/@/hooks/web/useECharts';
-const chartPieRef = ref<HTMLDivElement | null>(null);
-const { setOptions } = useECharts(chartPieRef as Ref<HTMLDivElement>);
-const colorList = ['#38a0ff', '#4cca73', '#FDD56A', '#d58b55', '#c8ffff'];
-let SearchData = reactive({
-  startTime: dayjs().subtract(6, 'month').format('YYYY-MM-DD'),
-  endTime: dayjs().format('YYYY-MM-DD'),
-  cameraType: '0',
-});
-var rich = {
-  name: {
-    color: '#666666',
-    fontSize: 14,
-    padding: [8, 30, 0, 30],
-    fontWeight: '400',
-    align: 'left',
-  },
-  value: {
-    color: '#333',
-    fontSize: 15,
-    padding: [0, 30, 8, 30],
-    fontWeight: '500',
-    align: 'left',
-  },
-  percent: {
-    color: '#FFF',
-    align: 'right',
-    fontSize: 15,
-    fontWeight: '500',
-    //padding: [0, 5]
-  },
-  hr: {
-    borderColor: '#DFDFDF',
-    width: '100%',
-    borderWidth: 1,
-    height: 0,
-  },
-  cir: {
-    fontSize: 26,
-  },
-};
-let echartData = reactive({
-  ydata: [],
-  xdata: [],
-});
-var ydata = [
-  {
-    name: '财务管理决策实训',
-    value: 18,
-  },
-];
-var color = [
-  '#8d7fec',
-  '#5085f2',
-  '#e75fc3',
-  '#f87be2',
-  '#f2719a',
-  '#fca4bb',
-  '#f59a8f',
-  '#fdb301',
-  '#57e7ec',
-  '#cf9ef1',
-];
-var xdata = ['财务管理决策实训'];
-function handlesetOptions() {
-  setOptions({
-    tooltip: {
-      trigger: 'item',
-      formatter: '{b}<br/>数量 : {c} ({d}%)',
+  import condition from './condition.vue';
+  import { Card } from 'ant-design-vue';
+  import { ref, Ref, onMounted, reactive } from 'vue';
+  import { exportElsxFile } from '/@/utils/file/download';
+  import dayjs from 'dayjs';
+  import { workTrend } from '/@/api/home/index';
+  import { useECharts } from '/@/hooks/web/useECharts';
+  const chartPieRef = ref<HTMLDivElement | null>(null);
+  const { setOptions } = useECharts(chartPieRef as Ref<HTMLDivElement>);
+  const colorList = ['#38a0ff', '#4cca73', '#FDD56A', '#d58b55', '#c8ffff'];
+  let SearchData = reactive({
+    startTime: dayjs().subtract(6, 'month').format('YYYY-MM-DD'),
+    endTime: dayjs().format('YYYY-MM-DD'),
+    cameraType: '0',
+  });
+  var rich = {
+    name: {
+      color: '#666666',
+      fontSize: 14,
+      padding: [8, 30, 0, 30],
+      fontWeight: '400',
+      align: 'left',
     },
     },
-    legend: {
-      // orient: 'vartical',
-      // x: 'left',
-      orient: 'vertical',
-      type: 'scroll',
-      top: 'center',
-      left: '60%',
-      bottom: '0%',
-      data: echartData.xdata,
-      itemWidth: 8,
-      itemHeight: 8,
-      itemGap: 16,
-      formatter: function (name) {
-        return '' + name;
-      },
+    value: {
+      color: '#333',
+      fontSize: 15,
+      padding: [0, 30, 8, 30],
+      fontWeight: '500',
+      align: 'left',
     },
     },
-    series: [
-      {
-        type: 'pie',
-        clockwise: false, //饼图的扇区是否是顺时针排布
-        minAngle: 2, //最小的扇区角度(0 ~ 360)
-        center: ['30%', '50%'],
-        avoidLabelOverlap: false,
-        itemStyle: {
-          //图形样式
-          normal: {
-            borderColor: '#ffffff',
-            borderWidth: 4,
-          },
+    percent: {
+      color: '#FFF',
+      align: 'right',
+      fontSize: 15,
+      fontWeight: '500',
+      //padding: [0, 5]
+    },
+    hr: {
+      borderColor: '#DFDFDF',
+      width: '100%',
+      borderWidth: 1,
+      height: 0,
+    },
+    cir: {
+      fontSize: 26,
+    },
+  };
+  let echartData = reactive({
+    ydata: [],
+    xdata: [],
+  });
+  var ydata = [
+    {
+      name: '财务管理决策实训',
+      value: 18,
+    },
+  ];
+  var color = [
+    '#8d7fec',
+    '#5085f2',
+    '#e75fc3',
+    '#f87be2',
+    '#f2719a',
+    '#fca4bb',
+    '#f59a8f',
+    '#fdb301',
+    '#57e7ec',
+    '#cf9ef1',
+  ];
+  var xdata = ['财务管理决策实训'];
+  function handlesetOptions() {
+    setOptions({
+      tooltip: {
+        trigger: 'item',
+        formatter: '{b}<br/>数量 : {c} ({d}%)',
+      },
+      legend: {
+        // orient: 'vartical',
+        // x: 'left',
+        orient: 'vertical',
+        type: 'scroll',
+        top: 'center',
+        left: '60%',
+        bottom: '0%',
+        data: echartData.xdata,
+        itemWidth: 8,
+        itemHeight: 8,
+        itemGap: 16,
+        formatter: function (name) {
+          return '' + name;
         },
         },
-        label: {
-          normal: {
-            show: false,
-            position: 'center',
-            formatter: '',
-            rich: {
-              text: {
-                color: '#666',
-                fontSize: 14,
-                align: 'center',
-                verticalAlign: 'middle',
-                padding: 8,
+      },
+      series: [
+        {
+          type: 'pie',
+          clockwise: false, //饼图的扇区是否是顺时针排布
+          minAngle: 2, //最小的扇区角度(0 ~ 360)
+          center: ['30%', '50%'],
+          avoidLabelOverlap: false,
+          itemStyle: {
+            //图形样式
+            normal: {
+              borderColor: '#ffffff',
+              borderWidth: 4,
+            },
+          },
+          label: {
+            normal: {
+              show: false,
+              position: 'center',
+              formatter: '',
+              rich: {
+                text: {
+                  color: '#666',
+                  fontSize: 14,
+                  align: 'center',
+                  verticalAlign: 'middle',
+                  padding: 8,
+                },
+                value: {
+                  color: '#8693F3',
+                  fontSize: 24,
+                  align: 'center',
+                  verticalAlign: 'middle',
+                },
               },
               },
-              value: {
-                color: '#8693F3',
+            },
+            emphasis: {
+              show: true,
+              textStyle: {
                 fontSize: 24,
                 fontSize: 24,
-                align: 'center',
-                verticalAlign: 'middle',
               },
               },
             },
             },
           },
           },
-          emphasis: {
-            show: true,
-            textStyle: {
-              fontSize: 24,
-            },
-          },
+          data: echartData.ydata,
         },
         },
-        data: echartData.ydata,
-      },
-    ],
-    color: colorList,
-    backgroundColor: '#fff',
-  });
-}
-async function getList() {
-  const res = await workTrend(SearchData);
-  let exdata = [],
-    eydata = [];
-  res.map((ele) => {
-    exdata.push(ele.groupKey2);
-    eydata.push({
-      name: ele.groupKey2,
-      value: ele.count,
+      ],
+      color: colorList,
+      backgroundColor: '#fff',
     });
     });
-  });
-  echartData.xdata = exdata;
-  echartData.ydata = eydata;
-  handlesetOptions();
-}
-function Search(val) {
-  SearchData = val;
-  getList();
-}
-function handleExport() {
-  let fields = {
-    time: '保修类型',
-    num: '数量',
-  };
-  let data = echartData.ydata.map((ele) => {
-    return {
-      time: ele.name,
-      num: ele.value || 0,
+  }
+  async function getList() {
+    const res = await workTrend(SearchData);
+    let exdata = [],
+      eydata = [];
+    res.map((ele) => {
+      exdata.push(ele.groupKey2);
+      eydata.push({
+        name: ele.groupKey2,
+        value: ele.count,
+      });
+    });
+    echartData.xdata = exdata;
+    echartData.ydata = eydata;
+    handlesetOptions();
+  }
+  function Search(val) {
+    SearchData = val;
+    getList();
+  }
+  function handleExport() {
+    let fields = {
+      time: '保修类型',
+      num: '数量',
     };
     };
-  });
-  exportElsxFile(data, fields, '故障类型统计');
-}
+    let data = echartData.ydata.map((ele) => {
+      return {
+        time: ele.name,
+        num: ele.value || 0,
+      };
+    });
+    exportElsxFile(data, fields, '故障类型统计');
+  }
 
 
-onMounted(() => {
-  getList();
-});
+  onMounted(() => {
+    getList();
+  });
 </script>
 </script>
 <style lang="less" scoped>
 <style lang="less" scoped>
-.piechart {
-  width: 100%;
-  height: 100%;
-}
+  .piechart {
+    width: 100%;
+    height: 100%;
+  }
 </style>
 </style>

+ 12 - 13
src/views/home/index.vue

@@ -2,21 +2,20 @@
   <div class="p-4">
   <div class="p-4">
     <lineEcharts title="工单趋势统计" class="!my-4 enter-y" />
     <lineEcharts title="工单趋势统计" class="!my-4 enter-y" />
     <div class="md:flex !my-4 enter-y">
     <div class="md:flex !my-4 enter-y">
-      <faultType class="md:w-1/2 w-full !md:mt-0 !mt-4 !md:mr-2"></faultType>
-      <pieEchart class="md:w-1/2 w-full !md:mt-0 !mt-4 !md:ml-2"></pieEchart>
+      <faultType class="md:w-1/2 w-full !md:mt-0 !mt-4 !md:mr-2" />
+      <pieEchart class="md:w-1/2 w-full !md:mt-0 !mt-4 !md:ml-2" />
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
 <script lang="ts" setup>
 <script lang="ts" setup>
-import { ref, onMounted, reactive } from 'vue';
-// import { workTrend, sceneTrend } from '/@/api/home/index';
-import orderEchart from './orderEchart.vue';
-import pieEchart from './pieEchart.vue'
-import lineEcharts from './lineEcharts.vue';
-import faultType from './faultType.vue'
-onMounted(() => {
-  // getData();
-  // getList();
-});
+  import { ref, onMounted, reactive } from 'vue';
+  // import { workTrend, sceneTrend } from '/@/api/home/index';
+  import orderEchart from './orderEchart.vue';
+  import pieEchart from './pieEchart.vue';
+  import lineEcharts from './lineEcharts.vue';
+  import faultType from './faultType.vue';
+  onMounted(() => {
+    // getData();
+    // getList();
+  });
 </script>
 </script>
-

+ 130 - 130
src/views/home/lineEcharts.vue

@@ -7,141 +7,141 @@
   </Card>
   </Card>
 </template>
 </template>
 <script lang="ts" setup>
 <script lang="ts" setup>
-import { Card } from 'ant-design-vue';
-import { ref, Ref, watch, onMounted, reactive } from 'vue';
-import { volumeTrend } from '/@/api/home/index';
-import condition from './condition.vue';
-import dayjs from 'dayjs';
-import { useECharts } from '/@/hooks/web/useECharts';
-import { exportElsxFile } from '/@/utils/file/download';
-import { useI18n } from '/@/hooks/web/useI18n';
-const props = defineProps({
-  loading: Boolean,
-  title: String,
-});
-const { t } = useI18n();
-let SearchData = reactive({
-  startTime: dayjs().subtract(6, 'month').format('YYYY-MM-DD'),
-  endTime: dayjs().format('YYYY-MM-DD'),
-  type: '2',
-  cameraType: '0',
-});
-const viewStaticsData = ref({
-  kjList: [],
-  kkList: [],
-  ssList: [],
-});
-const shareStaticsData = ref<number[]>([]);
-const yixStringData = ref<string[]>([]);
-const maxSize = ref(0);
-const chartRef = ref<HTMLDivElement | null>(null);
-const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
-onMounted(() => {
-  getAddUser();
-});
-function handleChange(val) {
-  console.log('handleChange', val);
-  SearchData = val;
-  getAddUser();
-}
-function Search(val) {
-  SearchData = val;
-  getAddUser();
-}
-function handleExport() {
-  console.log('props', props.title);
-  let fields = {
-    time: '日期',
-    kankan: t('routes.scene.tableType.0'),
-    kanjian: t('routes.scene.tableType.1'),
-    shenshi: t('routes.scene.tableType.2'),
-  };
-  let data = yixStringData.value.map((ele, index) => {
-    return {
-      time: ele,
-      kankan: (viewStaticsData.value && viewStaticsData.value.kkList[index]) || 0,
-      kanjian: (viewStaticsData.value && viewStaticsData.value.kjList[index]) || 0,
-      shenshi: (viewStaticsData.value && viewStaticsData.value.ssList[index]) || 0,
-    };
+  import { Card } from 'ant-design-vue';
+  import { ref, Ref, watch, onMounted, reactive } from 'vue';
+  import { volumeTrend } from '/@/api/home/index';
+  import condition from './condition.vue';
+  import dayjs from 'dayjs';
+  import { useECharts } from '/@/hooks/web/useECharts';
+  import { exportElsxFile } from '/@/utils/file/download';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  const props = defineProps({
+    loading: Boolean,
+    title: String,
+  });
+  const { t } = useI18n();
+  let SearchData = reactive({
+    startTime: dayjs().subtract(6, 'month').format('YYYY-MM-DD'),
+    endTime: dayjs().format('YYYY-MM-DD'),
+    type: '2',
+    cameraType: '0',
   });
   });
-  exportElsxFile(data, fields, props.title);
-}
-async function getAddUser() {
-  let xdata = [],
-  kj = [],
-  kk = [],
-  ss = [];
-  let apiSrc = volumeTrend;
-  let { kjList = [], kkList = [], ssList = [], } = await apiSrc(SearchData);
-  kjList.map((ele) => {
-    xdata.push(ele.groupKey);
-    kj.push(ele.count);
+  const viewStaticsData = ref({
+    kjList: [],
+    kkList: [],
+    ssList: [],
   });
   });
-  kk = kkList.map(ele => ele.count)
-  ss = ssList.map(ele => ele.count)
-  yixStringData.value = xdata;
-  viewStaticsData.value.kjList = kj;
-  viewStaticsData.value.kkList = kk;
-  viewStaticsData.value.ssList = ss;
-  handlesetOptions();
-}
-function handlesetOptions() {
-  setOptions({
-    tooltip: {
-      trigger: 'axis',
-      axisPointer: {
-        lineStyle: {
-          width: 1,
-          color: '#019680',
+  const shareStaticsData = ref<number[]>([]);
+  const yixStringData = ref<string[]>([]);
+  const maxSize = ref(0);
+  const chartRef = ref<HTMLDivElement | null>(null);
+  const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
+  onMounted(() => {
+    getAddUser();
+  });
+  function handleChange(val) {
+    console.log('handleChange', val);
+    SearchData = val;
+    getAddUser();
+  }
+  function Search(val) {
+    SearchData = val;
+    getAddUser();
+  }
+  function handleExport() {
+    console.log('props', props.title);
+    let fields = {
+      time: '日期',
+      kankan: t('routes.scene.tableType.0'),
+      kanjian: t('routes.scene.tableType.1'),
+      shenshi: t('routes.scene.tableType.2'),
+    };
+    let data = yixStringData.value.map((ele, index) => {
+      return {
+        time: ele,
+        kankan: (viewStaticsData.value && viewStaticsData.value.kkList[index]) || 0,
+        kanjian: (viewStaticsData.value && viewStaticsData.value.kjList[index]) || 0,
+        shenshi: (viewStaticsData.value && viewStaticsData.value.ssList[index]) || 0,
+      };
+    });
+    exportElsxFile(data, fields, props.title);
+  }
+  async function getAddUser() {
+    let xdata = [],
+      kj = [],
+      kk = [],
+      ss = [];
+    let apiSrc = volumeTrend;
+    let { kjList = [], kkList = [], ssList = [] } = await apiSrc(SearchData);
+    kjList.map((ele) => {
+      xdata.push(ele.groupKey);
+      kj.push(ele.count);
+    });
+    kk = kkList.map((ele) => ele.count);
+    ss = ssList.map((ele) => ele.count);
+    yixStringData.value = xdata;
+    viewStaticsData.value.kjList = kj;
+    viewStaticsData.value.kkList = kk;
+    viewStaticsData.value.ssList = ss;
+    handlesetOptions();
+  }
+  function handlesetOptions() {
+    setOptions({
+      tooltip: {
+        trigger: 'axis',
+        axisPointer: {
+          lineStyle: {
+            width: 1,
+            color: '#019680',
+          },
         },
         },
       },
       },
-    },
-    legend: {
-      orient: 'horizontal',
-      bottom: 0,
-    },
-    xAxis: {
-      type: 'category',
-      data: yixStringData.value,
-    },
-    yAxis: {
-      name: '数量',
-      type: 'value',
-      splitNumber: 4,
-    },
-    series: [
-      {
-        data: viewStaticsData.value.kkList,
-        type: 'line',
-        itemStyle: { color: '#38a0ff' },
-        name: t('routes.scene.tableType.0'),
+      legend: {
+        orient: 'horizontal',
+        bottom: 0,
       },
       },
-      {
-        data: viewStaticsData.value.kjList,
-        type: 'line',
-        itemStyle: { color: '#4cca73' },
-        name: t('routes.scene.tableType.1'),
+      xAxis: {
+        type: 'category',
+        data: yixStringData.value,
       },
       },
-      {
-        data: viewStaticsData.value.ssList,
-        type: 'line',
-        itemStyle: { color: '#FDD56A' },
-        name: t('routes.scene.tableType.2'),
+      yAxis: {
+        name: '数量',
+        type: 'value',
+        splitNumber: 4,
       },
       },
-    ],
-  });
-}
-watch(
-  () => props.loading,
-  () => {
-    // const maxNumber = Math.max(...viewStaticsData.value.concat(shareStaticsData.value));
-    // const pow = Math.pow(10, maxNumber.toString().length - 1);
-    // maxSize.value = maxNumber > 10 ? Math.floor(maxNumber / 10) * 10 + pow * 2 : 10;
-    handlesetOptions();
-  },
-  {
-    immediate: true,
-    deep: true,
-  },
-);
+      series: [
+        {
+          data: viewStaticsData.value.kkList,
+          type: 'line',
+          itemStyle: { color: '#38a0ff' },
+          name: t('routes.scene.tableType.0'),
+        },
+        {
+          data: viewStaticsData.value.kjList,
+          type: 'line',
+          itemStyle: { color: '#4cca73' },
+          name: t('routes.scene.tableType.1'),
+        },
+        {
+          data: viewStaticsData.value.ssList,
+          type: 'line',
+          itemStyle: { color: '#FDD56A' },
+          name: t('routes.scene.tableType.2'),
+        },
+      ],
+    });
+  }
+  watch(
+    () => props.loading,
+    () => {
+      // const maxNumber = Math.max(...viewStaticsData.value.concat(shareStaticsData.value));
+      // const pow = Math.pow(10, maxNumber.toString().length - 1);
+      // maxSize.value = maxNumber > 10 ? Math.floor(maxNumber / 10) * 10 + pow * 2 : 10;
+      handlesetOptions();
+    },
+    {
+      immediate: true,
+      deep: true,
+    },
+  );
 </script>
 </script>

+ 45 - 39
src/views/home/orderEchart.vue

@@ -1,7 +1,13 @@
- <template>
-  <Card :title="title||'订单数据统计'">
+<template>
+  <Card :title="title || '订单数据统计'">
     <template #extra>
     <template #extra>
-      <condition type="2" :typeShow="title=='相机出库数量统计'" :name="title=='订单数据统计'?{1:'金额',0:'数量'}:{}" @change="Search" @expor="expor" />
+      <condition
+        type="2"
+        :typeShow="title == '相机出库数量统计'"
+        :name="title == '订单数据统计' ? { 1: '金额', 0: '数量' } : {}"
+        @change="Search"
+        @expor="expor"
+      />
     </template>
     </template>
     <div ref="chartRef" :style="{ height, width }"></div>
     <div ref="chartRef" :style="{ height, width }"></div>
   </Card>
   </Card>
@@ -12,47 +18,47 @@
   import { Card, DatePicker } from 'ant-design-vue';
   import { Card, DatePicker } from 'ant-design-vue';
   import { ref, Ref, watch, defineEmits } from 'vue';
   import { ref, Ref, watch, defineEmits } from 'vue';
   import { useECharts } from '/@/hooks/web/useECharts';
   import { useECharts } from '/@/hooks/web/useECharts';
-  import { exportElsxFile, } from '/@/utils/file/download';
+  import { exportElsxFile } from '/@/utils/file/download';
   const props = defineProps({
   const props = defineProps({
-  loading: Boolean,
+    loading: Boolean,
     ...basicProps,
     ...basicProps,
   });
   });
-  const emit = defineEmits(["alertSome"])
+  const emit = defineEmits(['alertSome']);
   const downOrderData = ref<number[]>([]);
   const downOrderData = ref<number[]>([]);
   const incrementOrderData = ref<number[]>([]);
   const incrementOrderData = ref<number[]>([]);
   const partsOrderData = ref<number[]>([]);
   const partsOrderData = ref<number[]>([]);
   const yixStringData = ref<string[]>([]);
   const yixStringData = ref<string[]>([]);
-  const echartTypr = ref('line')
-  const nameList = ref<string[]>(['全景图','三维场景','综合作品']);
+  const echartTypr = ref('line');
+  const nameList = ref<string[]>(['全景图', '三维场景', '综合作品']);
   const maxSize = ref(0);
   const maxSize = ref(0);
   const chartRef = ref<HTMLDivElement | null>(null);
   const chartRef = ref<HTMLDivElement | null>(null);
-  const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>)
+  const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
 
 
-  function Search(val){
-    emit('change',val)
+  function Search(val) {
+    emit('change', val);
   }
   }
-  function expor(val){
+  function expor(val) {
     // emit('expor',val)
     // emit('expor',val)
-    let hader = ['时间', ...nameList.value]
-    console.log('数量',hader,val)
-    let fields  = {
-      'time':'日期',
-      '1':hader[1],
-      '2':hader[2],
-      '3':hader[3],
+    let hader = ['时间', ...nameList.value];
+    console.log('数量', hader, val);
+    let fields = {
+      time: '日期',
+      '1': hader[1],
+      '2': hader[2],
+      '3': hader[3],
+    };
+    if (props.title == '订单数据统计' && val?.value) {
+      fields.time = `${val.value == 0 ? '数量/' : '金额/'}` + fields.time;
     }
     }
-    if(props.title=='订单数据统计' && val?.value){
-      fields.time = `${val.value == 0?'数量/':'金额/'}` + fields.time
-    }
-    let data = yixStringData.value.map((ele,index) => {
+    let data = yixStringData.value.map((ele, index) => {
       return {
       return {
-        'time':ele,
-        '1':downOrderData.value && downOrderData.value[index] || 0,
-        '2':incrementOrderData.value && incrementOrderData.value[index] || 0,
-        '3':partsOrderData.value && partsOrderData.value[index] || 0,
-      }
-    })
-    exportElsxFile(data,fields,props.title)
+        time: ele,
+        '1': (downOrderData.value && downOrderData.value[index]) || 0,
+        '2': (incrementOrderData.value && incrementOrderData.value[index]) || 0,
+        '3': (partsOrderData.value && partsOrderData.value[index]) || 0,
+      };
+    });
+    exportElsxFile(data, fields, props.title);
   }
   }
   function handlesetOptions() {
   function handlesetOptions() {
     setOptions({
     setOptions({
@@ -87,7 +93,7 @@
           itemStyle: { color: '#38a0ff' },
           itemStyle: { color: '#38a0ff' },
           barMaxWidth: 40,
           barMaxWidth: 40,
           name: nameList.value[0],
           name: nameList.value[0],
-          "stack": "总量",
+          stack: '总量',
         },
         },
         {
         {
           data: incrementOrderData.value,
           data: incrementOrderData.value,
@@ -95,7 +101,7 @@
           itemStyle: { color: '#4cca73' },
           itemStyle: { color: '#4cca73' },
           barMaxWidth: 40,
           barMaxWidth: 40,
           name: nameList.value[1],
           name: nameList.value[1],
-          "stack": "总量",
+          stack: '总量',
         },
         },
         {
         {
           data: partsOrderData.value,
           data: partsOrderData.value,
@@ -103,7 +109,7 @@
           itemStyle: { color: '#FDD56A' },
           itemStyle: { color: '#FDD56A' },
           barMaxWidth: 40,
           barMaxWidth: 40,
           name: nameList.value[2],
           name: nameList.value[2],
-          "stack": "总量",
+          stack: '总量',
         },
         },
       ],
       ],
     });
     });
@@ -112,12 +118,12 @@
     () => props.echartData,
     () => props.echartData,
     (echartData) => {
     (echartData) => {
       console.log('workTrendechartData', echartData);
       console.log('workTrendechartData', echartData);
-      downOrderData.value = echartData.downOrder ||[]
-      incrementOrderData.value = echartData.incrementOrder ||[]
-      partsOrderData.value = echartData.partOrder ||[]
-      yixStringData.value = echartData.xdata ||[]
-      if(echartData.echartTypr){
-        echartTypr.value = echartData.echartTypr
+      downOrderData.value = echartData.downOrder || [];
+      incrementOrderData.value = echartData.incrementOrder || [];
+      partsOrderData.value = echartData.partOrder || [];
+      yixStringData.value = echartData.xdata || [];
+      if (echartData.echartTypr) {
+        echartTypr.value = echartData.echartTypr;
       }
       }
       handlesetOptions();
       handlesetOptions();
     },
     },

+ 122 - 121
src/views/home/pieEchart.vue

@@ -1,146 +1,147 @@
 <template>
 <template>
   <Card title="保修类型统计">
   <Card title="保修类型统计">
     <template #extra>
     <template #extra>
-      <condition :selectTimeType="0"  :typeShow="true" @change="Search"  @expor="handleExport" />
+      <condition :selectTimeType="0" :typeShow="true" @change="Search" @expor="handleExport" />
     </template>
     </template>
     <div class="piechart" ref="chartPieRef" :style="{ height: '280px', width: '100%' }"></div>
     <div class="piechart" ref="chartPieRef" :style="{ height: '280px', width: '100%' }"></div>
   </Card>
   </Card>
 </template>
 </template>
 <script lang="ts" setup>
 <script lang="ts" setup>
-import condition from './condition.vue';
-import { Card } from 'ant-design-vue';
-import { ref, Ref, reactive, onMounted } from 'vue';
-import { workType } from '/@/api/home/index';
-import { useECharts } from '/@/hooks/web/useECharts';
-import { exportElsxFile, } from '/@/utils/file/download';
-import dayjs from 'dayjs';
-const chartPieRef = ref<HTMLDivElement | null>(null);
-const { setOptions } = useECharts(chartPieRef as Ref<HTMLDivElement>);
-const colorList = ['#38a0ff', '#4cca73', '#FDD56A', '#d58b55', '#c8ffff'];
-let pieData = ref([]);
-let legenData = ref([]);
-let SearchData = reactive({
-    startTime: dayjs().subtract(6,'month').format('YYYY-MM-DD'),
+  import condition from './condition.vue';
+  import { Card } from 'ant-design-vue';
+  import { ref, Ref, reactive, onMounted } from 'vue';
+  import { workType } from '/@/api/home/index';
+  import { useECharts } from '/@/hooks/web/useECharts';
+  import { exportElsxFile } from '/@/utils/file/download';
+  import dayjs from 'dayjs';
+  const chartPieRef = ref<HTMLDivElement | null>(null);
+  const { setOptions } = useECharts(chartPieRef as Ref<HTMLDivElement>);
+  const colorList = ['#38a0ff', '#4cca73', '#FDD56A', '#d58b55', '#c8ffff'];
+  let pieData = ref([]);
+  let legenData = ref([]);
+  let SearchData = reactive({
+    startTime: dayjs().subtract(6, 'month').format('YYYY-MM-DD'),
     endTime: dayjs().format('YYYY-MM-DD'),
     endTime: dayjs().format('YYYY-MM-DD'),
     cameraType: '0',
     cameraType: '0',
   });
   });
-var rich = {
-  name: {
-    color: '#666666',
-    fontSize: 14,
-    padding: [8, 30, 0, 30],
-    fontWeight: '400',
-    align: 'left',
-  },
-  value: {
-    color: '#333',
-    fontSize: 15,
-    padding: [0, 30, 8, 30],
-    fontWeight: '500',
-    align: 'left',
-  },
-  percent: {
-    color: '#FFF',
-    align: 'right',
-    fontSize: 15,
-    fontWeight: '500',
-    //padding: [0, 5]
-  },
-  hr: {
-    borderColor: '#DFDFDF',
-    width: '100%',
-    borderWidth: 1,
-    height: 0,
-  },
-  cir: {
-    fontSize: 26,
-  },
-};
-function handlesetOptions() {
-  setOptions({
-    tooltip: {
-      trigger: 'item',
-      formatter: '{b}<br/>数量 : {c} ({d}%)',
+  var rich = {
+    name: {
+      color: '#666666',
+      fontSize: 14,
+      padding: [8, 30, 0, 30],
+      fontWeight: '400',
+      align: 'left',
     },
     },
-    legend: {
-      orient: 'horizontal',
-      bottom: 0,
-      data: legenData.value,
+    value: {
+      color: '#333',
+      fontSize: 15,
+      padding: [0, 30, 8, 30],
+      fontWeight: '500',
+      align: 'left',
     },
     },
-    series: [
-      {
-        name: '库存情况',
-        type: 'pie',
-        radius: '68%',
-        center: ['50%', '50%'],
-        clockwise: false,
-        data: pieData.value,
-        label: {
-          normal: {
-            position: 'inner',
-            formatter: (params) => {
-              return '{percent|' + params.percent.toFixed(0) + '%}';
+    percent: {
+      color: '#FFF',
+      align: 'right',
+      fontSize: 15,
+      fontWeight: '500',
+      //padding: [0, 5]
+    },
+    hr: {
+      borderColor: '#DFDFDF',
+      width: '100%',
+      borderWidth: 1,
+      height: 0,
+    },
+    cir: {
+      fontSize: 26,
+    },
+  };
+  function handlesetOptions() {
+    setOptions({
+      tooltip: {
+        trigger: 'item',
+        formatter: '{b}<br/>数量 : {c} ({d}%)',
+      },
+      legend: {
+        orient: 'horizontal',
+        bottom: 0,
+        data: legenData.value,
+      },
+      series: [
+        {
+          name: '库存情况',
+          type: 'pie',
+          radius: '68%',
+          center: ['50%', '50%'],
+          clockwise: false,
+          data: pieData.value,
+          label: {
+            normal: {
+              position: 'inner',
+              formatter: (params) => {
+                return '{percent|' + params.percent.toFixed(0) + '%}';
+              },
+              rich: rich,
             },
             },
-            rich: rich,
           },
           },
-        },
-        labelLine: {
-          normal: {
-            position: 'inner',
-            formatter: (params) => {
-              return '{percent|' + params.percent.toFixed(0) + '%}';
+          labelLine: {
+            normal: {
+              position: 'inner',
+              formatter: (params) => {
+                return '{percent|' + params.percent.toFixed(0) + '%}';
+              },
+              rich: rich,
             },
             },
-            rich: rich,
+          },
+          itemStyle: {
+            borderWidth: 5,
+            borderColor: '#fff',
           },
           },
         },
         },
-        itemStyle: {
-          borderWidth: 5,
-          borderColor: '#fff',
-        },
-      },
-    ],
-    color: colorList,
-    backgroundColor: '#fff',
-  });
-}
-async function getList() {
-  const res = await workType(SearchData);
-  let pieDatas = [],legenDatas = [];
-  res.map(ele => {
-    legenDatas.push(ele.groupKey2)
-    pieDatas.push({
-      name: ele.groupKey2,
-      value: ele.count,
-    })
-  })
-  pieData.value = pieDatas
-  legenData.value = legenDatas
-  handlesetOptions();
-}
-function Search(val) {
-    SearchData = val
-    getList();
+      ],
+      color: colorList,
+      backgroundColor: '#fff',
+    });
   }
   }
-  function handleExport(){
-  let fields  = {
-    'time':'保修类型',
-    'num':'数量',
+  async function getList() {
+    const res = await workType(SearchData);
+    let pieDatas = [],
+      legenDatas = [];
+    res.map((ele) => {
+      legenDatas.push(ele.groupKey2);
+      pieDatas.push({
+        name: ele.groupKey2,
+        value: ele.count,
+      });
+    });
+    pieData.value = pieDatas;
+    legenData.value = legenDatas;
+    handlesetOptions();
+  }
+  function Search(val) {
+    SearchData = val;
+    getList();
   }
   }
+  function handleExport() {
+    let fields = {
+      time: '保修类型',
+      num: '数量',
+    };
     let data = pieData.value.map((ele) => {
     let data = pieData.value.map((ele) => {
       return {
       return {
-        'time':ele.name,
-        'num':ele.value || 0,
-      }
-    })
-    exportElsxFile(data, fields,  '保修类型统计')
-}
-onMounted(() => {
-  getList();
-});
+        time: ele.name,
+        num: ele.value || 0,
+      };
+    });
+    exportElsxFile(data, fields, '保修类型统计');
+  }
+  onMounted(() => {
+    getList();
+  });
 </script>
 </script>
 <style lang="less" scoped>
 <style lang="less" scoped>
-.piechart {
-  width: 100%;
-  height: 100%;
-}
+  .piechart {
+    width: 100%;
+    height: 100%;
+  }
 </style>
 </style>

+ 6 - 6
src/views/home/props.ts

@@ -13,12 +13,12 @@ export type echartData = {
   downOrder: number[];
   downOrder: number[];
   incrementOrder: number[];
   incrementOrder: number[];
   partOrder: number[];
   partOrder: number[];
-  nameList?:string[];
-  kjList?:number[];
-  kkList?:number[];
-  ssList?:number[];
-  ssobjList?:number[];
-  echartTypr?:string;
+  nameList?: string[];
+  kjList?: number[];
+  kkList?: number[];
+  ssList?: number[];
+  ssobjList?: number[];
+  echartTypr?: string;
 };
 };
 export const basicProps = {
 export const basicProps = {
   width: {
   width: {

+ 61 - 52
src/views/invoice/EditModal.vue

@@ -13,10 +13,16 @@
     <div class="pt-2px pr-3px">
     <div class="pt-2px pr-3px">
       <BasicForm @register="registerForm">
       <BasicForm @register="registerForm">
         <template #text="{ model, field }">
         <template #text="{ model, field }">
-          {{ model[field]  }}
+          {{ model[field] }}
         </template>
         </template>
         <template #img="{ model }">
         <template #img="{ model }">
-          <TableImg v-if="model.invoiceImg" :size="200" :adaptations="true" :simpleShow="true" :imgList="[model.invoiceImg]" />
+          <TableImg
+            v-if="model.invoiceImg"
+            :size="200"
+            :adaptations="true"
+            :simpleShow="true"
+            :imgList="[model.invoiceImg]"
+          />
         </template>
         </template>
       </BasicForm>
       </BasicForm>
     </div>
     </div>
@@ -42,55 +48,58 @@
     emits: ['update', 'register'],
     emits: ['update', 'register'],
     setup(props, { emit }) {
     setup(props, { emit }) {
       const fileFlow = reactive({
       const fileFlow = reactive({
-        file:null,
-        type:0,//2-普通发票,3-专用发票
-      })
+        file: null,
+        type: 0, //2-普通发票,3-专用发票
+      });
       const { createMessage } = useMessage();
       const { createMessage } = useMessage();
       const schemas: FormSchema[] = [
       const schemas: FormSchema[] = [
-          {
-            field: 'invoiceEmail',
-            component: 'Input',
-            label: '邮箱',
-            slot: 'text',
-            ifShow:fileFlow.type == 0,
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'invoiceNo',
-            component: 'Input',
-            label: '发票编号',
-            slot: 'text',
-            required: true,
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'invoiceImg',
-            component: 'Upload',
-            label: '电子发票',
-            ifShow:fileFlow.type == 0,
-            required: true,
-            slot: 'img',
-            colProps: {
-              span: 22,
-            },
-          },{
-            field: 'trackingNum',
-            component: 'Input',
-            ifShow:fileFlow.type == 1,
-            slot: 'text',
-            label: '快递单号',
-            required: true,
-            colProps: {
-              span: 24,
-            },
+        {
+          field: 'invoiceEmail',
+          component: 'Input',
+          label: '邮箱',
+          slot: 'text',
+          ifShow: fileFlow.type == 0,
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'invoiceNo',
+          component: 'Input',
+          label: '发票编号',
+          slot: 'text',
+          required: true,
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'invoiceImg',
+          component: 'Upload',
+          label: '电子发票',
+          ifShow: fileFlow.type == 0,
+          required: true,
+          slot: 'img',
+          colProps: {
+            span: 22,
+          },
+        },
+        {
+          field: 'trackingNum',
+          component: 'Input',
+          ifShow: fileFlow.type == 1,
+          slot: 'text',
+          label: '快递单号',
+          required: true,
+          colProps: {
+            span: 24,
           },
           },
+        },
       ];
       ];
 
 
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
         labelWidth: 120,
         labelWidth: 120,
-        schemas:schemas,
+        schemas: schemas,
         showActionButtonGroup: false,
         showActionButtonGroup: false,
         actionColOptions: {
         actionColOptions: {
           span: 24,
           span: 24,
@@ -104,21 +113,21 @@
       async function onDataReceive(data) {
       async function onDataReceive(data) {
         resetFields();
         resetFields();
         // let detail = await InvoiceDetail({id:data.id})
         // let detail = await InvoiceDetail({id:data.id})
-        console.log('data',data)
-        fileFlow.type = data.invoiceType
+        console.log('data', data);
+        fileFlow.type = data.invoiceType;
         setFieldsValue({
         setFieldsValue({
           ...data,
           ...data,
           // ...detail,
           // ...detail,
         });
         });
         updateSchema([
         updateSchema([
-          {field: 'trackingNum',ifShow:fileFlow.type == 1,},
-          {field: 'invoiceEmail',ifShow:fileFlow.type == 0,},
-          {field: 'invoiceImg',ifShow:fileFlow.type == 0,},
-        ])
+          { field: 'trackingNum', ifShow: fileFlow.type == 1 },
+          { field: 'invoiceEmail', ifShow: fileFlow.type == 0 },
+          { field: 'invoiceImg', ifShow: fileFlow.type == 0 },
+        ]);
       }
       }
       const handleSubmit = async () => {
       const handleSubmit = async () => {
-          closeModal();
-          emit('update');
+        closeModal();
+        emit('update');
       };
       };
       function handleVisibleChange(v) {
       function handleVisibleChange(v) {
         v && props.userData && nextTick(() => onDataReceive(props.userData));
         v && props.userData && nextTick(() => onDataReceive(props.userData));

+ 79 - 76
src/views/invoice/InvoiceModal.vue

@@ -12,7 +12,7 @@
     <div class="pt-2px pr-3px">
     <div class="pt-2px pr-3px">
       <BasicForm @register="registerForm">
       <BasicForm @register="registerForm">
         <template #text="{ model, field }">
         <template #text="{ model, field }">
-          {{ model[field]  }}
+          {{ model[field] }}
         </template>
         </template>
       </BasicForm>
       </BasicForm>
     </div>
     </div>
@@ -37,80 +37,83 @@
     emits: ['update', 'register'],
     emits: ['update', 'register'],
     setup(props, { emit }) {
     setup(props, { emit }) {
       const fileFlow = reactive({
       const fileFlow = reactive({
-        file:null,
-        type:2,//2-普通发票,3-专用发票
-      })
-      const okText = ref('发送')
-      const loading = ref(false)
+        file: null,
+        type: 2, //2-普通发票,3-专用发票
+      });
+      const okText = ref('发送');
+      const loading = ref(false);
       const { createMessage } = useMessage();
       const { createMessage } = useMessage();
       const schemas: FormSchema[] = [
       const schemas: FormSchema[] = [
-          {
-            field: 'invoiceId',
-            component: 'Input',
-            show:false,
-            label: '发票编号',
+        {
+          field: 'invoiceId',
+          component: 'Input',
+          show: false,
+          label: '发票编号',
+        },
+        {
+          field: 'invoiceEmail',
+          component: 'Input',
+          label: '邮箱',
+          slot: 'text',
+          ifShow: fileFlow.type == 0,
+          componentProps: {
+            maxLength: 50,
+          },
+          colProps: {
+            span: 18,
+          },
+        },
+        {
+          field: 'invoiceNo',
+          component: 'Input',
+          label: '发票编号',
+          required: true,
+          componentProps: {
+            maxLength: 50,
+          },
+          colProps: {
+            span: 18,
+          },
+        },
+        {
+          field: 'invoiceImg',
+          component: 'Upload',
+          label: '电子发票',
+          ifShow: fileFlow.type == 0,
+          required: true,
+          rules: [{ required: true, message: t('common.uploadMessge') }],
+          itemProps: {
+            validateTrigger: 'blur',
+          },
+          componentProps: {
+            api: uploadApi,
+            maxNumber: 1,
+            maxSize: 1000,
+            accept: ['jpeg', 'jpg', 'png'],
           },
           },
-          {
-            field: 'invoiceEmail',
-            component: 'Input',
-            label: '邮箱',
-            slot: 'text',
-            ifShow:fileFlow.type == 0,
-            componentProps: {
-              maxLength: 50,
-            },
-            colProps: {
-              span: 18,
-            },
-          },{
-            field: 'invoiceNo',
-            component: 'Input',
-            label: '发票编号',
-            required: true,
-            componentProps: {
-              maxLength: 50,
-            },
-            colProps: {
-              span: 18,
-            },
-          },{
-            field: 'invoiceImg',
-            component: 'Upload',
-            label: '电子发票',
-            ifShow:fileFlow.type == 0,
-            required: true,
-            rules: [{ required: true, message: t('common.uploadMessge') }],
-            itemProps: {
-              validateTrigger: 'blur',
-            },
-            componentProps: {
-              api: uploadApi,
-              maxNumber: 1,
-              maxSize: 1000,
-              accept: ['jpeg','jpg','png'],
-            },
 
 
-            colProps: {
-              span: 22,
-            },
-          },{
-            field: 'trackingNum',
-            component: 'Input',
-            ifShow:fileFlow.type == 1,
-            label: '快递单号',
-            componentProps: {
-              maxLength: 50,
-            },
-            required: true,
-            colProps: {
-              span: 18,
-            },
+          colProps: {
+            span: 22,
+          },
+        },
+        {
+          field: 'trackingNum',
+          component: 'Input',
+          ifShow: fileFlow.type == 1,
+          label: '快递单号',
+          componentProps: {
+            maxLength: 50,
+          },
+          required: true,
+          colProps: {
+            span: 18,
           },
           },
+        },
       ];
       ];
 
 
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
         labelWidth: 120,
         labelWidth: 120,
-        schemas:schemas,
+        schemas: schemas,
         showActionButtonGroup: false,
         showActionButtonGroup: false,
         actionColOptions: {
         actionColOptions: {
           span: 24,
           span: 24,
@@ -123,30 +126,30 @@
       });
       });
       function onDataReceive(data) {
       function onDataReceive(data) {
         resetFields();
         resetFields();
-        fileFlow.type = data.invoiceType
+        fileFlow.type = data.invoiceType;
         setFieldsValue(data);
         setFieldsValue(data);
-        okText.value = fileFlow.type == 0?'发送':'确认'
+        okText.value = fileFlow.type == 0 ? '发送' : '确认';
         updateSchema([
         updateSchema([
-          {field: 'trackingNum',ifShow:fileFlow.type == 1,},
-          {field: 'invoiceEmail',ifShow:fileFlow.type == 0,},
-          {field: 'invoiceImg',ifShow:fileFlow.type == 0,},
-        ])
+          { field: 'trackingNum', ifShow: fileFlow.type == 1 },
+          { field: 'invoiceEmail', ifShow: fileFlow.type == 0 },
+          { field: 'invoiceImg', ifShow: fileFlow.type == 0 },
+        ]);
       }
       }
       const handleSubmit = async () => {
       const handleSubmit = async () => {
-        loading.value = true
+        loading.value = true;
         try {
         try {
           const params = await validate();
           const params = await validate();
           await InvoiceOpen({
           await InvoiceOpen({
             ...params,
             ...params,
-            invoiceImg:fileFlow.type == 0?params.invoiceImg[0]:''
+            invoiceImg: fileFlow.type == 0 ? params.invoiceImg[0] : '',
           });
           });
           closeModal();
           closeModal();
           resetFields();
           resetFields();
           createMessage.success(t('common.optSuccess'));
           createMessage.success(t('common.optSuccess'));
           emit('update');
           emit('update');
-          loading.value = false
+          loading.value = false;
         } catch (error) {
         } catch (error) {
-          loading.value = false
+          loading.value = false;
           console.log('not passing', error);
           console.log('not passing', error);
         }
         }
       };
       };

+ 21 - 21
src/views/invoice/data.tsx

@@ -6,7 +6,6 @@ import { useI18n } from '/@/hooks/web/useI18n';
 const { t } = useI18n();
 const { t } = useI18n();
 
 
 export const columns: BasicColumn[] = [
 export const columns: BasicColumn[] = [
-        
   {
   {
     title: '订单号',
     title: '订单号',
     dataIndex: 'orderSn',
     dataIndex: 'orderSn',
@@ -50,13 +49,13 @@ export const columns: BasicColumn[] = [
     title: '开票类型',
     title: '开票类型',
     dataIndex: 'invoiceType',
     dataIndex: 'invoiceType',
     width: 80,
     width: 80,
-    customRender:({record})=>{
-      if(record.invoiceType == 1){
-        return '专用发票'
-      }else{
-        return '普通发票'
+    customRender: ({ record }) => {
+      if (record.invoiceType == 1) {
+        return '专用发票';
+      } else {
+        return '普通发票';
       }
       }
-    }
+    },
   },
   },
   {
   {
     title: '发票抬头',
     title: '发票抬头',
@@ -123,13 +122,13 @@ export const columns: BasicColumn[] = [
     dataIndex: 'status',
     dataIndex: 'status',
     // slots: { customRender: 'orderStatus' },
     // slots: { customRender: 'orderStatus' },
     width: 80,
     width: 80,
-    customRender:({record})=>{
-      if(record.status == 0){
-        return '未开票'
-      }else{
-        return '已开票'
+    customRender: ({ record }) => {
+      if (record.status == 0) {
+        return '未开票';
+      } else {
+        return '已开票';
       }
       }
-    }
+    },
   },
   },
 ];
 ];
 export const searchForm: Partial<FormProps> = {
 export const searchForm: Partial<FormProps> = {
@@ -141,7 +140,7 @@ export const searchForm: Partial<FormProps> = {
       component: 'RangePicker',
       component: 'RangePicker',
       componentProps: {
       componentProps: {
         maxLength: 100,
         maxLength: 100,
-        valueFormat:'YYYY-MM-DD',
+        valueFormat: 'YYYY-MM-DD',
         format: 'YYYY-MM-DD',
         format: 'YYYY-MM-DD',
       },
       },
       colProps: {
       colProps: {
@@ -155,14 +154,15 @@ export const searchForm: Partial<FormProps> = {
       component: 'RangePicker',
       component: 'RangePicker',
       componentProps: {
       componentProps: {
         maxLength: 100,
         maxLength: 100,
-        valueFormat:'YYYY-MM-DD',
+        valueFormat: 'YYYY-MM-DD',
         format: 'YYYY-MM-DD',
         format: 'YYYY-MM-DD',
       },
       },
       colProps: {
       colProps: {
         xl: 7,
         xl: 7,
         xxl: 7,
         xxl: 7,
       },
       },
-    },{
+    },
+    {
       field: 'orderSn',
       field: 'orderSn',
       label: '订单号',
       label: '订单号',
       component: 'Input',
       component: 'Input',
@@ -173,7 +173,7 @@ export const searchForm: Partial<FormProps> = {
         xl: 6,
         xl: 6,
         xxl: 6,
         xxl: 6,
       },
       },
-    }
+    },
   ],
   ],
 };
 };
 export const InvoiceSchemas: FormSchema[] = [
 export const InvoiceSchemas: FormSchema[] = [
@@ -200,9 +200,9 @@ export const InvoiceSchemas: FormSchema[] = [
         // @ts-ignore
         // @ts-ignore
         validator: async (rule, value) => {
         validator: async (rule, value) => {
           if (!value) {
           if (!value) {
-            return Promise.reject(t('common.inputText')+t('routes.product.version'));
+            return Promise.reject(t('common.inputText') + t('routes.product.version'));
           }
           }
-          if(/.*[\u4e00-\u9fa5]+.*$/.test(value)){
+          if (/.*[\u4e00-\u9fa5]+.*$/.test(value)) {
             /* eslint-disable-next-line */
             /* eslint-disable-next-line */
             return Promise.reject('不支持中文字符');
             return Promise.reject('不支持中文字符');
           }
           }
@@ -224,10 +224,10 @@ export const InvoiceSchemas: FormSchema[] = [
     required: true,
     required: true,
     label: t('routes.product.description'),
     label: t('routes.product.description'),
     componentProps: {
     componentProps: {
-      rows:4,
+      rows: 4,
     },
     },
     colProps: {
     colProps: {
       span: 24,
       span: 24,
     },
     },
   },
   },
-]
+];

+ 46 - 44
src/views/invoice/index.vue

@@ -2,32 +2,34 @@
   <div>
   <div>
     <BasicTable @register="registerTable">
     <BasicTable @register="registerTable">
       <template #toolbar>
       <template #toolbar>
-        <a-button type="primary" @click="exportExcel" v-if="getCheckPerm('invoice-export')"> 导出</a-button>
+        <a-button type="primary" @click="exportExcel" v-if="getCheckPerm('invoice-export')">
+          导出</a-button
+        >
       </template>
       </template>
       <template #action="{ record }">
       <template #action="{ record }">
-          <TableAction
-            stopButtonPropagation
-            :actions="[
-              {
-                label: '开票登记',
-                //icon: 'la:file-invoice-dollar',
-                ifShow:getCheckPerm('invoice-checkin') && record.status==0,
-                onClick: handleInvoice.bind(null, record),
-              },
-              {
-                label: '电子发票',
-                ifShow:record.invoiceType == 0 && record.status==1,
-                //icon: 'simple-icons:invoiceninja',
-                onClick: headleDetails.bind(null, record),
-              },
-              {
-                label: '快递单号',
-                ifShow:record.invoiceType == 1&& record.status==1,
-                //icon: 'icon-park-outline:express-delivery',
-                onClick: headleDetails.bind(null, record),
-              },
-            ]"
-          />
+        <TableAction
+          stopButtonPropagation
+          :actions="[
+            {
+              label: '开票登记',
+              //icon: 'la:file-invoice-dollar',
+              ifShow: getCheckPerm('invoice-checkin') && record.status == 0,
+              onClick: handleInvoice.bind(null, record),
+            },
+            {
+              label: '电子发票',
+              ifShow: record.invoiceType == 0 && record.status == 1,
+              //icon: 'simple-icons:invoiceninja',
+              onClick: headleDetails.bind(null, record),
+            },
+            {
+              label: '快递单号',
+              ifShow: record.invoiceType == 1 && record.status == 1,
+              //icon: 'icon-park-outline:express-delivery',
+              onClick: headleDetails.bind(null, record),
+            },
+          ]"
+        />
       </template>
       </template>
     </BasicTable>
     </BasicTable>
     <AddModal @update="reload" @register="registerAddModal" />
     <AddModal @update="reload" @register="registerAddModal" />
@@ -42,9 +44,9 @@
   import { Descriptions } from 'ant-design-vue';
   import { Descriptions } from 'ant-design-vue';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { useMessage } from '/@/hooks/web/useMessage';
-  import { InvoiceList,InvoiceExport } from '/@/api/order'
-  import { downloadByData } from '/@/utils/file/download'
-  import { searchForm, columns } from './data'
+  import { InvoiceList, InvoiceExport } from '/@/api/order';
+  import { downloadByData } from '/@/utils/file/download';
+  import { searchForm, columns } from './data';
   import AddModal from './InvoiceModal.vue';
   import AddModal from './InvoiceModal.vue';
   import EditModal from './EditModal.vue';
   import EditModal from './EditModal.vue';
   import { usePermissionStore } from '/@/store/modules/permission';
   import { usePermissionStore } from '/@/store/modules/permission';
@@ -58,11 +60,11 @@
     sortBy?: string;
     sortBy?: string;
   }
   }
   export default defineComponent({
   export default defineComponent({
-    components: { 
+    components: {
       AddModal,
       AddModal,
       EditModal,
       EditModal,
-      BasicTable, 
-      TableAction, 
+      BasicTable,
+      TableAction,
       PageWrapper,
       PageWrapper,
       TableImg,
       TableImg,
       [Descriptions.name]: Descriptions,
       [Descriptions.name]: Descriptions,
@@ -81,7 +83,7 @@
         orderBy: '',
         orderBy: '',
         sortBy: '',
         sortBy: '',
       });
       });
-      const { createMessage,createConfirm } = useMessage();
+      const { createMessage, createConfirm } = useMessage();
       const [registerAddModal, { openModal: openAddModal }] = useModal();
       const [registerAddModal, { openModal: openAddModal }] = useModal();
       const [registerEditModal, { openModal: openEditModal }] = useModal();
       const [registerEditModal, { openModal: openEditModal }] = useModal();
       const [registerTable, { reload }] = useTable({
       const [registerTable, { reload }] = useTable({
@@ -92,7 +94,7 @@
         useSearchForm: true,
         useSearchForm: true,
         formConfig: searchForm,
         formConfig: searchForm,
         showTableSetting: true,
         showTableSetting: true,
-        showIndexColumn:false,
+        showIndexColumn: false,
         rowKey: 'id',
         rowKey: 'id',
         fetchSetting: {
         fetchSetting: {
           pageField: 'pageNum',
           pageField: 'pageNum',
@@ -117,22 +119,22 @@
           ...record,
           ...record,
         });
         });
       }
       }
-    function handleEdit(record: Recordable) {
-      console.log('record', record);
-    }
-    function headleDetails(record: Recordable) {
-      console.log('record', record);
-      openEditModal(true, {
-        ...record,
-      });
-    }
-    function exportExcel() {
+      function handleEdit(record: Recordable) {
+        console.log('record', record);
+      }
+      function headleDetails(record: Recordable) {
+        console.log('record', record);
+        openEditModal(true, {
+          ...record,
+        });
+      }
+      function exportExcel() {
         createConfirm({
         createConfirm({
           iconType: 'warning',
           iconType: 'warning',
           title: () => h('span', '温馨提示'),
           title: () => h('span', '温馨提示'),
           content: () => h('span', '确定导出当前发票所有记录?'),
           content: () => h('span', '确定导出当前发票所有记录?'),
           onOk: async () => {
           onOk: async () => {
-           await InvoiceExport(apiData);
+            await InvoiceExport(apiData);
           },
           },
         });
         });
       }
       }
@@ -150,4 +152,4 @@
       };
       };
     },
     },
   });
   });
-</script>
+</script>

+ 196 - 184
src/views/loglist/index.vue

@@ -1,213 +1,225 @@
 <template>
 <template>
   <div class="desc-wrap-BasicTable">
   <div class="desc-wrap-BasicTable">
-    <BasicTable @register="registerTable"> </BasicTable>
+    <BasicTable @register="registerTable" />
   </div>
   </div>
 </template>
 </template>
 <script lang="ts">
 <script lang="ts">
-import { defineComponent, onMounted } from 'vue';
-import {
-  BasicTable,
-  useTable,
-  TableAction,
-  BasicColumn,
-  TableImg,
-  FormProps,
-} from '/@/components/Table';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { usePermissionStore } from '/@/store/modules/permission';
-import { dincrementList, cameraIncrementLog } from '/@/api/equity';
-export default defineComponent({
-  components: {
+  import { defineComponent, onMounted } from 'vue';
+  import {
     BasicTable,
     BasicTable,
+    useTable,
     TableAction,
     TableAction,
+    BasicColumn,
     TableImg,
     TableImg,
-  },
-  setup() {
-    const { t } = useI18n();
-    const permissionStore = usePermissionStore();
-    const { getCheckPerm } = permissionStore;
-    onMounted(() => {
-      // console.log(router.currentRoute.value.params.id);
-    });
-    const columns: BasicColumn[] = [
-      {
-        title: t('routes.equity.operationType'),
-        dataIndex: 'operationType',
-        width: 80,
-        customRender: ({ record }) => {
-          return t(`routes.equity.operation.${record.operationType || 0}`);
+    FormProps,
+  } from '/@/components/Table';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { usePermissionStore } from '/@/store/modules/permission';
+  import { dincrementList, cameraIncrementLog } from '/@/api/equity';
+  export default defineComponent({
+    components: {
+      BasicTable,
+      TableAction,
+      TableImg,
+    },
+    setup() {
+      const { t } = useI18n();
+      const permissionStore = usePermissionStore();
+      const { getCheckPerm } = permissionStore;
+      onMounted(() => {
+        // console.log(router.currentRoute.value.params.id);
+      });
+      const columns: BasicColumn[] = [
+        {
+          title: t('routes.equity.operationType'),
+          dataIndex: 'operationType',
+          width: 80,
+          customRender: ({ record }) => {
+            return t(`routes.equity.operation.${record.operationType || 0}`);
+          },
         },
         },
-      },{
-        title: t('routes.device.snCode'),
-        dataIndex: 'snCode',
-        width: 100,
-      },
-      {
-        title: t('routes.equity.operationUserName'),
-        dataIndex: 'operationUserName',
-        ellipsis: false,
-        width: 120,
-        customRender: ({ record }) => {
-          return record.operationUserName || t('routes.equity.platform');
+        {
+          title: t('routes.device.snCode'),
+          dataIndex: 'snCode',
+          width: 100,
         },
         },
-      },
-      {
-        title: t('routes.equity.operationTime'),
-        dataIndex: 'createTime',
-        width: 180,
-      },
-      {
-        title: t('routes.equity.Type'),
-        dataIndex: 'validTimeType',
-        width: 180,
-        customRender({ record }) {
-          if(record.validTimeType==2 || record.validTimeType==3){
-            return '-'
-          }
-          return record.validTimeType==0 ?t('routes.equity.equityType.0'):record.validTimeType==1? t('routes.equity.equityType.3') : '-';
+        {
+          title: t('routes.equity.operationUserName'),
+          dataIndex: 'operationUserName',
+          ellipsis: false,
+          width: 120,
+          customRender: ({ record }) => {
+            return record.operationUserName || t('routes.equity.platform');
+          },
         },
         },
-      },
-      {
-        title: t('routes.equity.incrementId'),
-        dataIndex: 'incrementId',
-        width: 180,
-        customRender({ record }) {
-          if(record.validTimeType==2 || record.validTimeType==3){
-            return '-'
-          }
-          return record.incrementId ? record.incrementId : '-';
+        {
+          title: t('routes.equity.operationTime'),
+          dataIndex: 'createTime',
+          width: 180,
+        },
+        {
+          title: t('routes.equity.Type'),
+          dataIndex: 'validTimeType',
+          width: 180,
+          customRender({ record }) {
+            if (record.validTimeType == 2 || record.validTimeType == 3) {
+              return '-';
+            }
+            return record.validTimeType == 0
+              ? t('routes.equity.equityType.0')
+              : record.validTimeType == 1
+              ? t('routes.equity.equityType.3')
+              : '-';
+          },
         },
         },
-      },
-    ];
-    const searchForm: Partial<FormProps> = {
-      labelWidth: 120,
-      autoAdvancedLine: 1,
-      actionColOptions: {
-        span: 24,
-      },
-      schemas: [
         {
         {
-          field: 'operationType',
-          component: 'Select',
-          label: t('routes.equity.operationType'),
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          title: t('routes.equity.incrementId'),
+          dataIndex: 'incrementId',
+          width: 180,
+          customRender({ record }) {
+            if (record.validTimeType == 2 || record.validTimeType == 3) {
+              return '-';
+            }
+            return record.incrementId ? record.incrementId : '-';
           },
           },
-          componentProps: {
-            options: [
-              {
+        },
+      ];
+      const searchForm: Partial<FormProps> = {
+        labelWidth: 120,
+        autoAdvancedLine: 1,
+        actionColOptions: {
+          span: 24,
+        },
+        schemas: [
+          {
+            field: 'operationType',
+            component: 'Select',
+            label: t('routes.equity.operationType'),
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+            componentProps: {
+              options: [
+                {
                   label: t('routes.equity.operation.0'),
                   label: t('routes.equity.operation.0'),
                   value: 0,
                   value: 0,
                   key: '0',
                   key: '0',
-                },{
-                label: t('routes.equity.operation.1'),
-                value: 1,
-                key: '1',
-              },{
-                label: t('routes.equity.operation.2'),
-                value: 2,
-                key: '2',
-              },{
-                label: t('routes.equity.operation.3'),
-                value: 3,
-                key: '3',
-              }
-            ],
+                },
+                {
+                  label: t('routes.equity.operation.1'),
+                  value: 1,
+                  key: '1',
+                },
+                {
+                  label: t('routes.equity.operation.2'),
+                  value: 2,
+                  key: '2',
+                },
+                {
+                  label: t('routes.equity.operation.3'),
+                  value: 3,
+                  key: '3',
+                },
+              ],
+            },
           },
           },
-        },{
-          field: 'snCode',
-          component: 'Input',
-          label: t('routes.device.snCode'),
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          {
+            field: 'snCode',
+            component: 'Input',
+            label: t('routes.device.snCode'),
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
           },
           },
-        },
-        {
-          field: 'incrementTypeId',
-          component: 'ApiSelect',
-          label: t('routes.equity.Type'),
-          componentProps: {
-            maxLength: 50,
-            api: async function () {
-              const list = await dincrementList();
-              return list.map((ele) => {
-                return { name: t(`routes.finance.equityType.${ele.validTimeType}`), value: ele.id };
-              });
+          {
+            field: 'incrementTypeId',
+            component: 'ApiSelect',
+            label: t('routes.equity.Type'),
+            componentProps: {
+              maxLength: 50,
+              api: async function () {
+                const list = await dincrementList();
+                return list.map((ele) => {
+                  return {
+                    name: t(`routes.finance.equityType.${ele.validTimeType}`),
+                    value: ele.id,
+                  };
+                });
+              },
+              numberToString: true,
+              labelField: 'name',
+              valueField: 'value',
+              immediate: true,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
             },
             },
-            numberToString: true,
-            labelField: 'name',
-            valueField: 'value',
-            immediate: true,
           },
           },
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          {
+            field: 'operationUserName',
+            component: 'Input',
+            label: t('routes.equity.operationUserName'),
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
           },
           },
-        },
-        {
-          field: 'operationUserName',
-          component: 'Input',
-          label: t('routes.equity.operationUserName'),
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          {
+            field: 'timeList',
+            label: t('routes.equity.operationTime'),
+            component: 'RangePicker',
+            componentProps: {
+              maxLength: 100,
+              format: 'YYYY-MM-DD',
+              valueFormat: 'YYYY-MM-DD',
+              showTime: true,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
           },
           },
+        ],
+      };
+      const [registerTable, { reload }] = useTable({
+        api: cameraIncrementLog,
+        columns: columns,
+        useSearchForm: true,
+        formConfig: searchForm,
+        showTableSetting: true,
+        showIndexColumn: false,
+        rowKey: 'id',
+        beforeFetch: (T) => {
+          if (T.ctivated) {
+            T.activatedStartTime = T.ctivated[0];
+            T.activatedEndTime = T.ctivated[1];
+          }
+          return T;
         },
         },
-        {
-          field: 'timeList',
-          label: t('routes.equity.operationTime'),
-          component: 'RangePicker',
-          componentProps: {
-            maxLength: 100,
-            format: 'YYYY-MM-DD',
-            valueFormat: 'YYYY-MM-DD',
-            showTime: true,
-          },
-          colProps: {
-            xl: 7,
-            xxl: 7,
-          },
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
         },
         },
-      ],
-    };
-    const [registerTable, { reload }] = useTable({
-      api: cameraIncrementLog,
-      columns: columns,
-      useSearchForm: true,
-      formConfig: searchForm,
-      showTableSetting: true,
-      showIndexColumn: false,
-      rowKey: 'id',
-      beforeFetch: (T) => {
-        if (T.ctivated) {
-          T.activatedStartTime = T.ctivated[0];
-          T.activatedEndTime = T.ctivated[1];
-        }
-        return T;
-      },
-      fetchSetting: {
-        pageField: 'pageNum',
-        sizeField: 'pageSize',
-        listField: 'list',
-        totalField: 'total',
-      },
-      canResize: false,
-    });
-    return {
-      registerTable,
-      reload,
-      getCheckPerm,
-    };
-  },
-});
+        canResize: false,
+      });
+      return {
+        registerTable,
+        reload,
+        getCheckPerm,
+      };
+    },
+  });
 </script>
 </script>
 <style lang="less" scoped>
 <style lang="less" scoped>
-.desc-wrap-BasicTable {
-  background-color: #f0f2f5;
-  .vben-basic-table-form-container {
-    padding: 0;
+  .desc-wrap-BasicTable {
+    background-color: #f0f2f5;
+    .vben-basic-table-form-container {
+      padding: 0;
+    }
   }
   }
-}
 </style>
 </style>

+ 377 - 377
src/views/scene/list.vue

@@ -54,416 +54,416 @@
   </PageWrapper>
   </PageWrapper>
 </template>
 </template>
 <script lang="ts">
 <script lang="ts">
-import { defineComponent, h, reactive, toRefs, ref } from 'vue';
-import {
-  BasicTable,
-  useTable,
-  TableAction,
-  BasicColumn,
-  TableImg,
-  FormProps,
-} from '/@/components/Table';
-import { PageWrapper } from '/@/components/Page';
-import DownLoadModal from './modal/DownLoadModal.vue';
-import MoveModal from './modal/MoveModal.vue';
-import { Time } from '/@/components/Time';
-import { Descriptions, Tabs, Progress } from 'ant-design-vue';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { useModal } from '/@/components/Modal';
-import {
-  operateSceneList,
-  sceneMove,
-  sceneDelete,
-  sceneReset,
-  sceneDownload,
-  checkDownLoad,
-  downloadProcess,
-  sceneCopy,
-  rebuildScene,
-} from '/@/api/operate';
-import { message } from 'ant-design-vue';
-import { usePermissionStore } from '/@/store/modules/permission';
-import { func } from 'vue-types';
-export default defineComponent({
-  components: {
-    DownLoadModal,
-    MoveModal,
+  import { defineComponent, h, reactive, toRefs, ref } from 'vue';
+  import {
     BasicTable,
     BasicTable,
+    useTable,
     TableAction,
     TableAction,
-    PageWrapper,
-    [Descriptions.name]: Descriptions,
-    [Descriptions.Item.name]: Descriptions.Item,
+    BasicColumn,
+    TableImg,
+    FormProps,
+  } from '/@/components/Table';
+  import { PageWrapper } from '/@/components/Page';
+  import DownLoadModal from './modal/DownLoadModal.vue';
+  import MoveModal from './modal/MoveModal.vue';
+  import { Time } from '/@/components/Time';
+  import { Descriptions, Tabs, Progress } from 'ant-design-vue';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { useModal } from '/@/components/Modal';
+  import {
+    operateSceneList,
+    sceneMove,
+    sceneDelete,
+    sceneReset,
+    sceneDownload,
+    checkDownLoad,
+    downloadProcess,
+    sceneCopy,
+    rebuildScene,
+  } from '/@/api/operate';
+  import { message } from 'ant-design-vue';
+  import { usePermissionStore } from '/@/store/modules/permission';
+  import { func } from 'vue-types';
+  export default defineComponent({
+    components: {
+      DownLoadModal,
+      MoveModal,
+      BasicTable,
+      TableAction,
+      PageWrapper,
+      [Descriptions.name]: Descriptions,
+      [Descriptions.Item.name]: Descriptions.Item,
 
 
-    [Tabs.name]: Tabs,
-    [Tabs.TabPane.name]: Tabs.TabPane,
-  },
-  setup() {
-    const { t } = useI18n();
-    const { createMessage, createConfirm } = useMessage();
-    const permissionStore = usePermissionStore();
-    const { getCheckPerm } = permissionStore;
-    const tableType = ref<Recordable>(0); //0看看 、1看见、2深时
-    const columns: BasicColumn[] = [
-      {
-        title: t('routes.scene.sceneName'),
-        dataIndex: 'sceneName',
-        slots: { customRender: 'href' },
-        width: 150,
-      },
-      {
-        title: t('routes.scene.num'),
-        dataIndex: 'num',
-        ellipsis: true,
-        width: 180,
-      },
-      {
-        title: t('routes.scene.createTime'),
-        dataIndex: 'createTime',
-        width: 180,
-        customRender: ({ record }) => {
-          return (
-            record.createTime &&
-            h(Time, {
-              value: record.createTime,
-              mode: 'datetime',
-            })
-          );
-        },
-      },
-      {
-        title: t('routes.scene.amount'),
-        dataIndex: 'amount',
-        width: 210,
-        customRender: ({ record }) => {
-          return (
-            (record.algorithmTime &&
-              h(Time, {
-                value: record.algorithmTime,
-                mode: 'datetime',
-              })) ||
-            '-'
-          );
-        },
-      },
-      {
-        title: t('routes.scene.snCode'),
-        dataIndex: 'snCode',
-        width: 180,
-      },
-      {
-        title: t('routes.scene.sceneSize'),
-        dataIndex: 'sceneSize',
-        width: 120,
-        customRender: ({ record }) => {
-          return record.sceneSize && record.sceneSize != 0
-            ? h('span', { class: 'sceneSize' }, Math.ceil(record.sceneSize / 1024 / 1024) + 'M')
-            : '-';
+      [Tabs.name]: Tabs,
+      [Tabs.TabPane.name]: Tabs.TabPane,
+    },
+    setup() {
+      const { t } = useI18n();
+      const { createMessage, createConfirm } = useMessage();
+      const permissionStore = usePermissionStore();
+      const { getCheckPerm } = permissionStore;
+      const tableType = ref<Recordable>(0); //0看看 、1看见、2深时
+      const columns: BasicColumn[] = [
+        {
+          title: t('routes.scene.sceneName'),
+          dataIndex: 'sceneName',
+          slots: { customRender: 'href' },
+          width: 150,
         },
         },
-      },
-      {
-        title: t('routes.scene.isCopy'),
-        dataIndex: 'isCopy',
-        width: 130,
-        customRender: ({ record }) => {
-          return record.isCopy ? t('common.yes') : t('common.no');
+        {
+          title: t('routes.scene.num'),
+          dataIndex: 'num',
+          ellipsis: true,
+          width: 180,
         },
         },
-      },
-      {
-        title: t('routes.scene.copyTime'),
-        dataIndex: 'copyTime',
-        width: 140,
-        customRender: ({ record }) => {
-          return (
-            (record.copyTime &&
+        {
+          title: t('routes.scene.createTime'),
+          dataIndex: 'createTime',
+          width: 180,
+          customRender: ({ record }) => {
+            return (
+              record.createTime &&
               h(Time, {
               h(Time, {
-                value: record.copyTime,
+                value: record.createTime,
                 mode: 'datetime',
                 mode: 'datetime',
-              })) ||
-            '-'
-          );
-        },
-      },
-      {
-        title: t('routes.scene.userName'),
-        dataIndex: 'userName',
-        width: 140,
-      },
-      {
-        title: t('routes.scene.viewCount'),
-        dataIndex: 'viewCount',
-        width: 80,
-      },
-      {
-        title: t('routes.scene.status'),
-        dataIndex: 'status',
-        width: 80,
-        customRender: ({ record }) => {
-          let str;
-          switch (record.status - 0) {
-            case 0:
-              str = t('routes.scene.statusType.0');
-              break;
-            case 1:
-              str = t('routes.scene.statusType.1');
-              break;
-            case -2:
-              str = t('routes.scene.statusType.-2');
-              break;
-            case -1:
-              str = t('routes.scene.statusType.-1');
-              break;
-          }
-          return record.payStatus == -2 ? t('routes.scene.statusType.-3') : str;
+              })
+            );
+          },
         },
         },
-      },
-      {
-        title: t('common.operating'),
-        dataIndex: 'action',
-        slots: { customRender: 'action' },
-        ifShow: true,
-        fixed: 'right',
-        flag: 'ACTION',
-        width: 120,
-      },
-    ];
-    const searchForm: Partial<FormProps> = {
-      labelWidth: 130,
-      autoAdvancedLine: 1,
-      actionColOptions: {
-        span: 24,
-      },
-      schemas: [
         {
         {
-          field: 'sceneName',
-          label: t('routes.scene.sceneName'),
-          component: 'Input',
-          componentProps: {
-            maxLength: 100,
-          },
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          title: t('routes.scene.amount'),
+          dataIndex: 'amount',
+          width: 210,
+          customRender: ({ record }) => {
+            return (
+              (record.algorithmTime &&
+                h(Time, {
+                  value: record.algorithmTime,
+                  mode: 'datetime',
+                })) ||
+              '-'
+            );
           },
           },
         },
         },
         {
         {
-          label: t('routes.scene.num'),
-          field: 'num',
-          component: 'Input',
-          componentProps: {
-            maxLength: 100,
-          },
-          colProps: {
-            xl: 7,
-            xxl: 7,
-          },
+          title: t('routes.scene.snCode'),
+          dataIndex: 'snCode',
+          width: 180,
         },
         },
         {
         {
-          field: 'snCode',
-          label: t('routes.scene.snCode'),
-          component: 'Input',
-          componentProps: {
-            maxLength: 100,
+          title: t('routes.scene.sceneSize'),
+          dataIndex: 'sceneSize',
+          width: 120,
+          customRender: ({ record }) => {
+            return record.sceneSize && record.sceneSize != 0
+              ? h('span', { class: 'sceneSize' }, Math.ceil(record.sceneSize / 1024 / 1024) + 'M')
+              : '-';
           },
           },
-          colProps: {
-            xl: 7,
-            xxl: 7,
+        },
+        {
+          title: t('routes.scene.isCopy'),
+          dataIndex: 'isCopy',
+          width: 130,
+          customRender: ({ record }) => {
+            return record.isCopy ? t('common.yes') : t('common.no');
           },
           },
         },
         },
         {
         {
-          field: 'userName',
-          label: t('routes.scene.userName'),
-          component: 'Input',
-          componentProps: {
-            maxLength: 100,
+          title: t('routes.scene.copyTime'),
+          dataIndex: 'copyTime',
+          width: 140,
+          customRender: ({ record }) => {
+            return (
+              (record.copyTime &&
+                h(Time, {
+                  value: record.copyTime,
+                  mode: 'datetime',
+                })) ||
+              '-'
+            );
           },
           },
-          colProps: {
-            xl: 7,
-            xxl: 7,
+        },
+        {
+          title: t('routes.scene.userName'),
+          dataIndex: 'userName',
+          width: 140,
+        },
+        {
+          title: t('routes.scene.viewCount'),
+          dataIndex: 'viewCount',
+          width: 80,
+        },
+        {
+          title: t('routes.scene.status'),
+          dataIndex: 'status',
+          width: 80,
+          customRender: ({ record }) => {
+            let str;
+            switch (record.status - 0) {
+              case 0:
+                str = t('routes.scene.statusType.0');
+                break;
+              case 1:
+                str = t('routes.scene.statusType.1');
+                break;
+              case -2:
+                str = t('routes.scene.statusType.-2');
+                break;
+              case -1:
+                str = t('routes.scene.statusType.-1');
+                break;
+            }
+            return record.payStatus == -2 ? t('routes.scene.statusType.-3') : str;
           },
           },
         },
         },
         {
         {
-          field: 'timeList',
-          label: t('routes.scene.createTime'),
-          component: 'RangePicker',
-          componentProps: {
-            maxLength: 100,
-            valueFormat: 'YYYY-MM-DD',
-            format: 'YYYY-MM-DD',
+          title: t('common.operating'),
+          dataIndex: 'action',
+          slots: { customRender: 'action' },
+          ifShow: true,
+          fixed: 'right',
+          flag: 'ACTION',
+          width: 120,
+        },
+      ];
+      const searchForm: Partial<FormProps> = {
+        labelWidth: 130,
+        autoAdvancedLine: 1,
+        actionColOptions: {
+          span: 24,
+        },
+        schemas: [
+          {
+            field: 'sceneName',
+            label: t('routes.scene.sceneName'),
+            component: 'Input',
+            componentProps: {
+              maxLength: 100,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
           },
           },
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          {
+            label: t('routes.scene.num'),
+            field: 'num',
+            component: 'Input',
+            componentProps: {
+              maxLength: 100,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
           },
           },
+          {
+            field: 'snCode',
+            label: t('routes.scene.snCode'),
+            component: 'Input',
+            componentProps: {
+              maxLength: 100,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+          {
+            field: 'userName',
+            label: t('routes.scene.userName'),
+            component: 'Input',
+            componentProps: {
+              maxLength: 100,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+          {
+            field: 'timeList',
+            label: t('routes.scene.createTime'),
+            component: 'RangePicker',
+            componentProps: {
+              maxLength: 100,
+              valueFormat: 'YYYY-MM-DD',
+              format: 'YYYY-MM-DD',
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+        ],
+      };
+      function cancelDownload() {
+        downloadOption.value = {};
+      }
+      const [registerDownModal, { openModal: openDownModal }] = useModal();
+      const [registerMoveModal, { openModal: openMoveModal }] = useModal();
+      const [registerTable, { reload }] = useTable({
+        api: operateSceneList,
+        // title: `场景列表`,
+        // titleHelpMessage: ['已启用expandRowByClick', '已启用stopButtonPropagation'],
+        columns: columns,
+        searchInfo: { type: tableType },
+        useSearchForm: true,
+        formConfig: searchForm,
+        showTableSetting: true,
+        showIndexColumn: false,
+        rowKey: 'num',
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
         },
         },
-      ],
-    };
-    function cancelDownload() {
-      downloadOption.value = {};
-    }
-    const [registerDownModal, { openModal: openDownModal }] = useModal();
-    const [registerMoveModal, { openModal: openMoveModal }] = useModal();
-    const [registerTable, { reload }] = useTable({
-      api: operateSceneList,
-      // title: `场景列表`,
-      // titleHelpMessage: ['已启用expandRowByClick', '已启用stopButtonPropagation'],
-      columns: columns,
-      searchInfo: { type: tableType },
-      useSearchForm: true,
-      formConfig: searchForm,
-      showTableSetting: true,
-      showIndexColumn: false,
-      rowKey: 'num',
-      fetchSetting: {
-        pageField: 'pageNum',
-        sizeField: 'pageSize',
-        listField: 'list',
-        totalField: 'total',
-      },
-      canResize: true,
-    });
-    function changeTable(val: string) {
-      tableType.value = val;
-      reload();
-    }
-    async function handleCopy(record: Recordable) {
-      createConfirm({
-        title: t('routes.scene.copyTipsTitle'),
-        content: t('routes.scene.copyTipsText'),
-        onOk: async () => {
-          sceneCopy({ num: record.num }).then(() => {
-            message.success({
-              content: t('routes.scene.copySccuse'),
-            });
-            reload();
-          });
-        },
+        canResize: true,
       });
       });
-    }
-    async function handleDelete(record: Recordable) {
-      console.log('handleDelete', record);
-      // createConfirm({
-      //   title: '删除',
-      //   content: '确定要删除场景吗?',
-      //   onOk: async () => {
-      sceneDelete({ num: record.num }).then(() => {
-        message.success({
-          content: t('routes.scene.deleteSccuse'),
-        });
+      function changeTable(val: string) {
+        tableType.value = val;
         reload();
         reload();
-      });
-      //   },
-      // });
-    }
-    async function handleMove(record: Recordable) {
-      openMoveModal(true, {
-        ...record,
-      });
-    }
-    let timer: null = ref(null);
-    const downloadOption = ref<Object>({});
-    const canDownload = ref<boolean>(true);
-    function handleDownload(record: Recordable) {
-      console.log('handleDownload', record, canDownload.value);
-      canDownload.value = true;
-      checkDownLoad({ num: record.num }).then((res) => {
-        console.log(res);
-        if (res.downloadStatus != 3) {
-          // 未下载过,需要打包
-          sceneDownload({ num: record.num }).then((res) => {
-            console.log(res);
-            openDownModal(true, {
-              ...record,
+      }
+      async function handleCopy(record: Recordable) {
+        createConfirm({
+          title: t('routes.scene.copyTipsTitle'),
+          content: t('routes.scene.copyTipsText'),
+          onOk: async () => {
+            sceneCopy({ num: record.num }).then(() => {
+              message.success({
+                content: t('routes.scene.copySccuse'),
+              });
+              reload();
             });
             });
-            if (res.downloadStatus == 1) {
-              if (timer.value) {
-                afterClose();
+          },
+        });
+      }
+      async function handleDelete(record: Recordable) {
+        console.log('handleDelete', record);
+        // createConfirm({
+        //   title: '删除',
+        //   content: '确定要删除场景吗?',
+        //   onOk: async () => {
+        sceneDelete({ num: record.num }).then(() => {
+          message.success({
+            content: t('routes.scene.deleteSccuse'),
+          });
+          reload();
+        });
+        //   },
+        // });
+      }
+      async function handleMove(record: Recordable) {
+        openMoveModal(true, {
+          ...record,
+        });
+      }
+      let timer: null = ref(null);
+      const downloadOption = ref<Object>({});
+      const canDownload = ref<boolean>(true);
+      function handleDownload(record: Recordable) {
+        console.log('handleDownload', record, canDownload.value);
+        canDownload.value = true;
+        checkDownLoad({ num: record.num }).then((res) => {
+          console.log(res);
+          if (res.downloadStatus != 3) {
+            // 未下载过,需要打包
+            sceneDownload({ num: record.num }).then((res) => {
+              console.log(res);
+              openDownModal(true, {
+                ...record,
+              });
+              if (res.downloadStatus == 1) {
+                if (timer.value) {
+                  afterClose();
+                }
+                timer.value = setInterval(() => {
+                  downloadProcess({ num: record.num }).then((res) => {
+                    if (res.status == '1003') {
+                      createMessage.error(t('routes.scene.downErr'));
+                      afterClose();
+                      return;
+                    }
+                    if (res.percent >= 100) {
+                      canDownload.value = false;
+                      afterClose();
+                    }
+                    downloadOption.value = res;
+                    console.log(res);
+                  });
+                }, 1000);
               }
               }
-              timer.value = setInterval(() => {
-                downloadProcess({ num: record.num }).then((res) => {
-                  if (res.status == '1003') {
-                    createMessage.error(t('routes.scene.downErr'));
-                    afterClose();
-                    return;
-                  }
-                  if (res.percent >= 100) {
-                    canDownload.value = false;
-                    afterClose();
-                  }
-                  downloadOption.value = res;
-                  console.log(res);
-                });
-              }, 1000);
-            }
+            });
+          } else {
+            canDownload.value = false;
+            window.open(res.downloadUrl);
+          }
+        });
+      }
+      function afterClose() {
+        clearInterval(timer.value);
+        timer.value = null;
+      }
+      function handleReset(record: Recordable) {
+        console.log('handleReset', record);
+        rebuildScene({ num: record.num }).then(() => {
+          message.success({
+            content: t('common.optSuccess'),
           });
           });
-        } else {
-          canDownload.value = false;
-          window.open(res.downloadUrl);
-        }
-      });
-    }
-    function afterClose() {
-      clearInterval(timer.value);
-      timer.value = null;
-    }
-    function handleReset(record: Recordable) {
-      console.log('handleReset', record);
-      rebuildScene({ num: record.num }).then(() => {
-        message.success({
-          content: t('common.optSuccess'),
+          reload();
         });
         });
-        reload();
-      });
-    }
-    function getTypeCheckPerm(val) {
-      let myType = tableType.value;
-      return getCheckPerm(val) || getCheckPerm(`${val}-${myType}`);
-    }
-    return {
-      registerTable,
-      handleDelete,
-      handleCopy,
-      handleMove,
-      handleDownload,
-      handleReset,
-      tableType,
-      changeTable,
-      reload,
-      t,
-      openDownModal,
-      registerDownModal,
-      registerMoveModal,
-      afterClose,
-      timer,
-      canDownload,
-      downloadOption,
-      cancelDownload,
-      getTypeCheckPerm,
-    };
-  },
-});
+      }
+      function getTypeCheckPerm(val) {
+        let myType = tableType.value;
+        return getCheckPerm(val) || getCheckPerm(`${val}-${myType}`);
+      }
+      return {
+        registerTable,
+        handleDelete,
+        handleCopy,
+        handleMove,
+        handleDownload,
+        handleReset,
+        tableType,
+        changeTable,
+        reload,
+        t,
+        openDownModal,
+        registerDownModal,
+        registerMoveModal,
+        afterClose,
+        timer,
+        canDownload,
+        downloadOption,
+        cancelDownload,
+        getTypeCheckPerm,
+      };
+    },
+  });
 </script>
 </script>
 <style lang="less" scoped>
 <style lang="less" scoped>
-// .tableHeader {
-//   height: 50px;
-//   display: flex;
-//   align-items: center;
+  // .tableHeader {
+  //   height: 50px;
+  //   display: flex;
+  //   align-items: center;
 
 
-//   .item {
-//     font-size: 14px;
-//     color: #666;
-//     margin-right: 10px;
-//     cursor: pointer;
-//     &.active {
-//       font-weight: bold;
-//       color: #222;
-//     }
-//   }
-// }
-.desc-wrap-BasicTable {
-  background-color: #f0f2f5;
-  .vben-basic-table-form-container {
-    padding: 0;
+  //   .item {
+  //     font-size: 14px;
+  //     color: #666;
+  //     margin-right: 10px;
+  //     cursor: pointer;
+  //     &.active {
+  //       font-weight: bold;
+  //       color: #222;
+  //     }
+  //   }
+  // }
+  .desc-wrap-BasicTable {
+    background-color: #f0f2f5;
+    .vben-basic-table-form-container {
+      padding: 0;
+    }
   }
   }
-}
 </style>
 </style>

+ 15 - 17
src/views/scene/sxz.vue

@@ -4,8 +4,8 @@
       <!-- <a-button type="primary" @click="exportExcel"> 导出1</a-button> -->
       <!-- <a-button type="primary" @click="exportExcel"> 导出1</a-button> -->
     </template>
     </template>
     <template #href="{ record }">
     <template #href="{ record }">
-          <a v-if="record.sceneName" target="_blank" :href="record.thumb">{{record.sceneName}}</a>
-          <span v-else>-</span>
+      <a v-if="record.sceneName" target="_blank" :href="record.thumb">{{ record.sceneName }}</a>
+      <span v-else>-</span>
     </template>
     </template>
     <template #action="{ record }">
     <template #action="{ record }">
       <TableAction
       <TableAction
@@ -13,13 +13,13 @@
         :actions="[
         :actions="[
           {
           {
             label: '同屏',
             label: '同屏',
-            ifShow:getCheckPerm('scheme-view'),
+            ifShow: getCheckPerm('scheme-view'),
             // icon: 'akar-icons:double-check',
             // icon: 'akar-icons:double-check',
           },
           },
           {
           {
             label: '删除',
             label: '删除',
             // icon: 'ic:outline-delete-outline',
             // icon: 'ic:outline-delete-outline',
-            ifShow:getCheckPerm('scheme-delete'),
+            ifShow: getCheckPerm('scheme-delete'),
             color: 'error',
             color: 'error',
             popConfirm: {
             popConfirm: {
               title: '是否删除?',
               title: '是否删除?',
@@ -212,22 +212,20 @@
       async function handleDelete(record: Recordable) {
       async function handleDelete(record: Recordable) {
         console.log('handleDelete', record);
         console.log('handleDelete', record);
 
 
-        sceneDelete({ num: record.num })
-          .then(() => {
-            message.success({
-              content: '删除成功',
-            });
+        sceneDelete({ num: record.num }).then(() => {
+          message.success({
+            content: '删除成功',
+          });
 
 
-            reload();
-          })
+          reload();
+        });
       }
       }
       async function handleMove(record: Recordable) {
       async function handleMove(record: Recordable) {
-        sceneMove({ snCode: record.snCode, num: record.num })
-          .then(() => {
-            message.success({
-              content: '迁移成功',
-            });
-          })
+        sceneMove({ snCode: record.snCode, num: record.num }).then(() => {
+          message.success({
+            content: '迁移成功',
+          });
+        });
       }
       }
       function handleDownload(record: Recordable) {
       function handleDownload(record: Recordable) {
         console.log('handleDownload', record);
         console.log('handleDownload', record);

+ 15 - 17
src/views/scene/viewKankan.vue

@@ -4,8 +4,8 @@
       <!-- <a-button type="primary" @click="exportExcel"> 导出1</a-button> -->
       <!-- <a-button type="primary" @click="exportExcel"> 导出1</a-button> -->
     </template>
     </template>
     <template #href="{ record }">
     <template #href="{ record }">
-          <a v-if="record.name" target="_blank" :href="record.share">{{record.name}}</a>
-          <span v-else>-</span>
+      <a v-if="record.name" target="_blank" :href="record.share">{{ record.name }}</a>
+      <span v-else>-</span>
     </template>
     </template>
     <template #action="{ record }">
     <template #action="{ record }">
       <TableAction
       <TableAction
@@ -14,7 +14,7 @@
           {
           {
             label: '删除',
             label: '删除',
             color: 'error',
             color: 'error',
-            ifShow:getCheckPerm('projects-delete'),
+            ifShow: getCheckPerm('projects-delete'),
             popConfirm: {
             popConfirm: {
               title: '是否删除?',
               title: '是否删除?',
               confirm: handleDelete.bind(null, record),
               confirm: handleDelete.bind(null, record),
@@ -132,7 +132,7 @@
       ];
       ];
       const searchForm: Partial<FormProps> = {
       const searchForm: Partial<FormProps> = {
         labelWidth: 100,
         labelWidth: 100,
-        autoSubmitOnEnter:true,
+        autoSubmitOnEnter: true,
         schemas: [
         schemas: [
           {
           {
             field: 'sceneName',
             field: 'sceneName',
@@ -182,22 +182,20 @@
       async function handleDelete(record: Recordable) {
       async function handleDelete(record: Recordable) {
         console.log('handleDelete', record);
         console.log('handleDelete', record);
 
 
-        overallDelete({ id: record.id })
-          .then(() => {
-            message.success({
-              content: '删除成功',
-            });
+        overallDelete({ id: record.id }).then(() => {
+          message.success({
+            content: '删除成功',
+          });
 
 
-            reload();
-          })
+          reload();
+        });
       }
       }
       async function handleMove(record: Recordable) {
       async function handleMove(record: Recordable) {
-        sceneMove({ snCode: record.snCode, num: record.num })
-          .then(() => {
-            message.success({
-              content: '迁移成功',
-            });
-          })
+        sceneMove({ snCode: record.snCode, num: record.num }).then(() => {
+          message.success({
+            content: '迁移成功',
+          });
+        });
       }
       }
       function handleDownload(record: Recordable) {
       function handleDownload(record: Recordable) {
         console.log('handleDownload', record);
         console.log('handleDownload', record);

+ 81 - 81
src/views/spares/RoleDrawer.vue

@@ -9,93 +9,93 @@
     @ok="handleSubmit"
     @ok="handleSubmit"
   >
   >
     <div class="pt-2px pr-3px">
     <div class="pt-2px pr-3px">
-      <BasicTable @register="registerTable"></BasicTable>
+      <BasicTable @register="registerTable" />
     </div>
     </div>
   </BasicModal>
   </BasicModal>
 </template>
 </template>
 <script lang="ts">
 <script lang="ts">
-import { defineComponent, reactive, ref } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { BasicForm } from '/@/components/Form/index';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { partInStockLog, partInStock } from '/@/api/spares';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { useTable, BasicTable, BasicColumn } from '/@/components/Table';
+  import { defineComponent, reactive, ref } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { partInStockLog, partInStock } from '/@/api/spares';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { useTable, BasicTable, BasicColumn } from '/@/components/Table';
 
 
-const { t } = useI18n();
-export default defineComponent({
-  components: { BasicModal, BasicTable },
-  props: {
-    userData: { type: Object },
-  },
-  emits: ['update', 'register'],
-  setup(props, { emit }) {
-    const fileFlow = reactive({
-      file: null,
-      type: 2, //2-普通发票,3-专用发票
-    });
-    const loading = ref(false);
-    const { createMessage } = useMessage();
-    const columns: BasicColumn[] = [
-      {
-        title: '备件编号',
-        dataIndex: 'partId',
-        width: 80,
-      },
-      {
-        title: '备件名称',
-        dataIndex: 'partName',
-        width: 180,
-      },
-      {
-        title: '入库数量',
-        dataIndex: 'count',
-        width: 80,
-      },
-      {
-        title: '操作人',
-        dataIndex: 'sysUserName',
-        width: 100,
-      },
-      {
-        title: '操作时间',
-        dataIndex: 'createTime',
-        width: 150,
-      },
-    ];
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicTable },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update', 'register'],
+    setup(props, { emit }) {
+      const fileFlow = reactive({
+        file: null,
+        type: 2, //2-普通发票,3-专用发票
+      });
+      const loading = ref(false);
+      const { createMessage } = useMessage();
+      const columns: BasicColumn[] = [
+        {
+          title: '备件编号',
+          dataIndex: 'partId',
+          width: 80,
+        },
+        {
+          title: '备件名称',
+          dataIndex: 'partName',
+          width: 180,
+        },
+        {
+          title: '入库数量',
+          dataIndex: 'count',
+          width: 80,
+        },
+        {
+          title: '操作人',
+          dataIndex: 'sysUserName',
+          width: 100,
+        },
+        {
+          title: '操作时间',
+          dataIndex: 'createTime',
+          width: 150,
+        },
+      ];
 
 
-    const [registerTable, { reload }] = useTable({
-      api: partInStockLog,
-      columns,
-      useSearchForm: false,
-      showTableSetting: true,
-      bordered: true,
-      showIndexColumn: false,
-      canResize: true,
-      fetchSetting: {
-        pageField: 'pageNum',
-        sizeField: 'pageSize',
-        listField: 'list',
-        totalField: 'total',
-      },
-    });
-    const [register, { closeModal }] = useModalInner((data) => {
+      const [registerTable, { reload }] = useTable({
+        api: partInStockLog,
+        columns,
+        useSearchForm: false,
+        showTableSetting: true,
+        bordered: true,
+        showIndexColumn: false,
+        canResize: true,
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
+        },
+      });
+      const [register, { closeModal }] = useModalInner((data) => {
         data && onDataReceive(data);
         data && onDataReceive(data);
       });
       });
-    function onDataReceive(data) {
-      reload();
-    }
-    const handleSubmit = async () => {
-      closeModal()
-    };
-    return {
-      register,
-      registerTable,
-      fileFlow,
-      handleSubmit,
-      loading,
-      t,
-    };
-  },
-});
+      function onDataReceive(data) {
+        reload();
+      }
+      const handleSubmit = async () => {
+        closeModal();
+      };
+      return {
+        register,
+        registerTable,
+        fileFlow,
+        handleSubmit,
+        loading,
+        t,
+      };
+    },
+  });
 </script>
 </script>

+ 156 - 155
src/views/spares/detail.vue

@@ -34,7 +34,7 @@
               {{ detailData.customerAddress.sendType ? '前台送修' : '快递寄送' }}
               {{ detailData.customerAddress.sendType ? '前台送修' : '快递寄送' }}
             </DescriptionsItem>
             </DescriptionsItem>
             <DescriptionsItem label="保修类型">
             <DescriptionsItem label="保修类型">
-              {{ t(`routes.spares.warrantyType.${detailData.repairerVo.warrantyType}`)}}
+              {{ t(`routes.spares.warrantyType.${detailData.repairerVo.warrantyType}`) }}
             </DescriptionsItem>
             </DescriptionsItem>
             <DescriptionsItem label="维修单号">
             <DescriptionsItem label="维修单号">
               {{ detailData.orderReceivingVo.repairId }}
               {{ detailData.orderReceivingVo.repairId }}
@@ -51,7 +51,7 @@
                     v-for="item in detailData.repairerVo.faultImg"
                     v-for="item in detailData.repairerVo.faultImg"
                     :key="item"
                     :key="item"
                     :src="item"
                     :src="item"
-                  ></Image>
+                  />
                 </PreviewGroup>
                 </PreviewGroup>
               </div>
               </div>
             </DescriptionsItem>
             </DescriptionsItem>
@@ -64,7 +64,7 @@
                     v-for="item in detailData.orderReceivingVo?.orderFaultImg"
                     v-for="item in detailData.orderReceivingVo?.orderFaultImg"
                     :key="item"
                     :key="item"
                     :src="item"
                     :src="item"
-                  ></Image>
+                  />
                 </PreviewGroup>
                 </PreviewGroup>
               </div>
               </div>
             </DescriptionsItem>
             </DescriptionsItem>
@@ -83,7 +83,7 @@
                     v-for="item in detailData.repairRegisterVo.checkImg"
                     v-for="item in detailData.repairRegisterVo.checkImg"
                     :key="item"
                     :key="item"
                     :src="item"
                     :src="item"
-                  ></Image>
+                  />
                 </PreviewGroup>
                 </PreviewGroup>
               </div>
               </div>
             </DescriptionsItem>
             </DescriptionsItem>
@@ -96,7 +96,7 @@
           </Descriptions>
           </Descriptions>
           <Descriptions title="维修清单" :column="3" layout="vertical">
           <Descriptions title="维修清单" :column="3" layout="vertical">
             <DescriptionsItem label="备件信息" :span="3">
             <DescriptionsItem label="备件信息" :span="3">
-              <BasicTable @register="registerTable"></BasicTable>
+              <BasicTable @register="registerTable" />
             </DescriptionsItem>
             </DescriptionsItem>
           </Descriptions>
           </Descriptions>
           <Descriptions :column="3">
           <Descriptions :column="3">
@@ -130,7 +130,7 @@
                     v-for="item in [detailData.repairPay.payImg]"
                     v-for="item in [detailData.repairPay.payImg]"
                     :key="item"
                     :key="item"
                     :src="item"
                     :src="item"
-                  ></Image>
+                  />
                 </PreviewGroup>
                 </PreviewGroup>
               </div>
               </div>
             </DescriptionsItem>
             </DescriptionsItem>
@@ -146,7 +146,8 @@
             >
             >
             <DescriptionsItem label="收件信息" :span="2" v-if="detailData.customerAddress">
             <DescriptionsItem label="收件信息" :span="2" v-if="detailData.customerAddress">
               {{ detailData.customerAddress.getAddrName }}
               {{ detailData.customerAddress.getAddrName }}
-              {{ detailData.customerAddress.getAddrPhone }}{{ detailData.customerAddress.getAddress }}
+              {{ detailData.customerAddress.getAddrPhone
+              }}{{ detailData.customerAddress.getAddress }}
             </DescriptionsItem>
             </DescriptionsItem>
           </Descriptions>
           </Descriptions>
           <!-- <Descriptions title="单据下载" :column="3">
           <!-- <Descriptions title="单据下载" :column="3">
@@ -221,7 +222,7 @@
               >
               >
               <div class="iamgeList">
               <div class="iamgeList">
                 <PreviewGroup>
                 <PreviewGroup>
-                  <Image :width="80" v-for="item in [logo]" :key="item" :src="item"></Image>
+                  <Image :width="80" v-for="item in [logo]" :key="item" :src="item" />
                 </PreviewGroup>
                 </PreviewGroup>
               </div>
               </div>
             </div>
             </div>
@@ -240,25 +241,25 @@
   </div>
   </div>
 </template>
 </template>
 <script lang="ts">
 <script lang="ts">
-import { defineComponent, ref, onMounted, reactive } from 'vue';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { useRouter } from 'vue-router';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { detail, process } from '/@/api/spares';
-import { detailResult } from '/@/api/spares/model';
-import logo from '/@/assets/images/grey-logo.png';
-import { BasicTable, useTable, BasicColumn, TableImg } from '/@/components/Table';
-import {
-  Timeline,
-  // TimelineItem,
-  Descriptions,
-  // DescriptionsItem,
-  Image,
-  // ImagePreviewGroup,
-} from 'ant-design-vue';
-import { cloneDeep } from 'lodash-es';
-export default defineComponent({
-  components: {
+  import { defineComponent, ref, onMounted, reactive } from 'vue';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { useRouter } from 'vue-router';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { detail, process } from '/@/api/spares';
+  import { detailResult } from '/@/api/spares/model';
+  import logo from '/@/assets/images/grey-logo.png';
+  import { BasicTable, useTable, BasicColumn, TableImg } from '/@/components/Table';
+  import {
+    Timeline,
+    // TimelineItem,
+    Descriptions,
+    // DescriptionsItem,
+    Image,
+    // ImagePreviewGroup,
+  } from 'ant-design-vue';
+  import { cloneDeep } from 'lodash-es';
+  export default defineComponent({
+    components: {
       Image,
       Image,
       Descriptions: Descriptions,
       Descriptions: Descriptions,
       DescriptionsItem: Descriptions.Item,
       DescriptionsItem: Descriptions.Item,
@@ -266,141 +267,141 @@ export default defineComponent({
       [Timeline.Item.name]: Timeline.Item,
       [Timeline.Item.name]: Timeline.Item,
       PreviewGroup: Image.PreviewGroup,
       PreviewGroup: Image.PreviewGroup,
     },
     },
-  setup(props) {
-    const router = useRouter();
-    const { createMessage } = useMessage();
-    const { t } = useI18n();
-    const repairId = ref<string | string[]>(router.currentRoute.value.params.id || '0');
-    const detailData = ref<detailResult>({
-      customer: {},
-      customerAddress: {},
-      repairerVo: {},
-      RepairTestVo: {},
-      repairRegisterVo: {},
-      orderReceivingVo: {},
-      repairPay: {},
-      RepairComment: {},
-      priceList: [],
-    });
-    const stepList = ref<any>([]);
-    const butList = ref([]);
-    onMounted(() => {
-      getData();
-    });
-    let dataSource = reactive<any>([]);
-    const columns: BasicColumn[] = [
-      {
-        title: '备件名称',
-        dataIndex: 'name',
-        width: 150,
-      },
-      {
-        title: '单价(元)',
-        dataIndex: 'price',
-        width: 100,
-      },
-      {
-        title: '数量',
-        dataIndex: 'count',
-        width: 110,
-      },
-      {
-        title: '小计(元)',
-        dataIndex: 'total',
-        width: 140,
-      },
-    ];
-    async function getData() {
-      let res = await detail({ repairId: repairId.value });
-      detailData.value = res;
-      let countItem = {
-        id: 3,
-        price: null,
-        name: '',
-        count: '合计(元)',
-        total: 0,
-      };
-      dataSource = res.priceList.map((ele) => {
-        countItem.total = countItem.total + ele.price * ele.count;
-        return {
-          ...ele,
-          total: ele.price * ele.count,
+    setup(props) {
+      const router = useRouter();
+      const { createMessage } = useMessage();
+      const { t } = useI18n();
+      const repairId = ref<string | string[]>(router.currentRoute.value.params.id || '0');
+      const detailData = ref<detailResult>({
+        customer: {},
+        customerAddress: {},
+        repairerVo: {},
+        RepairTestVo: {},
+        repairRegisterVo: {},
+        orderReceivingVo: {},
+        repairPay: {},
+        RepairComment: {},
+        priceList: [],
+      });
+      const stepList = ref<any>([]);
+      const butList = ref([]);
+      onMounted(() => {
+        getData();
+      });
+      let dataSource = reactive<any>([]);
+      const columns: BasicColumn[] = [
+        {
+          title: '备件名称',
+          dataIndex: 'name',
+          width: 150,
+        },
+        {
+          title: '单价(元)',
+          dataIndex: 'price',
+          width: 100,
+        },
+        {
+          title: '数量',
+          dataIndex: 'count',
+          width: 110,
+        },
+        {
+          title: '小计(元)',
+          dataIndex: 'total',
+          width: 140,
+        },
+      ];
+      async function getData() {
+        let res = await detail({ repairId: repairId.value });
+        detailData.value = res;
+        let countItem = {
+          id: 3,
+          price: null,
+          name: '',
+          count: '合计(元)',
+          total: 0,
+        };
+        dataSource = res.priceList.map((ele) => {
+          countItem.total = countItem.total + ele.price * ele.count;
+          return {
+            ...ele,
+            total: ele.price * ele.count,
+          };
+        });
+        setTableData(cloneDeep([...dataSource, countItem]));
+        const stepRes = await process({ repairId: repairId.value });
+        let butTypeList = {
+          0: ['接单'],
+          1: ['检测登记'],
+          2: ['报价'],
+          3: ['修改报价'],
+          4: ['付款登记'],
+          5: ['备件出库'],
+          6: ['添加备件', '完成维修'],
+          7: ['备件回收'],
+          8: ['测试登记'],
+          9: ['付款登记'],
+          10: ['发货登记'],
         };
         };
+        butList.value = stepRes[0] ? butTypeList[stepRes[0].repairStatus || 0] : ['接单'];
+        stepList.value = stepRes;
+        console.log('repairId', dataSource, stepRes, butList.value);
+      }
+      function goBack() {
+        router.go(-1);
+      }
+      function handleSubmit() {
+        createMessage.success(t('common.optSuccess'));
+      }
+      const [registerTable, { setTableData }] = useTable({
+        dataSource: dataSource,
+        columns,
+        showSummary: true,
+        showIndexColumn: false,
+        rowKey: 'id',
+        pagination: false,
+        bordered: true,
+        canResize: false,
       });
       });
-      setTableData(cloneDeep([...dataSource, countItem]));
-      const stepRes = await process({ repairId: repairId.value });
-      let butTypeList = {
-        0: ['接单'],
-        1: ['检测登记'],
-        2: ['报价'],
-        3: ['修改报价'],
-        4: ['付款登记'],
-        5: ['备件出库'],
-        6: ['添加备件', '完成维修'],
-        7: ['备件回收'],
-        8: ['测试登记'],
-        9: ['付款登记'],
-        10: ['发货登记'],
-      };
-      butList.value = stepRes[0] ? butTypeList[stepRes[0].repairStatus || 0] : ['接单'];
-      stepList.value = stepRes;
-      console.log('repairId', dataSource, stepRes, butList.value);
-    }
-    function goBack() {
-      router.go(-1);
-    }
-    function handleSubmit() {
-      createMessage.success(t('common.optSuccess'));
-    }
-    const [registerTable, { setTableData }] = useTable({
-      dataSource: dataSource,
-      columns,
-      showSummary: true,
-      showIndexColumn: false,
-      rowKey: 'id',
-      pagination: false,
-      bordered: true,
-      canResize: false,
-    });
 
 
-    return {
-      registerTable,
-      handleSubmit,
-      goBack,
-      butList,
-      dataSource,
-      stepList,
-      t,
-    };
-  },
-});
+      return {
+        registerTable,
+        handleSubmit,
+        goBack,
+        butList,
+        dataSource,
+        stepList,
+        t,
+      };
+    },
+  });
 </script>
 </script>
 <style lang="less" scoped>
 <style lang="less" scoped>
-.detailPage {
-  margin: 20px;
-  padding: 20px;
-  background-color: #fff;
-  .topButton {
-    text-align: right;
-  }
-  .content {
-    width: 100%;
-    display: flex;
-    justify-content: space-between;
-
-    &_right {
-      width: 400px;
-      padding: 40px 20px;
+  .detailPage {
+    margin: 20px;
+    padding: 20px;
+    background-color: #fff;
+    .topButton {
+      text-align: right;
     }
     }
-    &_left {
-      width: calc(100% - 400px);
+    .content {
+      width: 100%;
+      display: flex;
+      justify-content: space-between;
+
+      &_right {
+        width: 400px;
+        padding: 40px 20px;
+      }
+      &_left {
+        width: calc(100% - 400px);
+      }
     }
     }
-  }
-  .bottom_but {
-    text-align: center;
-    button {
-      margin: 20px;
+    .bottom_but {
+      text-align: center;
+      button {
+        margin: 20px;
+      }
     }
     }
   }
   }
-}
 </style>
 </style>

+ 16 - 9
src/views/spares/list.vue

@@ -2,16 +2,23 @@
   <div>
   <div>
     <BasicTable @register="registerTable">
     <BasicTable @register="registerTable">
       <template #toolbar>
       <template #toolbar>
-        <a-button type="primary" @click="handleRole" v-if="getCheckPerm('spares_AddType')"> 新增备件类型 </a-button>
-        <a-button type="primary" @click="handleIn" v-if="getCheckPerm('spares_In')"> 备件入库 </a-button>
-        <a-button type="primary" @click="handleCreate" v-if="getCheckPerm('spares_InList')"> 入库记录 </a-button>
+        <a-button type="primary" @click="handleRole" v-if="getCheckPerm('spares_AddType')">
+          新增备件类型
+        </a-button>
+        <a-button type="primary" @click="handleIn" v-if="getCheckPerm('spares_In')">
+          备件入库
+        </a-button>
+        <a-button type="primary" @click="handleCreate" v-if="getCheckPerm('spares_InList')">
+          入库记录
+        </a-button>
       </template>
       </template>
       <template #action="{ record }">
       <template #action="{ record }">
-        <TableAction  v-if="record.id != 1"
+        <TableAction
+          v-if="record.id != 1"
           :actions="[
           :actions="[
             {
             {
               label: t('common.edit'),
               label: t('common.edit'),
-              ifShow:getCheckPerm('spares_edit'),
+              ifShow: getCheckPerm('spares_edit'),
               onClick: handleRole.bind(null, record),
               onClick: handleRole.bind(null, record),
             },
             },
           ]"
           ]"
@@ -27,7 +34,7 @@
   import { defineComponent, nextTick } from 'vue';
   import { defineComponent, nextTick } from 'vue';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { BasicTable, useTable, TableAction } from '/@/components/Table';
   import { BasicTable, useTable, TableAction } from '/@/components/Table';
-  import { partList } from '/@/api/spares';//deleteRoleApi
+  import { partList } from '/@/api/spares'; //deleteRoleApi
   import RoleDrawer from './RoleDrawer.vue';
   import RoleDrawer from './RoleDrawer.vue';
   import SpareModal from './spareModal.vue';
   import SpareModal from './spareModal.vue';
   import SpareInModal from './spareInModal.vue';
   import SpareInModal from './spareInModal.vue';
@@ -39,12 +46,12 @@
 
 
   export default defineComponent({
   export default defineComponent({
     name: 'RoleManagement',
     name: 'RoleManagement',
-    components: { BasicTable, TableAction,  RoleDrawer, SpareModal, SpareInModal },// 
+    components: { BasicTable, TableAction, RoleDrawer, SpareModal, SpareInModal }, //
     setup() {
     setup() {
       const { t } = useI18n();
       const { t } = useI18n();
-      const [registerTableModal, { openModal:openTableModal }] = useModal();
+      const [registerTableModal, { openModal: openTableModal }] = useModal();
       const [register, { openModal }] = useModal();
       const [register, { openModal }] = useModal();
-      const [registerIn, { openModal:openInModal }] = useModal();
+      const [registerIn, { openModal: openInModal }] = useModal();
       const permissionStore = usePermissionStore();
       const permissionStore = usePermissionStore();
       const { getCheckPerm } = permissionStore;
       const { getCheckPerm } = permissionStore;
       // const userStore = useUserStore();
       // const userStore = useUserStore();

+ 0 - 0
src/views/spares/orderEntryModal.vue


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است