tangning před 8 měsíci
rodič
revize
b29bb0276c

+ 22 - 0
src/api/account/index.ts

@@ -17,6 +17,8 @@ enum Api {
   incrementUseTypeList = '/service/manage/incrementUseType/allList',
   getAddUserIncrementTime = '/service/manage/user/getAddUserIncrementTime',
   currencyList = '/service/manage/currency/allList',
+  incrementBindCamera = '/service/manage/user/incrementBindCamera',
+  incrementUnBindCamera = '/service/manage/user/incrementUnBindCamera',
 }
 
 /**
@@ -123,6 +125,26 @@ export const GetCameraDetailApi = (params: PageParams) =>
       ignoreCancelToken: true,
     },
   });
+//获取相机详情
+export const incrementBindCamera = (params: PageParams) =>
+  defHttp.post<userList>({
+    url: Api.incrementBindCamera,
+    params: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+//获取相机详情
+export const incrementUnBindCamera = (params: PageParams) =>
+  defHttp.post<userList>({
+    url: Api.incrementUnBindCamera,
+    params: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 //相机解绑
 export const UnbindCameraApi = (params: PageParams) =>

+ 144 - 0
src/views/account/overview/AddSnModal.vue

@@ -0,0 +1,144 @@
+<template>
+  <BasicModal
+    v-bind="$attrs"
+    @register="register"
+    title="授权相机"
+    @visible-change="handleVisibleChange"
+    @cancel="resetFields"
+    minHeight="900px"
+    @ok="handleSubmit"
+  >
+    <div class="pt-2px pr-3px zdysrk">
+      <BasicForm @register="registerForm">
+        <template #text="{ model, field }"> {{ model[field] }}{{ fileFlow.type }} </template>
+      </BasicForm>
+    </div>
+  </BasicModal>
+</template>
+<script lang="ts">
+  import { defineComponent, nextTick, onMounted, reactive, computed, h, ref } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { remarkschemas, Addschemas } from './data';
+  import { InvoiceRegister } from '/@/api/order';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { uploadApi } from '/@/api/product/index';
+  import { ResultEnum } from '/@/enums/httpEnum';
+  import {
+    DetailsApi,
+    dincrementList,
+    AddUserIncrementApi,
+    UnbindCameraApi,
+    getAddUserIncrementTime,
+    currencyList,
+  } from '/@/api/account';
+  import dayjs from 'dayjs';
+  import { otherInfoStore } from '/@/store/modules/other';
+  import { useUserStore } from '/@/store/modules/user';
+
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update', 'register'],
+    setup(props, { emit }) {
+      const otherInfo = otherInfoStore();
+      const userStore = useUserStore();
+      const overviewInfo = computed(() => otherInfo.getOverviewInfo);
+      // const overviewInfo = getOverviewInfo() || {}
+      const title = ref('新增权益');
+      const fileFlow = reactive({
+        file: null,
+        id: '',
+        type: 'down', //down-下载,equity-权益
+      });
+      const { createMessage, createConfirm } = useMessage();
+      const schemas: FormSchema[] = [
+        {
+          field: 'id',
+          component: 'Input',
+          show: false,
+          label: 'id',
+        },
+        {
+          field: 'userId',
+          component: 'Input',
+          show: false,
+          label: 'userId',
+        },
+        {
+          field: 'snCode',
+          component: 'Input',
+          label: '相机SN码',
+          required: true,
+        },
+      ];
+
+      const [
+        registerForm,
+        { validate, getFieldsValue, resetFields, setFieldsValue, updateSchema, validateFields, scrollToField },
+      ] = useForm({
+        labelWidth: 120,
+        schemas: schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+      onMounted(() => {});
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        data && onDataReceive(data);
+      });
+      async function onDataReceive(data) {
+        setFieldsValue({
+          ...data,
+          // incrementEndTime: dayjs(incrementEndTime).add(1, data.incrementTypeId == '3' ? 'month' : 'year').format('YYYY-MM-DD'),
+        });
+      }
+      const handleSubmit = async () => {
+        const submitUrl = UnbindCameraApi;
+        try {
+          const params = await validate();
+          console.log('validate', params);
+          const apiData = {
+            ...params,
+            incrementId: params.id,
+          };
+          const res = await submitUrl(apiData);
+          closeModal();
+          resetFields();
+          createMessage.success(t('common.optSuccess'));
+          emit('update');
+        } catch (error) {
+          console.log('not passing', error);
+
+        }
+      };
+      function handleVisibleChange(v) {
+        v && props.userData && nextTick(() => onDataReceive(props.userData));
+      }
+      return {
+        register,
+        registerForm,
+        fileFlow,
+        handleVisibleChange,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        t,
+        title,
+      };
+    },
+  });
+</script>
+<style lang="less">
+  .zdysrk {
+    .ant-calendar-picker {
+      min-width: 285px;
+    }
+  }
+</style>

+ 56 - 36
src/views/account/overview/interesModal.vue

@@ -1,7 +1,8 @@
 <template>
   <div>
-      <AddModal @register="registerAddModal" @update="reload" />
-      <BasicModal
+    <AddModal @register="registerAddModal" @update="reload" />
+    <AddSnModal @register="registerAddSnModal" @update="reload" />
+    <BasicModal
       v-bind="$attrs"
       @register="register"
       title="权益详情"
@@ -11,7 +12,7 @@
     >
       <div class="pt-3px pr-3px">
         <div class="table_list">
-          <BasicTable @register="registerSubtable" >
+          <BasicTable @register="registerSubtable">
             <template #action="{ record }">
               <TableAction
                 :actions="[
@@ -19,6 +20,10 @@
                     label: '续费',
                     onClick: handleDelete.bind(null, record, 'edit'),
                   },
+                  {
+                    label: record.snCode ? '解除' : '授权',
+                    onClick: handleSnCode.bind(null, record, 'edit'),
+                  },
                 ]"
               />
             </template>
@@ -29,23 +34,24 @@
   </div>
 </template>
 <script lang="ts">
-  import { defineComponent, nextTick, onMounted, reactive, computed,h } from 'vue';
-  import { BasicTable, useTable, BasicColumn,TableAction } from '/@/components/Table';
+  import { defineComponent, nextTick, onMounted, reactive, computed, h } from 'vue';
+  import { BasicTable, useTable, BasicColumn, TableAction } from '/@/components/Table';
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { BasicForm } from '/@/components/Form/index';
   import { Time } from '/@/components/Time';
   import AddModal from './AddModal.vue';
+  import AddSnModal from './AddSnModal.vue';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { useI18n } from '/@/hooks/web/useI18n';
-  import { GetCameraDetailApi,UnbindCameraApi } from '/@/api/account';
-  import { otherInfoStore } from '/@/store/modules/other'
-  import { DetailsApi,IncrementDelayApi } from '/@/api/account';
+  import { GetCameraDetailApi, UnbindCameraApi, incrementUnBindCamera} from '/@/api/account';
+  import { otherInfoStore } from '/@/store/modules/other';
+  import { DetailsApi, IncrementDelayApi } from '/@/api/account';
   import { usePermissionStore } from '/@/store/modules/permission';
   import { useModal } from '/@/components/Modal';
 
   const { t } = useI18n();
   export default defineComponent({
-    components: { BasicModal, BasicForm, BasicTable,TableAction, AddModal },
+    components: { BasicModal, BasicForm, AddSnModal, BasicTable, TableAction, AddModal },
     props: {
       userData: { type: Object },
     },
@@ -55,22 +61,23 @@
       const overviewInfo = computed(() => otherInfo.getOverviewInfo);
       const { createMessage, createConfirm } = useMessage();
       const [registerAddModal, { openModal: openAddModal }] = useModal();
+      const [registerAddSnModal, { openModal: openAddSnModal }] = useModal();
       const permissionStore = usePermissionStore();
       const { getCheckPerm } = permissionStore;
-      console.log('overviewInfo',overviewInfo)
+      console.log('overviewInfo', overviewInfo);
       // const overviewInfo = getOverviewInfo() || {}
       const fileFlow = reactive({
-        file:null,
-        id:'',
-        type:'down',//down-下载,equity-权益
-      })
-            const columns: BasicColumn[] = [
+        file: null,
+        id: '',
+        type: 'down', //down-下载,equity-权益
+      });
+      const columns: BasicColumn[] = [
         {
           title: '会员权益ID',
           dataIndex: 'id',
           width: 100,
           customRender: ({ record }) => {
-            return record.memberLevels? (record.memberLevels +' '+ record.id): record.id;
+            return record.memberLevels ? record.memberLevels + ' ' + record.id : record.id;
           },
         },
         {
@@ -79,9 +86,9 @@
           dataIndex: 'memberLevels',
           customRender: ({ record }) => {
             let obj = {
-              'PR': '专业会员',
-              'SE': '高级会员',
-            }
+              PR: '专业会员',
+              SE: '高级会员',
+            };
             return obj[record.memberLevels] || '';
           },
         },
@@ -133,23 +140,18 @@
         // },
         {
           title: t('common.operating'),
-          ifShow:getCheckPerm('account-equityRenew'),
+          ifShow: getCheckPerm('account-equityRenew'),
           dataIndex: '',
           slots: { customRender: 'action' },
-          width: 60,
+          width: 100,
         },
       ];
-      const [
-        registerSubtable,
-        {
-          reload,
-        },
-      ] = useTable({
+      const [registerSubtable, { reload }] = useTable({
         // title: `查看相机详情`,
-        searchInfo:{
-          id:overviewInfo.value?.id
+        searchInfo: {
+          id: overviewInfo.value?.id,
         },
-        api: DetailsApi,        
+        api: DetailsApi,
         rowKey: 'id',
         fetchSetting: {
           pageField: 'pageNum',
@@ -167,22 +169,38 @@
       onMounted(() => {});
       let addListFunc = () => {};
       const [register, { closeModal }] = useModalInner((data) => {
-        reload()
+        reload();
         data && onDataReceive(data);
       });
       function onDataReceive(data) {
-        console.log('onDataReceive',data)
-        fileFlow.id = data.id
+        console.log('onDataReceive', data);
+        fileFlow.id = data.id;
+      }
+      function handleSnCode(record) {
+        if (record.snCode) {
+          createConfirm({
+            title: '删除',
+            content: '确定要解除该相机的权益吗?',
+            onOk: async () => {
+              incrementUnBindCamera({ snCode: record.snCode, incrementId: record.id }).then(() => {
+                createMessage.success('操作成功');
+                reload();
+              });
+            },
+          });
+        }else{
+          openAddSnModal(true, record);
+        }
       }
-      async function handleDelete (record: Recordable) {
+      async function handleDelete(record: Recordable) {
         openAddModal(true, {
           userId: overviewInfo.value && overviewInfo.value.id,
           ...record,
         });
       }
       const handleSubmit = async () => {
-          closeModal();
-          emit('update');
+        closeModal();
+        emit('update');
       };
       function handleVisibleChange(v) {
         v && props.userData && nextTick(() => onDataReceive(props.userData));
@@ -196,7 +214,9 @@
         registerSubtable,
         reload,
         registerAddModal,
+        registerAddSnModal,
         handleDelete,
+        handleSnCode,
         t,
       };
     },

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

@@ -272,7 +272,7 @@
       const permissionStore = usePermissionStore();
       const { getCheckPerm } = permissionStore;
       const [registerPriority, { openModal: openPriorityModal }] = useModal();
-      const [registerDownModal, { openModal: openDownModal }] = useModal();
+      const [registerDownModal, { openModal: openDownModal, closeModal }] = useModal();
       const [registerMoveModal, { openModal: openMoveModal }] = useModal();
       const [registerTableViewKankan, { reload: ViewReload }] = useTable({
         api: overallList,
@@ -462,9 +462,12 @@
                 }
                 timer.value = setInterval(() => {
                   downloadProcess(params).then((processres) => {
+                    console.log('processres', res);
                     if (processres.percent >= 100) {
                       canDownload.value = false;
                       afterClose();
+                      window.open(res.url);
+                      closeModal();
                     }
                     downloadOption.value = processres;
                     console.log(processres);

+ 3 - 1
src/views/customer/scene.vue

@@ -230,7 +230,7 @@
         downloadOption.value = {};
       }
       const [registerPriority, { openModal: openPriorityModal }] = useModal();
-      const [registerDownModal, { openModal: openDownModal }] = useModal();
+      const [registerDownModal, { openModal: openDownModal, closeModal }] = useModal();
       const [registerMoveModal, { openModal: openMoveModal }] = useModal();
       const [registerTable, { reload, clearSelectedRowKeys, getSelectRowKeys }] = useTable({
         api: operateSceneList,
@@ -358,6 +358,8 @@
                     if (res.percent >= 100) {
                       canDownload.value = false;
                       afterClose();
+                      window.open(res.url);
+                      closeModal();
                     }
                     downloadOption.value = res;
                     console.log(res);

+ 86 - 10
src/views/product/rtk/AddModal.vue

@@ -22,6 +22,7 @@
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { uploadApi } from '/@/api/product/index';
+  import { rtkaccountFormSchema } from './data'
   import { rtkDevicesaveOrEdit } from '/@/api/rtk/index';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useUserStore } from '/@/store/modules/user';
@@ -103,8 +104,40 @@
           label: 'id',
           show: false,
           colProps: {
-            span: 20,
+            span: 18,
+          },
+        },
+        {
+          field: 'cameraType',
+          component: 'Select',
+          label: '设备类型',
+          required: true,
+          colProps: {
+            span: 18,
+          },
+          componentProps: {
+            options: [
+              {
+                label: '四维看见',
+                value: 1,
+                key: 1,
+              },
+              {
+                label: '四维深时',
+                value: 2,
+                key: 2,
+              },
+              {
+                label: '四维深光',
+                value: 3,
+                key: 3,
+              },
+            ],
+            onChange: (value) => {
+              handleCarmanType(value);
+            },
           },
+          // required: true,
         },
         {
           field: 'cameraSn',
@@ -118,7 +151,7 @@
             },
           },
           colProps: {
-            span: 20,
+            span: 18,
           },
         },
         {
@@ -184,14 +217,15 @@
             },
           ],
           colProps: {
-            span: 20,
+            span: 18,
           },
         },
         {
           field: 'sgRtkSn',
           component: 'Input',
-          required: false,
+          required: true,
           label: '深光rtk插件SN号',
+          ifShow: false,
           componentProps: {
             maxLength: 50,
           },
@@ -219,13 +253,41 @@
             },
           ],
           colProps: {
-            span: 20,
+            span: 18,
           },
         },
         {
+          field: 'accountType',
+          component: 'Select',
+          label: '账号类型',
+          required: true,
+          colProps: {
+            span: 18,
+          },
+          componentProps: {
+            options: [
+              {
+                label: '账号池',
+                value: 0,
+                key: 0,
+              },
+              {
+                label: '专用账号',
+                value: 1,
+                key: 1,
+              },
+            ],
+            onChange: (value) => {
+              handlertkuserType(value);
+            },
+          },
+          // required: true,
+        },
+        {
           field: 'failureTime',
           component: 'DatePicker',
           label: '到期日期',
+          ifShow: false,
           colProps: {
             span: 16,
           },
@@ -243,10 +305,10 @@
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema, clearValidate }] =
         useForm({
           labelWidth: 120,
-          schemas,
+          schemas: [...schemas, ...rtkaccountFormSchema ],
           showActionButtonGroup: false,
           actionColOptions: {
-            span: 20,
+            span: 18,
           },
         });
       onMounted(() => {});
@@ -261,24 +323,38 @@
         handlertkSn(data.cameraSn ? true : false);
         resetFields();
         console.log('data', data);
-        handlertkType(data.rtkType);
+        handlertkuserType(1);
+        handleCarmanType(0);
+        handlertkType(1);
         setFieldsValue(data);
         clearValidate();
       }
       function handlertkType(val) {
         console.log('val', val);
-        let ifShow = val != 0;
+        updateSchema([
+          { field: 'failureTime', ifShow: val == 0 },
+        ]);
+      }
+      function handlertkuserType(val) {
+        console.log('val', val);
+        let ifShow = val == 0;
         updateSchema([
           { field: 'ipAddr', ifShow },
           { field: 'mountPoint', ifShow },
           { field: 'port', ifShow },
           { field: 'userName', ifShow },
           // { field: 'sgRtkSn', ifShow },
-          { field: 'failureTime', ifShow: val == 0 && !iseur },
+          // { field: 'failureTime', ifShow: val == 0 && !iseur },
           { field: 'password', ifShow },
           { field: 'operator', ifShow },
         ]);
       }
+      function handleCarmanType(val) {
+        let ifShow = val == 2;
+        updateSchema([
+          { field: 'sgRtkSn', ifShow },
+        ]);
+      }
       function handlertkSn(val) {
         console.log('handlertkSn', val);
         let required = !!val;

+ 0 - 17
src/views/product/rtk/AdduserModal.vue

@@ -153,23 +153,6 @@
           colProps: {
             span: 20,
           },
-          // rules: [
-          //   {
-          //     required: true,
-          //     // @ts-ignore
-          //     validator: async (rule, value) => {
-          //       if (!value) {
-          //         return Promise.reject('请输入IP地址');
-          //       }
-          //       if (/.*[\u4e00-\u9fa5]+.*$/.test(value)) {
-          //         /* eslint-disable-next-line */
-          //         return Promise.reject('不支持中文字符');
-          //       }
-          //       return Promise.resolve();
-          //     },
-          //     trigger: 'change',
-          //   },
-          // ],
           componentProps: {
             maxLength: 50,
             onChange: (data) => {

+ 157 - 0
src/views/product/rtk/data.ts

@@ -1,5 +1,6 @@
 import { BasicColumn } from '/@/components/Table/src/types/table';
 import { Time } from '/@/components/Time';
+import moment from 'moment';
 import { h } from 'vue';
 import { Switch } from 'ant-design-vue';
 import { useMessage } from '/@/hooks/web/useMessage';
@@ -333,3 +334,159 @@ export const rtklogColumns: any[] = [
     },
   },
 ];
