tangning vor 1 Jahr
Ursprung
Commit
e790c781e5

+ 12 - 0
src/api/operate/index.ts

@@ -74,6 +74,7 @@ enum Api {
   getAuthList = '/service/manage/jy/sceneUserAuth/getAuthList',
   getByRyId = '/service/manage/jy/user/getByRyId',
   addAuth = '/service/manage/jy/sceneUserAuth/addAuth',
+  setAuthType = '/service/manage/jy/sceneUserAuth/setAuthType',
   delAuth = '/service/manage/jy/sceneUserAuth/delAuth',
   checkAuthOther = '/service/manage/jy/sceneUserAuth/checkAuthOther',
   //生成obj新的接口
@@ -521,6 +522,17 @@ export const addAuth = (params) =>
   });
 
 // 根据警员ID获取用户列表
+export const setAuthType = (params) =>
+  defHttp.post<Result>({
+    url: Api.setAuthType,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
+// 根据警员ID获取用户列表
 export const checkAuthOtherApi = (params) =>
   defHttp.post<Result>({
     url: Api.checkAuthOther,

+ 92 - 69
src/views/productOperation/cameraScene.vue

@@ -1,17 +1,16 @@
 <template>
   <PageWrapper contentBackground>
-    <template #footer >
+    <template #footer>
       <a-tabs v-model:activeKey="tableType" @change="changeTable">
         <!-- <a-tab-pane :key="0" tab="四维看看" :disabled="loading"/> -->
-        <a-tab-pane :key="1" tab="四维看见" :disabled="loading"/>
+        <a-tab-pane :key="1" tab="四维看见" :disabled="loading" />
         <!-- <a-tab-pane :key="2" tab="四维深时" :disabled="loading"/>
         <a-tab-pane :key="3" tab="四维双目Lite" :disabled="loading"/> 
         <a-tab-pane :key="4" tab="四维全景" :disabled="loading"/>  -->
         <a-tab-pane :key="2" tab="深时点云场景" :disabled="loading" />
         <a-tab-pane :key="5" tab="深时Mesh场景" :disabled="loading" />
         <a-tab-pane :key="6" tab="深光点云场景" :disabled="loading" />
-        <a-tab-pane :key="7" tab="深光Mesh场景" :disabled="loading" />
-      </a-tabs
+        <a-tab-pane :key="7" tab="深光Mesh场景" :disabled="loading" /> </a-tabs
     ></template>
     <div class="desc-wrap-BasicTable">
       <BasicTable @register="registerTable">
@@ -20,8 +19,13 @@
         </template>
 
         <template #href="{ record }">
-          <a v-if="(record.status == 1 || (record.status == -2 && record.payStatus == 1))" target="_blank" :href="record.webSite">{{record.sceneName}}</a>
-          <span v-else-if="record.sceneName">{{record.sceneName}}</span>
+          <a
+            v-if="record.status == 1 || (record.status == -2 && record.payStatus == 1)"
+            target="_blank"
+            :href="record.webSite"
+            >{{ record.sceneName }}</a
+          >
+          <span v-else-if="record.sceneName">{{ record.sceneName }}</span>
           <span v-else>-</span>
         </template>
         <template #action="{ record }">
@@ -30,31 +34,40 @@
             :actions="[
               {
                 label: '编辑',
-                disabled:!(record.status == 1 || record.status == -2),
-                ifShow:getTypeCheckPerm('scenes-edit') && tableType != 3,
+                disabled: !(record.status == 1 || record.status == -2),
+                ifShow: getTypeCheckPerm('scenes-edit') && tableType != 3 && record.isEdit,
                 onClick: handlegotoEdit.bind(null, record),
-              },{
+              },
+              {
                 label: '权限',
                 disabled: !record.isAuth,
-                ifShow:getTypeCheckPerm('scenes-powers'),
+                ifShow: getTypeCheckPerm('scenes-powers'),
                 onClick: handlePowers.bind(null, record),
-              },{
+              },
+              {
                 label: '迁移',
-                disabled:!(record.status == 1 || record.status == -2),
-                ifShow:getTypeCheckPerm('scenes-move') && tableType != 3,
+                disabled: !(record.status == 1 || record.status == -2),
+                ifShow:
+                  getTypeCheckPerm('scenes-move') && tableType != 3 && record.userName == userName,
                 onClick: handleMove.bind(null, record),
               },
               {
                 label: '下载',
-                ifShow:getTypeCheckPerm('scenes-download') && tableType != 3,
-                disabled:!(record.status == 1 || (record.status == -2 && record.payStatus == 1)),
+                ifShow:
+                  getTypeCheckPerm('scenes-download') &&
+                  tableType != 3 &&
+                  record.userName == userName,
+                disabled: !(record.status == 1 || (record.status == -2 && record.payStatus == 1)),
                 //icon: 'carbon:download',
                 onClick: handleDownload.bind(null, record),
               },
               {
                 label: '重算',
                 disabled: record.status == 0 || (record.status == -2 && record.payStatus != 1),
-                ifShow:getTypeCheckPerm('scenes-recalculate') && tableType != 3,
+                ifShow:
+                  getTypeCheckPerm('scenes-recalculate') &&
+                  tableType != 3 &&
+                  record.userName == userName,
                 popConfirm: {
                   title: '是否重算?',
                   confirm: handleReset.bind(null, record),
@@ -62,21 +75,26 @@
               },
               {
                 label: '复制',
-                disabled:!(record.status == 1 || (record.status == -2 && record.payStatus == 1)),
-                ifShow:getTypeCheckPerm('scenes-copy') && tableType != 3,
+                disabled: !(record.status == 1 || (record.status == -2 && record.payStatus == 1)),
+                ifShow:
+                  getTypeCheckPerm('scenes-copy') && tableType != 3 && record.userName == userName,
                 onClick: handleCopy.bind(null, record),
               },
               {
                 label: '生成 obj',
-                ifShow: getTypeCheckPerm('scenes-creatobj') && record.status == -2 && (tableType == 2 || tableType == 6),
+                ifShow:
+                  getTypeCheckPerm('scenes-creatobj') &&
+                  record.status == -2 &&
+                  (tableType == 2 || tableType == 6) &&
+                  record.userName == userName,
                 onClick: handleGenerate.bind(null, record),
               },
               {
                 label: '删除',
                 //icon: 'ic:outline-delete-outline',
                 color: 'error',
-                ifShow:getTypeCheckPerm('scenes-delete'),
-                disabled:record.status == 0,
+                ifShow: getTypeCheckPerm('scenes-delete') && record.userName == userName,
+                disabled: record.status == 0,
                 //onClick: handleDelete.bind(null, record),
                 popConfirm: {
                   title: '是否删除?',
@@ -104,7 +122,8 @@
   </PageWrapper>
 </template>
 <script lang="ts">
-  import { defineComponent, h, reactive, toRefs, ref } from 'vue';
+  import { defineComponent, h, computed, toRefs, ref } from 'vue';
+  import dayjs from 'dayjs';
   import {
     BasicTable,
     useTable,
@@ -137,6 +156,7 @@
   } from '/@/api/operate';
   import { message } from 'ant-design-vue';
   import { usePermissionStore } from '/@/store/modules/permission';
+  import { useUserStore } from '/@/store/modules/user';
   import { func } from 'vue-types';
   export default defineComponent({
     components: {
@@ -155,6 +175,8 @@
     setup() {
       const { t } = useI18n();
       const { createMessage, createConfirm } = useMessage();
+      const userStore = useUserStore();
+      const userName = computed(() => userStore.getUserInfo?.userName);
       const permissionStore = usePermissionStore();
       const { getCheckPerm } = permissionStore;
       const loading = ref(false);
@@ -193,11 +215,12 @@
           width: 180,
           customRender: ({ record }) => {
             return (
-              record.algorithmTime &&
-              h(Time, {
-                value: record.algorithmTime,
-                mode: 'datetime',
-              })||'-'
+              (record.algorithmTime &&
+                h(Time, {
+                  value: record.algorithmTime,
+                  mode: 'datetime',
+                })) ||
+              '-'
             );
           },
         },
@@ -211,11 +234,9 @@
           dataIndex: 'sceneSize',
           width: 80,
           customRender: ({ record }) => {
-            return (record.sceneSize && record.sceneSize != 0)?h(
-              'span',
-              { class: 'sceneSize' },
-              Math.ceil(record.sceneSize / 1024 / 1024) + 'M',
-            ):'-';
+            return record.sceneSize && record.sceneSize != 0
+              ? h('span', { class: 'sceneSize' }, Math.ceil(record.sceneSize / 1024 / 1024) + 'M')
+              : '-';
           },
         },
         {
@@ -240,7 +261,7 @@
           },
         },
         {
-          title: '绑定账号',
+          title: '人员编号',
           dataIndex: 'userName',
           width: 100,
         },
@@ -338,12 +359,12 @@
         useSearchForm: true,
         formConfig: searchForm,
         showTableSetting: true,
-        beforeFetch:(T)=>{
-          loading.value = true
-          return T
+        beforeFetch: (T) => {
+          loading.value = true;
+          return T;
         },
         afterFetch: (T) => {
-          loading.value = false
+          loading.value = false;
           return T;
         },
         rowKey: 'num',
@@ -364,13 +385,12 @@
           title: '复制场景',
           content: '复制场景,场景归属在原相机下。<br/>确定要复制场景吗?',
           onOk: async () => {
-            sceneCopy({ num: record.num })
-              .then(() => {
-                message.success({
-                  content: '复制成功',
-                });
-                reload();
-              })
+            sceneCopy({ num: record.num }).then(() => {
+              message.success({
+                content: '复制成功',
+              });
+              reload();
+            });
           },
         });
       }
@@ -380,14 +400,13 @@
         //   title: '删除',
         //   content: '确定要删除场景吗?',
         //   onOk: async () => {
-        sceneDelete({ num: record.num })
-          .then(() => {
-            message.success({
-              content: '删除成功',
-            });
+        sceneDelete({ num: record.num }).then(() => {
+          message.success({
+            content: '删除成功',
+          });
 
-            reload();
-          })
+          reload();
+        });
         //   },
         // });
       }
@@ -411,7 +430,7 @@
       const downloadOption = ref<Object>({});
       const canDownload = ref<boolean>(true);
       function handleDownload(record: Recordable) {
-        console.log('handleDownload', record,canDownload.value);
+        console.log('handleDownload', record, canDownload.value);
         canDownload.value = true;
         checkDownLoad({ num: record.num }).then((res) => {
           console.log(res);
@@ -428,10 +447,10 @@
                 }
                 timer.value = setInterval(() => {
                   downloadProcess({ num: record.num }).then((res) => {
-                    if(res.status == '1003'){
+                    if (res.status == '1003') {
                       createMessage.error('下载失败');
                       afterClose();
-                      return
+                      return;
                     }
                     if (res.percent >= 100) {
                       canDownload.value = false;
@@ -455,7 +474,7 @@
       async function handleGenerate(record: Recordable) {
         console.log('record', record);
         let data = await sceneDetail({ id: record.id });
-        console.log('data',data);
+        console.log('data', data);
         let { buildObjStatus } = data;
         let toastText =
           buildObjStatus == 2
@@ -486,23 +505,26 @@
       }
       function handleReset(record: Recordable) {
         console.log('handleReset', record);
-        rebuildScene({ num: record.num })
-          .then(() => {
-            message.success({
-              content: '操作成功',
-            });
-            reload();
-          })
+        rebuildScene({ num: record.num }).then(() => {
+          message.success({
+            content: '操作成功',
+          });
+          reload();
+        });
       }
-      function getTypeCheckPerm(val){
-        let myType = tableType.value
-        return getCheckPerm(val) || getCheckPerm(`${val}-${myType}`)
+      function getTypeCheckPerm(val) {
+        let myType = tableType.value;
+        return getCheckPerm(val) || getCheckPerm(`${val}-${myType}`);
       }
-      function handlegotoEdit(record: Recordable){
-        let url = record.webSite.replace("smg", "epg");
-        window.open(url);
+      function handlegotoEdit(record: Recordable) {
+        let url = record.webSite.replace('smg', 'epg');
+        if (!record.editAuthTime || (record.editAuthTime && dayjs() < dayjs(record.editAuthTime))) {
+          window.open(url);
+        } else {
+          createMessage.error('编辑权限已过期');
+        }
       }
-      function handlePowers(record: Recordable){
+      function handlePowers(record: Recordable) {
         openPowersModal(true, {
           ...record,
         });
@@ -531,6 +553,7 @@
         getTypeCheckPerm,
         handlegotoEdit,
         handlePowers,
+        userName,
       };
     },
   });

+ 2 - 2
src/views/productOperation/modal/PowersModal.vue

@@ -52,7 +52,7 @@
   import { useI18n } from '/@/hooks/web/useI18n';
   import detailModal from './detailModal.vue';
   import { usePermissionStore } from '/@/store/modules/permission';
-  import { getAuthList, addAuth, delAuth } from '/@/api/operate';
+  import { getAuthList, setAuthType, delAuth } from '/@/api/operate';
   import { BasicTable, useTable, TableAction, BasicColumn } from '/@/components/Table';
   const { t } = useI18n();
   export default defineComponent({
@@ -195,7 +195,7 @@
         try {
           const params = await validate();
           console.log('res', params);
-          const res = await addAuth({num:numRef.value,...params});
+          const res = await setAuthType({num:numRef.value,...params});
           console.log('res', res);
           closeModal();
           resetFields();

+ 22 - 9
src/views/productOperation/modal/detailModal.vue

@@ -144,7 +144,7 @@
                   disabledDate: (current) => {
                     return current && (current < dayjs().endOf('day') || current > dayjs(value));
                   },
-                }
+                },
               });
             },
           },
@@ -204,7 +204,7 @@
         },
         {
           field: 'isEmpower',
-          component: 'CheckboxGroup',
+          component: 'RadioGroup',
           label: '授权他人权限',
           ifShow: false,
           colProps: {
@@ -235,8 +235,9 @@
         let setData = {
           ...checkAuthOther,
           ...data,
-          isEmpower: [data.canAuthLook ? 0 : '', data.canEditLook ? 1 : ''],
+          isEmpower: data.canEditLook ? 1 : 0,
         };
+        isEdit.value = setData.editAuth == 0 ? true : false;
         if (data) {
           title.value = data.id ? '编辑授权' : '新增授权';
           modelRef.value = data.id ? true : false;
@@ -245,7 +246,13 @@
           title.value = '新增客户';
         }
         updateSchema([
-          { field: 'isEmpower', ifShow: data.isAuthor == 1 },
+          {
+            field: 'isEmpower',
+            ifShow: setData.isAuthor == 1,
+            componentProps: {
+              options: setOption(),
+            },
+          },
           // {
           //   field: 'isAuthor',
           //   componentProps: { disabled: !setData.isAuthor },
@@ -256,7 +263,7 @@
           },
           {
             field: 'lookAuth',
-            componentProps: { options: getOptionList('lookAuth', setData.editAuth) },
+            componentProps: { options: getOptionList('lookAuth', setData.lookAuth) },
           },
           {
             field: 'editEndTime',
@@ -264,7 +271,10 @@
             componentProps: {
               disabledDate: (current) => {
                 if (checkAuthOther.editEndTime) {
-                  return current && (current < dayjs().endOf('day') || current > dayjs(checkAuthOther.editEndTime));
+                  return (
+                    current &&
+                    (current < dayjs().endOf('day') || current > dayjs(checkAuthOther.editEndTime))
+                  );
                 } else {
                   return current && current < dayjs().endOf('day');
                 }
@@ -277,7 +287,10 @@
             componentProps: {
               disabledDate: (current) => {
                 if (checkAuthOther.lookEndTime) {
-                  return current && (current < dayjs().endOf('day') || current > dayjs(checkAuthOther.lookEndTime));
+                  return (
+                    current &&
+                    (current < dayjs().endOf('day') || current > dayjs(checkAuthOther.lookEndTime))
+                  );
                 } else {
                   return current && current < dayjs().endOf('day');
                 }
@@ -314,8 +327,8 @@
           console.log('params', params);
           await addAuth({
             ...params,
-            canAuthLook: params.isEmpower && params.isEmpower.every((item) => item == 0) ? 1 : 0,
-            canEditLook: params.isEmpower && params.isEmpower.every((item) => item == 1) ? 1 : 0,
+            canAuthLook: params.isEmpower == 0 ? 1 : 0,
+            canEditLook: params.isEmpower == 1 ? 1 : 0,
           });
           closeModal();
           resetFields();