瀏覽代碼

feat(corpration): corpreation

gemercheung 3 年之前
父節點
當前提交
29f9e841eb

+ 28 - 2
src/api/corporation/list.ts

@@ -1,5 +1,11 @@
 import { defHttp } from '/@/utils/http/axios';
-import { PageParams, CorporationListGetResultModel, updateCompanyParam } from './model';
+import {
+  PageParams,
+  CorporationListGetResultModel,
+  UpdateCompanyParam,
+  DeviceListItem,
+  DeviceGetResultModel,
+} from './model';
 
 import { Result, UploadFileParams } from '/#/axios';
 
@@ -9,6 +15,7 @@ enum Api {
   selectCompanyByType = '/zfb-api/zfb/company/selectCompanyByType',
   uploadLogo = '/zfb-api/zfb/company/uploadLogo',
   updateCompany = '/zfb-api/zfb/company/updateCompany',
+  selectCompanyDevice = '/zfb-api/zfb/company/selectCompanyDevice',
 }
 
 /**
@@ -45,7 +52,7 @@ export const ListVerifyApi = (params: PageParams) =>
     },
   });
 
-export const updateCompnayApi = (params: updateCompanyParam) =>
+export const selectCompanyDevice = (params: UpdateCompanyParam) =>
   defHttp.post<Result>({
     url: Api.updateCompany,
     params,
@@ -55,6 +62,25 @@ export const updateCompnayApi = (params: updateCompanyParam) =>
     },
   });
 
+export const updateCompnayApi = (params: UpdateCompanyParam) =>
+  defHttp.post<Result>({
+    url: Api.updateCompany,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
+export const companyDeviceApi = (params: DeviceListItem) =>
+  defHttp.post<DeviceGetResultModel>({
+    url: Api.selectCompanyDevice,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 export function uploadLogoApi(
   params: UploadFileParams,
   onUploadProgress: (progressEvent: ProgressEvent) => void,

+ 8 - 1
src/api/corporation/model.ts

@@ -3,7 +3,7 @@ import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel';
  * @description: Request list interface parameters
  */
 export type PageParams = BasicPageParams;