+const disabledDate = (current: any) => {
+  return current && current < moment().subtract(1, 'days').endOf('day');
+};
+const range = (start: any, end: any) => {
+  const result = [];
+  for (let i = start; i < end; i++) {
+    result.push(i);
+  }
+  return result;
+};
+const disabledDateTime = (current: any) => {
+  if (current) {
+    const today = moment().date();
+    if (today == current.date()) {
+      const minute = Number(moment().minutes());
+      const hour = Number(moment().hour());
+      let finalHour: number, finalMinute: number;
+      console.log('today', minute, current.hour(), hour);
+      // if (current.hour() > hour) {
+      //   finalMinute = 0;
+      // } else {
+      if (current.minute() >= 58) {
+        finalHour = hour + 1;
+        finalMinute = 0;
+      } else {
+        finalHour = hour;
+        finalMinute = minute + 5;
+      }
+      // }
+      console.log('today', finalHour, finalMinute);
+      return {
+        disabledHours: () => range(0, finalHour),
+        disabledMinutes: () => range(0, finalMinute),
+      };
+    } else if (moment() > current) {
+      return {
+        disabledHours: () => range(0, 24),
+        disabledMinutes: () => range(0, 60),
+        disabledSeconds: () => range(0, 60),
+      };
+    }
+  } else {
+    return {
+      disabledHours: () => range(0, 24),
+      disabledMinutes: () => range(0, 60),
+      disabledSeconds: () => range(0, 60),
+    };
+  }
+};
+export const rtkaccountFormSchema: any[] = [
+  {
+    field: 'userName',
+    component: 'Input',
+    required: true,
+    label: '用户名称',
+    ifShow: false,
+    componentProps: {
+      maxLength: 50,
+    },
+    colProps: {
+      span: 20,
+    },
+  },
+  {
+    field: 'password',
+    component: 'Input',
+    label: '密码',
+    required: true,
+    ifShow: false,
+    componentProps: {
+      maxLength: 50,
+      'v-model:visible': false,
+      // readonly:preventAutoFill.value,
+      placeholder: '请输入数字、字母大小写组合',
+    },
+    colProps: { span: 20 },
+  },
+  {
+    field: 'operator',
+    component: 'Input',
+    required: true,
+    label: '运营商',
+    defaultValue: '中国移动',
+    ifShow: false,
+    componentProps: {
+      maxLength: 50,
+    },
+    colProps: {
+      span: 20,
+    },
+  },
+  {
+    field: 'ipAddr',
+    component: 'Input',
+    label: 'IP地址',
+    ifShow: false,
+    required: true,
+    defaultValue: '120.253.239.161',
+    ifShow: false,
+    colProps: {
+      span: 20,
+    },
+    componentProps: {
+      maxLength: 50,
+      onChange: (data) => {
+        console.log('data', data);
+      },
+    },
+  },
+  {
+    field: 'mountPoint',
+    component: 'Input',
+    required: true,
+    label: '挂载点',
+    ifShow: false,
+    defaultValue: 'RTCM33_GRCEJ',
+    componentProps: {
+      maxLength: 50,
+    },
+    colProps: {
+      span: 20,
+    },
+  },
+  {
+    field: 'port',
+    component: 'Input',
+    required: true,
+    label: '端口',
+    defaultValue: '8001',
+    ifShow: false,
+    componentProps: {
+      maxLength: 50,
+    },
+    colProps: {
+      span: 20,
+    },
+  },
+  {
+    field: 'failureTime',
+    component: 'DatePicker',
+    label: '到期日期',
+    ifShow: false,
+    colProps: {
+      span: 16,
+    },
+    componentProps: {
+      disabledDate: disabledDate,
+      disabledTime: disabledDateTime,
+      showTime: { defaultValue: moment('23:59:59', 'HH:mm:ss') },
+      valueFormat: 'YYYY-MM-DD HH:mm:ss',
+
+      // defaultValue: dayjs().add(7, 'day').format('YYYY-MM-DD') + ' 23:59:59',
+      format: 'YYYY-MM-DD HH:mm:ss',
+    },
+  },
+];

