Prechádzať zdrojové kódy

Merge branch 'master' of ssh://172.16.23.188:9022/tian-group/skyeye-admin-fe

louhangfei 2 rokov pred
rodič
commit
f36f6f906e

+ 2 - 2
package.json

@@ -8,7 +8,7 @@
     "serve": "pnpm run dev",
     "dev": "vite",
     "createConfig": "esno ./build/script/postBuild.ts",
-    "build": "cross-env NODE_ENV=production vite build && npm run publish ",
+    "build": "cross-env NODE_ENV=production vite build",
     "build:test": "cross-env vite build --mode test && esno ./build/script/postBuild.ts",
     "build:no-cache": "pnpm clean:cache && pnpm run build",
     "report": "cross-env REPORT=true pnpm run build",
@@ -163,4 +163,4 @@
       ]
     }
   }
-}
+}

+ 2 - 2
src/layout/components/Header/QRcodePopover.vue

@@ -26,11 +26,11 @@
       </div>
       <!-- <img src="@/assets/images/QRcodeExample.png" style="width: 140px" /> -->
       <QrCode :value="qrCodeUrl" :width="140" />
-      <el-button
+      <!-- <el-button
         style="width: 102px; background-color: rgb(24, 144, 255); border: none"
         type="primary"
         >保存到相册
-      </el-button>
+      </el-button> -->
     </div>
   </el-popover>
 </template>

+ 7 - 2
src/layout/components/Header/index.vue

@@ -266,10 +266,15 @@
     return userStore.getUserInfo.avatar;
   });
 
