tangning 2 лет назад
Родитель
Сommit
4b17e1b624
48 измененных файлов с 199 добавлено и 140 удалено
  1. 11 12
      src/api/staff/list.ts
  2. 10 0
      src/api/statistics/index.ts
  3. 0 5
      src/components/Upload/src/UploadModal.vue
  4. 2 3
      src/components/Upload/src/UploadPreviewModal.vue
  5. 2 1
      src/components/Upload/src/data.tsx
  6. 2 1
      src/components/Upload/src/helper.ts
  7. 3 0
      src/views/account/data.ts
  8. 3 3
      src/views/account/details/OrderList.vue
  9. 1 1
      src/views/account/lists.vue
  10. 1 0
      src/views/account/overview/caremModal.vue
  11. 1 0
      src/views/account/overview/interesModal.vue
  12. 4 1
      src/views/account/product/AddModal.vue
  13. 3 0
      src/views/account/product/EditModal.vue
  14. 1 0
      src/views/customer/modal/InfoModal.vue
  15. 13 1
      src/views/invoice/InvoiceModal.vue
  16. 3 0
      src/views/invoice/data.tsx
  17. 1 2
      src/views/invoice/index.vue
  18. 1 0
      src/views/operate/components/agent/addModal.vue
  19. 1 5
      src/views/operate/components/message/addModal.vue
  20. 2 2
      src/views/operate/components/new/addModal.vue
  21. 1 1
      src/views/operate/components/recruit/addModal.vue
  22. 1 1
      src/views/operate/components/scene/addModal.vue
  23. 2 2
      src/views/operate/data.tsx
  24. 1 1
      src/views/operate/messageList.vue
  25. 1 1
      src/views/operate/newsList.vue
  26. 4 2
      src/views/operate/recruitList.vue
  27. 1 0
      src/views/operate/sceneList.vue
  28. 11 7
      src/views/order/cameraList.vue
  29. 12 8
      src/views/order/downloadList.vue
  30. 12 7
      src/views/order/equityList.vue
  31. 5 2
      src/views/product/AddModal.vue
  32. 4 1
      src/views/product/EditModal.vue
  33. 2 2
      src/views/product/app/AddModal.vue
  34. 20 42
      src/views/product/app/index.vue
  35. 2 1
      src/views/product/firmware/AddModal.vue
  36. 3 0
      src/views/product/firmware/EditModal.vue
  37. 1 1
      src/views/product/firmware/index.vue
  38. 8 2
      src/views/product/sdk/AddModal.vue
  39. 7 1
      src/views/product/sdk/EditModal.vue
  40. 15 2
      src/views/product/sdk/index.vue
  41. 1 1
      src/views/productOperation/cameraScene.vue
  42. 1 1
      src/views/productOperation/sxz.vue
  43. 1 1
      src/views/productOperation/viewKankan.vue
  44. 1 2
      src/views/staff/detailsModal.vue
  45. 1 0
      src/views/staff/list.vue
  46. 13 13
      src/views/statistics/scene/index.vue
  47. 1 0
      src/views/system/role/index.vue
  48. 2 1
      src/views/system/role/role.data.ts

+ 11 - 12
src/api/staff/list.ts

@@ -118,18 +118,17 @@ export const checkUserApi = (params) =>
   });
 
 export const saveApi = (params) =>
-  defHttp.post<Result>({
-    url: Api.staffSave,
-    params:{
-        ...params,
-        userName:params.username,
-        password: encodeStr(window.btoa(params.password))
-    },
-    headers: {
-      // @ts-ignore
-      ignoreCancelToken: true,
-    },
-  });
+defHttp.post<Result>({
+  url: Api.staffSave,
+  params:{
+      ...params,
+      password: encodeStr(window.btoa(params.password))
+  },
+  headers: {
+    // @ts-ignore
+    ignoreCancelToken: true,
+  },
+});
 export const updateApi = (params) =>
   defHttp.post<Result>({
     url: Api.update,

+ 10 - 0
src/api/statistics/index.ts

@@ -12,6 +12,7 @@ enum Api {
   orderTrend = '/service/manage/data/orderTrend',
   cameraTrend = '/service/manage/data/cameraTrend',
   sceneTrend = '/service/manage/data/sceneTrend',
+  sceneTotal = '/service/manage/data/sceneTotal',
   cameraExport = '/service/manage/order/camera/export',
   downExport = '/service/manage/order/down/export',
   incrementExport = '/service/manage/order/increment/export',
@@ -101,6 +102,15 @@ export const buryPointList = (params: PageParams) =>
     },
   });
   