+ 2 - 2
src/views/product/rtk/list.vue

@@ -3,7 +3,7 @@
     <template #footer>
       <a-tabs v-model:activeKey="activeKey" @change="changeTable">
         <a-tab-pane :key="0" tab="RTK设备管理" />
-        <a-tab-pane :key="1" tab="差分账号管理" />
+        <a-tab-pane :key="1" tab="账号池" />
         <a-tab-pane :key="2" tab="账号使用日志" />
       </a-tabs>
     </template>
@@ -209,7 +209,7 @@
       });
       const [registeruserTable, { reload: reload1 }] = useTable({
         api: rtkAccountList,
-        title: '差分账号管理',
+        title: '账号管理',
         columns: rtkuserColumns,
         useSearchForm: true,
         showIndexColumn: false,

+ 10 - 3
src/views/productOperation/cameraScene.vue

@@ -202,11 +202,11 @@
         downloadOption.value = {};
       }
       const [registerPriority, { openModal: openPriorityModal }] = useModal();
-      const [registerDownModal, { openModal: openDownModal }] = useModal();
+      const [registerDownModal, { openModal: openDownModal, closeModal }] = useModal();
       const [registerMoveModal, { openModal: openMoveModal }] = useModal();
       const [
         registerTable,
-        { setProps, reload, setColumns, getSelectRowKeys, clearSelectedRowKeys },
+        { setProps, reload, setColumns, getSelectRowKeys, clearSelectedRowKeys, getForm },
       ] = useTable({
         api: operateSceneList,
         title: `场景列表`,
@@ -244,7 +244,12 @@
 
       function changeTable(val: string) {
         tableType.value = val;
-        setColumns(getColumns(val == 2));
+        let sgetForm = getForm();
+        if(sgetForm){
+          sgetForm.updateSchema(getSchemas(val))
+        }
+        console.log('sgetForm', sgetForm);
+        setColumns(getColumns(val == 2 || val == 6));
         clearSelectedRowKeys();
         reload();
       }
@@ -344,6 +349,8 @@
                     if (res.percent >= 100) {
                       canDownload.value = false;
                       afterClose();
+                      window.open(res.url);
+                      closeModal();
                     }
                     downloadOption.value = res;
                     console.log(res);

+ 92 - 11
src/views/productOperation/data.ts

@@ -3,7 +3,7 @@ const { t } = useI18n();
 import { Time } from '/@/components/Time';
 import { BasicColumn } from '/@/components/Table/src/types/table';
 import { h } from 'vue';
-export const getSchemas = () => {
+export const getSchemas = (val) => {
   return [
     {
       field: 'sceneName',
@@ -54,6 +54,30 @@ export const getSchemas = () => {
       },
     },
     {
+      field: 'locationType',
+      component: 'Select',
+      label: '场景类型',
+      ifShow: val != 3 && (val == 2 || val == 6),
+      colProps: {
+        xl: 7,
+        xxl: 7,
+      },
+      componentProps: {
+        options: [
+          {
+            label: '架站式',
+            value: 0,
+            key: '0',
+          },
+          {
+            label: 'Salm',
+            value: 1,
+            key: '1',
+          },
+        ],
+      },
+    },
+    {
       field: 'timeList',
       label: '拍摄时间段',
       component: 'RangePicker',
@@ -69,6 +93,32 @@ export const getSchemas = () => {
         xxl: 8,
       },
     },
+    {
+      field: 'shootCount1',
+      component: 'InputNumber',
+      label: '最小点位数',
+      ifShow: val != 3,
+      componentProps: {
+        min: 0,
+      },
+      colProps: {
+        xl: 7,
+        xxl: 7,
+      },
+    },
+    {
+      field: 'shootCount2',
+      component: 'InputNumber',
+      label: '最大点位数',
+      ifShow: val != 3,
+      componentProps: {
+        min: 0,
+      },
+      colProps: {
+        xl: 7,
+        xxl: 7,
+      },
+    },
   ];
 };
 export const getquanjingSchemas = () => {
@@ -313,16 +363,6 @@ export const getColumns = (isobj) => {
       },
     },
     {
-      title: 'obj生成状态',
-      dataIndex: 'isObj',
-      ellipsis: true,
-      ifShow: isobj,
-      width: 180,
-      customRender: ({ record }) => {
-        return record.isObj == 0 ? '未生成' : record.isObj == 1 ? '已生成' : '计算中';
-      },
-    },
-    {
       title: '计算完成时间',
       dataIndex: 'amount',
       width: 180,
@@ -338,11 +378,38 @@ export const getColumns = (isobj) => {
       },
     },
     {
+      title: '计算时长(分钟)',
+      dataIndex: 'computeTime',
+      width: 120,
+      customRender: ({ record }) => {
+        return (record.computeTime && parseInt(record.computeTime / 60)) || '-';
+      },
+    },
+    {
+      title: '场景类型',
+      dataIndex: 'location',
+      ifShow: isobj,
+      width: 120,
+      customRender: ({ record }) => {
+        return record.location == 5 || record.location == 6 ? 'Slam' : '架站式';
+      },
+    },
+    {
       title: 'SN码',
       dataIndex: 'snCode',
       width: 180,
     },
     {
+      title: 'obj生成状态',
+      dataIndex: 'isObj',
+      ellipsis: true,
+      ifShow: isobj,
+      width: 180,
+      customRender: ({ record }) => {
+        return record.isObj == 0 ? '未生成' : record.isObj == 1 ? '已生成' : '计算中';
+      },
+    },
+    {
       title: '点位数量',
       dataIndex: 'shootCount',
       width: 80,
@@ -361,6 +428,12 @@ export const getColumns = (isobj) => {
       },
     },
     {
+      title: 'slam帧数',
+      ifShow: isobj,
+      dataIndex: 'slamCount',
+      width: 180,
+    },
+    {
       title: '拍摄位置',
       dataIndex: 'addressComponent',
       width: 100,
@@ -471,6 +544,14 @@ export const getVrColumns = () => {
       },
     },
     {
+      title: '计算时长(分钟)',
+      dataIndex: 'computeTime',
+      width: 120,
+      customRender: ({ record }) => {
+        return (record.computeTime && parseInt(record.computeTime / 60)) || '-';
+      },
+    },
+    {
       title: 'SN码',
       dataIndex: 'snCode',
       width: 180,