-  const getPLUrl = () => urlJoin(location.origin, '/skyeye-world/');
+  const getPLUrl = () => {
+    return userStore.getUserInfo.username === 'gov'
+      ? urlJoin(location.origin, '/skyeye-world/')
+      : urlJoin(location.origin, '/skyeyev3pc/');
+  };
 
   const getUsername = computed(() => {
-    return userStore.getUserInfo.username;
+    // return userStore.getUserInfo.username;
+    return userStore.getUserInfo.nickname;
   });
 
   const getTenantName = computed(() => {

+ 27 - 8
src/views/cameras/overview/CamerasOverview.vue

@@ -24,7 +24,7 @@
       >
         <template #tableTitle>
           <el-button type="primary" :icon="Plus" @click="showAddPopover = true">添加</el-button>
-          <el-badge :value="unAddlength" :hidden="unAddlength < 1" class="item">
+          <el-badge :value="totalRow" :hidden="totalRow < 1" class="item">
             <el-button color="#1890FF" @click="showSharedPopover = true" plain>共享相机</el-button>
           </el-badge>
 
@@ -41,7 +41,11 @@
     <AddCamera class="add-popover" v-model="showAddPopover" />
     <EditCamera class="add-popover" v-model="showEditPopover" :edit-data="editCameraData" />
     <ShareCamera class="add-popover" v-model="addSharedPopover" :share-data="shareCameraData" />
-    <EditSharedCamera class="add-popover" v-model="showSharedPopover" />
+    <EditSharedCamera
+      class="add-popover"
+      v-model="showSharedPopover"
+      @update-unadd="updateUnaddAmount"
+    />
   </div>
 </template>
 
@@ -70,15 +74,23 @@
   import useCameraShare from './stores/useCameraShare';
 
   const useShare = useCameraShare();
-  const { cameraShareList, queryName, queryAccount, isAddState, queryCameraId, conditionSearch } =
-    useShare;
+  const {
+    cameraShareList,
+    totalRow,
+    queryName,
+    queryAccount,
+    queryToTenantId,
+    isAddState,
+    queryCameraId,
+    conditionSearch,
+  } = useShare;
 
   const unAddlength = ref<number>();
   onMounted(() => {
-    // isAddState.value = false;
-    // console.log('isAddState', isAddState.value);
-    // queryToTenantId.value = -10;
-    // conditionSearch();
+    isAddState.value = false;
+    console.log('isAddState', isAddState.value);
+    queryToTenantId.value = -10;
+    conditionSearch();
   });
 
   // const CameraShared = useCameraShared();
@@ -98,6 +110,13 @@
   const editCameraData = ref<CameraIPItem | null>();
   const shareCameraData = ref<CameraShowItem | null>();
 
+  const updateUnaddAmount = () => {
+    isAddState.value = false;
+    console.log('isAddState', isAddState.value);
+    queryToTenantId.value = -10;
+    conditionSearch();
+  };
+
   //操作列
   const actionColumn: BasicColumn = reactive({
     width: 200,

+ 2 - 16
src/views/cameras/overview/components/CameraEditshared.vue

@@ -3,22 +3,16 @@
     <template #header>
       <div class="flex justify-between items-center pop-head">
         <span class="pop-head-name">编辑相机</span>
-        <el-icon :size="16" class="mr-3" @click="updateValue(false)"><Close /></el-icon>
+        <el-icon :size="16" class="mr-3" @click="updateValue"><Close /></el-icon>
       </div>
     </template>
     <div class="pop-content flex justify-center items-center">
-      <EditSharedCamera
-        @cancel-execute="updateValue(false)"
-        @confirm-execute="onAddCamera"
-        :form-data="props.editData"
-      />
+      <EditSharedCamera @close-edit="updateValue" :form-data="props.editData" />
     </div>
   </el-card>
 </template>
 
 <script setup lang="ts">
-  import { ref } from 'vue';
-  import { cameraAddType } from '../constant';
   import { Close } from '@element-plus/icons-vue';
   import EditSharedCamera from './EditSharedCamera.vue';
   import { CameraShareType } from '@/api/camera/camera-share';
@@ -27,17 +21,9 @@
 
   const emits = defineEmits(['update:modelValue']);
 
-  const addType = ref(cameraAddType[0].value);
-
   const updateValue = () => {
-    addType.value = cameraAddType[0].value;
     emits('update:modelValue', false as boolean);
   };
-
-  // const onAddCamera = (data) => {
-  //   updateValue(false);
-  //   emits('updateData', data);
-  // };
 </script>
 
 <style scoped lang="scss">

+ 6 - 2
src/views/cameras/overview/components/CameraSharedEdit.vue

@@ -17,7 +17,7 @@
         <el-icon :size="16" class="mr-3" @click="updateValue(false)"><Close /></el-icon>
       </div>
     </template>
-    <div><SharedTable :addCameraType="addType" /></div>
+    <div><SharedTable :addCameraType="addType" @update="updateUnAdd" /></div>
   </el-card>
 </template>
 
@@ -29,7 +29,7 @@
 
   const props = defineProps<{ modelValue: boolean }>();
 
-  const emits = defineEmits(['update:modelValue']);
+  const emits = defineEmits(['update:modelValue', 'updateUnadd']);
 
   const addType = ref(sharedCaremaType[0].value);
 
@@ -37,6 +37,10 @@
     addType.value = sharedCaremaType[0].value;
     emits('update:modelValue', value);
   };
+
+  const updateUnAdd = () => {
+    emits('updateUnadd');
+  };
 </script>
 
 <style scoped lang="scss">

+ 6 - 3
src/views/cameras/overview/components/EditSharedCamera.vue

@@ -61,7 +61,7 @@
 
   const props = defineProps<{ formData?: CameraShareType | null }>();
 
-  const emits = defineEmits(['cancel-execute', 'confirm-execute']);
+  const emits = defineEmits(['closeEdit']);
 
   const cameraEditData = ref<CameraShareType>({} as CameraShareType);
 
@@ -76,13 +76,16 @@
   });
 
   const handleTreeSelect = (code: string) => {
+    console.log('code', code);
+    console.log('flattendWorkspaces', flattendWorkspaces.value);
+
     cameraEditData.value.cameraWorkspace = flattendWorkspaces.value.find(
       (item) => item.code === code,
     ).id;
   };
 
   const handleCancel = () => {
-    emits('cancel-execute');
+    emits('closeEdit');
   };
 
   const handleConfirm = () => {
@@ -93,7 +96,7 @@
       cameraCode: cameraEditData.value.cameraCode,
     };
     handleEdit(updateData);
-    emits('confirm-execute');
+    emits('closeEdit');
   };
 
   onBeforeMount(() => {

+ 38 - 40
src/views/cameras/overview/components/ShareCameraDetail.vue

@@ -39,7 +39,8 @@
         >
           <el-input
             v-model="shareData.tenantName"
-            placeholder="请输入企业账号"
+            disabled
+            placeholder=""
             readonly
             style="width: 200px; height: 32px"
           />
@@ -57,7 +58,6 @@
               placeholder="请输入"
               :readonly="shareData.time === 'Indefinite'"
               class="day-input"
-              @change="changeTimeDay"
             />
             <span>/天</span></div
           >
@@ -94,24 +94,15 @@
   import { h, reactive, ref, onMounted } from 'vue';
   import { BasicColumn, BasicTable, TableActionIcons } from '@/components/Table';
   import { CameraShareItem, CameraShowItem } from '../type';
-  import editIcon from '@/assets/images/table/table-edit.png';
   import deleteIcon from '@/assets/images/table/table-delete.png';
-  import { rules, authorityTypeSelect, timeTypeSelect, columns, getColumns } from '../constant';
+  import { rules, authorityTypeSelect, timeTypeSelect, getColumns } from '../constant';
   import useCameraShare from '../stores/useCameraShare';
   import { getVerify } from '@/api/camera/camera-share';
+  import dayjs from 'dayjs';
 
   const useShare = useCameraShare();
-  const {
-    cameraShareList,
-    queryName,
-    queryAccount,
-    isAddState,
-    queryCameraId,
-    conditionSearch,
-    handleDel,
-    handleAdd,
-    handleEdit,
-  } = useShare;
+  const { cameraShareList, queryCameraId, conditionSearch, handleDel, handleAdd, handleEdit } =
+    useShare;
 
   const props = defineProps<{ formData?: CameraShowItem | null }>();
 
@@ -131,10 +122,11 @@
     time: 'Indefinite',
     days: undefined,
     remark: '',
-    shareList: [],
+    // shareList: [],
+    endTime: '',
   });
 