+  export const sceneTotal = () =>
+  defHttp.get<Result>({
+    url: Api.sceneTotal,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+  
   export const sceneTrend = (params) =>
   defHttp.get<Result>({
     url: Api.sceneTrend,

+ 0 - 5
src/components/Upload/src/UploadModal.vue

@@ -197,7 +197,6 @@
         return str;
       }
       async function uploadApiByItem(item: FileItem) {
-        console.log('item', props, item);
         const { api, afterFetch } = props;
         if (!api || !isFunction(api)) {
           return warn('upload api must exist and be a function');
@@ -222,7 +221,6 @@
               item.percent = complete;
             },
           );
-          console.log('item',item,data)
           item.status = UploadResultStatus.SUCCESS;
           item.responseData = data;
 
@@ -245,7 +243,6 @@
       }
       //上传文件流
       async function uploadFileFlow(item: FileItem) {
-        console.log('item', props, item);
         const { afterFetch } = props;
         try {
           let isZh = false;
@@ -276,7 +273,6 @@
       // 点击开始上传
       async function handleStartUpload() {
         const { maxNumber,fileFlow } = props;
-        console.log('uploadApiByItem',props)
         if ((fileListRef.value.length + props.previewFileList?.length ?? 0) > maxNumber) {
           return createMessage.warning(t('component.upload.maxNumber', [maxNumber]));
         }
@@ -319,7 +315,6 @@
 
         for (const item of fileListRef.value) {
           const { status, responseData } = item;
-          console.log('responseData', item);
           if (status === UploadResultStatus.SUCCESS && responseData) {
             if(fileFlow){
               fileList.push({

+ 2 - 3
src/components/Upload/src/UploadPreviewModal.vue

@@ -34,9 +34,8 @@
       watch(
         () => props.value,
         (value) => {
-          console.log('watch',value,props)
           if (!isArray(value)) value = [];
-          const fileFlow = toRefs(props)?.fileFlow
+          const fileFlow = props.fileFlow
           fileListRef.value = value
             .filter((item) => !!item)
             .map((item) => {
@@ -82,7 +81,7 @@
         register,
         closeModal,
         fileListRef,
-        columns: createPreviewColumns(props.fileFlow) as any[],
+        columns: createPreviewColumns() as any[],
         actionColumn: createPreviewActionColumn({ handleRemove, handleDownload }) as any,
       };
     },

+ 2 - 1
src/components/Upload/src/data.tsx

@@ -103,13 +103,14 @@ export function createActionColumn(handleRemove: Function): BasicColumn {
   };
 }
 // 文件预览列表
-export function createPreviewColumns(fileFlow:Boolean): BasicColumn[] {
+export function createPreviewColumns(): BasicColumn[] {
   return [
     {
       dataIndex: 'url',
       title: t('component.upload.legend'),
       width: 100,
       customRender: ({ record }) => {
+        console.log('record',record)
         const { url } = (record as PreviewFileItem) || {};
         if(validateBase64(url)){
           return <ThumbUrl fileUrl={url} />

+ 2 - 1
src/components/Upload/src/helper.ts

@@ -11,9 +11,10 @@ export function checkImgType(file: File) {
 }
 
 export function isImgTypeByName(name: string) {
+  console.log('isImgTypeByName',name)
   // return /\.(jpg|jpeg|png|gif)$/i.test(name);
   // return /\.(jpg|jpeg|png|gif)$/i.test(name.split('?').shift());
-  return /\.(jpg|jpeg|png|gif)|:image$/i.test(name.split('?').shift());
+  return /\.(jpg|jpeg|png|gif)$/i.test(name.split('?').shift());
 }
 
 // 校验内容是否包含base64格式的图片

+ 3 - 0
src/views/account/data.ts

@@ -54,6 +54,9 @@ export const baseSetschemas: FormSchema[] = [
     field: 'introduction',
     component: 'InputTextArea',
     label: '个人简介',
+    componentProps: {
+      rows:4,
+    },
     colProps: { span: 18 },
   },
   {

+ 3 - 3
src/views/account/details/OrderList.vue

@@ -113,7 +113,7 @@ export default defineComponent({
       //   dataIndex: 'action',
       //   slots: { customRender: 'action' },
       // },
-      canResize: false,
+      canResize: true,
     });
     
     const [registerCamera, { reload:Camerareload }] = useTable({
@@ -132,7 +132,7 @@ export default defineComponent({
         listField: 'list',
         totalField: 'total',
       },
-      canResize: false,
+      canResize: true,
     });
     const [registerTimeTable, { reload }] = useTable({
       api: IncrementList,
@@ -157,7 +157,7 @@ export default defineComponent({
       //   dataIndex: 'action',
       //   slots: { customRender: 'action' },
       // },
-      canResize: false,
+      canResize: true,
     });
     function tabChange(val: string) {
       console.log('tabChange', val);

+ 1 - 1
src/views/account/lists.vue

@@ -94,7 +94,7 @@ const [registerTimeTable, { reload }] = useTable({
     dataIndex: 'action',
     slots: { customRender: 'action' },
   },
-  canResize: false,
+  canResize:true,
 });
 function tabChange(val: string) {
   console.log('tabChange', val);

+ 1 - 0
src/views/account/overview/caremModal.vue

@@ -117,6 +117,7 @@
           totalField: 'total',
         },
         showIndexColumn: false,
+        canResize: true,
         bordered: true,
       });
 

+ 1 - 0
src/views/account/overview/interesModal.vue

@@ -121,6 +121,7 @@
         columns: columns,
         showIndexColumn: false,
         bordered: true,
+        canResize: true,
         pagination: false,
       });
 

+ 4 - 1
src/views/account/product/AddModal.vue

@@ -112,6 +112,9 @@
           component: 'InputTextArea',
           required: true,
           label: t('routes.product.description'),
+          componentProps: {
+            rows:4,
+          },
           colProps: {
             span: 24,
           },
@@ -134,7 +137,7 @@
             accept: ['4dage'],
             afterFetch: function (data) {
               console.log('uploadApi',data)
-              Reflect.set(data, 'url', data.file);
+              // Reflect.set(data, 'url', data.file);
               fileFlow.file = data.file
               return data;
             },

+ 3 - 0
src/views/account/product/EditModal.vue

@@ -128,6 +128,9 @@
           component: 'InputTextArea',
           required: true,
           label: t('routes.product.description'),
+          componentProps: {
+            rows:4,
+          },
           colProps: {
             span: 24,
           },

+ 1 - 0
src/views/customer/modal/InfoModal.vue

@@ -92,6 +92,7 @@
           },
           componentProps: {
             placeholder: '请输入内容',
+            rows:4,
             maxLength: 200,
             onChange: () => {
               // console.log('data', data);

+ 13 - 1
src/views/invoice/InvoiceModal.vue

@@ -53,6 +53,9 @@
             label: '邮箱',
             slot: 'text',
             ifShow:fileFlow.type == 2,
+            componentProps: {
+              maxLength: 50,
+            },
             colProps: {
               span: 24,
             },
@@ -61,6 +64,9 @@
             component: 'Input',
             label: '发票编号',
             required: true,
+            componentProps: {
+              maxLength: 50,
+            },
             colProps: {
               span: 24,
             },
@@ -82,7 +88,7 @@
               accept: ['jpeg','jpg','png'],
               afterFetch: function (data) {
                 console.log('url',data)
-                Reflect.set(data, 'url', data.file);
+                // Reflect.set(data, 'url', data.file);
                 fileFlow.file = data.file
                 return data;
               },
@@ -96,6 +102,9 @@
             component: 'Input',
             label: '发票编号',
             required: true,
+            componentProps: {
+              maxLength: 50,
+            },
             colProps: {
               span: 24,
             },
@@ -104,6 +113,9 @@
             component: 'Input',
             ifShow:fileFlow.type == 3,
             label: '快递单号',
+            componentProps: {
+              maxLength: 50,
+            },
             required: true,
             colProps: {
               span: 24,

+ 3 - 0
src/views/invoice/data.tsx

@@ -223,6 +223,9 @@ export const InvoiceSchemas: FormSchema[] = [
     component: 'InputTextArea',
     required: true,
     label: t('routes.product.description'),
+    componentProps: {
+      rows:4,
+    },
     colProps: {
       span: 24,
     },

+ 1 - 2
src/views/invoice/index.vue

@@ -150,8 +150,7 @@
           title: () => h('span', '温馨提示'),
           content: () => h('span', '确定导出当前发票所有记录?'),
           onOk: async () => {
-           const blodData:BlobPart =  await InvoiceExport(apiData);
-           downloadByData(blodData.data,'发票记录.xlsx')
+           await InvoiceExport(apiData);
           },
         });
       }

+ 1 - 0
src/views/operate/components/agent/addModal.vue

@@ -54,6 +54,7 @@
             label: '备注',
             componentProps: {
               maxLength: 200,
+              rows:4,
               placeholder: '请备注处理结果',
             },
             colProps: {

+ 1 - 5
src/views/operate/components/message/addModal.vue

@@ -49,17 +49,13 @@
           label: 'id',
           required: false,
         },{
-          field: 'name',
-          component: 'Input',
-          label: 'name',
-          required: true,
-        },{
             field: 'noteContent',
             component: 'InputTextArea',
             required: true,
             label: '备注',
             componentProps: {
               maxLength: 200,
+              rows:4,
               placeholder: '请备注处理结果',
             },
             colProps: {

+ 2 - 2
src/views/operate/components/new/addModal.vue

@@ -82,8 +82,7 @@
             accept: ['jpeg','jpg','png'],
             afterFetch: function (data) {
               console.log('uploadApi',data)
-              // Reflect.set(data, 'url', data);
-              fileFlow.coverImageUrl = data
+              fileFlow.coverImageUrl = data.url
               return data;
             },
           },
@@ -176,6 +175,7 @@
       const handleSubmit = async () => {
         const params = await validate();
         let apiUrl = title.value == '新增新闻'?newAddNews:newUpdateNews
+        console.log('validate',params)
         const apiData = {
           ...params as any,
           coverImageUrl:params.coverImageUrl && params.coverImageUrl[0],

+ 1 - 1
src/views/operate/components/recruit/addModal.vue

@@ -70,7 +70,7 @@
             required: true,
             componentProps: {
               maxLength: 5,
-              placeholder: '请输入薪资待遇',
+              placeholder: '请输入',
               max: 999,
               min: 0,
             },

+ 1 - 1
src/views/operate/components/scene/addModal.vue

@@ -55,7 +55,7 @@
         },
         {
           field: 'msg',
-          label: '新闻内容',
+          label: '邮件正文',
           component: 'Input',
           required: true,
           colProps: {

+ 2 - 2
src/views/operate/data.tsx

@@ -124,13 +124,13 @@ export const DMegaSchema: BasicColumn[] = [
   {
     title: '申请人姓名',
     width: 150,
-    dataIndex: 'phone',
+    dataIndex: 'name',
     ellipsis: true,
   },
   {
     title: '申请人电话',
     width: 150,
-    dataIndex: 'content',
+    dataIndex: 'phone',
   },
   {
     title: '申请人邮箱',

+ 1 - 1
src/views/operate/messageList.vue

@@ -107,8 +107,8 @@
         dataSource: refundTimeTableData,
         showTableSetting: true,
         showIndexColumn: false,
+        canResize:true,
         // pagination: { pageSize: 20 },
-        scroll: { y: 300 },
         actionColumn: {
           width: 100,
           title: '操作',

+ 1 - 1
src/views/operate/newsList.vue

@@ -233,7 +233,7 @@
           dataIndex: 'action',
           slots: { customRender: 'action' },
         },
-        canResize: false,
+        canResize:true,
       });
       async function handleDelete(record: Recordable) {
         await newDelete({id:record.id})

+ 4 - 2
src/views/operate/recruitList.vue

@@ -82,6 +82,8 @@
           editRule: async (text) => {
             if (text < 1) {
               return '招聘人数应大于0';
+            }else if(text>999){
+              return '招聘人数应小于999';
             }
             return '';
           },
@@ -184,7 +186,7 @@
       };
       const [registerTable,{reload}] = useTable({
         api: employNoteList,
-        title: '新闻列表',
+        title: '职位列表',
         columns: columns,
         useSearchForm: true,
         formConfig: searchForm,
@@ -203,7 +205,7 @@
           dataIndex: 'action',
           slots: { customRender: 'action' },
         },
-        canResize: false,
+        canResize:true,
       });
       async function handleDelete(record: Recordable) {
         await employNoteDelete({id:record.id})

+ 1 - 0
src/views/operate/sceneList.vue

@@ -113,6 +113,7 @@
         dataSource: refundTimeTableData,
         showTableSetting: true,
         showIndexColumn: false,
+        canResize:true,
         // pagination: { pageSize: 20 },
         // scroll: { y: 300 },
         beforeFetch:(params)=>{

+ 11 - 7
src/views/order/cameraList.vue

@@ -50,7 +50,7 @@
     </BasicTable>
 </template>
 <script lang="ts">
-  import { defineComponent, h ,reactive } from 'vue';
+  import { defineComponent, h ,reactive, ref } from 'vue';
   import { BasicTable, useTable, TableAction, BasicColumn, TableImg, FormProps } from '/@/components/Table';
   import { PageWrapper } from '/@/components/Page';
   import { Time } from '/@/components/Time';
@@ -73,6 +73,7 @@
     },
     setup() {
       const { t } = useI18n();
+      const isSearch = ref(false)
       const { createConfirm } = useMessage();
       const permissionStore = usePermissionStore();
       const { getCheckPerm } = permissionStore;
@@ -197,10 +198,16 @@
         formConfig: searchForm,
         showIndexColumn:false,
         showTableSetting: true,
-        canResize: false,
+        canResize: true,
         expandRowByClick: true,
         rowKey: 'id',
         beforeFetch:(T)=>{
+          const {ctivated,tradeNum,userName,orderSn} = T
+          if(ctivated||tradeNum||userName||orderSn){
+            isSearch.value = true
+          }else{
+            isSearch.value = false
+          }
           if(T.ctivated){
             T.startTime = T.ctivated[0]
             T.endTime = T.ctivated[1]
@@ -227,12 +234,9 @@
         createConfirm({
           iconType: 'warning',
           title: () => h('span', '温馨提示'),
-          content: () => h('span', '确定导出的订单记录?'),
+          content: () => h('span', isSearch.value?'确认导出搜索结果?':'确认导出全部?'),
           onOk: async () => {
-            CameraExport({}).then(res => {
-              console.log('handlerowClick',res)
-              downloadByData(res.data,'相机订单.xlsx')
-            })
+            CameraExport()
           },
         });
       }

+ 12 - 8
src/views/order/downloadList.vue

@@ -29,7 +29,7 @@
     </BasicTable>
 </template>
 <script lang="ts">
-  import { defineComponent, h } from 'vue';
+  import { defineComponent, h, ref } from 'vue';
   import { BasicTable, useTable, TableAction, BasicColumn, TableImg, FormProps } from '/@/components/Table';
   import { PageWrapper } from '/@/components/Page';
   import { Time } from '/@/components/Time';
@@ -51,6 +51,7 @@
     },
     setup() {
       const { t } = useI18n();
+      const isSearch = ref(false)
       const { createConfirm } = useMessage();
       const permissionStore = usePermissionStore();
       const { getCheckPerm } = permissionStore;
@@ -178,6 +179,12 @@
         showTableSetting: true,
         rowKey: 'id',
         beforeFetch:(T)=>{
+          const {ctivated,tradeNum,userName,orderSn} = T
+          if(ctivated||tradeNum||userName||orderSn){
+            isSearch.value = true
+          }else{
+            isSearch.value = false
+          }
           if(T.ctivated){
             T.startTime = T.ctivated[0]
             T.endTime = T.ctivated[1]
@@ -190,7 +197,7 @@
           listField: 'list',
           totalField: 'total',
         },
-        canResize: false,
+        canResize: true,
       });
       function handleDelete(record: Recordable) {
         console.log('点击了删除', record);
@@ -201,13 +208,10 @@
       function exportExcel() {
         createConfirm({
           iconType: 'warning',
-          title: () => h('span', '温馨提示'),
-          content: () => h('span', '确定导出的订单记录?'),
+          title: () => h('span', '温馨提示'),          
+          content: () => h('span', isSearch.value?'确认导出搜索结果?':'确认导出全部?'),
           onOk: async () => {
-            DownExport({}).then(res => {
-              console.log('handlerowClick',res)
-              downloadByData(res.data,'下载订单.xlsx')
-            })
+            DownExport()
           },
         });
       }

+ 12 - 7
src/views/order/equityList.vue

@@ -29,7 +29,7 @@
     </BasicTable>
 </template>
 <script lang="ts">
-  import { defineComponent, h } from 'vue';
+  import { defineComponent, h, ref } from 'vue';
   import { BasicTable, useTable, TableAction, BasicColumn, TableImg, FormProps } from '/@/components/Table';
   import { PageWrapper } from '/@/components/Page';
   import { Time } from '/@/components/Time';
@@ -51,6 +51,7 @@
     },
     setup() {
       const { t } = useI18n();
+      const isSearch = ref(false)
       const { createMessage,createConfirm } = useMessage();
       const permissionStore = usePermissionStore();
       const { getCheckPerm } = permissionStore;
@@ -175,10 +176,17 @@
         showTableSetting: true,
         rowKey: 'id',
         beforeFetch:(T)=>{
+          const {ctivated,tradeNum,userName,orderSn} = T
+          if(ctivated||tradeNum||userName||orderSn){
+            isSearch.value = true
+          }else{
+            isSearch.value = false
+          }
           if(T.ctivated){
             T.startTime = T.ctivated[0]
             T.endTime = T.ctivated[1]
           }
+          console.log('beforeFetch',T)
           return T
         },
         fetchSetting: {
@@ -187,7 +195,7 @@
           listField: 'list',
           totalField: 'total',
         },
-        canResize: false,
+        canResize: true,
       });
       function handleDelete(record: Recordable) {
         console.log('点击了删除', record);
@@ -199,12 +207,9 @@
         createConfirm({
           iconType: 'warning',
           title: () => h('span', '温馨提示'),
-          content: () => h('span', '确定当前标签下的订单记录?'),
+          content: () => h('span', isSearch.value?'确认导出搜索结果?':'确认导出全部?'),
           onOk: async () => {
-            IncrementExport({}).then(res => {
-              console.log('handlerowClick',res)
-              downloadByData(res.data,'权益订单.xlsx')
-            })
+            // IncrementExport()
           },
         });
       }

+ 5 - 2
src/views/product/AddModal.vue

@@ -2,7 +2,7 @@
   <BasicModal
     v-bind="$attrs"
     @register="register"
-    title="新增相机"
+    title="新增版本"
     @visible-change="handleVisibleChange"
     @cancel="resetFields"
     @ok="handleSubmit"
@@ -112,6 +112,9 @@
           component: 'InputTextArea',
           required: true,
           label: t('routes.product.description'),
+          componentProps: {
+            rows:4,
+          },
           colProps: {
             span: 24,
           },
@@ -134,7 +137,7 @@
             accept: ['4dage'],
             afterFetch: function (data) {
               console.log('uploadApi', data);
-              Reflect.set(data, 'url', data.file);
+              // Reflect.set(data, 'url', data.file);
               fileFlow.file = data.file;
               return data;
             },

+ 4 - 1
src/views/product/EditModal.vue

@@ -2,7 +2,7 @@
   <BasicModal
     v-bind="$attrs"
     @register="register"
-    title="新增相机"
+    title="编辑版本"
     @visible-change="handleVisibleChange"
     @cancel="resetFields"
     @ok="handleSubmit"
@@ -121,6 +121,9 @@
           component: 'InputTextArea',
           required: true,
           label: t('routes.product.description'),
+          componentProps: {
+            rows:4,
+          },
           colProps: {
             span: 24,
           },

+ 2 - 2
src/views/product/app/AddModal.vue

@@ -21,10 +21,10 @@
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { useMessage } from '/@/hooks/web/useMessage';
-  import { uploadApi, AppFileAdd, AppFileUpload } from '/@/api/product/index';
+  import { AppFileAdd, AppFileUpload } from '/@/api/product/index';
   import { TreeNode } from '/@/utils/treeUtils';
   import { useI18n } from '/@/hooks/web/useI18n';
-  import { AppFileAgentList,AppFileDelete } from '/@/api/product'
+  import { AppFileAgentList } from '/@/api/product'
 
   const { t } = useI18n();
   export default defineComponent({

+ 20 - 42
src/views/product/app/index.vue

@@ -1,4 +1,5 @@
 <template>
+  <div>
     <BasicTable @register="registerTable">
       <template #toolbar>
         <a-button type="primary" v-if="getCheckPerm('App-add')" @click="()=>{openAddModal(true)}"> 新建</a-button>
@@ -17,6 +18,7 @@
       </template>
     </BasicTable>
     <AddModal @update="reload" @register="registerAddModal" />
+  </div>
 </template>
 <script lang="ts">
   import { defineComponent, h } from 'vue';
@@ -30,6 +32,8 @@
   import { useModal } from '/@/components/Modal';
   import AddModal from './AddModal.vue';
   import { usePermissionStore } from '/@/store/modules/permission';
+  import { AppFileAgentList } from '/@/api/product'
+  import { TreeNode } from '/@/utils/treeUtils';
 
   export default defineComponent({
     components: { 
@@ -52,12 +56,12 @@
           title: '上传服务器',
           dataIndex: 'fileServerType',
           ellipsis: false,
-          width: 80,
+          width: 100,
         },
         {
           title: '代理商标识',
           dataIndex: 'agent',
-          width: 80,
+          width: 160,
         },{
           title: 'APP类型',
           dataIndex: 'appType',
@@ -93,39 +97,24 @@
         labelWidth: 100,
         schemas: [
           {
-            field: 'sceneName',
-            label: '开票申请时间',
-            component: 'RangePicker',
+            field: 'agentName',
+            label: '代理商标识',
+            component: 'ApiSelect',
             componentProps: {
-              maxLength: 100,
-              valueFormat:'YYYY-MM-DD',
-              format: 'YYYY-MM-DD',
+            api: async function (params) {
+              const res = (await AppFileAgentList(params)) as any as TreeNode[];
+              return res.map(ele => {
+                return {name:ele,value:ele}
+              });
             },
-            colProps: {
-              xl: 7,
-              xxl: 7,
+            numberToString: true,
+            labelField: 'name',
+            valueField: 'value',
+            immediate: true,
+            params: {
+              agentName: '',
             },
           },
-          {
-            field: 'sceneName',
-            label: '支付时间',
-            component: 'RangePicker',
-            componentProps: {
-              valueFormat:'YYYY-MM-DD',
-              format: 'YYYY-MM-DD',
-              maxLength: 100,
-            },
-            colProps: {
-              xl: 7,
-              xxl: 7,
-            },
-          },{
-            field: 'sceneName',
-            label: '订单号',
-            component: 'Input',
-            componentProps: {
-              maxLength: 100,
-            },
             colProps: {
               xl: 6,
               xxl: 6,
@@ -172,23 +161,12 @@
       function handleOpen(record: Recordable) {
         console.log('点击了启用', record);
       }
-      function exportExcel() {
-        createConfirm({
-          iconType: 'warning',
-          title: () => h('span', '温馨提示'),
-          content: () => h('span', '确定当前标签下的订单记录?'),
-          onOk: async () => {
-            await DownExport();
-          },
-        });
-      }
       return {
         registerTable,
         handleDelete,
         handleOpen,
         registerAddModal,
         openAddModal,
-        exportExcel,
         reload,
         getCheckPerm,
       };

+ 2 - 1
src/views/product/firmware/AddModal.vue

@@ -125,6 +125,7 @@
           },
           componentProps:{
             placeholder:t('common.inputText')+t('routes.product.description'),
+            rows:4,
             maxLength: 200,
           },
         },
@@ -146,7 +147,7 @@
             accept: ['zip'],
             afterFetch: function (data) {
               console.log('uploadApi',data)
-              Reflect.set(data, 'url', data.file);
+              // Reflect.set(data, 'url', data.file);
               fileFlow.file = data.file
               return data;
             },

+ 3 - 0
src/views/product/firmware/EditModal.vue

@@ -132,6 +132,9 @@
           component: 'InputTextArea',
           required: true,
           label: t('routes.product.description'),
+          componentProps: {
+            rows:4,
+          },
           colProps: {
             span: 24,
           },

+ 1 - 1
src/views/product/firmware/index.vue

@@ -198,7 +198,7 @@ export default defineComponent({
         dataIndex: 'action',
         slots: { customRender: 'action' },
       },
-      canResize: false,
+      canResize: true,
     });
     function tabChange(val: string) {
       console.log('tabChange', val);

+ 8 - 2
src/views/product/sdk/AddModal.vue

@@ -2,7 +2,7 @@
   <BasicModal
     v-bind="$attrs"
     @register="register"
-    title="新增相机"
+    title="新增版本"
     @visible-change="handleVisibleChange"
     @cancel="resetFields"
     @ok="handleSubmit"
@@ -112,6 +112,9 @@
           component: 'InputTextArea',
           required: true,
           label: t('routes.product.description_zh'),
+          componentProps: {
+            rows:4,
+          },
           colProps: {
             span: 24,
           },
@@ -121,6 +124,9 @@
           component: 'InputTextArea',
           required: true,
           label: t('routes.product.description_en'),
+          componentProps: {
+            rows:4,
+          },
           colProps: {
             span: 24,
           },
@@ -143,7 +149,7 @@
             accept: ['zip','rar','png'],
             afterFetch: function (data) {
               console.log('uploadApi',data)
-              Reflect.set(data, 'url', data.file);
+              // Reflect.set(data, 'url', data.file);
               fileFlow.file = data.file
               return data;
             },

+ 7 - 1
src/views/product/sdk/EditModal.vue

@@ -2,7 +2,7 @@
   <BasicModal
     v-bind="$attrs"
     @register="register"
-    title="编辑相机"
+    title="编辑版本"
     @visible-change="handleVisibleChange"
     @cancel="resetFields"
     @ok="handleSubmit"
@@ -115,6 +115,9 @@
           component: 'InputTextArea',
           required: true,
           label: t('routes.product.description_zh'),
+          componentProps: {
+            rows:4,
+          },
           colProps: {
             span: 24,
           },
@@ -124,6 +127,9 @@
           component: 'InputTextArea',
           required: true,
           label: t('routes.product.description_en'),
+          componentProps: {
+            rows:4,
+          },
           colProps: {
             span: 24,
           },

+ 15 - 2
src/views/product/sdk/index.vue

@@ -24,6 +24,12 @@
           <TableAction
             :actions="[
               {
+                label: '发布',
+                icon: 'arcticons:efa-publish',
+                ifShow:getTypeCheckPerm('sdk-publish') && record.status != 1,
+                onClick: handlePublish.bind(null, record),
+              },
+              {
                 label: '编辑',
                 icon: 'ep:edit',
                 ifShow: getTypeCheckPerm('sdk-update'),
@@ -171,6 +177,7 @@ export default defineComponent({
             checked: record.isTop == 1 ? true : false,
             checkedChildren: '启用',
             unCheckedChildren: '禁用',
+            disabled:record.status != 1,
             loading: false,
             onChange: async (checked: boolean) => {
               record.pendingStatus = true;
@@ -213,7 +220,7 @@ export default defineComponent({
         dataIndex: 'action',
         slots: { customRender: 'action' },
       },
-      canResize: false,
+      canResize: true,
     });
     function tabChange(val: string) {
       console.log('tabChange', val);
@@ -226,7 +233,7 @@ export default defineComponent({
         case 1:
           return t(`routes.product.statusType.1`);
         default:
-          return t(`routes.product.statusType.1`);
+          return t(`routes.product.statusType.0`);
       }
     }
     async function handleDelete(record: Recordable) {
@@ -238,6 +245,11 @@ export default defineComponent({
     function handleOpen(record: Recordable) {
       console.log('点击了启用', record);
     }
+    async function handlePublish(record: Recordable) {
+      await SpaceSdkOnline({ id: record.id, status:1 });//状态 0 - 未发布 1 -发布  2-下架
+      createMessage.success(t('common.optSuccess'));
+      reload();
+    }
     async function handleOff(record: Recordable) {
       await SpaceSdkOnline({ id: record.id, status:2 });//状态 0 - 未发布 1 -发布  2-下架
       createMessage.success(t('common.optSuccess'));
@@ -258,6 +270,7 @@ export default defineComponent({
       registerTimeTable,
       handleDelete,
       handleOpen,
+      handlePublish,
       tabChange,
       handleOff,
       reload,

+ 1 - 1
src/views/productOperation/cameraScene.vue

@@ -321,7 +321,7 @@
           listField: 'list',
           totalField: 'total',
         },
-        canResize: false,
+        canResize: true,
       });
       function changeTable(val: string) {
         tableType.value = val;

+ 1 - 1
src/views/productOperation/sxz.vue

@@ -207,7 +207,7 @@
           listField: 'list',
           totalField: 'total',
         },
-        canResize: false,
+        canResize: true,
       });
       async function handleDelete(record: Recordable) {
         console.log('handleDelete', record);

+ 1 - 1
src/views/productOperation/viewKankan.vue

@@ -176,7 +176,7 @@
           listField: 'list',
           totalField: 'total',
         },
-        canResize: false,
+        canResize: true,
       });
       async function handleDelete(record: Recordable) {
         console.log('handleDelete', record);

+ 1 - 2
src/views/staff/detailsModal.vue

@@ -212,13 +212,12 @@
         const requestApi = data.id ? updateApi : saveApi;
         let res = await requestApi({
           ...data,
-          userName: data.phone,
+          // userName: data.phone,
           phone: data.phone,
           nickName: data.nickName,
           roleId: data.roleId,
           id: data.id,
         });
-        console.log('res', res);
         context && context.emit('ok', res);
         createMessage.success(t('common.optSuccess'));
         closeModal();

+ 1 - 0
src/views/staff/list.vue

@@ -223,6 +223,7 @@ import { Switch } from 'ant-design-vue';
         showTableSetting: true,
         tableSetting: { fullScreen: true },
         showIndexColumn: false,
+        canResize: true,
         rowKey: 'id',
         fetchSetting: {
           pageField: 'pageNum',

+ 13 - 13
src/views/statistics/scene/index.vue

@@ -11,7 +11,7 @@
 </template>
 <script lang="ts" setup>
 import { ref, onMounted, reactive } from 'vue';
-import { orderTotal, sceneTrend } from '/@/api/statistics/index';
+import { sceneTotal, sceneTrend } from '/@/api/statistics/index';
 import { GrowCardItem } from '../data';
 import GrowCard from '../components/GrowCard.vue';
 import sceneEchart from '../components/sceneEchart.vue';
@@ -60,31 +60,31 @@ function Search(val) {
 async function getData() {
   try {
     loading.value = true;
-    const { preMonThPowCount, preMonThDownCount, preMonThPartCount } = await orderTotal();
+    const { totalSceneCount = 0, preMonthAddCount = 0, todayAddCount = 0 } = await sceneTotal();
     let list: GrowCardItem[] = [
       {
-        title: '上月权益订单数',
+        title: '累计场景数量',
         icon: 'fxemoji:notchedrightsemi3dot',
-        value: preMonThPowCount,
-        unit: '',
+        value: totalSceneCount,
+        unit: '',
         color: 'blue',
-        action: '',
+        action: '',
       },
       {
-        title: '上月下载订单数',
+        title: '上月新增场景数量',
         icon: 'download-count|svg',
-        value: preMonThDownCount,
-        unit: '',
+        value: preMonthAddCount,
+        unit: '',
         color: 'orange',
         action: '月',
       },
       {
-        title: '上月配件订单数',
+        title: '今日新增场景数量',
         icon: 'transaction|svg',
-        value: preMonThPartCount,
-        unit: '',
+        value: todayAddCount,
+        unit: '',
         color: 'blue',
-        action: '',
+        action: '',
       },
     ];
     loading.value = false;

+ 1 - 0
src/views/system/role/index.vue

@@ -69,6 +69,7 @@
         showTableSetting: true,
         bordered: true,
         showIndexColumn: false,
+        canResize: true,
         fetchSetting: {
           pageField: 'pageNum',
           sizeField: 'pageSize',

+ 2 - 1
src/views/system/role/role.data.ts

@@ -20,7 +20,7 @@ export const columns: BasicColumn[] = [
     width: 200,
   },
   {
-    title: '管理员数量',
+    title: '系统用户数',
     dataIndex: 'adminCount',
     width: 100,
     customRender: ({ record }) => {
@@ -147,6 +147,7 @@ export const formSchema: FormSchema[] = [
     field: 'description',
     component: 'InputTextArea',
     componentProps:{
+      rows:4,
       maxLength: 200,
     }
   },