-export interface updateCompanyParam {
+export interface UpdateCompanyParam {
   id: number;
   sceneLogo?: string;
   floorLogo?: string;
@@ -99,7 +99,14 @@ export interface ListItem {
   userName: string;
 }
 
+export interface DeviceListItem {
+  activeTime: number;
+  childName: string;
+  id: number;
+}
+
 /**
  * @description: Request list return value
  */
 export type CorporationListGetResultModel = BasicFetchResult<ListItem>;
+export type DeviceGetResultModel = BasicFetchResult<DeviceListItem>;

+ 2 - 1
src/locales/lang/zh-CN/routes/devices.ts

@@ -1,7 +1,8 @@
 export default {
   deviceList: '设备列表',
   device: '设备',
-  addDevice: '设备',
+  addDevice: '新增设备',
+  browserDevice: '查看设备',
   address: '物理地址',
   balance: '初始点数',
   cameraType: '相机类型',

+ 127 - 0
src/views/corporation/cameraModal.vue

@@ -0,0 +1,127 @@
+<template>
+  <BasicModal
+    v-bind="$attrs"
+    @register="register"
+    :title="t('routes.devices.browserDevice')"
+    @ok="submitModal"
+    @visible-change="handleVisibleChange"
+  >
+    <div class="pt-3px pr-3px">
+      <BasicForm @register="registerForm">
+        <template #userName="{ model, field }">
+          {{ model[field] }}
+        </template>
+        <template #name="{ model, field }">
+          {{ model[field] }}
+        </template>
+      </BasicForm>
+    </div>
+  </BasicModal>
+</template>
+<script lang="ts">
+  import { defineComponent, ref } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  // import { useMessage } from '/@/hooks/web/useMessage';
+  // import { AddDevice, checkDevice } from '/@/api/corporation/modal';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['register'],
+    setup() {
+      // const modelRef = ref({});
+      const num = ref(0);
+      const { t } = useI18n();
+      // const { createMessage } = useMessage();
+      // const { success, error } = createMessage;
+
+      const [register] = useModalInner((data) => {
+        data && onDataReceive(data);
+      });
+
+      // const handlevalidator = async (_, value) => {
+      //   console.log('handlevalidator', value);
+      //   if (!value) {
+      //     return Promise.resolve();
+      //   }
+      //   try {
+      //     let res = await checkDevice({
+      //       childName: value,
+      //     });
+      //     if (res.message) {
+      //       return Promise.reject(res.message);
+      //     } else {
+      //       return Promise.resolve();
+      //     }
+      //   } catch (err) {
+      //     return Promise.reject(err);
+      //   }
+      // };
+      const schemas: FormSchema[] = [
+        {
+          field: 'userName',
+          label: t('routes.corporation.enterpriseName'),
+          slot: 'userName',
+          component: 'Input',
+        },
+        {
+          field: 'name',
+          label: t('routes.corporation.enterpriseId'),
+          slot: 'name',
+          component: 'Input',
+        },
+      ];
+      // let schemasList = []
+      const [
+        registerForm,
+        {
+          setFieldsValue,
+          resetFields,
+          // getFieldsValue,
+          // validateFields,
+          // appendSchemaByField,
+          // removeSchemaByFiled,
+        },
+      ] = useForm({
+        labelWidth: 120,
+        schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+
+      function onDataReceive(data) {
+        // 方式1;
+        resetFields();
+        setFieldsValue({
+          ...data.record,
+        });
+        console.log('data', data);
+        // // 方式2
+        // modelRef.value = { ...data.record };
+      }
+
+      async function submitModal() {}
+
+      function handleVisibleChange() {
+        // v && props.userData && nextTick(() => onDataReceive(props.userData));
+      }
+      return {
+        register,
+        submitModal,
+        schemas,
+        registerForm,
+        // numOnChange,
+        // modelRef,
+        handleVisibleChange,
+        num,
+        // errorMsg: error,
+        t,
+      };
+    },
+  });
+</script>

+ 23 - 4
src/views/corporation/index.vue

@@ -50,6 +50,19 @@
         <Time :value="record.expirationTime" mode="datetime" />
       </template>
 
+      <template #cameraNum="{ record }">
+        <Tag
+          style="cursor: pointer"
+          @click="
+            () => {
+              openCameraModal(true, record);
+            }
+          "
+          color="green"
+          >{{ record.cameraNum }}</Tag
+        >
+      </template>
+
       <template #action="{ record }">
         <TableAction
           :actions="[
@@ -76,6 +89,7 @@
     <chargeModal @register="registerChargeModal" />
     <deviceModal @register="registerDeviceModal" />
     <SubaccountModal @reload="tablereload" @register="registerSubaccountModal" />
+    <cameraModal @register="registerCameraModal" />
   </div>
 </template>
 <script lang="ts">
@@ -93,7 +107,9 @@
   import chargeModal from './chargeModal.vue';
   import deviceModal from './deviceModal.vue';
   import SubaccountModal from './SubaccountModal.vue';
+  import cameraModal from './cameraModal.vue';
   import { Time } from '/@/components/Time';
+  import { Tag } from 'ant-design-vue';
   import type { Result } from '/#/axios';
 
   export default defineComponent({
@@ -104,13 +120,16 @@
       chargeModal,
       deviceModal,
       SubaccountModal,
+      cameraModal,
       Time,
       BasicUpload,
+      Tag,
     },
     setup() {
       const [registerDeviceModal, { openModal: openDeviceModal }] = useModal();
       const [registerChargeModal, { openModal: openChargeModal }] = useModal();
       const [registerSubaccountModal, { openModal: openSubaccountModal }] = useModal();
+      const [registerCameraModal, { openModal: openCameraModal }] = useModal();
       const { t } = useI18n();
       const columns: BasicColumn[] = [
         // {
@@ -151,6 +170,7 @@
         {
           title: t('routes.corporation.cameraNum'),
           dataIndex: 'cameraNum',
+          slots: { customRender: 'cameraNum' },
           width: 80,
         },
         {
@@ -257,17 +277,13 @@
           sceneLogo: data.message,
         });
         nextTick(reload);
-        // updateCompnayApi
       }
       async function updateFloorLogo(record: Recordable, data: Result) {
-        console.log('src', data.message);
-        console.log('record', record);
         await updateCompnayApi({
           id: record.id,
           floorLogo: data.message,
         });
         nextTick(reload);
-        // updateCompnayApi
       }
 
       return {
@@ -282,6 +298,9 @@
         handleMusicUpload,
         updateSceneLogo,
         updateFloorLogo,
+
+        registerCameraModal,
+        openCameraModal,
       };
     },
   });