-  // 将columns改为getcolumns(handleEditState);
+  // 将修改列表中的
   const handleEditState = (row) => {
     const editData = {
       id: row.id as number,
@@ -146,10 +138,7 @@
   // const getcolumns = getColumns(handleEditState);
 
   const handleDelete = (row) => {
-    const indexToRemove = shareData.value.shareList.findIndex((item) => item.name === row.name);
-    shareData.value.shareList.splice(indexToRemove, 1);
-    //接口
-    // handleDel(row.id);
+    handleDel(row.id);
   };
 
   //操作列
@@ -190,39 +179,48 @@
   };
 
   const changeTime = () => {
-    shareData.value.days = undefined;
+    if (shareData.value.time === 'Indefinite') {
+      shareData.value.days = undefined;
+    }
   };
 
-  const changeTimeDay = () => {};
+  const resetData = () => {
+    shareData.value.tenantCode = undefined;
+    shareData.value.toTenantId = undefined;
+    shareData.value.tenantName = '';
+    shareData.value.permission = '0';
+    shareData.value.time = 'Indefinite';
+    shareData.value.days = undefined;
+    shareData.value.remark = '';
+    shareData.value.endTime = '';
+  };
 
   const handleConfirm = () => {
-    //接口
-    // console.log('shareData', shareData.value);
-    // const currentDate = new Date();
-    // console.log('currentDate', currentDate);
-    console.log('props.formData', props.formData);
-    console.log('shareData.value', shareData.value);
+    if (shareData.value.time === 'Indefinite') {
+      shareData.value.endTime = dayjs().add(-1, 'day').format('YYYY-MM-DD HH:mm:ss');
+    } else {
+      shareData.value.endTime = dayjs()
+        .add(shareData.value.days!, 'day')
+        .format('YYYY-MM-DD HH:mm:ss');
+    }
+
+    console.log('endd', shareData.value.endTime);
 
+    //接口
+    console.log('shareData', shareData.value);
+    const currentDate = new Date();
+    console.log('currentDate', currentDate);
     const addShareItem = {
       cameraId: props.formData?.id,
       toTenantId: shareData.value.toTenantId,
-      // tenantCode: shareData.value.tenantCode,
       permission: shareData.value.permission,
-      // tenantName: shareData.value.tenantName,
-      endTime: '2023-03-12 11:45:44',
+      endTime: shareData.value.endTime,
       isAdd: false,
       remark: shareData.value.remark,
-      // ...props.formData,
     };
     queryCameraId.value = props.formData?.id;
     handleAdd(addShareItem); //数据未调整
-
-    // const addShareItem = {
-    //   name: shareData.value.name,
-    //   account: shareData.value.account!,
-    //   networkingState: props.formData?.networkingState,
-    // };
-    // shareData.value.shareList.push(addShareItem);
+    resetData();
   };
 </script>
 

+ 7 - 3
src/views/cameras/overview/components/SharedTable.vue

@@ -71,14 +71,15 @@
     isAddState,
     queryToTenantId,
     conditionSearch,
-    handleDel,
     handleEdit,
+    handleDel,
   } = useShare;
 
   const sceneInfos = useSceneInfos();
   const { flattendWorkspaces, getScenesTree } = sceneInfos;
 
   const props = defineProps<{ addCameraType: string }>();
+  const emits = defineEmits(['update']);
   onMounted(() => {
     isAddState.value = props.addCameraType === 'incomplete' ? false : true;
     console.log('isAddState', isAddState.value);
@@ -119,12 +120,14 @@
       id: row.id,
       isAdd: row.isAdd ? false : true,
     };
+    emits('update');
     handleEdit(changeAddData);
   };
 
   const handleDelete = (row) => {
-    console.log('row', row);
-    handleDel(row.cameraId);
+    // console.log('row', row);
+    emits('update');
+    handleDel(row.id);
   };
 
   //操作列
@@ -172,6 +175,7 @@
   const resetSearch = () => {
     queryName.value = '';
     queryAccount.value = '';
+    queryCameraItems();
   };
 
   watch(

+ 2 - 2
src/views/cameras/overview/constant.ts

@@ -496,11 +496,11 @@ export const cameraSharedForm: CameraAddFormItem[] = [
   },
   {
     label: '设备ID号:',
-    prop: 'cameraCode',
+    prop: 'code',
     placeholder: '自定义ID,不能重复',
     type: 'input',
     required: true,
-    disabled: false,
+    disabled: true,
     rule: [{ required: true, message: '请输入设备ID号', trigger: 'blur' }],
   },
   {

+ 2 - 2
src/views/cameras/overview/sharedColumns.ts

@@ -132,7 +132,7 @@ export const getColumns = (flattendWorkspaces): BasicColumn[] => {
     },
     {
       label: '设备ID',
-      prop: 'cameraCode',
+      prop: 'code',
       minWidth: 150,
     },
     {
@@ -154,7 +154,7 @@ export const getColumns = (flattendWorkspaces): BasicColumn[] => {
             default: () => {
               return flattendWorkspaces?.find(
                 (item) => item.id === Number(record.row.cameraWorkspace),
-              )?.code;
+              )?.name;
 
               // return protocalTypeSelect.find((item) => item.value === record.row.cameraType)?.label;
             },

+ 6 - 13
src/views/cameras/overview/stores/useCameraShare.ts

@@ -1,8 +1,5 @@
 //未使用
-import { computed, ref } from 'vue';
-import { defineStore } from 'pinia';
-import { CameraSharedItem } from '../constant';
-import { ElMessage } from 'element-plus';
+import { ref } from 'vue';
 import {
   CameraShareType,
   CameraShareQueryType,
@@ -19,23 +16,22 @@ export const useCameraShared = () => {
   const isAddState = ref<boolean | number>(-1);
   const queryCameraId = ref<number | undefined>(-1);
   const queryToTenantId = ref<number>(-1);
-  // const total = ref(0);
+  const totalRow = ref(0);
   const page = ref(1);
   const size = ref(100);
-  // const size = Infinity;
 
   // 条件查询事件
   const conditionSearch = () => {
     const param = {
       pageNumber: page.value,
-      pageSize: size.value,
+      pageSize: size.value === 0 ? 1 : size.value,
       cameraId: -1,
       isAdd: -1,
       toTenantId: -1,
     };
     //先获取总数作为
     getShareCameraList(param).then((res) => {
-      size.value = res.totalRow;
+      size.value = res.totalRow === 0 ? 1 : res.totalRow;
       const params: CameraShareQueryType = {
         pageNumber: page.value,
         pageSize: size.value,
@@ -49,8 +45,6 @@ export const useCameraShared = () => {
         params.tenantCode = queryAccount.value;
       }
       if (queryCameraId.value) {
-        console.log('aa');
-
         params.cameraId = queryCameraId.value;
       }
       if (queryToTenantId.value) {
@@ -58,9 +52,7 @@ export const useCameraShared = () => {
       }
       getShareCameraList(params).then((res) => {
         cameraShareList.value = res.records;
-        console.log('res', cameraShareList.value);
-
-        // total.value = res.totalRow;
+        totalRow.value = res.totalRow;
       });
     });
   };
@@ -85,6 +77,7 @@ export const useCameraShared = () => {
 
   return {
     cameraShareList,
+    totalRow,
     queryName,
     queryAccount,
     isAddState,

+ 8 - 6
src/views/cameras/overview/type.ts

@@ -57,11 +57,11 @@ export interface CameraRangeItem {
   password: string;
 }
 
-interface CompanyShareItem {
-  name: string; //企业名字
-  account: number; //企业账号
-  networkingState?: number; //摄像机状态
-}
+// interface CompanyShareItem {
+//   name: string; //企业名字
+//   account: number; //企业账号
+//   networkingState?: number; //摄像机状态
+// }
 
 export interface CameraShareItem {
   /** 企业账号 */
@@ -78,5 +78,7 @@ export interface CameraShareItem {
   /** 备注 */
   remark?: string;
   /** 密码 */
-  shareList: CompanyShareItem[];
+  // shareList: CompanyShareItem[];
+  //分享的结束时间
+  endTime: string;
 }

+ 9 - 0
src/views/system-config/scene-manage/CompanyDrawer.vue

@@ -74,6 +74,9 @@
             ></div>
           </div>
         </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="ruleForm.remark" style="width: 200px" />
+        </el-form-item>
         <el-form-item label="状态">
           <el-switch
             v-model="ruleForm.addEnable"
@@ -125,6 +128,7 @@
       seniorScene?: string;
       addEnable?: ENABLED;
       selectItems?: SelectItemType[];
+      remark: string;
     };
   }>();
 
@@ -153,6 +157,7 @@
     templateWorkshop?: number; //车间模板
     selectItems?: SelectItemType[];
     addEnable?: ENABLED;
+    remark?: string; //备注,可用于添加经纬度,非必要
   }
 
   const ruleForm = reactive<RuleForm>({
@@ -166,6 +171,7 @@
     templateWorkshop: undefined,
     selectItems: [{ tag: '', template: '' }],
     addEnable: ENABLED.TRUE,
+    remark: '',
   });
   const rules = reactive<FormRules>({
     name: [
@@ -196,6 +202,7 @@
       ruleForm.seniorScene = data.seniorScene!;
       ruleForm.addEnable = data.addEnable;
       ruleForm.selectItems = data.selectItems;
+      ruleForm.remark = data.remark;
     },
     { immediate: true },
   );
@@ -261,6 +268,7 @@
           isDeleted: 0,
           parentId: 0,
           serial: 0,
+          remark: ruleForm.remark,
         };
         //提交数据并重置关闭el-draw
         addCompany(newComData)
@@ -327,6 +335,7 @@
         name: ruleForm.name,
         code: ruleForm.code,
         status: Number(ruleForm.addEnable),
+        remark: ruleForm.remark,
       };
       // 编辑上传
       editCompany(editNewCom)

+ 1 - 0
src/views/system-config/scene-manage/SceneManage.vue

@@ -317,6 +317,7 @@
         seniorScene: '顶级场景',
         addEnable: editedItem.value!.status,
         selectItems: selectItems.value,
+        remark: editedItem.value?.remark,
       };
     } else if (level.value === DATA_LEVEL.workshop && 'companyId' in editedItem.value!) {
       showDrawer.value = DrawerType.workshop;

+ 2 - 1
src/views/system/tenant/tenant.vue

@@ -123,7 +123,8 @@
   }
 
   function reloadTable() {
-    tableRef.value.reload();
+    // tableRef.value.reload();
+    loadDataTable();
   }
 
   function handleEdit(record: Recordable) {

+ 1 - 0
src/views/system/user/component/UserQuery.vue

@@ -15,6 +15,7 @@
           v-model="queryTypeContent"
           clearable
           placeholder="请输入查找内容"
+          :disabled="!queryType"
         />
       </div>
       <div>

+ 7 - 7
src/views/system/user/useTenantList.ts

@@ -1,7 +1,7 @@
-import { tenantList } from '@/api/tenant';
-import { useRequest } from 'vue-hooks-plus';
-
-export function useTenantList() {
-  const { data, loading } = useRequest(tenantList);
-  return { data, loading };
-}
+import { tenantList } from '@/api/tenant';
+import { useRequest } from 'vue-hooks-plus';
+
+export function useTenantList() {
+  const { data, loading } = useRequest(tenantList);
+  return { data, loading };
+}